{"version":3,"file":"static/js/main.329f0ab8.js","mappings":"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WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY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CFC,MACE,o1BACFrD,KAAM,owBACNsD,KAAM,q1BACNC,IAAK,syFACLC,UACE,0VACF5yC,SACE,0QACF6yC,QACE,05BACFC,SACE,k6CACFC,QACE,guBACFC,SACE,ofACFr6C,KAAM,2IACNs6C,KAAM,yqBACNC,KAAM,kSACN,eACE,ypBACFC,MACE,unBACFruE,OACE,gQACF,cACE,o+BACFyzB,OACE,2gBACF66C,MACE,4dACF,aACE,kNACFC,OACE,4gBACFC,aACE,ujCACFC,IAAK,ukBACLC,OACE,qZACFC,MACE,kjBACF7uE,MACE,oeACF8uE,SACE,03BACFC,SACE,2+BACFC,QACE,2lCACFC,OACE,+WACFC,KAAM,6OACNC,MACE,kQACF,eACE,weACFC,KAAM,2eACN,YACE,ybACFC,KAAM,4fACNC,MACE,0OACFC,MACE,+XACFx0C,QAAS,2IACTy0C,OAAQ,+MAiBV,GAdc/1G,IACZ,MAAMkR,EAAOlR,EAAMkR,KAAOlR,EAAMkR,KAAO,GACvC,OACE6iG,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAGh2G,EAAM4yD,WACpBnqC,MAAOvX,EACPwX,OAAQxX,EACR+kG,QAAQ,YAAWnlF,UAEnBijF,EAAAA,GAAAA,KAAA,QAAMx8H,EAAGy8H,GAAMh0G,EAAMhuB,SACjB,ECjEV,GAtCiBikF,IAAoC,IAAnC,UAAErD,EAAS,KAAEwO,EAAI,SAAE/xC,GAAU4mC,EAC7C,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAOvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAiB,CACxC,CAACA,IAAgBwf,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAar0C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CACjEswC,EAAKh+C,OACN2wF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzBswC,EAAKk1C,SAASnwH,KAAI,CAAC1O,EAAG3B,KACrBsgI,EAAAA,GAAAA,MAAC5G,GAAO,CACN58C,UAAW8jC,GACX6f,gBAAiB7f,GACjB5+B,GAAIrgF,EAAEkvD,IAEN0b,QAASA,KAtBnB8zD,GAAW,QACX9mF,GAAS,IAqB8ByB,SAAA,EAE7BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,OACxBz5B,EAAE2rC,QAJEttC,WASO,ECxC1B,GAA2B,2BAA3B,GAA+D,yBAA/D,GAA+F,uBAA/F,GAA6H,uBAA7H,GAA0J,sBAA1J,GAAsL,sBAAtL,GAAuN,2BAAvN,GAAyP,uBAAzP,GAA2R,2BAA3R,GAAiU,2BAAjU,GAAmW,uBCK7V2gI,GAAW,CACf,CACErzF,MAAO,UACPszF,KAAM,6BAIJ5Y,GAAW,CAAC,OAwDlB,GAtDiB7nC,IAAoB,IAAnB,UAAErD,GAAWqD,EAC7B,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAiB,CACxC,CAACA,IAAgBwf,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAar0C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CAAC,UAEnEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAC,cACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzB2lF,GAAStwH,KAAI,CAAC1O,EAAG3B,KAChBsgI,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAiB,CAC7B,CAACA,IAA0B,IAAV5gH,IAChBg7C,SAAA,EAGHijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAY5lE,SAAEr5C,EAAEi/H,OAChCj/H,EAAE2rC,QAHEttC,WAQbsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAC,cACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzBgtE,GAAS33G,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAGtf,GAAiB,CAC7B,CAACA,IAA0B,IAAV5gH,IAChBg7C,SAGFr5C,GAFI3B,mBAUC,EChE1B,GAA2B,2BAA3B,GAA+D,yBAA/D,GAA+F,uBAA/F,GAA6H,uBAA7H,GAAyP,uBAAzP,GAA2R,2BAA3R,GAAmW,sCCEnW,MAYA,GAZemgF,IAAyC,IAAxC,MAAEhjF,EAAK,SAAE0jI,EAAQ,MAAEluF,EAAK,OAAEC,GAAQutC,EAC9C,OAEI89C,EAAAA,GAAAA,KAACxrC,GAAAA,OAAM,CAACt1F,MAAOA,EACXi4F,UAAWyrC,EACXxqC,UAAW1jD,EACX2jD,WAAY1jD,GACd,ECqBV,GAvBiButC,IAAoB,IAAnB,UAAErD,GAAWqD,EAC7B,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GACvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAiB,CACxC,CAACA,IAAgBwf,IAChBplF,SAAA,EAEHijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAar0C,QAASA,IAAM8zD,GAAYD,GAASplF,UAClEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,UAAUk/B,KAAK,UAE5BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAC6C,GAAM,CAAC3jI,MAAOoK,oCAA2Cs5H,SAAS,qBAAqBluF,MAAO,GAAIC,OAAQ,MAC3GqrF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,gCAC7BslF,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAa5+B,GAAI,gBAAgBhnC,SAAA,CAAC,OAAGijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAgB5lE,SAAC,0BAIxE,EC1B1B,GAAwB,qBAAxB,GAAqD,qBAArD,GAAkF,qBAAlF,GAA6G,mBAA7G,GAAuI,oBAAvI,GAAmK,qBC8BnK,GAzBcmlC,IAAiC,IAAhC,UAAErD,EAAS,KAAE4jD,EAAI,MAAEK,GAAO5gD,EACvC,MAAM49C,EAAWC,IAAY,GAE7B,OACEsC,EAAAA,GAAAA,MAAA,SAAOxjD,UAAWojD,KAAGpjD,EAAW8jC,GAAc,CAAE,CAACA,IAAemgB,IAAS/lF,SAAA,EACvEijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GACXjnE,QAASokF,EAAS5gI,MAClBikG,SAAU28B,EAASJ,OACnBnoG,KAAK,aAENkrG,GACCJ,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,cAAck/B,KAAK,QAC9B6iG,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAG/B6iG,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAa5lE,UAC5BijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,SAGf,EC1BZ,IAAgB,KAAO,mBAAmB,OAAS,qBAAqB,KAAO,mBAAmB,KAAO,mBAAmB,KAAO,mBAAmB,KAAO,mBAAmB,QAAU,sBAAsB,KAAO,mBAAmB,MAAQ,oBAAoB,QAAU,uBCM1QogB,GAAQ,CACZ,CACE1zF,MAAO,UACPozF,KAAM,OACN1nD,QAAS,4BACTnoB,IAAK,iBAGP,CACEvjB,MAAO,mBACPozF,KAAM,MACN1nD,QAAS,kBACTnoB,IAAK,0BAGP,CACEvjB,MAAO,oBACPozF,KAAM,SACN1nD,QAAS,iCACTnoB,IAAK,qBACLowE,WAAW,GAgBb,CACE3zF,MAAO,YACPozF,KAAM,aACN1nD,QAAS,2BAsEb,GAjEamH,IAAoB,IAAnB,UAAErD,GAAWqD,EACzB,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GACjCsuD,EAAWJ,KACjB,OACEoK,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,GAAOud,KAAM,CAAE,CAACvd,GAAOsgB,QAASd,IAAWplF,SAAA,EACvEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOtrF,KAAMi3C,QAASA,IAAM8zD,GAAYD,GAASplF,UAClEijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAI,kCAAkCmY,IAAI,cAEjD4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO91F,KAAKkwB,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOugB,KAAKnmF,SAAA,CACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,IACb2B,EAAEkvD,KACAyvE,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAW8jC,GAAOt1B,KAClBtJ,GAAIrgF,EAAEkvD,IACN0b,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAGpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eAPhCh5E,IAWPsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/xE,KAAKmM,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOP,OAAK,QAEvC9C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eATLh5E,MActCsgI,EAAAA,GAAAA,MAAA,UACExjD,UAAW8jC,GAAOt1B,KAClB/e,QAASA,KACPqwD,aAAa1wG,QACb+nG,EAAS,aAEF,GACPj5E,SAAA,EAEFijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,UAEzB6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwgB,QAAQpmF,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAC,yBAMpB,EC/G1B,IAAgB,SAAW,wBAAwB,OAAS,sBAAsB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,QAAU,uBAAuB,KAAO,oBAAoB,MAAQ,qBAAqB,QAAU,wBCQ3RgmF,GAAQ,CACZ,CACE1zF,MAAO,eACPozF,KAAM,MACN1nD,QAAS,mCACTnoB,IAAK,sBA0DT,GAtDcsvB,IAAgC,IAA/B,UAAErD,EAAS,WAAEo9C,GAAY/5C,EACtC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAO4f,SAAU,CACxC,CAAC5f,GAAOsgB,QAASd,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAOtrF,KAAMi3C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CAAC,SAEnEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO91F,KAAKkwB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOugB,KAAKnmF,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,IACb2B,EAAEkvD,KACAyvE,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAW8jC,GAAOt1B,KAClBtJ,GAAIrgF,EAAEkvD,IACN0b,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAGpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eAPhCh5E,IAWPsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/xE,KAAKmM,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOP,OAAK,QAEvC9C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eATLh5E,aAiBxB,ECnE1B,IAAgB,SAAW,4BAA4B,OAAS,0BAA0B,KAAO,wBAAwB,KAAO,wBAAwB,KAAO,wBAAwB,KAAO,wBAAwB,QAAU,2BAA2B,KAAO,wBAAwB,MAAQ,yBAAyB,QAAU,2BAA2B,KAAO,yBCQjWghI,GAAQ,CACZ,CACE1zF,MAAO,cACPozF,KAAM,OACN1nD,QAAS,mCACTnoB,IAAK,eAEP,CACEvjB,MAAO,eACPozF,KAAM,QACN1nD,QAAS,iCACTnoB,IAAK,kBAiET,GAtDkBsvB,IAAoB,IAAnB,UAAErD,GAAWqD,EAC9B,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAO4f,SAAU,CACxC,CAAC5f,GAAOsgB,QAASd,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAOtrF,KAAMi3C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CAAC,cAEnEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO91F,KAAKkwB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOugB,KAAKnmF,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,IACb2B,EAAEkvD,KACAyvE,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAW8jC,GAAOt1B,KAClBtJ,GAAIrgF,EAAEkvD,IACN0b,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAGpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtzE,MAAM0N,SAAA,CAAEr5C,EAAE2rC,MAAM,KAAW,IAAT3rC,EAAE4/H,KAAgBtD,EAAAA,GAAAA,KAAA,SAAOnhD,UAAW8jC,GAAO4gB,KAAKxmF,SAAC,kBAAuB,QACjHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eAPhCh5E,IAWPsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/xE,KAAKmM,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOP,OAAK,QAEvC9C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eATLh5E,aAiBxB,EChF1B,IAAgB,SAAW,0BAA0B,OAAS,wBAAwB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,sBAAsB,QAAU,yBAAyB,KAAO,sBAAsB,MAAQ,uBAAuB,QAAU,yBAAyB,KAAO,uBCQ7UghI,GAAQ,CACZ,CACE1zF,MAAO,eACPozF,KAAM,SACN1nD,QAAS,kCACTnoB,IAAK,gBACL4wE,KAAK,IAiET,GAtDgBthD,IAAoB,IAAnB,UAAErD,GAAWqD,EAC5B,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGpjD,EAAW8jC,GAAO4f,SAAU,CACxC,CAAC5f,GAAOsgB,QAASd,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAOtrF,KAAMi3C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CAAC,WAEnEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO91F,KAAKkwB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOugB,KAAKnmF,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,IACb2B,EAAEkvD,KACAyvE,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAW8jC,GAAOt1B,KAClBtJ,GAAIrgF,EAAEkvD,IACN0b,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAGpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtzE,MAAM0N,SAAA,CAAEr5C,EAAE2rC,MAAM,KAAY,IAAV3rC,EAAE8/H,MAAiBxD,EAAAA,GAAAA,KAAA,SAAOnhD,UAAW8jC,GAAO4gB,KAAKxmF,SAAC,UAAe,QAC1GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eAPhCh5E,IAWPsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE++H,KAAMtlG,KAAK,UAE3BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/xE,KAAKmM,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOP,OAAK,QAEvC9C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eATLh5E,aAiBxB,EC9DpB0hI,GAAsB,CAC1B,CACEp0F,MAAO,UACPujB,IAAK,YAIH8wE,GAAqB,CACzB,CACEr0F,MAAO,UACPujB,IAAK,WAEP,CACEvjB,MAAO,QAwIX,GAnIe6yC,IAAqB,IAApB,WAAEyhD,GAAYzhD,EAC5B,MAAO0hD,EAAYC,IAAiBn8D,EAAAA,EAAAA,WAAS,GACvCu0D,EAAa0C,aAAaC,QAAQ,aAAe6E,GAAsBC,GAE7E,OACE1D,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAGtf,GAAOmhB,OAAQ,CAAE,CAACnhB,GAAOohB,MAAOJ,IAAc5mF,UAClEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAW8jC,GAAOqhB,KAClBjgD,GAAG,IACHzV,QAASA,IAAMu1D,GAAc,GAAO9mF,SAAA,EAEpCijF,EAAAA,GAAAA,KAAC5mC,GAAK,CACJva,UAAW8jC,GAAOshB,WAClBhtG,IAAI,yBACJ0oG,QAAQ,wBACRvwF,IAAI,cAEN4wF,EAAAA,GAAAA,KAAA,OACEnhD,UAAW8jC,GAAOuhB,UAClBjtG,IAAI,mBACJmY,IAAI,iBAGRizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOx4B,QAAQptC,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAOwhB,KAAM,CAAE,CAACxhB,GAAOwf,SAAUyB,IAAc7mF,UAChEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOyhB,IAAIrnF,SAAA,EACzBijF,EAAAA,GAAAA,KAACqE,GAAO,CAACxlD,UAAW8jC,GAAO4f,YAC3BvC,EAAAA,GAAAA,KAACsE,GAAK,CAACzlD,UAAW8jC,GAAO4f,WACxBtG,EAAW7pH,KAAI,CAAC1O,EAAG3B,IAClB2B,EAAE6+H,UACAvC,EAAAA,GAAAA,KAACuE,GAAQ,CACP1lD,UAAW8jC,GAAO4f,SAElBl1C,KAAM3pF,EACN43C,SAAUuoF,GAFL9hI,GAKmB,QAA1B2B,EAAE2rC,MAAM8I,eAEJ6nF,EAAAA,GAAAA,KAAA,KACEnhD,UAAW8jC,GAAOt1B,KAClBm1C,gBAAiB7f,GAAOsgB,OACxB30D,QAASA,IAAMu1D,GAAc,GAC7B7uE,KAAM,4BAENv0D,OAAO,SACPwwF,IAAI,sBAAqBl0C,SAExBr5C,EAAE2rC,OAJEttC,IASPi+H,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAW8jC,GAAOt1B,KAClBm1C,gBAAiB7f,GAAOsgB,OACxB30D,QAASA,IAAMu1D,GAAc,GAC7B9/C,GAAIrgF,EAAEkvD,IAAI7V,SAGTr5C,EAAE2rC,OAFEttC,KAMd48H,aAAaC,QAAQ,eACpByD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAACyE,GAAS,CAAC5lD,UAAW8jC,GAAO4f,YAC7BvC,EAAAA,GAAAA,KAACsE,GAAK,CAACzlD,UAAW8jC,GAAO4f,oBAKjCF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+hB,KAAK3nF,SAAA,CACzB4hF,aAAaC,QAAQ,cACpByD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC2E,GAAQ,CAAC9lD,UAAW8jC,GAAOvf,YAE5Bi/B,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOiiB,QAAQ7nF,SAAA,EAC7BijF,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAWojD,KAAG,6BAA8Btf,GAAOp1D,QACnDi1E,gBAAiB7f,GAAOsgB,OACxBl/C,GAAG,oBAAmBhnC,SACvB,YAGDijF,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAWojD,KAAG,6BAA8Btf,GAAOp1D,QACnDi1E,gBAAiB7f,GAAOsgB,OACxBl/C,GAAG,mBAAkBhnC,SACtB,YAGDijF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOZ,MAAI,KACpCzC,EAAAA,GAAAA,KAAC6E,GAAI,CAAChmD,UAAW8jC,GAAOud,cAI5BmC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOiiB,QAAQ7nF,SAAA,EAC7BijF,EAAAA,GAAAA,KAACoD,GAAK,CAACvkD,UAAW8jC,GAAO0gB,MAAOZ,MAAI,KACpCzC,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAWojD,KAAG,eAAgBtf,GAAOp1D,QACrCi1E,gBAAiB7f,GAAOsgB,OACxBl/C,GAAG,WACHzV,QAASA,IAAMu1D,GAAc,GAAO9mF,SACrC,aAGDijF,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAWojD,KAAG,6BAA8Btf,GAAOp1D,QACnDi1E,gBAAiB7f,GAAOsgB,OACxBl/C,GAAG,WACHzV,QAASA,IAAMu1D,GAAc,GAAO9mF,SACrC,cAKLijF,EAAAA,GAAAA,KAAC8E,GAAQ,CAACjmD,UAAW8jC,GAAO/xB,eAG9BovC,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAOoiB,OAAQ,CAAE,CAACpiB,GAAOsgB,QAASW,IAChDt1D,QAASA,IAAMu1D,GAAeD,YAI7B,EC9Jb,GAAyB,uBAAzB,GAA4D,0BAA5D,GAA6F,qBAA7F,GAAwH,oBAAxH,GAAmJ,qBAAnJ,GAAqL,2BAArL,GAA4N,0BAA5N,GAA6P,qBAA7P,GAA6R,yBAA7R,GAA+T,uBAA/T,GAA6V,qBAA7V,GAAyX,qBAAzX,GAAib,qBAAjb,GAAkd,0BAAld,GAAmf,qBAAnf,GAAkhB,wBAAlhB,GAAmjB,uBAAnjB,GAAolB,wBCM9kBV,GAAO,CACX,CACE7zF,MAAO,WACPujB,IAAK,YAEP,CACEvjB,MAAO,UACPujB,IAAK,WAEP,CACEvjB,MAAO,OACPujB,IAAK,SAEP,CACEvjB,MAAO,cACPujB,IAAK,gBAEP,CACEvjB,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,eACPujB,IAAK,4BACLnyD,QAAQ,GAEV,CACE4uC,MAAO,MACPujB,IAAK,2BACLnyD,QAAQ,GAEV,CACE4uC,MAAO,iBACPujB,IAAK,mBAEP,CACEvjB,MAAO,gBACPujB,IAAK,kBAcP,CACEvjB,MAAO,0BACPujB,IAAK,6BAIHoyE,GAAY,CAChB,CACE31F,MAAO,qBACPujB,IAAK,yBAEP,CACEvjB,MAAO,iBACPujB,IAAK,mBAEP,CACEvjB,MAAO,aACPujB,IAAK,eAEP,CACEvjB,MAAO,aACPujB,IAAK,eAEP,CACEvjB,MAAO,uBACPujB,IAAK,yBAEP,CACEvjB,MAAO,6BACPujB,IAAK,8CAEP,CACEvjB,MAAO,yBACPujB,IAAK,iBAEP,CACEvjB,MAAO,uBACPujB,IAAK,2BAMP,CACEvjB,MAAO,kBACPujB,IAAK,oBAEP,CACEvjB,MAAO,mBACPujB,IAAK,mBAIHqyE,GAAQ,CACZ,CACE51F,MAAO,4BACPujB,IAAK,uBAEP,CACEvjB,MAAO,qBACPujB,IAAK,gBAEP,CACEvjB,MAAO,kBACPujB,IAAK,aAEP,CACEvjB,MAAO,sBACPujB,IAAK,iBAEP,CACEvjB,MAAO,sBACPujB,IAAK,iBAEP,CACEvjB,MAAO,wBACPujB,IAAK,eAEP,CACEvjB,MAAO,qBACPujB,IAAK,gBAEP,CACEvjB,MAAO,qBACPujB,IAAK,gBAEP,CACEvjB,MAAO,oBACPujB,IAAK,gBAeHsyE,GAAU,CACd,CACE71F,MAAO,WACPlS,KAAM,KACNy1B,IAAK,8CAEP,CACEvjB,MAAO,UACPlS,KAAM,KACNy1B,IAAK,gCAEP,CACEvjB,MAAO,YACPlS,KAAM,KACNy1B,IAAK,sCAEP,CACEvjB,MAAO,WACPlS,KAAM,KACNy1B,IAAK,8CAiMT,GAxLeuyE,KAAO,IAADC,EACnB,MAAOjD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,IAChC29D,EAAOC,IAAY59D,EAAAA,EAAAA,WAAS,IAC5B69D,EAASC,IAAc99D,EAAAA,EAAAA,WAAS,GAQvC,OACE26D,EAAAA,GAAAA,MAAA,UAAQxjD,UAAW8jC,GAAc5lE,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BslF,EAAAA,GAAAA,MAAC9H,GAAI,CAACx2C,GAAG,IAAGhnC,SAAA,EACVijF,EAAAA,GAAAA,KAAA,OACEnhD,UAAW8jC,GACX1rF,IAAI,yBACJ0oG,QAAQ,wBACRvwF,IAAI,cAEN4wF,EAAAA,GAAAA,KAAC5mC,GAAK,CACJva,UAAW8jC,GACX1rF,IAAI,yBACJ0oG,QAAQ,wBACRvwF,IAAI,iBAGR4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,MAUhBqd,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAC5BmoF,GAAQ9yH,KAAI,CAAC1O,EAAG3B,KACfi+H,EAAAA,GAAAA,KAAA,KACEnhD,UAAW8jC,GACX3tD,KAAMtxD,EAAEkvD,IACRnyD,OAAO,SACPwwF,IAAI,sBAEJ5hD,MAAO3rC,EAAE2rC,MAAM0N,UAEfijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMyF,EAAE2rC,MAAOlS,KAAMz5B,EAAEy5B,QAHxBp7B,WAQbsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAAWplF,SAAA,EAC5DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAW8jC,GACXr0C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,CACrC,YAECijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAG/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACrB,OAAJmmF,SAAI,IAAJA,IAKC,QALGkC,EAAJlC,GAAMt5G,QAAO9iB,GACI,yBAAZA,EAAEuoC,OAAkG,IAA9Dl/B,SAAS7G,cAInD,IAAA87H,OALG,EAAJA,EAKGhzH,KAAI,CAAC1O,EAAG3B,IACN2B,EAAEjD,QACIu/H,EAAAA,GAAAA,KAAA,KACNnhD,UAAW8jC,GACX8iB,gBAAiB9iB,GACjB3tD,KAAMtxD,EAAEkvD,IAERnyD,OAAQiD,EAAEjD,SAAuB,IAAbiD,EAAEjD,OAAkB,SAAW,GACnDwwF,IAAKvtF,EAAEjD,SAAuB,IAAbiD,EAAEjD,OAAkB,sBAAwB,GAAGs8C,SAE/Dr5C,EAAE2rC,OAJEttC,IASLi+H,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAW8jC,GACX6f,gBAAiB7f,GACjB5+B,GAAIrgF,EAAEkvD,IAAI7V,SAGTr5C,EAAE2rC,OAFEttC,cAUnBi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgB0iB,IAAStoF,SAAA,EAC1DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAiBr0C,QAASA,IAAMg3D,GAAUD,GAAOtoF,SAAA,CAAC,SAEhEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAE/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzBioF,GAAU5yH,KAAI,CAAC1O,EAAG3B,KACjBi+H,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAW8jC,GACX6f,gBAAiB7f,GACjB5+B,GAAIrgF,EAAEkvD,IAAI7V,SAGTr5C,EAAE2rC,OAFEttC,aAQfi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgB4iB,IAAWxoF,SAAA,EAC5DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAW8jC,GACXr0C,QAASA,IAAMk3D,GAAYD,GAASxoF,SAAA,CACrC,sBAECijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAG/B6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzBkoF,GAAM7yH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACvE,GAAO,CACN58C,UAAW8jC,GACX6f,gBAAiB7f,GACjB5+B,GAAIrgF,EAAEkvD,IAAI7V,SAGTr5C,EAAE2rC,OAFEttC,kBAkCnBi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAiB5lE,SAAA,CAAC,mBACnB,IAAIzqB,MAAOozG,cAAc,sCAExC1F,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,0FAK1B,EC3Vb,GAnBamlC,IAAuD,IAAtD,WAAEyjD,EAAU,SAAE5oF,EAAQ,WAAE6oF,EAAU,WAAEjC,GAAYzhD,EAC5D,MAAM,SAAE2rC,GAAa6H,KAOrB,OALAvuD,EAAAA,EAAAA,YAAU,KACR9nE,OAAOg+H,SAAS,EAAG,GACnBkB,IAAyB,GACxB,CAAC1Q,KAGFmS,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxB4oF,IAAc3F,EAAAA,GAAAA,KAAC6F,GAAM,CAAClC,WAAYA,KACpC3D,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEA,KAC7B6oF,IAAc5F,EAAAA,GAAAA,KAACmF,GAAM,QAExB,ECrBP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,qBAAqB,GAAK,iBAAiB,SAAW,uBAAuB,aAAe,2BAA2B,MAAQ,qBCAhS,GAAyB,6BAAzB,GAA6D,2BCe7D,GAXqBjjD,IAA8B,IAA7B,UAAErD,EAAS,SAAEinD,GAAU5jD,EAC3C,OACE89C,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAGtf,GAAe9jC,GAAYvQ,QAASw3D,EAAS/oF,UACjEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,eAAek/B,KAAK,QAC/B6iG,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,eAAek/B,KAAK,WAE1B,ECXb,GAAwB,qBAAxB,GAAoD,oBAApD,GAA+E,oBAA/E,GAA6G,uBAA7G,GAA2I,oBAA3I,GAAuK,qBAAvK,GAAuM,wBAAvM,GAA0O,wBAA1O,GAA0Q,qBCC3P,SAAS/+B,GAAK0tB,EAAIiO,GAC/B,OAAO,WACL,OAAOjO,EAAG3sB,MAAM46B,EAASh7B,UAC3B,CACF,CCAA,MAAOwN,SAAQA,IAAIlQ,OAAOuE,WACpB,eAAC6wB,IAAkBp1B,OAEnB0pI,GAAS,CAAC9wD,GAAS+wD,IACrB,MAAM31G,EAAM9jB,GAAS7N,KAAKsnI,GAC1B,OAAO/wD,EAAM5kD,KAAS4kD,EAAM5kD,GAAOA,EAAI9vB,MAAM,GAAI,GAAG43C,cAAc,EAFvD,CAGZ97C,OAAOyM,OAAO,OAEXm9H,GAAc1uG,IAClBA,EAAOA,EAAK4gB,cACJ6tF,GAAUD,GAAOC,KAAWzuG,GAGhC2uG,GAAa3uG,GAAQyuG,UAAgBA,IAAUzuG,GAS/C,QAAClO,IAAWD,MASZ+8G,GAAcD,GAAW,aAqB/B,MAAME,GAAgBH,GAAW,eA2BjC,MAAMv+F,GAAWw+F,GAAW,UAQtB73G,GAAa63G,GAAW,YASxBG,GAAWH,GAAW,UAStBrtG,GAAYmtG,GAAoB,OAAVA,GAAmC,kBAAVA,EAiB/CM,GAAiBn9G,IACrB,GAAoB,WAAhB48G,GAAO58G,GACT,OAAO,EAGT,MAAMvoB,EAAY6wB,GAAetI,GACjC,OAAsB,OAAdvoB,GAAsBA,IAAcvE,OAAOuE,WAAkD,OAArCvE,OAAOo1B,eAAe7wB,OAA0BmoB,OAAOoV,eAAehV,MAAUJ,OAAOgJ,YAAY5I,EAAI,EAUnKo9G,GAASN,GAAW,QASpBO,GAASP,GAAW,QASpBQ,GAASR,GAAW,QASpBS,GAAaT,GAAW,YAsCxBU,GAAoBV,GAAW,oBAE9BW,GAAkBC,GAAWC,GAAYC,IAAa,CAAC,iBAAkB,UAAW,WAAY,WAAW30H,IAAI6zH,IA2BtH,SAASzkI,GAAQkN,EAAKod,GAA+B,IAM/CroB,EACA82C,GAPoB,WAACysF,GAAa,GAAMjoI,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhD,GAAY,OAAR2P,GAA+B,qBAARA,EAa3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGL2a,GAAQ3a,GAEV,IAAKjL,EAAI,EAAG82C,EAAI7rC,EAAI1P,OAAQyE,EAAI82C,EAAG92C,IACjCqoB,EAAGptB,KAAK,KAAMgQ,EAAIjL,GAAIA,EAAGiL,OAEtB,CAEL,MAAMgb,EAAOs9G,EAAa3qI,OAAO65B,oBAAoBxnB,GAAOrS,OAAOqtB,KAAKhb,GAClE2lC,EAAM3qB,EAAK1qB,OACjB,IAAIiC,EAEJ,IAAKwC,EAAI,EAAGA,EAAI4wC,EAAK5wC,IACnBxC,EAAMyoB,EAAKjmB,GACXqoB,EAAGptB,KAAK,KAAMgQ,EAAIzN,GAAMA,EAAKyN,EAEjC,CACF,CAEA,SAASu4H,GAAQv4H,EAAKzN,GACpBA,EAAMA,EAAIk3C,cACV,MAAMzuB,EAAOrtB,OAAOqtB,KAAKhb,GACzB,IACInK,EADAd,EAAIimB,EAAK1qB,OAEb,KAAOyE,KAAM,GAEX,GADAc,EAAOmlB,EAAKjmB,GACRxC,IAAQsD,EAAK4zC,cACf,OAAO5zC,EAGX,OAAO,IACT,CAEA,MAAM2iI,GAEsB,qBAAfl5H,WAAmCA,WACvB,qBAATD,KAAuBA,KAA0B,qBAAX1O,OAAyBA,OAAS6O,OAGlFi5H,GAAoBr2F,IAAaq1F,GAAYr1F,IAAYA,IAAYo2F,GAoD3E,MA8HMlqG,IAAgBpL,GAKG,qBAAfjd,YAA8B8c,GAAe9c,YAH9CqxH,GACEp0G,IAAco0G,aAAiBp0G,IAHrB,IAACA,GAetB,MAiCMw1G,GAAanB,GAAW,mBAWxBp3H,GAAiB,CAACqzE,IAAA,IAAC,eAACrzE,GAAeqzE,EAAA,MAAK,CAACxzE,EAAKg6F,IAAS75F,EAAenQ,KAAKgQ,EAAKg6F,EAAK,EAApE,CAAsErsG,OAAOuE,WAS9FymI,GAAWpB,GAAW,UAEtBqB,GAAoBA,CAAC54H,EAAK64H,KAC9B,MAAMC,EAAcnrI,OAAOgtG,0BAA0B36F,GAC/C+4H,EAAqB,CAAC,EAE5BjmI,GAAQgmI,GAAa,CAACpxG,EAAYn4B,KAChC,IAAIypI,GAC2C,KAA1CA,EAAMH,EAAQnxG,EAAYn4B,EAAMyQ,MACnC+4H,EAAmBxpI,GAAQypI,GAAOtxG,EACpC,IAGF/5B,OAAO0vB,iBAAiBrd,EAAK+4H,EAAmB,EAsD5CE,GAAQ,6BAERC,GAAQ,aAERC,GAAW,CACfD,SACAD,SACAG,YAAaH,GAAQA,GAAMrvF,cAAgBsvF,IAwB7C,MA+BMG,GAAY9B,GAAW,iBAK7B,IACE58G,WACA+8G,iBACA9nG,SApnBF,SAAkBnV,GAChB,OAAe,OAARA,IAAiBg9G,GAAYh9G,IAA4B,OAApBA,EAAIsF,cAAyB03G,GAAYh9G,EAAIsF,cACpFJ,GAAWlF,EAAIsF,YAAY6P,WAAanV,EAAIsF,YAAY6P,SAASnV,EACxE,EAknBE6+G,WAtekBhC,IAClB,IAAIiC,EACJ,OAAOjC,IACgB,oBAAbkC,UAA2BlC,aAAiBkC,UAClD75G,GAAW23G,EAAMmC,UACY,cAA1BF,EAAOlC,GAAOC,KAEL,WAATiC,GAAqB55G,GAAW23G,EAAMz5H,WAAkC,sBAArBy5H,EAAMz5H,YAG/D,EA6dD67H,kBAhmBF,SAA2Bj/G,GACzB,IAAIoH,EAMJ,OAJEA,EAD0B,qBAAhBhc,aAAiCA,YAAY8kE,OAC9C9kE,YAAY8kE,OAAOlwD,GAElBA,GAASA,EAAIhU,QAAYixH,GAAcj9G,EAAIhU,QAEhDob,CACT,EAylBEmX,YACA2+F,YACAgC,UAhjBgBrC,IAAmB,IAAVA,IAA4B,IAAVA,EAijB3CntG,YACAytG,iBACAM,oBACAC,aACAC,WAAU,GACVC,aACAZ,eACAI,UACAC,UACAC,UACAY,YACAh5G,cACAi6G,SAhgBgBn/G,GAAQ0P,GAAS1P,IAAQkF,GAAWlF,EAAIo/G,MAigBxD5B,qBACA3pG,gBACA0pG,cACAllI,WACAgnI,MAlYF,SAASA,IACP,MAAM,SAACC,GAAYtB,GAAiBzmI,OAASA,MAAQ,CAAC,EAChD6vB,EAAS,CAAC,EACVm4G,EAAcA,CAACv/G,EAAKloB,KACxB,MAAM0nI,EAAYF,GAAYxB,GAAQ12G,EAAQtvB,IAAQA,EAClDqlI,GAAc/1G,EAAOo4G,KAAerC,GAAcn9G,GACpDoH,EAAOo4G,GAAaH,EAAMj4G,EAAOo4G,GAAYx/G,GACpCm9G,GAAcn9G,GACvBoH,EAAOo4G,GAAaH,EAAM,CAAC,EAAGr/G,GACrBE,GAAQF,GACjBoH,EAAOo4G,GAAax/G,EAAI5oB,QAExBgwB,EAAOo4G,GAAax/G,CACtB,EAGF,IAAK,IAAI1lB,EAAI,EAAG82C,EAAIx7C,UAAUC,OAAQyE,EAAI82C,EAAG92C,IAC3C1E,UAAU0E,IAAMjC,GAAQzC,UAAU0E,GAAIilI,GAExC,OAAOn4G,CACT,EA+WEpsB,OAnWa,SAACwC,EAAGC,EAAGmzB,GAA8B,IAArB,WAACitG,GAAWjoI,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAE,CAAC,EAQ5C,OAPAyC,GAAQoF,GAAG,CAACuiB,EAAKloB,KACX84B,GAAW1L,GAAWlF,GACxBxiB,EAAE1F,GAAO7C,GAAK+qB,EAAK4Q,GAEnBpzB,EAAE1F,GAAOkoB,CACX,GACC,CAAC69G,eACGrgI,CACT,EA2VEipC,KA/dYvf,GAAQA,EAAIuf,KACxBvf,EAAIuf,OAASvf,EAAI8D,QAAQ,qCAAsC,IA+d/Dy0G,SAnVgB7tD,IACc,QAA1BA,EAAQrqE,WAAW,KACrBqqE,EAAUA,EAAQx6E,MAAM,IAEnBw6E,GAgVP8tD,SApUeA,CAACp6G,EAAaq6G,EAAkB78G,EAAOu7G,KACtD/4G,EAAY7tB,UAAYvE,OAAOyM,OAAOggI,EAAiBloI,UAAW4mI,GAClE/4G,EAAY7tB,UAAU6tB,YAAcA,EACpCpyB,OAAOwD,eAAe4uB,EAAa,QAAS,CAC1CvvB,MAAO4pI,EAAiBloI,YAE1BqrB,GAAS5vB,OAAO49C,OAAOxrB,EAAY7tB,UAAWqrB,EAAM,EA+TpD88G,aAnTmBA,CAACC,EAAWC,EAASr/G,EAAQs/G,KAChD,IAAIj9G,EACAxoB,EACAilG,EACJ,MAAMygC,EAAS,CAAC,EAIhB,GAFAF,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFAh9G,EAAQ5vB,OAAO65B,oBAAoB8yG,GACnCvlI,EAAIwoB,EAAMjtB,OACHyE,KAAM,GACXilG,EAAOz8E,EAAMxoB,GACPylI,IAAcA,EAAWxgC,EAAMsgC,EAAWC,IAAcE,EAAOzgC,KACnEugC,EAAQvgC,GAAQsgC,EAAUtgC,GAC1BygC,EAAOzgC,IAAQ,GAGnBsgC,GAAuB,IAAXp/G,GAAoB6H,GAAeu3G,EACjD,OAASA,KAAep/G,GAAUA,EAAOo/G,EAAWC,KAAaD,IAAc3sI,OAAOuE,WAEtF,OAAOqoI,CAAO,EA6RdlD,UACAE,cACA1nD,SAnReA,CAACluD,EAAK+4G,EAAcnsD,KACnC5sD,EAAMnvB,OAAOmvB,SACI3wB,IAAbu9E,GAA0BA,EAAW5sD,EAAIrxB,UAC3Ci+E,EAAW5sD,EAAIrxB,QAEjBi+E,GAAYmsD,EAAapqI,OACzB,MAAMqqI,EAAYh5G,EAAIruB,QAAQonI,EAAcnsD,GAC5C,OAAsB,IAAfosD,GAAoBA,IAAcpsD,CAAQ,EA6QjD07B,QAlQeqtB,IACf,IAAKA,EAAO,OAAO,KACnB,GAAI38G,GAAQ28G,GAAQ,OAAOA,EAC3B,IAAIviI,EAAIuiI,EAAMhnI,OACd,IAAKqnI,GAAS5iI,GAAI,OAAO,KACzB,MAAMksB,EAAM,IAAIvG,MAAM3lB,GACtB,KAAOA,KAAM,GACXksB,EAAIlsB,GAAKuiI,EAAMviI,GAEjB,OAAOksB,CAAG,EA0PV25G,aA/NmBA,CAAC56H,EAAKod,KACzB,MAEMiG,GAFYrjB,GAAOA,EAAIqa,OAAOgJ,WAETrzB,KAAKgQ,GAEhC,IAAI6hB,EAEJ,MAAQA,EAASwB,EAASjH,UAAYyF,EAAOwvC,MAAM,CACjD,MAAMwpE,EAAOh5G,EAAOrxB,MACpB4sB,EAAGptB,KAAKgQ,EAAK66H,EAAK,GAAIA,EAAK,GAC7B,GAsNAC,SA3MeA,CAACC,EAAQp5G,KACxB,IAAIzC,EACJ,MAAM+B,EAAM,GAEZ,KAAwC,QAAhC/B,EAAU67G,EAAOn1G,KAAKjE,KAC5BV,EAAI9tB,KAAK+rB,GAGX,OAAO+B,CAAG,EAoMVy3G,cACAv4H,eAAc,GACd66H,WAAY76H,GACZy4H,qBACAqC,cA3JqBj7H,IACrB44H,GAAkB54H,GAAK,CAAC0nB,EAAYn4B,KAElC,GAAIowB,GAAW3f,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU1M,QAAQ/D,GAC/D,OAAO,EAGT,MAAMiB,EAAQwP,EAAIzQ,GAEbowB,GAAWnvB,KAEhBk3B,EAAW5K,YAAa,EAEpB,aAAc4K,EAChBA,EAAW3K,UAAW,EAInB2K,EAAWiH,MACdjH,EAAWiH,IAAM,KACf,MAAM5uB,MAAM,qCAAwCxQ,EAAO,IAAK,GAEpE,GACA,EAqIF2rI,YAlIkBA,CAACC,EAAeC,KAClC,MAAMp7H,EAAM,CAAC,EAEP4d,EAAUqD,IACdA,EAAInuB,SAAQtC,IACVwP,EAAIxP,IAAS,CAAI,GACjB,EAKJ,OAFAmqB,GAAQwgH,GAAiBv9G,EAAOu9G,GAAiBv9G,EAAOprB,OAAO2oI,GAAe3xF,MAAM4xF,IAE7Ep7H,CAAG,EAwHVq7H,YApMkB15G,GACXA,EAAI8nB,cAAchkB,QAAQ,yBAC/B,SAAkBkvB,EAAG2mF,EAAIC,GACvB,OAAOD,EAAG1xF,cAAgB2xF,CAC5B,IAiMF9uI,KAtHWA,OAuHX+uI,eArHqBA,CAAChrI,EAAO68C,IACb,MAAT78C,GAAiB6zB,OAAOJ,SAASzzB,GAASA,GAASA,EAAQ68C,EAqHlEkrF,WACA/4H,OAAQg5H,GACRC,oBACAU,YACAsC,eA5GqB,WAAgD,IAA/ChtG,EAAIp+B,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,GAAIqrI,EAAQrrI,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG8oI,GAASC,YACjDz3G,EAAM,GACV,MAAM,OAACrxB,GAAUorI,EACjB,KAAOjtG,KACL9M,GAAO+5G,EAASv8H,KAAKH,SAAW1O,EAAO,GAGzC,OAAOqxB,CACT,EAqGEg6G,oBA5FF,SAA6BrE,GAC3B,SAAUA,GAAS33G,GAAW23G,EAAMmC,SAAyC,aAA9BnC,EAAMj9G,OAAOoV,cAA+B6nG,EAAMj9G,OAAOgJ,UAC1G,EA2FEu4G,aAzFoB57H,IACpB,MAAMuyB,EAAQ,IAAI7X,MAAM,IAElBmhH,EAAQA,CAAChhH,EAAQ9lB,KAErB,GAAIo1B,GAAStP,GAAS,CACpB,GAAI0X,EAAMj/B,QAAQunB,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxB0X,EAAMx9B,GAAK8lB,EACX,MAAM9oB,EAAS4oB,GAAQE,GAAU,GAAK,CAAC,EASvC,OAPA/nB,GAAQ+nB,GAAQ,CAACrqB,EAAO+B,KACtB,MAAMupI,EAAeD,EAAMrrI,EAAOuE,EAAI,IACrC0iI,GAAYqE,KAAkB/pI,EAAOQ,GAAOupI,EAAa,IAG5DvpG,EAAMx9B,QAAK/D,EAEJe,CACT,CACF,CAEA,OAAO8oB,CAAM,EAGf,OAAOghH,EAAM77H,EAAK,EAAE,EA8DpBq5H,aACA0C,WA1DkBzE,GAClBA,IAAUntG,GAASmtG,IAAU33G,GAAW23G,KAAW33G,GAAW23G,EAAMprE,OAASvsC,GAAW23G,EAAMnrE,QC9oBhG,SAAS6vE,GAAWzgI,EAASiqC,EAAMs2C,EAAQ6I,EAASs3C,GAClDl8H,MAAM/P,KAAKgC,MAEP+N,MAAMm8H,kBACRn8H,MAAMm8H,kBAAkBlqI,KAAMA,KAAK+tB,aAEnC/tB,KAAKugC,OAAS,IAAIxyB,OAASwyB,MAG7BvgC,KAAKuJ,QAAUA,EACfvJ,KAAKzC,KAAO,aACZi2C,IAASxzC,KAAKwzC,KAAOA,GACrBs2C,IAAW9pF,KAAK8pF,OAASA,GACzB6I,IAAY3yF,KAAK2yF,QAAUA,GAC3Bs3C,IAAajqI,KAAKiqI,SAAWA,EAC/B,CAEAE,GAAMhC,SAAS6B,GAAYj8H,MAAO,CAChCq8H,OAAQ,WACN,MAAO,CAEL7gI,QAASvJ,KAAKuJ,QACdhM,KAAMyC,KAAKzC,KAEX8sI,YAAarqI,KAAKqqI,YAClB/1G,OAAQt0B,KAAKs0B,OAEb8/D,SAAUp0F,KAAKo0F,SACfk2C,WAAYtqI,KAAKsqI,WACjBC,aAAcvqI,KAAKuqI,aACnBhqG,MAAOvgC,KAAKugC,MAEZupD,OAAQqgD,GAAMP,aAAa5pI,KAAK8pF,QAChCt2C,KAAMxzC,KAAKwzC,KACXsgF,OAAQ9zH,KAAKiqI,UAAYjqI,KAAKiqI,SAASnW,OAAS9zH,KAAKiqI,SAASnW,OAAS,KAE3E,IAGF,MAAM5zH,GAAY8pI,GAAW9pI,UACvB4mI,GAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEAhmI,SAAQ0yC,IACRszF,GAAYtzF,GAAQ,CAACh1C,MAAOg1C,EAAK,IAGnC73C,OAAO0vB,iBAAiB2+G,GAAYlD,IACpCnrI,OAAOwD,eAAee,GAAW,eAAgB,CAAC1B,OAAO,IAGzDwrI,GAAW1mD,KAAO,CAACtwD,EAAOwgB,EAAMs2C,EAAQ6I,EAASs3C,EAAUjgC,KACzD,MAAMwgC,EAAa7uI,OAAOyM,OAAOlI,IAgBjC,OAdAiqI,GAAM9B,aAAar1G,EAAOw3G,GAAY,SAAgBx8H,GACpD,OAAOA,IAAQD,MAAM7N,SACvB,IAAG8nG,GACe,iBAATA,IAGTgiC,GAAWhsI,KAAKwsI,EAAYx3G,EAAMzpB,QAASiqC,EAAMs2C,EAAQ6I,EAASs3C,GAElEO,EAAWC,MAAQz3G,EAEnBw3G,EAAWjtI,KAAOy1B,EAAMz1B,KAExBysG,GAAeruG,OAAO49C,OAAOixF,EAAYxgC,GAElCwgC,CAAU,EAGnB,YCrFA,SAASE,GAAYpF,GACnB,OAAO6E,GAAMvE,cAAcN,IAAU6E,GAAMxhH,QAAQ28G,EACrD,CASA,SAASqF,GAAepqI,GACtB,OAAO4pI,GAAMtsD,SAASt9E,EAAK,MAAQA,EAAIV,MAAM,GAAI,GAAKU,CACxD,CAWA,SAASqqI,GAAUtd,EAAM/sH,EAAKyqG,GAC5B,OAAKsiB,EACEA,EAAKriH,OAAO1K,GAAKmR,KAAI,SAAcm5H,EAAO9nI,GAG/C,OADA8nI,EAAQF,GAAeE,IACf7/B,GAAQjoG,EAAI,IAAM8nI,EAAQ,IAAMA,CAC1C,IAAGv7H,KAAK07F,EAAO,IAAM,IALHzqG,CAMpB,CAaA,MAAM+qB,GAAa6+G,GAAM9B,aAAa8B,GAAO,CAAC,EAAG,MAAM,SAAgBniC,GACrE,MAAO,WAAW/yE,KAAK+yE,EACzB,IA8JA,SArIA,SAAoBh6F,EAAK88H,EAAUzqI,GACjC,IAAK8pI,GAAMhyG,SAASnqB,GAClB,MAAM,IAAIyd,UAAU,4BAItBq/G,EAAWA,GAAY,IAAyBtD,SAYhD,MAAMuD,GATN1qI,EAAU8pI,GAAM9B,aAAahoI,EAAS,CACpC0qI,YAAY,EACZ//B,MAAM,EACN4R,SAAS,IACR,GAAO,SAAiBouB,EAAQniH,GAEjC,OAAQshH,GAAM1E,YAAY58G,EAAOmiH,GACnC,KAE2BD,WAErBE,EAAU5qI,EAAQ4qI,SAAWC,EAC7BlgC,EAAO3qG,EAAQ2qG,KACf4R,EAAUv8G,EAAQu8G,QAElBuuB,GADQ9qI,EAAQ+qI,MAAwB,qBAATA,MAAwBA,OACpCjB,GAAMR,oBAAoBmB,GAEnD,IAAKX,GAAMx8G,WAAWs9G,GACpB,MAAM,IAAIx/G,UAAU,8BAGtB,SAAS4/G,EAAa7sI,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAI2rI,GAAMtE,OAAOrnI,GACf,OAAOA,EAAM8sI,cAGf,IAAKH,GAAWhB,GAAMpE,OAAOvnI,GAC3B,MAAM,IAAIwrI,GAAW,gDAGvB,OAAIG,GAAMzE,cAAclnI,IAAU2rI,GAAM7tG,aAAa99B,GAC5C2sI,GAA2B,oBAATC,KAAsB,IAAIA,KAAK,CAAC5sI,IAAU++B,OAAO+lD,KAAK9kF,GAG1EA,CACT,CAYA,SAAS0sI,EAAe1sI,EAAO+B,EAAK+sH,GAClC,IAAIr+F,EAAMzwB,EAEV,GAAIA,IAAU8uH,GAAyB,kBAAV9uH,EAC3B,GAAI2rI,GAAMtsD,SAASt9E,EAAK,MAEtBA,EAAMwqI,EAAaxqI,EAAMA,EAAIV,MAAM,GAAI,GAEvCrB,EAAQ2zB,KAAKpmB,UAAUvN,QAClB,GACJ2rI,GAAMxhH,QAAQnqB,IAnGvB,SAAqBywB,GACnB,OAAOk7G,GAAMxhH,QAAQsG,KAASA,EAAI+mE,KAAK00C,GACzC,CAiGiCa,CAAY/sI,KACnC2rI,GAAMnE,WAAWxnI,IAAU2rI,GAAMtsD,SAASt9E,EAAK,SAAW0uB,EAAMk7G,GAAMlyB,QAAQz5G,IAYhF,OATA+B,EAAMoqI,GAAepqI,GAErB0uB,EAAInuB,SAAQ,SAAcgb,EAAIza,IAC1B8oI,GAAM1E,YAAY3pH,IAAc,OAAPA,GAAgBgvH,EAASrD,QAEtC,IAAZ7qB,EAAmBguB,GAAU,CAACrqI,GAAMc,EAAO2pG,GAAqB,OAAZ4R,EAAmBr8G,EAAMA,EAAM,KACnF8qI,EAAavvH,GAEjB,KACO,EAIX,QAAI4uH,GAAYlsI,KAIhBssI,EAASrD,OAAOmD,GAAUtd,EAAM/sH,EAAKyqG,GAAOqgC,EAAa7sI,KAElD,EACT,CAEA,MAAM+hC,EAAQ,GAERirG,EAAiB7vI,OAAO49C,OAAOjuB,GAAY,CAC/C4/G,iBACAG,eACAX,iBAyBF,IAAKP,GAAMhyG,SAASnqB,GAClB,MAAM,IAAIyd,UAAU,0BAKtB,OA5BA,SAASggH,EAAMjtI,EAAO8uH,GACpB,IAAI6c,GAAM1E,YAAYjnI,GAAtB,CAEA,IAA8B,IAA1B+hC,EAAMj/B,QAAQ9C,GAChB,MAAMuP,MAAM,kCAAoCu/G,EAAKh+G,KAAK,MAG5DixB,EAAMp/B,KAAK3C,GAEX2rI,GAAMrpI,QAAQtC,GAAO,SAAcsd,EAAIvb,IAKtB,OAJE4pI,GAAM1E,YAAY3pH,IAAc,OAAPA,IAAgBmvH,EAAQjtI,KAChE8sI,EAAUhvH,EAAIquH,GAAMnjG,SAASzmC,GAAOA,EAAI2uC,OAAS3uC,EAAK+sH,EAAMke,KAI5DC,EAAM3vH,EAAIwxG,EAAOA,EAAKriH,OAAO1K,GAAO,CAACA,GAEzC,IAEAggC,EAAMmD,KAlB8B,CAmBtC,CAMA+nG,CAAMz9H,GAEC88H,CACT,EC5MA,SAAS70F,GAAOtmB,GACd,MAAM+7G,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOr7H,mBAAmBsf,GAAK8D,QAAQ,oBAAoB,SAAkBtF,GAC3E,OAAOu9G,EAAQv9G,EACjB,GACF,CAUA,SAASw9G,GAAqBl9C,EAAQpuF,GACpCL,KAAK4rI,OAAS,GAEdn9C,GAAUo9C,GAAWp9C,EAAQzuF,KAAMK,EACrC,CAEA,MAAMH,GAAYyrI,GAAqBzrI,UAEvCA,GAAUunI,OAAS,SAAgBlqI,EAAMiB,GACvCwB,KAAK4rI,OAAOzqI,KAAK,CAAC5D,EAAMiB,GAC1B,EAEA0B,GAAU2L,SAAW,SAAkB4C,GACrC,MAAMq9H,EAAUr9H,EAAU,SAASjQ,GACjC,OAAOiQ,EAAQzQ,KAAKgC,KAAMxB,EAAOy3C,GACnC,EAAIA,GAEJ,OAAOj2C,KAAK4rI,OAAOl6H,KAAI,SAAcm3H,GACnC,OAAOiD,EAAQjD,EAAK,IAAM,IAAMiD,EAAQjD,EAAK,GAC/C,GAAG,IAAIv5H,KAAK,IACd,EAEA,YC5CA,SAAS2mC,GAAOxtB,GACd,OAAOpY,mBAAmBoY,GACxBgL,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASs4G,GAAS75E,EAAKu8B,EAAQpuF,GAE5C,IAAKouF,EACH,OAAOv8B,EAGT,MAAM45E,EAAUzrI,GAAWA,EAAQ41C,QAAUA,GAEvC+1F,EAAc3rI,GAAWA,EAAQ4rI,UAEvC,IAAIC,EAUJ,GAPEA,EADEF,EACiBA,EAAYv9C,EAAQpuF,GAEpB8pI,GAAMlE,kBAAkBx3C,GACzCA,EAAO5iF,WACP,IAAI8/H,GAAqBl9C,EAAQpuF,GAASwL,SAASigI,GAGnDI,EAAkB,CACpB,MAAMC,EAAgBj6E,EAAI5wD,QAAQ,MAEX,IAAnB6qI,IACFj6E,EAAMA,EAAIryD,MAAM,EAAGssI,IAErBj6E,KAA8B,IAAtBA,EAAI5wD,QAAQ,KAAc,IAAM,KAAO4qI,CACjD,CAEA,OAAOh6E,CACT,CCQA,SAlEA,MACEnkC,WAAAA,GACE/tB,KAAKL,SAAW,EAClB,CAUAysI,GAAAA,CAAIC,EAAWC,EAAUjsI,GAOvB,OANAL,KAAKL,SAASwB,KAAK,CACjBkrI,YACAC,WACAC,cAAalsI,GAAUA,EAAQksI,YAC/BC,QAASnsI,EAAUA,EAAQmsI,QAAU,OAEhCxsI,KAAKL,SAASrB,OAAS,CAChC,CASAmuI,KAAAA,CAAM79F,GACA5uC,KAAKL,SAASivC,KAChB5uC,KAAKL,SAASivC,GAAM,KAExB,CAOArhB,KAAAA,GACMvtB,KAAKL,WACPK,KAAKL,SAAW,GAEpB,CAYAmB,OAAAA,CAAQsqB,GACN++G,GAAMrpI,QAAQd,KAAKL,UAAU,SAAwBqe,GACzC,OAANA,GACFoN,EAAGpN,EAEP,GACF,GCjEF,IACE0uH,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCLvB,SAAS3kC,GAAQ7iE,GAGf,OAAO6iE,GAAU,mBAAqB5/E,QAAU,iBAAmBA,OAAOgJ,SAAW,SAAU+T,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB/c,QAAU+c,EAAErX,cAAgB1F,QAAU+c,IAAM/c,OAAOnoB,UAAY,gBAAkBklC,CACpH,EAAG6iE,GAAQ7iE,EACb,CCNA,SAASklF,GAAchnH,GACrB,IAAIP,ECFN,SAAqBO,EAAGsnC,GACtB,GAAI,UAAYq9D,GAAQ3kG,KAAOA,EAAG,OAAOA,EACzC,IAAI/D,EAAI+D,EAAE+kB,OAAOkiG,aACjB,QAAI,IAAWhrH,EAAG,CAChB,IAAIwD,EAAIxD,EAAEvB,KAAKsF,EAAGsnC,GAAK,WACvB,GAAI,UAAYq9D,GAAQllG,GAAI,OAAOA,EACnC,MAAM,IAAI0oB,UAAU,+CACtB,CACA,OAAQ,WAAamf,EAAIpqC,OAAS6xB,QAAQ/uB,EAC5C,CDPUinH,CAAYjnH,EAAG,UACvB,MAAO,UAAY2kG,GAAQllG,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAAS2lG,GAAgBnpG,EAAGqrC,EAAGtnC,GAC7B,OAAQsnC,EAAI0/E,GAAc1/E,MAAOrrC,EAAI5D,OAAOwD,eAAeI,EAAGqrC,EAAG,CAC/DpsC,MAAO8E,EACPwnB,YAAY,EACZD,cAAc,EACdE,UAAU,IACPxrB,EAAEqrC,GAAKtnC,EAAG/D,CACjB,CCPA,SAASipG,GAAQjpG,EAAGqrC,GAClB,IAAItnC,EAAI3H,OAAOqtB,KAAKzpB,GACpB,GAAI5D,OAAOstB,sBAAuB,CAChC,IAAImc,EAAIzpC,OAAOstB,sBAAsB1pB,GACrCqrC,IAAMxF,EAAIA,EAAElc,QAAO,SAAU0hB,GAC3B,OAAOjvC,OAAO60B,yBAAyBjxB,EAAGqrC,GAAG9f,UAC/C,KAAKxnB,EAAEnC,KAAK1C,MAAM6E,EAAG8hC,EACvB,CACA,OAAO9hC,CACT,CACA,SAASupI,GAAettI,GACtB,IAAK,IAAIqrC,EAAI,EAAGA,EAAIvsC,UAAUC,OAAQssC,IAAK,CACzC,IAAItnC,EAAI,MAAQjF,UAAUusC,GAAKvsC,UAAUusC,GAAK,CAAC,EAC/CA,EAAI,EAAI49D,GAAQ7sG,OAAO2H,IAAI,GAAIxC,SAAQ,SAAU8pC,GAC/C,GAAerrC,EAAGqrC,EAAGtnC,EAAEsnC,GACzB,IAAKjvC,OAAOgtG,0BAA4BhtG,OAAO0vB,iBAAiB9rB,EAAG5D,OAAOgtG,0BAA0BrlG,IAAMklG,GAAQ7sG,OAAO2H,IAAIxC,SAAQ,SAAU8pC,GAC7IjvC,OAAOwD,eAAeI,EAAGqrC,EAAGjvC,OAAO60B,yBAAyBltB,EAAGsnC,GACjE,GACF,CACA,OAAOrrC,CACT,CClBA,MCCA,IACEigH,WAAW,EACXiL,QAAS,CACPqiB,gBDJsC,qBAApBA,gBAAkCA,gBAAkBnB,GCKtEnE,SCN+B,qBAAbA,SAA2BA,SAAW,KDOxD4D,KEP2B,qBAATA,KAAuBA,KAAO,MFSlD2B,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SGXhDC,GAAkC,qBAAXruI,QAA8C,qBAAbC,SAmBxDquI,IACHhjB,GAEuB,qBAAd32B,WAA6BA,UAAU22B,QADxC+iB,IAAiB,CAAC,cAAe,eAAgB,MAAM1rI,QAAQ2oH,IAAW,GAFvD,IAC3BA,GAaH,MAAMijB,GAE2B,qBAAtBC,mBAEP9/H,gBAAgB8/H,mBACc,oBAAvB9/H,KAAK+/H,cAIV/e,GAAS2e,IAAiBruI,OAAO0pC,SAASisB,MAAQ,mBCvCxD,GAAAwzB,GAAAA,GAAA,GACKqiD,GACAtO,ICyFL,SA9CA,SAAwBiP,GACtB,SAASuC,EAAU/f,EAAM9uH,EAAOuB,EAAQsB,GACtC,IAAI9D,EAAO+vH,EAAKjsH,KAEhB,GAAa,cAAT9D,EAAsB,OAAO,EAEjC,MAAM+vI,EAAej7G,OAAOJ,UAAU10B,GAChCgwI,EAASlsI,GAASisH,EAAKhvH,OAG7B,GAFAf,GAAQA,GAAQ4sI,GAAMxhH,QAAQ5oB,GAAUA,EAAOzB,OAASf,EAEpDgwI,EAOF,OANIpD,GAAMnB,WAAWjpI,EAAQxC,GAC3BwC,EAAOxC,GAAQ,CAACwC,EAAOxC,GAAOiB,GAE9BuB,EAAOxC,GAAQiB,GAGT8uI,EAGLvtI,EAAOxC,IAAU4sI,GAAMhyG,SAASp4B,EAAOxC,MAC1CwC,EAAOxC,GAAQ,IASjB,OANe8vI,EAAU/f,EAAM9uH,EAAOuB,EAAOxC,GAAO8D,IAEtC8oI,GAAMxhH,QAAQ5oB,EAAOxC,MACjCwC,EAAOxC,GA/Cb,SAAuB0xB,GACrB,MAAMjhB,EAAM,CAAC,EACPgb,EAAOrtB,OAAOqtB,KAAKiG,GACzB,IAAIlsB,EACJ,MAAM4wC,EAAM3qB,EAAK1qB,OACjB,IAAIiC,EACJ,IAAKwC,EAAI,EAAGA,EAAI4wC,EAAK5wC,IACnBxC,EAAMyoB,EAAKjmB,GACXiL,EAAIzN,GAAO0uB,EAAI1uB,GAEjB,OAAOyN,CACT,CAoCqBw/H,CAAcztI,EAAOxC,MAG9B+vI,CACV,CAEA,GAAInD,GAAM7C,WAAWwD,IAAaX,GAAMx8G,WAAWm9G,EAASpsG,SAAU,CACpE,MAAM1wB,EAAM,CAAC,EAMb,OAJAm8H,GAAMvB,aAAakC,GAAU,CAACvtI,EAAMiB,KAClC6uI,EA1EN,SAAuB9vI,GAKrB,OAAO4sI,GAAMrB,SAAS,gBAAiBvrI,GAAMmU,KAAIyc,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CAkEgBs/G,CAAclwI,GAAOiB,EAAOwP,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,ECzDA,MAAM0/H,GAAW,CAEfC,aAAcC,GAEdC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAAC,SAA0BnjI,EAAMojI,GACjD,MAAMC,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY1sI,QAAQ,qBAAuB,EAChE6sI,EAAkBhE,GAAMhyG,SAASxtB,GAEnCwjI,GAAmBhE,GAAMzD,WAAW/7H,KACtCA,EAAO,IAAI68H,SAAS78H,IAKtB,GAFmBw/H,GAAM7C,WAAW38H,GAGlC,OAAOujI,EAAqB/7G,KAAKpmB,UAAUqiI,GAAezjI,IAASA,EAGrE,GAAIw/H,GAAMzE,cAAc/6H,IACtBw/H,GAAMvsG,SAASjzB,IACfw/H,GAAMvC,SAASj9H,IACfw/H,GAAMrE,OAAOn7H,IACbw/H,GAAMpE,OAAOp7H,IACbw/H,GAAMjE,iBAAiBv7H,GAEvB,OAAOA,EAET,GAAIw/H,GAAMzC,kBAAkB/8H,GAC1B,OAAOA,EAAK8J,OAEd,GAAI01H,GAAMlE,kBAAkBt7H,GAE1B,OADAojI,EAAQM,eAAe,mDAAmD,GACnE1jI,EAAKkB,WAGd,IAAIm6H,EAEJ,GAAImI,EAAiB,CACnB,GAAIH,EAAY1sI,QAAQ,sCAAwC,EAC9D,OCvEO,SAA0BqJ,EAAMtK,GAC7C,OAAOwrI,GAAWlhI,EAAM,IAAIkxH,GAASpR,QAAQqiB,gBAAmBnxI,OAAO49C,OAAO,CAC5E0xF,QAAS,SAASzsI,EAAO+B,EAAK+sH,EAAM3G,GAClC,OAAIkV,GAASp+B,QAAU0sC,GAAMvsG,SAASp/B,IACpCwB,KAAKynI,OAAOlnI,EAAK/B,EAAMqN,SAAS,YACzB,GAGF86G,EAAQukB,eAAezsI,MAAMuB,KAAM3B,UAC5C,GACCgC,GACL,CD4DeiuI,CAAiB3jI,EAAM3K,KAAKuuI,gBAAgB1iI,WAGrD,IAAKm6H,EAAamE,GAAMnE,WAAWr7H,KAAUqjI,EAAY1sI,QAAQ,wBAA0B,EAAG,CAC5F,MAAMktI,EAAYxuI,KAAKyuI,KAAOzuI,KAAKyuI,IAAIjH,SAEvC,OAAOqE,GACL7F,EAAa,CAAC,UAAWr7H,GAAQA,EACjC6jI,GAAa,IAAIA,EACjBxuI,KAAKuuI,eAET,CACF,CAEA,OAAIJ,GAAmBD,GACrBH,EAAQM,eAAe,oBAAoB,GAxEjD,SAAyBK,EAAUC,EAAQlgI,GACzC,GAAI07H,GAAMnjG,SAAS0nG,GACjB,IAEE,OADCC,GAAUx8G,KAAK/lB,OAAOsiI,GAChBvE,GAAMj7F,KAAKw/F,EACpB,CAAE,MAAOnvI,IACP,GAAe,gBAAXA,GAAEhC,KACJ,MAAMgC,EAEV,CAGF,OAAQkP,GAAW0jB,KAAKpmB,WAAW2iI,EACrC,CA4DaE,CAAgBjkI,IAGlBA,CACT,GAEAkkI,kBAAmB,CAAC,SAA2BlkI,GAC7C,MAAMgjI,EAAe3tI,KAAK2tI,cAAgBD,GAASC,aAC7ChB,EAAoBgB,GAAgBA,EAAahB,kBACjDmC,EAAsC,SAAtB9uI,KAAK+uI,aAE3B,GAAI5E,GAAM/D,WAAWz7H,IAASw/H,GAAMjE,iBAAiBv7H,GACnD,OAAOA,EAGT,GAAIA,GAAQw/H,GAAMnjG,SAASr8B,KAAWgiI,IAAsB3sI,KAAK+uI,cAAiBD,GAAgB,CAChG,MACME,IADoBrB,GAAgBA,EAAajB,oBACPoC,EAEhD,IACE,OAAO38G,KAAK/lB,MAAMzB,EACpB,CAAE,MAAOpL,IACP,GAAIyvI,EAAmB,CACrB,GAAe,gBAAXzvI,GAAEhC,KACJ,MAAMysI,GAAW1mD,KAAK/jF,GAAGyqI,GAAWiF,iBAAkBjvI,KAAM,KAAMA,KAAKiqI,UAEzE,MAAM1qI,EACR,CACF,CACF,CAEA,OAAOoL,CACT,GAMA8gH,QAAS,EAETyjB,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBZ,IAAK,CACHjH,SAAU3L,GAASpR,QAAQ+c,SAC3B4D,KAAMvP,GAASpR,QAAQ2gB,MAGzBkE,eAAgB,SAAwBxb,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEAia,QAAS,CACPwB,OAAQ,CACN,OAAU,oCACV,oBAAgBvwI,KAKtBmrI,GAAMrpI,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAWkyF,IAChE06C,GAASK,QAAQ/6C,GAAU,CAAC,CAAC,IAG/B,YE1JMw8C,GAAoBrF,GAAMjB,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtBuG,GAAapnH,OAAO,aAE1B,SAASqnH,GAAgBtM,GACvB,OAAOA,GAAU5iI,OAAO4iI,GAAQl0F,OAAOuI,aACzC,CAEA,SAASk4F,GAAenxI,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGF2rI,GAAMxhH,QAAQnqB,GAASA,EAAMkT,IAAIi+H,IAAkBnvI,OAAOhC,EACnE,CAgBA,SAASoxI,GAAiBx/F,EAAS5xC,EAAO4kI,EAAQl6G,EAAQ2mH,GACxD,OAAI1F,GAAMx8G,WAAWzE,GACZA,EAAOlrB,KAAKgC,KAAMxB,EAAO4kI,IAG9ByM,IACFrxI,EAAQ4kI,GAGL+G,GAAMnjG,SAASxoC,GAEhB2rI,GAAMnjG,SAAS9d,IACiB,IAA3B1qB,EAAM8C,QAAQ4nB,GAGnBihH,GAAMxD,SAASz9G,GACVA,EAAO+L,KAAKz2B,QADrB,OANA,EASF,CAsBA,MAAMsxI,GACJ/hH,WAAAA,CAAYggH,GACVA,GAAW/tI,KAAK28B,IAAIoxG,EACtB,CAEApxG,GAAAA,CAAIymG,EAAQ2M,EAAgBC,GAC1B,MAAM3iI,EAAOrN,KAEb,SAASiwI,EAAUC,EAAQC,EAASC,GAClC,MAAMC,EAAUX,GAAgBS,GAEhC,IAAKE,EACH,MAAM,IAAItiI,MAAM,0CAGlB,MAAMxN,EAAM4pI,GAAM5D,QAAQl5H,EAAMgjI,KAE5B9vI,QAAqBvB,IAAdqO,EAAK9M,KAAmC,IAAb6vI,QAAmCpxI,IAAboxI,IAAwC,IAAd/iI,EAAK9M,MACzF8M,EAAK9M,GAAO4vI,GAAWR,GAAeO,GAE1C,CAEA,MAAMI,EAAaA,CAACvC,EAASqC,IAC3BjG,GAAMrpI,QAAQitI,GAAS,CAACmC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,KAEzE,GAAIjG,GAAMvE,cAAcxC,IAAWA,aAAkBpjI,KAAK+tB,YACxDuiH,EAAWlN,EAAQ2M,QACd,GAAG5F,GAAMnjG,SAASo8F,KAAYA,EAASA,EAAOl0F,UArEtB,iCAAiCja,KAqEmBmuG,EArEVl0F,QAsEvEohG,ED1EN,CAAeC,IACb,MAAM51C,EAAS,CAAC,EAChB,IAAIp6F,EACAkoB,EACA1lB,EAsBJ,OApBAwtI,GAAcA,EAAW/4F,MAAM,MAAM12C,SAAQ,SAAgBovC,GAC3DntC,EAAImtC,EAAK5uC,QAAQ,KACjBf,EAAM2vC,EAAKJ,UAAU,EAAG/sC,GAAGmsC,OAAOuI,cAClChvB,EAAMynB,EAAKJ,UAAU/sC,EAAI,GAAGmsC,QAEvB3uC,GAAQo6F,EAAOp6F,IAAQivI,GAAkBjvI,KAIlC,eAARA,EACEo6F,EAAOp6F,GACTo6F,EAAOp6F,GAAKY,KAAKsnB,GAEjBkyE,EAAOp6F,GAAO,CAACkoB,GAGjBkyE,EAAOp6F,GAAOo6F,EAAOp6F,GAAOo6F,EAAOp6F,GAAO,KAAOkoB,EAAMA,EAE3D,IAEOkyE,CACR,EC+CgB61C,CAAapN,GAAS2M,QAC5B,GAAI5F,GAAM9D,UAAUjD,GACzB,IAAK,MAAO7iI,EAAK/B,KAAU4kI,EAAO1kG,UAChCuxG,EAAUzxI,EAAO+B,EAAKyvI,QAGd,MAAV5M,GAAkB6M,EAAUF,EAAgB3M,EAAQ4M,GAGtD,OAAOhwI,IACT,CAEAV,GAAAA,CAAI8jI,EAAQuL,GAGV,GAFAvL,EAASsM,GAAgBtM,GAEb,CACV,MAAM7iI,EAAM4pI,GAAM5D,QAAQvmI,KAAMojI,GAEhC,GAAI7iI,EAAK,CACP,MAAM/B,EAAQwB,KAAKO,GAEnB,IAAKouI,EACH,OAAOnwI,EAGT,IAAe,IAAXmwI,EACF,OA5GV,SAAqBh/G,GACnB,MAAM8gH,EAAS90I,OAAOyM,OAAO,MACvBsoI,EAAW,mCACjB,IAAIviH,EAEJ,KAAQA,EAAQuiH,EAAS98G,KAAKjE,IAC5B8gH,EAAOtiH,EAAM,IAAMA,EAAM,GAG3B,OAAOsiH,CACT,CAkGiBE,CAAYnyI,GAGrB,GAAI2rI,GAAMx8G,WAAWghH,GACnB,OAAOA,EAAO3wI,KAAKgC,KAAMxB,EAAO+B,GAGlC,GAAI4pI,GAAMxD,SAASgI,GACjB,OAAOA,EAAO/6G,KAAKp1B,GAGrB,MAAM,IAAIitB,UAAU,yCACtB,CACF,CACF,CAEAwX,GAAAA,CAAImgG,EAAQpR,GAGV,GAFAoR,EAASsM,GAAgBtM,GAEb,CACV,MAAM7iI,EAAM4pI,GAAM5D,QAAQvmI,KAAMojI,GAEhC,SAAU7iI,QAAqBvB,IAAdgB,KAAKO,IAAwByxH,IAAW4d,GAAiB5vI,EAAMA,KAAKO,GAAMA,EAAKyxH,GAClG,CAEA,OAAO,CACT,CAEAjqE,OAAOq7E,EAAQpR,GACb,MAAM3kH,EAAOrN,KACb,IAAI4wI,GAAU,EAEd,SAASC,EAAaV,GAGpB,GAFAA,EAAUT,GAAgBS,GAEb,CACX,MAAM5vI,EAAM4pI,GAAM5D,QAAQl5H,EAAM8iI,IAE5B5vI,GAASyxH,IAAW4d,GAAiBviI,EAAMA,EAAK9M,GAAMA,EAAKyxH,YACtD3kH,EAAK9M,GAEZqwI,GAAU,EAEd,CACF,CAQA,OANIzG,GAAMxhH,QAAQy6G,GAChBA,EAAOtiI,QAAQ+vI,GAEfA,EAAazN,GAGRwN,CACT,CAEArjH,KAAAA,CAAMykG,GACJ,MAAMhpG,EAAOrtB,OAAOqtB,KAAKhpB,MACzB,IAAI+C,EAAIimB,EAAK1qB,OACTsyI,GAAU,EAEd,KAAO7tI,KAAK,CACV,MAAMxC,EAAMyoB,EAAKjmB,GACbivH,IAAW4d,GAAiB5vI,EAAMA,KAAKO,GAAMA,EAAKyxH,GAAS,YACtDhyH,KAAKO,GACZqwI,GAAU,EAEd,CAEA,OAAOA,CACT,CAEAE,SAAAA,CAAU7kI,GACR,MAAMoB,EAAOrN,KACP+tI,EAAU,CAAC,EAsBjB,OApBA5D,GAAMrpI,QAAQd,MAAM,CAACxB,EAAO4kI,KAC1B,MAAM7iI,EAAM4pI,GAAM5D,QAAQwH,EAAS3K,GAEnC,GAAI7iI,EAGF,OAFA8M,EAAK9M,GAAOovI,GAAenxI,eACpB6O,EAAK+1H,GAId,MAAM2N,EAAa9kI,EA9JzB,SAAsBm3H,GACpB,OAAOA,EAAOl0F,OACXuI,cAAchkB,QAAQ,mBAAmB,CAAC6kC,EAAGW,EAAMtpC,IAC3CspC,EAAKrhB,cAAgBjoB,GAElC,CAyJkCqhH,CAAa5N,GAAU5iI,OAAO4iI,GAAQl0F,OAE9D6hG,IAAe3N,UACV/1H,EAAK+1H,GAGd/1H,EAAK0jI,GAAcpB,GAAenxI,GAElCuvI,EAAQgD,IAAc,CAAI,IAGrB/wI,IACT,CAEAiL,MAAAA,GAAmB,QAAAy2E,EAAArjF,UAAAC,OAAT2yI,EAAO,IAAAvoH,MAAAg5D,GAAA79E,EAAA,EAAAA,EAAA69E,EAAA79E,IAAPotI,EAAOptI,GAAAxF,UAAAwF,GACf,OAAO7D,KAAK+tB,YAAY9iB,OAAOjL,QAASixI,EAC1C,CAEA7G,MAAAA,CAAO8G,GACL,MAAMljI,EAAMrS,OAAOyM,OAAO,MAM1B,OAJA+hI,GAAMrpI,QAAQd,MAAM,CAACxB,EAAO4kI,KACjB,MAAT5kI,IAA2B,IAAVA,IAAoBwP,EAAIo1H,GAAU8N,GAAa/G,GAAMxhH,QAAQnqB,GAASA,EAAM8Q,KAAK,MAAQ9Q,EAAM,IAG3GwP,CACT,CAEA,CAACqa,OAAOgJ,YACN,OAAO11B,OAAO+iC,QAAQ1+B,KAAKoqI,UAAU/hH,OAAOgJ,WAC9C,CAEAxlB,QAAAA,GACE,OAAOlQ,OAAO+iC,QAAQ1+B,KAAKoqI,UAAU14H,KAAI8vE,IAAA,IAAE4hD,EAAQ5kI,GAAMgjF,EAAA,OAAK4hD,EAAS,KAAO5kI,CAAK,IAAE8Q,KAAK,KAC5F,CAEA,IAAK+Y,OAAOoV,eACV,MAAO,cACT,CAEA,WAAO6lD,CAAKgiD,GACV,OAAOA,aAAiBtlI,KAAOslI,EAAQ,IAAItlI,KAAKslI,EAClD,CAEA,aAAOr6H,CAAOmpB,GACZ,MAAM+8G,EAAW,IAAInxI,KAAKo0B,GAAO,QAAA6+D,EAAA50F,UAAAC,OADX2yI,EAAO,IAAAvoH,MAAAuqE,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAP+9C,EAAO/9C,EAAA,GAAA70F,UAAA60F,GAK7B,OAFA+9C,EAAQnwI,SAASf,GAAWoxI,EAASx0G,IAAI58B,KAElCoxI,CACT,CAEA,eAAOC,CAAShO,GACd,MAIMiO,GAJYrxI,KAAKyvI,IAAezvI,KAAKyvI,IAAc,CACvD4B,UAAW,CAAC,IAGcA,UACtBnxI,EAAYF,KAAKE,UAEvB,SAASoxI,EAAenB,GACtB,MAAME,EAAUX,GAAgBS,GAE3BkB,EAAUhB,MAtNrB,SAAwBriI,EAAKo1H,GAC3B,MAAMmO,EAAepH,GAAMd,YAAY,IAAMjG,GAE7C,CAAC,MAAO,MAAO,OAAOtiI,SAAQ0wI,IAC5B71I,OAAOwD,eAAe6O,EAAKwjI,EAAaD,EAAc,CACpD/yI,MAAO,SAASizI,EAAMC,EAAMC,GAC1B,OAAO3xI,KAAKwxI,GAAYxzI,KAAKgC,KAAMojI,EAAQqO,EAAMC,EAAMC,EACzD,EACA9mH,cAAc,GACd,GAEN,CA4MQ+mH,CAAe1xI,EAAWiwI,GAC1BkB,EAAUhB,IAAW,EAEzB,CAIA,OAFAlG,GAAMxhH,QAAQy6G,GAAUA,EAAOtiI,QAAQwwI,GAAkBA,EAAelO,GAEjEpjI,IACT,EAGF8vI,GAAasB,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAGpGjH,GAAMvD,kBAAkBkJ,GAAa5vI,WAAW,CAAAmiF,EAAU9hF,KAAQ,IAAjB,MAAC/B,GAAM6jF,EAClDwvD,EAAStxI,EAAI,GAAGq3C,cAAgBr3C,EAAIV,MAAM,GAC9C,MAAO,CACLP,IAAKA,IAAMd,EACXm+B,GAAAA,CAAIm1G,GACF9xI,KAAK6xI,GAAUC,CACjB,EACD,IAGH3H,GAAMlB,cAAc6G,IAEpB,YC/Re,SAASiC,GAAcC,EAAK/H,GACzC,MAAMngD,EAAS9pF,MAAQ0tI,GACjBt9F,EAAU65F,GAAYngD,EACtBikD,EAAU+B,GAAaxsD,KAAKlzC,EAAQ29F,SAC1C,IAAIpjI,EAAOylC,EAAQzlC,KAQnB,OANAw/H,GAAMrpI,QAAQkxI,GAAK,SAAmB5mH,GACpCzgB,EAAOygB,EAAGptB,KAAK8rF,EAAQn/E,EAAMojI,EAAQ+C,YAAa7G,EAAWA,EAASnW,YAAS90H,EACjF,IAEA+uI,EAAQ+C,YAEDnmI,CACT,CCzBe,SAASsnI,GAASzzI,GAC/B,SAAUA,IAASA,EAAM0zI,WAC3B,CCUA,SAASC,GAAc5oI,EAASugF,EAAQ6I,GAEtCq3C,GAAWhsI,KAAKgC,KAAiB,MAAXuJ,EAAkB,WAAaA,EAASygI,GAAWoI,aAActoD,EAAQ6I,GAC/F3yF,KAAKzC,KAAO,eACd,CAEA4sI,GAAMhC,SAASgK,GAAenI,GAAY,CACxCkI,YAAY,IAGd,YCXe,SAASG,GAAOtuG,EAAS0uD,EAAQw3C,GAC9C,MAAMqF,EAAiBrF,EAASngD,OAAOwlD,eAClCrF,EAASnW,QAAWwb,IAAkBA,EAAerF,EAASnW,QAGjErhC,EAAO,IAAIu3C,GACT,mCAAqCC,EAASnW,OAC9C,CAACkW,GAAWsI,gBAAiBtI,GAAWiF,kBAAkB9hI,KAAKwJ,MAAMszH,EAASnW,OAAS,KAAO,GAC9FmW,EAASngD,OACTmgD,EAASt3C,QACTs3C,IAPFlmG,EAAQkmG,EAUZ,CC4BA,SA9CA,SAAqBsI,EAAcxhI,GACjCwhI,EAAeA,GAAgB,GAC/B,MAAM9hG,EAAQ,IAAI/nB,MAAM6pH,GAClBC,EAAa,IAAI9pH,MAAM6pH,GAC7B,IAEIE,EAFA97G,EAAO,EACPw2C,EAAO,EAKX,OAFAp8D,OAAc/R,IAAR+R,EAAoBA,EAAM,IAEzB,SAAc2hI,GACnB,MAAMx6G,EAAMtG,KAAKsG,MAEXy6G,EAAYH,EAAWrlE,GAExBslE,IACHA,EAAgBv6G,GAGlBuY,EAAM9Z,GAAQ+7G,EACdF,EAAW77G,GAAQuB,EAEnB,IAAIn1B,EAAIoqE,EACJylE,EAAa,EAEjB,KAAO7vI,IAAM4zB,GACXi8G,GAAcniG,EAAM1tC,KACpBA,GAAQwvI,EASV,GANA57G,GAAQA,EAAO,GAAK47G,EAEhB57G,IAASw2C,IACXA,GAAQA,EAAO,GAAKolE,GAGlBr6G,EAAMu6G,EAAgB1hI,EACxB,OAGF,MAAM8hI,EAASF,GAAaz6G,EAAMy6G,EAElC,OAAOE,EAAS1lI,KAAKhI,MAAmB,IAAbytI,EAAoBC,QAAU7zI,CAC3D,CACF,EClBA,SA1BA,SAAkBosB,EAAI0nH,GACpB,IAAIC,EAAY,EAChB,MAAMC,EAAY,IAAOF,EACzB,IAAI71D,EAAQ,KACZ,OAAO,WACL,MAAMg2D,GAAiB,IAATjzI,KAERk4B,EAAMtG,KAAKsG,MACjB,GAAI+6G,GAAS/6G,EAAM66G,EAAYC,EAM7B,OALI/1D,IACFjjD,aAAaijD,GACbA,EAAQ,MAEV81D,EAAY76G,EACL9M,EAAG3sB,MAAM,KAAMJ,WAEnB4+E,IACHA,EAAQvjD,YAAW,KACjBujD,EAAQ,KACR81D,EAAYnhH,KAAKsG,MACV9M,EAAG3sB,MAAM,KAAMJ,aACrB20I,GAAa96G,EAAM66G,IAE1B,CACF,EC7BA,YAAgB9xI,EAAUiyI,GAA+B,IAAbJ,EAAIz0I,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,EAC7C80I,EAAgB,EACpB,MAAMC,EAAeC,GAAY,GAAI,KAErC,OAAO3yB,IAASnhH,IACd,MAAMulF,EAASvlF,EAAEulF,OACXwuD,EAAQ/zI,EAAEg0I,iBAAmBh0I,EAAE+zI,WAAQt0I,EACvCw0I,EAAgB1uD,EAASquD,EACzBM,EAAOL,EAAaI,GAG1BL,EAAgBruD,EAEhB,MAAMn6E,EAAO,CACXm6E,SACAwuD,QACAhvD,SAAUgvD,EAASxuD,EAASwuD,OAASt0I,EACrCyxC,MAAO+iG,EACPC,KAAMA,QAAcz0I,EACpB00I,UAAWD,GAAQH,GAVLxuD,GAAUwuD,GAUeA,EAAQxuD,GAAU2uD,OAAOz0I,EAChE6B,MAAOtB,EACPg0I,iBAA2B,MAATD,GAGpB3oI,EAAKuoI,EAAmB,WAAa,WAAY,EAEjDjyI,EAAS0J,EAAK,GACbmoI,EACJ,EC1BD,GAAejX,GAASoR,sBAIrB,WACC,MAAM0G,EAAO,kBAAkB1+G,KAAKq+D,UAAUC,WACxCqgD,EAAiBh1I,SAASC,cAAc,KAC9C,IAAIg1I,EAQJ,SAASC,EAAW5hF,GAClB,IAAIoC,EAAOpC,EAWX,OATIyhF,IAEFC,EAAe18G,aAAa,OAAQo9B,GACpCA,EAAOs/E,EAAet/E,MAGxBs/E,EAAe18G,aAAa,OAAQo9B,GAG7B,CACLA,KAAMs/E,EAAet/E,KACrBgmE,SAAUsZ,EAAetZ,SAAWsZ,EAAetZ,SAAS7mG,QAAQ,KAAM,IAAM,GAChFsgH,KAAMH,EAAeG,KACrB/hF,OAAQ4hF,EAAe5hF,OAAS4hF,EAAe5hF,OAAOv+B,QAAQ,MAAO,IAAM,GAC3E5c,KAAM+8H,EAAe/8H,KAAO+8H,EAAe/8H,KAAK4c,QAAQ,KAAM,IAAM,GACpEugH,SAAUJ,EAAeI,SACzBC,KAAML,EAAeK,KACrB9mB,SAAiD,MAAtCymB,EAAezmB,SAASr7G,OAAO,GACxC8hI,EAAezmB,SACf,IAAMymB,EAAezmB,SAE3B,CAUA,OARA0mB,EAAYC,EAAWn1I,OAAO0pC,SAASisB,MAQhC,SAAyB4/E,GAC9B,MAAMv5C,EAAUwvC,GAAMnjG,SAASktG,GAAeJ,EAAWI,GAAcA,EACvE,OAAQv5C,EAAO2/B,WAAauZ,EAAUvZ,UAClC3/B,EAAOo5C,OAASF,EAAUE,IAChC,CACF,CAlDC,GAsDQ,WACL,OAAO,CACT,EC9DJ,GAAelY,GAASoR,sBAGtB,CACE9gG,KAAAA,CAAM5uC,EAAMiB,EAAO21I,EAAS7mB,EAAM8mB,EAAQC,GACxC,MAAMC,EAAS,CAAC/2I,EAAO,IAAM8S,mBAAmB7R,IAEhD2rI,GAAMxE,SAASwO,IAAYG,EAAOnzI,KAAK,WAAa,IAAIywB,KAAKuiH,GAASI,eAEtEpK,GAAMnjG,SAASsmF,IAASgnB,EAAOnzI,KAAK,QAAUmsH,GAE9C6c,GAAMnjG,SAASotG,IAAWE,EAAOnzI,KAAK,UAAYizI,IAEvC,IAAXC,GAAmBC,EAAOnzI,KAAK,UAE/BvC,SAAS01I,OAASA,EAAOhlI,KAAK,KAChC,EAEA0hC,IAAAA,CAAKzzC,GACH,MAAM4wB,EAAQvvB,SAAS01I,OAAOnmH,MAAM,IAAIuE,OAAO,aAAen1B,EAAO,cACrE,OAAQ4wB,EAAQle,mBAAmBke,EAAM,IAAM,IACjD,EAEAgxD,MAAAA,CAAO5hF,GACLyC,KAAKmsC,MAAM5uC,EAAM,GAAIq0B,KAAKsG,MAAQ,MACpC,GAMF,CACEiU,KAAAA,GAAS,EACT6E,KAAIA,IACK,KAETmuC,MAAAA,GAAU,GCxBC,SAASq1D,GAAcC,EAASC,GAC7C,OAAID,ICPS,SAAuBviF,GAIpC,MAAO,8BAA8Bj9B,KAAKi9B,EAC5C,CDEkByiF,CAAcD,GENjB,SAAqBD,EAASG,GAC3C,OAAOA,EACHH,EAAQhhH,QAAQ,SAAU,IAAM,IAAMmhH,EAAYnhH,QAAQ,OAAQ,IAClEghH,CACN,CFGWI,CAAYJ,EAASC,GAEvBA,CACT,CGfA,MAAMI,GAAmBxP,GAAUA,aAAiBwK,GAAYhoD,GAAA,GAAQw9C,GAAUA,EAWnE,SAASyP,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAMnrD,EAAS,CAAC,EAEhB,SAASorD,EAAen1I,EAAQ8oB,EAAQk/G,GACtC,OAAIoC,GAAMvE,cAAc7lI,IAAWoqI,GAAMvE,cAAc/8G,GAC9CshH,GAAMrC,MAAM9pI,KAAK,CAAC+pI,YAAWhoI,EAAQ8oB,GACnCshH,GAAMvE,cAAc/8G,GACtBshH,GAAMrC,MAAM,CAAC,EAAGj/G,GACdshH,GAAMxhH,QAAQE,GAChBA,EAAOhpB,QAETgpB,CACT,CAGA,SAASssH,EAAoBlvI,EAAGC,EAAG6hI,GACjC,OAAKoC,GAAM1E,YAAYv/H,GAEXikI,GAAM1E,YAAYx/H,QAAvB,EACEivI,OAAel2I,EAAWiH,EAAG8hI,GAF7BmN,EAAejvI,EAAGC,EAAG6hI,EAIhC,CAGA,SAASqN,EAAiBnvI,EAAGC,GAC3B,IAAKikI,GAAM1E,YAAYv/H,GACrB,OAAOgvI,OAAel2I,EAAWkH,EAErC,CAGA,SAASmvI,EAAiBpvI,EAAGC,GAC3B,OAAKikI,GAAM1E,YAAYv/H,GAEXikI,GAAM1E,YAAYx/H,QAAvB,EACEivI,OAAel2I,EAAWiH,GAF1BivI,OAAel2I,EAAWkH,EAIrC,CAGA,SAASovI,EAAgBrvI,EAAGC,EAAG8hG,GAC7B,OAAIA,KAAQitC,EACHC,EAAejvI,EAAGC,GAChB8hG,KAAQgtC,EACVE,OAAel2I,EAAWiH,QAD5B,CAGT,CAEA,MAAMsvI,EAAW,CACfrjF,IAAKkjF,EACLpiD,OAAQoiD,EACRzqI,KAAMyqI,EACNX,QAASY,EACTvH,iBAAkBuH,EAClBxG,kBAAmBwG,EACnBG,iBAAkBH,EAClB5pB,QAAS4pB,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACfxH,QAASwH,EACTtG,aAAcsG,EACdnG,eAAgBmG,EAChBlG,eAAgBkG,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZjG,iBAAkBiG,EAClBhG,cAAegG,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,iBAAkBhB,EAClB/F,eAAgBgG,EAChBvH,QAASA,CAAC9nI,EAAGC,IAAMivI,EAAoBL,GAAgB7uI,GAAI6uI,GAAgB5uI,IAAI,IASjF,OANAikI,GAAMrpI,QAAQnF,OAAOqtB,KAAKrtB,OAAO49C,OAAO,CAAC,EAAGy7F,EAASC,KAAW,SAA4BjtC,GAC1F,MAAM8/B,EAAQyN,EAASvtC,IAASmtC,EAC1BmB,EAAcxO,EAAMkN,EAAQhtC,GAAOitC,EAAQjtC,GAAOA,GACvDmiC,GAAM1E,YAAY6Q,IAAgBxO,IAAUwN,IAAqBxrD,EAAOke,GAAQsuC,EACnF,IAEOxsD,CACT,CChGA,SAAgBA,IACd,MAAMysD,EAAYxB,GAAY,CAAC,EAAGjrD,GAElC,IAaIkkD,GAbA,KAACrjI,EAAI,cAAEgrI,EAAa,eAAExG,EAAc,eAAED,EAAc,QAAEnB,EAAO,KAAEyI,GAAQD,EAe3E,GAbAA,EAAUxI,QAAUA,EAAU+B,GAAaxsD,KAAKyqD,GAEhDwI,EAAUrkF,IAAM65E,GAASyI,GAAc+B,EAAU9B,QAAS8B,EAAUrkF,KAAM43B,EAAO2E,OAAQ3E,EAAO0rD,kBAG5FgB,GACFzI,EAAQpxG,IAAI,gBAAiB,SAC3B85G,MAAMD,EAAKE,UAAY,IAAM,KAAOF,EAAK1pI,SAAWsD,SAASC,mBAAmBmmI,EAAK1pI,WAAa,MAMlGq9H,GAAM7C,WAAW38H,GACnB,GAAIkxH,GAASoR,uBAAyBpR,GAASqR,+BAC7Ca,EAAQM,oBAAervI,QAClB,IAAiD,KAA5CgvI,EAAcD,EAAQE,kBAA6B,CAE7D,MAAOp3G,KAAS45G,GAAUzC,EAAcA,EAAYx2F,MAAM,KAAK9lC,KAAIm5H,GAASA,EAAM37F,SAAQhmB,OAAOwI,SAAW,GAC5Gq8G,EAAQM,eAAe,CAACx3G,GAAQ,yBAA0B45G,GAAQnhI,KAAK,MACzE,CAOF,GAAIusH,GAASoR,wBACX0I,GAAiBxL,GAAMx8G,WAAWgoH,KAAmBA,EAAgBA,EAAcY,IAE/EZ,IAAoC,IAAlBA,GAA2BgB,GAAgBJ,EAAUrkF,MAAO,CAEhF,MAAM0kF,EAAYzH,GAAkBD,GAAkB2H,GAAQ7lG,KAAKk+F,GAE/D0H,GACF7I,EAAQpxG,IAAIwyG,EAAgByH,EAEhC,CAGF,OAAOL,CACR,EC1CD,GAFwD,qBAAnBO,gBAEG,SAAUhtD,GAChD,OAAO,IAAIv3D,SAAQ,SAA4BwR,EAAS0uD,GACtD,MAAMskD,EAAUC,GAAcltD,GAC9B,IAAImtD,EAAcF,EAAQpsI,KAC1B,MAAMusI,EAAiBpH,GAAaxsD,KAAKyzD,EAAQhJ,SAAS+C,YAC1D,IACIqG,GADA,aAACpI,GAAgBgI,EAErB,SAAS13E,IACH03E,EAAQZ,aACVY,EAAQZ,YAAYiB,YAAYD,GAG9BJ,EAAQM,QACVN,EAAQM,OAAOn4I,oBAAoB,QAASi4I,EAEhD,CAEA,IAAIxkD,EAAU,IAAImkD,eAOlB,SAASQ,IACP,IAAK3kD,EACH,OAGF,MAAM4kD,EAAkBzH,GAAaxsD,KACnC,0BAA2BqP,GAAWA,EAAQ6kD,yBAahDnF,IAAO,SAAkB7zI,GACvBulC,EAAQvlC,GACR6gE,GACF,IAAG,SAAiB5xD,GAClBglF,EAAOhlF,GACP4xD,GACF,GAfiB,CACf10D,KAHoBokI,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxCp8C,EAAQs3C,SAA/Bt3C,EAAQ8kD,aAGR3jB,OAAQnhC,EAAQmhC,OAChBC,WAAYphC,EAAQohC,WACpBga,QAASwJ,EACTztD,SACA6I,YAYFA,EAAU,IACZ,CAlCAA,EAAQ+kD,KAAKX,EAAQ/jD,OAAOp7C,cAAem/F,EAAQ7kF,KAAK,GAGxDygC,EAAQ84B,QAAUsrB,EAAQtrB,QAiCtB,cAAe94B,EAEjBA,EAAQ2kD,UAAYA,EAGpB3kD,EAAQl8D,mBAAqB,WACtBk8D,GAAkC,IAAvBA,EAAQj8D,aAQD,IAAnBi8D,EAAQmhC,QAAkBnhC,EAAQglD,aAAwD,IAAzChlD,EAAQglD,YAAYr2I,QAAQ,WAKjFo4B,WAAW49G,EACb,EAIF3kD,EAAQilD,QAAU,WACXjlD,IAILF,EAAO,IAAIu3C,GAAW,kBAAmBA,GAAW6N,aAAcd,EAASpkD,IAG3EA,EAAU,KACZ,EAGAA,EAAQr8D,QAAU,WAGhBm8D,EAAO,IAAIu3C,GAAW,gBAAiBA,GAAW8N,YAAaf,EAASpkD,IAGxEA,EAAU,IACZ,EAGAA,EAAQolD,UAAY,WAClB,IAAIC,EAAsBjB,EAAQtrB,QAAU,cAAgBsrB,EAAQtrB,QAAU,cAAgB,mBAC9F,MAAMkiB,EAAeoJ,EAAQpJ,cAAgBC,GACzCmJ,EAAQiB,sBACVA,EAAsBjB,EAAQiB,qBAEhCvlD,EAAO,IAAIu3C,GACTgO,EACArK,EAAaf,oBAAsB5C,GAAWiO,UAAYjO,GAAW6N,aACrEd,EACApkD,IAGFA,EAAU,IACZ,OAGgB3zF,IAAhBi4I,GAA6BC,EAAe7I,eAAe,MAGvD,qBAAsB17C,GACxBw3C,GAAMrpI,QAAQo2I,EAAe9M,UAAU,SAA0B3hH,EAAKloB,GACpEoyF,EAAQulD,iBAAiB33I,EAAKkoB,EAChC,IAIG0hH,GAAM1E,YAAYsR,EAAQrB,mBAC7B/iD,EAAQ+iD,kBAAoBqB,EAAQrB,iBAIlC3G,GAAiC,SAAjBA,IAClBp8C,EAAQo8C,aAAegI,EAAQhI,cAIS,oBAA/BgI,EAAQlB,oBACjBljD,EAAQ1zF,iBAAiB,WAAYk5I,GAAqBpB,EAAQlB,oBAAoB,IAIhD,oBAA7BkB,EAAQnB,kBAAmCjjD,EAAQylD,QAC5DzlD,EAAQylD,OAAOn5I,iBAAiB,WAAYk5I,GAAqBpB,EAAQnB,oBAGvEmB,EAAQZ,aAAeY,EAAQM,UAGjCF,EAAap9G,IACN44D,IAGLF,GAAQ14D,GAAUA,EAAOlD,KAAO,IAAIs7G,GAAc,KAAMroD,EAAQ6I,GAAW54D,GAC3E44D,EAAQ0lD,QACR1lD,EAAU,KAAI,EAGhBokD,EAAQZ,aAAeY,EAAQZ,YAAYmC,UAAUnB,GACjDJ,EAAQM,SACVN,EAAQM,OAAOkB,QAAUpB,IAAeJ,EAAQM,OAAOp4I,iBAAiB,QAASk4I,KAIrF,MAAM7c,EChLK,SAAuBpoE,GACpC,MAAM/jC,EAAQ,4BAA4ByF,KAAKs+B,GAC/C,OAAO/jC,GAASA,EAAM,IAAM,EAC9B,CD6KqBqqH,CAAczB,EAAQ7kF,KAEnCooE,IAAsD,IAA1CuB,GAASkR,UAAUzrI,QAAQg5H,GACzC7nC,EAAO,IAAIu3C,GAAW,wBAA0B1P,EAAW,IAAK0P,GAAWsI,gBAAiBxoD,IAM9F6I,EAAQ8lD,KAAKxB,GAAe,KAC9B,GACF,EEhJA,GA1CuByB,CAACC,EAASltB,KAC/B,IAEI8sB,EAFAn0B,EAAa,IAAIw0B,gBAIrB,MAAMhB,EAAU,SAAU79G,GACxB,IAAKw+G,EAAS,CACZA,GAAU,EACVnB,IACA,MAAM3pI,EAAMssB,aAAkBhsB,MAAQgsB,EAAS/5B,KAAK64I,OACpDz0B,EAAWi0B,MAAM5qI,aAAeu8H,GAAav8H,EAAM,IAAI0kI,GAAc1kI,aAAeM,MAAQN,EAAIlE,QAAUkE,GAC5G,CACF,EAEA,IAAIwvE,EAAQwuC,GAAW/xF,YAAW,KAChCk+G,EAAQ,IAAI5N,GAAW,WAAD/+H,OAAYwgH,EAAO,mBAAmBue,GAAWiO,WAAW,GACjFxsB,GAEH,MAAM2rB,EAAcA,KACduB,IACF17D,GAASjjD,aAAaijD,GACtBA,EAAQ,KACR07D,EAAQ73I,SAAQu2I,IACdA,IACCA,EAAOn4I,oBAAsBm4I,EAAOn4I,oBAAoB,QAAS04I,GAAWP,EAAOD,YAAYQ,GAAS,IAE3Ge,EAAU,KACZ,EAGFA,EAAQ73I,SAASu2I,GAAWA,GAAUA,EAAOp4I,kBAAoBo4I,EAAOp4I,iBAAiB,QAAS24I,KAElG,MAAM,OAACP,GAAUjzB,EAIjB,OAFAizB,EAAOD,YAAcA,EAEd,CAACC,EAAQ,KACdp6D,GAASjjD,aAAaijD,GACtBA,EAAQ,IAAI,EACZ,EC1CJ,SAAS67D,GAAev5I,EAAGuD,GACzB9C,KAAKmxC,EAAI5xC,EAAGS,KAAK+mC,EAAIjkC,CACvB,CCIA,SAASi2I,GAAex5I,GACtB,IAAIqrC,EAAGtnC,EACP,SAASy4E,EAAOnxC,EAAGtnC,GACjB,IACE,IAAI0T,EAAIzX,EAAEqrC,GAAGtnC,GACX8hC,EAAIpuB,EAAExY,MACN65D,EAAIjzB,aAAa,GACnB7S,QAAQwR,QAAQs0B,EAAIjzB,EAAE+L,EAAI/L,GAAG80B,MAAK,SAAU52D,GAC1C,GAAI+0D,EAAG,CACL,IAAIt1D,EAAI,WAAa6nC,EAAI,SAAW,OACpC,IAAKxF,EAAE2B,GAAKzjC,EAAE+7D,KAAM,OAAO0c,EAAOh5E,EAAGO,GACrCA,EAAI/D,EAAEwD,GAAGO,GAAG9E,KACd,CACA6zI,EAAOr7H,EAAEqoD,KAAO,SAAW,SAAU/7D,EACvC,IAAG,SAAU/D,GACXw8E,EAAO,QAASx8E,EAClB,GACF,CAAE,MAAOA,GACP8yI,EAAO,QAAS9yI,EAClB,CACF,CACA,SAAS8yI,EAAO9yI,EAAGyX,GACjB,OAAQzX,GACN,IAAK,SACHqrC,EAAE7G,QAAQ,CACRvlC,MAAOwY,EACPqoD,MAAM,IAER,MACF,IAAK,QACHz0B,EAAE6nD,OAAOz7E,GACT,MACF,QACE4zB,EAAE7G,QAAQ,CACRvlC,MAAOwY,EACPqoD,MAAM,KAGXz0B,EAAIA,EAAExgB,MAAQ2xD,EAAOnxC,EAAErqC,IAAKqqC,EAAE9M,KAAOx6B,EAAI,IAC5C,CACAtD,KAAKg5I,QAAU,SAAUz5I,EAAGyX,GAC1B,OAAO,IAAIub,SAAQ,SAAU6S,EAAGizB,GAC9B,IAAIt1D,EAAI,CACNxC,IAAKhB,EACLu+B,IAAK9mB,EACL+sB,QAASqB,EACTqtD,OAAQp6B,EACRjuC,KAAM,MAER9mB,EAAIA,EAAIA,EAAE8mB,KAAOrnB,GAAK6nC,EAAItnC,EAAIP,EAAGg5E,EAAOx8E,EAAGyX,GAC7C,GACF,EAAG,mBAAqBzX,EAAU,SAAMS,KAAa,YAAI,EAC3D,CCzDA,SAASi5I,GAAqB15I,GAC5B,OAAO,IAAI,GAAcA,EAAG,EAC9B,CCFA,SAAS25I,GAAwB51I,GAC/B,IAAI/D,EAAI,CAAC,EACPyX,GAAI,EACN,SAASmiI,EAAK55I,EAAGqrC,GACf,OAAO5zB,GAAI,EAAI4zB,EAAI,IAAIrY,SAAQ,SAAUvb,GACvCA,EAAE1T,EAAE/D,GAAGqrC,GACT,IAAI,CACFy0B,MAAM,EACN7gE,MAAO,IAAI,GAAcosC,EAAG,GAEhC,CACA,OAAOrrC,EAAE,oBAAsB8oB,QAAUA,OAAOgJ,UAAY,cAAgB,WAC1E,OAAOrxB,IACT,EAAGT,EAAE6qB,KAAO,SAAU9mB,GACpB,OAAO0T,GAAKA,GAAI,EAAI1T,GAAK61I,EAAK,OAAQ71I,EACxC,EAAG,mBAAqBA,EAAS,QAAM/D,EAAS,MAAI,SAAU+D,GAC5D,GAAI0T,EAAG,MAAMA,GAAI,EAAI1T,EACrB,OAAO61I,EAAK,QAAS71I,EACvB,GAAI,mBAAqBA,EAAU,SAAM/D,EAAU,OAAI,SAAU+D,GAC/D,OAAO0T,GAAKA,GAAI,EAAI1T,GAAK61I,EAAK,SAAU71I,EAC1C,GAAI/D,CACN,CCtBA,SAAS65I,GAAexuG,GACtB,IAAI5zB,EACF1T,EACA8hC,EACA7lC,EAAI,EACN,IAAK,oBAAsB8oB,SAAW/kB,EAAI+kB,OAAOgxH,cAAej0G,EAAI/c,OAAOgJ,UAAW9xB,KAAM,CAC1F,GAAI+D,GAAK,OAAS0T,EAAI4zB,EAAEtnC,IAAK,OAAO0T,EAAEhZ,KAAK4sC,GAC3C,GAAIxF,GAAK,OAASpuB,EAAI4zB,EAAExF,IAAK,OAAO,IAAIk0G,GAAsBtiI,EAAEhZ,KAAK4sC,IACrEtnC,EAAI,kBAAmB8hC,EAAI,YAC7B,CACA,MAAM,IAAI3Z,UAAU,+BACtB,CACA,SAAS6tH,GAAsB1uG,GAC7B,SAAS2uG,EAAkC3uG,GACzC,GAAIjvC,OAAOivC,KAAOA,EAAG,OAAOrY,QAAQkgE,OAAO,IAAIhnE,UAAUmf,EAAI,uBAC7D,IAAI5zB,EAAI4zB,EAAEy0B,KACV,OAAO9sC,QAAQwR,QAAQ6G,EAAEpsC,OAAO07D,MAAK,SAAUtvB,GAC7C,MAAO,CACLpsC,MAAOosC,EACPy0B,KAAMroD,EAEV,GACF,CACA,OAAOsiI,GAAwB,SAA+B1uG,GAC5D5qC,KAAK+W,EAAI6zB,EAAG5qC,KAAKgX,EAAI4zB,EAAExgB,IACzB,EAAGkvH,GAAsBp5I,UAAY,CACnC6W,EAAG,KACHC,EAAG,KACHoT,KAAM,WACJ,OAAOmvH,EAAkCv5I,KAAKgX,EAAEvY,MAAMuB,KAAK+W,EAAG1Y,WAChE,EACA,OAAU,SAAiBusC,GACzB,IAAI5zB,EAAIhX,KAAK+W,EAAU,OACvB,YAAO,IAAWC,EAAIub,QAAQwR,QAAQ,CACpCvlC,MAAOosC,EACPy0B,MAAM,IACHk6E,EAAkCviI,EAAEvY,MAAMuB,KAAK+W,EAAG1Y,WACzD,EACA,MAAS,SAAgBusC,GACvB,IAAI5zB,EAAIhX,KAAK+W,EAAU,OACvB,YAAO,IAAWC,EAAIub,QAAQkgE,OAAO7nD,GAAK2uG,EAAkCviI,EAAEvY,MAAMuB,KAAK+W,EAAG1Y,WAC9F,GACC,IAAIi7I,GAAsB1uG,EAC/B,CHgBAmuG,GAAe74I,UAAU,mBAAqBmoB,QAAUA,OAAOgxH,eAAiB,mBAAqB,WACnG,OAAOr5I,IACT,EAAG+4I,GAAe74I,UAAUkqB,KAAO,SAAU7qB,GAC3C,OAAOS,KAAKg5I,QAAQ,OAAQz5I,EAC9B,EAAGw5I,GAAe74I,UAAiB,MAAI,SAAUX,GAC/C,OAAOS,KAAKg5I,QAAQ,QAASz5I,EAC/B,EAAGw5I,GAAe74I,UAAkB,OAAI,SAAUX,GAChD,OAAOS,KAAKg5I,QAAQ,SAAUz5I,EAChC,EIjEO,MAAMi6I,GAAc,UAAWC,EAAOC,GAC3C,IAAI/lG,EAAM8lG,EAAM9kI,WAEhB,IAAK+kI,GAAa/lG,EAAM+lG,EAEtB,kBADMD,GAIR,IACI3kF,EADAjqB,EAAM,EAGV,KAAOA,EAAM8I,GACXmhB,EAAMjqB,EAAM6uG,QACND,EAAM55I,MAAMgrC,EAAKiqB,GACvBjqB,EAAMiqB,CAEV,EAEa6kF,GAAS,eAAAn4D,EJnBtB,SAA6BjiF,GAC3B,OAAO,WACL,OAAO,IAAIw5I,GAAex5I,EAAEd,MAAMuB,KAAM3B,WAC1C,CACF,CIesBu7I,EAAG,UAAiBC,EAAUH,EAAWzjG,GAAQ,IAAA6jG,EAAAC,GAAA,EAAAC,GAAA,MACrE,QAAkCC,EAAlCC,EAAAd,GAA0BS,GAAQE,IAAAE,QAAAhB,GAAAiB,EAAA9vH,SAAAi1C,KAAA06E,GAAA,EAAE,OAAnBN,EAAKQ,EAAAz7I,YACpB06I,GAAAE,GAAOI,GAAY3lI,YAAY8kE,OAAO8gE,GAASA,QAAKR,GAAUhjG,EAAOz1C,OAAOi5I,KAAUC,IACxF,CAAC,OAAAjsI,GAAAusI,GAAA,EAAAF,EAAArsI,CAAA,aAAAssI,GAAA,MAAAG,EAAA72F,eAAA41F,GAAAiB,EAAA72F,UAAA,YAAA22F,EAAA,MAAAF,CAAA,EACH,IAAC,gBAJqBK,EAAAC,EAAAC,GAAA,OAAA74D,EAAA/iF,MAAA,KAAAJ,UAAA,KAMTi8I,GAAcA,CAACC,EAAQb,EAAWz0D,EAAYu1D,EAAUvkG,KACnE,MAAM5kB,EAAWsoH,GAAUY,EAAQb,EAAWzjG,GAE9C,IAAIxF,EAAQ,EAEZ,OAAO,IAAIgqG,eAAe,CACxB5jH,KAAM,QAEN,UAAM6jH,CAAKt2B,GACT,MAAM,KAAC/kD,EAAI,MAAE7gE,SAAe6yB,EAASjH,OAErC,GAAIi1C,EAGF,OAFA+kD,EAAW6c,aACXuZ,IAIF,IAAI7mG,EAAMn1C,EAAMmW,WAChBswE,GAAcA,EAAWx0C,GAASkD,GAClCywE,EAAWu2B,QAAQ,IAAI1mI,WAAWzV,GACpC,EACAu7B,OAAO8+G,IACL2B,EAAS3B,GACFxnH,EAASgyB,WAEjB,CACDu3F,cAAe,GACf,EC3CEC,GAAyBA,CAACvH,EAAOloH,KACrC,MAAMmoH,EAA4B,MAATD,EACzB,OAAQxuD,GAAWprD,YAAW,IAAMtO,EAAG,CACrCmoH,mBACAD,QACAxuD,YACC,EAGCg2D,GAAoC,oBAAVC,OAA2C,oBAAZC,SAA8C,oBAAbC,SAC1FC,GAA4BJ,IAA8C,oBAAnBL,eAGvDU,GAAaL,KAA4C,oBAAhBM,aACzC3sI,GAA0C,IAAI2sI,YAAjCzrH,GAAQlhB,GAAQwnC,OAAOtmB,IACtCoH,SAAe,IAAI9iB,iBAAiB,IAAIgnI,SAAStrH,GAAK0rH,gBADtD,IAAE5sI,GAIN,MAAM6sI,GAAwBJ,IAA6B,MACzD,IAAIK,GAAiB,EAErB,MAAMC,EAAiB,IAAIR,QAAQnf,GAASxN,OAAQ,CAClDliG,KAAM,IAAIsuH,eACVznD,OAAQ,OACR,UAAIyoD,GAEF,OADAF,GAAiB,EACV,MACT,IACCxN,QAAQ9qG,IAAI,gBAEf,OAAOs4G,IAAmBC,CAC3B,EAb0D,GAiBrDE,GAAyBR,MAA+B,MAC5D,IACE,OAAO/Q,GAAMjE,iBAAiB,IAAI+U,SAAS,IAAI9uH,KACjD,CAAE,MAAM1e,GACN,CAEH,EAN6D,GAQxDkuI,GAAY,CAChBpB,OAAQmB,IAA0B,CAAEv0I,GAAQA,EAAIglB,OAG7B,IAAEhlB,GAAvB2zI,KAAuB3zI,GAOpB,IAAI8zI,SANL,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUn6I,SAAQ+1B,KAC3D8kH,GAAU9kH,KAAU8kH,GAAU9kH,GAAQszG,GAAMx8G,WAAWxmB,GAAI0vB,IAAU1vB,GAAQA,EAAI0vB,KAChF,CAACrN,EAAGsgE,KACF,MAAM,IAAIkgD,GAAW,kBAAD/+H,OAAmB4rB,EAAI,sBAAsBmzG,GAAW4R,gBAAiB9xD,EAAO,EACpG,KAIR,MA0BM+xD,GAAoB9kH,MAAOg3G,EAAS5hH,KACxC,MAAM7tB,EAAS6rI,GAAMX,eAAeuE,EAAQ+N,oBAE5C,OAAiB,MAAVx9I,EA7Bay4B,UACR,MAAR5K,EACK,EAGNg+G,GAAMpE,OAAO55G,GACPA,EAAKsQ,KAGX0tG,GAAMR,oBAAoBx9G,UACb,IAAI6uH,QAAQ7uH,GAAMkvH,eAAe1mI,WAG9Cw1H,GAAMzC,kBAAkBv7G,GAClBA,EAAKxX,YAGXw1H,GAAMlE,kBAAkB95G,KACzBA,GAAc,IAGbg+G,GAAMnjG,SAAS7a,UACFgvH,GAAWhvH,IAAOxX,gBADlC,GAQwBonI,CAAc5vH,GAAQ7tB,CAAM,EAGtD,GAAew8I,IAAoB,OAAC/jH,IAClC,IAAI,IACFm7B,EAAG,OACH8gC,EAAM,KACNroF,EAAI,OACJ0sI,EAAM,YACNlB,EAAW,QACX1qB,EAAO,mBACPoqB,EAAkB,iBAClBD,EAAgB,aAChB7G,EAAY,QACZhB,EAAO,gBACP2H,EAAkB,cAAa,aAC/BsG,GACEhF,GAAcltD,GAElBilD,EAAeA,GAAgBA,EAAe,IAAIt3F,cAAgB,OAElE,IAGIwkG,EAAUtpD,GAHTupD,EAAgBC,GAAgB9E,GAAUlB,GAAe1qB,EAC5DitB,GAAe,CAACrB,EAAQlB,GAAc1qB,GAAW,GAInD,MAAM+uB,EAAWA,MACdyB,GAAYviH,YAAW,KACtBwiH,GAAkBA,EAAe9E,aAAa,IAGhD6E,GAAW,CAAI,EAGjB,IAAIG,EAEJ,IACE,GACExG,GAAoB0F,IAAoC,QAAXtoD,GAA+B,SAAXA,GACG,KAAnEopD,QAA6BP,GAAkB9N,EAASpjI,IACzD,CACA,IAMI0xI,EANAC,EAAW,IAAItB,QAAQ9oF,EAAK,CAC9B8gC,OAAQ,OACR7mE,KAAMxhB,EACN8wI,OAAQ,SAKNtR,GAAM7C,WAAW38H,KAAU0xI,EAAoBC,EAASvO,QAAQzuI,IAAI,kBACtEyuI,EAAQM,eAAegO,GAGrBC,EAASnwH,OACXxhB,EAAO2vI,GAAYgC,EAASnwH,KA1GT,MA0GmC0uH,GACpDuB,EACAjE,GAAqBvC,IACpB,KAAMuF,IAEb,CAEKhR,GAAMnjG,SAAS0uG,KAClBA,EAAkBA,EAAkB,OAAS,QAG/C/iD,EAAU,IAAIqoD,QAAQ9oF,EAAG41B,GAAAA,GAAA,GACpBk0D,GAAY,IACf3E,OAAQ6E,EACRlpD,OAAQA,EAAOp7C,cACfm2F,QAASA,EAAQ+C,YAAY1G,SAC7Bj+G,KAAMxhB,EACN8wI,OAAQ,OACR/F,qBAGF,IAAIzL,QAAiB8Q,MAAMpoD,GAE3B,MAAM4pD,EAAmBb,KAA4C,WAAjB3M,GAA8C,aAAjBA,GAEjF,GAAI2M,KAA2B7F,GAAsB0G,GAAmB,CACtE,MAAMl8I,EAAU,CAAC,EAEjB,CAAC,SAAU,aAAc,WAAWS,SAAQknG,IAC1C3nG,EAAQ2nG,GAAQiiC,EAASjiC,EAAK,IAGhC,MAAMw0C,EAAwBrS,GAAMX,eAAeS,EAAS8D,QAAQzuI,IAAI,mBAExE2qI,EAAW,IAAIgR,SACbX,GAAYrQ,EAAS99G,KA7IF,MA6I4B0pH,GAAsBgF,GACnE2B,EACArE,GAAqBtC,GAAoB,IACxC0G,GAAoB/B,EAAUW,IACjC96I,EAEJ,CAEA0uI,EAAeA,GAAgB,OAE/B,IAAI0N,QAAqBd,GAAUxR,GAAM5D,QAAQoV,GAAW5M,IAAiB,QAAQ9E,EAAUngD,GAM/F,OAJCyyD,GAAoB/B,IAErB2B,GAAeA,UAEF,IAAI5pH,SAAQ,CAACwR,EAAS0uD,KACjC4/C,GAAOtuG,EAAS0uD,EAAQ,CACtB9nF,KAAM8xI,EACN1O,QAAS+B,GAAaxsD,KAAK2mD,EAAS8D,SACpCja,OAAQmW,EAASnW,OACjBC,WAAYkW,EAASlW,WACrBjqC,SACA6I,WACA,GAEN,CAAE,MAAOllF,GAGP,GAFA+sI,IAEI/sI,GAAoB,cAAbA,EAAIlQ,MAAwB,SAAS03B,KAAKxnB,EAAIlE,SACvD,MAAM5N,OAAO49C,OACX,IAAIywF,GAAW,gBAAiBA,GAAW8N,YAAahuD,EAAQ6I,GAChE,CACE83C,MAAOh9H,EAAIg9H,OAASh9H,IAK1B,MAAMu8H,GAAW1mD,KAAK71E,EAAKA,GAAOA,EAAI+lC,KAAMs2C,EAAQ6I,EACtD,CACD,GC1NK+pD,GAAgB,CACpBC,KCNF,KDOEC,IAAKC,GACL9B,MAAO+B,IAGT3S,GAAMrpI,QAAQ47I,IAAe,CAACtxH,EAAI5sB,KAChC,GAAI4sB,EAAI,CACN,IACEzvB,OAAOwD,eAAeisB,EAAI,OAAQ,CAAC5sB,SACrC,CAAE,MAAOe,IACP,CAEF5D,OAAOwD,eAAeisB,EAAI,cAAe,CAAC5sB,SAC5C,KAGF,MAAMu+I,GAAgBlE,GAAM,KAAA5tI,OAAU4tI,GAEhCmE,GAAoBnP,GAAY1D,GAAMx8G,WAAWkgH,IAAwB,OAAZA,IAAgC,IAAZA,EAEvF,GACeoP,IACXA,EAAW9S,GAAMxhH,QAAQs0H,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAAC3+I,GAAU2+I,EACjB,IAAIC,EACArP,EAEJ,MAAMsP,EAAkB,CAAC,EAEzB,IAAK,IAAIp6I,EAAI,EAAGA,EAAIzE,EAAQyE,IAAK,CAE/B,IAAI6rC,EAIJ,GALAsuG,EAAgBD,EAASl6I,GAGzB8qI,EAAUqP,GAELF,GAAiBE,KACpBrP,EAAU6O,IAAe9tG,EAAKpuC,OAAO08I,IAAgBzlG,oBAErCz4C,IAAZ6uI,GACF,MAAM,IAAI7D,GAAW,oBAAD/+H,OAAqB2jC,EAAE,MAI/C,GAAIi/F,EACF,MAGFsP,EAAgBvuG,GAAM,IAAM7rC,GAAK8qI,CACnC,CAEA,IAAKA,EAAS,CAEZ,MAAMuP,EAAUzhJ,OAAO+iC,QAAQy+G,GAC5BzrI,KAAI8vE,IAAA,IAAE5yC,EAAIvvB,GAAMmiE,EAAA,MAAK,WAAAv2E,OAAW2jC,EAAE,OACtB,IAAVvvB,EAAkB,sCAAwC,gCAAgC,IAG/F,IAAItI,EAAIzY,EACL8+I,EAAQ9+I,OAAS,EAAI,YAAc8+I,EAAQ1rI,IAAIqrI,IAAcztI,KAAK,MAAQ,IAAMytI,GAAaK,EAAQ,IACtG,0BAEF,MAAM,IAAIpT,GACR,wDAA0DjzH,EAC1D,kBAEJ,CAEA,OAAO82H,CAAO,EE3DlB,SAASwP,GAA6BvzD,GAKpC,GAJIA,EAAOqsD,aACTrsD,EAAOqsD,YAAYmH,mBAGjBxzD,EAAOutD,QAAUvtD,EAAOutD,OAAOkB,QACjC,MAAM,IAAIpG,GAAc,KAAMroD,EAElC,CASe,SAASyzD,GAAgBzzD,GACtCuzD,GAA6BvzD,GAE7BA,EAAOikD,QAAU+B,GAAaxsD,KAAKwG,EAAOikD,SAG1CjkD,EAAOn/E,KAAOonI,GAAc/zI,KAC1B8rF,EACAA,EAAOgkD,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAASxsI,QAAQwoF,EAAOkJ,SAC1ClJ,EAAOikD,QAAQM,eAAe,qCAAqC,GAKrE,OAFgB4O,GAAoBnzD,EAAO+jD,SAAWH,GAASG,QAExDA,CAAQ/jD,GAAQ5vB,MAAK,SAA6B+vE,GAYvD,OAXAoT,GAA6BvzD,GAG7BmgD,EAASt/H,KAAOonI,GAAc/zI,KAC5B8rF,EACAA,EAAO+kD,kBACP5E,GAGFA,EAAS8D,QAAU+B,GAAaxsD,KAAK2mD,EAAS8D,SAEvC9D,CACT,IAAG,SAA4B4O,GAe7B,OAdK5G,GAAS4G,KACZwE,GAA6BvzD,GAGzB+uD,GAAUA,EAAO5O,WACnB4O,EAAO5O,SAASt/H,KAAOonI,GAAc/zI,KACnC8rF,EACAA,EAAO+kD,kBACPgK,EAAO5O,UAET4O,EAAO5O,SAAS8D,QAAU+B,GAAaxsD,KAAKu1D,EAAO5O,SAAS8D,WAIzDx7G,QAAQkgE,OAAOomD,EACxB,GACF,CChFO,MAAM2E,GAAU,QCKjBzzB,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUjpH,SAAQ,CAAC+1B,EAAM9zB,KAC7EgnH,GAAWlzF,GAAQ,SAAmByuG,GACpC,cAAcA,IAAUzuG,GAAQ,KAAO9zB,EAAI,EAAI,KAAO,KAAO8zB,CAC/D,CAAC,IAGH,MAAM4mH,GAAqB,CAAC,EAW5B1zB,GAAW4jB,aAAe,SAAsB+P,EAAW3nE,EAASxsE,GAClE,SAASo0I,EAAcC,EAAKhzH,GAC1B,MAAO,uCAAoDgzH,EAAM,IAAOhzH,GAAQrhB,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAAC/K,EAAOo/I,EAAKv+I,KAClB,IAAkB,IAAdq+I,EACF,MAAM,IAAI1T,GACR2T,EAAcC,EAAK,qBAAuB7nE,EAAU,OAASA,EAAU,KACvEi0D,GAAW6T,gBAef,OAXI9nE,IAAY0nE,GAAmBG,KACjCH,GAAmBG,IAAO,EAE1Bx0E,QAAQ0P,KACN6kE,EACEC,EACA,+BAAiC7nE,EAAU,8CAK1C2nE,GAAYA,EAAUl/I,EAAOo/I,EAAKv+I,EAAY,CAEzD,EAmCA,UACEy+I,cAxBF,SAAuBz9I,EAAS09I,EAAQC,GACtC,GAAuB,kBAAZ39I,EACT,MAAM,IAAI2pI,GAAW,4BAA6BA,GAAWiU,sBAE/D,MAAMj1H,EAAOrtB,OAAOqtB,KAAK3oB,GACzB,IAAI0C,EAAIimB,EAAK1qB,OACb,KAAOyE,KAAM,GAAG,CACd,MAAM66I,EAAM50H,EAAKjmB,GACX26I,EAAYK,EAAOH,GACzB,GAAIF,EAAJ,CACE,MAAMl/I,EAAQ6B,EAAQu9I,GAChB/tH,OAAmB7wB,IAAVR,GAAuBk/I,EAAUl/I,EAAOo/I,EAAKv9I,GAC5D,IAAe,IAAXwvB,EACF,MAAM,IAAIm6G,GAAW,UAAY4T,EAAM,YAAc/tH,EAAQm6G,GAAWiU,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAIhU,GAAW,kBAAoB4T,EAAK5T,GAAWkU,eAE7D,CACF,EAIEn0B,eC9EIA,GAAa2zB,GAAU3zB,WAS7B,MAAMo0B,GACJpwH,WAAAA,CAAYqwH,GACVp+I,KAAK0tI,SAAW0Q,EAChBp+I,KAAKq+I,aAAe,CAClB1rD,QAAS,IAAI2rD,GACbrU,SAAU,IAAIqU,GAElB,CAUA,aAAM3rD,CAAQ4rD,EAAaz0D,GACzB,IACE,aAAa9pF,KAAKs8I,SAASiC,EAAaz0D,EAC1C,CAAE,MAAOr8E,GACP,GAAIA,aAAeM,MAAO,CACxB,IAAIywI,EAEJzwI,MAAMm8H,kBAAoBn8H,MAAMm8H,kBAAkBsU,EAAQ,CAAC,GAAMA,EAAQ,IAAIzwI,MAG7E,MAAMwyB,EAAQi+G,EAAMj+G,MAAQi+G,EAAMj+G,MAAM9M,QAAQ,QAAS,IAAM,GAC/D,IACOhmB,EAAI8yB,MAGEA,IAAU//B,OAAOiN,EAAI8yB,OAAOs9C,SAASt9C,EAAM9M,QAAQ,YAAa,OACzEhmB,EAAI8yB,OAAS,KAAOA,GAHpB9yB,EAAI8yB,MAAQA,CAKhB,CAAE,MAAOhhC,IACP,CAEJ,CAEA,MAAMkO,CACR,CACF,CAEA6uI,QAAAA,CAASiC,EAAaz0D,GAGO,kBAAhBy0D,GACTz0D,EAASA,GAAU,CAAC,GACb53B,IAAMqsF,EAEbz0D,EAASy0D,GAAe,CAAC,EAG3Bz0D,EAASirD,GAAY/0I,KAAK0tI,SAAU5jD,GAEpC,MAAM,aAAC6jD,EAAY,iBAAE6H,EAAgB,QAAEzH,GAAWjkD,OAE7B9qF,IAAjB2uI,GACF+P,GAAUI,cAAcnQ,EAAc,CACpCjB,kBAAmB3iB,GAAW4jB,aAAa5jB,GAAWb,SACtDyjB,kBAAmB5iB,GAAW4jB,aAAa5jB,GAAWb,SACtD0jB,oBAAqB7iB,GAAW4jB,aAAa5jB,GAAWb,WACvD,GAGmB,MAApBssB,IACErL,GAAMx8G,WAAW6nH,GACnB1rD,EAAO0rD,iBAAmB,CACxBvJ,UAAWuJ,GAGbkI,GAAUI,cAActI,EAAkB,CACxCv/F,OAAQ8zE,GAAW00B,SACnBxS,UAAWliB,GAAW00B,WACrB,IAKP30D,EAAOkJ,QAAUlJ,EAAOkJ,QAAUhzF,KAAK0tI,SAAS16C,QAAU,OAAOv7C,cAGjE,IAAIinG,EAAiB3Q,GAAW5D,GAAMrC,MACpCiG,EAAQwB,OACRxB,EAAQjkD,EAAOkJ,SAGjB+6C,GAAW5D,GAAMrpI,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjDkyF,WACQ+6C,EAAQ/6C,EAAO,IAI1BlJ,EAAOikD,QAAU+B,GAAa7kI,OAAOyzI,EAAgB3Q,GAGrD,MAAM4Q,EAA0B,GAChC,IAAIC,GAAiC,EACrC5+I,KAAKq+I,aAAa1rD,QAAQ7xF,SAAQ,SAAoC+9I,GACjC,oBAAxBA,EAAYrS,UAA0D,IAAhCqS,EAAYrS,QAAQ1iD,KAIrE80D,EAAiCA,GAAkCC,EAAYtS,YAE/EoS,EAAwBxlF,QAAQ0lF,EAAYxS,UAAWwS,EAAYvS,UACrE,IAEA,MAAMwS,EAA2B,GAKjC,IAAI7yB,EAJJjsH,KAAKq+I,aAAapU,SAASnpI,SAAQ,SAAkC+9I,GACnEC,EAAyB39I,KAAK09I,EAAYxS,UAAWwS,EAAYvS,SACnE,IAGA,IACI34F,EADA5wC,EAAI,EAGR,IAAK67I,EAAgC,CACnC,MAAMG,EAAQ,CAACxB,GAAgB7/I,KAAKsC,WAAOhB,GAO3C,IANA+/I,EAAM5lF,QAAQ16D,MAAMsgJ,EAAOJ,GAC3BI,EAAM59I,KAAK1C,MAAMsgJ,EAAOD,GACxBnrG,EAAMorG,EAAMzgJ,OAEZ2tH,EAAU15F,QAAQwR,QAAQ+lD,GAEnB/mF,EAAI4wC,GACTs4E,EAAUA,EAAQ/xD,KAAK6kF,EAAMh8I,KAAMg8I,EAAMh8I,MAG3C,OAAOkpH,CACT,CAEAt4E,EAAMgrG,EAAwBrgJ,OAE9B,IAAIi4I,EAAYzsD,EAIhB,IAFA/mF,EAAI,EAEGA,EAAI4wC,GAAK,CACd,MAAMqrG,EAAcL,EAAwB57I,KACtCk8I,EAAaN,EAAwB57I,KAC3C,IACEwzI,EAAYyI,EAAYzI,EAC1B,CAAE,MAAOvjH,GACPisH,EAAWjhJ,KAAKgC,KAAMgzB,GACtB,KACF,CACF,CAEA,IACEi5F,EAAUsxB,GAAgBv/I,KAAKgC,KAAMu2I,EACvC,CAAE,MAAOvjH,GACP,OAAOT,QAAQkgE,OAAOz/D,EACxB,CAKA,IAHAjwB,EAAI,EACJ4wC,EAAMmrG,EAAyBxgJ,OAExByE,EAAI4wC,GACTs4E,EAAUA,EAAQ/xD,KAAK4kF,EAAyB/7I,KAAM+7I,EAAyB/7I,MAGjF,OAAOkpH,CACT,CAEAizB,MAAAA,CAAOp1D,GAGL,OAAOiiD,GADUyI,IADjB1qD,EAASirD,GAAY/0I,KAAK0tI,SAAU5jD,IACE2qD,QAAS3qD,EAAO53B,KAC5B43B,EAAO2E,OAAQ3E,EAAO0rD,iBAClD,EAIFrL,GAAMrpI,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BkyF,GAE/EmrD,GAAMj+I,UAAU8yF,GAAU,SAAS9gC,EAAK43B,GACtC,OAAO9pF,KAAK2yF,QAAQoiD,GAAYjrD,GAAU,CAAC,EAAG,CAC5CkJ,SACA9gC,MACAvnD,MAAOm/E,GAAU,CAAC,GAAGn/E,OAEzB,CACF,IAEAw/H,GAAMrpI,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BkyF,GAGrE,SAASmsD,EAAmBC,GAC1B,OAAO,SAAoBltF,EAAKvnD,EAAMm/E,GACpC,OAAO9pF,KAAK2yF,QAAQoiD,GAAYjrD,GAAU,CAAC,EAAG,CAC5CkJ,SACA+6C,QAASqR,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLltF,MACAvnD,SAEJ,CACF,CAEAwzI,GAAMj+I,UAAU8yF,GAAUmsD,IAE1BhB,GAAMj+I,UAAU8yF,EAAS,QAAUmsD,GAAmB,EACxD,IAEA,YCxNA,MAAME,GACJtxH,WAAAA,CAAYuxH,GACV,GAAwB,oBAAbA,EACT,MAAM,IAAI7zH,UAAU,gCAGtB,IAAI8zH,EAEJv/I,KAAKisH,QAAU,IAAI15F,SAAQ,SAAyBwR,GAClDw7G,EAAiBx7G,CACnB,IAEA,MAAM8mG,EAAQ7qI,KAGdA,KAAKisH,QAAQ/xD,MAAKngC,IAChB,IAAK8wG,EAAM2U,WAAY,OAEvB,IAAIz8I,EAAI8nI,EAAM2U,WAAWlhJ,OAEzB,KAAOyE,KAAM,GACX8nI,EAAM2U,WAAWz8I,GAAGg3B,GAEtB8wG,EAAM2U,WAAa,IAAI,IAIzBx/I,KAAKisH,QAAQ/xD,KAAOulF,IAClB,IAAIC,EAEJ,MAAMzzB,EAAU,IAAI15F,SAAQwR,IAC1B8mG,EAAMyN,UAAUv0G,GAChB27G,EAAW37G,CAAO,IACjBm2B,KAAKulF,GAMR,OAJAxzB,EAAQlyF,OAAS,WACf8wG,EAAMuM,YAAYsI,EACpB,EAEOzzB,CAAO,EAGhBqzB,GAAS,SAAgB/1I,EAASugF,EAAQ6I,GACpCk4C,EAAMgO,SAKVhO,EAAMgO,OAAS,IAAI1G,GAAc5oI,EAASugF,EAAQ6I,GAClD4sD,EAAe1U,EAAMgO,QACvB,GACF,CAKAyE,gBAAAA,GACE,GAAIt9I,KAAK64I,OACP,MAAM74I,KAAK64I,MAEf,CAMAP,SAAAA,CAAUr3I,GACJjB,KAAK64I,OACP53I,EAASjB,KAAK64I,QAIZ74I,KAAKw/I,WACPx/I,KAAKw/I,WAAWr+I,KAAKF,GAErBjB,KAAKw/I,WAAa,CAACv+I,EAEvB,CAMAm2I,WAAAA,CAAYn2I,GACV,IAAKjB,KAAKw/I,WACR,OAEF,MAAMn+I,EAAQrB,KAAKw/I,WAAWl+I,QAAQL,IACvB,IAAXI,GACFrB,KAAKw/I,WAAWj+I,OAAOF,EAAO,EAElC,CAMA,aAAOwnB,GACL,IAAIkR,EAIJ,MAAO,CACL8wG,MAJY,IAAIwU,IAAY,SAAkBl5I,GAC9C4zB,EAAS5zB,CACX,IAGE4zB,SAEJ,EAGF,YCxHA,MAAM4lH,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZhtE,GAAI,IACJitE,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjC9nJ,OAAO+iC,QAAQihH,IAAgB7+I,SAAQ0gF,IAAkB,IAAhBjhF,EAAK/B,GAAMgjF,EAClDm+D,GAAenhJ,GAAS+B,CAAG,IAG7B,YCxBA,MAAMmjJ,GAnBN,SAASC,EAAeC,GACtB,MAAMxzG,EAAU,IAAI+tG,GAAMyF,GACpBv1I,EAAW3Q,GAAKygJ,GAAMj+I,UAAUyyF,QAASviD,GAa/C,OAVA+5F,GAAM1mI,OAAO4K,EAAU8vI,GAAMj+I,UAAWkwC,EAAS,CAACk2F,YAAY,IAG9D6D,GAAM1mI,OAAO4K,EAAU+hC,EAAS,KAAM,CAACk2F,YAAY,IAGnDj4H,EAASjG,OAAS,SAAgBg2I,GAChC,OAAOuF,EAAe5O,GAAY6O,EAAexF,GACnD,EAEO/vI,CACT,CAGcs1I,CAAejW,IAG7BgW,GAAMvF,MAAQA,GAGduF,GAAMvR,cAAgBA,GACtBuR,GAAMrE,YAAcA,GACpBqE,GAAMzR,SAAWA,GACjByR,GAAMlG,QAAUA,GAChBkG,GAAM7X,WAAaA,GAGnB6X,GAAM1Z,WAAaA,GAGnB0Z,GAAMG,OAASH,GAAMvR,cAGrBuR,GAAM15H,IAAM,SAAakhG,GACvB,OAAO34F,QAAQvI,IAAIkhG,EACrB,EAEAw4B,GAAMI,OC9CS,SAAgB5iF,GAC7B,OAAO,SAAcjyC,GACnB,OAAOiyC,EAASziE,MAAM,KAAMwwB,EAC9B,CACF,ED6CAy0H,GAAMK,aE7DS,SAAsB9iF,GACnC,OAAOkpE,GAAMhyG,SAAS8oC,KAAsC,IAAzBA,EAAQ8iF,YAC7C,EF8DAL,GAAM3O,YAAcA,GAEpB2O,GAAM5T,aAAeA,GAErB4T,GAAMM,WAAa1e,GAAS8I,GAAejE,GAAMzD,WAAWpB,GAAS,IAAIkC,SAASlC,GAASA,GAE3Foe,GAAMO,WAAahH,GAEnByG,GAAM/D,eAAiBA,GAEvB+D,GAAM1qE,QAAU0qE,GAGhB,YGzDO,IAAI7vD,GAAW,WAQpB,OAPAA,GAAWl4F,OAAO49C,QAAU,SAAkBj2C,GAC1C,IAAK,IAAIyT,EAAGhU,EAAI,EAAGiU,EAAI3Y,UAAUC,OAAQyE,EAAIiU,EAAGjU,IAE5C,IAAK,IAAI2sC,KADT34B,EAAI1Y,UAAU0E,GACOpH,OAAOuE,UAAUiO,eAAenQ,KAAK+Y,EAAG24B,KAAIpsC,EAAEosC,GAAK34B,EAAE24B,IAE9E,OAAOpsC,CACX,EACOuwF,GAASp1F,MAAMuB,KAAM3B,UAC9B,EA0EO,SAAS6lJ,GAAU7qH,EAAS8qH,EAAYphF,EAAGqhF,GAEhD,OAAO,IAAKrhF,IAAMA,EAAIxwC,WAAU,SAAUwR,EAAS0uD,GAC/C,SAAS45C,EAAU7tI,GAAS,IAAMwgG,EAAKolD,EAAUh6H,KAAK5rB,GAAS,CAAE,MAAOe,IAAKkzF,EAAOlzF,GAAI,CAAE,CAC1F,SAAS+sI,EAAS9tI,GAAS,IAAMwgG,EAAKolD,EAAiB,MAAE5lJ,GAAS,CAAE,MAAOe,IAAKkzF,EAAOlzF,GAAI,CAAE,CAC7F,SAASy/F,EAAKnvE,GAAUA,EAAOwvC,KAAOt7B,EAAQlU,EAAOrxB,OAJzD,SAAeA,GAAS,OAAOA,aAAiBukE,EAAIvkE,EAAQ,IAAIukE,GAAE,SAAUh/B,GAAWA,EAAQvlC,EAAQ,GAAI,CAIzC6lJ,CAAMx0H,EAAOrxB,OAAO07D,KAAKmyE,EAAWC,EAAW,CAC7GttC,GAAMolD,EAAYA,EAAU3lJ,MAAM46B,EAAS8qH,GAAc,KAAK/5H,OAClE,GACF,CAEO,SAASk6H,GAAYjrH,EAASlN,GACnC,IAAsGrO,EAAG1X,EAAG9C,EAAxGkmB,EAAI,CAAE+6H,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlhJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmhJ,KAAM,GAAIC,IAAK,IAAe3mI,EAAIpiB,OAAOyM,QAA4B,oBAAbu8I,SAA0BA,SAAWhpJ,QAAQuE,WACtL,OAAO6d,EAAEqM,KAAOw6H,EAAK,GAAI7mI,EAAS,MAAI6mI,EAAK,GAAI7mI,EAAU,OAAI6mI,EAAK,GAAsB,oBAAXv8H,SAA0BtK,EAAEsK,OAAOgJ,UAAY,WAAa,OAAOrxB,IAAM,GAAI+d,EAC1J,SAAS6mI,EAAK5tI,GAAK,OAAO,SAAUm6B,GAAK,OACzC,SAAc0zG,GACV,GAAI/mI,EAAG,MAAM,IAAI2N,UAAU,mCAC3B,KAAO1N,IAAMA,EAAI,EAAG8mI,EAAG,KAAOr7H,EAAI,IAAKA,OACnC,GAAI1L,EAAI,EAAG1X,IAAM9C,EAAY,EAARuhJ,EAAG,GAASz+I,EAAU,OAAIy+I,EAAG,GAAKz+I,EAAS,SAAO9C,EAAI8C,EAAU,SAAM9C,EAAEtF,KAAKoI,GAAI,GAAKA,EAAEgkB,SAAW9mB,EAAIA,EAAEtF,KAAKoI,EAAGy+I,EAAG,KAAKxlF,KAAM,OAAO/7D,EAE3J,OADI8C,EAAI,EAAG9C,IAAGuhJ,EAAK,CAAS,EAARA,EAAG,GAAQvhJ,EAAE9E,QACzBqmJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGvhJ,EAAIuhJ,EAAI,MACxB,KAAK,EAAc,OAAXr7H,EAAE+6H,QAAgB,CAAE/lJ,MAAOqmJ,EAAG,GAAIxlF,MAAM,GAChD,KAAK,EAAG71C,EAAE+6H,QAASn+I,EAAIy+I,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKr7H,EAAEk7H,IAAIhhH,MAAOla,EAAEi7H,KAAK/gH,MAAO,SACxC,QACI,KAAkBpgC,GAAZA,EAAIkmB,EAAEi7H,MAAYnmJ,OAAS,GAAKgF,EAAEA,EAAEhF,OAAS,MAAkB,IAAVumJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEr7H,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVq7H,EAAG,MAAcvhJ,GAAMuhJ,EAAG,GAAKvhJ,EAAE,IAAMuhJ,EAAG,GAAKvhJ,EAAE,IAAM,CAAEkmB,EAAE+6H,MAAQM,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYr7H,EAAE+6H,MAAQjhJ,EAAE,GAAI,CAAEkmB,EAAE+6H,MAAQjhJ,EAAE,GAAIA,EAAIuhJ,EAAI,KAAO,CACpE,GAAIvhJ,GAAKkmB,EAAE+6H,MAAQjhJ,EAAE,GAAI,CAAEkmB,EAAE+6H,MAAQjhJ,EAAE,GAAIkmB,EAAEk7H,IAAIvjJ,KAAK0jJ,GAAK,KAAO,CAC9DvhJ,EAAE,IAAIkmB,EAAEk7H,IAAIhhH,MAChBla,EAAEi7H,KAAK/gH,MAAO,SAEtBmhH,EAAK14H,EAAKnuB,KAAKq7B,EAAS7P,EAC5B,CAAE,MAAOjqB,IAAKslJ,EAAK,CAAC,EAAGtlJ,IAAI6G,EAAI,CAAG,CAAE,QAAU0X,EAAIxa,EAAI,CAAG,CACzD,GAAY,EAARuhJ,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAErmJ,MAAOqmJ,EAAG,GAAKA,EAAG,QAAK,EAAQxlF,MAAM,EAC9E,CAtBgD2/B,CAAK,CAAChoF,EAAGm6B,GAAK,CAAG,CAuBnE,CAE6Bx1C,OAAOyM,OA6D7B,SAAS08I,GAAczhE,EAAIC,EAAMyhE,GACtC,GAAIA,GAA6B,IAArB1mJ,UAAUC,OAAc,IAAK,IAA4Byd,EAAxBhZ,EAAI,EAAG82C,EAAIypC,EAAKhlF,OAAYyE,EAAI82C,EAAG92C,KACxEgZ,GAAQhZ,KAAKugF,IACRvnE,IAAIA,EAAK2M,MAAMxoB,UAAUL,MAAM7B,KAAKslF,EAAM,EAAGvgF,IAClDgZ,EAAGhZ,GAAKugF,EAAKvgF,IAGrB,OAAOsgF,EAAGp4E,OAAO8Q,GAAM2M,MAAMxoB,UAAUL,MAAM7B,KAAKslF,GACpD,CAsCyB3nF,OAAOyM,OAoEkB,oBAApB48I,iBAAiCA,gBCzT/D,IAAIjvE,GAAU,QAEd,SAASt9C,GAAKwsH,EAAYC,GACtB,OAAO,IAAI3yH,SAAQ,SAAUwR,GAAW,OAAOrK,WAAWqK,EAASkhH,EAAYC,EAAc,GACjG,CA4BA,SAASC,GAAU3mJ,GACf,QAASA,GAA+B,oBAAfA,EAAM07D,IACnC,CAcA,SAASkrF,GAAa33H,EAAQyzC,GAC1B,IACI,IAAImkF,EAAgB53H,IAChB03H,GAAUE,GACVA,EAAcnrF,MAAK,SAAUrqC,GAAU,OAAOqxC,GAAS,EAAMrxC,EAAS,IAAG,SAAUmD,GAAS,OAAOkuC,GAAS,EAAOluC,EAAQ,IAG3HkuC,GAAS,EAAMmkF,EAEvB,CACA,MAAOryH,GACHkuC,GAAS,EAAOluC,EACpB,CACJ,CAMA,SAASsyH,GAAcjjB,EAAOnhE,EAAUqkF,GAEpC,YAD4B,IAAxBA,IAAkCA,EAAsB,IACrDrB,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAIwlJ,EAASC,EAAqB1iJ,EAAGm1B,EACrC,OAAOosH,GAAYtkJ,MAAM,SAAUspF,GAC/B,OAAQA,EAAGi7D,OACP,KAAK,EACDiB,EAAU98H,MAAM25G,EAAM/jI,QACtBmnJ,EAAsB7zH,KAAKsG,MAC3Bn1B,EAAI,EACJumF,EAAGi7D,MAAQ,EACf,KAAK,EACD,OAAMxhJ,EAAIs/H,EAAM/jI,QAChBknJ,EAAQziJ,GAAKm+D,EAASmhE,EAAMt/H,GAAIA,IAChCm1B,EAAMtG,KAAKsG,QACEutH,EAAsBF,GACnCE,EAAsBvtH,EACf,CAAC,EAvEjB,IAAI3F,SAAQ,SAAUwR,GACzB,IAAI2hH,EAAU,IAAIlgC,eAClBkgC,EAAQhgC,MAAMC,UAAY,WAAc,OAAO5hF,GAAW,EAC1D2hH,EAAQjgC,MAAMG,YAAY,KAC9B,MAiEgF,CAAC,EAAa,IAH9C,CAAC,EAAa,GAMlD,KAAK,EACDt8B,EAAGk7D,OACHl7D,EAAGi7D,MAAQ,EACf,KAAK,EAED,QADExhJ,EACK,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAcyiJ,GAEtC,GACJ,GACJ,CAQA,SAASG,GAAkC15B,GAEvC,OADAA,EAAQ/xD,UAAKl7D,GAAW,WAAgC,IACjDitH,CACX,CAyBA,SAAS25B,GAAMpnJ,GACX,OAAOiR,SAASjR,EACpB,CAIA,SAASujH,GAAQvjH,GACb,OAAO8zB,WAAW9zB,EACtB,CACA,SAASqnJ,GAAWrnJ,EAAOsnJ,GACvB,MAAwB,kBAAVtnJ,GAAsB0zB,MAAM1zB,GAASsnJ,EAActnJ,CACrE,CACA,SAASunJ,GAAYhnH,GACjB,OAAOA,EAAO7U,QAAO,SAAU87H,EAAKxnJ,GAAS,OAAOwnJ,GAAOxnJ,EAAQ,EAAI,EAAI,GAAG,EAClF,CACA,SAAS2G,GAAM3G,EAAOmiD,GAElB,QADa,IAATA,IAAmBA,EAAO,GAC1BxzC,KAAK2H,IAAI6rC,IAAS,EAClB,OAAOxzC,KAAKhI,MAAM3G,EAAQmiD,GAAQA,EAKlC,IAAIslG,EAAc,EAAItlG,EACtB,OAAOxzC,KAAKhI,MAAM3G,EAAQynJ,GAAeA,CAEjD,CAyEA,SAASC,GAAOvjG,EAAG3rC,GACf,IAAImvI,EAAKxjG,EAAE,KAAO,GAAIyjG,EAAY,MAAPzjG,EAAE,GAAa0jG,EAAK1jG,EAAE,KAAO,GAAI2jG,EAAY,MAAP3jG,EAAE,GAC/D4jG,EAAKvvI,EAAE,KAAO,GAAIwvI,EAAY,MAAPxvI,EAAE,GAAayvI,EAAKzvI,EAAE,KAAO,GACpD0vI,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAEjCD,IADAC,GAAMP,GAFkE,MAAPtvI,EAAE,OAGtD,GACb6vI,GAAM,MAENF,IADAC,GAAMP,EAAKI,KACE,GACbG,GAAM,MAENF,IADAC,GAAMP,EAAKI,KACE,GACbG,GAAM,MACND,GAAMP,EAAKI,EACXG,GAAM,MACN/jG,EAAE,GAAM+jG,GAAM,GAAMC,EACpBhkG,EAAE,GAAMikG,GAAM,GAAMC,CACxB,CAKA,SAASC,GAAYnkG,EAAG3rC,GACpB,IAAImvI,EAAKxjG,EAAE,KAAO,GAAIyjG,EAAY,MAAPzjG,EAAE,GAAa0jG,EAAK1jG,EAAE,KAAO,GAAI2jG,EAAY,MAAP3jG,EAAE,GAC/D4jG,EAAKvvI,EAAE,KAAO,GAAIwvI,EAAY,MAAPxvI,EAAE,GAAayvI,EAAKzvI,EAAE,KAAO,GAAI+vI,EAAY,MAAP/vI,EAAE,GAC/D0vI,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAEjCD,IADAC,GAAMP,EAAKS,KACE,GACbF,GAAM,MAENF,IADAC,GAAMP,EAAKU,KACE,GACbH,GAAM,MAEND,IADAC,GAAMN,EAAKG,KACE,GACbG,GAAM,MAENF,IADAC,GAAMP,EAAKW,KACE,GACbJ,GAAM,MAEND,IADAC,GAAMN,EAAKI,KACE,GACbE,GAAM,MAEND,IADAC,GAAML,EAAKE,KACE,GACbG,GAAM,MACND,GAAMP,EAAKY,EAAKX,EAAKK,EAAKJ,EAAKG,EAAKF,EAAKC,EACzCG,GAAM,MACN/jG,EAAE,GAAM+jG,GAAM,GAAMC,EACpBhkG,EAAE,GAAMikG,GAAM,GAAMC,CACxB,CAKA,SAASG,GAAQrkG,EAAG3X,GAChB,IAAIm7G,EAAKxjG,EAAE,GAEE,MADb3X,GAAQ,KAEJ2X,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAKwjG,GAEFn7G,EAAO,IACZ2X,EAAE,GAAMwjG,GAAMn7G,EAAS2X,EAAE,KAAQ,GAAK3X,EACtC2X,EAAE,GAAMA,EAAE,IAAM3X,EAASm7G,IAAQ,GAAKn7G,IAGtCA,GAAQ,GACR2X,EAAE,GAAMA,EAAE,IAAM3X,EAASm7G,IAAQ,GAAKn7G,EACtC2X,EAAE,GAAMwjG,GAAMn7G,EAAS2X,EAAE,KAAQ,GAAK3X,EAE9C,CAKA,SAASi8G,GAAatkG,EAAG3X,GAER,KADbA,GAAQ,MAICA,EAAO,IACZ2X,EAAE,GAAKA,EAAE,KAAQ,GAAK3X,EACtB2X,EAAE,GAAKA,EAAE,IAAM3X,IAGf2X,EAAE,GAAKA,EAAE,IAAO3X,EAAO,GACvB2X,EAAE,GAAK,GAEf,CAKA,SAASukG,GAAOvkG,EAAG3rC,GACf2rC,EAAE,IAAM3rC,EAAE,GACV2rC,EAAE,IAAM3rC,EAAE,EACd,CACA,IAAImwI,GAAK,CAAC,WAAY,YAClBC,GAAK,CAAC,WAAY,WAMtB,SAASC,GAAQrpI,GACb,IAAIspI,EAAU,CAAC,EAAGtpI,EAAE,KAAO,GAC3BkpI,GAAOlpI,EAAGspI,GACVR,GAAY9oI,EAAGmpI,IACfG,EAAQ,GAAKtpI,EAAE,KAAO,EACtBkpI,GAAOlpI,EAAGspI,GACVR,GAAY9oI,EAAGopI,IACfE,EAAQ,GAAKtpI,EAAE,KAAO,EACtBkpI,GAAOlpI,EAAGspI,EACd,CACA,IAAIC,GAAK,CAAC,WAAY,WAClBC,GAAK,CAAC,WAAY,WAClBC,GAAM,CAAC,EAAG,GACVC,GAAK,CAAC,EAAG,YACTC,GAAK,CAAC,EAAG,WAQb,SAASC,GAAW10I,EAAO20I,GACvB,IAAItnJ,EArJR,SAAsB2S,GAIlB,IADA,IAAI2c,EAAS,IAAI5b,WAAWf,EAAM5U,QACzByE,EAAI,EAAGA,EAAImQ,EAAM5U,OAAQyE,IAAK,CAEnC,IAAIqnD,EAAWl3C,EAAMlD,WAAWjN,GAEhC,GAAIqnD,EAAW,IACX,OAAO,IAAIgxF,aAAcnlG,OAAO/iC,GAEpC2c,EAAO9sB,GAAKqnD,CAChB,CACA,OAAOv6B,CACX,CAuIci4H,CAAa50I,GACvB20I,EAAOA,GAAQ,EACf,IAOI9kJ,EAPAzE,EAAS,CAAC,EAAGiC,EAAIjC,QACjBypJ,EAAYzpJ,EAAO,GAAK,GACxBmyC,EAAQnyC,EAAO,GAAKypJ,EACpBC,EAAK,CAAC,EAAGH,GACTI,EAAK,CAAC,EAAGJ,GACTK,EAAK,CAAC,EAAG,GACTC,EAAK,CAAC,EAAG,GAEb,IAAKplJ,EAAI,EAAGA,EAAI0tC,EAAO1tC,GAAQ,GAC3BmlJ,EAAG,GAAK3nJ,EAAIwC,EAAI,GAAMxC,EAAIwC,EAAI,IAAM,EAAMxC,EAAIwC,EAAI,IAAM,GAAOxC,EAAIwC,EAAI,IAAM,GAC7EmlJ,EAAG,GAAK3nJ,EAAIwC,GAAMxC,EAAIwC,EAAI,IAAM,EAAMxC,EAAIwC,EAAI,IAAM,GAAOxC,EAAIwC,EAAI,IAAM,GACzEolJ,EAAG,GAAK5nJ,EAAIwC,EAAI,IAAOxC,EAAIwC,EAAI,KAAO,EAAMxC,EAAIwC,EAAI,KAAO,GAAOxC,EAAIwC,EAAI,KAAO,GACjFolJ,EAAG,GAAK5nJ,EAAIwC,EAAI,GAAMxC,EAAIwC,EAAI,IAAM,EAAMxC,EAAIwC,EAAI,KAAO,GAAOxC,EAAIwC,EAAI,KAAO,GAC/E+jJ,GAAYoB,EAAIX,IAChBP,GAAQkB,EAAI,IACZpB,GAAYoB,EAAIV,IAChBN,GAAOc,EAAIE,GACXlB,GAAQgB,EAAI,IACZ9B,GAAO8B,EAAIC,GACXnB,GAAYkB,EAAIP,IAChBvB,GAAO8B,EAAIN,IACXZ,GAAYqB,EAAIX,IAChBR,GAAQmB,EAAI,IACZrB,GAAYqB,EAAIZ,IAChBL,GAAOe,EAAIE,GACXnB,GAAQiB,EAAI,IACZ/B,GAAO+B,EAAID,GACXlB,GAAYmB,EAAIR,IAChBvB,GAAO+B,EAAIN,IAEfO,EAAG,GAAK,EACRA,EAAG,GAAK,EACRC,EAAG,GAAK,EACRA,EAAG,GAAK,EACR,IAAI1/H,EAAM,CAAC,EAAG,GACd,OAAQs/H,GACJ,KAAK,GACDt/H,EAAI,GAAKloB,EAAIwC,EAAI,IACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,GACDA,EAAI,GAAKloB,EAAIwC,EAAI,IACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,GACDA,EAAI,GAAKloB,EAAIwC,EAAI,IACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,GACDA,EAAI,GAAKloB,EAAIwC,EAAI,IACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,GACDA,EAAI,GAAKloB,EAAIwC,EAAI,IACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,GACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,GAClBy+H,GAAOiB,EAAI1/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBmkJ,GAAOiB,EAAI1/H,GACXq+H,GAAYqB,EAAIX,IAChBR,GAAQmB,EAAI,IACZrB,GAAYqB,EAAIZ,IAChBL,GAAOe,EAAIE,GAEf,KAAK,EACD1/H,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,IAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,EAAI,GACjBkkJ,GAAax+H,EAAK,GAClBy+H,GAAOgB,EAAIz/H,GAEf,KAAK,EACDA,EAAI,GAAKloB,EAAIwC,GACbmkJ,GAAOgB,EAAIz/H,GACXq+H,GAAYoB,EAAIX,IAChBP,GAAQkB,EAAI,IACZpB,GAAYoB,EAAIV,IAChBN,GAAOc,EAAIE,GAWnB,OARAhB,GAAOc,EAAI1pJ,GACX4oJ,GAAOe,EAAI3pJ,GACX4nJ,GAAO8B,EAAIC,GACX/B,GAAO+B,EAAID,GACXX,GAAQW,GACRX,GAAQY,GACR/B,GAAO8B,EAAIC,GACX/B,GAAO+B,EAAID,IACF,YAAcA,EAAG,KAAO,GAAGn8I,SAAS,KAAKhM,OAAO,IACpD,YAAcmoJ,EAAG,KAAO,GAAGn8I,SAAS,KAAKhM,OAAO,IAChD,YAAcooJ,EAAG,KAAO,GAAGp8I,SAAS,KAAKhM,OAAO,IAChD,YAAcooJ,EAAG,KAAO,GAAGp8I,SAAS,KAAKhM,OAAO,EACzD,CAcA,SAASuoJ,GAAoBC,GACzB,MAA6B,oBAAfA,CAClB,CA6DA,SAASC,GAAYC,EAASC,EAAeC,EAAgBlD,GACzD,IAAImD,EAAkB/sJ,OAAOqtB,KAAKu/H,GAASr/H,QAAO,SAAUy/H,GAAa,OApc7E,SAAkBC,EAAUC,GACxB,IAAK,IAAI9lJ,EAAI,EAAG82C,EAAI+uG,EAAStqJ,OAAQyE,EAAI82C,IAAK92C,EAC1C,GAAI6lJ,EAAS7lJ,KAAO8lJ,EAChB,OAAO,EAGf,OAAO,CACX,CAKY9uG,CAwbiF0uG,EAAgBE,EAAY,IAGjHG,EAAuBnD,GAAkCL,GAAcoD,GAAiB,SAAUC,GAAa,OA1DvH,SAAoB9/H,EAAQ2/H,GACxB,IAAIO,EAAoBpD,GAAkC,IAAIpzH,SAAQ,SAAUy2H,GAC5E,IAAIC,EAAgBr3H,KAAKsG,MAGzBktH,GAAav8H,EAAOnrB,KAAK,KAAM8qJ,IAAgB,WAE3C,IADA,IAAIU,EAAW,GACNruI,EAAK,EAAGA,EAAKxc,UAAUC,OAAQuc,IACpCquI,EAASruI,GAAMxc,UAAUwc,GAE7B,IAAIsuI,EAAev3H,KAAKsG,MAAQ+wH,EAEhC,IAAKC,EAAS,GACV,OAAOF,GAAY,WAAc,MAAQ,CAAEh2H,MAAOk2H,EAAS,GAAIzuE,SAAU0uE,EAAiB,IAE9F,IAAId,EAAaa,EAAS,GAE1B,GAAId,GAAoBC,GACpB,OAAOW,GAAY,WAAc,MAAQ,CAAExqJ,MAAO6pJ,EAAY5tE,SAAU0uE,EAAiB,IAG7FH,GAAY,WACR,OAAO,IAAIz2H,SAAQ,SAAU62H,GACzB,IAAIC,EAAez3H,KAAKsG,MACxBktH,GAAaiD,GAAY,WAErB,IADA,IAAIiB,EAAU,GACLzuI,EAAK,EAAGA,EAAKxc,UAAUC,OAAQuc,IACpCyuI,EAAQzuI,GAAMxc,UAAUwc,GAE5B,IAAI4/D,EAAW0uE,EAAev3H,KAAKsG,MAAQmxH,EAE3C,IAAKC,EAAQ,GACT,OAAOF,EAAW,CAAEp2H,MAAOs2H,EAAQ,GAAI7uE,SAAUA,IAGrD2uE,EAAW,CAAE5qJ,MAAO8qJ,EAAQ,GAAI7uE,SAAUA,GAC9C,GACJ,GACJ,GACJ,GACJ,KACA,OAAO,WACH,OAAOsuE,EAAkB7uF,MAAK,SAAUqvF,GAAkB,OAAOA,GAAkB,GACvF,CACJ,CAc8HC,CAAWjB,EAAQI,GAAYH,EAAgB,GAAGjD,IAC5K,OAAO,WACH,OAAOrB,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAmBypJ,EAAmBC,EAAgBC,EAAYtoJ,EAClE,OAAOijJ,GAAYtkJ,MAAM,SAAUspF,GAC/B,OAAQA,EAAGi7D,OACP,KAAK,EAAG,MAAO,CAAC,EAAauE,GAC7B,KAAK,EAED,MAAO,CAAC,EAAaxD,GADLh8D,EAAGk7D,QAC+B,SAAUoF,GAAgB,OAAOjE,GAAkCiE,IAAiB,GAAGrE,IAC7I,KAAK,EAED,OADAkE,EAAoBngE,EAAGk7D,OAChB,CAAC,EAAajyH,QAAQvI,IAAIy/H,IAGrC,KAAK,EAGD,IAFAC,EAAiBpgE,EAAGk7D,OACpBmF,EAAa,CAAC,EACTtoJ,EAAQ,EAAGA,EAAQqnJ,EAAgBpqJ,SAAU+C,EAC9CsoJ,EAAWjB,EAAgBrnJ,IAAUqoJ,EAAeroJ,GAExD,MAAO,CAAC,EAAcsoJ,GAElC,GACJ,GACJ,CACJ,CAuCA,SAASE,KACL,IAAIvxF,EAAI35D,OACJqY,EAAIs8E,UAER,OAAQyyD,GAAY,CAChB,gBAAiBztF,EACjB,mBAAoBA,EACpB,gBAAiBA,EACjB,qBAAsBthD,EACtB,qBAAsBA,KACpB,CACV,CAoBA,SAAS8yI,KAEL,IAAIxxF,EAAI35D,OACJqY,EAAIs8E,UACR,OAAQyyD,GAAY,CAChB,4BAA6B/uI,EAC7B,2BAA4BA,EACG,IAA/BA,EAAE+yI,OAAOzoJ,QAAQ,UACjB,oCAAqCg3D,EACrC,mBAAoBA,EACpB,sBAAuBA,EACvB,wBAAyBA,KACvB,CACV,CAQA,SAAS0xF,KAEL,IAAI1xF,EAAI35D,OAER,OAAQonJ,GAAY,CAChB,kBAAmBztF,EACnB,sBAAuBA,EACvB,YAAaA,EACiB,IAL1Bg7B,UAKFy2D,OAAOzoJ,QAAQ,SACjB,aAAcg3D,EACd,oBAAqBA,KACnB,CACV,CAQA,SAAS2xF,KAEL,IAAI3xF,EAAI35D,OACJurJ,EAAc5xF,EAAE4xF,YAAaC,EAAW7xF,EAAE6xF,SAC9C,OAAQpE,GAAY,CAChB,WAAYztF,IACV,iBAAkBA,KAClB,eAAgBA,KAChB,gBAAiBA,GACnB4xF,KAAiB,mBAAoBA,EAAYhqJ,WACjDiqJ,GAAY,uBAAwBA,EAASjqJ,aAC3C,CACV,CAOA,SAASkqJ,KAKL,IAxOsBhsJ,EAwOlBk6D,EAAI35D,OACR,OAzOsBP,EA2OLk6D,EAAEmrC,MA1OZ,yCAAyCxuE,KAAKz0B,OAAOpC,KA4OlC,8BAAtBoC,OAAO83D,EAAE+xF,QACjB,CAOA,SAASC,KACL,IAAIhhE,EAAI7vE,EACJ6+C,EAAI35D,OAER,OAAQonJ,GAAY,CAChB,YAAazyD,UACb,kBAA6G,QAAxF75E,EAAyC,QAAnC6vE,EAAK1qF,SAASg2D,uBAAoC,IAAP00B,OAAgB,EAASA,EAAGhpC,aAA0B,IAAP7mC,EAAgBA,EAAK,CAAC,GAC3I,0BAA2B6+C,EAC3B,oBAAqBA,EACrB,uBAAwBA,EACxB,6BAA8BA,KAC5B,CACV,CAqDA,SAASiyF,KACL,IAAIjyF,EAAI35D,OACJqY,EAAIs8E,UACJk3D,EAAMlyF,EAAEkyF,IAAKC,EAAoBnyF,EAAEmyF,kBACvC,OAAQ1E,GAAY,GACd,sBAAuB/uI,GACzByzI,GAAqB,YAAaA,EAAkBvqJ,UACpD,wBAAyBo4D,EACzBkyF,EAAIE,SAAS,mCACbF,EAAIE,SAAS,iCACX,CACV,CAmCA,SAASC,KACL,IAAI7nJ,EAAIlE,SAER,OAAQkE,EAAE6nJ,gBAAkB7nJ,EAAE8nJ,kBAAoB9nJ,EAAE+nJ,qBAAuB/nJ,EAAEgoJ,sBAAsB9sJ,KAAK8E,EAC5G,CAOA,SAASioJ,KACL,IAAIC,EAAelB,KACfmB,EAAYX,KACZhyF,EAAI35D,OACJqY,EAAIs8E,UACJntF,EAAI,aAGR,OAAI6kJ,EACQjF,GAAY,GACd,iBAAkBztF,GAIpBthD,EAAE7Q,IAAM,iBAAkB6Q,EAAE7Q,KAC1B,WAAY,IAAI+kJ,UAChB,IAEDD,GACElF,GAAY,CAAC,wBAAyBztF,EAAG,gBAAiBA,EAAG,WAAWrjC,KAAKje,EAAEm0I,eAAiB,CAO/G,CAgLA,SAASC,GAAe7tJ,GACpB,IAAIy1B,EAAQ,IAAIjlB,MAAMxQ,GAEtB,OADAy1B,EAAMz1B,KAAOA,EACNy1B,CACX,CAYA,SAASq4H,GAAW59H,EAAQ69H,EAAaC,GACrC,IAAIjiE,EAAI7vE,EAAI++E,EAEZ,YADwB,IAApB+yD,IAA8BA,EAAkB,IAC7CrH,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAI8C,EAAG0oJ,EACP,OAAOlH,GAAYtkJ,MAAM,SAAUyrJ,GAC/B,OAAQA,EAAGlH,OACP,KAAK,EACDzhJ,EAAIlE,SACJ6sJ,EAAGlH,MAAQ,EACf,KAAK,EACD,OAAMzhJ,EAAEqpB,KAAa,CAAC,EAAa,GAC5B,CAAC,EAAasM,GAAK8yH,IAC9B,KAAK,EAED,OADAE,EAAGjH,OACI,CAAC,EAAa,GACzB,KAAK,EACDgH,EAAS1oJ,EAAEjE,cAAc,UACzB4sJ,EAAGlH,MAAQ,EACf,KAAK,EAED,OADAkH,EAAGhH,KAAKtjJ,KAAK,CAAC,EAAE,CAAG,GAAI,KAChB,CAAC,EAAa,IAAIoxB,SAAQ,SAAUmtH,EAAUgM,GAC7C,IAAIC,GAAa,EACb5nH,EAAU,WACV4nH,GAAa,EACbjM,GACJ,EAKA8L,EAAOn1H,OAAS0N,EAChBynH,EAAOl1H,QALM,SAAUtD,GACnB24H,GAAa,EACbD,EAAQ14H,EACZ,EAGA,IAAIstB,EAAQkrG,EAAOlrG,MACnBA,EAAMC,YAAY,UAAW,QAAS,aACtCD,EAAMi8B,SAAW,WACjBj8B,EAAMwV,IAAM,IACZxV,EAAMh6C,KAAO,IACbg6C,EAAMsrG,WAAa,SACfN,GAAe,WAAYE,EAC3BA,EAAOK,OAASP,EAGhBE,EAAOj1H,IAAM,cAEjBzzB,EAAEqpB,KAAKkL,YAAYm0H,GAInB,IAAIM,EAAkB,WAClB,IAAIxiE,EAAI7vE,EAIJkyI,IAK6I,cAApD,QAAvFlyI,EAAqC,QAA/B6vE,EAAKkiE,EAAOn3F,qBAAkC,IAAPi1B,OAAgB,EAASA,EAAG1qF,gBAA6B,IAAP6a,OAAgB,EAASA,EAAGid,YAC7HqN,IAGArK,WAAWoyH,EAAiB,IAEpC,EACAA,GACJ,KACR,KAAK,EACDL,EAAGjH,OACHiH,EAAGlH,MAAQ,EACf,KAAK,EACD,OAA+F,QAAvF9qI,EAAqC,QAA/B6vE,EAAKkiE,EAAOn3F,qBAAkC,IAAPi1B,OAAgB,EAASA,EAAG1qF,gBAA6B,IAAP6a,OAAgB,EAASA,EAAG0S,MAAc,CAAC,EAAa,GACxJ,CAAC,EAAasM,GAAK8yH,IAC9B,KAAK,EAED,OADAE,EAAGjH,OACI,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa/2H,EAAO+9H,EAAQA,EAAOn3F,gBACnD,KAAK,EAAG,MAAO,CAAC,EAAco3F,EAAGjH,QACjC,KAAK,GAED,OAD6B,QAA5BhsD,EAAKgzD,EAAO7/H,kBAA+B,IAAP6sE,GAAyBA,EAAGv7C,YAAYuuG,GACtE,CAAC,GACZ,KAAK,GAAI,MAAO,CAAC,GAEzB,GACJ,GACJ,CAKA,SAASO,GAAkBC,GAGvB,IAFA,IAAI1iE,EAn/BR,SAAgC0iE,GAW5B,IAVA,IAAI1iE,EAAI7vE,EACJwyI,EAAe,sBAAsBhhJ,OAAO+gJ,EAAU,KACtDE,EAAW,sBAAsBt4H,KAAKo4H,GACtChsH,EAAMksH,EAAS,SAAMltJ,EACrB6rF,EAAa,CAAC,EACdshE,EAAa,0BACbC,EAAe,SAAU7uJ,EAAMiB,GAC/BqsF,EAAWttF,GAAQstF,EAAWttF,IAAS,GACvCstF,EAAWttF,GAAM4D,KAAK3C,EAC1B,IACS,CACL,IAAI2vB,EAAQg+H,EAAWv4H,KAAKs4H,EAAS,IACrC,IAAK/9H,EACD,MAEJ,IAAI2G,EAAO3G,EAAM,GACjB,OAAQ2G,EAAK,IACT,IAAK,IACDs3H,EAAa,QAASt3H,EAAKj1B,MAAM,IACjC,MACJ,IAAK,IACDusJ,EAAa,KAAMt3H,EAAKj1B,MAAM,IAC9B,MACJ,IAAK,IACD,IAAIwsJ,EAAiB,yDAAyDz4H,KAAKkB,GACnF,IAAIu3H,EAIA,MAAM,IAAIt+I,MAAMk+I,GAHhBG,EAAaC,EAAe,GAA2F,QAAtF5yI,EAAkC,QAA5B6vE,EAAK+iE,EAAe,UAAuB,IAAP/iE,EAAgBA,EAAK+iE,EAAe,UAAuB,IAAP5yI,EAAgBA,EAAK,IAKxJ,MAEJ,QACI,MAAM,IAAI1L,MAAMk+I,GAE5B,CACA,MAAO,CAACjsH,EAAK6qD,EACjB,CA48BayhE,CAAuBN,GAAWhsH,EAAMspD,EAAG,GAAIuB,EAAavB,EAAG,GACpExgE,EAAUlqB,SAASC,cAAsB,OAARmhC,QAAwB,IAARA,EAAiBA,EAAM,OACnEnlB,EAAK,EAAGpB,EAAK9d,OAAOqtB,KAAK6hE,GAAahwE,EAAKpB,EAAGnb,OAAQuc,IAAM,CACjE,IAAI0xI,EAAS9yI,EAAGoB,GACZrc,EAAQqsF,EAAW0hE,GAAQj9I,KAAK,KAGrB,UAAXi9I,EACAC,GAAe1jI,EAAQw3B,MAAO9hD,GAG9BsqB,EAAQoO,aAAaq1H,EAAQ/tJ,EAErC,CACA,OAAOsqB,CACX,CAIA,SAAS0jI,GAAelsG,EAAOz3B,GAG3B,IAAK,IAAIhO,EAAK,EAAGyuE,EAAKzgE,EAAO2uB,MAAM,KAAM38B,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CAC3D,IAAI0O,EAAW+/D,EAAGzuE,GACdsT,EAAQ,8CAA8CyF,KAAKrK,GAC/D,GAAI4E,EAAO,CACP,IAAIs+H,EAASt+H,EAAM,GAAI3vB,EAAQ2vB,EAAM,GAAIs6B,EAAWt6B,EAAM,GAC1DmyB,EAAMC,YAAYksG,EAAQjuJ,EAAOiqD,GAAY,GACjD,CACJ,CACJ,CA6BA,IAKIikG,GAAY,CAAC,YAAa,aAAc,SACxCC,GAAW,CAEX,kBACA,WACA,YACA,qBACA,mBACA,mBACA,mBACA,SACA,2BACA,UACA,UACA,iBACA,YACA,YACA,kBACA,eACA,eACA,SACA,YACA,OACA,mBACA,iBACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,QACA,YACA,aACA,yBACA,eACA,WACA,aACA,UACA,YACA,mBACA,aACA,mBACA,WACA,WACA,YACA,iBACA,SACA,SACA,cACA,iBACA,aACA,uBACA,SACA,YA0NJ,SAASC,GAAe90D,GACpB,OAAOA,EAAOxD,WAClB,CAyGA,IAGIu4D,GACAC,GAJAC,GAA2B,KAkC/B,SAASC,KACL,IAAI9rJ,EAAQlB,KAEZ,OAzBJ,WACI,QAAiChB,IAA7B8tJ,GAAJ,CAGA,IAAIG,EAAmB,WACnB,IAAIC,EAAYC,KACZC,GAAgBF,GAChBJ,GAA2BpzH,WAAWuzH,EAAkBF,KAGxDF,GAAoBK,EACpBJ,QAA2B9tJ,EAEnC,EACAiuJ,GAXA,CAYJ,CASII,GACO,WAAc,OAAOnJ,GAAUhjJ,OAAO,OAAQ,GAAQ,WACzD,IAAIgsJ,EACJ,OAAO5I,GAAYtkJ,MAAM,SAAUspF,GAC/B,OAAQA,EAAGi7D,OACP,KAAK,EAED,OAAK6I,GADLF,EAAYC,MAERN,GACO,CAAC,EAAc/H,GAAc,GAAI+H,IAAmB,IA7yBnF,WACI,IAAI/pJ,EAAIlE,SACR,OAAOkE,EAAEwqJ,mBAAqBxqJ,EAAEyqJ,qBAAuBzqJ,EAAE0qJ,sBAAwB1qJ,EAAE2qJ,yBAA2B,IAClH,CA4yByBC,GAIE,CAAC,EAAa/C,MAJe,CAAC,EAAa,GAJV,CAAC,EAAa,GAS1D,KAAK,EAIDrhE,EAAGk7D,OACH0I,EAAYC,KACZ7jE,EAAGi7D,MAAQ,EACf,KAAK,EAID,OAHK6I,GAAgBF,KACjBL,GAAoBK,GAEjB,CAAC,EAAcA,GAElC,GACJ,GAAI,CACR,CA8BA,SAASC,KACL,IAAIp2I,EAAI4sF,OAMR,MAAO,CACHkiD,GAAW9jC,GAAQhrG,EAAE42I,UAAW,MAChC9H,GAAW9jC,GAAQhrG,EAAEi9B,OAAS+tE,GAAQhrG,EAAE62I,YAAc/H,GAAW9jC,GAAQhrG,EAAE82I,WAAY,GAAI,MAC3FhI,GAAW9jC,GAAQhrG,EAAEk9B,QAAU8tE,GAAQhrG,EAAE+2I,aAAejI,GAAW9jC,GAAQhrG,EAAE42I,UAAW,GAAI,MAC5F9H,GAAW9jC,GAAQhrG,EAAE82I,WAAY,MAEzC,CACA,SAAST,GAAgBF,GACrB,IAAK,IAAInqJ,EAAI,EAAGA,EAAI,IAAKA,EACrB,GAAImqJ,EAAUnqJ,GACV,OAAO,EAGf,OAAO,CACX,CAweA,SAASgrJ,GAAoBC,GACzB,IAAI1kE,EACJ,OAAO46D,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAI8C,EAAGnB,EAAMssJ,EAAUC,EAAqBplI,EAASqlI,EAAQprJ,EAC7D,OAAOuhJ,GAAYtkJ,MAAM,SAAUyZ,GAC/B,OAAQA,EAAG8qI,OACP,KAAK,EASD,IARAzhJ,EAAIlE,SACJ+C,EAAOmB,EAAEjE,cAAc,OACvBovJ,EAAW,IAAIvlI,MAAMslI,EAAU1vJ,QAC/B4vJ,EAAmB,CAAC,EAEpBE,GAAUzsJ,GAGLoB,EAAI,EAAGA,EAAIirJ,EAAU1vJ,SAAUyE,EAER,YADxB+lB,EAAUijI,GAAkBiC,EAAUjrJ,KAC1B++D,SACRh5C,EAAQulI,OAIZD,GAFAD,EAASrrJ,EAAEjE,cAAc,QAGzBsvJ,EAAO92H,YAAYvO,GACnBnnB,EAAK01B,YAAY82H,GACjBF,EAASlrJ,GAAK+lB,EAElBrP,EAAG8qI,MAAQ,EACf,KAAK,EACD,OAAMzhJ,EAAEqpB,KAAa,CAAC,EAAa,GAC5B,CAAC,EAAasM,GAAK,KAC9B,KAAK,EAED,OADAhf,EAAG+qI,OACI,CAAC,EAAa,GACzB,KAAK,EACD1hJ,EAAEqpB,KAAKkL,YAAY11B,GACnB,IAEI,IAAKoB,EAAI,EAAGA,EAAIirJ,EAAU1vJ,SAAUyE,EAC3BkrJ,EAASlrJ,GAAGurJ,eACbJ,EAAiBF,EAAUjrJ,KAAM,EAG7C,CAAC,QAG8B,QAA1BumF,EAAK3nF,EAAKgqB,kBAA+B,IAAP29D,GAAyBA,EAAGrsC,YAAYt7C,EAC/E,CACA,MAAO,CAAC,EAAcusJ,GAElC,GACJ,GACJ,CACA,SAASE,GAAUtlI,GACfA,EAAQw3B,MAAMC,YAAY,aAAc,SAAU,aAClDz3B,EAAQw3B,MAAMC,YAAY,UAAW,QAAS,YAClD,CA0CA,SAASguG,GAAY/vJ,GACjB,OAAOmuB,WAAW,qBAAqB1hB,OAAOzM,EAAO,MAAM0uB,OAC/D,CAcA,SAASshI,GAAYhwJ,GACjB,OAAOmuB,WAAW,mBAAmB1hB,OAAOzM,EAAO,MAAM0uB,OAC7D,CA8CA,SAASuhI,GAAYjwJ,GACjB,OAAOmuB,WAAW,sBAAsB1hB,OAAOzM,EAAO,MAAM0uB,OAChE,CAcA,SAASwhI,GAAYlwJ,GACjB,OAAOmuB,WAAW,4BAA4B1hB,OAAOzM,EAAO,MAAM0uB,OACtE,CAcA,SAASyhI,GAAYnwJ,GACjB,OAAOmuB,WAAW,kCAAkC1hB,OAAOzM,EAAO,MAAM0uB,OAC5E,CAcA,SAAS0hI,GAAUpwJ,GACf,OAAOmuB,WAAW,mBAAmB1hB,OAAOzM,EAAO,MAAM0uB,OAC7D,CAEA,IAAIxoB,GAAIyI,KACJ0hJ,GAAa,WAAc,OAAO,CAAG,EAiEzC,IAIIC,GAAU,CAKV91E,QAAS,GAET2nD,MAAO,CAAC,CAAEouB,KAAM,uBAEhBC,MAAO,CAAC,CAAEC,WAAY,UAEtBC,KAAM,CAAC,CAAED,WAAY,eAErBE,KAAM,CAAC,CAAEF,WAAY,cAKrBl+I,IAAK,CAAC,CAAEq+I,SAAU,QAElBC,OAAQ,CAAC,CAAEJ,WAAY,eAoK3B,IAAIK,GA38CJ,WAEI,IADA,IAAIC,EAAgB5wJ,SACX,CACL,IAAI85D,EAAe82F,EAAc1oC,OACjC,IAAKpuD,GAAgBA,IAAiB82F,EAClC,OAAO,EAEX,IACI,GAAI92F,EAAapwB,SAASgmF,SAAWkhC,EAAclnH,SAASgmF,OACxD,OAAO,CAEf,CACA,MAAOr7F,GAEH,GAAIA,aAAiBjlB,OAAwB,kBAAfilB,EAAMz1B,KAChC,OAAO,EAEX,MAAMy1B,CACV,CACAu8H,EAAgB92F,CACpB,CACJ,EAm9CA,IAGI+2F,GAAyB,IAAI78H,IAAI,CACjC,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC7G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAChH,MAAO,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAC9G,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC/G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,OAItD88H,GAAuB,IAAI98H,IAAI,CAC/B,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAEA+8H,GAAc,CAAC,kBAAmB,iBAClCC,GAAiB,CAAC,YAAa,eAAgB,aAAc,UAAW,aAAc,YACtFC,GAA4B,4BA0GhC,SAASC,GAAgBt7E,GACrB,GAAIA,EAAMu7E,MACN,OAAOv7E,EAAMu7E,MAAM1/G,QAEvB,IACIA,EADA0nD,EAASl5F,SAASC,cAAc,UAEpCi5F,EAAO74F,iBAAiB,2BAA2B,WAAc,OAAQmxC,OAAUpxC,CAAY,IAC/F,IAAK,IAAI6b,EAAK,EAAGyuE,EAAK,CAAC,QAAS,sBAAuBzuE,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CACzE,IAAIgc,EAAOyyD,EAAGzuE,GACd,IACIu1B,EAAU0nD,EAAOC,WAAWlhE,EAChC,CACA,MAAOpd,GACH,CAEJ,GAAI22B,EACA,KAER,CAEA,OADAmkC,EAAMu7E,MAAQ,CAAE1/G,QAASA,GAClBA,CACX,CAMA,SAAS2/G,GAAmBz1I,EAAI01I,EAAYC,GACxC,IAAIC,EAAkB51I,EAAG61I,yBAAyB71I,EAAG01I,GAAa11I,EAAG21I,IACrE,OAAOC,EAAkB,CAACA,EAAgBE,SAAUF,EAAgBG,SAAUH,EAAgBI,WAAa,EAC/G,CACA,SAASC,GAA0BviJ,GAG/B,OADWrS,OAAOqtB,KAAKhb,EAAIgjB,WACf9H,OAAOsnI,GACvB,CACA,SAASA,GAAejwJ,GACpB,MAAsB,kBAARA,IAAqBA,EAAI4tB,MAAM,cACjD,CAKA,SAASsiI,KACL,OAAOnG,IACX,CAWA,SAASoG,GAAuBp2I,GAC5B,MAAkC,oBAApBA,EAAGq2I,YACrB,CAyBA,IAAIpI,GAAU,CAMVqI,MA9mDJ,WACI,IAAI1vJ,EAAQlB,KAIZ,OAAOqrJ,IAAW,SAAU7hI,EAAG8/D,GAC3B,IAAI1qF,EAAW0qF,EAAG1qF,SAClB,OAAOslJ,GAAUhjJ,OAAO,OAAQ,GAAQ,WACpC,IAAIitJ,EAAQ0C,EAAgBC,EAAcC,EAAeC,EAAYC,EAA+CC,EAAsBC,EAAiBC,EAAgBC,EAAYhwJ,EACvL,OAAOijJ,GAAYtkJ,MAAM,SAAUyZ,GA+C/B,KA9CA00I,EAASvvJ,EAASutB,MACXm0B,MAAM8uG,SAvEd,QAwECyB,EAAiBjyJ,EAASC,cAAc,QACzByhD,MAAMC,YAAY,aAAc,SAAU,aACzDuwG,EAAe,CAAC,EAChBC,EAAgB,CAAC,EACjBC,EAAa,SAAU/B,GACnB,IAAIqC,EAAO1yJ,EAASC,cAAc,QAC9ByhD,EAAQgxG,EAAKhxG,MAOjB,OANAA,EAAMi8B,SAAW,WACjBj8B,EAAMwV,IAAM,IACZxV,EAAMh6C,KAAO,IACbg6C,EAAM2uG,WAAaA,EACnBqC,EAAK70G,YArFR,gBAsFGo0G,EAAex5H,YAAYi6H,GACpBA,CACX,EACAL,EAAsB,SAAUM,EAAcC,GAC1C,OAAOR,EAAW,IAAI/lJ,OAAOsmJ,EAAc,MAAMtmJ,OAAOumJ,GAC5D,EAIAN,EAAuB,WAMnB,IAJA,IAAIO,EAAQ,CAAC,EACTC,EAAU,SAAU3C,GACpB0C,EAAM1C,GAAQrC,GAAUh7I,KAAI,SAAU8/I,GAAY,OAAOP,EAAoBlC,EAAMyC,EAAW,GAClG,EACS32I,EAAK,EAAG82I,EAAahF,GAAU9xI,EAAK82I,EAAWrzJ,OAAQuc,IAAM,CAElE62I,EADWC,EAAW92I,GAE1B,CACA,OAAO42I,CACX,EACAN,EAAkB,SAAUS,GACxB,OAAOlF,GAAU12D,MAAK,SAAUw7D,EAAUK,GACtC,OAAOD,EAAUC,GAAel1E,cAAgBm0E,EAAaU,IACzDI,EAAUC,GAAe52C,eAAiB81C,EAAcS,EAChE,GACJ,EACAJ,EArB2B,WACvB,OAAO1E,GAAUh7I,IAAIs/I,EACzB,CAmBiBc,GACjBT,EAAaH,IAEb/C,EAAO92H,YAAYw5H,GAEdxvJ,EAAQ,EAAGA,EAAQqrJ,GAAUpuJ,OAAQ+C,IACtCyvJ,EAAapE,GAAUrrJ,IAAU+vJ,EAAe/vJ,GAAOs7E,YACvDo0E,EAAcrE,GAAUrrJ,IAAU+vJ,EAAe/vJ,GAAO45G,aAG5D,MAAO,CAAC,EAAc0xC,GAASzjI,QAAO,SAAU6lI,GAAQ,OAAOoC,EAAgBE,EAAWtC,GAAQ,IACtG,GACJ,GACJ,GACJ,EA8iDIgD,YAlvBJ,SAAwBzoE,GACpB,IAAkC0oE,QAAlB,IAAP1oE,EAAgB,CAAC,EAAIA,GAAe0oE,MAC7C,OAAO9N,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAIiyJ,EAASC,EAA2BhE,EAAkBiE,EACtD35D,EACJ,OAAO8rD,GAAYtkJ,MAAM,SAAUyrJ,GAC/B,OAAQA,EAAGlH,OACP,KAAK,EACD,OAyBTyF,MAAce,MAtBLkH,EA7RpB,WACI,IAAIG,EAAUC,KACd,MAAO,CACHC,QAAS,CACL,kBACA,mBACA,wBACA,wBACAF,EAAQ,yBAEZG,MAAO,CAAC,YAAa,iBAAkBH,EAAQ,oBAAqB,2BAA4B,UAChGI,eAAgB,CACZ,cACAJ,EAAQ,oBACR,aACAA,EAAQ,wCACRA,EAAQ,yDAEZK,eAAgB,CACZ,oBACA,QACA,uBACA,YACAL,EAAQ,qDAEZM,sBAAuB,CACnB,oBACA,kBACA,qBACAN,EAAQ,4BACRA,EAAQ,qBAEZO,kBAAmB,CACf,aACA,oBACA,yBACA,UACA,iDAEJC,YAAa,CACT,sBACAR,EAAQ,oBACRA,EAAQ,wBACRA,EAAQ,4BACRA,EAAQ,qBAEZS,eAAgB,CACZT,EAAQ,oBACRA,EAAQ,oCACR,eACAA,EAAQ,oCACRA,EAAQ,qCAEZU,cAAe,CACX,WACAV,EAAQ,gCACR,mBACA,aACAA,EAAQ,iBAEZW,cAAe,CAAC,uCAChBC,gBAAiB,CACb,eACAZ,EAAQ,wDACRA,EAAQ,gCACRA,EAAQ,gBACRA,EAAQ,6BAEZa,cAAe,CACXb,EAAQ,oBACRA,EAAQ,gBACR,0BACA,gBACAA,EAAQ,yBAEZc,eAAgB,CACZd,EAAQ,oDACRA,EAAQ,gBACR,yBACAA,EAAQ,oCACR,qBAEJe,cAAe,CACXf,EAAQ,gEACRA,EAAQ,oDACR,cACA,eACA,iBAEJgB,yBAA0B,CAAC,oBAAqB,eAAgB,iBAAkB,cAAe,cACjGC,0BAA2B,CACvB,eACAjB,EAAQ,oDACRA,EAAQ,gEACRA,EAAQ,oDACR,kBAEJkB,eAAgB,CACZ,aACAlB,EAAQ,gBACRA,EAAQ,wDACRA,EAAQ,wDACRA,EAAQ,yDAEZmB,UAAW,CAACnB,EAAQ,gCAAiC,iBAAkB,kBAAmB,sBAC1FoB,SAAU,CACN,cACApB,EAAQ,gCACRA,EAAQ,4BACR,mBACAA,EAAQ,iCAEZqB,cAAe,CACXrB,EAAQ,wDACRA,EAAQ,wBACR,YACA,kBACA,cAEJsB,eAAgB,CACZ,gBACA,oBACA,uBACAtB,EAAQ,4BACR,6BAEJuB,oBAAqB,CACjB,oBACAvB,EAAQ,wBACRA,EAAQ,4BACR,SACAA,EAAQ,iCAEZwB,cAAe,CACXxB,EAAQ,oBACRA,EAAQ,oCACR,YACAA,EAAQ,oDACR,sBAEJyB,gBAAiB,CACb,oBACAzB,EAAQ,4BACRA,EAAQ,oBACRA,EAAQ,gCACRA,EAAQ,6CAEZ0B,cAAe,CACX1B,EAAQ,4BACR,4BACAA,EAAQ,4DACRA,EAAQ,oDACRA,EAAQ,iEAEZ2B,kBAAmB,CACf3B,EAAQ,4BACRA,EAAQ,4BACRA,EAAQ,4CACRA,EAAQ,gDACRA,EAAQ,iDAEZ4B,SAAU,CAAC5B,EAAQ,qDACnB6B,iBAAkB,CAAC,iBAAkB,mBAAoB,mBAAoB,qBAAsB,aACnGC,mBAAoB,CAAC,oCACrBC,uBAAwB,CACpB,kBACA,oDACA,mBACA,kEACA,mBAEJC,aAAc,CAAC,YAAa,kBAAmB,iBAAkB,kBAAmB,2BACpFC,gBAAiB,CACbjC,EAAQ,4DACRA,EAAQ,gDACR,6BACAA,EAAQ,oBACR,gBAEJkC,aAAc,CACVlC,EAAQ,gDACRA,EAAQ,4DACRA,EAAQ,oEACR,gBACA,kBAEJmC,UAAW,CACP,cACA,6BACAnC,EAAQ,gBACRA,EAAQ,gCACR,mBAEJoC,sBAAuB,CACnB,gDACA,iCACA,yBACA,yBACA,oBAEJC,aAAc,CAACrC,EAAQ,qEACvBsC,QAAS,CACLtC,EAAQ,4KAERA,EAAQ,6KAGZuC,OAAQ,CACJvC,EAAQ,gDACRA,EAAQ,4BACRA,EAAQ,gDACRA,EAAQ,wBACR,4BAEJwC,QAAS,CACLxC,EAAQ,oBACR,2BACAA,EAAQ,oCACRA,EAAQ,gCACRA,EAAQ,yDAEZyC,QAAS,CACLzC,EAAQ,oDACRA,EAAQ,oCACRA,EAAQ,gDACR,yBACA,mCAEJ0C,eAAgB,CACZ,8BACA1C,EAAQ,gDACRA,EAAQ,wEACRA,EAAQ,gEACRA,EAAQ,yBAEZhhD,GAAI,CACAghD,EAAQ,4DACRA,EAAQ,oEACRA,EAAQ,4EACRA,EAAQ,oDACR,oBAEJ2C,KAAM,CACF3C,EAAQ,oCACRA,EAAQ,oCACRA,EAAQ,wCACR,WACA,qBAEJ4C,QAAS,CACL,2BACA5C,EAAQ,oDACRA,EAAQ,gBACR,QACA,eAEJ6C,uBAAwB,CACpB,sBACA,gBACA7C,EAAQ,4BACR,qBACA,2BAGZ,CAqB8B8C,GACVhD,EAAcv2J,OAAOqtB,KAAKipI,GAEnB,CAAC,EAAalE,IADLv1D,EAAK,IAAIvtF,OAAOxM,MAAM+5F,EAAI05D,EAAYxgJ,KAAI,SAAUyjJ,GAAc,OAAOlD,EAAQkD,EAAa,QAJnG,CAAC,OAAcn2J,GAM9B,KAAK,EAWD,OAVAkvJ,EAAmBzC,EAAGjH,OAClBwN,GA2ExB,SAAoBC,EAAS/D,GAEzB,IADA,IAAI3kJ,EAAU,2BACLsR,EAAK,EAAGyuE,EAAK3tF,OAAOqtB,KAAKipI,GAAUp3I,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CAC9D,IAAIs6I,EAAa7rE,EAAGzuE,GACpBtR,GAAW,KAAK0B,OAAOkqJ,EAAY,KACnC,IAAK,IAAI17I,EAAK,EAAG++E,EAAKy5D,EAAQkD,GAAa17I,EAAK++E,EAAGl6F,OAAQmb,IAAM,CAC7D,IAAIuyI,EAAWxzD,EAAG/+E,GAClBlQ,GAAW,OAAO0B,OAAOijJ,EAAiBlC,GAAY,eAAO,eAAM,KAAK/gJ,OAAO+gJ,EACnF,CACJ,CAGA5iF,QAAQvjB,IAAI,GAAG56C,OAAO1B,EAAS,SACnC,CAvFwB6rJ,CAAWnD,EAAS/D,IAExBiE,EAAiBD,EAAYhpI,QAAO,SAAUisI,GAC1C,IAAInH,EAAYiE,EAAQkD,GAExB,OADmBpP,GAAYiI,EAAUt8I,KAAI,SAAUs6I,GAAY,OAAOkC,EAAiBlC,EAAW,KAC7D,GAAnBgC,EAAU1vJ,MACpC,KACes5G,OACR,CAAC,EAAcu6C,GAElC,GACJ,GACJ,EAqtBIkD,gBArZJ,WACI,OAkCJ,SAA0B5nI,EAAQ6nI,QACL,IAArBA,IAA+BA,EAAmB,KA6CtD,OAAOjK,IAAW,SAAU7hI,EAAG+rI,GAC3B,IAAIC,EAAiBD,EAAa32J,SAC9B62J,EAAaD,EAAerpI,KAC5BupI,EAAYD,EAAWn1G,MAC3Bo1G,EAAU1hH,MAAQ,GAAG/oC,OAAOqqJ,EAAkB,MAC9CI,EAAUC,qBAAuBD,EAAUE,eAAiB,OAExD9L,KACA2L,EAAWn1G,MAAMZ,KAAO,GAAGz0C,OAAO,EAAIsqJ,EAAar9D,kBAE9C8xD,OACLyL,EAAWn1G,MAAMZ,KAAO,SAG5B,IAAIm2G,EAAcL,EAAe32J,cAAc,OAG/C,OAFAg3J,EAAYp5G,YAAcqoG,GAAc,GAAIp8H,MAAO4sI,EAAmB,GAAO,IAAI,GAAM5jJ,KAAI,WAAc,MAAO,MAAQ,IAAGpC,KAAK,KAChImmJ,EAAWp+H,YAAYw+H,GAChBpoI,EAAO+nI,EAAgBC,EAClC,GAAG,kGACP,CAnGWK,EAAiB,SAAUl3J,EAAUi8E,GAKxC,IAJA,IAAIozE,EAAW,CAAC,EACZ8H,EAAQ,CAAC,EAGJl7I,EAAK,EAAGyuE,EAAK3tF,OAAOqtB,KAAK8lI,IAAUj0I,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CAC9D,IAAIta,EAAM+oF,EAAGzuE,GACTpB,EAAKq1I,GAAQvuJ,GAAMi4F,EAAK/+E,EAAG,GAAI6mC,OAAe,IAAPk4C,EAAgB,CAAC,EAAIA,EAAIizD,EAAKhyI,EAAG,GAAI2d,OAAc,IAAPq0H,EA3CjF,oBA2C+GA,EACjH3iI,EAAUlqB,EAASC,cAAc,QACrCiqB,EAAQ2zB,YAAcrlB,EACtBtO,EAAQw3B,MAAM01G,WAAa,SAC3B,IAAK,IAAIC,EAAK,EAAGC,EAAKv6J,OAAOqtB,KAAKs3B,GAAQ21G,EAAKC,EAAG53J,OAAQ23J,IAAM,CAC5D,IAAI1J,EAAS2J,EAAGD,GACZz3J,EAAQ8hD,EAAMisG,QACJvtJ,IAAVR,IACAsqB,EAAQw3B,MAAMisG,GAAU/tJ,EAEhC,CACAyvJ,EAAS1tJ,GAAOuoB,EAChB+xD,EAAU4sD,OAAO7oI,EAASC,cAAc,MAAOiqB,EACnD,CAEA,IAAK,IAAIqtI,EAAK,EAAGC,EAAKz6J,OAAOqtB,KAAK8lI,IAAUqH,EAAKC,EAAG93J,OAAQ63J,IAAM,CAE9DJ,EADIx1J,EAAM61J,EAAGD,IACAlI,EAAS1tJ,GAAK81J,wBAAwBriH,KACvD,CACA,OAAO+hH,CACX,GACJ,EAyXIO,MAx+DJ,WACI,OAiECtM,MAAcO,MAAwBH,MAElCN,MA1FT,WAEI,IAAI9yI,EAAIs8E,UACJh7B,EAAI35D,OACJ43J,EAAiBrL,MAAMhrJ,UACvBs2J,EAAiBl+F,EAAEk+F,eACvB,OAAQzQ,GAAY,CAChB,cAAewQ,EACf,mBAAoBA,EACpB,kBAAmBv/I,EACnBw/I,GAAkB,aAAcA,EAChC,uBAAwB99D,MAAMx4F,aAC5B,CACV,CA6EyBu2J,IAvNzB,WAEI,IAAIn+F,EAAI35D,OACJ+3J,EAAap+F,EAAEo+F,WACnB,OAAQ3Q,GAAY,CAChB,UAAWpzH,IAAIzyB,UACf,aAAco4D,EACdo+F,GAAc,oBAAqBA,EAAWx2J,UAC9C,SAAUy2J,sBAAsBz2J,aAC9B,CACV,CA6MgD02J,IAlEhC,EAUhB,WACI,IAAIt+F,EAAI35D,OACJk4J,EAAev+F,EAAEw+F,qBAAuBx+F,EAAEy+F,0BAC9C,IAAKF,EACD,OAAQ,EAMZ,GAoCO7M,OAAeC,OA5L1B,WAEI,IAAI3xF,EAAI35D,OACR,OAAQonJ,GAAY,CAChB,gBAAiBztF,EACjB,8BAA+BA,EAC/B,uBAAwBA,EACxB,uBAAwBA,KACtB,CACV,CAmLgD0+F,GAnCxC,OAAQ,EAEZ,IAAIC,EAAgB,KAEhB7mH,EAAU,IAAIymH,EAAa,EADb,IAC6B,OAC3CK,EAAa9mH,EAAQ+mH,mBACzBD,EAAWrgI,KAAO,WAClBqgI,EAAWE,UAAU54J,MAAQ,IAC7B,IAAI64J,EAAajnH,EAAQknH,2BACzBD,EAAWrkB,UAAUx0I,OAAS,GAC9B64J,EAAWE,KAAK/4J,MAAQ,GACxB64J,EAAW3kH,MAAMl0C,MAAQ,GACzB64J,EAAWG,OAAOh5J,MAAQ,EAC1B64J,EAAWI,QAAQj5J,MAAQ,IAC3B04J,EAAWQ,QAAQL,GACnBA,EAAWK,QAAQtnH,EAAQ1mB,aAC3BwtI,EAAWriG,MAAM,GACjB,IAAIy0B,EAkCR,SAA6Bl5C,GACzB,IAAIunH,EAAoB,EACpBC,EAAmB,IACnBC,EAAsB,IACtBC,EAAwB,IACxB9uJ,EAAW,WAAgC,EAC3C+uJ,EAAgB,IAAIxlI,SAAQ,SAAUwR,EAAS0uD,GAC/C,IAAIulE,GAAc,EACdC,EAAiB,EACjBC,EAAmB,EACvB9nH,EAAQ+nH,WAAa,SAAUt3J,GAAS,OAAOkjC,EAAQljC,EAAMu3J,eAAiB,EAC9E,IAAIC,EAAsB,WACtB3+H,YAAW,WAAc,OAAO+4D,EAAO24D,GAAe,WAA0C,GAAGj+I,KAAK4D,IAAI8mJ,EAAqBK,EAAmBJ,EAAwBlmI,KAAKsG,OACrL,EACIogI,EAAY,WACZ,IACI,IAAIC,EAAmBnoH,EAAQooH,iBAM/B,OAJIrT,GAAUoT,IAEV5S,GAAkC4S,GAE9BnoH,EAAQ/wB,OACZ,IAAK,UACD64I,EAAmBtmI,KAAKsG,MACpB8/H,GACAK,IAEJ,MAIJ,IAAK,YAKIz5J,SAAS65J,QACVR,IAEAD,GAAeC,GAAkBN,EACjCllE,EAAO24D,GAAe,cAGtB1xH,WAAW4+H,EAAWV,GAItC,CACA,MAAO5kI,GACHy/D,EAAOz/D,EACX,CACJ,EACAslI,IACAtvJ,EAAW,WACFgvJ,IACDA,GAAc,EACVE,EAAmB,GACnBG,IAGZ,CACJ,IACA,MAAO,CAACN,EAAe/uJ,EAC3B,CAlGa0vJ,CAAoBtoH,GAAUuoH,EAAgBrvE,EAAG,GAAIsvE,EAAkBtvE,EAAG,GAE/EuvE,EAAqBlT,GAAkCgT,EAAcz+F,MAAK,SAAUzlD,GAAU,OAiGtG,SAAiB4iI,GAEb,IADA,IAAIxgI,EAAO,EACF9T,EAAI,EAAGA,EAAIs0I,EAAO/4I,SAAUyE,EACjC8T,GAAQ1J,KAAK2H,IAAIuiI,EAAOt0I,IAE5B,OAAO8T,CACX,CAvG6GiiJ,CAAQrkJ,EAAOskJ,eAAe,GAAGC,SAAS/B,GAAiB,IAAG,SAAUjkI,GAC7K,GAAmB,YAAfA,EAAMz1B,MAAkE,cAAfy1B,EAAMz1B,KAC/D,OAAQ,EAEZ,MAAMy1B,CACV,KACA,OAAO,WAEH,OADA4lI,IACOC,CACX,CACJ,CAhDWI,EACX,EAo+DIC,YApuCJ,WACI,IAAIh4J,EAAQlB,KACZ,GAAIgqJ,MAAcO,MAAwBH,KACtC,OAAO,WAAc,OAAO73H,QAAQwR,aAAQ/kC,EAAY,EAE5D,IAAIm6J,EAAoBnM,KACxB,OAAO,WAAc,OAAO9I,GAAUhjJ,OAAO,OAAQ,GAAQ,WACzD,IAAIgsJ,EAAWkM,EACf,OAAO9U,GAAYtkJ,MAAM,SAAUspF,GAC/B,OAAQA,EAAGi7D,OACP,KAAK,EAAG,MAAO,CAAC,EAAa4U,KAC7B,KAAK,EAKD,OAJAjM,EAAY5jE,EAAGk7D,OAIR,CAAC,EAAc,EAHtB4U,EAAc,SAAUC,GAAY,OAAqB,OAAbA,EAAoB,KAAOl0J,GAAMk0J,EAxFzE,GAwFwG,GAGzEnM,EAAU,IAAKkM,EAAYlM,EAAU,IAAKkM,EAAYlM,EAAU,IAAKkM,EAAYlM,EAAU,MAE1I,GACJ,GAAI,CACR,EAitCIp1D,OA7gDJ,WACI,OAQJ,SAAsCwhE,GAClC,IAAIhwE,EAEAiwE,EACAniI,EAFAoiI,GAAU,EAGV//I,EAeR,WACI,IAAIq+E,EAASl5F,SAASC,cAAc,UAGpC,OAFAi5F,EAAO9jD,MAAQ,EACf8jD,EAAO7jD,OAAS,EACT,CAAC6jD,EAAQA,EAAOC,WAAW,MACtC,CApBa0hE,GAAqB3hE,EAASr+E,EAAG,GAAI22B,EAAU32B,EAAG,IAqB/D,SAAqBq+E,EAAQ1nD,GACzB,SAAUA,IAAW0nD,EAAOxD,UAChC,CAtBSolE,CAAY5hE,EAAQ1nD,GACrBmpH,EAAWniI,EAAO,eAGlBoiI,EAmBR,SAA4BppH,GAKxB,OAFAA,EAAQtB,KAAK,EAAG,EAAG,GAAI,IACvBsB,EAAQtB,KAAK,EAAG,EAAG,EAAG,IACdsB,EAAQupH,cAAc,EAAG,EAAG,UACxC,CAzBkBC,CAAmBxpH,GACzBkpH,EACAC,EAAWniI,EAAO,WAGlBkyD,EAqBZ,SAAsBwO,EAAQ1nD,IAiB9B,SAAyB0nD,EAAQ1nD,GAE7B0nD,EAAO9jD,MAAQ,IACf8jD,EAAO7jD,OAAS,GAChB7D,EAAQypH,aAAe,aACvBzpH,EAAQC,UAAY,OACpBD,EAAQE,SAAS,IAAK,EAAG,GAAI,IAC7BF,EAAQC,UAAY,OAGpBD,EAAQ2+G,KAAO,yBAOf,IAAI+K,EAAc,qBAAqB7uJ,OAAOzK,OAAOqP,aAAa,MAAO,QACzEugC,EAAQ2pH,SAASD,EAAa,EAAG,IACjC1pH,EAAQC,UAAY,yBACpBD,EAAQ2+G,KAAO,aACf3+G,EAAQ2pH,SAASD,EAAa,EAAG,GACrC,CAtCIE,CAAgBliE,EAAQ1nD,GACxB,IAAI6pH,EAAarN,GAAe90D,GAC5BoiE,EAAatN,GAAe90D,GAGhC,GAAImiE,IAAeC,EACf,MAAO,CAAC,WAAuC,aAiCvD,SAA6BpiE,EAAQ1nD,GAEjC0nD,EAAO9jD,MAAQ,IACf8jD,EAAO7jD,OAAS,IAIhB7D,EAAQ+pH,yBAA2B,WACnC,IAAK,IAAIt/I,EAAK,EAAGyuE,EAAK,CAClB,CAAC,OAAQ,GAAI,IACb,CAAC,OAAQ,GAAI,IACb,CAAC,OAAQ,GAAI,KACdzuE,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CACrB,IAAIpB,EAAK6vE,EAAGzuE,GAAK82C,EAAQl4C,EAAG,GAAIzW,EAAIyW,EAAG,GAAIrT,EAAIqT,EAAG,GAClD22B,EAAQC,UAAYshB,EACpBvhB,EAAQ6kD,YACR7kD,EAAQioD,IAAIr1F,EAAGoD,EAAG,GAAI,EAAa,EAAV+G,KAAKmrF,IAAQ,GACtCloD,EAAQilD,YACRjlD,EAAQukD,MACZ,CAIAvkD,EAAQC,UAAY,OACpBD,EAAQioD,IAAI,GAAI,GAAI,GAAI,EAAa,EAAVlrF,KAAKmrF,IAAQ,GACxCloD,EAAQioD,IAAI,GAAI,GAAI,GAAI,EAAa,EAAVlrF,KAAKmrF,IAAQ,GACxCloD,EAAQukD,KAAK,UACjB,CAtDIylE,CAAoBtiE,EAAQ1nD,GAC5B,IAAIiqH,EAAgBzN,GAAe90D,GACnC,MAAO,CAACuiE,EAAeJ,EAC3B,CArCiBK,CAAaxiE,EAAQ1nD,GAAUmpH,EAAWjwE,EAAG,GAAIlyD,EAAOkyD,EAAG,KAGxE,MAAO,CAAEkwE,QAASA,EAASD,SAAUA,EAAUniI,KAAMA,EACzD,CA3BWmjI,CAwHAvQ,MAAcO,MAAwBH,KAvHjD,EA4gDIoQ,MAl3CJ,WACI,OAAOlnE,UAAUmnE,KACrB,EAi3CIC,UA/2CJ,WACI,IAAI1jJ,EAAIs8E,UACJzjE,EAAS,GACTmyG,EAAWhrH,EAAEgrH,UAAYhrH,EAAE2jJ,cAAgB3jJ,EAAE4jJ,iBAAmB5jJ,EAAE6jJ,eAItE,QAHiB77J,IAAbgjI,GACAnyG,EAAO1uB,KAAK,CAAC6gI,IAEbt5G,MAAMC,QAAQ3R,EAAE0jJ,WAGV5Q,MAxyBd,WAEI,IAAIxxF,EAAI35D,OACR,OAAQonJ,GAAY,GACd,uBAAwBztF,GAC1B,yBAA0BA,EAC1B,GAAKA,EAAEwiG,OAAS,gBAChB,GAAKxiG,EAAE7lC,UAAY,sBACjB,CACV,CA+xB8BsoI,IAClBlrI,EAAO1uB,KAAK6V,EAAE0jJ,gBAGjB,GAA2B,kBAAhB1jJ,EAAE0jJ,UAAwB,CACtC,IAAIA,EAAY1jJ,EAAE0jJ,UACdA,GACA7qI,EAAO1uB,KAAKu5J,EAAUljH,MAAM,KAEpC,CACA,OAAO3nB,CACX,EA21CImrI,WAz1CJ,WACI,OAAOr8J,OAAOglG,OAAOq3D,UACzB,EAw1CIC,aAt1CJ,WAEI,OAAOpV,GAAW9jC,GAAQzuB,UAAU2nE,mBAAej8J,EACvD,EAo1CIk8J,iBA70CJ,WACI,KAAIlR,MAAcO,MAAwBH,MAG1C,OAQJ,WACI,IAAIrzI,EAAI4sF,OAIJw3D,EAAiB,SAAU38J,GAAS,OAAOqnJ,GAAWD,GAAMpnJ,GAAQ,KAAO,EAC3E48J,EAAa,CAACD,EAAepkJ,EAAEi9B,OAAQmnH,EAAepkJ,EAAEk9B,SAE5D,OADAmnH,EAAWxjD,OAAOgC,UACXwhD,CACX,CAjBWC,EACX,EAy0CIC,oBA/rCJ,WAEI,OAAOzV,GAAWD,GAAMtyD,UAAUgoE,0BAAsBt8J,EAC5D,EA6rCIu8J,SA3rCJ,WACI,IAAIjyE,EACAkyE,EAAwC,QAAtBlyE,EAAK3qF,OAAOm8J,YAAyB,IAAPxxE,OAAgB,EAASA,EAAGkyE,eAChF,GAAIA,EAAgB,CAChB,IAAID,GAAW,IAAIC,GAAiBC,kBAAkBC,SACtD,GAAIH,EACA,OAAOA,CAEf,CAGA,IAAI52J,GAGR,WACI,IAAIg3J,GAAc,IAAI/pI,MAAOozG,cAK7B,OAAO73H,KAAK0D,IAEZkxG,GAAQ,IAAInwF,KAAK+pI,EAAa,EAAG,GAAGC,qBAAsB75C,GAAQ,IAAInwF,KAAK+pI,EAAa,EAAG,GAAGC,qBAClG,CAZkBA,GACd,MAAO,MAAM3wJ,OAAOtG,GAAU,EAAI,IAAM,IAAIsG,OAAOtG,EACvD,EA+qCIk3J,eAnqCJ,WACI,IACI,QAASl9J,OAAOk9J,cACpB,CACA,MAAO7oI,GAEH,OAAO,CACX,CACJ,EA4pCIirG,aAzpCJ,WACI,IACI,QAASt/H,OAAOs/H,YACpB,CACA,MAAO1+H,IAEH,OAAO,CACX,CACJ,EAkpCIu8J,UAhpCJ,WAGI,IAAIjS,OApnCR,WAEI,IAAIvxF,EAAI35D,OACJqY,EAAIs8E,UACR,OAAQyyD,GAAY,CAAC,wBAAyBztF,EAAG,aAAcA,EAAG,gBAAiBthD,EAAG,eAAgBA,KAAO,IACxG6yI,IACT,CA8mCuBkS,GAGnB,IACI,QAASp9J,OAAOm9J,SACpB,CACA,MAAOv8J,IAEH,OAAO,CACX,CACJ,EAooCIy8J,aAloCJ,WACI,QAASr9J,OAAOq9J,YACpB,EAioCIC,SA/nCJ,WACI,OAAO3oE,UAAU2oE,QACrB,EA8nCIpgC,SA5nCJ,WAEI,IAAIA,EAAWvoC,UAAUuoC,SAKzB,MAAiB,aAAbA,GACImuB,OAAeC,KAp+B3B,WAOI,GAA2B,SAAvB32D,UAAUuoC,SACV,OAAO,EAEX,IAAI9kH,EAAI4sF,OACJu4D,EAAcnlJ,EAAEi9B,MAAQj9B,EAAEk9B,OAC9B,OAAQ8xG,GAAY,CAEhB,gBAAiBpnJ,SAEfytB,QAAQlsB,UAAUi8J,wBAGpBD,EAAc,KAAQA,EAAc,QAClC,CACV,CAg9BmBE,GAAW,OAAS,SAG5BvgC,CACX,EAgnCIwgC,QA9jDJ,WACI,IAAIC,EAAahpE,UAAU+oE,QAC3B,GAAKC,EAAL,CAKA,IAFA,IAAID,EAAU,GAELt5J,EAAI,EAAGA,EAAIu5J,EAAWh+J,SAAUyE,EAAG,CACxC,IAAIw5J,EAASD,EAAWv5J,GACxB,GAAKw5J,EAAL,CAIA,IADA,IAAIC,EAAY,GACPp1J,EAAI,EAAGA,EAAIm1J,EAAOj+J,SAAU8I,EAAG,CACpC,IAAIitF,EAAWkoE,EAAOn1J,GACtBo1J,EAAUr7J,KAAK,CACX01B,KAAMw9D,EAASx9D,KACf4lI,SAAUpoE,EAASooE,UAE3B,CACAJ,EAAQl7J,KAAK,CACT5D,KAAMg/J,EAAOh/J,KACb8sI,YAAakyB,EAAOlyB,YACpBmyB,UAAWA,GAZf,CAcJ,CACA,OAAOH,CAtBP,CAuBJ,EAoiDIK,aAz5CJ,WACI,IAEIC,EAFA3lJ,EAAIs8E,UACJwoC,EAAiB,OAEI98H,IAArBgY,EAAE8kH,eACFA,EAAiB8pB,GAAM5uI,EAAE8kH,qBAEG98H,IAAvBgY,EAAE4lJ,mBACP9gC,EAAiB9kH,EAAE4lJ,kBAEvB,IACIh+J,SAASi+J,YAAY,cACrBF,GAAa,CACjB,CACA,MAAOrzE,GACHqzE,GAAa,CACjB,CAEA,MAAO,CACH7gC,eAAgBA,EAChB6gC,WAAYA,EACZG,WAJa,iBAAkBn+J,OAMvC,EAm4CIorJ,OAhnCJ,WACI,OAAOz2D,UAAUy2D,QAAU,EAC/B,EA+mCIgT,cAzmCJ,WAEI,IADA,IAAIC,EAAU,GACLniJ,EAAK,EAAGyuE,EAAK,CAElB,SAEA,SAEA,UACA,WAEA,SAEA,OACA,SAEA,cAEA,qCACA,SAEA,OAEA,YAEA,QACA,cAEA,gBAGDzuE,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CACrB,IAAIta,EAAM+oF,EAAGzuE,GACTrc,EAAQG,OAAO4B,GACf/B,GAA0B,kBAAVA,GAChBw+J,EAAQ77J,KAAKZ,EAErB,CACA,OAAOy8J,EAAQplD,MACnB,EAmkCIqlD,eA1jCJ,WACI,IAAIn6J,EAAIlE,SAQR,IAEIkE,EAAEwxI,OAAS,iCACX,IAAIzkH,GAA8C,IAArC/sB,EAAEwxI,OAAOhzI,QAAQ,eAG9B,OADAwB,EAAEwxI,OAAS,uEACJzkH,CACX,CACA,MAAOtwB,IACH,OAAO,CACX,CACJ,EAuiCI29J,WA3pBJ,WAEI,IAAK,IAAIriJ,EAAK,EAAGyuE,EAAK,CAAC,UAAW,KAAM,QAASzuE,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CACnE,IAAIsiJ,EAAQ7zE,EAAGzuE,GACf,GAAI8R,WAAW,iBAAiB1hB,OAAOkyJ,EAAO,MAAMjwI,QAChD,OAAOiwI,CAEf,CAEJ,EAmpBIC,eA9oBJ,WACI,QAAI7O,GAAY,cAGZA,GAAY,cAAhB,CAIJ,EAuoBI8O,aA/nBJ,WACI,QAAI7O,GAAY,YAGZA,GAAY,cAAhB,CAIJ,EAwnBIlqD,WA3mBJ,WACI,GAAK33E,WAAW,uBAAuBO,QAAvC,CAMA,IAAK,IAAInqB,EAAI,EAAGA,GAfE,MAesBA,EACpC,GAAI4pB,WAAW,oBAAoB1hB,OAAOlI,EAAG,MAAMmqB,QAC/C,OAAOnqB,EAGf,MAAM,IAAIgL,MAAM,iBARhB,CASJ,EA+lBIuvJ,SAzlBJ,WACI,OAAI7O,GAAY,iBACL,EAIPA,GAAY,SAAWA,GAAY,QAC5B,EAEPA,GAAY,QAAUA,GAAY,SAC1B,EAERA,GAAY,UACL,QADX,CAIJ,EA0kBI8O,cAlkBJ,WACI,QAAI7O,GAAY,YAGZA,GAAY,uBAAhB,CAIJ,EA2jBI8O,oBAnjBJ,WACI,QAAI7O,GAAY,YAGZA,GAAY,uBAAhB,CAIJ,EA4iBI8O,IApiBJ,WACI,QAAI7O,GAAU,UAGVA,GAAU,kBAAd,CAIJ,EA6hBI8O,KAlhBJ,WAEI,IAAIC,EAAOj5J,GAAEi5J,MAAQ9O,GACjB+O,EAAQl5J,GAAEk5J,OAAS/O,GACnBgP,EAAOn5J,GAAEm5J,MAAQhP,GACjBiP,EAAQp5J,GAAEo5J,OAASjP,GACnBkP,EAAQr5J,GAAEq5J,OAASlP,GACnBmP,EAAOt5J,GAAEs5J,MAAQnP,GACjB95I,EAAMrQ,GAAEqQ,KAAO85I,GACfoP,EAAOv5J,GAAEu5J,MAAQpP,GACjBqP,EAAMx5J,GAAEw5J,KAAOrP,GACfsP,EAAOz5J,GAAEy5J,MAAQtP,GACjBuP,EAAM15J,GAAE05J,KAAOvP,GACfwP,EAAO35J,GAAE25J,MAAQxP,GACjByP,EAAM55J,GAAE45J,KAAOzP,GACf0P,EAAQ75J,GAAE65J,OAAS1P,GACnB2P,EAAQ95J,GAAE85J,OAAS3P,GAYvB,MAAO,CACH8O,KAAMA,EAAK,oBACXC,MAAOA,EAAM,OACba,QAZU,SAAUjgK,GAAS,OAAOkG,GAAEmhD,IAAIrnD,EAAQkG,GAAE+Y,KAAKjf,EAAQA,EAAQ,GAAK,CAYrEigK,CAAQ,OACjBZ,KAAMA,EAAK,oBACXC,MAAOA,EAAM,GACbY,QAdU,SAAUlgK,GAAS,OAAOkG,GAAEmhD,IAAIrnD,EAAQkG,GAAE+Y,KAAKjf,EAAQA,EAAQ,GAAK,CAcrEkgK,CAAQ,GACjBX,MAAOA,EAAM,IACbY,QAfU,SAAUngK,GAAS,OAAOkG,GAAEmhD,KAAK,EAAIrnD,IAAU,EAAIA,IAAU,CAAG,CAejEmgK,CAAQ,IACjBX,KAAMA,EAAK,IACXjpJ,IAAKA,GAAK,OACVkpJ,KAAMA,EAAK,GACXW,OAlBS,SAAUpgK,GAAS,OAAOkG,GAAE45J,IAAI9/J,GAAS,EAAIkG,GAAE45J,IAAI9/J,GAAS,CAAG,CAkBhEogK,CAAO,GACfV,IAAKA,EAAI,iBACTC,KAAMA,EAAK,GACXU,OApBS,SAAUrgK,GAAS,OAAQkG,GAAE45J,IAAI9/J,GAAS,EAAIkG,GAAE45J,IAAI9/J,IAAU,CAAG,CAoBlEqgK,CAAO,GACfT,IAAKA,GAAK,OACVC,KAAMA,EAAK,GACXS,OArBS,SAAUtgK,GAAS,OAAQkG,GAAE45J,IAAI,EAAI9/J,GAAS,IAAMkG,GAAE45J,IAAI,EAAI9/J,GAAS,EAAI,CAqB5EsgK,CAAO,GACfR,IAAKA,EAAI,GACTC,MAAOA,EAAM,GACbQ,QAzBU,SAAUvgK,GAAS,OAAOkG,GAAE45J,IAAI9/J,GAAS,CAAG,CAyB7CugK,CAAQ,GACjBP,MAAOA,EAAM,IACbQ,QAzBU,SAAUxgK,GAAS,OAAOkG,GAAEmhD,IAAI,EAAIrnD,EAAQ,CAyB7CwgK,CAAQ,IACjBC,MAlCQ,SAAUzgK,GAAS,OAAOkG,GAAEmZ,IAAInZ,GAAE4zF,GAAI95F,EAAQ,CAkC/CygK,EAAO,KAEtB,EA6dIC,iBA9UJ,WACI,OAAO5rE,UAAU4rE,gBACrB,EA6UIC,aAnUJ,WACI,IAAIrhJ,EAAI,IAAIvJ,aAAa,GACrB6qJ,EAAK,IAAInrJ,WAAW6J,EAAErJ,QAG1B,OAFAqJ,EAAE,GAAKszD,IACPtzD,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACTshJ,EAAG,EACd,EA8TIC,SAxTJ,WACI,IAAIC,EAAkB3gK,OAAO2gK,gBAC7B,GAAmH,oBAAnF,OAApBA,QAAgD,IAApBA,OAA6B,EAASA,EAAgBC,iBAC1F,OAAQ,EAEZ,GAAIjQ,KACA,OAAQ,EAEZ,IACI,OAAOgQ,EAAgBC,kBAAoB,EAAgC,CAC/E,CACA,MAAOvsI,GACH,OAgBR,SAA2BA,GAEvB,GAAIA,aAAiBjlB,OAAwB,uBAAfilB,EAAMz1B,MAAiC,0BAA0B03B,KAAKjC,EAAMzpB,SACtG,OAAQ,EAEZ,MAAMypB,CACV,CAtBewsI,CAAkBxsI,EAC7B,CACJ,EA2SIysI,wBAzQJ,WACI,IAAIn2E,EACAxoC,EAAOliD,SAASC,cAAc,KAC9B6gK,EAA+C,QAAnCp2E,EAAKxoC,EAAK6+G,2BAAwC,IAAPr2E,EAAgBA,EAAKxoC,EAAK8+G,oBACrF,YAAoB5gK,IAAb0gK,OAAyB1gK,EAAYwB,OAAOk/J,EACvD,EAqQIG,iBAlEJ,WACI,IAAIv2E,EAIJ,OADwByhE,MAAef,KAIlCrrJ,OAAOk4J,cAGqC,QAAzCvtE,GAAK,IAAIutE,cAAeiJ,mBAAgC,IAAPx2E,EAAgBA,GAF7D,GAHA,CAMhB,EAyDIy2E,YAtOJ,SAAwBz2E,GACpB,IAAI7vE,EAAI++E,EAAIizD,EAAIwK,EAAIC,EAAIC,EAEpB77I,EAAKu1I,GADGvmE,EAAG/U,OAEf,IAAKj6D,EACD,OApCmB,EAsCvB,IAAKo2I,GAAuBp2I,GACxB,OArCkC,EAuCtC,IAAI0lJ,EAAiBvP,KAAiC,KAAOn2I,EAAG2lJ,aAAarQ,IAC7E,MAAO,CACH75E,SAAiD,QAAtCt8D,EAAKa,EAAGq2I,aAAar2I,EAAGkjI,gBAA6B,IAAP/jI,OAAgB,EAASA,EAAG5N,aAAe,GACpGk+I,QAA+C,QAArCvxD,EAAKl+E,EAAGq2I,aAAar2I,EAAG4lJ,eAA4B,IAAP1nE,OAAgB,EAASA,EAAG3sF,aAAe,GAClGs0J,eAAgBH,EAAkF,QAAhEvU,EAAKnxI,EAAGq2I,aAAaqP,EAAeI,8BAA2C,IAAP3U,OAAgB,EAASA,EAAG5/I,WAAa,GACnJw0J,UAAmD,QAAvCpK,EAAK37I,EAAGq2I,aAAar2I,EAAGgmJ,iBAA8B,IAAPrK,OAAgB,EAASA,EAAGpqJ,aAAe,GACtG00J,iBAAkBP,EAAoF,QAAlE9J,EAAK57I,EAAGq2I,aAAaqP,EAAeQ,gCAA6C,IAAPtK,OAAgB,EAASA,EAAGrqJ,WAAa,GACvJ40J,wBAAiF,QAAvDtK,EAAK77I,EAAGq2I,aAAar2I,EAAGomJ,iCAA8C,IAAPvK,OAAgB,EAASA,EAAGtqJ,aAAe,GAE5I,EAoNI80J,gBAhNJ,SAA4Br3E,GACxB,IACIhvE,EAAKu1I,GADGvmE,EAAG/U,OAEf,IAAKj6D,EACD,OA1DmB,EA4DvB,IAAKo2I,GAAuBp2I,GACxB,OA3DkC,EA6DtC,IAAIsmJ,EAAatmJ,EAAGumJ,yBAChBC,EAAoBxmJ,EAAGymJ,uBACvBC,EAAwB,GAExBn2E,EAAa,GACbo2E,EAAa,GACbC,EAAsB,GACtBC,EAAmB,GAEvB,GAAIL,EACA,IAAK,IAAIjmJ,EAAK,EAAGpB,EAAK9d,OAAOqtB,KAAK83I,GAAoBjmJ,EAAKpB,EAAGnb,OAAQuc,IAAM,CACxE,IAAIs8B,EAAgB19B,EAAGoB,GACvBgwE,EAAW1pF,KAAK,GAAG8J,OAAOksC,EAAe,KAAKlsC,OAAO61J,EAAkB3pH,IAC3E,CAIJ,IADA,IACSqhD,EAAK,EAAG4oE,EADD7Q,GAA0Bj2I,GACAk+E,EAAK4oE,EAAY9iK,OAAQk6F,IAAM,CACrE,IACIhlD,EAAOl5B,EADP+mJ,EAAWD,EAAY5oE,IAE3ByoE,EAAW9/J,KAAK,GAAG8J,OAAOo2J,EAAU,KAAKp2J,OAAOuoC,GAAMvoC,OAAOukJ,GAAuBvsH,IAAIuQ,GAAQ,IAAIvoC,OAAOqP,EAAGq2I,aAAan9G,IAAS,IACxI,CAEA,GAAIotH,EACA,IAAK,IAAInV,EAAK,EAAG6V,EAAeV,EAAYnV,EAAK6V,EAAahjK,OAAQmtJ,IAAM,CACxE,IAAIc,EAAS+U,EAAa7V,GAC1B,KAAKc,IAAWqD,IAA6Ba,MA9D1B,uBA+DdlE,IA6FNzC,MAAgBE,OA9Ff,CAIA,IAAIuX,EAAYjnJ,EAAG2lJ,aAAa1T,GAChC,GAAKgV,EAIL,IAAK,IAAItL,EAAK,EAAGC,EAAK3F,GAA0BgR,GAAYtL,EAAKC,EAAG53J,OAAQ23J,IAAM,CAC9E,IAAIoL,EACA7tH,EAAO+tH,EADPF,EAAWnL,EAAGD,IAElBiL,EAAoB//J,KAAK,GAAG8J,OAAOo2J,EAAU,KAAKp2J,OAAOuoC,GAAMvoC,OAAOwkJ,GAAqBxsH,IAAIuQ,GAAQ,IAAIvoC,OAAOqP,EAAGq2I,aAAan9G,IAAS,IAC/I,MAPIwtH,EAAsB7/J,KAAKorJ,EAH/B,CAWJ,CAGJ,IAAK,IAAI4J,EAAK,EAAGqL,EAAgB9R,GAAayG,EAAKqL,EAAcljK,OAAQ63J,IAErE,IADA,IAAInG,EAAawR,EAAcrL,GACtBC,EAAK,EAAGqL,EAAmB9R,GAAgByG,EAAKqL,EAAiBnjK,OAAQ83J,IAAM,CACpF,IAAInG,EAAgBwR,EAAiBrL,GACjClG,EAAkBH,GAAmBz1I,EAAI01I,EAAYC,GACzDkR,EAAiBhgK,KAAK,GAAG8J,OAAO+kJ,EAAY,KAAK/kJ,OAAOglJ,EAAe,KAAKhlJ,OAAOilJ,EAAgB5gJ,KAAK,MAC5G,CAKJ,OAFA4xJ,EAAoBtpD,OACpBqpD,EAAWrpD,OACJ,CACHkpD,kBAAmBj2E,EACnBo2E,WAAYA,EACZE,iBAAkBA,EAClBP,WAAYA,EACZM,oBAAqBA,EACrBF,sBAAuBA,EAE/B,GAmJA,IAAIU,GAAkB,4CACtB,SAASC,GAAchY,GACnB,IAAIiY,EAIR,SAAgCjY,GAI5B,GAAIoB,KACA,MAAO,GAGX,GAAIf,KACA,OAAOC,MAAuBM,MAAwBH,KAA0B,GAAN,GAE9E,IAAIvuB,EAAW,UAAW8tB,EAAW9tB,SAAW8tB,EAAW9tB,SAASr9H,MAAQ,GAE5E,GAAI,OAAOy2B,KAAK4mG,GAKZ,MAAO,GAGX,GAAI,OAAO5mG,KAAK4mG,GAKZ,MAAO,GAGX,MAAO,EACX,CAlC8BgmC,CAAuBlY,GAC7CmY,EAkCR,SAAkCF,GAC9B,OAAOz8J,GAAM,IAAO,IAAOy8J,EAAqB,KACpD,CApC6BG,CAAyBH,GAClD,MAAO,CAAEryC,MAAOqyC,EAAqBI,QAASN,GAAgBjuI,QAAQ,MAAO,GAAGxoB,OAAO62J,IAC3F,CA8CA,SAASG,GAAwBtY,GAC7B,OAAOx3H,KAAKpmB,UAAU49I,GAAY,SAAU9lJ,EAAMrF,GAC9C,OAAIA,aAAiBuP,MAx/E7B,SAAuBilB,GACnB,IAAIs2D,EACJ,OAAOuK,GAAS,CAAEt2F,KAAMy1B,EAAMz1B,KAAMgM,QAASypB,EAAMzpB,QAASg3B,MAA8B,QAAtB+oD,EAAKt2D,EAAMuN,aAA0B,IAAP+oD,OAAgB,EAASA,EAAG9xC,MAAM,OAASxkB,EACjJ,CAs/EmBkvI,CAAc1jK,GAElBA,CACX,GAAG,EACP,CACA,SAAS2jK,GAAexY,GACpB,OAAO/B,GAnBX,SAAqC+B,GAEjC,IADA,IAAI95H,EAAS,GACJhV,EAAK,EAAGyuE,EAAK3tF,OAAOqtB,KAAK2gI,GAAY/xC,OAAQ/8F,EAAKyuE,EAAGhrF,OAAQuc,IAAM,CACxE,IAAIunJ,EAAe94E,EAAGzuE,GAClB+7G,EAAY+yB,EAAWyY,GACvB5jK,EAAQ,UAAWo4H,EAAY,QAAUzkG,KAAKpmB,UAAU6qH,EAAUp4H,OACtEqxB,GAAU,GAAG5kB,OAAO4kB,EAAS,IAAM,IAAI5kB,OAAOm3J,EAAa3uI,QAAQ,YAAa,QAAS,KAAKxoB,OAAOzM,EACzG,CACA,OAAOqxB,CACX,CAUsBwyI,CAA4B1Y,GAClD,CA+BA,SAAS2Y,GAAkBC,GAGvB,YAFsB,IAAlBA,IAA4BA,EAAgB,IA3/FpD,SAAwCC,EAAiBC,QAC7B,IAApBA,IAA8BA,EAAkBrxF,KACpD,IAAIsxF,EAAsB/jK,OAAO+jK,oBACjC,OAAIA,EAIO,IAAInwI,SAAQ,SAAUwR,GAAW,OAAO2+H,EAAoB1kK,KAAKW,QAAQ,WAAc,OAAOolC,GAAW,GAAG,CAAE0nF,QAASg3C,GAAoB,IAG3IhqI,GAAKtrB,KAAK4D,IAAIyxJ,EAAiBC,GAE9C,CAi/FWE,CAA+BJ,EAA+B,EAAhBA,EACzD,CAQA,SAASK,GAAUC,EAAe7Q,GAC9B,IAAI8Q,EAAelxI,KAAKsG,MACxB,MAAO,CACH54B,IAAK,SAAUe,GACX,OAAO6jJ,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAImlH,EAAWwkC,EAAY95H,EAC3B,OAAOy0H,GAAYtkJ,MAAM,SAAUspF,GAC/B,OAAQA,EAAGi7D,OACP,KAAK,EAED,OADAp/B,EAAYvzF,KAAKsG,MACV,CAAC,EAAa2qI,KACzB,KAAK,EAQD,OAPAlZ,EAAargE,EAAGk7D,OAChB30H,EAnD5B,SAA2B85H,GACvB,IAAIoZ,EAEAC,EAAarB,GAAchY,GAE/B,MAAO,CACH,aAAIsZ,GAIA,YAHuBjkK,IAAnB+jK,IACAA,EAAiBZ,GAAeniK,KAAK2pJ,aAElCoZ,CACX,EACA,aAAIE,CAAUA,GACVF,EAAiBE,CACrB,EACAD,WAAYA,EACZrZ,WAAYA,EACZ5zE,QAASA,GAEjB,CAgCqCmtF,CAAkBvZ,IACvBqI,IAAsB,OAAZ3xJ,QAAgC,IAAZA,OAAqB,EAASA,EAAQ2xJ,SAGpE5oF,QAAQvjB,IAAI,+DAA+D56C,OAAO4kB,EAAOkmD,QAAS,iBAAiB9qE,OAAOqoF,UAAUC,UAAW,6BAA6BtoF,OAAOk6G,EAAY29C,EAAc,iBAAiB73J,OAAO4kB,EAAOozI,UAAW,kBAAkBh4J,OAAOg3J,GAAwBtY,GAAa,UAElT,CAAC,EAAc95H,GAElC,GACJ,GACJ,EAER,CA+CA,IAAIxuB,GAAQ,CAAEgjF,KAxBd,SAAchkF,GACV,IAAIipF,EAEJ,YADgB,IAAZjpF,IAAsBA,EAAU,CAAC,GAC9B6jJ,GAAUlkJ,UAAM,OAAQ,GAAQ,WACnC,IAAIuiK,EAAevQ,EAAO6Q,EAC1B,OAAOve,GAAYtkJ,MAAM,SAAUyZ,GAC/B,OAAQA,EAAG8qI,OACP,KAAK,EAKD,OAJkC,QAA7Bj7D,EAAKjpF,EAAQ8iK,kBAA+B,IAAP75E,GAAgBA,IA3B9E,WAEI,KAAI3qF,OAAOykK,YAAcj2J,KAAKH,UAAY,MAG1C,IACI,IAAI2lF,EAAU,IAAImkD,eAClBnkD,EAAQ+kD,KAAK,MAAO,0CAA0CzsI,OAAO8qE,GAAS,oBAAoB,GAClG4c,EAAQ8lD,MACZ,CACA,MAAOzlH,GAGHo2C,QAAQp2C,MAAMA,EAClB,CACJ,CAawBqwI,GAEJd,EAAgBliK,EAAQkiK,cAAevQ,EAAQ3xJ,EAAQ2xJ,MAChD,CAAC,EAAasQ,GAAkBC,IAC3C,KAAK,EAGD,OAFA9oJ,EAAG+qI,OACHqe,EA3KpB,SAA4BxiK,GACxB,OAAOioJ,GAAYC,GAASloJ,EAAS,GACzC,CAyKoCijK,CAAmB,CAAE/uF,MAAO,CAAC,EAAGy9E,MAAOA,IAChD,CAAC,EAAc4Q,GAAUC,EAAe7Q,IAE3D,GACJ,GACJ,EAI0BmQ,eAAgBA,GAAgBF,wBAAyBA,qCC7mG5E,MAAMpjF,GAAmBt1E,IAc5Bg6J,GAAAA,MAAMzkF,yBACCykF,GAAAA,MAAM1kF,gBAAeiJ,GAAAA,GAAC,CAAC,EAdT,CACjBlN,OAAQ,MACRC,UAAW,YACXC,YAAa,CAAC,oBAAqB,mBACnCC,aAAc,CAAC,oBAAqB,oBACpCM,UAAWA,CAACzsC,EAAI40H,KAALnoF,EACXD,QAAS,CACLX,SAAU,IACVe,UAAU,EACVd,eAAgB,WAChBe,cAAc,KAKH,IACf9sC,MAAOplC,EAAQolC,MACfplC,QAASA,EAAQA,QACjBstB,KAAMttB,EAAQstB,SChBhB4sI,GAAW76J,mCAiBX86J,GAAU3sI,eACZm7B,EACAr7B,EACAi0G,GAGE,IAFF0L,EAAIn4I,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,GACPynI,EAAMznI,UAAAC,OAAA,QAAAU,IAAAX,UAAA,IAAAA,UAAA,GAEN,OAAO,IAAIk0B,SAAQwE,MAAOgN,EAAS0uD,KAE/B,IAAIkxE,OAvBa5sI,WACrB,IACI,MAAM6sI,QAAWC,GAAAA,OAEXZ,SADeW,EAAGtkK,OACC2jK,UAGzB,MAAO,CAAEa,cAAeb,EAAWvqJ,KADtB5W,KAAAA,WAAoBqwB,KAAKpmB,UAAUk3J,GARrCr6J,sBAQ6DiD,WAE5E,CACA,MAAOmnB,GACH,MAAO,CAAC,CACZ,CAAC,EAY+B+wI,GACxBh2B,EAAU,CACV,eAAgB,mBAEhB,cAAgC,OAAf41B,QAAe,IAAfA,OAAe,EAAfA,EAAiBG,cAClC,KAAuB,OAAfH,QAAe,IAAfA,OAAe,EAAfA,EAAiBjrJ,MAGzBotH,IACAiI,EAAU,CACN,eAAgB,sBAChB,cAAgC,OAAf41B,QAAe,IAAfA,OAAe,EAAfA,EAAiBG,cAClC,KAAuB,OAAfH,QAAe,IAAfA,OAAe,EAAfA,EAAiBjrJ,OAGpB,cAAT89H,EACAzI,EAAQi2B,cAAa,GAAA/4J,OAAMgzH,aAAaC,QAAQ,cAE3CsY,EAAKl1I,QAAQ,QAAU,IAC5BysI,EAAQi2B,cAAa,GAAA/4J,OAAMurI,IAG/B,IAAI1sD,EAAS,CACTkJ,OAAQn8D,EACRq7B,IAAI,GAADjnD,OAAKw4J,GAAQ,KAAAx4J,OAAIinD,GACpB67E,QAASA,GAGTjD,IACAhhD,EAAOn/E,KAAOmgI,GAGlB4Y,GAAM55D,GACD5vB,MAAK,SAAU+vE,GAEZlmG,EAAQkmG,EACZ,IACC9vE,OAAM,SAAUnnC,GACb,GAA+B,OAAtB,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOi3G,SAASnW,SAA6C,OAAtB,OAAL9gG,QAAK,IAALA,OAAK,EAALA,EAAOi3G,SAASnW,QAAgB,CAElE,IAAImwC,EA0DxB,SAAmBC,GACf,IAAI3mK,EAAO2mK,EAAQ,IAEf1tH,EADgBvmC,mBAAmBrR,SAAS01I,QACzB98F,MAAM,KAC7B,IAAK,IAAIz0C,EAAI,EAAGA,EAAIyzC,EAAGl4C,OAAQyE,IAAK,CAChC,IAAIoD,EAAIqwC,EAAGzzC,GACX,KAAsB,KAAfoD,EAAE2L,OAAO,IACZ3L,EAAIA,EAAE2pC,UAAU,GAEpB,GAAuB,GAAnB3pC,EAAE7E,QAAQ/D,GACV,OAAO4I,EAAE2pC,UAAUvyC,EAAKe,OAAQ6H,EAAE7H,OAE1C,CACA,MAAO,EACX,CAxEwC6lK,CAAU,iBAE9B,IAAIp2B,EAAU,CACV,eAAgB,mBAEhB,cAAgC,OAAf41B,QAAe,IAAfA,OAAe,EAAfA,EAAiBG,cAClC,KAAuB,OAAfH,QAAe,IAAfA,OAAe,EAAfA,EAAiBjrJ,MAE7Bq1H,EAAQi2B,cAAgBC,EACxB,IAAIG,EAAiB,CACjBpxE,OAAQ,OACR9gC,IAAI,GAADjnD,OAAKw4J,GAAQ,IAAI,iBACpB11B,QAASA,GAGb,OADAq2B,EAAez5J,KAAOmgI,EACf4Y,GAAM0gB,GACRlqG,MAAKnjC,eAAgBkzG,GAClBhM,aAAaE,QAAQ,YAAa8L,EAASt/H,KAAKA,KAAMs/H,EAASt/H,KAAKA,KAAKrM,OAAU,GAAG+lK,WACtFpmC,aAAaE,QAAQ,YAAa8L,EAASt/H,KAAKA,KAAMs/H,EAASt/H,KAAKA,KAAKrM,OAAU,GAAGgmK,WACtF,IAAIz0I,QAAe00I,GAAeryG,EAAKr7B,EAAMi0G,EAAU0L,EAAM1Q,GAC7D/hG,EAAQlU,EAEZ,IACCsqC,OAAM,SAAUnnC,GACiB,MAA1BA,EAAMi3G,SAASnW,QAA4C,MAA1B9gG,EAAMi3G,SAASnW,SAChDmK,aAAa1wG,QACb5uB,OAAO0pC,SAASisB,KAAO,YAE3Bm+B,EAAOz/D,EAAMi3G,SACjB,GACR,CAC0C,IAADu6B,EAAAC,EAAAC,EAAL,OAAtB,OAAL1xI,QAAK,IAALA,OAAK,EAALA,EAAOi3G,SAASnW,SACrBj1C,GAAgB,CACZlwC,MAAO,QACPplC,QAAc,OAALypB,QAAK,IAALA,GAAe,QAAVwxI,EAALxxI,EAAOi3G,gBAAQ,IAAAu6B,GAAM,QAANC,EAAfD,EAAiB75J,YAAI,IAAA85J,GAAY,QAAZC,EAArBD,EAAuBl7J,QAAQ,UAAE,IAAAm7J,OAA5B,EAALA,EAAmCC,IAC5C9tI,KAAM,WAEV47D,EAAOz/D,EAAMi3G,WAGbx3C,EAAOz/D,EAAMi3G,SAErB,GAAE,GAGd,EAEMs6B,GAAiBxtI,MACnBm7B,EACAr7B,EACAi0G,EACA0L,EACA1Q,UAEmB49B,GAAQxxG,EAAKr7B,EAAMi0G,EAAU0L,EAAM1Q,GAoB1D,YC7IM8+B,GAAyBpmK,GACvBA,GAAS,EAOXqmK,GAAwBA,CAACC,EAAOC,IAC3BzyI,WAAWnlB,KAAK63J,MAAMF,EAAQ33J,KAAK0Q,IAAI,GAAIknJ,IAAW53J,KAAK0Q,IAAI,GAAIknJ,IAASE,QAAQF,GAgCzFG,GAAYnuI,MAAO+6B,EAAOj7B,KAE5B,IACI,MAAMlsB,EAAO,CACT,MAASmnD,EACT,KAAQj7B,GAKNoqC,QAAgBsjG,GAAe,UAAW,OAAQ55J,EAAM,YAAa,QAU3E,OATuB,MAAnBs2D,EAAQ6yD,QACRj1C,GAAgB,CACZlwC,MAAO,UACPplC,QAAS,0BACTstB,KAAM,YAKPoqC,CACX,CAAE,MAAOjuC,GAGL,OAAOA,CAEX,GAKEmyI,GAAoB5lK,IACtBA,EAAEQ,OAAOw2B,IAAM,mCAAmC,EAatD,SAAS6uI,GAAiB5mK,GACxB,IAAK,IAADg0C,EACF,QAAcxzC,IAAVR,GAAiC,OAAVA,EAAgB,MAAO,GAClD,IAAI8zC,EAAW,OAAL9zC,QAAK,IAALA,OAAK,EAALA,EAAOqN,WAAWqjC,OAC5BoD,EAAMhgB,WAAc,QAAJkgB,EAACF,SAAG,IAAAE,OAAA,EAAHA,EAAK/e,QAAQ,KAAM,KACpC,IAAI4xI,EAAS,GAWb,OAVI/yH,GAAO,MACTA,GAAO,KACP+yH,EAAS,KACA/yH,GAAO,KAChBA,GAAO,IACP+yH,EAAS,KACA/yH,GAAO,MAChBA,GAAO,IACP+yH,EAAS,KAEJ/yH,EAAI2yH,QAAQ,GAAKI,CAC1B,CAAE,MAAOryI,GACP,MAAO,EACT,CACF,CC7GA,SAAS,GAAyBzzB,EAAG+D,GACnC,GAAI,MAAQ/D,EAAG,MAAO,CAAC,EACvB,IAAI6lC,EACFwF,EACA7nC,ECLJ,SAAuC6nC,EAAGrrC,GACxC,GAAI,MAAQqrC,EAAG,MAAO,CAAC,EACvB,IAAItnC,EAAI,CAAC,EACT,IAAK,IAAI0T,KAAK4zB,EAAG,GAAI,CAAC,EAAEz8B,eAAenQ,KAAK4sC,EAAG5zB,GAAI,CACjD,GAAIzX,EAAE+B,QAAQ0V,IAAM,EAAG,SACvB1T,EAAE0T,GAAK4zB,EAAE5zB,EACX,CACA,OAAO1T,CACT,CDHQ,CAA6B/D,EAAG+D,GACtC,GAAI3H,OAAOstB,sBAAuB,CAChC,IAAIjS,EAAIrb,OAAOstB,sBAAsB1pB,GACrC,IAAKqrC,EAAI,EAAGA,EAAI5zB,EAAE1Y,OAAQssC,IAAKxF,EAAIpuB,EAAE4zB,GAAItnC,EAAEhC,QAAQ8jC,IAAM,GAAK,CAAC,EAAEhc,qBAAqBprB,KAAKuB,EAAG6lC,KAAOriC,EAAEqiC,GAAK7lC,EAAE6lC,GAChH,CACA,OAAOriC,CACT,CEXa,MAAAk3H,GAAA,wFAMPqrC,GAAuBtxE,EAAAA,cAAoB,CAAC,GAG5CuxE,IAAyB,EAwB/B,SAASC,GAAQnjF,GAAmK,IAAlK,MAAEpxC,EAAQ,EAAGw4C,QAASmB,EAASzM,UAAWsnF,EAAe,mBAAEC,EAAkB,gBAAEC,EAAe,OAAEC,GAAS,EAAOtlH,MAAO46E,GAAyC74C,EAA3BwjF,EAAyB71D,GAAA3tB,EAAA43C,IAC5K,IAAI3wC,EAAI7vE,EAAI++E,EACZ,MAAMstE,EAAsB9xE,EAAAA,WAAiBsxE,IACvCS,EAAiBj+E,GAAA,GAAQ+9E,GAG/B,IAAK,MAAOtlK,EAAK/B,KAAU7C,OAAO+iC,QAAQmnI,GACjB,qBAAVrnK,UACAunK,EAAkBxlK,GAIjC,MAAMylK,EAAYl+E,GAAAA,GAAAA,GAAA,GACXg+E,GACAC,GAAiB,IACpBH,WAGEtlH,EAAKwnC,GAAAA,GAAA,GACJozC,GAzCX,SAAoC15C,GAAqI,IAApI,UAAEykF,EAAS,eAAEC,EAAc,MAAElyH,EAAK,OAAEC,EAAM,aAAEkyH,EAAY,OAAEP,EAAM,UAAEv3D,EAAS,SAAE5zB,EAAQ,gBAAE2rF,EAAkBb,IAAyB/jF,EACnK,MAAMlhC,EAAQ,CAAC,EAmBf,MAlBkB,QAAd+tD,IACA/tD,EAAM,yBAA2B,WACb,kBAAbm6B,IACPn6B,EAAM,wBAA0B,GAAHr1C,OAAMwvE,EAAQ,MAC1C2rF,IACD9lH,EAAM,4BAA8B,QACnB,kBAAVtM,GAAuC,kBAAVA,IACpCsM,EAAMtM,MAAQA,GACI,kBAAXC,GAAyC,kBAAXA,IACrCqM,EAAMrM,OAASA,GACS,kBAAjBkyH,GAAqD,kBAAjBA,IAC3C7lH,EAAM6lH,aAAeA,GACrBP,IACAtlH,EAAM6lH,aAAe,OACA,qBAAdF,IACP3lH,EAAM,gBAAkB2lH,GACE,qBAAnBC,IACP5lH,EAAM,qBAAuB4lH,GAC1B5lH,CACX,CAqBW+lH,CAA4BL,IAEnC,IAAI7nF,EAAY,yBACZsnF,IACAtnF,GAAa,IAAJlzE,OAAQw6J,IACrB,MAAMa,EAAwC,QAA9Bh9E,EAAK08E,EAAaM,cAA2B,IAAPh9E,GAAgBA,EAChE2kE,EAAW,GACXsY,EAAYp5J,KAAK+B,KAAK+hC,GAC5B,IAAK,IAAIluC,EAAI,EAAGA,EAAIwjK,EAAWxjK,IAAK,CAChC,IAAIyjK,EAAYlmH,EAChB,GAAIimH,EAAYt1H,GAASluC,IAAMwjK,EAAY,EAAG,CAO1C,MAAMvyH,EAAmC,QAA1Bv6B,EAAK+sJ,EAAUxyH,aAA0B,IAAPv6B,EAAgBA,EAAK,OAChEgtJ,EAAiBx1H,EAAQ,EACzBy1H,EAAmC,kBAAV1yH,EACzBA,EAAQyyH,EAAc,QAAAx7J,OACd+oC,EAAK,OAAA/oC,OAAMw7J,EAAc,KACvCD,EAAS1+E,GAAAA,GAAA,GAAQ0+E,GAAS,IAAExyH,MAAO0yH,GACvC,CACA,MAAMC,EAAgB3yE,EAAAA,cAAoB,OAAQ,CAAE7V,UAAWA,EAAW79B,MAAOkmH,EAAWjmK,IAAKwC,GAAK,UAClGujK,EACArY,EAAS9sJ,KAAKwlK,GAKd1Y,EAAS9sJ,KAAK6yF,EAAAA,cAAoBA,EAAAA,SAAgB,CAAEzzF,IAAKwC,GACrD4jK,EACA3yE,EAAAA,cAAoB,KAAM,OAEtC,CACA,OAAQA,EAAAA,cAAoB,OAAQ,CAAE7V,UAAWunF,EAAoB,cAAeC,EAAiB,YAAa,SAAU,YAAqD,QAAvCntE,EAAKwtE,EAAaI,uBAAoC,IAAP5tE,EAAgBA,EAAK+sE,IAA0B36E,EAClOqjE,EAASv8I,KAAI,CAACoK,EAAI/Y,IAAMixF,EAAAA,cAAoBpJ,EAAS,CAAErqF,IAAKwC,GAAK+Y,KACjEmyI,EACV,CC3FA,SAAuB,2BCuBvB,GAlBqBzsE,IAAgB,IAAf,MAAEvwC,GAAOuwC,EAC3B,IAAIolF,EAAY3oC,aAAaC,QAAQ,YACrC,OACIx1G,MAAMuoB,GACD0jD,OACAjjF,KAAI,CAACi7E,EAAMtrF,KACRi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UACxBijF,EAAAA,GAAAA,KAACkmC,GAAQ,CACLvxH,OAAQ,IACRD,MAAM,MACNiyH,UAAyB,SAAdW,EAAuBh+J,UAA2CA,UAC7Es9J,eAA8B,SAAdU,EAAuBh+J,UAAgDA,aAL7DvH,IAQpC,ECoBd,GAjCcmgF,IAIP,IAADqlF,EAAAC,EAAAC,EAAAC,EAAA,IAJS,UACb7oF,EAAS,QACT8oF,EAAO,iBACPC,GACD1lF,EAEC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGpjD,EAAW8jC,IAAc5lE,SACzC4qH,GAAU3nC,EAAAA,GAAAA,KAAC6nC,GAAY,CAACl2H,MAAO,IAEd,OAAhBi2H,QAAgB,IAAhBA,GAAqB,QAALL,EAAhBK,EAAmB,UAAE,IAAAL,GAAK,QAALC,EAArBD,EAAwB,UAAE,IAAAC,GAAS,QAATC,EAA1BD,EAA4BM,eAAO,IAAAL,GAAa,QAAbC,EAAnCD,EAAqClnK,MAAM,EAAG,UAAE,IAAAmnK,OAAhC,EAAhBA,EACIt1J,KAAI,CAAC1O,EAAG3B,KAAK,IAAAgmK,EAAA,OACb1lC,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAyB5iG,MAAOrc,EAAGqgF,GAAE,UAAAp4E,OAAa,OAADjI,QAAC,IAADA,GAAO,QAANqkK,EAADrkK,EAAGzF,YAAI,IAAA8pK,OAAN,EAADA,EAAS5vH,eAAgB4E,SAAA,EACzFijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE++H,KAAMrzF,IAAI,gBAExBizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEr5C,EAAEskK,OAChC1C,GAAsB5hK,EAAEukK,YACvB5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB7hK,EAAEukK,UAAW,GAAG,QAExE5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB7hK,EAAEukK,UAAW,GAAG,WAG5EjoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEwoH,GAAsB7hK,EAAEwkK,mBAAoBxkK,EAAEykK,8BAb9CpmK,EAe5B,KAET,ECnCV,IAAgB,MAAQ,yBAAyB,KAAO,wBAAwB,MAAQ,yBAAyB,OAAS,0BAA0B,QAAU,2BAA2B,OAAS,0BAA0B,MAAQ,yBAAyB,KAAO,wBAAwB,KAAO,wBAAwB,KAAO,wJCiDlU,GA9CkBmgF,IAaX,IAbY,UACjBrD,EAAS,WACTupF,EAAU,WACVC,EAAU,MACVpjB,EAAK,MACL/oJ,EAAK,KACLqwD,EAAI,KACJk2E,EAAI,KACJ6lC,EAAI,eACJC,EAAc,kBACdC,EAAiB,QACjBC,GAEDvmF,EADIj2D,EAAKykF,GAAAxuB,EAAAy4C,IAGR,OACE0H,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KACTtf,GAAOyQ,MACP,CAAE,CAACzQ,GAAOzmH,OAAQA,GAClB,CAAE,CAACymH,GAAOp2D,MAAOA,GACjB,CAAE,CAACo2D,GAAO8f,MAAOA,GACjB5jD,GACA9hC,SAAA,CAEDkoG,IAASjlB,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGmmC,EAAYzlD,GAAOsiC,OAAOloG,SAAEkoG,KACzD5iB,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,QAAAx3C,GAAAA,GAAA,CAAO3J,UAAWojD,KAAGomC,EAAY1lD,GAAO/uG,QAAYqY,GAAK,IAAEw8I,QAASA,KACnEl8G,IACCyzE,EAAAA,GAAAA,KAAA,UACEzoG,KAAK,SACL+2C,QAASi6F,EAAgB1pF,UAAW8jC,GAAO+c,OAAO3iF,UAClDijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,MAAMk/B,KAAK,SAGzBslG,IACCzC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+lD,QAAQ3rH,UAC7BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAMwkI,EAAMtlG,KAAK,SAG1BmrI,IAAQtoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2lD,KAAKvrH,SAAEurH,SAErC,EC8BV,GApEapmF,IAON,IAPO,YACZymF,EAAW,QACXhB,EAAO,iBACPC,EAAgB,MAChBp1G,EAAK,SACLo2G,EAAQ,kBACRC,GACD3mF,EACC,MAAM8zC,EAAWJ,KAYjB,OACEoK,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,eAC1BijF,EAAAA,GAAAA,KAAA,UAASA,EAAAA,GAAAA,KAAA,QAAAjjF,SAAOzzC,SAA2C,gCAExE+4H,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO7qF,KAAKilB,SAAA,CAAC,8CACeslF,EAAAA,GAAAA,MAAA,QAAAtlF,SAAA,CAAOzzC,OAAoC,WAAY,0DAEnG+4H,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOomD,aAAahsH,SAAA,EAClCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOnwD,MAAMzV,UAC3BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRC,YAAY,QACZ/pK,MAAOszD,EACP2wC,SAAWljG,IAAQ2oK,EAAS3oK,EAAEQ,OAAOvB,MAAM,OAG/C8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOnhE,KAAKzE,UAC1BijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAAS+gB,QA7BvC46F,KAEnB,GADAL,EAAkBr2G,GACdA,EAAO,CACT,MAAM22G,EAAep4J,mBAAmByhD,GACxCwjE,EAAS,qBAADrqH,OAAsBw9J,GAChC,MACEnzC,EAAS,WACX,EAsBgFj5E,SAAC,wBAK3EijF,EAAAA,GAAAA,KAACopC,GAAY,CACXtjC,SAAUA,IACR6iC,EAAYnkH,QAAQ6kH,eAAe,CAAEC,SAAU,WAEjDzqF,UAAW8jC,GAAO4mD,aAGtBvpC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,+BACP3oG,IAAI,4BACJmY,IAAI,aAGR4wF,EAAAA,GAAAA,KAACwpC,GAAK,CACJ3qF,UAAW8jC,GAAO8mD,MAClB9B,QAASA,EACTC,iBAAkBA,QAGlB,ECvEV,IAAgB,QAAU,uBAAuB,KAAO,oBAAoB,OAAS,sBAAsB,KAAO,oBAAoB,MAAQ,qBAAqB,IAAM,mBAAmB,KAAO,oBAAoB,OAAS,sBAAsB,QAAU,uBAAuB,KAAO,oBAAoB,QAAU,uBAAuB,SAAW,wBAAwB,QAAU,uBAAuB,KAAO,oBAAoB,QAAU,uBAAuB,KAAO,oCCA1d,SAAuB,mBAAvB,GAAkD,oBCgBlD,GAZa1lF,IAA2B,IAA1B,UAAErD,EAAS,MAAEikD,GAAO5gD,EAChC,OACE89C,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGpjD,EAAW8jC,GAAa,CACpC,CAACA,IAAemgB,IACf/lF,UAEHijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,QAChB,8CCPP4lG,GAAQ,CACZ,CACE1zF,MAAO,wCACP0rC,QAAS,sLACTu5B,MAAO,kCACPo1D,QAAS,qCACT92G,IAAK,KAEP,CACEvjB,MAAO,+CACP0rC,QAAS,yJAETu5B,MAAO,kCACPo1D,QAAS,qCACT92G,IAAK,KAEP,CACEvjB,MAAO,wBACP0rC,QAAS,oFAETu5B,MAAO,kCACPo1D,QAAS,qCACT92G,IAAK,KAEP,CACEvjB,MAAO,0CACP0rC,QAAS,8CAETu5B,MAAO,kCACPo1D,QAAS,qCACT92G,IAAK,MAIH+2G,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAwFxC,GArFcgmC,IAEP,IAFQ,YACb4lF,GACD5lF,EAEC,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChB9B,gBAAgB,EAChBH,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjC6vE,WAAY,CACV,CACEltB,WAAY,IACZsjB,SAAU,WAEZ,CACEtjB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,IAGlB,CACE1qB,WAAY,IACZsjB,SAAU,CACRoH,aAAc,MAMtB,OACEw1B,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAU1sK,IAAKyrK,EAAY5rH,UAC9DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwhB,KAAKpnF,UAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,gBAAYijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,6BAG7DijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAWojD,KAAG,eAAgBtf,GAAOknD,SAAazmE,GAAQ,IAAArmD,SAC/DgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,IACbA,EAAQ,GACNsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+lD,QAAQ3rH,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAKjI,EAAEgmK,QAAO,OAAOzyI,IAAKvzB,EAAE4wG,MAAOllE,IAAI,SACjD1rC,EAAE6iF,OAAQy5C,EAAAA,GAAAA,KAAC8pC,GAAI,CAAChnC,OAAK,QAExB9C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO/xE,KAAKmM,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAE2rC,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,iBARPh5E,IAalCsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAMtJ,GAAIrgF,EAAEkvD,IAAI7V,SAAA,EACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+lD,QAAQ3rH,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAKjI,EAAEgmK,QAAO,OAAOzyI,IAAKvzB,EAAE4wG,MAAOllE,IAAI,SACjD1rC,EAAE6iF,OAAQy5C,EAAAA,GAAAA,KAAC8pC,GAAI,CAAChnC,OAAK,QAExBT,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAE2rC,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,UAClCr3E,EAAE4uD,OAAQ0tE,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOrwD,KAAKvV,SAAEr5C,EAAE4uD,YARFvwD,cAgBnD,EC5HV,IAAgB,QAAU,uBAAuB,KAAO,oBAAoB,OAAS,sBAAsB,IAAM,mBAAmB,SAAW,wBAAwB,KAAO,oBAAoB,OAAS,sBAAsB,MAAQ,qBAAqB,IAAM,mBAAmB,IAAM,mBAAmB,KAAO,oBAAoB,KAAO,oBAAoB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,MAAQ,sBCAvd,GAAsB,2BAAtB,GAAuD,2BC8BvD,GAzBsBmgF,IAA6B,IAA5B,SAAE8nF,EAAQ,SAAEC,GAAU/nF,EACzC,IAAIolF,EAAY3oC,aAAaC,QAAQ,YACrC,OACIx1G,MAAM4gJ,GACD30E,OACAjjF,KAAI,CAACi7E,EAAMtrF,KACRi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACtB3zB,MAAM6gJ,GACF50E,OACAjjF,KAAI,CAAC3O,EAAGC,KACLs8H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,UACvBijF,EAAAA,GAAAA,KAACkmC,GAAQ,CACLvxH,OAAQ,GACRgyH,UAAyB,SAAdW,EAAuBh+J,UAA2CA,UAC7Es9J,eAA8B,SAAdU,EAAuBh+J,UAAgDA,aAJ9D5F,MAJZ3B,IAenC,ECmDd,GAvEcmgF,IAGP,IAADqlF,EAAAC,EAAAC,EAAAC,EAAA,IAHS,QACbC,EAAO,iBACPC,GACD1lF,EAEC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAS7sH,UAC5CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/xE,KAAKmM,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,8BACvCijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,gBAAiBtf,GAAOp1D,QAASw2B,GAAG,UAAShnC,SAAC,kBAIpEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,OAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,WAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAE7B4qH,GAAU3nC,EAAAA,GAAAA,KAACkqC,GAAa,CAACF,SAAU,EAAGC,SAAU,IAE/B,OAAhBrC,QAAgB,IAAhBA,GAAqB,QAALL,EAAhBK,EAAmB,UAAE,IAAAL,GAAK,QAALC,EAArBD,EAAwB,UAAE,IAAAC,GAAS,QAATC,EAA1BD,EAA4BM,eAAO,IAAAL,GACpB,QADoBC,EAAnCD,EACIlnK,MAAM,EAAG,UAAE,IAAAmnK,OADC,EAAhBA,EAEIt1J,KAAI,CAAC1O,EAAG3B,KAAK,IAAAgmK,EAAA,OACb1lC,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAO93E,IAAK9qB,MAAOrc,EAAGqgF,GAAE,UAAAp4E,OAAa,OAADjI,QAAC,IAADA,GAAO,QAANqkK,EAADrkK,EAAGzF,YAAI,IAAA8pK,OAAN,EAADA,EAAS5vH,eAAgB4E,SAAA,EAC5EijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAEh7C,EAAQ,KACrCi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE++H,KAAMrzF,IAAI,gBAExBizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAEymK,aACrCnqC,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEr5C,EAAEmmB,kBAI3Cm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAEwoH,GAAsB7hK,EAAEwkK,mBAAoBxkK,EAAEykK,0BAC3EnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBuoH,GAAsB5hK,EAAEukK,YACvB5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOynD,SAASrtH,SAAA,CAAEwoH,GAAsB7hK,EAAEukK,UAAW,GAAG,QAExE5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0nD,SAASttH,SAAA,CAAEwoH,GAAsB7hK,EAAEukK,UAAW,GAAG,UAG5EjoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBuoH,GAAsB5hK,EAAE4mK,aACvBjoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOynD,SAASrtH,SAAA,CAAEwoH,GAAsB7hK,EAAE4mK,WAAY,GAAG,QAEzEjoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0nD,SAASttH,SAAA,CAAEwoH,GAAsB7hK,EAAE4mK,WAAY,GAAG,UAG7EtqC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,gBAAiBtf,GAAOp1D,QAASw2B,GAAI,WAAWhnC,SAAC,oBA9BSh7C,EAmC7E,WAIb,ECzEV,IAAgB,UAAY,2BAA2B,KAAO,sBAAsB,MAAQ,uBAAuB,KAAO,sBAAsB,QAAU,yBAAyB,KAAO,sBAAsB,OAAS,yBCAzN,IAAgB,KAAO,mBAAmB,QAAU,sBAAsB,MAAQ,oBAAoB,QAAU,uBCsBhH,GAlBamgF,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,GAAO4nD,MAAMxtH,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+lD,QAAQ3rH,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1D4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEswC,EAAKtS,WACtCilD,EAAAA,GAAAA,KAACzF,GAAI,CACH17C,UAAWojD,KAAG,eAAgBtf,GAAOp1D,QACrCw2B,GAAIsJ,EAAKz6B,IAAI7V,SAEZswC,EAAK9/B,WAEJ,8CCZJw1E,GAAQ,CACZ,CACE1zF,MAAO,wCACP0rC,QAAS,oJACTxtB,OAAQ,gBACR+mD,MAAO,iCACPo1D,QAAS,oCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,YAEjE,CACEvvF,MAAO,2BACP0rC,QAAS,qKACTxtB,OAAQ,gBACR+mD,MAAO,iCACPo1D,QAAS,oCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,YAEjE,CACEvvF,MAAO,mCACP0rC,QAAQ,qLAGRxtB,OAAQ,gBACR+mD,MAAO,iCACPo1D,QAAS,oCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,aAI7D+qC,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAqExC,GAlEgBgmC,IAAuB,IAAtB,aAAEynF,GAAcznF,EAC/B,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChBL,WAAY,CACV,CACEltB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,EACdY,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAKrC,CACE2iD,WAAY,IACZsjB,SAAU,CACRoH,aAAc,EACdH,UAAU,EACVe,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAQzC,OACE6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGuoC,EAAc7nD,GAAOinD,SAAS7sH,UAC/CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,mBACtBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,yBAEvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,iDAI/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAU,kBAAqBukB,GAAQ,IAAArmD,SAC5CgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,cAKhD,ECrGV,IAAgB,SAAW,2BAA2B,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,QAAU,0BAA0B,SAAW,2BAA2B,QAAU,0BAA0B,GAAK,qBAAqB,OAAS,0BCGvXghI,GAAQ,CACZ,CACE1zF,MAAO,YACP0rC,QAAS,gBACTu5B,MAAO,4BACP1hD,IAAK,sEACL7oB,OAAQ,yCAEV,CACEsF,MAAO,cACP0rC,QAAS,gBACTu5B,MAAO,kCACP1hD,IAAK,6DACL7oB,OAAQ,8CA2CZ,GAvCiB+6F,KAEb9E,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAO/xB,UAAU7zC,UACjDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,yCACP3oG,IAAI,mCACJmY,IAAI,gBAGRizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,oBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,wMAG7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbsgI,EAAAA,GAAAA,MAAA,KAAGrtE,KAAMtxD,EAAEkvD,IAAKnyD,OAAO,UAAUo+E,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EACtDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE4wG,MAAOllE,IAAI,YAEzBizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,WACnCilD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAE2rC,YAEtC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO54E,OAAOgT,UAC5BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAEqmC,OAAQqF,IAAI,eATkCrtC,eCtC5E,IAAgB,UAAY,wBAAwB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,oBCA3I,GAAuB,mBAAvB,GAAoD,sBAApD,GAAiF,mBAAjF,GAA4G,oBAA5G,GAAwI,oBAAxI,GAAsK,sBAAtK,GAAqM,qBC2BrM,GAvBamgF,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1DizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAc5lE,SAAEswC,EAAKs9E,SAEvD3qC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,WACtCilD,EAAAA,GAAAA,KAACzF,GAAI,CACH17C,UAAWojD,KAAG,eAAgBtf,IAC9B5+B,GAAIsJ,EAAKz6B,IAAI7V,SAGZswC,EAAKu9E,kBAGN,8CCjBJ7nC,GAAQ,CACZ,CACE1zF,MAAO,sBACP0rC,QACE,qYACF4vF,MAAO,WACPr2D,MAAO,+BACPo1D,QAAS,kCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,WAC/DgsC,WAAY,iBAEd,CACEv7H,MAAO,uCACP0rC,QACE,yKACF4vF,MAAO,iBACPr2D,MAAO,iCACPo1D,QAAS,oCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,WAC/DgsC,WAAY,iBAEd,CACEv7H,MAAO,2CACP0rC,QACE,gRACF4vF,MAAO,WACPr2D,MAAO,2BACPo1D,QAAS,8BACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,UAAY,WACrDgsC,WAAY,cAEd,CACEv7H,MAAO,0CACP0rC,QACE,sVACF4vF,MAAO,cACPr2D,MAAO,+BACPo1D,QAAS,kCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,cAAgB,WACzDgsC,WAAY,YAIVjB,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAqDxC,GAlDagmC,IAAuB,IAAtB,aAAEynF,GAAcznF,EAC5B,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChB9B,gBAAgB,EAChBH,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,UAKnC,OACE6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGuoC,EAAc7nD,GAAOinD,SAAS7sH,UAC/CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAS1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,oCACLijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,iBAExCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,kDAI/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAU,eAAkBukB,GAAQ,IAAArmD,SACzCgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,cAKhD,ECnGV,IAAgB,KAAO,oBAAoB,MAAQ,qBAAqB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,QAAU,uBAAuB,OAAS,sBAAsB,SAAW,wBAAwB,QAAU,uBAAuB,QAAU,wBCAvS,GAAwB,sBAAxB,GAAgH,wBAAhH,GAAkR,sBAAlR,GAAgT,sBCqChT,GAlCemgF,IAAoB,IAAnB,UAAErD,GAAWqD,EAC3B,OACE89C,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGpjD,EAAW8jC,IAAc5lE,UAC1CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAC,2BAC9BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAC,iQAS9BijF,EAAAA,GAAAA,KAAA,UACAA,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAC,6jBAQ9BijF,EAAAA,GAAAA,KAAA,eAMH,EC5BD+C,GAAQ,CACZ,CACE1zF,MAAO,iBACPq6H,QAAS,gCACTp1D,MAAO,6BACPv5B,QACE,wBAEJ,CACE1rC,MAAO,yBACPq6H,QAAS,gCACTp1D,MAAO,6BACPv5B,QACE,8BAEJ,CACE1rC,MAAO,yBACPq6H,QAAS,gCACTp1D,MAAO,6BACPv5B,QACE,2BAEJ,CACE1rC,MAAO,aACPq6H,QAAS,gCACTp1D,MAAO,6BACPv5B,QACE,iCAyCN,GArCcmH,IAAsB,IAArB,YAAEymF,GAAazmF,EAC5B,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAU1sK,IAAKyrK,EAAY5rH,UAC9DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,uIAI/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+lD,QAAQ3rH,UAC7BijF,EAAAA,GAAAA,KAAA,OACEJ,OAAM,GAAAj0H,OAAKjI,EAAEgmK,QAAO,OACpBzyI,IAAKvzB,EAAE4wG,MACPllE,IAAG,QAAAzjC,OAAU5J,EAAQ,QAGzBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO3tF,OAAO+nB,SAAA,CAAC,QAAMh7C,EAAQ,MAC7Ci+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAE2rC,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,YAVHh5E,QActCi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwgB,QAAQpmF,UAC7BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASw2B,GAAI46C,aAAaC,QAAQ,aAAe,mBAAqB,UAAU7hF,SAAC,2BAIxHijF,EAAAA,GAAAA,KAAC6qC,GAAM,QAEL,ECtEJC,GAAezuK,OAAOyM,OAAO,MACnCgiK,GAAmB,KAAI,IACvBA,GAAoB,MAAI,IACxBA,GAAmB,KAAI,IACvBA,GAAmB,KAAI,IACvBA,GAAsB,QAAI,IAC1BA,GAAsB,QAAI,IAC1BA,GAAmB,KAAI,IACvB,MAAMC,GAAuB1uK,OAAOyM,OAAO,MAC3CzM,OAAOqtB,KAAKohJ,IAActpK,SAASP,IAC/B8pK,GAAqBD,GAAa7pK,IAAQA,CAAG,IAEjD,MAAM+pK,GAAe,CAAEzzI,KAAM,QAASlsB,KAAM,gBCXtC4/J,GAAiC,oBAATn/B,MACT,qBAATA,MACqC,6BAAzCzvI,OAAOuE,UAAU2L,SAAS7N,KAAKotI,MACjCo/B,GAA+C,oBAAhB32J,YAE/B8kE,GAAU3qE,GACyB,oBAAvB6F,YAAY8kE,OACpB9kE,YAAY8kE,OAAO3qE,GACnBA,GAAOA,EAAIyG,kBAAkBZ,YAEjC42J,GAAeA,CAAAjpF,EAAiBkpF,EAAgBxpG,KAAa,IAA7C,KAAErqC,EAAI,KAAElsB,GAAM62E,EAChC,OAAI+oF,IAAkB5/J,aAAgBygI,KAC9Bs/B,EACOxpG,EAASv2D,GAGTggK,GAAmBhgK,EAAMu2D,GAG/BspG,KACJ7/J,aAAgBkJ,aAAe8kE,GAAOhuE,IACnC+/J,EACOxpG,EAASv2D,GAGTggK,GAAmB,IAAIv/B,KAAK,CAACzgI,IAAQu2D,GAI7CA,EAASkpG,GAAavzI,IAASlsB,GAAQ,IAAI,EAEhDggK,GAAqBA,CAAChgK,EAAMu2D,KAC9B,MAAM0pG,EAAa,IAAIC,WAKvB,OAJAD,EAAWv0I,OAAS,WAChB,MAAMgkD,EAAUuwF,EAAW/6I,OAAO2nB,MAAM,KAAK,GAC7C0pB,EAAS,KAAOmZ,GAAW,IAC/B,EACOuwF,EAAWE,cAAcngK,EAAK,EAEzC,SAASstG,GAAQttG,GACb,OAAIA,aAAgBsJ,WACTtJ,EAEFA,aAAgBkJ,YACd,IAAII,WAAWtJ,GAGf,IAAIsJ,WAAWtJ,EAAK8J,OAAQ9J,EAAK+J,WAAY/J,EAAKgK,WAEjE,CACA,IAAIo2J,GClDJ,MAAMC,GAAQ,mEAERC,GAA+B,qBAAfh3J,WAA6B,GAAK,IAAIA,WAAW,KACvE,IAAK,IAAIlR,EAAI,EAAGA,EAAIioK,GAAcjoK,IAC9BkoK,GAAOD,GAAMh7J,WAAWjN,IAAMA,EAE3B,MCLDynK,GAA+C,oBAAhB32J,YACxBq3J,GAAeA,CAACC,EAAeC,KACxC,GAA6B,kBAAlBD,EACP,MAAO,CACHt0I,KAAM,UACNlsB,KAAM0gK,GAAUF,EAAeC,IAGvC,MAAMv0I,EAAOs0I,EAAcr5J,OAAO,GAClC,GAAa,MAAT+kB,EACA,MAAO,CACHA,KAAM,UACNlsB,KAAM2gK,GAAmBH,EAAcr7H,UAAU,GAAIs7H,IAI7D,OADmBf,GAAqBxzI,GAIjCs0I,EAAc7sK,OAAS,EACxB,CACEu4B,KAAMwzI,GAAqBxzI,GAC3BlsB,KAAMwgK,EAAcr7H,UAAU,IAEhC,CACEjZ,KAAMwzI,GAAqBxzI,IARxByzI,EASN,EAEHgB,GAAqBA,CAAC3gK,EAAMygK,KAC9B,GAAIZ,GAAuB,CACvB,MAAMe,EDTSz1H,KACnB,IAA8D/yC,EAAUyoK,EAAUC,EAAUC,EAAUC,EAAlGC,EAA+B,IAAhB91H,EAAOx3C,OAAeq1C,EAAMmC,EAAOx3C,OAAWoxC,EAAI,EACnC,MAA9BoG,EAAOA,EAAOx3C,OAAS,KACvBstK,IACkC,MAA9B91H,EAAOA,EAAOx3C,OAAS,IACvBstK,KAGR,MAAMC,EAAc,IAAIh4J,YAAY+3J,GAAen7H,EAAQ,IAAIx8B,WAAW43J,GAC1E,IAAK9oK,EAAI,EAAGA,EAAI4wC,EAAK5wC,GAAK,EACtByoK,EAAWP,GAAOn1H,EAAO9lC,WAAWjN,IACpC0oK,EAAWR,GAAOn1H,EAAO9lC,WAAWjN,EAAI,IACxC2oK,EAAWT,GAAOn1H,EAAO9lC,WAAWjN,EAAI,IACxC4oK,EAAWV,GAAOn1H,EAAO9lC,WAAWjN,EAAI,IACxC0tC,EAAMf,KAAQ87H,GAAY,EAAMC,GAAY,EAC5Ch7H,EAAMf,MAAoB,GAAX+7H,IAAkB,EAAMC,GAAY,EACnDj7H,EAAMf,MAAoB,EAAXg8H,IAAiB,EAAiB,GAAXC,EAE1C,OAAOE,CAAW,ECTE93H,CAAOppC,GACvB,OAAO0gK,GAAUE,EAASH,EAC9B,CAEI,MAAO,CAAEt1H,QAAQ,EAAMnrC,OAC3B,EAEE0gK,GAAYA,CAAC1gK,EAAMygK,IAEZ,SADDA,EAEIzgK,aAAgBygI,KAETzgI,EAIA,IAAIygI,KAAK,CAACzgI,IAIjBA,aAAgBkJ,YAETlJ,EAIAA,EAAK8J,OCvDtBq3J,GAAYtrK,OAAOqP,aAAa,IA4B/B,SAASk8J,KAEZ,OAAO,IAAIC,gBAAgB,CACvBpvI,SAAAA,CAAUqvI,EAAQ7nD,IHkBnB,SAA8B6nD,EAAQ/qG,GACrCqpG,IAAkB0B,EAAOthK,gBAAgBygI,KAClC6gC,EAAOthK,KAAK0wI,cAAcnhF,KAAK+9C,IAAS/9C,KAAKgH,GAE/CspG,KACJyB,EAAOthK,gBAAgBkJ,aAAe8kE,GAAOszF,EAAOthK,OAC9Cu2D,EAAS+2C,GAAQg0D,EAAOthK,OAEnC8/J,GAAawB,GAAQ,GAAQC,IACpBnB,KACDA,GAAe,IAAI3vB,aAEvBl6E,EAAS6pG,GAAa90H,OAAOi2H,GAAS,GAE9C,CG/BYC,CAAqBF,GAASd,IAC1B,MAAMiB,EAAgBjB,EAAc7sK,OACpC,IAAI8kI,EAEJ,GAAIgpC,EAAgB,IAChBhpC,EAAS,IAAInvH,WAAW,GACxB,IAAI0d,SAASyxG,EAAO3uH,QAAQ43J,SAAS,EAAGD,QAEvC,GAAIA,EAAgB,MAAO,CAC5BhpC,EAAS,IAAInvH,WAAW,GACxB,MAAM43C,EAAO,IAAIl6B,SAASyxG,EAAO3uH,QACjCo3C,EAAKwgH,SAAS,EAAG,KACjBxgH,EAAKygH,UAAU,EAAGF,EACtB,KACK,CACDhpC,EAAS,IAAInvH,WAAW,GACxB,MAAM43C,EAAO,IAAIl6B,SAASyxG,EAAO3uH,QACjCo3C,EAAKwgH,SAAS,EAAG,KACjBxgH,EAAK0gH,aAAa,EAAGh7I,OAAO66I,GAChC,CAEIH,EAAOthK,MAA+B,kBAAhBshK,EAAOthK,OAC7By4H,EAAO,IAAM,KAEjBhf,EAAWu2B,QAAQvX,GACnBhf,EAAWu2B,QAAQwwB,EAAc,GAEzC,GAER,CACA,IAAIqB,GACJ,SAASC,GAAYC,GACjB,OAAOA,EAAOxiJ,QAAO,CAACyiJ,EAAKlzB,IAAUkzB,EAAMlzB,EAAMn7I,QAAQ,EAC7D,CACA,SAASsuK,GAAaF,EAAQjwI,GAC1B,GAAIiwI,EAAO,GAAGpuK,SAAWm+B,EACrB,OAAOiwI,EAAOn6H,QAElB,MAAM99B,EAAS,IAAIR,WAAWwoB,GAC9B,IAAIr1B,EAAI,EACR,IAAK,IAAIrE,EAAI,EAAGA,EAAI05B,EAAM15B,IACtB0R,EAAO1R,GAAK2pK,EAAO,GAAGtlK,KAClBA,IAAMslK,EAAO,GAAGpuK,SAChBouK,EAAOn6H,QACPnrC,EAAI,GAMZ,OAHIslK,EAAOpuK,QAAU8I,EAAIslK,EAAO,GAAGpuK,SAC/BouK,EAAO,GAAKA,EAAO,GAAG7sK,MAAMuH,IAEzBqN,CACX,CChFO,SAASo4J,GAAQ7+J,GACtB,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIzN,KAAOssK,GAAQ3sK,UACtB8N,EAAIzN,GAAOssK,GAAQ3sK,UAAUK,GAE/B,OAAOyN,CACT,CAhBkB8+J,CAAM9+J,EACxB,CA0BA6+J,GAAQ3sK,UAAUitB,GAClB0/I,GAAQ3sK,UAAUjB,iBAAmB,SAAS4B,EAAOuqB,GAInD,OAHAprB,KAAK+sK,WAAa/sK,KAAK+sK,YAAc,CAAC,GACrC/sK,KAAK+sK,WAAW,IAAMlsK,GAASb,KAAK+sK,WAAW,IAAMlsK,IAAU,IAC7DM,KAAKiqB,GACDprB,IACT,EAYA6sK,GAAQ3sK,UAAUS,KAAO,SAASE,EAAOuqB,GACvC,SAAS+B,IACPntB,KAAKwuB,IAAI3tB,EAAOssB,GAChB/B,EAAG3sB,MAAMuB,KAAM3B,UACjB,CAIA,OAFA8uB,EAAG/B,GAAKA,EACRprB,KAAKmtB,GAAGtsB,EAAOssB,GACRntB,IACT,EAYA6sK,GAAQ3sK,UAAUsuB,IAClBq+I,GAAQ3sK,UAAUstB,eAClBq/I,GAAQ3sK,UAAU8sK,mBAClBH,GAAQ3sK,UAAUhB,oBAAsB,SAAS2B,EAAOuqB,GAItD,GAHAprB,KAAK+sK,WAAa/sK,KAAK+sK,YAAc,CAAC,EAGlC,GAAK1uK,UAAUC,OAEjB,OADA0B,KAAK+sK,WAAa,CAAC,EACZ/sK,KAIT,IAUIo2B,EAVA0nG,EAAY99H,KAAK+sK,WAAW,IAAMlsK,GACtC,IAAKi9H,EAAW,OAAO99H,KAGvB,GAAI,GAAK3B,UAAUC,OAEjB,cADO0B,KAAK+sK,WAAW,IAAMlsK,GACtBb,KAKT,IAAK,IAAI+C,EAAI,EAAGA,EAAI+6H,EAAUx/H,OAAQyE,IAEpC,IADAqzB,EAAK0nG,EAAU/6H,MACJqoB,GAAMgL,EAAGhL,KAAOA,EAAI,CAC7B0yG,EAAUv8H,OAAOwB,EAAG,GACpB,KACF,CASF,OAJyB,IAArB+6H,EAAUx/H,eACL0B,KAAK+sK,WAAW,IAAMlsK,GAGxBb,IACT,EAUA6sK,GAAQ3sK,UAAU89H,KAAO,SAASn9H,GAChCb,KAAK+sK,WAAa/sK,KAAK+sK,YAAc,CAAC,EAKtC,IAHA,IAAI39I,EAAO,IAAI1G,MAAMrqB,UAAUC,OAAS,GACpCw/H,EAAY99H,KAAK+sK,WAAW,IAAMlsK,GAE7BkC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IACpCqsB,EAAKrsB,EAAI,GAAK1E,UAAU0E,GAG1B,GAAI+6H,EAEG,CAAI/6H,EAAI,EAAb,IAAK,IAAW4wC,GADhBmqF,EAAYA,EAAUj+H,MAAM,IACIvB,OAAQyE,EAAI4wC,IAAO5wC,EACjD+6H,EAAU/6H,GAAGtE,MAAMuB,KAAMovB,EADK9wB,CAKlC,OAAO0B,IACT,EAGA6sK,GAAQ3sK,UAAU+sK,aAAeJ,GAAQ3sK,UAAU89H,KAUnD6uC,GAAQ3sK,UAAUqyD,UAAY,SAAS1xD,GAErC,OADAb,KAAK+sK,WAAa/sK,KAAK+sK,YAAc,CAAC,EAC/B/sK,KAAK+sK,WAAW,IAAMlsK,IAAU,EACzC,EAUAgsK,GAAQ3sK,UAAUgtK,aAAe,SAASrsK,GACxC,QAAUb,KAAKuyD,UAAU1xD,GAAOvC,MAClC,ECxKO,MAAM6uK,GACW,qBAAT9/J,KACAA,KAEgB,qBAAX1O,OACLA,OAGA8wB,SAAS,cAATA,GCPR,SAAS29I,GAAKp/J,GAAc,QAAA0zE,EAAArjF,UAAAC,OAAN24B,EAAI,IAAAvO,MAAAg5D,EAAA,EAAAA,EAAA,KAAA79E,EAAA,EAAAA,EAAA69E,EAAA79E,IAAJozB,EAAIpzB,EAAA,GAAAxF,UAAAwF,GAC7B,OAAOozB,EAAK/M,QAAO,CAACyiJ,EAAK5lI,KACjB/4B,EAAIG,eAAe44B,KACnB4lI,EAAI5lI,GAAK/4B,EAAI+4B,IAEV4lI,IACR,CAAC,EACR,CAEA,MAAMU,GAAqB//J,GAAWosB,WAChC4zI,GAAuBhgK,GAAW0sB,aACjC,SAASuzI,GAAsBv/J,EAAK3O,GACnCA,EAAKmuK,iBACLx/J,EAAIy/J,aAAeJ,GAAmB3vK,KAAK4P,IAC3CU,EAAI0/J,eAAiBJ,GAAqB5vK,KAAK4P,MAG/CU,EAAIy/J,aAAengK,GAAWosB,WAAWh8B,KAAK4P,IAC9CU,EAAI0/J,eAAiBpgK,GAAW0sB,aAAat8B,KAAK4P,IAE1D,CCjBO,MAAMqgK,WAAuB5/J,MAChCggB,WAAAA,CAAY8qH,EAAQxO,EAAaj6F,GAC7B+zC,MAAM00D,GACN74I,KAAKqqI,YAAcA,EACnBrqI,KAAKowC,QAAUA,EACfpwC,KAAK62B,KAAO,gBAChB,EAEG,MAAM+2I,WAAkBf,GAO3B9+I,WAAAA,CAAY1uB,GACR8kF,QACAnkF,KAAK+qB,UAAW,EAChBwiJ,GAAsBvtK,KAAMX,GAC5BW,KAAKX,KAAOA,EACZW,KAAKwsB,MAAQntB,EAAKmtB,MAClBxsB,KAAK6tK,OAASxuK,EAAKwuK,MACvB,CAUAjrH,OAAAA,CAAQi2F,EAAQxO,EAAaj6F,GAEzB,OADA+zC,MAAM8oF,aAAa,QAAS,IAAIU,GAAe90B,EAAQxO,EAAaj6F,IAC7DpwC,IACX,CAIA03I,IAAAA,GAGI,OAFA13I,KAAK02B,WAAa,UAClB12B,KAAK8tK,SACE9tK,IACX,CAIAihI,KAAAA,GAKI,MAJwB,YAApBjhI,KAAK02B,YAAgD,SAApB12B,KAAK02B,aACtC12B,KAAK+tK,UACL/tK,KAAKguK,WAEFhuK,IACX,CAMAy4I,IAAAA,CAAKw1B,GACuB,SAApBjuK,KAAK02B,YACL12B,KAAKmsC,MAAM8hI,EAKnB,CAMAC,MAAAA,GACIluK,KAAK02B,WAAa,OAClB12B,KAAK+qB,UAAW,EAChBo5D,MAAM8oF,aAAa,OACvB,CAOAkB,MAAAA,CAAOxjK,GACH,MAAMshK,EAASf,GAAavgK,EAAM3K,KAAK6tK,OAAOzC,YAC9CprK,KAAKouK,SAASnC,EAClB,CAMAmC,QAAAA,CAASnC,GACL9nF,MAAM8oF,aAAa,SAAUhB,EACjC,CAMA+B,OAAAA,CAAQvrC,GACJziI,KAAK02B,WAAa,SAClBytD,MAAM8oF,aAAa,QAASxqC,EAChC,CAMAvlD,KAAAA,CAAMqJ,GAAW,CACjB8nF,SAAAA,CAAUtwB,GAAoB,IAAZvxH,EAAKnuB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvB,OAAQ0/I,EACJ,MACA/9I,KAAKsuK,YACLtuK,KAAKuuK,QACLvuK,KAAKX,KAAKiuH,KACVttH,KAAKwuK,OAAOhiJ,EACpB,CACA8hJ,SAAAA,GACI,MAAMt6B,EAAWh0I,KAAKX,KAAK20I,SAC3B,OAAkC,IAA3BA,EAAS1yI,QAAQ,KAAc0yI,EAAW,IAAMA,EAAW,GACtE,CACAu6B,KAAAA,GACI,OAAIvuK,KAAKX,KAAK40I,OACRj0I,KAAKX,KAAKg1I,QAAUhiH,OAA0B,MAAnBryB,KAAKX,KAAK40I,QACjCj0I,KAAKX,KAAKg1I,QAAqC,KAA3BhiH,OAAOryB,KAAKX,KAAK40I,OACpC,IAAMj0I,KAAKX,KAAK40I,KAGhB,EAEf,CACAu6B,MAAAA,CAAOhiJ,GACH,MAAMiiJ,ECjIP,SAAgBzgK,GACnB,IAAI2hB,EAAM,GACV,IAAK,IAAI5sB,KAAKiL,EACNA,EAAIG,eAAepL,KACf4sB,EAAIrxB,SACJqxB,GAAO,KACXA,GAAOtf,mBAAmBtN,GAAK,IAAMsN,mBAAmBrC,EAAIjL,KAGpE,OAAO4sB,CACX,CDuH6BsmB,CAAOzpB,GAC5B,OAAOiiJ,EAAanwK,OAAS,IAAMmwK,EAAe,EACtD,EEzIJ,MAAM/kC,GAAW,mEAAmElyF,MAAM,IAAKl5C,GAAS,GAAIoT,GAAM,CAAC,EACnH,IAAqByY,GAAjB09H,GAAO,EAAG9kJ,GAAI,EAQX,SAASkzC,GAAO3D,GACnB,IAAI45H,EAAU,GACd,GACIA,EAAUxiC,GAASp3F,EAAMh0C,IAAU4tK,EACnC55H,EAAMnlC,KAAKwJ,MAAM27B,EAAMh0C,UAClBg0C,EAAM,GACf,OAAO45H,CACX,CAqBO,SAASwC,KACZ,MAAMx2I,EAAM+d,IAAQ,IAAIrkB,MACxB,OAAIsG,IAAQ/N,IACD09H,GAAO,EAAG19H,GAAO+N,GACrBA,EAAM,IAAM+d,GAAO4xG,KAC9B,CAIA,KAAO9kJ,GAAIzE,GAAQyE,KACf2O,GAAIg4H,GAAS3mI,KAAMA,GChDvB,IAAIvE,IAAQ,EACZ,IACIA,GAAkC,qBAAnBs4I,gBACX,oBAAqB,IAAIA,cACjC,CACA,MAAOrpI,IAEH,CAEG,MAAMkhK,GAAUnwK,GCPhB,SAASowK,GAAIvvK,GAChB,MAAMwvK,EAAUxvK,EAAKwvK,QAErB,IACI,GAAI,qBAAuB/3B,kBAAoB+3B,GAAWF,IACtD,OAAO,IAAI73B,cAEnB,CACA,MAAOv3I,IAAK,CACZ,IAAKsvK,EACD,IACI,OAAO,IAAIvhK,GAAW,CAAC,UAAUrC,OAAO,UAAUqE,KAAK,OAAM,oBACjE,CACA,MAAO/P,IAAK,CAEpB,CCXA,SAAS/D,KAAU,CACnB,MAAMszK,GAIK,MAHK,IAAIh4B,GAAe,CAC3B+3B,SAAS,IAEM9/B,aAkNhB,MAAMiM,WAAgB6xB,GAOzB9+I,WAAAA,CAAYghJ,EAAK1vK,GACb8kF,QACAopF,GAAsBvtK,KAAMX,GAC5BW,KAAKX,KAAOA,EACZW,KAAKgzF,OAAS3zF,EAAK2zF,QAAU,MAC7BhzF,KAAK+uK,IAAMA,EACX/uK,KAAK2K,UAAO3L,IAAcK,EAAKsL,KAAOtL,EAAKsL,KAAO,KAClD3K,KAAKoI,QACT,CAMAA,MAAAA,GACI,IAAIkhF,EACJ,MAAMjqF,EAAO+tK,GAAKptK,KAAKX,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKwvK,UAAY7uK,KAAKX,KAAK8rD,GAC3B,MAAMyxF,EAAO58I,KAAK48I,IAAM,IAAI9F,GAAez3I,GAC3C,IACIu9I,EAAIlF,KAAK13I,KAAKgzF,OAAQhzF,KAAK+uK,KAAK,GAChC,IACI,GAAI/uK,KAAKX,KAAK2vK,aAAc,CACxBpyB,EAAIqyB,uBAAyBryB,EAAIqyB,uBAAsB,GACvD,IAAK,IAAIlsK,KAAK/C,KAAKX,KAAK2vK,aAChBhvK,KAAKX,KAAK2vK,aAAa7gK,eAAepL,IACtC65I,EAAI1E,iBAAiBn1I,EAAG/C,KAAKX,KAAK2vK,aAAajsK,GAG3D,CACJ,CACA,MAAOxD,IAAK,CACZ,GAAI,SAAWS,KAAKgzF,OAChB,IACI4pD,EAAI1E,iBAAiB,eAAgB,2BACzC,CACA,MAAO34I,IAAK,CAEhB,IACIq9I,EAAI1E,iBAAiB,SAAU,MACnC,CACA,MAAO34I,IAAK,CACmB,QAA9B+pF,EAAKtpF,KAAKX,KAAK6vK,iBAA8B,IAAP5lF,GAAyBA,EAAG6lF,WAAWvyB,GAE1E,oBAAqBA,IACrBA,EAAIlH,gBAAkB11I,KAAKX,KAAKq2I,iBAEhC11I,KAAKX,KAAK+vK,iBACVxyB,EAAInxB,QAAUzrH,KAAKX,KAAK+vK,gBAE5BxyB,EAAInmH,mBAAqB,KACrB,IAAI6yD,EACmB,IAAnBszD,EAAIlmH,aAC2B,QAA9B4yD,EAAKtpF,KAAKX,KAAK6vK,iBAA8B,IAAP5lF,GAAyBA,EAAG+lF,aAAazyB,IAEhF,IAAMA,EAAIlmH,aAEV,MAAQkmH,EAAI9oB,QAAU,OAAS8oB,EAAI9oB,OACnC9zH,KAAKsvK,SAKLtvK,KAAKytK,cAAa,KACdztK,KAAK4iD,QAA8B,kBAAfg6F,EAAI9oB,OAAsB8oB,EAAI9oB,OAAS,EAAE,GAC9D,GACP,EAEJ8oB,EAAInE,KAAKz4I,KAAK2K,KAClB,CACA,MAAOpL,IAOH,YAHAS,KAAKytK,cAAa,KACdztK,KAAK4iD,QAAQrjD,GAAE,GAChB,EAEP,CACwB,qBAAbX,WACPoB,KAAKqB,MAAQ25I,GAAQu0B,gBACrBv0B,GAAQ9oD,SAASlyF,KAAKqB,OAASrB,KAEvC,CAMA4iD,OAAAA,CAAQn1C,GACJzN,KAAKitK,aAAa,QAASx/J,EAAKzN,KAAK48I,KACrC58I,KAAKwvK,SAAQ,EACjB,CAMAA,OAAAA,CAAQC,GACJ,GAAI,qBAAuBzvK,KAAK48I,KAAO,OAAS58I,KAAK48I,IAArD,CAIA,GADA58I,KAAK48I,IAAInmH,mBAAqBj7B,GAC1Bi0K,EACA,IACIzvK,KAAK48I,IAAIvE,OACb,CACA,MAAO94I,IAAK,CAEQ,qBAAbX,iBACAo8I,GAAQ9oD,SAASlyF,KAAKqB,OAEjCrB,KAAK48I,IAAM,IAXX,CAYJ,CAMA0yB,MAAAA,GACI,MAAM3kK,EAAO3K,KAAK48I,IAAInF,aACT,OAAT9sI,IACA3K,KAAKitK,aAAa,OAAQtiK,GAC1B3K,KAAKitK,aAAa,WAClBjtK,KAAKwvK,UAEb,CAMAn3B,KAAAA,GACIr4I,KAAKwvK,SACT,EASJ,GAPAx0B,GAAQu0B,cAAgB,EACxBv0B,GAAQ9oD,SAAW,CAAC,EAMI,qBAAbtzF,SAEP,GAA2B,oBAAhB40D,YAEPA,YAAY,WAAYk8G,SAEvB,GAAgC,oBAArBzwK,iBAAiC,CAE7CA,iBADyB,eAAgB,GAAa,WAAa,SAChCywK,IAAe,EACtD,CAEJ,SAASA,KACL,IAAK,IAAI3sK,KAAKi4I,GAAQ9oD,SACd8oD,GAAQ9oD,SAAS/jF,eAAepL,IAChCi4I,GAAQ9oD,SAASnvF,GAAGs1I,OAGhC,CCpYO,MAAMs3B,GACqC,oBAAZp9I,SAAqD,oBAApBA,QAAQwR,QAE/D3N,GAAO7D,QAAQwR,UAAUm2B,KAAK9jC,GAG/B,CAACA,EAAIq3I,IAAiBA,EAAar3I,EAAI,GAGzCw5I,GAAYtiK,GAAWsiK,WAAatiK,GAAWuiK,aCJtDC,GAAqC,qBAAdx8E,WACI,kBAAtBA,UAAU22B,SACmB,gBAApC32B,UAAU22B,QAAQxyE,cCLf,MAAMs4H,GAAa,CACtBC,UDKG,cAAiBpC,GAOpB7/I,WAAAA,CAAY1uB,GACR8kF,MAAM9kF,GACNW,KAAK0qK,gBAAkBrrK,EAAK4wK,WAChC,CACA,QAAI1yK,GACA,MAAO,WACX,CACAuwK,MAAAA,GACI,IAAK9tK,KAAKkwK,QAEN,OAEJ,MAAMnB,EAAM/uK,KAAK+uK,MACXhiC,EAAY/sI,KAAKX,KAAK0tI,UAEtB1tI,EAAOywK,GACP,CAAC,EACD1C,GAAKptK,KAAKX,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMW,KAAKX,KAAK2vK,eACV3vK,EAAK0uI,QAAU/tI,KAAKX,KAAK2vK,cAE7B,IACIhvK,KAAKmwK,GACyBL,GAIpB,IAAIF,GAAUb,EAAKhiC,EAAW1tI,GAH9B0tI,EACI,IAAI6iC,GAAUb,EAAKhiC,GACnB,IAAI6iC,GAAUb,EAEhC,CACA,MAAOthK,IACH,OAAOzN,KAAKitK,aAAa,QAASx/J,GACtC,CACAzN,KAAKmwK,GAAG/E,WAAaprK,KAAK6tK,OAAOzC,WACjCprK,KAAKowK,mBACT,CAMAA,iBAAAA,GACIpwK,KAAKmwK,GAAGE,OAAS,KACTrwK,KAAKX,KAAKixK,WACVtwK,KAAKmwK,GAAGI,QAAQC,QAEpBxwK,KAAKkuK,QAAQ,EAEjBluK,KAAKmwK,GAAGM,QAAWC,GAAe1wK,KAAKguK,QAAQ,CAC3C3jC,YAAa,8BACbj6F,QAASsgI,IAEb1wK,KAAKmwK,GAAGxqD,UAAale,GAAOznG,KAAKmuK,OAAO1mE,EAAG98F,MAC3C3K,KAAKmwK,GAAG75I,QAAW/2B,GAAMS,KAAK4iD,QAAQ,kBAAmBrjD,EAC7D,CACA4sC,KAAAA,CAAM8hI,GACFjuK,KAAK+qB,UAAW,EAGhB,IAAK,IAAIhoB,EAAI,EAAGA,EAAIkrK,EAAQ3vK,OAAQyE,IAAK,CACrC,MAAMkpK,EAASgC,EAAQlrK,GACjB4tK,EAAa5tK,IAAMkrK,EAAQ3vK,OAAS,EAC1CmsK,GAAawB,EAAQjsK,KAAK0qK,gBAAiB//J,IAmBvC,IAGQ3K,KAAKmwK,GAAG13B,KAAK9tI,EAKrB,CACA,MAAOpL,IACP,CACIoxK,GAGAhB,IAAS,KACL3vK,KAAK+qB,UAAW,EAChB/qB,KAAKitK,aAAa,QAAQ,GAC3BjtK,KAAKytK,aACZ,GAER,CACJ,CACAM,OAAAA,GAC2B,qBAAZ/tK,KAAKmwK,KACZnwK,KAAKmwK,GAAGlvC,QACRjhI,KAAKmwK,GAAK,KAElB,CAMApB,GAAAA,GACI,MAAMhxB,EAAS/9I,KAAKX,KAAKg1I,OAAS,MAAQ,KACpC7nH,EAAQxsB,KAAKwsB,OAAS,CAAC,EAS7B,OAPIxsB,KAAKX,KAAKuxK,oBACVpkJ,EAAMxsB,KAAKX,KAAKwxK,gBAAkBnC,MAGjC1uK,KAAK0qK,iBACNl+I,EAAMskJ,IAAM,GAET9wK,KAAKquK,UAAUtwB,EAAQvxH,EAClC,CAOA0jJ,KAAAA,GACI,QAASN,EACb,GCjJAmB,aCFG,cAAiBnD,GACpB,QAAIrwK,GACA,MAAO,cACX,CACAuwK,MAAAA,GAEgC,oBAAjBkD,eAIXhxK,KAAKg2I,UAAY,IAAIg7B,aAAahxK,KAAKquK,UAAU,SAAUruK,KAAKX,KAAK4xK,iBAAiBjxK,KAAKzC,OAC3FyC,KAAKg2I,UAAUk7B,OACVh3G,MAAK,KACNl6D,KAAKguK,SAAS,IAEb7zG,OAAO1sD,IACRzN,KAAK4iD,QAAQ,qBAAsBn1C,EAAI,IAG3CzN,KAAKg2I,UAAUm7B,MAAMj3G,MAAK,KACtBl6D,KAAKg2I,UAAUo7B,4BAA4Bl3G,MAAMqgF,IAC7C,MAAM82B,Eb+Df,SAAmCC,EAAYlG,GAC7CoB,KACDA,GAAe,IAAI+E,aAEvB,MAAM7E,EAAS,GACf,IAAIrtJ,EAAQ,EACRmyJ,GAAkB,EAClBh5I,GAAW,EAEf,OAAO,IAAIwzI,gBAAgB,CACvBpvI,SAAAA,CAAU68G,EAAOr1B,GAEb,IADAsoD,EAAOvrK,KAAKs4I,KACC,CACT,GAAc,IAAVp6H,EAA+B,CAC/B,GAAIotJ,GAAYC,GAAU,EACtB,MAEJ,MAAMtpC,EAASwpC,GAAaF,EAAQ,GACpCl0I,EAAkC,OAAV,IAAZ4qG,EAAO,IACnBouC,EAA6B,IAAZpuC,EAAO,GAEpB/jH,EADAmyJ,EAAiB,IACT,EAEgB,MAAnBA,EACG,EAGA,CAEhB,MACK,GAAc,IAAVnyJ,EAA2C,CAChD,GAAIotJ,GAAYC,GAAU,EACtB,MAEJ,MAAM+E,EAAc7E,GAAaF,EAAQ,GACzC8E,EAAiB,IAAI7/I,SAAS8/I,EAAYh9J,OAAQg9J,EAAY/8J,WAAY+8J,EAAYnzK,QAAQozK,UAAU,GACxGryJ,EAAQ,CACZ,MACK,GAAc,IAAVA,EAA2C,CAChD,GAAIotJ,GAAYC,GAAU,EACtB,MAEJ,MAAM+E,EAAc7E,GAAaF,EAAQ,GACnC7gH,EAAO,IAAIl6B,SAAS8/I,EAAYh9J,OAAQg9J,EAAY/8J,WAAY+8J,EAAYnzK,QAC5E0Y,EAAI60C,EAAK8lH,UAAU,GACzB,GAAI36J,EAAI7J,KAAK0Q,IAAI,EAAG,IAAW,EAAG,CAE9BumG,EAAWu2B,QAAQ2vB,IACnB,KACJ,CACAkH,EAAiBx6J,EAAI7J,KAAK0Q,IAAI,EAAG,IAAMguC,EAAK8lH,UAAU,GACtDtyJ,EAAQ,CACZ,KACK,CACD,GAAIotJ,GAAYC,GAAU8E,EACtB,MAEJ,MAAM7mK,EAAOiiK,GAAaF,EAAQ8E,GAClCptD,EAAWu2B,QAAQuwB,GAAa1yI,EAAW7tB,EAAO6hK,GAAaz4H,OAAOppC,GAAOygK,IAC7E/rJ,EAAQ,CACZ,CACA,GAAuB,IAAnBmyJ,GAAwBA,EAAiBF,EAAY,CACrDltD,EAAWu2B,QAAQ2vB,IACnB,KACJ,CACJ,CACJ,GAER,CanIsCsH,CAA0Bv/I,OAAOgI,iBAAkBr6B,KAAK6tK,OAAOzC,YAC/EyG,EAASt3B,EAAOu3B,SAASC,YAAYV,GAAeW,YACpDC,EAAgBlG,KACtBkG,EAAcH,SAASI,OAAO33B,EAAOxvH,UACrC/qB,KAAKmyK,OAASF,EAAclnJ,SAASqnJ,YACrC,MAAMphI,EAAOA,KACT6gI,EACK7gI,OACAkpB,MAAKsnB,IAAqB,IAApB,KAAEniB,EAAI,MAAE7gE,GAAOgjF,EAClBniB,IAGJr/D,KAAKouK,SAAS5vK,GACdwyC,IAAM,IAELmpB,OAAO1sD,OACV,EAENujC,IACA,MAAMi7H,EAAS,CAAEp1I,KAAM,QACnB72B,KAAKwsB,MAAM6lJ,MACXpG,EAAOthK,KAAO,WAAHM,OAAcjL,KAAKwsB,MAAM6lJ,IAAG,OAE3CryK,KAAKmyK,OAAOhmI,MAAM8/H,GAAQ/xG,MAAK,IAAMl6D,KAAKkuK,UAAS,GACrD,IAEV,CACA/hI,KAAAA,CAAM8hI,GACFjuK,KAAK+qB,UAAW,EAChB,IAAK,IAAIhoB,EAAI,EAAGA,EAAIkrK,EAAQ3vK,OAAQyE,IAAK,CACrC,MAAMkpK,EAASgC,EAAQlrK,GACjB4tK,EAAa5tK,IAAMkrK,EAAQ3vK,OAAS,EAC1C0B,KAAKmyK,OAAOhmI,MAAM8/H,GAAQ/xG,MAAK,KACvBy2G,GACAhB,IAAS,KACL3vK,KAAK+qB,UAAW,EAChB/qB,KAAKitK,aAAa,QAAQ,GAC3BjtK,KAAKytK,aACZ,GAER,CACJ,CACAM,OAAAA,GACI,IAAIzkF,EACsB,QAAzBA,EAAKtpF,KAAKg2I,iBAA8B,IAAP1sD,GAAyBA,EAAG23C,OAClE,GD/DAqxC,QHQG,cAAsB1E,GAOzB7/I,WAAAA,CAAY1uB,GAGR,GAFA8kF,MAAM9kF,GACNW,KAAKsyK,SAAU,EACS,qBAAbjqI,SAA0B,CACjC,MAAMkqI,EAAQ,WAAalqI,SAASiyF,SACpC,IAAI2Z,EAAO5rG,SAAS4rG,KAEfA,IACDA,EAAOs+B,EAAQ,MAAQ,MAE3BvyK,KAAKmrD,GACoB,qBAAb9iB,UACJhpC,EAAK20I,WAAa3rG,SAAS2rG,UAC3BC,IAAS50I,EAAK40I,IAC1B,CAIA,MAAMg8B,EAAc5wK,GAAQA,EAAK4wK,YACjCjwK,KAAK0qK,eAAiBoE,KAAYmB,EAC9BjwK,KAAKX,KAAKq2I,kBACV11I,KAAKkvK,eAAYsD,EAEzB,CACA,QAAIj1K,GACA,MAAO,SACX,CAOAuwK,MAAAA,GACI9tK,KAAKyyK,MACT,CAOAv1F,KAAAA,CAAMqJ,GACFvmF,KAAK02B,WAAa,UAClB,MAAMwmD,EAAQA,KACVl9E,KAAK02B,WAAa,SAClB6vD,GAAS,EAEb,GAAIvmF,KAAKsyK,UAAYtyK,KAAK+qB,SAAU,CAChC,IAAIuoH,EAAQ,EACRtzI,KAAKsyK,UACLh/B,IACAtzI,KAAKW,KAAK,gBAAgB,aACpB2yI,GAASp2D,GACf,KAECl9E,KAAK+qB,WACNuoH,IACAtzI,KAAKW,KAAK,SAAS,aACb2yI,GAASp2D,GACf,IAER,MAEIA,GAER,CAMAu1F,IAAAA,GACIzyK,KAAKsyK,SAAU,EACftyK,KAAK0yK,SACL1yK,KAAKitK,aAAa,OACtB,CAMAkB,MAAAA,CAAOxjK,GTpFWgoK,EAACC,EAAgBxH,KACnC,MAAMyH,EAAiBD,EAAep7H,MAAMs0H,IACtCmC,EAAU,GAChB,IAAK,IAAIlrK,EAAI,EAAGA,EAAI8vK,EAAev0K,OAAQyE,IAAK,CAC5C,MAAM+vK,EAAgB5H,GAAa2H,EAAe9vK,GAAIqoK,GAEtD,GADA6C,EAAQ9sK,KAAK2xK,GACc,UAAvBA,EAAcj8I,KACd,KAER,CACA,OAAOo3I,CAAO,ESyFV0E,CAAchoK,EAAM3K,KAAK6tK,OAAOzC,YAAYtqK,SAd1BmrK,IAMd,GAJI,YAAcjsK,KAAK02B,YAA8B,SAAhBu1I,EAAOp1I,MACxC72B,KAAKkuK,SAGL,UAAYjC,EAAOp1I,KAEnB,OADA72B,KAAKguK,QAAQ,CAAE3jC,YAAa,oCACrB,EAGXrqI,KAAKouK,SAASnC,EAAO,IAKrB,WAAajsK,KAAK02B,aAElB12B,KAAKsyK,SAAU,EACftyK,KAAKitK,aAAa,gBACd,SAAWjtK,KAAK02B,YAChB12B,KAAKyyK,OAKjB,CAMA1E,OAAAA,GACI,MAAM9sC,EAAQA,KACVjhI,KAAKmsC,MAAM,CAAC,CAAEtV,KAAM,UAAW,EAE/B,SAAW72B,KAAK02B,WAChBuqG,IAKAjhI,KAAKW,KAAK,OAAQsgI,EAE1B,CAOA90F,KAAAA,CAAM8hI,GACFjuK,KAAK+qB,UAAW,ETxJFgoJ,EAAC9E,EAAS/sG,KAE5B,MAAM5iE,EAAS2vK,EAAQ3vK,OACjBu0K,EAAiB,IAAInqJ,MAAMpqB,GACjC,IAAI2yC,EAAQ,EACZg9H,EAAQntK,SAAQ,CAACmrK,EAAQlpK,KAErB0nK,GAAawB,GAAQ,GAAQd,IACzB0H,EAAe9vK,GAAKooK,IACdl6H,IAAU3yC,GACZ4iE,EAAS2xG,EAAevjK,KAAKw8J,IACjC,GACF,GACJ,ES4IEiH,CAAc9E,GAAUtjK,IACpB3K,KAAKgzK,QAAQroK,GAAM,KACf3K,KAAK+qB,UAAW,EAChB/qB,KAAKitK,aAAa,QAAQ,GAC5B,GAEV,CAMA8B,GAAAA,GACI,MAAMhxB,EAAS/9I,KAAKX,KAAKg1I,OAAS,QAAU,OACtC7nH,EAAQxsB,KAAKwsB,OAAS,CAAC,EAQ7B,OANI,IAAUxsB,KAAKX,KAAKuxK,oBACpBpkJ,EAAMxsB,KAAKX,KAAKwxK,gBAAkBnC,MAEjC1uK,KAAK0qK,gBAAmBl+I,EAAM6lJ,MAC/B7lJ,EAAMskJ,IAAM,GAET9wK,KAAKquK,UAAUtwB,EAAQvxH,EAClC,CAOAmmE,OAAAA,GAAmB,IAAXtzF,EAAIhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEZ,OADA1C,OAAO49C,OAAOl6C,EAAM,CAAE8rD,GAAInrD,KAAKmrD,GAAI+jH,UAAWlvK,KAAKkvK,WAAalvK,KAAKX,MAC9D,IAAI27I,GAAQh7I,KAAK+uK,MAAO1vK,EACnC,CAQA2zK,OAAAA,CAAQroK,EAAMygB,GACV,MAAM6nJ,EAAMjzK,KAAK2yF,QAAQ,CACrBK,OAAQ,OACRroF,KAAMA,IAEVsoK,EAAI9lJ,GAAG,UAAW/B,GAClB6nJ,EAAI9lJ,GAAG,SAAS,CAAC+lJ,EAAW9iI,KACxBpwC,KAAK4iD,QAAQ,iBAAkBswH,EAAW9iI,EAAQ,GAE1D,CAMAsiI,MAAAA,GACI,MAAMO,EAAMjzK,KAAK2yF,UACjBsgF,EAAI9lJ,GAAG,OAAQntB,KAAKmuK,OAAOzwK,KAAKsC,OAChCizK,EAAI9lJ,GAAG,SAAS,CAAC+lJ,EAAW9iI,KACxBpwC,KAAK4iD,QAAQ,iBAAkBswH,EAAW9iI,EAAQ,IAEtDpwC,KAAKmzK,QAAUF,CACnB,IKzMEvgH,GAAK,sPACLx+B,GAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAAS9nB,GAAMujB,GAClB,GAAIA,EAAIrxB,OAAS,IACb,KAAM,eAEV,MAAMi4B,EAAM5G,EAAKzpB,EAAIypB,EAAIruB,QAAQ,KAAM/B,EAAIowB,EAAIruB,QAAQ,MAC7C,GAAN4E,IAAiB,GAAN3G,IACXowB,EAAMA,EAAImgB,UAAU,EAAG5pC,GAAKypB,EAAImgB,UAAU5pC,EAAG3G,GAAGk0B,QAAQ,KAAM,KAAO9D,EAAImgB,UAAUvwC,EAAGowB,EAAIrxB,SAE9F,IAAIqkD,EAAI+P,GAAG9+B,KAAKjE,GAAO,IAAKo/I,EAAM,CAAC,EAAGhsK,EAAI,GAC1C,KAAOA,KACHgsK,EAAI76I,GAAMnxB,IAAM4/C,EAAE5/C,IAAM,GAU5B,OARU,GAANmD,IAAiB,GAAN3G,IACXwvK,EAAIlmJ,OAAS0N,EACbw4I,EAAIh7B,KAAOg7B,EAAIh7B,KAAKjkG,UAAU,EAAGi/H,EAAIh7B,KAAKz1I,OAAS,GAAGm1B,QAAQ,KAAM,KACpEs7I,EAAIqE,UAAYrE,EAAIqE,UAAU3/I,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9Es7I,EAAIsE,SAAU,GAElBtE,EAAIuE,UAIR,SAAmBtlK,EAAKs/G,GACpB,MAAMimD,EAAO,WAAYC,EAAQlmD,EAAK75F,QAAQ8/I,EAAM,KAAK/7H,MAAM,KACvC,KAApB81E,EAAKztH,MAAM,EAAG,IAA6B,IAAhBytH,EAAKhvH,QAChCk1K,EAAMjyK,OAAO,EAAG,GAEE,KAAlB+rH,EAAKztH,OAAO,IACZ2zK,EAAMjyK,OAAOiyK,EAAMl1K,OAAS,EAAG,GAEnC,OAAOk1K,CACX,CAboBF,CAAUvE,EAAKA,EAAU,MACzCA,EAAI0E,SAaR,SAAkB1E,EAAKviJ,GACnB,MAAM7hB,EAAO,CAAC,EAMd,OALA6hB,EAAMiH,QAAQ,6BAA6B,SAAUigJ,EAAIC,EAAIC,GACrDD,IACAhpK,EAAKgpK,GAAMC,EAEnB,IACOjpK,CACX,CArBmB8oK,CAAS1E,EAAKA,EAAW,OACjCA,CACX,CCrCO,MAAM8E,WAAehH,GAOxB9+I,WAAAA,CAAYghJ,GAAgB,IAAX1vK,EAAIhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrB8lF,QACAnkF,KAAKorK,WLJoB,cKKzBprK,KAAK8zK,YAAc,GACf/E,GAAO,kBAAoBA,IAC3B1vK,EAAO0vK,EACPA,EAAM,MAENA,GACAA,EAAM3iK,GAAM2iK,GACZ1vK,EAAK20I,SAAW+6B,EAAIh7B,KACpB10I,EAAKg1I,OAA0B,UAAjB06B,EAAIz0C,UAAyC,QAAjBy0C,EAAIz0C,SAC9Cj7H,EAAK40I,KAAO86B,EAAI96B,KACZ86B,EAAIviJ,QACJntB,EAAKmtB,MAAQuiJ,EAAIviJ,QAEhBntB,EAAK00I,OACV10I,EAAK20I,SAAW5nI,GAAM/M,EAAK00I,MAAMA,MAErCw5B,GAAsBvtK,KAAMX,GAC5BW,KAAKq0I,OACD,MAAQh1I,EAAKg1I,OACPh1I,EAAKg1I,OACe,qBAAbhsG,UAA4B,WAAaA,SAASiyF,SAC/Dj7H,EAAK20I,WAAa30I,EAAK40I,OAEvB50I,EAAK40I,KAAOj0I,KAAKq0I,OAAS,MAAQ,MAEtCr0I,KAAKg0I,SACD30I,EAAK20I,WACoB,qBAAb3rG,SAA2BA,SAAS2rG,SAAW,aAC/Dh0I,KAAKi0I,KACD50I,EAAK40I,OACoB,qBAAb5rG,UAA4BA,SAAS4rG,KACvC5rG,SAAS4rG,KACTj0I,KAAKq0I,OACD,MACA,MAClBr0I,KAAK+vK,WAAa1wK,EAAK0wK,YAAc,CACjC,UACA,YACA,gBAEJ/vK,KAAK8zK,YAAc,GACnB9zK,KAAK+zK,cAAgB,EACrB/zK,KAAKX,KAAO1D,OAAO49C,OAAO,CACtB+zE,KAAM,aACN0mD,OAAO,EACPt+B,iBAAiB,EACjBu+B,SAAS,EACTpD,eAAgB,IAChBqD,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAmB,CACfrhC,UAAW,MAEfi+B,iBAAkB,CAAC,EACnBqD,qBAAqB,GACtBj1K,GACHW,KAAKX,KAAKiuH,KACNttH,KAAKX,KAAKiuH,KAAK75F,QAAQ,MAAO,KACzBzzB,KAAKX,KAAK80K,iBAAmB,IAAM,IACb,kBAApBn0K,KAAKX,KAAKmtB,QACjBxsB,KAAKX,KAAKmtB,MVrDf,SAAgB+nJ,GACnB,IAAIC,EAAM,CAAC,EACP7wI,EAAQ4wI,EAAG/8H,MAAM,KACrB,IAAK,IAAIz0C,EAAI,EAAG82C,EAAIlW,EAAMrlC,OAAQyE,EAAI82C,EAAG92C,IAAK,CAC1C,IAAI8lI,EAAOllG,EAAM5gC,GAAGy0C,MAAM,KAC1Bg9H,EAAIvkK,mBAAmB44H,EAAK,KAAO54H,mBAAmB44H,EAAK,GAC/D,CACA,OAAO2rC,CACX,CU6C8BzgI,CAAO/zC,KAAKX,KAAKmtB,QAGvCxsB,KAAK4uC,GAAK,KACV5uC,KAAKy0K,SAAW,KAChBz0K,KAAK00K,aAAe,KACpB10K,KAAK20K,YAAc,KAEnB30K,KAAK40K,iBAAmB,KACQ,oBAArB31K,mBACHe,KAAKX,KAAKi1K,sBAIVt0K,KAAK60K,0BAA4B,KACzB70K,KAAKg2I,YAELh2I,KAAKg2I,UAAUg3B,qBACfhtK,KAAKg2I,UAAU/U,QACnB,EAEJhiI,iBAAiB,eAAgBe,KAAK60K,2BAA2B,IAE/C,cAAlB70K,KAAKg0I,WACLh0I,KAAK80K,qBAAuB,KACxB90K,KAAKguK,QAAQ,kBAAmB,CAC5B3jC,YAAa,2BACf,EAENprI,iBAAiB,UAAWe,KAAK80K,sBAAsB,KAG/D90K,KAAK03I,MACT,CAQAq9B,eAAAA,CAAgBx3K,GACZ,MAAMivB,EAAQ7wB,OAAO49C,OAAO,CAAC,EAAGv5C,KAAKX,KAAKmtB,OAE1CA,EAAMwoJ,IfkCU,EehChBxoJ,EAAMwpH,UAAYz4I,EAEdyC,KAAK4uC,KACLpiB,EAAM6lJ,IAAMryK,KAAK4uC,IACrB,MAAMvvC,EAAO1D,OAAO49C,OAAO,CAAC,EAAGv5C,KAAKX,KAAM,CACtCmtB,QACAqhJ,OAAQ7tK,KACRg0I,SAAUh0I,KAAKg0I,SACfK,OAAQr0I,KAAKq0I,OACbJ,KAAMj0I,KAAKi0I,MACZj0I,KAAKX,KAAK4xK,iBAAiB1zK,IAC9B,OAAO,IAAIwyK,GAAWxyK,GAAM8B,EAChC,CAMAq4I,IAAAA,GACI,IAAI1B,EACJ,GAAIh2I,KAAKX,KAAK60K,iBACVL,GAAOoB,wBACmC,IAA1Cj1K,KAAK+vK,WAAWzuK,QAAQ,aACxB00I,EAAY,gBAEX,IAAI,IAAMh2I,KAAK+vK,WAAWzxK,OAK3B,YAHA0B,KAAKytK,cAAa,KACdztK,KAAKitK,aAAa,QAAS,0BAA0B,GACtD,GAIHj3B,EAAYh2I,KAAK+vK,WAAW,EAChC,CACA/vK,KAAK02B,WAAa,UAElB,IACIs/G,EAAYh2I,KAAK+0K,gBAAgB/+B,EACrC,CACA,MAAOz2I,IAGH,OAFAS,KAAK+vK,WAAWx9H,aAChBvyC,KAAK03I,MAET,CACA1B,EAAU0B,OACV13I,KAAKk1K,aAAal/B,EACtB,CAMAk/B,YAAAA,CAAal/B,GACLh2I,KAAKg2I,WACLh2I,KAAKg2I,UAAUg3B,qBAGnBhtK,KAAKg2I,UAAYA,EAEjBA,EACK7oH,GAAG,QAASntB,KAAKm1K,QAAQz3K,KAAKsC,OAC9BmtB,GAAG,SAAUntB,KAAKouK,SAAS1wK,KAAKsC,OAChCmtB,GAAG,QAASntB,KAAK4iD,QAAQllD,KAAKsC,OAC9BmtB,GAAG,SAAU0rH,GAAW74I,KAAKguK,QAAQ,kBAAmBn1B,IACjE,CAOAu8B,KAAAA,CAAM73K,GACF,IAAIy4I,EAAYh2I,KAAK+0K,gBAAgBx3K,GACjC83K,GAAS,EACbxB,GAAOoB,uBAAwB,EAC/B,MAAMK,EAAkBA,KAChBD,IAEJr/B,EAAUyC,KAAK,CAAC,CAAE5hH,KAAM,OAAQlsB,KAAM,WACtCqrI,EAAUr1I,KAAK,UAAWgkK,IACtB,IAAI0Q,EAEJ,GAAI,SAAW1Q,EAAI9tI,MAAQ,UAAY8tI,EAAIh6J,KAAM,CAG7C,GAFA3K,KAAKu1K,WAAY,EACjBv1K,KAAKitK,aAAa,YAAaj3B,IAC1BA,EACD,OACJ69B,GAAOoB,sBAAwB,cAAgBj/B,EAAUz4I,KACzDyC,KAAKg2I,UAAU94D,OAAM,KACbm4F,GAEA,WAAar1K,KAAK02B,aAEtB84I,IACAxvK,KAAKk1K,aAAal/B,GAClBA,EAAUyC,KAAK,CAAC,CAAE5hH,KAAM,aACxB72B,KAAKitK,aAAa,UAAWj3B,GAC7BA,EAAY,KACZh2I,KAAKu1K,WAAY,EACjBv1K,KAAKi6B,QAAO,GAEpB,KACK,CACD,MAAMxsB,EAAM,IAAIM,MAAM,eAEtBN,EAAIuoI,UAAYA,EAAUz4I,KAC1ByC,KAAKitK,aAAa,eAAgBx/J,EACtC,KACF,EAEN,SAAS+nK,IACDH,IAGJA,GAAS,EACT7F,IACAx5B,EAAU/U,QACV+U,EAAY,KAChB,CAEA,MAAM1/G,EAAW7oB,IACb,MAAMulB,EAAQ,IAAIjlB,MAAM,gBAAkBN,GAE1CulB,EAAMgjH,UAAYA,EAAUz4I,KAC5Bi4K,IACAx1K,KAAKitK,aAAa,eAAgBj6I,EAAM,EAE5C,SAASyiJ,IACLn/I,EAAQ,mBACZ,CAEA,SAASm6I,IACLn6I,EAAQ,gBACZ,CAEA,SAASo/I,EAAUryF,GACX2yD,GAAa3yD,EAAG9lF,OAASy4I,EAAUz4I,MACnCi4K,GAER,CAEA,MAAMhG,EAAUA,KACZx5B,EAAUxoH,eAAe,OAAQ8nJ,GACjCt/B,EAAUxoH,eAAe,QAAS8I,GAClC0/G,EAAUxoH,eAAe,QAASioJ,GAClCz1K,KAAKwuB,IAAI,QAASiiJ,GAClBzwK,KAAKwuB,IAAI,YAAaknJ,EAAU,EAEpC1/B,EAAUr1I,KAAK,OAAQ20K,GACvBt/B,EAAUr1I,KAAK,QAAS21B,GACxB0/G,EAAUr1I,KAAK,QAAS80K,GACxBz1K,KAAKW,KAAK,QAAS8vK,GACnBzwK,KAAKW,KAAK,YAAa+0K,IACwB,IAA3C11K,KAAKy0K,SAASnzK,QAAQ,iBACb,iBAAT/D,EAEAyC,KAAKytK,cAAa,KACT4H,GACDr/B,EAAU0B,MACd,GACD,KAGH1B,EAAU0B,MAElB,CAMAw2B,MAAAA,GAOI,GANAluK,KAAK02B,WAAa,OAClBm9I,GAAOoB,sBAAwB,cAAgBj1K,KAAKg2I,UAAUz4I,KAC9DyC,KAAKitK,aAAa,QAClBjtK,KAAKi6B,QAGD,SAAWj6B,KAAK02B,YAAc12B,KAAKX,KAAK40K,QAAS,CACjD,IAAIlxK,EAAI,EACR,MAAM82C,EAAI75C,KAAKy0K,SAASn2K,OACxB,KAAOyE,EAAI82C,EAAG92C,IACV/C,KAAKo1K,MAAMp1K,KAAKy0K,SAAS1xK,GAEjC,CACJ,CAMAqrK,QAAAA,CAASnC,GACL,GAAI,YAAcjsK,KAAK02B,YACnB,SAAW12B,KAAK02B,YAChB,YAAc12B,KAAK02B,WAKnB,OAJA12B,KAAKitK,aAAa,SAAUhB,GAE5BjsK,KAAKitK,aAAa,aAClBjtK,KAAK21K,mBACG1J,EAAOp1I,MACX,IAAK,OACD72B,KAAK41K,YAAYzjJ,KAAK/lB,MAAM6/J,EAAOthK,OACnC,MACJ,IAAK,OACD3K,KAAK61K,WAAW,QAChB71K,KAAKitK,aAAa,QAClBjtK,KAAKitK,aAAa,QAClB,MACJ,IAAK,QACD,MAAMx/J,EAAM,IAAIM,MAAM,gBAEtBN,EAAI+lC,KAAOy4H,EAAOthK,KAClB3K,KAAK4iD,QAAQn1C,GACb,MACJ,IAAK,UACDzN,KAAKitK,aAAa,OAAQhB,EAAOthK,MACjC3K,KAAKitK,aAAa,UAAWhB,EAAOthK,MAMpD,CAOAirK,WAAAA,CAAYjrK,GACR3K,KAAKitK,aAAa,YAAatiK,GAC/B3K,KAAK4uC,GAAKjkC,EAAK0nK,IACfryK,KAAKg2I,UAAUxpH,MAAM6lJ,IAAM1nK,EAAK0nK,IAChCryK,KAAKy0K,SAAWz0K,KAAK81K,eAAenrK,EAAK8pK,UACzCz0K,KAAK00K,aAAe/pK,EAAK+pK,aACzB10K,KAAK20K,YAAchqK,EAAKgqK,YACxB30K,KAAKsxK,WAAa3mK,EAAK2mK,WACvBtxK,KAAKkuK,SAED,WAAaluK,KAAK02B,YAEtB12B,KAAK21K,kBACT,CAMAA,gBAAAA,GACI31K,KAAK0tK,eAAe1tK,KAAK40K,kBACzB50K,KAAK40K,iBAAmB50K,KAAKytK,cAAa,KACtCztK,KAAKguK,QAAQ,eAAe,GAC7BhuK,KAAK00K,aAAe10K,KAAK20K,aACxB30K,KAAKX,KAAKixK,WACVtwK,KAAK40K,iBAAiBpE,OAE9B,CAMA2E,OAAAA,GACIn1K,KAAK8zK,YAAYvyK,OAAO,EAAGvB,KAAK+zK,eAIhC/zK,KAAK+zK,cAAgB,EACjB,IAAM/zK,KAAK8zK,YAAYx1K,OACvB0B,KAAKitK,aAAa,SAGlBjtK,KAAKi6B,OAEb,CAMAA,KAAAA,GACI,GAAI,WAAaj6B,KAAK02B,YAClB12B,KAAKg2I,UAAUjrH,WACd/qB,KAAKu1K,WACNv1K,KAAK8zK,YAAYx1K,OAAQ,CACzB,MAAM2vK,EAAUjuK,KAAK+1K,qBACrB/1K,KAAKg2I,UAAUyC,KAAKw1B,GAGpBjuK,KAAK+zK,cAAgB9F,EAAQ3vK,OAC7B0B,KAAKitK,aAAa,QACtB,CACJ,CAOA8I,kBAAAA,GAII,KAH+B/1K,KAAKsxK,YACR,YAAxBtxK,KAAKg2I,UAAUz4I,MACfyC,KAAK8zK,YAAYx1K,OAAS,GAE1B,OAAO0B,KAAK8zK,YAEhB,IAAIkC,EAAc,EAClB,IAAK,IAAIjzK,EAAI,EAAGA,EAAI/C,KAAK8zK,YAAYx1K,OAAQyE,IAAK,CAC9C,MAAM4H,EAAO3K,KAAK8zK,YAAY/wK,GAAG4H,KAIjC,GAHIA,IACAqrK,GZzZO,kBADIhoK,EY0ZerD,GZnZ1C,SAAoBglB,GAChB,IAAIxpB,EAAI,EAAG7H,EAAS,EACpB,IAAK,IAAIyE,EAAI,EAAG82C,EAAIlqB,EAAIrxB,OAAQyE,EAAI82C,EAAG92C,IACnCoD,EAAIwpB,EAAI3f,WAAWjN,GACfoD,EAAI,IACJ7H,GAAU,EAEL6H,EAAI,KACT7H,GAAU,EAEL6H,EAAI,OAAUA,GAAK,MACxB7H,GAAU,GAGVyE,IACAzE,GAAU,GAGlB,OAAOA,CACX,CAxBe23K,CAAWjoK,GAGfb,KAAK+B,KAPQ,MAOFlB,EAAI2G,YAAc3G,EAAIyuB,QYuZ5B15B,EAAI,GAAKizK,EAAch2K,KAAKsxK,WAC5B,OAAOtxK,KAAK8zK,YAAYj0K,MAAM,EAAGkD,GAErCizK,GAAe,CACnB,CZhaD,IAAoBhoK,EYianB,OAAOhO,KAAK8zK,WAChB,CASA3nI,KAAAA,CAAMw4H,EAAKtkK,EAAS+qB,GAEhB,OADAprB,KAAK61K,WAAW,UAAWlR,EAAKtkK,EAAS+qB,GAClCprB,IACX,CACAy4I,IAAAA,CAAKksB,EAAKtkK,EAAS+qB,GAEf,OADAprB,KAAK61K,WAAW,UAAWlR,EAAKtkK,EAAS+qB,GAClCprB,IACX,CAUA61K,UAAAA,CAAWh/I,EAAMlsB,EAAMtK,EAAS+qB,GAS5B,GARI,oBAAsBzgB,IACtBygB,EAAKzgB,EACLA,OAAO3L,GAEP,oBAAsBqB,IACtB+qB,EAAK/qB,EACLA,EAAU,MAEV,YAAcL,KAAK02B,YAAc,WAAa12B,KAAK02B,WACnD,QAEJr2B,EAAUA,GAAW,CAAC,GACd61K,UAAW,IAAU71K,EAAQ61K,SACrC,MAAMjK,EAAS,CACXp1I,KAAMA,EACNlsB,KAAMA,EACNtK,QAASA,GAEbL,KAAKitK,aAAa,eAAgBhB,GAClCjsK,KAAK8zK,YAAY3yK,KAAK8qK,GAClB7gJ,GACAprB,KAAKW,KAAK,QAASyqB,GACvBprB,KAAKi6B,OACT,CAIAgnG,KAAAA,GACI,MAAMA,EAAQA,KACVjhI,KAAKguK,QAAQ,gBACbhuK,KAAKg2I,UAAU/U,OAAO,EAEpBk1C,EAAkBA,KACpBn2K,KAAKwuB,IAAI,UAAW2nJ,GACpBn2K,KAAKwuB,IAAI,eAAgB2nJ,GACzBl1C,GAAO,EAELm1C,EAAiBA,KAEnBp2K,KAAKW,KAAK,UAAWw1K,GACrBn2K,KAAKW,KAAK,eAAgBw1K,EAAgB,EAqB9C,MAnBI,YAAcn2K,KAAK02B,YAAc,SAAW12B,KAAK02B,aACjD12B,KAAK02B,WAAa,UACd12B,KAAK8zK,YAAYx1K,OACjB0B,KAAKW,KAAK,SAAS,KACXX,KAAKu1K,UACLa,IAGAn1C,GACJ,IAGCjhI,KAAKu1K,UACVa,IAGAn1C,KAGDjhI,IACX,CAMA4iD,OAAAA,CAAQn1C,GACJomK,GAAOoB,uBAAwB,EAC/Bj1K,KAAKitK,aAAa,QAASx/J,GAC3BzN,KAAKguK,QAAQ,kBAAmBvgK,EACpC,CAMAugK,OAAAA,CAAQn1B,EAAQxO,GACR,YAAcrqI,KAAK02B,YACnB,SAAW12B,KAAK02B,YAChB,YAAc12B,KAAK02B,aAEnB12B,KAAK0tK,eAAe1tK,KAAK40K,kBAEzB50K,KAAKg2I,UAAUg3B,mBAAmB,SAElChtK,KAAKg2I,UAAU/U,QAEfjhI,KAAKg2I,UAAUg3B,qBACoB,oBAAxB9tK,sBACPA,oBAAoB,eAAgBc,KAAK60K,2BAA2B,GACpE31K,oBAAoB,UAAWc,KAAK80K,sBAAsB,IAG9D90K,KAAK02B,WAAa,SAElB12B,KAAK4uC,GAAK,KAEV5uC,KAAKitK,aAAa,QAASp0B,EAAQxO,GAGnCrqI,KAAK8zK,YAAc,GACnB9zK,KAAK+zK,cAAgB,EAE7B,CAOA+B,cAAAA,CAAerB,GACX,MAAM4B,EAAmB,GACzB,IAAItzK,EAAI,EACR,MAAMqE,EAAIqtK,EAASn2K,OACnB,KAAOyE,EAAIqE,EAAGrE,KACL/C,KAAK+vK,WAAWzuK,QAAQmzK,EAAS1xK,KAClCszK,EAAiBl1K,KAAKszK,EAAS1xK,IAEvC,OAAOszK,CACX,EAEJxC,GAAOv5C,SfrbiB,EgB1JAu5C,GAAOv5C,SCF/B,MAAMkwC,GAA+C,oBAAhB32J,YAC/B8kE,GAAU3qE,GACyB,oBAAvB6F,YAAY8kE,OACpB9kE,YAAY8kE,OAAO3qE,GACnBA,EAAIyG,kBAAkBZ,YAE1BhI,GAAWlQ,OAAOuE,UAAU2L,SAC5B0+J,GAAiC,oBAATn/B,MACT,qBAATA,MACoB,6BAAxBv/H,GAAS7N,KAAKotI,MAChBkrC,GAAiC,oBAATC,MACT,qBAATA,MACoB,6BAAxB1qK,GAAS7N,KAAKu4K,MAMf,SAAS/9I,GAASxqB,GACrB,OAASw8J,KAA0Bx8J,aAAe6F,aAAe8kE,GAAO3qE,KACnEu8J,IAAkBv8J,aAAeo9H,MACjCkrC,IAAkBtoK,aAAeuoK,IAC1C,CACO,SAASC,GAAUxoK,EAAKo8H,GAC3B,IAAKp8H,GAAsB,kBAARA,EACf,OAAO,EAEX,GAAI0a,MAAMC,QAAQ3a,GAAM,CACpB,IAAK,IAAIjL,EAAI,EAAG82C,EAAI7rC,EAAI1P,OAAQyE,EAAI82C,EAAG92C,IACnC,GAAIyzK,GAAUxoK,EAAIjL,IACd,OAAO,EAGf,OAAO,CACX,CACA,GAAIy1B,GAASxqB,GACT,OAAO,EAEX,GAAIA,EAAIo8H,QACkB,oBAAfp8H,EAAIo8H,QACU,IAArB/rI,UAAUC,OACV,OAAOk4K,GAAUxoK,EAAIo8H,UAAU,GAEnC,IAAK,MAAM7pI,KAAOyN,EACd,GAAIrS,OAAOuE,UAAUiO,eAAenQ,KAAKgQ,EAAKzN,IAAQi2K,GAAUxoK,EAAIzN,IAChE,OAAO,EAGf,OAAO,CACX,CCzCO,SAASk2K,GAAkBxK,GAC9B,MAAMyK,EAAU,GACVC,EAAa1K,EAAOthK,KACpBo6I,EAAOknB,EAGb,OAFAlnB,EAAKp6I,KAAOisK,GAAmBD,EAAYD,GAC3C3xB,EAAK8xB,YAAcH,EAAQp4K,OACpB,CAAE2tK,OAAQlnB,EAAM2xB,QAASA,EACpC,CACA,SAASE,GAAmBjsK,EAAM+rK,GAC9B,IAAK/rK,EACD,OAAOA,EACX,GAAI6tB,GAAS7tB,GAAO,CAChB,MAAM49J,EAAc,CAAEuO,cAAc,EAAMxkI,IAAKokI,EAAQp4K,QAEvD,OADAo4K,EAAQv1K,KAAKwJ,GACN49J,CACX,CACK,GAAI7/I,MAAMC,QAAQhe,GAAO,CAC1B,MAAM6iC,EAAU,IAAI9kB,MAAM/d,EAAKrM,QAC/B,IAAK,IAAIyE,EAAI,EAAGA,EAAI4H,EAAKrM,OAAQyE,IAC7ByqC,EAAQzqC,GAAK6zK,GAAmBjsK,EAAK5H,GAAI2zK,GAE7C,OAAOlpI,CACX,CACK,GAAoB,kBAAT7iC,KAAuBA,aAAgBinB,MAAO,CAC1D,MAAM4b,EAAU,CAAC,EACjB,IAAK,MAAMjtC,KAAOoK,EACVhP,OAAOuE,UAAUiO,eAAenQ,KAAK2M,EAAMpK,KAC3CitC,EAAQjtC,GAAOq2K,GAAmBjsK,EAAKpK,GAAMm2K,IAGrD,OAAOlpI,CACX,CACA,OAAO7iC,CACX,CASO,SAASosK,GAAkB9K,EAAQyK,GAGtC,OAFAzK,EAAOthK,KAAOqsK,GAAmB/K,EAAOthK,KAAM+rK,UACvCzK,EAAO4K,YACP5K,CACX,CACA,SAAS+K,GAAmBrsK,EAAM+rK,GAC9B,IAAK/rK,EACD,OAAOA,EACX,GAAIA,IAA8B,IAAtBA,EAAKmsK,aAAuB,CAIpC,GAHyC,kBAAbnsK,EAAK2nC,KAC7B3nC,EAAK2nC,KAAO,GACZ3nC,EAAK2nC,IAAMokI,EAAQp4K,OAEnB,OAAOo4K,EAAQ/rK,EAAK2nC,KAGpB,MAAM,IAAIvkC,MAAM,sBAExB,CACK,GAAI2a,MAAMC,QAAQhe,GACnB,IAAK,IAAI5H,EAAI,EAAGA,EAAI4H,EAAKrM,OAAQyE,IAC7B4H,EAAK5H,GAAKi0K,GAAmBrsK,EAAK5H,GAAI2zK,QAGzC,GAAoB,kBAAT/rK,EACZ,IAAK,MAAMpK,KAAOoK,EACVhP,OAAOuE,UAAUiO,eAAenQ,KAAK2M,EAAMpK,KAC3CoK,EAAKpK,GAAOy2K,GAAmBrsK,EAAKpK,GAAMm2K,IAItD,OAAO/rK,CACX,CC5EA,MAAMssK,GAAkB,CACpB,UACA,gBACA,aACA,gBACA,cACA,kBAOS38C,GAAW,EACjB,IAAI48C,IACX,SAAWA,GACPA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAuB,WAAI,GAAK,aAC3CA,EAAWA,EAAkB,MAAI,GAAK,QACtCA,EAAWA,EAAgB,IAAI,GAAK,MACpCA,EAAWA,EAA0B,cAAI,GAAK,gBAC9CA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAuB,WAAI,GAAK,YAC9C,CARD,CAQGA,KAAeA,GAAa,CAAC,IAIzB,MAAMC,GAMTppJ,WAAAA,CAAYqpJ,GACRp3K,KAAKo3K,SAAWA,CACpB,CAOAnhI,MAAAA,CAAOjoC,GACH,OAAIA,EAAI6oB,OAASqgJ,GAAWG,OAASrpK,EAAI6oB,OAASqgJ,GAAWI,MACrDd,GAAUxoK,GAWX,CAAChO,KAAKu3K,eAAevpK,IAVbhO,KAAKw3K,eAAe,CACvB3gJ,KAAM7oB,EAAI6oB,OAASqgJ,GAAWG,MACxBH,GAAWO,aACXP,GAAWQ,WACjBC,IAAK3pK,EAAI2pK,IACThtK,KAAMqD,EAAIrD,KACVikC,GAAI5gC,EAAI4gC,IAKxB,CAIA2oI,cAAAA,CAAevpK,GAEX,IAAI2hB,EAAM,GAAK3hB,EAAI6oB,KAmBnB,OAjBI7oB,EAAI6oB,OAASqgJ,GAAWO,cACxBzpK,EAAI6oB,OAASqgJ,GAAWQ,aACxB/nJ,GAAO3hB,EAAI6oK,YAAc,KAIzB7oK,EAAI2pK,KAAO,MAAQ3pK,EAAI2pK,MACvBhoJ,GAAO3hB,EAAI2pK,IAAM,KAGjB,MAAQ3pK,EAAI4gC,KACZjf,GAAO3hB,EAAI4gC,IAGX,MAAQ5gC,EAAIrD,OACZglB,GAAOwC,KAAKpmB,UAAUiC,EAAIrD,KAAM3K,KAAKo3K,WAElCznJ,CACX,CAMA6nJ,cAAAA,CAAexpK,GACX,MAAM4pK,EAAiBnB,GAAkBzoK,GACnC+2I,EAAO/kJ,KAAKu3K,eAAeK,EAAe3L,QAC1CyK,EAAUkB,EAAelB,QAE/B,OADAA,EAAQv9G,QAAQ4rF,GACT2xB,CACX,EAGJ,SAASv+I,GAAS35B,GACd,MAAiD,oBAA1C7C,OAAOuE,UAAU2L,SAAS7N,KAAKQ,EAC1C,CAMO,MAAMq5K,WAAgBhL,GAMzB9+I,WAAAA,CAAY+pJ,GACR3zF,QACAnkF,KAAK83K,QAAUA,CACnB,CAMA92K,GAAAA,CAAIgN,GACA,IAAIi+J,EACJ,GAAmB,kBAARj+J,EAAkB,CACzB,GAAIhO,KAAK+3K,cACL,MAAM,IAAIhqK,MAAM,mDAEpBk+J,EAASjsK,KAAKg4K,aAAahqK,GAC3B,MAAMiqK,EAAgBhM,EAAOp1I,OAASqgJ,GAAWO,aAC7CQ,GAAiBhM,EAAOp1I,OAASqgJ,GAAWQ,YAC5CzL,EAAOp1I,KAAOohJ,EAAgBf,GAAWG,MAAQH,GAAWI,IAE5Dt3K,KAAK+3K,cAAgB,IAAIG,GAAoBjM,GAElB,IAAvBA,EAAO4K,aACP1yF,MAAM8oF,aAAa,UAAWhB,IAKlC9nF,MAAM8oF,aAAa,UAAWhB,EAEtC,KACK,KAAIzzI,GAASxqB,KAAQA,EAAI8nC,OAe1B,MAAM,IAAI/nC,MAAM,iBAAmBC,GAbnC,IAAKhO,KAAK+3K,cACN,MAAM,IAAIhqK,MAAM,oDAGhBk+J,EAASjsK,KAAK+3K,cAAcI,eAAenqK,GACvCi+J,IAEAjsK,KAAK+3K,cAAgB,KACrB5zF,MAAM8oF,aAAa,UAAWhB,GAM1C,CACJ,CAOA+L,YAAAA,CAAaroJ,GACT,IAAI5sB,EAAI,EAER,MAAM2sC,EAAI,CACN7Y,KAAMxE,OAAO1C,EAAI7d,OAAO,KAE5B,QAA2B9S,IAAvBk4K,GAAWxnI,EAAE7Y,MACb,MAAM,IAAI9oB,MAAM,uBAAyB2hC,EAAE7Y,MAG/C,GAAI6Y,EAAE7Y,OAASqgJ,GAAWO,cACtB/nI,EAAE7Y,OAASqgJ,GAAWQ,WAAY,CAClC,MAAM7iH,EAAQ9xD,EAAI,EAClB,KAA2B,MAApB4sB,EAAI7d,SAAS/O,IAAcA,GAAK4sB,EAAIrxB,SAC3C,MAAM85K,EAAMzoJ,EAAImgB,UAAU+kB,EAAO9xD,GACjC,GAAIq1K,GAAO/lJ,OAAO+lJ,IAA0B,MAAlBzoJ,EAAI7d,OAAO/O,GACjC,MAAM,IAAIgL,MAAM,uBAEpB2hC,EAAEmnI,YAAcxkJ,OAAO+lJ,EAC3B,CAEA,GAAI,MAAQzoJ,EAAI7d,OAAO/O,EAAI,GAAI,CAC3B,MAAM8xD,EAAQ9xD,EAAI,EAClB,OAASA,GAAG,CAER,GAAI,MADM4sB,EAAI7d,OAAO/O,GAEjB,MACJ,GAAIA,IAAM4sB,EAAIrxB,OACV,KACR,CACAoxC,EAAEioI,IAAMhoJ,EAAImgB,UAAU+kB,EAAO9xD,EACjC,MAEI2sC,EAAEioI,IAAM,IAGZ,MAAMvtJ,EAAOuF,EAAI7d,OAAO/O,EAAI,GAC5B,GAAI,KAAOqnB,GAAQiI,OAAOjI,IAASA,EAAM,CACrC,MAAMyqC,EAAQ9xD,EAAI,EAClB,OAASA,GAAG,CACR,MAAMoD,EAAIwpB,EAAI7d,OAAO/O,GACrB,GAAI,MAAQoD,GAAKksB,OAAOlsB,IAAMA,EAAG,GAC3BpD,EACF,KACJ,CACA,GAAIA,IAAM4sB,EAAIrxB,OACV,KACR,CACAoxC,EAAEd,GAAKvc,OAAO1C,EAAImgB,UAAU+kB,EAAO9xD,EAAI,GAC3C,CAEA,GAAI4sB,EAAI7d,SAAS/O,GAAI,CACjB,MAAMk+D,EAAUjhE,KAAKq4K,SAAS1oJ,EAAIjgB,OAAO3M,IACzC,IAAI80K,GAAQS,eAAe5oI,EAAE7Y,KAAMoqC,GAI/B,MAAM,IAAIlzD,MAAM,mBAHhB2hC,EAAE/kC,KAAOs2D,CAKjB,CACA,OAAOvxB,CACX,CACA2oI,QAAAA,CAAS1oJ,GACL,IACI,OAAOwC,KAAK/lB,MAAMujB,EAAK3vB,KAAK83K,QAChC,CACA,MAAOv4K,IACH,OAAO,CACX,CACJ,CACA,qBAAO+4K,CAAezhJ,EAAMoqC,GACxB,OAAQpqC,GACJ,KAAKqgJ,GAAWqB,QACZ,OAAOpgJ,GAAS8oC,GACpB,KAAKi2G,GAAWsB,WACZ,YAAmBx5K,IAAZiiE,EACX,KAAKi2G,GAAWuB,cACZ,MAA0B,kBAAZx3G,GAAwB9oC,GAAS8oC,GACnD,KAAKi2G,GAAWG,MAChB,KAAKH,GAAWO,aACZ,OAAQ/uJ,MAAMC,QAAQs4C,KACK,kBAAfA,EAAQ,IACW,kBAAfA,EAAQ,KAC6B,IAAzCg2G,GAAgB31K,QAAQ2/D,EAAQ,KAChD,KAAKi2G,GAAWI,IAChB,KAAKJ,GAAWQ,WACZ,OAAOhvJ,MAAMC,QAAQs4C,GAEjC,CAIA3zC,OAAAA,GACQttB,KAAK+3K,gBACL/3K,KAAK+3K,cAAcW,yBACnB14K,KAAK+3K,cAAgB,KAE7B,EAUJ,MAAMG,GACFnqJ,WAAAA,CAAYk+I,GACRjsK,KAAKisK,OAASA,EACdjsK,KAAK02K,QAAU,GACf12K,KAAK24K,UAAY1M,CACrB,CASAkM,cAAAA,CAAeS,GAEX,GADA54K,KAAK02K,QAAQv1K,KAAKy3K,GACd54K,KAAK02K,QAAQp4K,SAAW0B,KAAK24K,UAAU9B,YAAa,CAEpD,MAAM5K,EAAS8K,GAAkB/2K,KAAK24K,UAAW34K,KAAK02K,SAEtD,OADA12K,KAAK04K,yBACEzM,CACX,CACA,OAAO,IACX,CAIAyM,sBAAAA,GACI14K,KAAK24K,UAAY,KACjB34K,KAAK02K,QAAU,EACnB,ECrTG,SAASvpJ,GAAGnf,EAAKy5F,EAAIr8E,GAExB,OADApd,EAAImf,GAAGs6E,EAAIr8E,GACJ,WACHpd,EAAIwgB,IAAIi5E,EAAIr8E,EAChB,CACJ,CCEA,MAAM6rJ,GAAkBt7K,OAAOk9K,OAAO,CAClCnhB,QAAS,EACTohB,cAAe,EACf/mE,WAAY,EACZgnE,cAAe,EAEfC,YAAa,EACbxrJ,eAAgB,IA0Bb,MAAMqmJ,WAAehH,GAIxB9+I,WAAAA,CAAYkrJ,EAAItB,EAAKt4K,GACjB8kF,QAeAnkF,KAAKk5K,WAAY,EAKjBl5K,KAAKm5K,WAAY,EAIjBn5K,KAAKo5K,cAAgB,GAIrBp5K,KAAKq5K,WAAa,GAOlBr5K,KAAKs5K,OAAS,GAKdt5K,KAAKu5K,UAAY,EACjBv5K,KAAKw5K,IAAM,EAwBXx5K,KAAKy5K,KAAO,CAAC,EACbz5K,KAAKsjD,MAAQ,CAAC,EACdtjD,KAAKi5K,GAAKA,EACVj5K,KAAK23K,IAAMA,EACPt4K,GAAQA,EAAKm3I,OACbx2I,KAAKw2I,KAAOn3I,EAAKm3I,MAErBx2I,KAAK05K,MAAQ/9K,OAAO49C,OAAO,CAAC,EAAGl6C,GAC3BW,KAAKi5K,GAAGU,cACR35K,KAAK03I,MACb,CAeA,gBAAIkiC,GACA,OAAQ55K,KAAKk5K,SACjB,CAMAW,SAAAA,GACI,GAAI75K,KAAK85K,KACL,OACJ,MAAMb,EAAKj5K,KAAKi5K,GAChBj5K,KAAK85K,KAAO,CACR3sJ,GAAG8rJ,EAAI,OAAQj5K,KAAKqwK,OAAO3yK,KAAKsC,OAChCmtB,GAAG8rJ,EAAI,SAAUj5K,KAAK+5K,SAASr8K,KAAKsC,OACpCmtB,GAAG8rJ,EAAI,QAASj5K,KAAKs2B,QAAQ54B,KAAKsC,OAClCmtB,GAAG8rJ,EAAI,QAASj5K,KAAKywK,QAAQ/yK,KAAKsC,OAE1C,CAkBA,UAAIuiI,GACA,QAASviI,KAAK85K,IAClB,CAWApiB,OAAAA,GACI,OAAI13J,KAAKk5K,YAETl5K,KAAK65K,YACA75K,KAAKi5K,GAAkB,eACxBj5K,KAAKi5K,GAAGvhC,OACR,SAAW13I,KAAKi5K,GAAGe,aACnBh6K,KAAKqwK,UALErwK,IAOf,CAIA03I,IAAAA,GACI,OAAO13I,KAAK03J,SAChB,CAgBAjf,IAAAA,GAAc,QAAA/2D,EAAArjF,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAg5D,GAAA79E,EAAA,EAAAA,EAAA69E,EAAA79E,IAAJurB,EAAIvrB,GAAAxF,UAAAwF,GAGR,OAFAurB,EAAK+pC,QAAQ,WACbn5D,KAAKg+H,KAAKv/H,MAAMuB,KAAMovB,GACfpvB,IACX,CAkBAg+H,IAAAA,CAAKv2B,GACD,GAAIwvE,GAAgB9oK,eAAes5F,GAC/B,MAAM,IAAI15F,MAAM,IAAM05F,EAAG57F,WAAa,8BACzC,QAAAonF,EAAA50F,UAAAC,OAHO8wB,EAAI,IAAA1G,MAAAuqE,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9jE,EAAI8jE,EAAA,GAAA70F,UAAA60F,GAKZ,GADA9jE,EAAK+pC,QAAQsuC,GACTznG,KAAK05K,MAAMO,UAAYj6K,KAAKsjD,MAAM42H,YAAcl6K,KAAKsjD,MAAM62H,SAE3D,OADAn6K,KAAKo6K,YAAYhrJ,GACVpvB,KAEX,MAAMisK,EAAS,CACXp1I,KAAMqgJ,GAAWG,MACjB1sK,KAAMykB,EAEV68I,QAAiB,CAAC,GAGlB,GAFAA,EAAO5rK,QAAQ61K,UAAmC,IAAxBl2K,KAAKsjD,MAAM4yH,SAEjC,oBAAsB9mJ,EAAKA,EAAK9wB,OAAS,GAAI,CAC7C,MAAMswC,EAAK5uC,KAAKw5K,MACVa,EAAMjrJ,EAAKsU,MACjB1jC,KAAKs6K,qBAAqB1rI,EAAIyrI,GAC9BpO,EAAOr9H,GAAKA,CAChB,CACA,MAAM2rI,EAAsBv6K,KAAKi5K,GAAGuB,QAChCx6K,KAAKi5K,GAAGuB,OAAOxkC,WACfh2I,KAAKi5K,GAAGuB,OAAOxkC,UAAUjrH,SAY7B,OAXsB/qB,KAAKsjD,MAAM62H,YAAcI,IAAwBv6K,KAAKk5K,aAGnEl5K,KAAKk5K,WACVl5K,KAAKy6K,wBAAwBxO,GAC7BjsK,KAAKisK,OAAOA,IAGZjsK,KAAKq5K,WAAWl4K,KAAK8qK,IAEzBjsK,KAAKsjD,MAAQ,CAAC,EACPtjD,IACX,CAIAs6K,oBAAAA,CAAqB1rI,EAAIyrI,GAAK,IACtB/wF,EADsBpoF,EAAA,KAE1B,MAAMuqH,EAAwC,QAA7BniC,EAAKtpF,KAAKsjD,MAAMmoE,eAA4B,IAAPniC,EAAgBA,EAAKtpF,KAAK05K,MAAMgB,WACtF,QAAgB17K,IAAZysH,EAEA,YADAzrH,KAAKy5K,KAAK7qI,GAAMyrI,GAIpB,MAAMp9F,EAAQj9E,KAAKi5K,GAAGxL,cAAa,YACxBztK,KAAKy5K,KAAK7qI,GACjB,IAAK,IAAI7rC,EAAI,EAAGA,EAAI/C,KAAKq5K,WAAW/6K,OAAQyE,IACpC/C,KAAKq5K,WAAWt2K,GAAG6rC,KAAOA,GAC1B5uC,KAAKq5K,WAAW93K,OAAOwB,EAAG,GAGlCs3K,EAAIr8K,KAAKgC,KAAM,IAAI+N,MAAM,2BAA2B,GACrD09G,GACGrgG,EAAK,WAEPlqB,EAAK+3K,GAAGvL,eAAezwF,GAAO,QAAA09F,EAAAt8K,UAAAC,OAFnB8wB,EAAI,IAAA1G,MAAAiyJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxrJ,EAAIwrJ,GAAAv8K,UAAAu8K,GAGfP,EAAI57K,MAAMyC,EAAMkuB,EACpB,EACAhE,EAAGyvJ,WAAY,EACf76K,KAAKy5K,KAAK7qI,GAAMxjB,CACpB,CAiBA0vJ,WAAAA,CAAYrzE,GAAa,QAAAszE,EAAA18K,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAqyJ,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5rJ,EAAI4rJ,EAAA,GAAA38K,UAAA28K,GACnB,OAAO,IAAIzoJ,SAAQ,CAACwR,EAAS0uD,KACzB,MAAMrnE,EAAKA,CAACqmH,EAAMC,IACPD,EAAOh/C,EAAOg/C,GAAQ1tG,EAAQ2tG,GAEzCtmH,EAAGyvJ,WAAY,EACfzrJ,EAAKjuB,KAAKiqB,GACVprB,KAAKg+H,KAAKv2B,KAAOr4E,EAAK,GAE9B,CAMAgrJ,WAAAA,CAAYhrJ,GAAM,IAAAqoF,EAAA,KACd,IAAI4iE,EACiC,oBAA1BjrJ,EAAKA,EAAK9wB,OAAS,KAC1B+7K,EAAMjrJ,EAAKsU,OAEf,MAAMuoI,EAAS,CACXr9H,GAAI5uC,KAAKu5K,YACT0B,SAAU,EACVr6G,SAAS,EACTxxC,OACAk0B,MAAO3nD,OAAO49C,OAAO,CAAE2gI,WAAW,GAAQl6K,KAAKsjD,QAEnDl0B,EAAKjuB,MAAK,SAACsM,GACP,GAAIw+J,IAAWx0D,EAAK6hE,OAAO,GAEvB,OAGJ,GADyB,OAAR7rK,EAETw+J,EAAOgP,SAAWxjE,EAAKiiE,MAAMO,UAC7BxiE,EAAK6hE,OAAO/mI,QACR8nI,GACAA,EAAI5sK,SAMZ,GADAgqG,EAAK6hE,OAAO/mI,QACR8nI,EAAK,SAAAa,EAAA78K,UAAAC,OAhBE68K,EAAY,IAAAzyJ,MAAAwyJ,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAZD,EAAYC,EAAA,GAAA/8K,UAAA+8K,GAiBnBf,EAAI,QAASc,EACjB,CAGJ,OADAlP,EAAOrrG,SAAU,EACV62C,EAAK4jE,aAChB,IACAr7K,KAAKs5K,OAAOn4K,KAAK8qK,GACjBjsK,KAAKq7K,aACT,CAOAA,WAAAA,GAA2B,IAAfpoC,EAAK50I,UAAAC,OAAA,QAAAU,IAAAX,UAAA,IAAAA,UAAA,GACb,IAAK2B,KAAKk5K,WAAoC,IAAvBl5K,KAAKs5K,OAAOh7K,OAC/B,OAEJ,MAAM2tK,EAASjsK,KAAKs5K,OAAO,GACvBrN,EAAOrrG,UAAYqyE,IAGvBg5B,EAAOrrG,SAAU,EACjBqrG,EAAOgP,WACPj7K,KAAKsjD,MAAQ2oH,EAAO3oH,MACpBtjD,KAAKg+H,KAAKv/H,MAAMuB,KAAMisK,EAAO78I,MACjC,CAOA68I,MAAAA,CAAOA,GACHA,EAAO0L,IAAM33K,KAAK23K,IAClB33K,KAAKi5K,GAAGqC,QAAQrP,EACpB,CAMAoE,MAAAA,GAC4B,mBAAbrwK,KAAKw2I,KACZx2I,KAAKw2I,MAAM7rI,IACP3K,KAAKu7K,mBAAmB5wK,EAAK,IAIjC3K,KAAKu7K,mBAAmBv7K,KAAKw2I,KAErC,CAOA+kC,kBAAAA,CAAmB5wK,GACf3K,KAAKisK,OAAO,CACRp1I,KAAMqgJ,GAAWqB,QACjB5tK,KAAM3K,KAAKw7K,KACL7/K,OAAO49C,OAAO,CAAEkiI,IAAKz7K,KAAKw7K,KAAM72K,OAAQ3E,KAAK07K,aAAe/wK,GAC5DA,GAEd,CAOA2rB,OAAAA,CAAQ7oB,GACCzN,KAAKk5K,WACNl5K,KAAKitK,aAAa,gBAAiBx/J,EAE3C,CAQAgjK,OAAAA,CAAQ53B,EAAQxO,GACZrqI,KAAKk5K,WAAY,SACVl5K,KAAK4uC,GACZ5uC,KAAKitK,aAAa,aAAcp0B,EAAQxO,GACxCrqI,KAAK27K,YACT,CAOAA,UAAAA,GACIhgL,OAAOqtB,KAAKhpB,KAAKy5K,MAAM34K,SAAS8tC,IAE5B,IADmB5uC,KAAKq5K,WAAWrjF,MAAMi2E,GAAWzrK,OAAOyrK,EAAOr9H,MAAQA,IACzD,CAEb,MAAMyrI,EAAMr6K,KAAKy5K,KAAK7qI,UACf5uC,KAAKy5K,KAAK7qI,GACbyrI,EAAIQ,WACJR,EAAIr8K,KAAKgC,KAAM,IAAI+N,MAAM,gCAEjC,IAER,CAOAgsK,QAAAA,CAAS9N,GAEL,GADsBA,EAAO0L,MAAQ33K,KAAK23K,IAG1C,OAAQ1L,EAAOp1I,MACX,KAAKqgJ,GAAWqB,QACRtM,EAAOthK,MAAQshK,EAAOthK,KAAK0nK,IAC3BryK,KAAK47K,UAAU3P,EAAOthK,KAAK0nK,IAAKpG,EAAOthK,KAAK8wK,KAG5Cz7K,KAAKitK,aAAa,gBAAiB,IAAIl/J,MAAM,8LAEjD,MACJ,KAAKmpK,GAAWG,MAChB,KAAKH,GAAWO,aACZz3K,KAAK67K,QAAQ5P,GACb,MACJ,KAAKiL,GAAWI,IAChB,KAAKJ,GAAWQ,WACZ13K,KAAK87K,MAAM7P,GACX,MACJ,KAAKiL,GAAWsB,WACZx4K,KAAK+7K,eACL,MACJ,KAAK7E,GAAWuB,cACZz4K,KAAKstB,UACL,MAAM7f,EAAM,IAAIM,MAAMk+J,EAAOthK,KAAKpB,SAElCkE,EAAI9C,KAAOshK,EAAOthK,KAAKA,KACvB3K,KAAKitK,aAAa,gBAAiBx/J,GAG/C,CAOAouK,OAAAA,CAAQ5P,GACJ,MAAM78I,EAAO68I,EAAOthK,MAAQ,GACxB,MAAQshK,EAAOr9H,IACfxf,EAAKjuB,KAAKnB,KAAKq6K,IAAIpO,EAAOr9H,KAE1B5uC,KAAKk5K,UACLl5K,KAAKg8K,UAAU5sJ,GAGfpvB,KAAKo5K,cAAcj4K,KAAKxF,OAAOk9K,OAAOzpJ,GAE9C,CACA4sJ,SAAAA,CAAU5sJ,GACN,GAAIpvB,KAAKi8K,eAAiBj8K,KAAKi8K,cAAc39K,OAAQ,CACjD,MAAMi0D,EAAYvyD,KAAKi8K,cAAcp8K,QACrC,IAAK,MAAMoB,KAAYsxD,EACnBtxD,EAASxC,MAAMuB,KAAMovB,EAE7B,CACA+0D,MAAM65C,KAAKv/H,MAAMuB,KAAMovB,GACnBpvB,KAAKw7K,MAAQpsJ,EAAK9wB,QAA2C,kBAA1B8wB,EAAKA,EAAK9wB,OAAS,KACtD0B,KAAK07K,YAActsJ,EAAKA,EAAK9wB,OAAS,GAE9C,CAMA+7K,GAAAA,CAAIzrI,GACA,MAAMvhC,EAAOrN,KACb,IAAIwkJ,GAAO,EACX,OAAO,WAEH,IAAIA,EAAJ,CAEAA,GAAO,EAAK,QAAA03B,EAAA79K,UAAAC,OAJI8wB,EAAI,IAAA1G,MAAAwzJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ/sJ,EAAI+sJ,GAAA99K,UAAA89K,GAKpB9uK,EAAK4+J,OAAO,CACRp1I,KAAMqgJ,GAAWI,IACjB1oI,GAAIA,EACJjkC,KAAMykB,GALA,CAOd,CACJ,CAOA0sJ,KAAAA,CAAM7P,GACF,MAAMoO,EAAMr6K,KAAKy5K,KAAKxN,EAAOr9H,IACV,oBAARyrI,WAGJr6K,KAAKy5K,KAAKxN,EAAOr9H,IAEpByrI,EAAIQ,WACJ5O,EAAOthK,KAAKwuD,QAAQ,MAGxBkhH,EAAI57K,MAAMuB,KAAMisK,EAAOthK,MAC3B,CAMAixK,SAAAA,CAAUhtI,EAAI6sI,GACVz7K,KAAK4uC,GAAKA,EACV5uC,KAAKm5K,UAAYsC,GAAOz7K,KAAKw7K,OAASC,EACtCz7K,KAAKw7K,KAAOC,EACZz7K,KAAKk5K,WAAY,EACjBl5K,KAAKo8K,eACLp8K,KAAKitK,aAAa,WAClBjtK,KAAKq7K,aAAY,EACrB,CAMAe,YAAAA,GACIp8K,KAAKo5K,cAAct4K,SAASsuB,GAASpvB,KAAKg8K,UAAU5sJ,KACpDpvB,KAAKo5K,cAAgB,GACrBp5K,KAAKq5K,WAAWv4K,SAASmrK,IACrBjsK,KAAKy6K,wBAAwBxO,GAC7BjsK,KAAKisK,OAAOA,EAAO,IAEvBjsK,KAAKq5K,WAAa,EACtB,CAMA0C,YAAAA,GACI/7K,KAAKstB,UACLttB,KAAKywK,QAAQ,uBACjB,CAQAnjJ,OAAAA,GACQttB,KAAK85K,OAEL95K,KAAK85K,KAAKh5K,SAASu7K,GAAeA,MAClCr8K,KAAK85K,UAAO96K,GAEhBgB,KAAKi5K,GAAa,SAAEj5K,KACxB,CAiBA+xG,UAAAA,GAUI,OATI/xG,KAAKk5K,WACLl5K,KAAKisK,OAAO,CAAEp1I,KAAMqgJ,GAAWsB,aAGnCx4K,KAAKstB,UACDttB,KAAKk5K,WAELl5K,KAAKywK,QAAQ,wBAEVzwK,IACX,CAMAihI,KAAAA,GACI,OAAOjhI,KAAK+xG,YAChB,CAUAmkE,QAAAA,CAASA,GAEL,OADAl2K,KAAKsjD,MAAM4yH,SAAWA,EACfl2K,IACX,CAUA,YAAIm6K,GAEA,OADAn6K,KAAKsjD,MAAM62H,UAAW,EACfn6K,IACX,CAcAyrH,OAAAA,CAAQA,GAEJ,OADAzrH,KAAKsjD,MAAMmoE,QAAUA,EACdzrH,IACX,CAYAs8K,KAAAA,CAAMr7K,GAGF,OAFAjB,KAAKi8K,cAAgBj8K,KAAKi8K,eAAiB,GAC3Cj8K,KAAKi8K,cAAc96K,KAAKF,GACjBjB,IACX,CAYAu8K,UAAAA,CAAWt7K,GAGP,OAFAjB,KAAKi8K,cAAgBj8K,KAAKi8K,eAAiB,GAC3Cj8K,KAAKi8K,cAAc9iH,QAAQl4D,GACpBjB,IACX,CAmBAw8K,MAAAA,CAAOv7K,GACH,IAAKjB,KAAKi8K,cACN,OAAOj8K,KAEX,GAAIiB,EAAU,CACV,MAAMsxD,EAAYvyD,KAAKi8K,cACvB,IAAK,IAAIl5K,EAAI,EAAGA,EAAIwvD,EAAUj0D,OAAQyE,IAClC,GAAI9B,IAAasxD,EAAUxvD,GAEvB,OADAwvD,EAAUhxD,OAAOwB,EAAG,GACb/C,IAGnB,MAEIA,KAAKi8K,cAAgB,GAEzB,OAAOj8K,IACX,CAKAy8K,YAAAA,GACI,OAAOz8K,KAAKi8K,eAAiB,EACjC,CAcAS,aAAAA,CAAcz7K,GAGV,OAFAjB,KAAK28K,sBAAwB38K,KAAK28K,uBAAyB,GAC3D38K,KAAK28K,sBAAsBx7K,KAAKF,GACzBjB,IACX,CAcA48K,kBAAAA,CAAmB37K,GAGf,OAFAjB,KAAK28K,sBAAwB38K,KAAK28K,uBAAyB,GAC3D38K,KAAK28K,sBAAsBxjH,QAAQl4D,GAC5BjB,IACX,CAmBA68K,cAAAA,CAAe57K,GACX,IAAKjB,KAAK28K,sBACN,OAAO38K,KAEX,GAAIiB,EAAU,CACV,MAAMsxD,EAAYvyD,KAAK28K,sBACvB,IAAK,IAAI55K,EAAI,EAAGA,EAAIwvD,EAAUj0D,OAAQyE,IAClC,GAAI9B,IAAasxD,EAAUxvD,GAEvB,OADAwvD,EAAUhxD,OAAOwB,EAAG,GACb/C,IAGnB,MAEIA,KAAK28K,sBAAwB,GAEjC,OAAO38K,IACX,CAKA88K,oBAAAA,GACI,OAAO98K,KAAK28K,uBAAyB,EACzC,CAQAlC,uBAAAA,CAAwBxO,GACpB,GAAIjsK,KAAK28K,uBAAyB38K,KAAK28K,sBAAsBr+K,OAAQ,CACjE,MAAMi0D,EAAYvyD,KAAK28K,sBAAsB98K,QAC7C,IAAK,MAAMoB,KAAYsxD,EACnBtxD,EAASxC,MAAMuB,KAAMisK,EAAOthK,KAEpC,CACJ,ECr2BG,SAASoyK,GAAQ19K,GACpBA,EAAOA,GAAQ,CAAC,EAChBW,KAAKg9K,GAAK39K,EAAK0R,KAAO,IACtB/Q,KAAK6Q,IAAMxR,EAAKwR,KAAO,IACvB7Q,KAAK0d,OAASre,EAAKqe,QAAU,EAC7B1d,KAAKi9K,OAAS59K,EAAK49K,OAAS,GAAK59K,EAAK49K,QAAU,EAAI59K,EAAK49K,OAAS,EAClEj9K,KAAKk9K,SAAW,CACpB,CAOAH,GAAQ78K,UAAUu6E,SAAW,WACzB,IAAIuiG,EAAKh9K,KAAKg9K,GAAK7vK,KAAK0Q,IAAI7d,KAAK0d,OAAQ1d,KAAKk9K,YAC9C,GAAIl9K,KAAKi9K,OAAQ,CACb,IAAIE,EAAOhwK,KAAKH,SACZowK,EAAYjwK,KAAKwJ,MAAMwmK,EAAOn9K,KAAKi9K,OAASD,GAChDA,EAAoC,IAAN,EAAxB7vK,KAAKwJ,MAAa,GAAPwmK,IAAuBH,EAAKI,EAAYJ,EAAKI,CAClE,CACA,OAAgC,EAAzBjwK,KAAK4D,IAAIisK,EAAIh9K,KAAK6Q,IAC7B,EAMAksK,GAAQ78K,UAAUyI,MAAQ,WACtB3I,KAAKk9K,SAAW,CACpB,EAMAH,GAAQ78K,UAAUm9K,OAAS,SAAUtsK,GACjC/Q,KAAKg9K,GAAKjsK,CACd,EAMAgsK,GAAQ78K,UAAUo9K,OAAS,SAAUzsK,GACjC7Q,KAAK6Q,IAAMA,CACf,EAMAksK,GAAQ78K,UAAUq9K,UAAY,SAAUN,GACpCj9K,KAAKi9K,OAASA,CAClB,EC3DO,MAAMO,WAAgB3Q,GACzB9+I,WAAAA,CAAYghJ,EAAK1vK,GACb,IAAIiqF,EACJnF,QACAnkF,KAAKy9K,KAAO,CAAC,EACbz9K,KAAK85K,KAAO,GACR/K,GAAO,kBAAoBA,IAC3B1vK,EAAO0vK,EACPA,OAAM/vK,IAEVK,EAAOA,GAAQ,CAAC,GACXiuH,KAAOjuH,EAAKiuH,MAAQ,aACzBttH,KAAKX,KAAOA,EACZkuK,GAAsBvtK,KAAMX,GAC5BW,KAAK09K,cAAmC,IAAtBr+K,EAAKq+K,cACvB19K,KAAK29K,qBAAqBt+K,EAAKs+K,sBAAwBvsG,KACvDpxE,KAAK49K,kBAAkBv+K,EAAKu+K,mBAAqB,KACjD59K,KAAK69K,qBAAqBx+K,EAAKw+K,sBAAwB,KACvD79K,KAAK89K,oBAAwD,QAAnCx0F,EAAKjqF,EAAKy+K,2BAAwC,IAAPx0F,EAAgBA,EAAK,IAC1FtpF,KAAK+9K,QAAU,IAAIhB,GAAQ,CACvBhsK,IAAK/Q,KAAK49K,oBACV/sK,IAAK7Q,KAAK69K,uBACVZ,OAAQj9K,KAAK89K,wBAEjB99K,KAAKyrH,QAAQ,MAAQpsH,EAAKosH,QAAU,IAAQpsH,EAAKosH,SACjDzrH,KAAKg6K,YAAc,SACnBh6K,KAAK+uK,IAAMA,EACX,MAAMiP,EAAU3+K,EAAKsvI,QAAUA,EAC/B3uI,KAAKyO,QAAU,IAAIuvK,EAAQ7G,QAC3Bn3K,KAAKi+K,QAAU,IAAID,EAAQnG,QAC3B73K,KAAK25K,cAAoC,IAArBt6K,EAAK6+K,YACrBl+K,KAAK25K,cACL35K,KAAK03I,MACb,CACAgmC,YAAAA,CAAavsI,GACT,OAAK9yC,UAAUC,QAEf0B,KAAKm+K,gBAAkBhtI,EAChBnxC,MAFIA,KAAKm+K,aAGpB,CACAR,oBAAAA,CAAqBxsI,GACjB,YAAUnyC,IAANmyC,EACOnxC,KAAKo+K,uBAChBp+K,KAAKo+K,sBAAwBjtI,EACtBnxC,KACX,CACA49K,iBAAAA,CAAkBzsI,GACd,IAAIm4C,EACJ,YAAUtqF,IAANmyC,EACOnxC,KAAKq+K,oBAChBr+K,KAAKq+K,mBAAqBltI,EACF,QAAvBm4C,EAAKtpF,KAAK+9K,eAA4B,IAAPz0F,GAAyBA,EAAG+zF,OAAOlsI,GAC5DnxC,KACX,CACA89K,mBAAAA,CAAoB3sI,GAChB,IAAIm4C,EACJ,YAAUtqF,IAANmyC,EACOnxC,KAAKs+K,sBAChBt+K,KAAKs+K,qBAAuBntI,EACJ,QAAvBm4C,EAAKtpF,KAAK+9K,eAA4B,IAAPz0F,GAAyBA,EAAGi0F,UAAUpsI,GAC/DnxC,KACX,CACA69K,oBAAAA,CAAqB1sI,GACjB,IAAIm4C,EACJ,YAAUtqF,IAANmyC,EACOnxC,KAAKu+K,uBAChBv+K,KAAKu+K,sBAAwBptI,EACL,QAAvBm4C,EAAKtpF,KAAK+9K,eAA4B,IAAPz0F,GAAyBA,EAAGg0F,OAAOnsI,GAC5DnxC,KACX,CACAyrH,OAAAA,CAAQt6E,GACJ,OAAK9yC,UAAUC,QAEf0B,KAAKw+K,SAAWrtI,EACTnxC,MAFIA,KAAKw+K,QAGpB,CAOAC,oBAAAA,IAESz+K,KAAK0+K,eACN1+K,KAAKm+K,eACqB,IAA1Bn+K,KAAK+9K,QAAQb,UAEbl9K,KAAK2+K,WAEb,CAQAjnC,IAAAA,CAAKtsH,GACD,IAAKprB,KAAKg6K,YAAY14K,QAAQ,QAC1B,OAAOtB,KACXA,KAAKw6K,OAAS,IAAIoE,GAAO5+K,KAAK+uK,IAAK/uK,KAAKX,MACxC,MAAMwuK,EAAS7tK,KAAKw6K,OACdntK,EAAOrN,KACbA,KAAKg6K,YAAc,UACnBh6K,KAAK6+K,eAAgB,EAErB,MAAMC,EAAiB3xJ,GAAG0gJ,EAAQ,QAAQ,WACtCxgK,EAAKgjK,SACLjlJ,GAAMA,GACV,IACMw3B,EAAWn1C,IACbzN,KAAKwvK,UACLxvK,KAAKg6K,YAAc,SACnBh6K,KAAKitK,aAAa,QAASx/J,GACvB2d,EACAA,EAAG3d,GAIHzN,KAAKy+K,sBACT,EAGEM,EAAW5xJ,GAAG0gJ,EAAQ,QAASjrH,GACrC,IAAI,IAAU5iD,KAAKw+K,SAAU,CACzB,MAAM/yD,EAAUzrH,KAAKw+K,SAEfvhG,EAAQj9E,KAAKytK,cAAa,KAC5BqR,IACAl8H,EAAQ,IAAI70C,MAAM,YAClB8/J,EAAO5sC,OAAO,GACfxV,GACCzrH,KAAKX,KAAKixK,WACVrzF,EAAMuzF,QAEVxwK,KAAK85K,KAAK34K,MAAK,KACXnB,KAAK0tK,eAAezwF,EAAM,GAElC,CAGA,OAFAj9E,KAAK85K,KAAK34K,KAAK29K,GACf9+K,KAAK85K,KAAK34K,KAAK49K,GACR/+K,IACX,CAOA03J,OAAAA,CAAQtsI,GACJ,OAAOprB,KAAK03I,KAAKtsH,EACrB,CAMAilJ,MAAAA,GAEIrwK,KAAKwvK,UAELxvK,KAAKg6K,YAAc,OACnBh6K,KAAKitK,aAAa,QAElB,MAAMY,EAAS7tK,KAAKw6K,OACpBx6K,KAAK85K,KAAK34K,KAAKgsB,GAAG0gJ,EAAQ,OAAQ7tK,KAAKg/K,OAAOthL,KAAKsC,OAAQmtB,GAAG0gJ,EAAQ,OAAQ7tK,KAAKi/K,OAAOvhL,KAAKsC,OAAQmtB,GAAG0gJ,EAAQ,QAAS7tK,KAAKs2B,QAAQ54B,KAAKsC,OAAQmtB,GAAG0gJ,EAAQ,QAAS7tK,KAAKywK,QAAQ/yK,KAAKsC,OAAQmtB,GAAGntB,KAAKi+K,QAAS,UAAWj+K,KAAKk/K,UAAUxhL,KAAKsC,OACvP,CAMAg/K,MAAAA,GACIh/K,KAAKitK,aAAa,OACtB,CAMAgS,MAAAA,CAAOt0K,GACH,IACI3K,KAAKi+K,QAAQj9K,IAAI2J,EACrB,CACA,MAAOpL,IACHS,KAAKywK,QAAQ,cAAelxK,GAChC,CACJ,CAMA2/K,SAAAA,CAAUjT,GAEN0D,IAAS,KACL3vK,KAAKitK,aAAa,SAAUhB,EAAO,GACpCjsK,KAAKytK,aACZ,CAMAn3I,OAAAA,CAAQ7oB,GACJzN,KAAKitK,aAAa,QAASx/J,EAC/B,CAOAogK,MAAAA,CAAO8J,EAAKt4K,GACR,IAAIwuK,EAAS7tK,KAAKy9K,KAAK9F,GAQvB,OAPK9J,EAII7tK,KAAK25K,eAAiB9L,EAAOtrC,QAClCsrC,EAAOnW,WAJPmW,EAAS,IAAIgG,GAAO7zK,KAAM23K,EAAKt4K,GAC/BW,KAAKy9K,KAAK9F,GAAO9J,GAKdA,CACX,CAOAsR,QAAAA,CAAStR,GACL,MAAM4P,EAAO9hL,OAAOqtB,KAAKhpB,KAAKy9K,MAC9B,IAAK,MAAM9F,KAAO8F,EAAM,CAEpB,GADez9K,KAAKy9K,KAAK9F,GACdp1C,OACP,MAER,CACAviI,KAAKo/K,QACT,CAOA9D,OAAAA,CAAQrP,GACJ,MAAM4G,EAAiB7yK,KAAKyO,QAAQwnC,OAAOg2H,GAC3C,IAAK,IAAIlpK,EAAI,EAAGA,EAAI8vK,EAAev0K,OAAQyE,IACvC/C,KAAKw6K,OAAOruI,MAAM0mI,EAAe9vK,GAAIkpK,EAAO5rK,QAEpD,CAMAmvK,OAAAA,GACIxvK,KAAK85K,KAAKh5K,SAASu7K,GAAeA,MAClCr8K,KAAK85K,KAAKx7K,OAAS,EACnB0B,KAAKi+K,QAAQ3wJ,SACjB,CAMA8xJ,MAAAA,GACIp/K,KAAK6+K,eAAgB,EACrB7+K,KAAK0+K,eAAgB,EACrB1+K,KAAKywK,QAAQ,gBACTzwK,KAAKw6K,QACLx6K,KAAKw6K,OAAOv5C,OACpB,CAMAlvB,UAAAA,GACI,OAAO/xG,KAAKo/K,QAChB,CAMA3O,OAAAA,CAAQ53B,EAAQxO,GACZrqI,KAAKwvK,UACLxvK,KAAK+9K,QAAQp1K,QACb3I,KAAKg6K,YAAc,SACnBh6K,KAAKitK,aAAa,QAASp0B,EAAQxO,GAC/BrqI,KAAKm+K,gBAAkBn+K,KAAK6+K,eAC5B7+K,KAAK2+K,WAEb,CAMAA,SAAAA,GACI,GAAI3+K,KAAK0+K,eAAiB1+K,KAAK6+K,cAC3B,OAAO7+K,KACX,MAAMqN,EAAOrN,KACb,GAAIA,KAAK+9K,QAAQb,UAAYl9K,KAAKo+K,sBAC9Bp+K,KAAK+9K,QAAQp1K,QACb3I,KAAKitK,aAAa,oBAClBjtK,KAAK0+K,eAAgB,MAEpB,CACD,MAAM/jG,EAAQ36E,KAAK+9K,QAAQtjG,WAC3Bz6E,KAAK0+K,eAAgB,EACrB,MAAMzhG,EAAQj9E,KAAKytK,cAAa,KACxBpgK,EAAKwxK,gBAET7+K,KAAKitK,aAAa,oBAAqB5/J,EAAK0wK,QAAQb,UAEhD7vK,EAAKwxK,eAETxxK,EAAKqqI,MAAMjqI,IACHA,GACAJ,EAAKqxK,eAAgB,EACrBrxK,EAAKsxK,YACL3+K,KAAKitK,aAAa,kBAAmBx/J,IAGrCJ,EAAKgyK,aACT,IACF,GACH1kG,GACC36E,KAAKX,KAAKixK,WACVrzF,EAAMuzF,QAEVxwK,KAAK85K,KAAK34K,MAAK,KACXnB,KAAK0tK,eAAezwF,EAAM,GAElC,CACJ,CAMAoiG,WAAAA,GACI,MAAMC,EAAUt/K,KAAK+9K,QAAQb,SAC7Bl9K,KAAK0+K,eAAgB,EACrB1+K,KAAK+9K,QAAQp1K,QACb3I,KAAKitK,aAAa,YAAaqS,EACnC,EC9VJ,MAAM/qG,GAAQ,CAAC,EACf,SAAS02F,GAAO8D,EAAK1vK,GACE,kBAAR0vK,IACP1vK,EAAO0vK,EACPA,OAAM/vK,GAGV,MAAM27F,ECHH,SAAao0E,GAAqB,IAAhBzhD,EAAIjvH,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG,GAAIkhL,EAAGlhL,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EAC/BgP,EAAM+gK,EAEVwQ,EAAMA,GAA4B,qBAAbl3I,UAA4BA,SAC7C,MAAQ0mI,IACRA,EAAMwQ,EAAIjlD,SAAW,KAAOilD,EAAIxrC,MAEjB,kBAARg7B,IACH,MAAQA,EAAIj9J,OAAO,KAEfi9J,EADA,MAAQA,EAAIj9J,OAAO,GACbytK,EAAIjlD,SAAWy0C,EAGfwQ,EAAIxrC,KAAOg7B,GAGpB,sBAAsB95I,KAAK85I,KAExBA,EADA,qBAAuBwQ,EACjBA,EAAIjlD,SAAW,KAAOy0C,EAGtB,WAAaA,GAI3B/gK,EAAM5B,GAAM2iK,IAGX/gK,EAAIimI,OACD,cAAch/G,KAAKjnB,EAAIssH,UACvBtsH,EAAIimI,KAAO,KAEN,eAAeh/G,KAAKjnB,EAAIssH,YAC7BtsH,EAAIimI,KAAO,QAGnBjmI,EAAIs/G,KAAOt/G,EAAIs/G,MAAQ,IACvB,MACMymB,GADkC,IAA3B/lI,EAAI+lI,KAAKzyI,QAAQ,KACV,IAAM0M,EAAI+lI,KAAO,IAAM/lI,EAAI+lI,KAS/C,OAPA/lI,EAAI4gC,GAAK5gC,EAAIssH,SAAW,MAAQyZ,EAAO,IAAM/lI,EAAIimI,KAAO3mB,EAExDt/G,EAAIsmD,KACAtmD,EAAIssH,SACA,MACAyZ,GACCwrC,GAAOA,EAAItrC,OAASjmI,EAAIimI,KAAO,GAAK,IAAMjmI,EAAIimI,MAChDjmI,CACX,CD7CmBkkD,CAAI68G,GADnB1vK,EAAOA,GAAQ,CAAC,GACaiuH,MAAQ,cAC/BzkG,EAAS8xE,EAAO9xE,OAChB+lB,EAAK+rD,EAAO/rD,GACZ0+E,EAAO3yB,EAAO2yB,KACdkyD,EAAgBjrG,GAAM3lC,IAAO0+E,KAAQ/4C,GAAM3lC,GAAU,KAK3D,IAAIqqI,EAaJ,OAjBsB55K,EAAKogL,UACvBpgL,EAAK,0BACL,IAAUA,EAAKqgL,WACfF,EAGAvG,EAAK,IAAIuE,GAAQ30J,EAAQxpB,IAGpBk1E,GAAM3lC,KACP2lC,GAAM3lC,GAAM,IAAI4uI,GAAQ30J,EAAQxpB,IAEpC45K,EAAK1kG,GAAM3lC,IAEX+rD,EAAOnuE,QAAUntB,EAAKmtB,QACtBntB,EAAKmtB,MAAQmuE,EAAO84E,UAEjBwF,EAAGpL,OAAOlzE,EAAO2yB,KAAMjuH,EAClC,CAGA1D,OAAO49C,OAAO0xH,GAAQ,CAClBuS,QAAO,GACP3J,OAAM,GACNoF,GAAIhO,GACJvT,QAASuT,oBExCN,IAAMj3E,GAGgC2rF,ECSvCC,GAAav3J,OAAOC,IAAA,uBACpBu3J,GAMkB,qBAAfvyK,WACHA,WAAA,CAC6F,EAGnG,SAASyqF,KAAqD,IAAA+nF,EAC5D,IAAK9rF,GAAM6O,cAAe,MAAO,CAAC,EAElC,MAAMk9E,EAAc,QAAdD,EAAcD,GAAAD,WAAA,IAAAE,EAAAA,EAAAD,GAAAD,IAAmB,IAAIxtJ,IAI3C,IAAI4tJ,EAAcD,EAAWzgL,IAAI00F,GAAM6O,eAUvC,OATKm9E,IACHA,EAAchsF,GAAM6O,cAClB,MAKFk9E,EAAWpjJ,IAAIq3D,GAAM6O,cAAem9E,IAE/BA,CACT,CAEO,IAAMC,GAAkCloF,KC5ClCmoF,GAAiBA,KAC5B,MAAM,IAAInyK,MAAM,wBAAwB,ECOnC,SAASoyK,KAAoD,IAA7B/vI,EAAA/xC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAU4hL,GAC/C,OAAO,WASL,OARqBjsF,GAAMxtB,WAAWp2B,EASxC,CACF,CAkBO,IAAMgwI,GAAgCD,KC+EzC/1D,GAAmC81D,GAKjCG,GAA+BA,CAACp6K,EAAGC,IAAMD,IAAMC,EAQ9C,SAASo6K,KAKD,IAJblwI,EAAA/xC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAGY4hL,GAEZ,MAAMM,EACJnwI,IAAY6vI,GACRG,GACAD,GAAuB/vI,GAEvBowI,EAAc,SAClBx0B,GAIa,IAHby0B,EAAApiL,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAE4C,CAAC,EAE7C,MAAM,WAAEqiL,EAAaL,GAAA,cAAaM,EAAgB,CAAC,GAClB,oBAAxBF,EACH,CAAEC,WAAYD,GACdA,EAeN,MAAM,MACJG,EAAA,aACAC,EAAA,eACAC,EAAA,eACAC,EAAA,sBACAC,GACET,IAIEU,GAFWjtF,GAAMjtB,QAAO,GAENitB,GAAMztB,YAC5B,CACE,CAACylF,EAASzuJ,MAAM8hB,GACG2sI,EAAS3sI,IA+D5B2sI,EAASzuJ,MACX,CAACyuJ,EAAU+0B,EAAgBJ,EAAcI,kBAGrCG,EAAgB92D,GACpBy2D,EAAaM,aACbP,EAAMQ,SACNN,GAAkBF,EAAMQ,SACxBH,EACAP,GAKF,OAFA1sF,GAAM/sB,cAAci6G,GAEbA,CACT,EAMA,OAJAvlL,OAAO49C,OAAOinI,EAAa,CACzBa,UAAWA,IAAMb,IAGZA,CACT,CAyBO,IAAMc,GAA4BhB,KC5Rdj4J,OAAOC,IAAI,iBACZD,OAAOC,IAAI,gBACTD,OAAOC,IAAI,kBACRD,OAAOC,IAAI,qBACdD,OAAOC,IAAI,kBACXD,OAAOC,IAAI,kBACZD,OAAOC,IAAI,iBACJD,OAAOC,IAAI,wBACdD,OAAOC,IAAI,qBACdD,OAAOC,IAAI,kBACND,OAAOC,IAAI,uBACpBD,OAAOC,IAAI,cACXD,OAAOC,IAAI,cACND,OAAOC,IAAI,mBACTD,OAAOC,IAAI,0BCpBnC,SAASi5J,GAAiBrgH,GAC/BA,GACF,CCwFA,IAAMsgH,GAAgB,CACpBC,MAAAA,GAAU,EACVniL,IAAKA,IAAM,IAGN,SAASoiL,GAAmBd,EAAYe,GAC7C,IAAIvqC,EACA7kF,EAAgCivH,GAGhCI,EAAsB,EAGtBC,GAAiB,EAsBrB,SAASC,IACHjB,EAAakB,eACflB,EAAakB,eAEjB,CAMA,SAASC,IACPJ,IACKxqC,IACHA,EAAcuqC,EACVA,EAAUR,aAAaW,GACvBlB,EAAMtoC,UAAUwpC,GAEpBvvH,EAjIN,WACE,IAAIn+B,EAAyB,KACzBC,EAAwB,KAE5B,MAAO,CACL9G,KAAAA,GACE6G,EAAQ,KACRC,EAAO,IACT,EAEAotJ,MAAAA,GACEF,IAAM,KACJ,IAAItgL,EAAWmzB,EACf,KAAOnzB,GACLA,EAASigE,WACTjgE,EAAWA,EAASmpB,IACtB,GAEJ,EAEA9qB,GAAAA,GACE,MAAMizD,EAAwB,GAC9B,IAAItxD,EAAWmzB,EACf,KAAOnzB,GACLsxD,EAAUpxD,KAAKF,GACfA,EAAWA,EAASmpB,KAEtB,OAAOmoC,CACT,EAEA+lF,SAAAA,CAAUp3E,GACR,IAAI9/D,GAAe,EAEnB,MAAMH,EAAsBozB,EAAO,CACjC6sC,WACA92C,KAAM,KACND,KAAMkK,GASR,OANIpzB,EAASkpB,KACXlpB,EAASkpB,KAAKC,KAAOnpB,EAErBmzB,EAAQnzB,EAGH,WACAG,GAA0B,OAAVgzB,IACrBhzB,GAAe,EAEXH,EAASmpB,KACXnpB,EAASmpB,KAAKD,KAAOlpB,EAASkpB,KAE9BkK,EAAOpzB,EAASkpB,KAEdlpB,EAASkpB,KACXlpB,EAASkpB,KAAKC,KAAOnpB,EAASmpB,KAE9BgK,EAAQnzB,EAASmpB,KAErB,CACF,EAEJ,CAmEkB63J,GAEhB,CAEA,SAASC,IACPN,IACIxqC,GAAuC,IAAxBwqC,IACjBxqC,IACAA,OAAc,EACd7kF,EAAUhlC,QACVglC,EAAYivH,GAEhB,CAgBA,MAAMX,EAA6B,CACjCM,aAlEF,SAAsBlgL,GACpB+gL,IAEA,MAAMG,EAAkB5vH,EAAU+lF,UAAUr3I,GAG5C,IAAImhL,GAAU,EACd,MAAO,KACAA,IACHA,GAAU,EACVD,IACAD,IACF,CAEJ,EAqDEG,iBAnDF,WACE9vH,EAAUkvH,QACZ,EAkDEK,sBACA1gL,aA3CF,WACE,OAAOygL,CACT,EA0CEG,aAnBF,WACOH,IACHA,GAAiB,EACjBG,IAEJ,EAeEE,eAbF,WACML,IACFA,GAAiB,EACjBK,IAEJ,EASEI,aAAcA,IAAM/vH,GAGtB,OAAOsuH,CACT,CC1KO,IAAM1pE,KACO,qBAAXx4G,QACoB,qBAApBA,OAAOC,UAC2B,qBAAlCD,OAAOC,SAASC,eAUZixK,GACU,qBAAdx8E,WAAmD,gBAAtBA,UAAU22B,QAEnCs4D,GACXprE,IAAa24D,GAAgB97E,GAAMptB,gBAAkBotB,GAAMvtB,UCsDtC9qE,OAAOwD,eACFxD,OAAO65B,oBACL75B,OAAOstB,sBACJttB,OAAO60B,yBACjB70B,OAAOo1B,eACNp1B,OAAOuE,UCS/B,IAAOsiL,GAzCP,SAAS9pD,GAOe,IAPiD,MACvEkoD,EAAA,QACAxwI,EAAA,SACAiM,EAAA,YACAomI,EAAA,eACA1B,EAAiB,6BACjBC,EAAwB,QAC1BtoD,EACE,MAAMgqD,EAAe1uF,GAAMntB,SAAQ,KACjC,MAAMg6G,EAAea,GAAmBd,GACxC,MAAO,CACLA,QACAC,eACAC,eAAgB2B,EAAc,IAAMA,OAAc,EAClD1B,iBACAC,wBACD,GACA,CAACJ,EAAO6B,EAAa1B,EAAgBC,IAElC2B,EAAgB3uF,GAAMntB,SAAQ,IAAM+5G,EAAMQ,YAAY,CAACR,IAE7D2B,IAA0B,KACxB,MAAM,aAAE1B,GAAiB6B,EAOzB,OANA7B,EAAakB,cAAgBlB,EAAawB,iBAC1CxB,EAAamB,eAETW,IAAkB/B,EAAMQ,YAC1BP,EAAawB,mBAER,KACLxB,EAAaqB,iBACbrB,EAAakB,mBAAgB,EAC9B,GACA,CAACW,EAAcC,IAElB,MAAM//E,EAAUxyD,GAAW6vI,GAG3B,OAAOjsF,GAAAn1F,cAAC+jG,EAAQ+b,SAAR,CAAiBngH,MAAOkkL,GAAermI,EACjD,ECfO,SAASumI,KASd,IAJAxyI,EAAA/xC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAGY4hL,GAEZ,MAAMM,EACJnwI,IAAY6vI,GACRG,GAEAD,GAAuB/vI,GACvByyI,EAAWC,KACf,MAAM,MAAElC,GAAUL,IAClB,OAAOK,CAAA,EAOT,OAJAjlL,OAAO49C,OAAOspI,EAAU,CACtBxB,UAAWA,IAAMwB,IAGZA,CACT,CAiBO,IAAMC,GAAyBF,KCjE/B,SAASG,KASd,IAJA3yI,EAAA/xC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAGY4hL,GAEZ,MAAM4C,EACJzyI,IAAY6vI,GAAoB6C,GAAkBF,GAAgBxyI,GAE9D4yI,EAAcC,IACJJ,IACD5+G,SAOf,OAJAtoE,OAAO49C,OAAOypI,EAAa,CACzB3B,UAAWA,IAAM2B,IAGZA,CACT,CAuBO,IRkB+B53J,GQlBzB63J,GAA4BF,KRkBH33J,GS9GhB83J,GAAAA,iCT+GpB94D,GAAmCh/F,GU7EHA,KACTA,CAAA,EDlCzB+3J,CAAwBC,EAAAA,sBEZxB,MAAMC,GAAuB,uBCIvBC,GAAsB34K,IAAI,CAC5BksB,KAAMwsJ,GACNpiH,QAASt2D,ICLb,GAA+B,oCAA/B,GAAmF,qCAAnF,GAAsI,mCAAtI,GAA6L,yCAA7L,GAAmP,kCAAnP,GAAqS,qCAArS,GAA2V,sCAA3V,GAAgZ,oCC2ChZ,GAvCqB44K,KACjB,MAAOC,EAAYC,IAAiBz8G,EAAAA,EAAAA,WAAS,IAE7CP,EAAAA,EAAAA,YAAU,KACgBw3D,aAAaC,QAAQ,YAEvCulD,GAAc,EAClB,GACD,IAWH,OAAKD,GAGD7hD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAoB5lE,SAAA,EAChCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAqB5lE,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,KAAMtf,IAAoB5lE,SAAC,+BAC9CslF,EAAAA,GAAAA,MAAA,KAAGxjD,UAAW8jC,GAAyB5lE,SAAA,CAAC,wHAE3BijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAG,iBAAiBlF,UAAW8jC,GAAkB5lE,SAAC,qBAAuB,gCAIhGslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAqB5lE,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAuBr0C,QAjBlC81G,KAChBD,GAAc,EAAM,EAgBmDpnI,SAAC,WAChEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAqBr0C,QAvB9B+1G,KAClB1lD,aAAaE,QAAQ,WAAW,GAChCslD,GAAc,EAAM,EAqBmDpnI,SAAC,6BAdpD,IAgBd,ECoDd,GA5EaunI,KACX,MAAM3b,GAAclhG,EAAAA,EAAAA,QAAO,OACpBkgG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,GACjC/C,EAAWg/G,MACX,iBAAE/b,GAAqBoa,IAAajiK,GAAUA,EAAM+nJ,WACnDt1G,EAAOo2G,IAAYlhG,EAAAA,EAAAA,UAAS,KAEnCP,EAAAA,EAAAA,YAAU,KACR,MAAMonG,EAASoL,GAAGrwK,gCAAkC,CAClDs1K,aAAa,EACbnO,WAAY,CAAC,eAGflC,EAAOnW,UACP,MAAMosB,EAAa,cACnBjW,EAAO1gJ,GAAG,WAAW,KACnB0gJ,EAAO7vC,KAAK,UAAW8lD,EAAW,IAGpCjW,EAAO1gJ,GAPY,uBAOMi6I,IACvBnjG,EAASq/G,GAAmBlc,IAC5Byc,GAAW,GACXhW,EAAO97D,YAAY,IAGrB,MAAMgyE,EAAW7yE,aAAY,KAC3B28D,EAAOnW,UACPmW,EAAO7vC,KAAK,UAAW8lD,EAAW,GACjCr0K,SAAS7G,UAEZ,MAAO,KACLipG,cAAckyE,GACdlW,EAAO97D,YAAY,CACpB,GACA,IAaH,OACE4vB,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACGzzC,GAGD02H,EAAAA,GAAAA,KAAC0kD,GAAI,CACH/b,YAAaA,EACbhB,SAAyB,OAAhBC,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB5oK,SAAU,GAAK2oK,EAC1CC,iBAAkBA,EAClBp1G,MAAOA,EACPo2G,SAAUA,EACVC,kBAtBoBpxI,UACxB,IAAIpsB,EAAO,CACTmnD,MAAOA,GAET,UACQyyG,GAAe,aAAc,OAAQ55J,EAC7C,CACA,MAAOpL,IACP,CAAC,KAgBC+/H,EAAAA,GAAAA,KAAC2kD,GAAK,CACJ/c,iBAAkBA,EAClBD,SAAyB,OAAhBC,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB5oK,SAAU,GAAK2oK,KAE5C3nC,EAAAA,GAAAA,KAAC4kD,GAAK,CAACjc,YAAaA,KACpB3oC,EAAAA,GAAAA,KAAC6kD,GAAO,CAACra,aAAa,4BACtBxqC,EAAAA,GAAAA,KAAC8E,GAAQ,KACT9E,EAAAA,GAAAA,KAAC8kD,GAAI,CAACta,aAAa,gBACnBxqC,EAAAA,GAAAA,KAAC+kD,GAAK,KACN/kD,EAAAA,GAAAA,KAACglD,GAAa,MACb,ECrFP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,GAAK,kBCIzHN,GAAOxiG,IAIN,IAJO,SACZ+iG,EAAQ,QACRC,EAAO,eACPC,GACDjjG,EAEKkjG,EAAaH,GAAmB,OAAPC,QAAO,IAAPA,GAAAA,EAASG,iBAAoBvf,GAAiB9yI,WAAWiyJ,GAAYjyJ,WAAkB,OAAPkyJ,QAAO,IAAPA,OAAO,EAAPA,EAASG,mBAAqB,GAE3I,OACErlD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,wCAGvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO7qF,KAAKilB,SAAA,CAAC,oCACKijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAuB,OAAdooI,QAAc,IAAdA,GAAAA,EAAgBhtI,cAAcsC,SAAS,MAAK,SAAA9uC,OAAOy5K,GAAS,IAAAz5K,OAASm6J,GAAwB,OAAPof,QAAO,IAAPA,OAAO,EAAPA,EAASG,yBAE1IhjD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO7qF,KAAKilB,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,UAAAtlF,SAAA,EAAQijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAOzzC,SAA2C,OAAU,kCAGxE02H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,uCACP3oG,IAAI,iCACJmY,IAAI,gBAIN,EAIV,IAAeuwE,EAAAA,EAAAA,MAAK+kE,ICtCpB,GAA0B,yBAA1B,GAA+D,2BCA/D,GAAqjB,8BAArjB,GAAqmB,+BAArmB,GAAmpB,4BAAnpB,GAAyrB,uBAAzrB,GAAguB,6BAAhuB,GAAuwB,uBAAvwB,GAAszB,qCCAtzB,GAAwB,wBAAxB,GAA2D,2BAA3D,GAA+F,yBAA/F,GAA+H,uBAA/H,GAA8J,wBAA9J,GAA6L,uBAA7L,GAAgO,4BAAhO,GAAqQ,yBAArQ,GAA4S,8BC+D5S,GA1DiBxiG,IAYV,IAZW,UAChBrD,EAAS,WACTupF,EAAU,MACVlpK,EAAK,SACLo8C,EAAQ,QACRv6C,EAAO,MACPkkJ,EAAK,kBACLujB,EAAiB,mBACjB8c,EAAkB,kBAClBC,EAAiB,oBACjBC,EAAmB,SACnBC,GACDvjG,EACC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GASvC,OACE26D,EAAAA,GAAAA,MAACrgD,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,SAAA,CAC1DkoG,IAASjlB,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGmmC,EAAYzlD,IAAc5lE,SAAEkoG,KACzD5iB,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAiB9jC,EAAW,CACxC,CAAC8jC,IAAgBwf,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGumC,EAAmB7lD,IACjCr0C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAE79C,KACnC8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAc2iE,GAAoBvoI,UACnDijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAGjC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGsjD,EAAmB5iE,IAAa5lE,SACzC,OAAPh8C,QAAO,IAAPA,OAAO,EAAPA,EAASqR,KAAI,CAAC1O,EAAG3B,KAEhBi+H,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAGujD,EAAqB7iE,GAAe,CAChD,CAACA,IAAqBj/G,IAAMxE,IAE9BovE,QAASA,IA/BDo3G,EAACxmL,EAAO6C,KACtB0jL,GACFA,EAAS1jL,GAEXu5C,EAASp8C,GACTkjI,GAAW,EAAM,EA0BQsjD,CAAYhiL,EAAG3B,GAAOg7C,SAGpCr5C,GAFI3B,YAOO,ECN1B,GAjDcmgF,IAOP,IAPQ,iBACbyjG,EAAgB,oBAChBC,EAAmB,eACnBT,EAAc,QACdU,EAAO,WACPC,EAAU,sBACVC,GACD7jG,EAEC,OACEmgD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACgE,IAA7D5sC,SAAS7G,OACR02H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAA6B5lE,UAC3CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAC,8NAOpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAsB5lE,UACpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAuB5lE,UACrCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAoB5lE,SACvB,OAAV+oI,QAAU,IAAVA,OAAU,EAAVA,EAAY1zK,KAAI,CAAC23G,EAAUhoH,KAC1Bi+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAgB,CAC5B,CAACA,IAAuBoH,EAASA,WAAa47D,IAEhDr3G,QAASA,KAAQy3G,EAAsBh8D,EAASA,SAAS,EAAGhtE,SAG3DgtE,EAASA,UAFLhoH,aAiBd,EClDP,GAAijB,0BAAjjB,GAA2lB,6BCA3lB,GAA2B,uBAA3B,GAAiE,2BAAjE,GAAwG,wBAAxG,GAA+M,uBAA/M,GAAiP,uBAAjP,GAAmR,uBAAnR,GAAqT,uBAArT,GAAyV,yBAAzV,GAA8X,wBAA9X,GAAma,yBAAna,GAAuc,uBAAvc,GAAue,qBAAve,GAAygB,yBAAzgB,GAA0iB,oBAA1iB,GAAykB,uBAAzkB,GAAymB,qBCkHzmB,GA7GamgF,IAMN,IANO,MACV8jG,EAAK,MACL32I,EAAK,OACLzlB,EAAM,WACNq8J,EAAa,GAAE,UACfC,EAAY,IACfhkG,EACG,MAAOikG,EAAcC,IAAmB1+G,EAAAA,EAAAA,WAAS,GAE3C2+G,EAAwBnnL,IAC1BknL,EAAgBlnL,EAAM,EAGpBonL,EAAgBH,EAAeF,EAAaC,EAElD,OACI7jD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAoB5lE,SAAA,CAC/BnzB,EACGu8J,GACInmD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAC,iBAElCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAC,gBAEtCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAE1N,IAEtCzlB,IAAUo2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAa5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,QACInhD,UAAWojD,KAAGtf,GAAiB,CAC3B,CAACA,IAAgBwjE,IAErB73G,QAASA,IACL+3G,GAAqB,GACxBtpI,SAAC,YAGNijF,EAAAA,GAAAA,KAAA,QACInhD,UAAWojD,KAAGtf,GAAiB,CAC3B,CAACA,KAAiBwjE,IAEtB73G,QAASA,IAAM+3G,GAAqB,GACnCtpI,SAAC,oBAMlBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAExBnzB,GACiB,OAAb08J,QAAa,IAAbA,OAAa,EAAbA,EAAetnL,QAAS,EACP,OAAbsnL,QAAa,IAAbA,OAAa,EAAbA,EAAel0K,KAAI,CAACyuH,EAAM0lD,KAAS,IAAAC,EAAA,OAC/BnkD,EAAAA,GAAAA,MAAC9H,GAAI,CACD17C,UAAW8jC,GAEX5iG,MAAO8gH,EACP98C,GAAE,UAAAp4E,OAAgB,OAAJk1H,QAAI,IAAJA,GAAU,QAAN2lD,EAAJ3lD,EAAM5iI,YAAI,IAAAuoL,OAAN,EAAJA,EAAYruI,eAAgB4E,SAAA,EAE1CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB1rF,IAAS,OAAJ4pG,QAAI,IAAJA,OAAI,EAAJA,EAAM4B,KAAMn/E,QAASuiH,GAAkBz2H,IAAI,UACjF4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,SAAE8jF,EAAKh3G,aAE7Cm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAEwoH,GAAsB1kC,EAAKqnC,mBAAoBrnC,EAAKsnC,0BACvFnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,SAC7BuoH,GAAsBzkC,EAAKonC,YACxB5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB1kC,EAAKonC,UAAW,GAAG,QAE3E5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB1kC,EAAKonC,UAAW,GAAG,WAb9Ese,EAgBF,KAIPvmD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAc5lE,SAAC,uBAElC,OAALipI,QAAK,IAALA,OAAK,EAALA,EAAOhnL,QAAS,EACP,OAALgnL,QAAK,IAALA,OAAK,EAALA,EAAO5zK,KAAI,CAACyuH,EAAM0lD,KAAS,IAAAE,EAAA,OACvBpkD,EAAAA,GAAAA,MAAC9H,GAAI,CACD17C,UAAW8jC,GAEX5iG,MAAO8gH,EACP98C,GAAE,UAAAp4E,OAAgB,OAAJk1H,QAAI,IAAJA,GAAU,QAAN4lD,EAAJ5lD,EAAM5iI,YAAI,IAAAwoL,OAAN,EAAJA,EAAYtuI,eAAgB4E,SAAA,EAE1CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB1rF,IAAS,OAAJ4pG,QAAI,IAAJA,OAAI,EAAJA,EAAM4B,KAAMn/E,QAASuiH,GAAkBz2H,IAAI,UACjF4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,SAAE8jF,EAAKh3G,aAE7Cm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAEwoH,GAAsB1kC,EAAKqnC,mBAAoBrnC,EAAKsnC,0BACvFnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,SAC7BuoH,GAAsBzkC,EAAKonC,YACxB5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB1kC,EAAKonC,UAAW,GAAG,QAE3E5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,CAAEwoH,GAAsB1kC,EAAKonC,UAAW,GAAG,WAb9Ese,EAgBF,KAIPvmD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAc5lE,SAAC,0BAIhD,EC9Gf,GAA2B,2BAA3B,GAAkE,4BAAlE,GAA2G,6BAA3G,GAA8I,sBAA9I,GAA+K,2BAA/K,GAAqN,2BAArN,GAAwP,wBAAxP,GAAuR,uBAAvR,GAA0T,4BCK1T,SAASl3C,GAAMgsC,GACb,OAAOA,EAAI,GAAM,CACnB,CACA,MAAM60I,GAAMA,CAAC70I,EAAG0I,EAAG77B,IAAM7Q,KAAK0D,IAAI1D,KAAK4D,IAAIogC,EAAGnzB,GAAI67B,GAClD,SAASosI,GAAI90I,GACX,OAAO60I,GAAI7gL,GAAU,KAAJgsC,GAAW,EAAG,IACjC,CAIA,SAAS+0I,GAAI/0I,GACX,OAAO60I,GAAI7gL,GAAU,IAAJgsC,GAAU,EAAG,IAChC,CACA,SAASg1I,GAAIh1I,GACX,OAAO60I,GAAI7gL,GAAMgsC,EAAI,MAAQ,IAAK,EAAG,EACvC,CACA,SAASi1I,GAAIj1I,GACX,OAAO60I,GAAI7gL,GAAU,IAAJgsC,GAAU,EAAG,IAChC,CAEA,MAAMk1I,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG/sI,EAAG,GAAImL,EAAG,GAAI1iD,EAAG,GAAI+1D,EAAG,GAAImD,EAAG,GAAIl1D,EAAG,GAAIE,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIrD,EAAG,GAAIvD,EAAG,GAAIue,EAAG,IACrJwoK,GAAM,IAAI,oBACVt+B,GAAK9hJ,GAAKogL,GAAQ,GAAJpgL,GACd+hJ,GAAK/hJ,GAAKogL,IAAS,IAAJpgL,IAAa,GAAKogL,GAAQ,GAAJpgL,GACrC45B,GAAK55B,IAAW,IAAJA,IAAa,KAAY,GAAJA,GAyBvC,SAASqgL,GAAUp1I,GACjB,IAAIrzB,EAzBUqzB,IAAKrR,GAAGqR,EAAEvG,IAAM9K,GAAGqR,EAAEpzB,IAAM+hB,GAAGqR,EAAEjrC,IAAM45B,GAAGqR,EAAElrC,GAyBjDugL,CAAQr1I,GAAK62G,GAAKC,GAC1B,OAAO92G,EACH,IAAMrzB,EAAEqzB,EAAEvG,GAAK9sB,EAAEqzB,EAAEpzB,GAAKD,EAAEqzB,EAAEjrC,GAJpBsiH,EAACviH,EAAG6X,IAAM7X,EAAI,IAAM6X,EAAE7X,GAAK,GAIFuiH,CAAMr3E,EAAElrC,EAAG6X,QAC5C9e,CACN,CAEA,MAAMynL,GAAS,+GACf,SAASC,GAAS1oK,EAAGjH,EAAG8iC,GACtB,MAAM5zC,EAAI8Q,EAAI5J,KAAK4D,IAAI8oC,EAAG,EAAIA,GACxB/7B,EAAI,SAAC9G,GAAC,IAAE+vB,EAAC1oC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,IAAI2Y,EAAIgH,EAAI,IAAM,GAAE,OAAK67B,EAAI5zC,EAAIkH,KAAK0D,IAAI1D,KAAK4D,IAAIg2B,EAAI,EAAG,EAAIA,EAAG,IAAK,EAAE,EACvF,MAAO,CAACjpB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAAS6oK,GAAS3oK,EAAGjH,EAAGo6B,GACtB,MAAMrzB,EAAI,SAAC9G,GAAC,IAAE+vB,EAAC1oC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,IAAI2Y,EAAIgH,EAAI,IAAM,EAAC,OAAKmzB,EAAIA,EAAIp6B,EAAI5J,KAAK0D,IAAI1D,KAAK4D,IAAIg2B,EAAG,EAAIA,EAAG,GAAI,EAAE,EACrF,MAAO,CAACjpB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAAS8oK,GAAS5oK,EAAGs6C,EAAGpyD,GACtB,MAAM2gL,EAAMH,GAAS1oK,EAAG,EAAG,IAC3B,IAAIjb,EAMJ,IALIu1D,EAAIpyD,EAAI,IACVnD,EAAI,GAAKu1D,EAAIpyD,GACboyD,GAAKv1D,EACLmD,GAAKnD,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjB8jL,EAAI9jL,IAAM,EAAIu1D,EAAIpyD,EAClB2gL,EAAI9jL,IAAMu1D,EAEZ,OAAOuuH,CACT,CAUA,SAASC,GAAQ31I,GACf,MACMvG,EAAIuG,EAAEvG,EADE,IAER7sB,EAAIozB,EAAEpzB,EAFE,IAGR7X,EAAIirC,EAAEjrC,EAHE,IAIR2K,EAAM1D,KAAK0D,IAAI+5B,EAAG7sB,EAAG7X,GACrB6K,EAAM5D,KAAK4D,IAAI65B,EAAG7sB,EAAG7X,GACrB2zC,GAAKhpC,EAAME,GAAO,EACxB,IAAIiN,EAAGjH,EAAGjU,EAOV,OANI+N,IAAQE,IACVjO,EAAI+N,EAAME,EACVgG,EAAI8iC,EAAI,GAAM/2C,GAAK,EAAI+N,EAAME,GAAOjO,GAAK+N,EAAME,GAC/CiN,EArBJ,SAAkB4sB,EAAG7sB,EAAG7X,EAAGpD,EAAG+N,GAC5B,OAAI+5B,IAAM/5B,GACCkN,EAAI7X,GAAKpD,GAAMib,EAAI7X,EAAI,EAAI,GAElC6X,IAAMlN,GACA3K,EAAI0kC,GAAK9nC,EAAI,GAEf8nC,EAAI7sB,GAAKjb,EAAI,CACvB,CAaQikL,CAASn8I,EAAG7sB,EAAG7X,EAAGpD,EAAG+N,GACzBmN,EAAQ,GAAJA,EAAS,IAER,CAAK,EAAJA,EAAOjH,GAAK,EAAG8iC,EACzB,CACA,SAASmtI,GAAMlpK,EAAG7X,EAAGC,EAAGC,GACtB,OACEuiB,MAAMC,QAAQ1iB,GACV6X,EAAE7X,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAChB6X,EAAE7X,EAAGC,EAAGC,IACZuL,IAAIw0K,GACR,CACA,SAASe,GAAQjpK,EAAGjH,EAAG8iC,GACrB,OAAOmtI,GAAMN,GAAU1oK,EAAGjH,EAAG8iC,EAC/B,CAOA,SAASqtI,GAAIlpK,GACX,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAASmpK,GAASx3J,GAChB,MAAMgzB,EAAI8jI,GAAO7yJ,KAAKjE,GACtB,IACIwhB,EADAlrC,EAAI,IAER,IAAK08C,EACH,OAEEA,EAAE,KAAOxR,IACXlrC,EAAI08C,EAAE,GAAKsjI,IAAKtjI,EAAE,IAAMujI,IAAKvjI,EAAE,KAEjC,MAAM3kC,EAAIkpK,IAAKvkI,EAAE,IACX2mF,GAAM3mF,EAAE,GAAK,IACb4mF,GAAM5mF,EAAE,GAAK,IAQnB,OANExR,EADW,QAATwR,EAAE,GAtBR,SAAiB3kC,EAAGs6C,EAAGpyD,GACrB,OAAO8gL,GAAMJ,GAAU5oK,EAAGs6C,EAAGpyD,EAC/B,CAqBQkhL,CAAQppK,EAAGsrH,EAAIC,GACD,QAAT5mF,EAAE,GArBf,SAAiB3kC,EAAGjH,EAAGo6B,GACrB,OAAO61I,GAAML,GAAU3oK,EAAGjH,EAAGo6B,EAC/B,CAoBQk2I,CAAQrpK,EAAGsrH,EAAIC,GAEf09C,GAAQjpK,EAAGsrH,EAAIC,GAEd,CACL3+F,EAAGuG,EAAE,GACLpzB,EAAGozB,EAAE,GACLjrC,EAAGirC,EAAE,GACLlrC,EAAGA,EAEP,CAsBA,MAAMyL,GAAM,CACX1O,EAAG,OACH8tE,EAAG,QACHD,EAAG,KACHv3D,EAAG,MACH4D,EAAG,KACHqxD,EAAG,SACHF,EAAG,QACH/0B,EAAG,KACHzkC,EAAG,KACHoE,EAAG,KACHwrC,EAAG,KACH1iD,EAAG,QACH+1D,EAAG,QACHsO,EAAG,KACH70B,EAAG,WACH0pB,EAAG,KACH8H,EAAG,KACHl7B,EAAG,KACHpiC,EAAG,KACHf,EAAG,KACH4sC,EAAG,QACHvrC,EAAG,KACHsT,EAAG,KACHF,EAAG,OACHhE,EAAG,KACHmoD,EAAG,QACHlF,EAAG,MAEEkvH,GAAU,CACfC,OAAQ,SACRC,YAAa,SACbC,KAAM,OACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACR53I,MAAO,IACP63I,aAAc,SACdjxH,GAAI,KACJkxH,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,SAAU,SACVC,QAAS,SACTC,IAAK,SACLC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,KAAM,OACNC,IAAK,KACLC,MAAO,OACPC,QAAS,SACTC,KAAM,SACNC,KAAM,OACNC,KAAM,SACNC,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,IAAK,OACLC,OAAQ,SACRC,OAAQ,SACRC,SAAU,OACVC,OAAQ,SACRC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,OAAQ,SACRC,QAAS,SACTC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,UAAW,SACXC,QAAS,SACTC,WAAY,SACZC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,IAAK,SACLC,KAAM,OACNC,QAAS,SACTC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,IAAK,KACLC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,UAAW,OACXC,IAAK,SACLC,SAAU,SACVC,WAAY,SACZC,QAAS,SACTC,SAAU,SACVC,QAAS,SACTC,WAAY,SACZC,KAAM,KACNC,OAAQ,SACRC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,UAAW,SACXC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,YAAa,SACbt+H,GAAI,SACJu+H,SAAU,SACVC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,SAAU,OACVC,OAAQ,SACRxxB,IAAK,SACLyxB,IAAK,OACLC,MAAO,SACPC,OAAQ,SACR75H,GAAI,SACJ85H,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,UAAW,SACXC,GAAI,SACJC,MAAO,UAmBR,IAAI7c,GACJ,SAAS8c,GAAU3gK,GACZ6jJ,KACHA,GApBJ,WACE,MAAM+c,EAAW,CAAC,EACZvnK,EAAOrtB,OAAOqtB,KAAKs+J,IACnBkJ,EAAQ70L,OAAOqtB,KAAKtX,IAC1B,IAAI3O,EAAGqE,EAAG2/B,EAAG6pC,EAAID,EACjB,IAAK5tE,EAAI,EAAGA,EAAIimB,EAAK1qB,OAAQyE,IAAK,CAEhC,IADA6tE,EAAKD,EAAK3nD,EAAKjmB,GACVqE,EAAI,EAAGA,EAAIopL,EAAMlyL,OAAQ8I,IAC5B2/B,EAAIypJ,EAAMppL,GACVupE,EAAKA,EAAGl9C,QAAQsT,EAAGr1B,GAAIq1B,IAEzBA,EAAIt3B,SAAS63K,GAAQ12G,GAAK,IAC1B2/G,EAAS5/G,GAAM,CAAC5pC,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EACjD,CACA,OAAOwpJ,CACT,CAKYE,GACRjd,GAAMkd,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,MAAMzqL,EAAIutK,GAAM7jJ,EAAI8nB,eACpB,OAAOxxC,GAAK,CACV2kC,EAAG3kC,EAAE,GACL8X,EAAG9X,EAAE,GACLC,EAAGD,EAAE,GACLA,EAAgB,IAAbA,EAAE3H,OAAe2H,EAAE,GAAK,IAE/B,CAEA,MAAM0qL,GAAS,uGAiCf,MAAMttG,GAAKlyC,GAAKA,GAAK,SAAgB,MAAJA,EAAqC,MAAzBhkC,KAAK0Q,IAAIszB,EAAG,EAAM,KAAe,KACxEmyC,GAAOnyC,GAAKA,GAAK,OAAUA,EAAI,MAAQhkC,KAAK0Q,KAAKszB,EAAI,MAAS,MAAO,KAa3E,SAASy/I,GAAOz/I,EAAGpuC,EAAG2vC,GACpB,GAAIvB,EAAG,CACL,IAAI0/I,EAAM/J,GAAQ31I,GAClB0/I,EAAI9tL,GAAKoK,KAAK0D,IAAI,EAAG1D,KAAK4D,IAAI8/K,EAAI9tL,GAAK8tL,EAAI9tL,GAAK2vC,EAAa,IAAN3vC,EAAU,IAAM,IACvE8tL,EAAM5J,GAAQ4J,GACd1/I,EAAEvG,EAAIimJ,EAAI,GACV1/I,EAAEpzB,EAAI8yK,EAAI,GACV1/I,EAAEjrC,EAAI2qL,EAAI,EACZ,CACF,CACA,SAASriL,GAAM2iC,EAAGxO,GAChB,OAAOwO,EAAIx1C,OAAO49C,OAAO5W,GAAS,CAAC,EAAGwO,GAAKA,CAC7C,CACA,SAAS2/I,GAAW59K,GAClB,IAAIi+B,EAAI,CAACvG,EAAG,EAAG7sB,EAAG,EAAG7X,EAAG,EAAGD,EAAG,KAY9B,OAXIyiB,MAAMC,QAAQzV,GACZA,EAAM5U,QAAU,IAClB6yC,EAAI,CAACvG,EAAG13B,EAAM,GAAI6K,EAAG7K,EAAM,GAAIhN,EAAGgN,EAAM,GAAIjN,EAAG,KAC3CiN,EAAM5U,OAAS,IACjB6yC,EAAElrC,EAAIigL,GAAIhzK,EAAM,OAIpBi+B,EAAI3iC,GAAM0E,EAAO,CAAC03B,EAAG,EAAG7sB,EAAG,EAAG7X,EAAG,EAAGD,EAAG,KACrCA,EAAIigL,GAAI/0I,EAAElrC,GAEPkrC,CACT,CACA,SAAS4/I,GAAcphK,GACrB,MAAsB,MAAlBA,EAAI7d,OAAO,GA3EjB,SAAkB6d,GAChB,MAAMgzB,EAAIguI,GAAO/8J,KAAKjE,GACtB,IACIib,EAAG7sB,EAAG7X,EADND,EAAI,IAER,GAAK08C,EAAL,CAGA,GAAIA,EAAE,KAAO/X,EAAG,CACd,MAAMuG,GAAKwR,EAAE,GACb18C,EAAI08C,EAAE,GAAKsjI,GAAI90I,GAAK60I,GAAQ,IAAJ70I,EAAS,EAAG,IACtC,CAOA,OANAvG,GAAK+X,EAAE,GACP5kC,GAAK4kC,EAAE,GACPz8C,GAAKy8C,EAAE,GACP/X,EAAI,KAAO+X,EAAE,GAAKsjI,GAAIr7I,GAAKo7I,GAAIp7I,EAAG,EAAG,MACrC7sB,EAAI,KAAO4kC,EAAE,GAAKsjI,GAAIloK,GAAKioK,GAAIjoK,EAAG,EAAG,MACrC7X,EAAI,KAAOy8C,EAAE,GAAKsjI,GAAI//K,GAAK8/K,GAAI9/K,EAAG,EAAG,MAC9B,CACL0kC,EAAGA,EACH7sB,EAAGA,EACH7X,EAAGA,EACHD,EAAGA,EAfL,CAiBF,CAqDW+qL,CAASrhK,GAEXw3J,GAASx3J,EAClB,CACA,MAAMshK,GACJljK,WAAAA,CAAY7a,GACV,GAAIA,aAAiB+9K,GACnB,OAAO/9K,EAET,MAAM2jB,SAAc3jB,EACpB,IAAIi+B,EACS,WAATta,EACFsa,EAAI2/I,GAAW59K,GACG,WAAT2jB,IACTsa,EAjcN,SAAkBxhB,GAChB,IACIq3G,EADArzF,EAAMhkB,EAAIrxB,OAmBd,MAjBe,MAAXqxB,EAAI,KACM,IAARgkB,GAAqB,IAARA,EACfqzF,EAAM,CACJp8F,EAAG,IAAsB,GAAhBy7I,GAAM12J,EAAI,IACnB5R,EAAG,IAAsB,GAAhBsoK,GAAM12J,EAAI,IACnBzpB,EAAG,IAAsB,GAAhBmgL,GAAM12J,EAAI,IACnB1pB,EAAW,IAAR0tC,EAA4B,GAAhB0yI,GAAM12J,EAAI,IAAW,KAErB,IAARgkB,GAAqB,IAARA,IACtBqzF,EAAM,CACJp8F,EAAGy7I,GAAM12J,EAAI,KAAO,EAAI02J,GAAM12J,EAAI,IAClC5R,EAAGsoK,GAAM12J,EAAI,KAAO,EAAI02J,GAAM12J,EAAI,IAClCzpB,EAAGmgL,GAAM12J,EAAI,KAAO,EAAI02J,GAAM12J,EAAI,IAClC1pB,EAAW,IAAR0tC,EAAa0yI,GAAM12J,EAAI,KAAO,EAAI02J,GAAM12J,EAAI,IAAO,OAIrDq3G,CACT,CA4aUkqD,CAASh+K,IAAUo9K,GAAUp9K,IAAU69K,GAAc79K,IAE3DlT,KAAKmxL,KAAOhgJ,EACZnxC,KAAKoxL,SAAWjgJ,CAClB,CACA,SAAIkgJ,GACF,OAAOrxL,KAAKoxL,MACd,CACA,OAAIvK,GACF,IAAI11I,EAAI3iC,GAAMxO,KAAKmxL,MAInB,OAHIhgJ,IACFA,EAAElrC,EAAIkgL,GAAIh1I,EAAElrC,IAEPkrC,CACT,CACA,OAAI01I,CAAI74K,GACNhO,KAAKmxL,KAAOL,GAAW9iL,EACzB,CACAsjL,SAAAA,GACE,OAAOtxL,KAAKoxL,QArFGjgJ,EAqFgBnxC,KAAKmxL,QAnFpChgJ,EAAElrC,EAAI,IAAG,QAAAgF,OACGkmC,EAAEvG,EAAC,MAAA3/B,OAAKkmC,EAAEpzB,EAAC,MAAA9S,OAAKkmC,EAAEjrC,EAAC,MAAA+E,OAAKk7K,GAAIh1I,EAAElrC,GAAE,YAAAgF,OACjCkmC,EAAEvG,EAAC,MAAA3/B,OAAKkmC,EAAEpzB,EAAC,MAAA9S,OAAKkmC,EAAEjrC,EAAC,WAiFclH,EArFhD,IAAmBmyC,CAsFjB,CACAo1I,SAAAA,GACE,OAAOvmL,KAAKoxL,OAAS7K,GAAUvmL,KAAKmxL,WAAQnyL,CAC9C,CACAuyL,SAAAA,GACE,OAAOvxL,KAAKoxL,OApVhB,SAAmBjgJ,GACjB,IAAKA,EACH,OAEF,MAAMlrC,EAAI6gL,GAAQ31I,GACZnzB,EAAI/X,EAAE,GACN8Q,EAAIqvK,GAAIngL,EAAE,IACV4zC,EAAIusI,GAAIngL,EAAE,IAChB,OAAOkrC,EAAElrC,EAAI,IAAG,QAAAgF,OACJ+S,EAAC,MAAA/S,OAAK8L,EAAC,OAAA9L,OAAM4uC,EAAC,OAAA5uC,OAAMk7K,GAAIh1I,EAAElrC,GAAE,YAAAgF,OAC7B+S,EAAC,MAAA/S,OAAK8L,EAAC,OAAA9L,OAAM4uC,EAAC,KAC3B,CAyUyB03I,CAAUvxL,KAAKmxL,WAAQnyL,CAC9C,CACAwyL,GAAAA,CAAI7/H,EAAO8/H,GACT,GAAI9/H,EAAO,CACT,MAAM+/H,EAAK1xL,KAAK6mL,IACV8K,EAAKhgI,EAAMk1H,IACjB,IAAI+K,EACJ,MAAMliJ,EAAI+hJ,IAAWG,EAAK,GAAMH,EAC1Bn5H,EAAI,EAAI5oB,EAAI,EACZzpC,EAAIyrL,EAAGzrL,EAAI0rL,EAAG1rL,EACd4rL,IAAOv5H,EAAIryD,KAAO,EAAIqyD,GAAKA,EAAIryD,IAAM,EAAIqyD,EAAIryD,IAAM,GAAK,EAC9D2rL,EAAK,EAAIC,EACTH,EAAG9mJ,EAAI,IAAOinJ,EAAKH,EAAG9mJ,EAAIgnJ,EAAKD,EAAG/mJ,EAAI,GACtC8mJ,EAAG3zK,EAAI,IAAO8zK,EAAKH,EAAG3zK,EAAI6zK,EAAKD,EAAG5zK,EAAI,GACtC2zK,EAAGxrL,EAAI,IAAO2rL,EAAKH,EAAGxrL,EAAI0rL,EAAKD,EAAGzrL,EAAI,GACtCwrL,EAAGzrL,EAAIypC,EAAIgiJ,EAAGzrL,GAAK,EAAIypC,GAAKiiJ,EAAG1rL,EAC/BjG,KAAK6mL,IAAM6K,CACb,CACA,OAAO1xL,IACT,CACA8xL,WAAAA,CAAYngI,EAAOruD,GAIjB,OAHIquD,IACF3xD,KAAKmxL,KAvGX,SAAqBY,EAAMC,EAAM1uL,GAC/B,MAAMsnC,EAAI04C,GAAK6iG,GAAI4L,EAAKnnJ,IAClB7sB,EAAIulE,GAAK6iG,GAAI4L,EAAKh0K,IAClB7X,EAAIo9E,GAAK6iG,GAAI4L,EAAK7rL,IACxB,MAAO,CACL0kC,EAAGs7I,GAAI7iG,GAAGz4C,EAAItnC,GAAKggF,GAAK6iG,GAAI6L,EAAKpnJ,IAAMA,KACvC7sB,EAAGmoK,GAAI7iG,GAAGtlE,EAAIza,GAAKggF,GAAK6iG,GAAI6L,EAAKj0K,IAAMA,KACvC7X,EAAGggL,GAAI7iG,GAAGn9E,EAAI5C,GAAKggF,GAAK6iG,GAAI6L,EAAK9rL,IAAMA,KACvCD,EAAG8rL,EAAK9rL,EAAI3C,GAAK0uL,EAAK/rL,EAAI8rL,EAAK9rL,GAEnC,CA6FkB6rL,CAAY9xL,KAAKmxL,KAAMx/H,EAAMw/H,KAAM7tL,IAE1CtD,IACT,CACAwO,KAAAA,GACE,OAAO,IAAIyiL,GAAMjxL,KAAK6mL,IACxB,CACAr+D,KAAAA,CAAMviH,GAEJ,OADAjG,KAAKmxL,KAAKlrL,EAAIigL,GAAIjgL,GACXjG,IACT,CACAiyL,OAAAA,CAAQv/I,GAGN,OAFY1yC,KAAKmxL,KACblrL,GAAK,EAAIysC,EACN1yC,IACT,CACAkyL,SAAAA,GACE,MAAMrL,EAAM7mL,KAAKmxL,KACX1oK,EAAMtjB,GAAc,GAAR0hL,EAAIj8I,EAAkB,IAARi8I,EAAI9oK,EAAmB,IAAR8oK,EAAI3gL,GAEnD,OADA2gL,EAAIj8I,EAAIi8I,EAAI9oK,EAAI8oK,EAAI3gL,EAAIuiB,EACjBzoB,IACT,CACAmyL,OAAAA,CAAQz/I,GAGN,OAFY1yC,KAAKmxL,KACblrL,GAAK,EAAIysC,EACN1yC,IACT,CACAoyL,MAAAA,GACE,MAAMjhJ,EAAInxC,KAAKmxL,KAIf,OAHAhgJ,EAAEvG,EAAI,IAAMuG,EAAEvG,EACduG,EAAEpzB,EAAI,IAAMozB,EAAEpzB,EACdozB,EAAEjrC,EAAI,IAAMirC,EAAEjrC,EACPlG,IACT,CACAqyL,OAAAA,CAAQ3/I,GAEN,OADAk+I,GAAO5wL,KAAKmxL,KAAM,EAAGz+I,GACd1yC,IACT,CACAsyL,MAAAA,CAAO5/I,GAEL,OADAk+I,GAAO5wL,KAAKmxL,KAAM,GAAIz+I,GACf1yC,IACT,CACAuyL,QAAAA,CAAS7/I,GAEP,OADAk+I,GAAO5wL,KAAKmxL,KAAM,EAAGz+I,GACd1yC,IACT,CACAwyL,UAAAA,CAAW9/I,GAET,OADAk+I,GAAO5wL,KAAKmxL,KAAM,GAAIz+I,GACf1yC,IACT,CACAyyL,MAAAA,CAAOC,GAEL,OAtaJ,SAAgBvhJ,EAAGuhJ,GACjB,IAAI10K,EAAI8oK,GAAQ31I,GAChBnzB,EAAE,GAAKkpK,GAAIlpK,EAAE,GAAK00K,GAClB10K,EAAIipK,GAAQjpK,GACZmzB,EAAEvG,EAAI5sB,EAAE,GACRmzB,EAAEpzB,EAAIC,EAAE,GACRmzB,EAAEjrC,EAAI8X,EAAE,EACV,CA8ZIy0K,CAAOzyL,KAAKmxL,KAAMuB,GACX1yL,IACT,EC3jBK,SAASvF,KACJ,CAML,MAAM0iC,GAAO,MAClB,IAAIyR,EAAK,EACT,MAAO,IAAMA,GACd,EAHmB,GAUb,SAAS+jJ,GAAcn0L,GAC5B,OAAiB,OAAVA,QAA4BQ,IAAVR,CAC3B,CAOO,SAASmqB,GAAqBnqB,GACnC,GAAIkqB,MAAMC,SAAWD,MAAMC,QAAQnqB,GACjC,OAAO,EAET,MAAMq4B,EAAOl7B,OAAOuE,UAAU2L,SAAS7N,KAAKQ,GAC5C,MAAyB,YAArBq4B,EAAKh3B,MAAM,EAAG,IAAuC,WAAnBg3B,EAAKh3B,OAAO,EAIpD,CAOO,SAASs4B,GAAS35B,GACvB,OAAiB,OAAVA,GAA4D,oBAA1C7C,OAAOuE,UAAU2L,SAAS7N,KAAKQ,EAC1D,CAMA,SAASo0L,GAAep0L,GACtB,OAAyB,kBAAVA,GAAsBA,aAAiB6zB,SAAWJ,UAAUzzB,EAC7E,CAUO,SAASq0L,GAAgBr0L,EAAgB68C,GAC9C,OAAOu3I,GAAep0L,GAASA,EAAQ68C,CACzC,CAOO,SAASy3I,GAAkBt0L,EAAsB68C,GACtD,MAAwB,qBAAV78C,EAAwB68C,EAAe78C,CACvD,OAOau0L,GAAcA,CAACv0L,EAAwBw0L,IACjC,kBAAVx0L,GAAsBA,EAAMq/E,SAAS,KAC1CvrD,WAAW9zB,GAAS,IAAMw0L,GACvBx0L,EASA,SAAS0iE,GACd91C,EACAgE,EACAiK,GAEA,GAAIjO,GAAyB,oBAAZA,EAAGptB,KAClB,OAAOotB,EAAG3sB,MAAM46B,EAASjK,EAE7B,CAuBO,SAAS9C,GACd2mK,EACA7nK,EACAiO,EACAugF,GAEA,IAAI72G,EAAW4wC,EAAa3qB,EAC5B,GAAIL,GAAQsqK,GAEV,GADAt/I,EAAMs/I,EAAS30L,OACXs7G,EACF,IAAK72G,EAAI4wC,EAAM,EAAG5wC,GAAK,EAAGA,IACxBqoB,EAAGptB,KAAKq7B,EAAS45J,EAASlwL,GAAIA,QAGhC,IAAKA,EAAI,EAAGA,EAAI4wC,EAAK5wC,IACnBqoB,EAAGptB,KAAKq7B,EAAS45J,EAASlwL,GAAIA,QAG7B,GAAIo1B,GAAS86J,GAGlB,IAFAjqK,EAAOrtB,OAAOqtB,KAAKiqK,GACnBt/I,EAAM3qB,EAAK1qB,OACNyE,EAAI,EAAGA,EAAI4wC,EAAK5wC,IACnBqoB,EAAGptB,KAAKq7B,EAAS45J,EAASjqK,EAAKjmB,IAAKimB,EAAKjmB,GAG/C,CAQO,SAASmwL,GAAeC,EAAuBC,GACpD,IAAIrwL,EAAWswL,EAAcC,EAAqBC,EAElD,IAAKJ,IAAOC,GAAMD,EAAG70L,SAAW80L,EAAG90L,OACjC,OAAO,EAGT,IAAKyE,EAAI,EAAGswL,EAAOF,EAAG70L,OAAQyE,EAAIswL,IAAQtwL,EAIxC,GAHAuwL,EAAKH,EAAGpwL,GACRwwL,EAAKH,EAAGrwL,GAEJuwL,EAAGE,eAAiBD,EAAGC,cAAgBF,EAAGjyL,QAAUkyL,EAAGlyL,MACzD,OAAO,EAIX,OAAO,CACT,CAMO,SAASmN,GAASqa,GACvB,GAAIF,GAAQE,GACV,OAAOA,EAAOnX,IAAIlD,IAGpB,GAAI2pB,GAAStP,GAAS,CACpB,MAAM9oB,EAASpE,OAAOyM,OAAO,MACvB4gB,EAAOrtB,OAAOqtB,KAAKH,GACnB4qK,EAAOzqK,EAAK1qB,OAClB,IAAIyoC,EAAI,EAER,KAAOA,EAAI0sJ,IAAQ1sJ,EACjBhnC,EAAOipB,EAAK+d,IAAMv4B,GAAMqa,EAAOG,EAAK+d,KAGtC,OAAOhnC,EAGT,OAAO8oB,CACT,CAEA,SAAS6qK,GAAWnzL,GAClB,OAAmE,IAA5D,CAAC,YAAa,YAAa,eAAee,QAAQf,EAC3D,CAOO,SAASozL,GAAQpzL,EAAaR,EAAmB8oB,EAAmBxoB,GACzE,IAAKqzL,GAAWnzL,GACd,OAGF,MAAMqzL,EAAO7zL,EAAOQ,GACdszL,EAAOhrK,EAAOtoB,GAEhB43B,GAASy7J,IAASz7J,GAAS07J,GAE7B/rD,GAAM8rD,EAAMC,EAAMxzL,GAElBN,EAAOQ,GAAOiO,GAAMqlL,EAExB,CA0BO,SAAS/rD,GAAS/nI,EAAW8oB,EAAqBxoB,GACvD,MAAMkoJ,EAAU5/H,GAAQE,GAAUA,EAAS,CAACA,GACtCwqK,EAAO9qC,EAAQjqJ,OAErB,IAAK65B,GAASp4B,GACZ,OAAOA,EAIT,MAAM+zL,GADNzzL,EAAUA,GAAW,CAAC,GACCyzL,QAAUH,GACjC,IAAI7vI,EAEJ,IAAK,IAAI/gD,EAAI,EAAGA,EAAIswL,IAAQtwL,EAAG,CAE7B,GADA+gD,EAAUykG,EAAQxlJ,IACbo1B,GAAS2rB,GACZ,SAGF,MAAM96B,EAAOrtB,OAAOqtB,KAAK86B,GACzB,IAAK,IAAI/c,EAAI,EAAG0sJ,EAAOzqK,EAAK1qB,OAAQyoC,EAAI0sJ,IAAQ1sJ,EAC9C+sJ,EAAO9qK,EAAK+d,GAAIhnC,EAAQ+jD,EAASzjD,EAErC,CAEA,OAAON,CACT,CAgBO,SAASg0L,GAAWh0L,EAAW8oB,GAEpC,OAAOi/G,GAAS/nI,EAAQ8oB,EAAQ,CAACirK,OAAQE,IAC3C,CAMO,SAASA,GAAUzzL,EAAaR,EAAmB8oB,GACxD,IAAK6qK,GAAWnzL,GACd,OAGF,MAAMqzL,EAAO7zL,EAAOQ,GACdszL,EAAOhrK,EAAOtoB,GAEhB43B,GAASy7J,IAASz7J,GAAS07J,GAC7BE,GAAQH,EAAMC,GACJl4L,OAAOuE,UAAUiO,eAAenQ,KAAK+B,EAAQQ,KACvDR,EAAOQ,GAAOiO,GAAMqlL,GAExB,CAaA,MAAMI,GAAe,CAEnB,GAAI9iJ,GAAKA,EAETnuC,EAAGoiC,GAAKA,EAAEpiC,EACVoD,EAAGg/B,GAAKA,EAAEh/B,GAqCL,SAAS8tL,GAAiBlmL,EAAgBzN,GAC/C,MAAM4zL,EAAWF,GAAa1zL,KAAS0zL,GAAa1zL,GAhBtD,SAAyBA,GACvB,MAAMyoB,EAjBD,SAAmBzoB,GACxB,MAAM2zB,EAAQ3zB,EAAIi3C,MAAM,KAClBxuB,EAAiB,GACvB,IAAI6nK,EAAM,GACV,IAAK,MAAM/7J,KAAQZ,EACjB28J,GAAO/7J,EACH+7J,EAAIhzG,SAAS,MACfgzG,EAAMA,EAAIhxL,MAAM,GAAI,GAAK,KAEzBmpB,EAAK7nB,KAAK0vL,GACVA,EAAM,IAGV,OAAO7nK,CACT,CAGeorK,CAAU7zL,GACvB,OAAOyN,IACL,IAAK,MAAM+4B,KAAK/d,EAAM,CACpB,GAAU,KAAN+d,EAGF,MAEF/4B,EAAMA,GAAOA,EAAI+4B,EACnB,CACA,OAAO/4B,CAAA,CAEX,CAG6DqmL,CAAgB9zL,IAC3E,OAAO4zL,EAASnmL,EAClB,CAKO,SAASsmL,GAAY3kK,GAC1B,OAAOA,EAAI7d,OAAO,GAAG8lC,cAAgBjoB,EAAI9vB,MAAM,EACjD,OAGa00L,GAAW/1L,GAAoC,qBAAVA,EAErCmvB,GAAcnvB,GAAsE,oBAAVA,EAG1Eg2L,GAAYA,CAAIvuL,EAAWC,KACtC,GAAID,EAAEw2B,OAASv2B,EAAEu2B,KACf,OAAO,EAGT,IAAK,MAAMkwD,KAAQ1mF,EACjB,IAAKC,EAAE+8B,IAAI0pD,GACT,OAAO,EAIX,OAAO,CAAI,EC9YN,MAAM2L,GAAKnrF,KAAKmrF,GACVm8F,GAAM,EAAIn8F,GACVo8F,GAAQD,GAAMn8F,GACdq8F,GAAWtiK,OAAOuiK,kBAClBC,GAAcv8F,GAAK,IACnBw8F,GAAUx8F,GAAK,EACfy8F,GAAaz8F,GAAK,EAClB08F,GAAqB,EAAL18F,GAAS,EAEzB28F,GAAQ9nL,KAAK8nL,MACbC,GAAO/nL,KAAK+nL,KAElB,SAASC,GAAanyL,EAAWoD,EAAWgvL,GACjD,OAAOjoL,KAAK2H,IAAI9R,EAAIoD,GAAKgvL,CAC3B,CAKO,SAASC,GAAQ94L,GACtB,MAAM+4L,EAAenoL,KAAKhI,MAAM5I,GAChCA,EAAQ44L,GAAa54L,EAAO+4L,EAAc/4L,EAAQ,KAAQ+4L,EAAe/4L,EACzE,MAAMg5L,EAAYpoL,KAAK0Q,IAAI,GAAI1Q,KAAKwJ,MAAMs+K,GAAM14L,KAC1CqtF,EAAWrtF,EAAQg5L,EAEzB,OADqB3rG,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,IAC3D2rG,CACxB,CAyBO,SAAS5vD,GAAS3uH,GACvB,OAAQkb,MAAMI,WAAWtb,KAAiBib,SAASjb,EACrD,CAUO,SAASw+K,GACdvrK,EACAlqB,EACAwpB,GAEA,IAAIxmB,EAAWswL,EAAc70L,EAE7B,IAAKuE,EAAI,EAAGswL,EAAOppK,EAAM3rB,OAAQyE,EAAIswL,EAAMtwL,IACzCvE,EAAQyrB,EAAMlnB,GAAGwmB,GACZ2I,MAAM1zB,KACTuB,EAAOgR,IAAM5D,KAAK4D,IAAIhR,EAAOgR,IAAKvS,GAClCuB,EAAO8Q,IAAM1D,KAAK0D,IAAI9Q,EAAO8Q,IAAKrS,GAGxC,CAEO,SAASi3L,GAAUC,GACxB,OAAOA,GAAWp9F,GAAK,IACzB,CAEO,SAASq9F,GAAUC,GACxB,OAAOA,GAAW,IAAMt9F,GAC1B,CASO,SAASu9F,GAAe7yL,GAC7B,IAAK4vL,GAAe5vL,GAClB,OAEF,IAAIzD,EAAI,EACJmwC,EAAI,EACR,KAAOviC,KAAKhI,MAAMnC,EAAIzD,GAAKA,IAAMyD,GAC/BzD,GAAK,GACLmwC,IAEF,OAAOA,CACT,CAGO,SAASomJ,GACdC,EACAC,GAEA,MAAMC,EAAsBD,EAAWhzL,EAAI+yL,EAAY/yL,EACjDkzL,EAAsBF,EAAW5vL,EAAI2vL,EAAY3vL,EACjD+vL,EAA2BhpL,KAAKsQ,KAAKw4K,EAAsBA,EAAsBC,EAAsBA,GAE7G,IAAIE,EAAQjpL,KAAKkuG,MAAM66E,EAAqBD,GAM5C,OAJIG,GAAU,GAAM99F,KAClB89F,GAAS3B,IAGJ,CACL2B,QACAC,SAAUF,EAEd,CAEO,SAASG,GAAsBC,EAAYC,GAChD,OAAOrpL,KAAKsQ,KAAKtQ,KAAK0Q,IAAI24K,EAAIxzL,EAAIuzL,EAAIvzL,EAAG,GAAKmK,KAAK0Q,IAAI24K,EAAIpwL,EAAImwL,EAAInwL,EAAG,GACxE,CAMO,SAASqwL,GAAWxwL,EAAWC,GACpC,OAAQD,EAAIC,EAAIwuL,IAASD,GAAMn8F,EACjC,CAMO,SAASo+F,GAAgBzwL,GAC9B,OAAQA,EAAIwuL,GAAMA,IAAOA,EAC3B,CAKO,SAASkC,GAAcP,EAAevhI,EAAeC,EAAa8hI,GACvE,MAAM3wL,EAAIywL,GAAgBN,GACpBr/K,EAAI2/K,GAAgB7hI,GACpBt1D,EAAIm3L,GAAgB5hI,GACpB+hI,EAAeH,GAAgB3/K,EAAI9Q,GACnC6wL,EAAaJ,GAAgBn3L,EAAI0G,GACjC8wL,EAAeL,GAAgBzwL,EAAI8Q,GACnCigL,EAAaN,GAAgBzwL,EAAI1G,GACvC,OAAO0G,IAAM8Q,GAAK9Q,IAAM1G,GAAMq3L,GAAyB7/K,IAAMxX,GACvDs3L,EAAeC,GAAcC,EAAeC,CACpD,CASO,SAASC,GAAYz4L,EAAeuS,EAAaF,GACtD,OAAO1D,KAAK0D,IAAIE,EAAK5D,KAAK4D,IAAIF,EAAKrS,GACrC,CAiBO,SAAS04L,GAAW14L,EAAeq2D,EAAeC,GAA6B,IAAhBsgI,EAAU/2L,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,QAC9E,OAAOG,GAAS2O,KAAK4D,IAAI8jD,EAAOC,GAAOsgI,GAAW52L,GAAS2O,KAAK0D,IAAIgkD,EAAOC,GAAOsgI,CACpF,CCpLO,SAAS+B,GACdliJ,EACAz2C,EACA44L,GAEAA,EAAMA,GAAA,CAAS/1L,GAAU4zC,EAAM5zC,GAAS7C,GACxC,IAEI64L,EAFAryH,EAAK/vB,EAAM32C,OAAS,EACpBg5L,EAAK,EAGT,KAAOtyH,EAAKsyH,EAAK,GACfD,EAAOC,EAAKtyH,GAAO,EACfoyH,EAAIC,GACNC,EAAKD,EAELryH,EAAKqyH,EAIT,MAAO,CAACC,KAAItyH,KACd,CAUO,MAAMuyH,GAAeA,CAC1BtiJ,EACA10C,EACA/B,EACA61B,IAEA8iK,GAAQliJ,EAAOz2C,EAAO61B,EAClBhzB,IACA,MAAMwkE,EAAK5wB,EAAM5zC,GAAOd,GACxB,OAAOslE,EAAKrnE,GAASqnE,IAAOrnE,GAASy2C,EAAM5zC,EAAQ,GAAGd,KAAS/B,CAAA,EAE/D6C,GAAS4zC,EAAM5zC,GAAOd,GAAO/B,GAStBg5L,GAAgBA,CAC3BviJ,EACA10C,EACA/B,IAEA24L,GAAQliJ,EAAOz2C,GAAO6C,GAAS4zC,EAAM5zC,GAAOd,IAAQ/B,IAyBtD,MAAMi5L,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WA0DhD,SAASC,GAAoBztK,EAAOhpB,GACzC,MAAM02L,EAAO1tK,EAAM2tK,SACnB,IAAKD,EACH,OAGF,MAAMplI,EAAYolI,EAAKplI,UACjBlxD,EAAQkxD,EAAUjxD,QAAQL,IACjB,IAAXI,GACFkxD,EAAUhxD,OAAOF,EAAO,GAGtBkxD,EAAUj0D,OAAS,IAIvBm5L,GAAY32L,SAASP,WACZ0pB,EAAM1pB,EAAI,WAGZ0pB,EAAM2tK,SACf,CAKO,SAASC,GAAgBx1D,GAC9B,MAAM1lG,EAAM,IAAIhK,IAAO0vG,GAEvB,OAAI1lG,EAAIF,OAAS4lG,EAAM/jI,OACd+jI,EAGF35G,MAAM46D,KAAK3mD,EACpB,CCnLa,MAAAm7J,GACW,qBAAXn5L,OACF,SAASuiE,GACd,OAAOA,GACT,EAEKviE,OAAOg/E,sBAOT,SAASo6G,GACd3sK,EACAiO,GAEA,IAAI2+J,EAAY,GACZC,GAAU,EAEd,OAAO,WAAyB,QAAAhlG,EAAA50F,UAAAC,OAAb8wB,EAAW,IAAA1G,MAAAuqE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAX9jE,EAAW8jE,GAAA70F,UAAA60F,GAE5B8kG,EAAY5oK,EACP6oK,IACHA,GAAU,EACVH,GAAiB95L,KAAKW,QAAQ,KAC5Bs5L,GAAU,EACV7sK,EAAG3sB,MAAM46B,EAAS2+J,EAAA,IAGxB,CACF,CAsBO,MAAME,GAAsBC,GAAgD,UAAVA,EAAoB,OAAmB,QAAVA,EAAkB,QAAU,SAMrHC,GAAiBA,CAACD,EAAmCtjI,EAAeC,IAA0B,UAAVqjI,EAAoBtjI,EAAkB,QAAVsjI,EAAkBrjI,GAAOD,EAAQC,GAAO,EAe9J,SAASujI,GAAiCt3I,EAAqCu3I,EAAwBC,GAC5G,MAAMC,EAAaF,EAAOh6L,OAE1B,IAAIu2D,EAAQ,EACR5jB,EAAQunJ,EAEZ,GAAIz3I,EAAK03I,QAAS,CAChB,MAAM,OAACC,EAAA,QAAQC,GAAW53I,EACpB63I,EAAOF,EAAOE,MACd,IAAC7nL,EAAG,IAAEF,EAAG,WAAEgoL,EAAU,WAAEC,GAAcJ,EAAOK,gBAE9CF,IACFhkI,EAAQoiI,GAAY9pL,KAAK4D,IAEvBwmL,GAAaoB,EAASC,EAAM7nL,GAAKumL,GAEjCiB,EAAqBC,EAAajB,GAAae,EAAQM,EAAMF,EAAOM,iBAAiBjoL,IAAMumL,IAC7F,EAAGkB,EAAa,IAGhBvnJ,EADE6nJ,EACM7B,GAAY9pL,KAAK0D,IAEvB0mL,GAAaoB,EAASD,EAAOE,KAAM/nL,GAAK,GAAMm0D,GAAK,EAEnDuzH,EAAqB,EAAIhB,GAAae,EAAQM,EAAMF,EAAOM,iBAAiBnoL,IAAM,GAAMm0D,GAAK,GAC/FnQ,EAAO2jI,GAAc3jI,EAEb2jI,EAAa3jI,EAIzB,MAAO,CAACA,QAAO5jB,QACjB,CAQO,SAASgoJ,GAAoBl4I,GAClC,MAAM,OAACm4I,EAAM,OAAEC,EAAA,aAAQC,GAAgBr4I,EACjCs4I,EAAY,CAChBC,KAAMJ,EAAOnoL,IACbwoL,KAAML,EAAOroL,IACb2oL,KAAML,EAAOpoL,IACb0oL,KAAMN,EAAOtoL,KAEf,IAAKuoL,EAEH,OADAr4I,EAAKq4I,aAAeC,GACb,EAET,MAAMK,EAAUN,EAAaE,OAASJ,EAAOnoL,KAC1CqoL,EAAaG,OAASL,EAAOroL,KAC7BuoL,EAAaI,OAASL,EAAOpoL,KAC7BqoL,EAAaK,OAASN,EAAOtoL,IAGhC,OADAlV,OAAO49C,OAAO6/I,EAAcC,GACrBK,CACT,CC/IA,MAAMC,GAAUr2L,GAAoB,IAANA,GAAiB,IAANA,EACnCs2L,GAAYA,CAACt2L,EAAWyT,EAAW24B,KAAgBviC,KAAK0Q,IAAI,EAAG,IAAMva,GAAK,IAAM6J,KAAK4H,KAAKzR,EAAIyT,GAAK09K,GAAM/kJ,GACzGmqJ,GAAaA,CAACv2L,EAAWyT,EAAW24B,IAAcviC,KAAK0Q,IAAI,GAAI,GAAKva,GAAK6J,KAAK4H,KAAKzR,EAAIyT,GAAK09K,GAAM/kJ,GAAK,EAOvGmxB,GAAU,CACdi5H,OAASx2L,GAAcA,EAEvBy2L,WAAaz2L,GAAcA,EAAIA,EAE/B02L,YAAc12L,IAAeA,GAAKA,EAAI,GAEtC22L,cAAgB32L,IAAgBA,GAAK,IAAO,EACxC,GAAMA,EAAIA,GACT,MAAUA,GAAMA,EAAI,GAAK,GAE9B42L,YAAc52L,GAAcA,EAAIA,EAAIA,EAEpC62L,aAAe72L,IAAeA,GAAK,GAAKA,EAAIA,EAAI,EAEhD82L,eAAiB92L,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EACd,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAE9B+2L,YAAc/2L,GAAcA,EAAIA,EAAIA,EAAIA,EAExCg3L,aAAeh3L,MAAiBA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAEtDi3L,eAAiBj3L,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EAAIA,GACjB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAEnCk3L,YAAcl3L,GAAcA,EAAIA,EAAIA,EAAIA,EAAIA,EAE5Cm3L,aAAen3L,IAAeA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAExDo3L,eAAiBp3L,IAAgBA,GAAK,IAAO,EACzC,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EACtB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAEtCq3L,WAAar3L,GAAuC,EAAxB6J,KAAK+wJ,IAAI56J,EAAIwxL,IAEzC8F,YAAct3L,GAAc6J,KAAK4H,IAAIzR,EAAIwxL,IAEzC+F,cAAgBv3L,IAAe,IAAO6J,KAAK+wJ,IAAI5lE,GAAKh1F,GAAK,GAEzDw3L,WAAax3L,GAAqB,IAAPA,EAAY,EAAI6J,KAAK0Q,IAAI,EAAG,IAAMva,EAAI,IAEjEy3L,YAAcz3L,GAAqB,IAAPA,EAAY,EAA4B,EAAvB6J,KAAK0Q,IAAI,GAAI,GAAKva,GAE/D03L,cAAgB13L,GAAcq2L,GAAOr2L,GAAKA,EAAIA,EAAI,GAC9C,GAAM6J,KAAK0Q,IAAI,EAAG,IAAU,EAAJva,EAAQ,IAChC,IAAyC,EAAjC6J,KAAK0Q,IAAI,GAAI,IAAU,EAAJva,EAAQ,KAEvC23L,WAAa33L,GAAcA,GAAM,EAAKA,IAAM6J,KAAKsQ,KAAK,EAAIna,EAAIA,GAAK,GAEnE43L,YAAc53L,GAAc6J,KAAKsQ,KAAK,GAAKna,GAAK,GAAKA,GAErD63L,cAAgB73L,IAAgBA,GAAK,IAAO,GACvC,IAAO6J,KAAKsQ,KAAK,EAAIna,EAAIA,GAAK,GAC/B,IAAO6J,KAAKsQ,KAAK,GAAKna,GAAK,GAAKA,GAAK,GAEzC83L,cAAgB93L,GAAcq2L,GAAOr2L,GAAKA,EAAIs2L,GAAUt2L,EAAG,KAAO,IAElE+3L,eAAiB/3L,GAAcq2L,GAAOr2L,GAAKA,EAAIu2L,GAAWv2L,EAAG,KAAO,IAEpEg4L,gBAAAA,CAAiBh4L,GACf,MAAMyT,EAAI,MAEV,OAAO4iL,GAAOr2L,GAAKA,EACjBA,EAAI,GACA,GAAMs2L,GAAc,EAAJt2L,EAAOyT,EAHnB,KAIJ,GAAM,GAAM8iL,GAAe,EAAJv2L,EAAQ,EAAGyT,EAJ9B,IAKZ,EAEAwkL,UAAAA,CAAWj4L,GACT,MAAMyT,EAAI,QACV,OAAOzT,EAAIA,IAAMyT,EAAI,GAAKzT,EAAIyT,EAChC,EAEAykL,WAAAA,CAAYl4L,GACV,MAAMyT,EAAI,QACV,OAAQzT,GAAK,GAAKA,IAAMyT,EAAI,GAAKzT,EAAIyT,GAAK,CAC5C,EAEA0kL,aAAAA,CAAcn4L,GACZ,IAAIyT,EAAI,QACR,OAAKzT,GAAK,IAAO,EACDA,EAAIA,IAAuB,GAAhByT,GAAM,QAAezT,EAAIyT,GAA3C,GAEF,KAAQzT,GAAK,GAAKA,IAAuB,GAAhByT,GAAM,QAAezT,EAAIyT,GAAK,EAChE,EAEA2kL,aAAep4L,GAAc,EAAIu9D,GAAQ86H,cAAc,EAAIr4L,GAE3Dq4L,aAAAA,CAAcr4L,GACZ,MAAMq/C,EAAI,OACJ7/C,EAAI,KACV,OAAIQ,EAAK,EAAIR,EACJ6/C,EAAIr/C,EAAIA,EAEbA,EAAK,EAAIR,EACJ6/C,GAAKr/C,GAAM,IAAMR,GAAMQ,EAAI,IAEhCA,EAAK,IAAMR,EACN6/C,GAAKr/C,GAAM,KAAOR,GAAMQ,EAAI,MAE9Bq/C,GAAKr/C,GAAM,MAAQR,GAAMQ,EAAI,OACtC,EAEAs4L,gBAAkBt4L,GAAeA,EAAI,GACH,GAA9Bu9D,GAAQ66H,aAAiB,EAAJp4L,GACc,GAAnCu9D,GAAQ86H,cAAkB,EAAJr4L,EAAQ,GAAW,ICpHxC,SAASu4L,GAAoBr9L,GAClC,GAAIA,GAA0B,kBAAVA,EAAoB,CACtC,MAAMq4B,EAAOr4B,EAAMqN,WACnB,MAAgB,2BAATgrB,GAA8C,4BAATA,EAG9C,OAAO,CACT,CAWO,SAAS86B,GAAMnzD,GACpB,OAAOq9L,GAAoBr9L,GAASA,EAAQ,IAAIyyL,GAAMzyL,EACxD,CAKO,SAASs9L,GAAct9L,GAC5B,OAAOq9L,GAAoBr9L,GACvBA,EACA,IAAIyyL,GAAMzyL,GAAO+zL,SAAS,IAAKD,OAAO,IAAK/L,WACjD,CC/BA,MAAM3rF,GAAU,CAAC,IAAK,IAAK,cAAe,SAAU,WAC9CmhG,GAAS,CAAC,QAAS,cAAe,mBCAxC,MAAMC,GAAY,IAAI5pK,IAaf,SAAS6pK,GAAa3pJ,EAAagd,EAAgBjvD,GACxD,OAZF,SAAyBivD,EAAgBjvD,GACvCA,EAAUA,GAAW,CAAC,EACtB,MAAMs+F,EAAWrvC,EAASn9B,KAAKpmB,UAAU1L,GACzC,IAAIyL,EAAYkwL,GAAU18L,IAAIq/F,GAK9B,OAJK7yF,IACHA,EAAY,IAAIgvJ,KAAKohC,aAAa5sI,EAAQjvD,GAC1C27L,GAAUr/J,IAAIgiE,EAAU7yF,IAEnBA,CACT,CAGSqwL,CAAgB7sI,EAAQjvD,GAAS4L,OAAOqmC,EACjD,CCRA,MAAM8pJ,GAAa,CAOjBr9J,OAAOvgC,GACEmqB,GAAQnqB,GAAkCA,EAAS,GAAKA,EAWjEmrH,OAAAA,CAAQ0yE,EAAWh7L,EAAOi7L,GACxB,GAAkB,IAAdD,EACF,MAAO,IAGT,MAAM/sI,EAAStvD,KAAKqgI,MAAMhgI,QAAQivD,OAClC,IAAIitI,EACApuE,EAAQkuE,EAEZ,GAAIC,EAAMh+L,OAAS,EAAG,CAEpB,MAAMk+L,EAAUrvL,KAAK0D,IAAI1D,KAAK2H,IAAIwnL,EAAM,GAAG99L,OAAQ2O,KAAK2H,IAAIwnL,EAAMA,EAAMh+L,OAAS,GAAGE,SAChFg+L,EAAU,MAAQA,EAAU,QAC9BD,EAAW,cAGbpuE,EAyCN,SAAwBkuE,EAAWC,GAGjC,IAAInuE,EAAQmuE,EAAMh+L,OAAS,EAAIg+L,EAAM,GAAG99L,MAAQ89L,EAAM,GAAG99L,MAAQ89L,EAAM,GAAG99L,MAAQ89L,EAAM,GAAG99L,MAGvF2O,KAAK2H,IAAIq5G,IAAU,GAAKkuE,IAAclvL,KAAKwJ,MAAM0lL,KAEnDluE,EAAQkuE,EAAYlvL,KAAKwJ,MAAM0lL,IAEjC,OAAOluE,CACT,CApDcsuE,CAAeJ,EAAWC,GAGpC,MAAMI,EAAWzH,GAAM9nL,KAAK2H,IAAIq5G,IAO1BwuE,EAAazqK,MAAMwqK,GAAY,EAAIvvL,KAAK0D,IAAI1D,KAAK4D,KAAK,EAAI5D,KAAKwJ,MAAM+lL,GAAW,IAAK,GAErFr8L,EAAU,CAACk8L,WAAUK,sBAAuBD,EAAYE,sBAAuBF,GAGrF,OAFAhhM,OAAO49C,OAAOl5C,EAASL,KAAKK,QAAQi8L,MAAMrwL,QAEnCgwL,GAAaI,EAAW/sI,EAAQjvD,EACzC,EAWAy8L,WAAAA,CAAYT,EAAWh7L,EAAOi7L,GAC5B,GAAkB,IAAdD,EACF,MAAO,IAET,MAAMU,EAAST,EAAMj7L,GAAO27L,aAAgBX,EAAalvL,KAAK0Q,IAAI,GAAI1Q,KAAKwJ,MAAMs+K,GAAMoH,KACvF,MAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAItiJ,SAASgjJ,IAAW17L,EAAQ,GAAMi7L,EAAMh+L,OACxD89L,GAAWzyE,QAAQ3rH,KAAKgC,KAAMq8L,EAAWh7L,EAAOi7L,GAElD,EACT,GAsBF,IAAAW,GAAe,CAACb,qBC/FHluL,GAAYvS,OAAOyM,OAAO,MAC1B0+H,GAAcnrI,OAAOyM,OAAO,MAOzC,SAAS80L,GAASxxK,EAAMnrB,GACtB,IAAKA,EACH,OAAOmrB,EAET,MAAM1C,EAAOzoB,EAAIi3C,MAAM,KACvB,IAAK,IAAIz0C,EAAI,EAAGiU,EAAIgS,EAAK1qB,OAAQyE,EAAIiU,IAAKjU,EAAG,CAC3C,MAAMgkC,EAAI/d,EAAKjmB,GACf2oB,EAAOA,EAAKqb,KAAOrb,EAAKqb,GAAKprC,OAAOyM,OAAO,MAC7C,CACA,OAAOsjB,CACT,CAEA,SAASiR,GAAIh7B,EAAMw7L,EAAOp+J,GACxB,MAAqB,kBAAVo+J,EACFr1D,GAAMo1D,GAASv7L,EAAMw7L,GAAQp+J,GAE/B+oG,GAAMo1D,GAASv7L,EAAM,IAAKw7L,EACnC,CAMO,MAAMC,GACXrvK,WAAAA,CAAYsvK,EAAcC,GACxBt9L,KAAKg3D,eAAYh4D,EACjBgB,KAAKu2H,gBAAkB,kBACvBv2H,KAAKu9L,YAAc,kBACnBv9L,KAAK2xD,MAAQ,OACb3xD,KAAKw9L,SAAW,CAAC,EACjBx9L,KAAKk4F,iBAAoB9nD,GAAYA,EAAQiwF,MAAMxE,SAAS4hE,sBAC5Dz9L,KAAKiuJ,SAAW,CAAC,EACjBjuJ,KAAKC,OAAS,CACZ,YACA,WACA,QACA,aACA,aAEFD,KAAK+uJ,KAAO,CACV2uC,OAAQ,qDACRjhK,KAAM,GACN6jB,MAAO,SACPnB,WAAY,IACZsyI,OAAQ,MAEVzxL,KAAK29L,MAAQ,CAAC,EACd39L,KAAK49L,qBAAuB,CAAC53L,EAAK3F,IAAYy7L,GAAcz7L,EAAQk2H,iBACpEv2H,KAAK69L,iBAAmB,CAAC73L,EAAK3F,IAAYy7L,GAAcz7L,EAAQk9L,aAChEv9L,KAAK89L,WAAa,CAAC93L,EAAK3F,IAAYy7L,GAAcz7L,EAAQsxD,OAC1D3xD,KAAK+9L,UAAY,IACjB/9L,KAAKg+L,YAAc,CACjBp0L,KAAM,UACNq0L,WAAW,EACXC,kBAAkB,GAEpBl+L,KAAKm+L,qBAAsB,EAC3Bn+L,KAAKo+L,QAAU,KACfp+L,KAAK4tE,QAAU,KACf5tE,KAAKq+L,SAAU,EACfr+L,KAAKq8J,QAAU,CAAC,EAChBr8J,KAAKssG,YAAa,EAClBtsG,KAAKi4F,WAAQj5F,EACbgB,KAAKs+L,OAAS,CAAC,EACft+L,KAAKu+L,UAAW,EAChBv+L,KAAKw+L,yBAA0B,EAE/Bx+L,KAAKy+L,SAASpB,GACdr9L,KAAKvB,MAAM6+L,EACb,CAMA3gK,GAAAA,CAAIwgK,EAAOp+J,GACT,OAAOpC,GAAI38B,KAAMm9L,EAAOp+J,EAC1B,CAKAz/B,GAAAA,CAAI69L,GACF,OAAOD,GAASl9L,KAAMm9L,EACxB,CAMAsB,QAAAA,CAAStB,EAAOp+J,GACd,OAAOpC,GAAImqG,GAAaq2D,EAAOp+J,EACjC,CAEA2/J,QAAAA,CAASvB,EAAOp+J,GACd,OAAOpC,GAAIzuB,GAAWivL,EAAOp+J,EAC/B,CAmBAmxF,KAAAA,CAAMitE,EAAO5/L,EAAMohM,EAAaC,GAC9B,MAAMC,EAAc3B,GAASl9L,KAAMm9L,GAC7B2B,EAAoB5B,GAASl9L,KAAM2+L,GACnCI,EAAc,IAAMxhM,EAE1B5B,OAAO0vB,iBAAiBwzK,EAAa,CAEnC,CAACE,GAAc,CACbvgM,MAAOqgM,EAAYthM,GACnBwtB,UAAU,GAGZ,CAACxtB,GAAO,CACNutB,YAAY,EACZxrB,GAAAA,GACE,MAAM0/L,EAAQh/L,KAAK++L,GACbh/L,EAAS++L,EAAkBF,GACjC,OAAIzmK,GAAS6mK,GACJrjM,OAAO49C,OAAO,CAAC,EAAGx5C,EAAQi/L,GAE5BlM,GAAekM,EAAOj/L,EAC/B,EACA48B,GAAAA,CAAIn+B,GACFwB,KAAK++L,GAAevgM,CACtB,IAGN,CAEAC,KAAAA,CAAMwgM,GACJA,EAASn+L,SAASrC,GAAUA,EAAMuB,OACpC,EAIF,IAAA0tI,GAA+B,IAAI0vD,GAAS,CAC1C8B,YAAc3hM,IAAUA,EAAK8yH,WAAW,MACxC8uE,WAAa5hM,GAAkB,WAATA,EACtBogM,MAAO,CACLyB,UAAW,eAEbpB,YAAa,CACXkB,aAAa,EACbC,YAAY,IAEb,CH3KI,SAAiCzxD,GACtCA,EAAS/wG,IAAI,YAAa,CACxBg+C,WAAO37E,EACPy7E,SAAU,IACVkxB,OAAQ,eACRvgF,QAAIpsB,EACJskF,UAAMtkF,EACNynF,UAAMznF,EACNqkF,QAAIrkF,EACJ63B,UAAM73B,IAGR0uI,EAAS+wD,SAAS,YAAa,CAC7BW,WAAW,EACXD,YAAY,EACZD,YAAc3hM,GAAkB,eAATA,GAAkC,eAATA,GAAkC,OAATA,IAG3EmwI,EAAS/wG,IAAI,aAAc,CACzBo/J,OAAQ,CACNllK,KAAM,QACNvoB,WAAYytL,IAEdnhG,QAAS,CACP/jE,KAAM,SACNvoB,WAAYssF,MAIhB8yC,EAAS+wD,SAAS,aAAc,CAC9BW,UAAW,cAGb1xD,EAAS/wG,IAAI,cAAe,CAC1B4lG,OAAQ,CACNvrE,UAAW,CACTyjB,SAAU,MAGd4kH,OAAQ,CACNroI,UAAW,CACTyjB,SAAU,IAGd4zE,KAAM,CACJixC,WAAY,CACVvD,OAAQ,CACNz4G,KAAM,eAERm+C,QAAS,CACP5qG,KAAM,UACN4jD,SAAU,KAIhB8kH,KAAM,CACJD,WAAY,CACVvD,OAAQ,CACN14G,GAAI,eAENo+C,QAAS,CACP5qG,KAAM,UACN80E,OAAQ,SACRvgF,GAAI+lB,GAAS,EAAJA,MAKnB,EIvEO,SAA8Bu8F,GACnCA,EAAS/wG,IAAI,SAAU,CACrB6iK,aAAa,EACbx0L,QAAS,CACP8qD,IAAK,EACLvvD,MAAO,EACP84E,OAAQ,EACR/4E,KAAM,IAGZ,ECRO,SAA4BonI,GACjCA,EAAS/wG,IAAI,QAAS,CACpBuzC,SAAS,EACTvrE,QAAQ,EACRi1G,SAAS,EACT6lF,aAAa,EASbC,OAAQ,QAERC,MAAM,EAMNC,MAAO,EAGPv8F,KAAM,CACJnzB,SAAS,EACTukB,UAAW,EACXorG,iBAAiB,EACjBC,WAAW,EACXC,WAAY,EACZC,UAAWA,CAACC,EAAM5/L,IAAYA,EAAQo0F,UACtCyrG,UAAWA,CAACD,EAAM5/L,IAAYA,EAAQsxD,MACtChtD,QAAQ,GAGVw7L,OAAQ,CACNjwH,SAAS,EACTkwH,KAAM,GACNC,WAAY,EACZrsJ,MAAO,GAITrF,MAAO,CAELuhC,SAAS,EAGT94C,KAAM,GAGNpsB,QAAS,CACP8qD,IAAK,EACLupB,OAAQ,IAKZi9G,MAAO,CACLgE,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRC,gBAAiB,EACjBC,gBAAiB,GACjB11L,QAAS,EACTklE,SAAS,EACTywH,UAAU,EACVC,gBAAiB,EACjBC,YAAa,EAEb3/H,SAAU+7H,GAAMb,WAAWr9J,OAC3B+hK,MAAO,CAAC,EACRC,MAAO,CAAC,EACR5I,MAAO,SACP6I,WAAY,OAEZC,mBAAmB,EACnBC,cAAe,4BACfC,gBAAiB,KAIrBzzD,EAASxd,MAAM,cAAe,QAAS,GAAI,SAC3Cwd,EAASxd,MAAM,aAAc,QAAS,GAAI,eAC1Cwd,EAASxd,MAAM,eAAgB,QAAS,GAAI,eAC5Cwd,EAASxd,MAAM,cAAe,QAAS,GAAI,SAE3Cwd,EAAS+wD,SAAS,QAAS,CACzBW,WAAW,EACXF,YAAc3hM,IAAUA,EAAK8yH,WAAW,YAAc9yH,EAAK8yH,WAAW,UAAqB,aAAT9yH,GAAgC,WAATA,EACzG4hM,WAAa5hM,GAAkB,eAATA,GAAkC,mBAATA,GAAsC,SAATA,IAG9EmwI,EAAS+wD,SAAS,SAAU,CAC1BW,UAAW,UAGb1xD,EAAS+wD,SAAS,cAAe,CAC/BS,YAAc3hM,GAAkB,oBAATA,GAAuC,aAATA,EACrD4hM,WAAa5hM,GAAkB,oBAATA,GAE1B,IClEO,SAAS6jM,GACdp7L,EACA2E,EACAo6C,EACAs8I,EACAltK,GAEA,IAAImtK,EAAY32L,EAAKwpB,GAQrB,OAPKmtK,IACHA,EAAY32L,EAAKwpB,GAAUnuB,EAAIu7L,YAAYptK,GAAQ6f,MACnD+Q,EAAG5jD,KAAKgzB,IAENmtK,EAAYD,IACdA,EAAUC,GAELD,CACT,CASO,SAASG,GACdx7L,EACA+oJ,EACA0yC,EACAltH,GAGA,IAAI5pE,GADJ4pE,EAAQA,GAAS,CAAC,GACD5pE,KAAO4pE,EAAM5pE,MAAQ,CAAC,EACnCo6C,EAAKwvB,EAAMmtH,eAAiBntH,EAAMmtH,gBAAkB,GAEpDntH,EAAMw6E,OAASA,IACjBpkJ,EAAO4pE,EAAM5pE,KAAO,CAAC,EACrBo6C,EAAKwvB,EAAMmtH,eAAiB,GAC5BntH,EAAMw6E,KAAOA,GAGf/oJ,EAAI4yF,OAEJ5yF,EAAI+oJ,KAAOA,EACX,IAAIsyC,EAAU,EACd,MAAMhO,EAAOoO,EAAcnjM,OAC3B,IAAIyE,EAAWqE,EAAWu6L,EAAcr8D,EAAwBs8D,EAChE,IAAK7+L,EAAI,EAAGA,EAAIswL,EAAMtwL,IAIpB,GAHAuiI,EAAQm8D,EAAc1+L,QAGR/D,IAAVsmI,GAAiC,OAAVA,GAAmB38G,GAAQ28G,IAE/C,GAAI38G,GAAQ28G,GAGjB,IAAKl+H,EAAI,EAAGu6L,EAAOr8D,EAAMhnI,OAAQ8I,EAAIu6L,EAAMv6L,IACzCw6L,EAAct8D,EAAMl+H,QAEApI,IAAhB4iM,GAA6C,OAAhBA,GAAyBj5K,GAAQi5K,KAChEP,EAAUD,GAAap7L,EAAK2E,EAAMo6C,EAAIs8I,EAASO,SARnDP,EAAUD,GAAap7L,EAAK2E,EAAMo6C,EAAIs8I,EAAS/7D,GAcnDt/H,EAAIszF,UAEJ,MAAMuoG,EAAQ98I,EAAGzmD,OAAS,EAC1B,GAAIujM,EAAQJ,EAAcnjM,OAAQ,CAChC,IAAKyE,EAAI,EAAGA,EAAI8+L,EAAO9+L,WACd4H,EAAKo6C,EAAGhiD,IAEjBgiD,EAAGxjD,OAAO,EAAGsgM,GAEf,OAAOR,CACT,CAUO,SAASS,GAAYzhE,EAAc/rF,EAAeN,GACvD,MAAMkkD,EAAmBmoC,EAAM0hE,wBACzBC,EAAsB,IAAVhuJ,EAAc7mC,KAAK0D,IAAImjC,EAAQ,EAAG,IAAO,EAC3D,OAAO7mC,KAAKhI,OAAOmvC,EAAQ0tJ,GAAa9pG,GAAoBA,EAAmB8pG,CACjF,CAKO,SAASC,GAAYnqG,EAA4B9xF,IACjDA,GAAQ8xF,MAIb9xF,EAAMA,GAAO8xF,EAAOC,WAAW,OAE3Ba,OAGJ5yF,EAAIk8L,iBACJl8L,EAAIm8L,UAAU,EAAG,EAAGrqG,EAAO9jD,MAAO8jD,EAAO7jD,QACzCjuC,EAAIszF,UACN,CASO,SAAS8oG,GACdp8L,EACA3F,EACA2C,EACAoD,GAGAi8L,GAAgBr8L,EAAK3F,EAAS2C,EAAGoD,EAAG,KACtC,CAGO,SAASi8L,GACdr8L,EACA3F,EACA2C,EACAoD,EACAkyD,GAEA,IAAIzhC,EAAcyrK,EAAiBC,EAAiB9lK,EAAc+lK,EAAsBxuJ,EAAeyuJ,EAAkBC,EACzH,MAAMpiJ,EAAQjgD,EAAQsiM,WAChBC,EAAWviM,EAAQuiM,SACnBxqG,EAAS/3F,EAAQ+3F,OACvB,IAAIyqG,GAAOD,GAAY,GAAK/N,GAE5B,GAAIv0I,GAA0B,kBAAVA,IAClBzpB,EAAOypB,EAAMz0C,WACA,8BAATgrB,GAAiD,+BAATA,GAM1C,OALA7wB,EAAI4yF,OACJ5yF,EAAI88L,UAAU9/L,EAAGoD,GACjBJ,EAAIysL,OAAOoQ,GACX78L,EAAIqzF,UAAU/4C,GAAQA,EAAMtM,MAAQ,GAAIsM,EAAMrM,OAAS,EAAGqM,EAAMtM,MAAOsM,EAAMrM,aAC7EjuC,EAAIszF,UAKR,KAAIpnE,MAAMkmE,IAAWA,GAAU,GAA/B,CAMA,OAFApyF,EAAIivF,YAEI30C,GAEN,QACMgY,EACFtyD,EAAImzF,QAAQn2F,EAAGoD,EAAGkyD,EAAI,EAAG8/B,EAAQ,EAAG,EAAGq8F,IAEvCzuL,EAAIqyF,IAAIr1F,EAAGoD,EAAGgyF,EAAQ,EAAGq8F,IAE3BzuL,EAAIqvF,YACJ,MACF,IAAK,WACHrhD,EAAQskB,EAAIA,EAAI,EAAI8/B,EACpBpyF,EAAIkvF,OAAOlyF,EAAImK,KAAK4H,IAAI8tL,GAAO7uJ,EAAO5tC,EAAI+G,KAAK+wJ,IAAI2kC,GAAOzqG,GAC1DyqG,GAAO7N,GACPhvL,EAAImvF,OAAOnyF,EAAImK,KAAK4H,IAAI8tL,GAAO7uJ,EAAO5tC,EAAI+G,KAAK+wJ,IAAI2kC,GAAOzqG,GAC1DyqG,GAAO7N,GACPhvL,EAAImvF,OAAOnyF,EAAImK,KAAK4H,IAAI8tL,GAAO7uJ,EAAO5tC,EAAI+G,KAAK+wJ,IAAI2kC,GAAOzqG,GAC1DpyF,EAAIqvF,YACJ,MACF,IAAK,cAQHmtG,EAAwB,KAATpqG,EACf37D,EAAO27D,EAASoqG,EAChBF,EAAUn1L,KAAK+wJ,IAAI2kC,EAAM9N,IAAct4J,EACvCgmK,EAAWt1L,KAAK+wJ,IAAI2kC,EAAM9N,KAAez8H,EAAIA,EAAI,EAAIkqI,EAAe/lK,GACpE8lK,EAAUp1L,KAAK4H,IAAI8tL,EAAM9N,IAAct4J,EACvCimK,EAAWv1L,KAAK4H,IAAI8tL,EAAM9N,KAAez8H,EAAIA,EAAI,EAAIkqI,EAAe/lK,GACpEz2B,EAAIqyF,IAAIr1F,EAAIy/L,EAAUr8L,EAAIm8L,EAASC,EAAcK,EAAMvqG,GAAIuqG,EAAM/N,IACjE9uL,EAAIqyF,IAAIr1F,EAAI0/L,EAAUt8L,EAAIk8L,EAASE,EAAcK,EAAM/N,GAAS+N,GAChE78L,EAAIqyF,IAAIr1F,EAAIy/L,EAAUr8L,EAAIm8L,EAASC,EAAcK,EAAKA,EAAM/N,IAC5D9uL,EAAIqyF,IAAIr1F,EAAI0/L,EAAUt8L,EAAIk8L,EAASE,EAAcK,EAAM/N,GAAS+N,EAAMvqG,IACtEtyF,EAAIqvF,YACJ,MACF,IAAK,OACH,IAAKutG,EAAU,CACbnmK,EAAOtvB,KAAK41L,QAAU3qG,EACtBpkD,EAAQskB,EAAIA,EAAI,EAAI77B,EACpBz2B,EAAI8oC,KAAK9rC,EAAIgxC,EAAO5tC,EAAIq2B,EAAM,EAAIuX,EAAO,EAAIvX,GAC7C,MAEFomK,GAAO9N,GAET,IAAK,UACH0N,EAAWt1L,KAAK+wJ,IAAI2kC,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCkqG,EAAUn1L,KAAK+wJ,IAAI2kC,GAAOzqG,EAC1BmqG,EAAUp1L,KAAK4H,IAAI8tL,GAAOzqG,EAC1BsqG,EAAWv1L,KAAK4H,IAAI8tL,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCpyF,EAAIkvF,OAAOlyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAImvF,OAAOnyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7Bt8L,EAAImvF,OAAOnyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAImvF,OAAOnyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7Bt8L,EAAIqvF,YACJ,MACF,IAAK,WACHwtG,GAAO9N,GAET,IAAK,QACH0N,EAAWt1L,KAAK+wJ,IAAI2kC,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCkqG,EAAUn1L,KAAK+wJ,IAAI2kC,GAAOzqG,EAC1BmqG,EAAUp1L,KAAK4H,IAAI8tL,GAAOzqG,EAC1BsqG,EAAWv1L,KAAK4H,IAAI8tL,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCpyF,EAAIkvF,OAAOlyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAImvF,OAAOnyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAIkvF,OAAOlyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7Bt8L,EAAImvF,OAAOnyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7B,MACF,IAAK,OACHG,EAAWt1L,KAAK+wJ,IAAI2kC,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCkqG,EAAUn1L,KAAK+wJ,IAAI2kC,GAAOzqG,EAC1BmqG,EAAUp1L,KAAK4H,IAAI8tL,GAAOzqG,EAC1BsqG,EAAWv1L,KAAK4H,IAAI8tL,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCpyF,EAAIkvF,OAAOlyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAImvF,OAAOnyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAIkvF,OAAOlyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7Bt8L,EAAImvF,OAAOnyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7BO,GAAO9N,GACP0N,EAAWt1L,KAAK+wJ,IAAI2kC,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCkqG,EAAUn1L,KAAK+wJ,IAAI2kC,GAAOzqG,EAC1BmqG,EAAUp1L,KAAK4H,IAAI8tL,GAAOzqG,EAC1BsqG,EAAWv1L,KAAK4H,IAAI8tL,IAAQvqI,EAAIA,EAAI,EAAI8/B,GACxCpyF,EAAIkvF,OAAOlyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAImvF,OAAOnyF,EAAIy/L,EAAUr8L,EAAIm8L,GAC7Bv8L,EAAIkvF,OAAOlyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7Bt8L,EAAImvF,OAAOnyF,EAAI0/L,EAAUt8L,EAAIk8L,GAC7B,MACF,IAAK,OACHA,EAAUhqI,EAAIA,EAAI,EAAInrD,KAAK+wJ,IAAI2kC,GAAOzqG,EACtCmqG,EAAUp1L,KAAK4H,IAAI8tL,GAAOzqG,EAC1BpyF,EAAIkvF,OAAOlyF,EAAIs/L,EAASl8L,EAAIm8L,GAC5Bv8L,EAAImvF,OAAOnyF,EAAIs/L,EAASl8L,EAAIm8L,GAC5B,MACF,IAAK,OACHv8L,EAAIkvF,OAAOlyF,EAAGoD,GACdJ,EAAImvF,OAAOnyF,EAAImK,KAAK+wJ,IAAI2kC,IAAQvqI,EAAIA,EAAI,EAAI8/B,GAAShyF,EAAI+G,KAAK4H,IAAI8tL,GAAOzqG,GACzE,MACF,KAAK,EACHpyF,EAAIqvF,YAIRrvF,EAAI2uF,OACAt0F,EAAQ2iM,YAAc,GACxBh9L,EAAIsvF,SAER,CASO,SAAS2tG,GACdC,EACAxiJ,EACAnS,GAIA,OAFAA,EAASA,GAAU,IAEXmS,GAASwiJ,GAASA,EAAMlgM,EAAI09C,EAAKp6C,KAAOioC,GAAU20J,EAAMlgM,EAAI09C,EAAKn6C,MAAQgoC,GACjF20J,EAAM98L,EAAIs6C,EAAKoV,IAAMvnB,GAAU20J,EAAM98L,EAAIs6C,EAAK2+B,OAAS9wC,CACzD,CAEO,SAAS40J,GAASn9L,EAA+B06C,GACtD16C,EAAI4yF,OACJ5yF,EAAIivF,YACJjvF,EAAI8oC,KAAK4R,EAAKp6C,KAAMo6C,EAAKoV,IAAKpV,EAAKn6C,MAAQm6C,EAAKp6C,KAAMo6C,EAAK2+B,OAAS3+B,EAAKoV,KACzE9vD,EAAI25L,MACN,CAEO,SAASyD,GAAWp9L,GACzBA,EAAIszF,SACN,CAKO,SAAS+pG,GACdr9L,EACAs9L,EACAvjM,EACAwjM,EACA35L,GAEA,IAAK05L,EACH,OAAOt9L,EAAImvF,OAAOp1F,EAAOiD,EAAGjD,EAAOqG,GAErC,GAAa,WAATwD,EAAmB,CACrB,MAAM45L,GAAYF,EAAStgM,EAAIjD,EAAOiD,GAAK,EAC3CgD,EAAImvF,OAAOquG,EAAUF,EAASl9L,GAC9BJ,EAAImvF,OAAOquG,EAAUzjM,EAAOqG,EAC9B,KAAoB,UAATwD,MAAuB25L,EAChCv9L,EAAImvF,OAAOmuG,EAAStgM,EAAGjD,EAAOqG,GAE9BJ,EAAImvF,OAAOp1F,EAAOiD,EAAGsgM,EAASl9L,GAEhCJ,EAAImvF,OAAOp1F,EAAOiD,EAAGjD,EAAOqG,EAC9B,CAKO,SAASq9L,GACdz9L,EACAs9L,EACAvjM,EACAwjM,GAEA,IAAKD,EACH,OAAOt9L,EAAImvF,OAAOp1F,EAAOiD,EAAGjD,EAAOqG,GAErCJ,EAAI09L,cACFH,EAAOD,EAASK,KAAOL,EAASM,KAChCL,EAAOD,EAASO,KAAOP,EAASQ,KAChCP,EAAOxjM,EAAO6jM,KAAO7jM,EAAO4jM,KAC5BJ,EAAOxjM,EAAO+jM,KAAO/jM,EAAO8jM,KAC5B9jM,EAAOiD,EACPjD,EAAOqG,EACX,CAwBA,SAAS29L,GACP/9L,EACAhD,EACAoD,EACA8pC,EACA7wC,GAEA,GAAIA,EAAK2kM,eAAiB3kM,EAAK4kM,UAAW,CAQxC,MAAMC,EAAUl+L,EAAIu7L,YAAYrxJ,GAC1B5pC,EAAOtD,EAAIkhM,EAAQC,sBACnB59L,EAAQvD,EAAIkhM,EAAQE,uBACpBtuI,EAAM1vD,EAAI89L,EAAQG,wBAClBhlH,EAASj5E,EAAI89L,EAAQI,yBACrBC,EAAcllM,EAAK2kM,eAAiBluI,EAAMupB,GAAU,EAAIA,EAE9Dr5E,EAAI4uF,YAAc5uF,EAAIqqC,UACtBrqC,EAAIivF,YACJjvF,EAAIyuF,UAAYp1F,EAAKmlM,iBAAmB,EACxCx+L,EAAIkvF,OAAO5uF,EAAMi+L,GACjBv+L,EAAImvF,OAAO5uF,EAAOg+L,GAClBv+L,EAAIsvF,SAER,CAEA,SAASmvG,GAAaz+L,EAA+B3G,GACnD,MAAMqlM,EAAW1+L,EAAIqqC,UAErBrqC,EAAIqqC,UAAYhxC,EAAKsyD,MACrB3rD,EAAIsqC,SAASjxC,EAAKiH,KAAMjH,EAAKy2D,IAAKz2D,EAAK20C,MAAO30C,EAAK40C,QACnDjuC,EAAIqqC,UAAYq0J,CAClB,CAKO,SAASC,GACd3+L,EACAoxB,EACAp0B,EACAoD,EACA2oJ,GAEA,IADA1vJ,EAAuBhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,MAEvB,MAAMumM,EAAQj8K,GAAQyO,GAAQA,EAAO,CAACA,GAChCk+D,EAASj2F,EAAK6gD,YAAc,GAA0B,KAArB7gD,EAAKwlM,YAC5C,IAAI9hM,EAAWmtC,EAMf,IAJAlqC,EAAI4yF,OACJ5yF,EAAI+oJ,KAAOA,EAAK56H,OA7ElB,SAAuBnuB,EAA+B3G,GAChDA,EAAKylM,aACP9+L,EAAI88L,UAAUzjM,EAAKylM,YAAY,GAAIzlM,EAAKylM,YAAY,IAGjDnS,GAActzL,EAAKujM,WACtB58L,EAAIysL,OAAOpzL,EAAKujM,UAGdvjM,EAAKsyD,QACP3rD,EAAIqqC,UAAYhxC,EAAKsyD,OAGnBtyD,EAAK0lM,YACP/+L,EAAI++L,UAAY1lM,EAAK0lM,WAGnB1lM,EAAKw6J,eACP7zJ,EAAI6zJ,aAAex6J,EAAKw6J,aAE5B,CA0DEmrC,CAAch/L,EAAK3G,GAEd0D,EAAI,EAAGA,EAAI6hM,EAAMtmM,SAAUyE,EAC9BmtC,EAAO00J,EAAM7hM,GAET1D,EAAK4lM,UACPR,GAAaz+L,EAAK3G,EAAK4lM,UAGrB3vG,IACEj2F,EAAKwlM,cACP7+L,EAAI4uF,YAAcv1F,EAAKwlM,aAGpBlS,GAActzL,EAAK6gD,eACtBl6C,EAAIyuF,UAAYp1F,EAAK6gD,aAGvBl6C,EAAIk/L,WAAWh1J,EAAMltC,EAAGoD,EAAG/G,EAAK4lG,WAGlCj/F,EAAI+zJ,SAAS7pH,EAAMltC,EAAGoD,EAAG/G,EAAK4lG,UAC9B8+F,GAAa/9L,EAAKhD,EAAGoD,EAAG8pC,EAAM7wC,GAE9B+G,GAAKisB,OAAO08H,EAAK5vG,YAGnBn5C,EAAIszF,SACN,CAOO,SAAS6rG,GACdn/L,EACA8oC,GAEA,MAAM,EAAC9rC,EAAC,EAAEoD,EAAC,EAAEkyD,EAAC,EAAEt6C,EAAC,OAAEo6E,GAAUtpD,EAG7B9oC,EAAIqyF,IAAIr1F,EAAIo1F,EAAO3Y,QAASr5E,EAAIgyF,EAAO3Y,QAAS2Y,EAAO3Y,QAAS,IAAM6Y,GAAIA,IAAI,GAG9EtyF,EAAImvF,OAAOnyF,EAAGoD,EAAI4X,EAAIo6E,EAAOxY,YAG7B55E,EAAIqyF,IAAIr1F,EAAIo1F,EAAOxY,WAAYx5E,EAAI4X,EAAIo6E,EAAOxY,WAAYwY,EAAOxY,WAAY0Y,GAAIw8F,IAAS,GAG1F9uL,EAAImvF,OAAOnyF,EAAIs1D,EAAI8/B,EAAOvY,YAAaz5E,EAAI4X,GAG3ChY,EAAIqyF,IAAIr1F,EAAIs1D,EAAI8/B,EAAOvY,YAAaz5E,EAAI4X,EAAIo6E,EAAOvY,YAAauY,EAAOvY,YAAai1G,GAAS,GAAG,GAGhG9uL,EAAImvF,OAAOnyF,EAAIs1D,EAAGlyD,EAAIgyF,EAAO1Y,UAG7B15E,EAAIqyF,IAAIr1F,EAAIs1D,EAAI8/B,EAAO1Y,SAAUt5E,EAAIgyF,EAAO1Y,SAAU0Y,EAAO1Y,SAAU,GAAIo1G,IAAS,GAGpF9uL,EAAImvF,OAAOnyF,EAAIo1F,EAAO3Y,QAASr5E,EACjC,CCxgBA,MAAMg/L,GAAc,uCACdC,GAAa,wEAcZ,SAASC,GAAa9mM,EAAwBi+B,GACnD,MAAMvP,GAAW,GAAK1uB,GAAO2vB,MAAMi3K,IACnC,IAAKl4K,GAA0B,WAAfA,EAAQ,GACtB,OAAc,IAAPuP,EAKT,OAFAj+B,GAAS0uB,EAAQ,GAETA,EAAQ,IACd,IAAK,KACH,OAAO1uB,EACT,IAAK,IACHA,GAAS,IAMb,OAAOi+B,EAAOj+B,CAChB,CAEA,MAAM+mM,GAAgBp0J,IAAgBA,GAAK,EAQpC,SAASq0J,GAAkBhnM,EAAwC+sB,GACxE,MAAMy7G,EAAM,CAAC,EACPtlG,EAAWvJ,GAAS5M,GACpBvC,EAAO0Y,EAAW/lC,OAAOqtB,KAAKuC,GAASA,EACvCylB,EAAO7Y,GAAS35B,GAClBkjC,EACEsmE,GAAQ8qF,GAAet0L,EAAMwpG,GAAOxpG,EAAM+sB,EAAMy8E,KAChDA,GAAQxpG,EAAMwpG,GAChB,IAAMxpG,EAEV,IAAK,MAAMwpG,KAAQh/E,EACjBg+G,EAAIh/B,GAAQu9F,GAAav0J,EAAKg3D,IAEhC,OAAOg/B,CACT,CAUO,SAASy+D,GAAOjnM,GACrB,OAAOgnM,GAAkBhnM,EAAO,CAACs3D,IAAK,IAAKvvD,MAAO,IAAK84E,OAAQ,IAAK/4E,KAAM,KAC5E,CASO,SAASo/L,GAAclnM,GAC5B,OAAOgnM,GAAkBhnM,EAAO,CAAC,UAAW,WAAY,aAAc,eACxE,CAUO,SAASmnM,GAAUnnM,GACxB,MAAMwP,EAAMy3L,GAAOjnM,GAKnB,OAHAwP,EAAIgmC,MAAQhmC,EAAI1H,KAAO0H,EAAIzH,MAC3ByH,EAAIimC,OAASjmC,EAAI8nD,IAAM9nD,EAAIqxE,OAEpBrxE,CACT,CAUO,SAAS43L,GAAOvlM,EAA4B8rE,GACjD9rE,EAAUA,GAAW,CAAC,EACtB8rE,EAAWA,GAAYuhE,GAASqhB,KAEhC,IAAItyH,EAAOq2J,GAAezyL,EAAQo8B,KAAM0vC,EAAS1vC,MAE7B,kBAATA,IACTA,EAAOhtB,SAASgtB,EAAM,KAExB,IAAI6jB,EAAQwyI,GAAezyL,EAAQigD,MAAO6rB,EAAS7rB,OAC/CA,KAAW,GAAKA,GAAOnyB,MAAMk3K,MAC/Bj8H,QAAQ0P,KAAK,kCAAoCx4B,EAAQ,KACzDA,OAAQthD,GAGV,MAAM+vJ,EAAO,CACX2uC,OAAQ5K,GAAezyL,EAAQq9L,OAAQvxH,EAASuxH,QAChDv+I,WAAYmmJ,GAAaxS,GAAezyL,EAAQ8+C,WAAYgtB,EAAShtB,YAAa1iB,GAClFA,OACA6jB,QACAmxI,OAAQqB,GAAezyL,EAAQoxL,OAAQtlH,EAASslH,QAChDt9J,OAAQ,IAIV,OADA46H,EAAK56H,ODlHA,SAAsB46H,GAC3B,OAAKA,GAAQ4jC,GAAc5jC,EAAKtyH,OAASk2J,GAAc5jC,EAAK2uC,QACnD,MAGD3uC,EAAKzuG,MAAQyuG,EAAKzuG,MAAQ,IAAM,KACrCyuG,EAAK0iC,OAAS1iC,EAAK0iC,OAAS,IAAM,IACnC1iC,EAAKtyH,KAAO,MACZsyH,EAAK2uC,MACT,CCyGgBmI,CAAa92C,GACpBA,CACT,CAaO,SAAShrH,GAAQ+hK,EAAwB11J,EAAkB/uC,EAAgB0oK,GAChF,IACIhnK,EAAWswL,EAAc70L,EADzBunM,GAAY,EAGhB,IAAKhjM,EAAI,EAAGswL,EAAOyS,EAAOxnM,OAAQyE,EAAIswL,IAAQtwL,EAE5C,GADAvE,EAAQsnM,EAAO/iM,QACD/D,IAAVR,SAGYQ,IAAZoxC,GAA0C,oBAAV5xC,IAClCA,EAAQA,EAAM4xC,GACd21J,GAAY,QAEA/mM,IAAVqC,GAAuBsnB,GAAQnqB,KACjCA,EAAQA,EAAM6C,EAAQ7C,EAAMF,QAC5BynM,GAAY,QAEA/mM,IAAVR,GAIF,OAHIurK,IAASg8B,IACXh8B,EAAKg8B,WAAY,GAEZvnM,CAGb,CA0BO,SAASqkG,GAAcmjG,EAAuB51J,GACnD,OAAOz0C,OAAO49C,OAAO59C,OAAOyM,OAAO49L,GAAgB51J,EACrD,CCnLO,SAAS61J,GAIdC,GAKA,IAJAC,EAAW9nM,UAAAC,OAAA,QAAAU,IAAAX,UAAC,GAADA,UAAC,GAAD,CAAC,IAEZ8tE,EAA4B9tE,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EAC5BonM,EAAA/nM,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAY,IAAM6nM,EAAO,GAEzB,MAAMG,GAJQhoM,UAAAC,OAAA,EAAAD,UAAA,QAAAW,IAIwBknM,EACd,qBAAb/5H,IACTA,EAAWuzE,GAAS,YAAawmD,IAEnC,MAAM3xH,EAA6B,CACjC,CAAClsD,OAAOoV,aAAc,SACtB6oK,YAAY,EACZC,QAASL,EACTM,YAAaH,EACbjH,UAAWjzH,EACXs6H,WAAYL,EACZ1H,SAAWvB,GAAqB8I,GAAgB,CAAC9I,KAAU+I,GAASC,EAAUE,EAAiBl6H,IAEjG,OAAO,IAAI35C,MAAM+hD,EAAO,CAItBmyH,eAAeA,CAAA3mM,EAAQioG,YACdjoG,EAAOioG,UACPjoG,EAAO4mM,aACPT,EAAO,GAAGl+F,IACV,GAMT1oG,IAAIA,CAAAS,EAAQioG,IACH4+F,GAAQ7mM,EAAQioG,GACrB,IAoUR,SACEA,EACAm+F,EACAD,EACA1lF,GAEA,IAAIhiH,EACJ,IAAK,MAAMqoM,KAAUV,EAEnB,GADA3nM,EAAQkhJ,GAASonD,GAAQD,EAAQ7+F,GAAOk+F,GACnB,qBAAV1nM,EACT,OAAOuoM,GAAiB/+F,EAAMxpG,GAC1BwoM,GAAkBd,EAAQ1lF,EAAOxY,EAAMxpG,GACvCA,CAGV,CAnVcyoM,CAAqBj/F,EAAMm+F,EAAUD,EAAQnmM,KAOvDywB,yBAAyBA,CAAAzwB,EAAQioG,IACxBv1E,QAAQjC,yBAAyBzwB,EAAOwmM,QAAQ,GAAIv+F,GAM7Dj3E,eAAiBA,IACR0B,QAAQ1B,eAAem1K,EAAO,IAMvCjjK,IAAIA,CAAAljC,EAAQioG,IACHk/F,GAAqBnnM,GAAQg6C,SAASiuD,GAM/CQ,QAAQzoG,GACCmnM,GAAqBnnM,GAM9B48B,GAAAA,CAAI58B,EAAQioG,EAAcxpG,GACxB,MAAM2oM,EAAUpnM,EAAOqnM,WAAarnM,EAAOqnM,SAAWhB,KAGtD,OAFArmM,EAAOioG,GAAQm/F,EAAQn/F,GAAQxpG,SACxBuB,EAAO4mM,OACP,CACT,GAEJ,CAUO,SAASU,GAId7mF,EACApwE,EACAk3J,EACAC,GAEA,MAAMhzH,EAA4B,CAChC+xH,YAAY,EACZkB,OAAQhnF,EACRrmE,SAAU/J,EACVq3J,UAAWH,EACXI,OAAQ,IAAI/0K,IACZ0qK,aAAcA,GAAa78E,EAAO+mF,GAClCI,WAAa3hM,GAAmBqhM,GAAe7mF,EAAOx6G,EAAKshM,EAAUC,GACrE7I,SAAWvB,GAAqBkK,GAAe7mF,EAAMk+E,SAASvB,GAAQ/sJ,EAASk3J,EAAUC,IAE3F,OAAO,IAAI/0K,MAAM+hD,EAAO,CAItBmyH,eAAeA,CAAA3mM,EAAQioG,YACdjoG,EAAOioG,UACPwY,EAAMxY,IACN,GAMT1oG,IAAG,CAACS,EAAQioG,EAAc4/F,IACjBhB,GAAQ7mM,EAAQioG,GACrB,IAiFR,SACEjoG,EACAioG,EACA4/F,GAEA,MAAM,OAACJ,EAAM,SAAErtJ,EAAQ,UAAEstJ,EAAWpK,aAAcv2D,GAAe/mI,EACjE,IAAIvB,EAAQgpM,EAAOx/F,GAGfr6E,GAAWnvB,IAAUsoI,EAAY+gE,aAAa7/F,KAChDxpG,EAYJ,SACEwpG,EACAvkE,EACA1jC,EACA6nM,GAEA,MAAM,OAACJ,EAAA,SAAQrtJ,EAAA,UAAUstJ,EAAS,OAAEC,GAAU3nM,EAC9C,GAAI2nM,EAAOzkK,IAAI+kE,GACb,MAAM,IAAIj6F,MAAM,uBAAyB2a,MAAM46D,KAAKokH,GAAQp4L,KAAK,MAAQ,KAAO04F,GAElF0/F,EAAO1mM,IAAIgnG,GACX,IAAIxpG,EAAQilC,EAAS0W,EAAUstJ,GAAaG,GAC5CF,EAAO3/I,OAAOigD,GACV++F,GAAiB/+F,EAAMxpG,KAEzBA,EAAQwoM,GAAkBQ,EAAOjB,QAASiB,EAAQx/F,EAAMxpG,IAE1D,OAAOA,CACT,CA9BYspM,CAAmB9/F,EAAMxpG,EAAOuB,EAAQ6nM,IAE9Cj/K,GAAQnqB,IAAUA,EAAMF,SAC1BE,EA6BJ,SACEwpG,EACAxpG,EACAuB,EACAgoM,GAEA,MAAM,OAACP,EAAM,SAAErtJ,EAAQ,UAAEstJ,EAAWpK,aAAcv2D,GAAe/mI,EAEjE,GAA8B,qBAAnBo6C,EAAS94C,OAAyB0mM,EAAY//F,GACvD,OAAOxpG,EAAM27C,EAAS94C,MAAQ7C,EAAMF,QAC/B,GAAI65B,GAAS35B,EAAM,IAAK,CAE7B,MAAMywB,EAAMzwB,EACN0nM,EAASsB,EAAOjB,QAAQr9K,QAAOnS,GAAKA,IAAMkY,IAChDzwB,EAAQ,GACR,IAAK,MAAMmuF,KAAQ19D,EAAK,CACtB,MAAMklK,EAAW6S,GAAkBd,EAAQsB,EAAQx/F,EAAMrb,GACzDnuF,EAAM2C,KAAKkmM,GAAelT,EAAUh6I,EAAUstJ,GAAaA,EAAUz/F,GAAO8+B,GAC9E,EAEF,OAAOtoI,CACT,CAlDYwpM,CAAchgG,EAAMxpG,EAAOuB,EAAQ+mI,EAAYihE,cAErDhB,GAAiB/+F,EAAMxpG,KAEzBA,EAAQ6oM,GAAe7oM,EAAO27C,EAAUstJ,GAAaA,EAAUz/F,GAAO8+B,IAExE,OAAOtoI,CACT,CArGcypM,CAAoBloM,EAAQioG,EAAM4/F,KAO5Cp3K,yBAAyBA,CAAAzwB,EAAQioG,IACxBjoG,EAAOs9L,aAAa/+F,QACvB7rE,QAAQwQ,IAAIu9E,EAAOxY,GAAQ,CAACl9E,YAAY,EAAMD,cAAc,QAAQ7rB,EACpEyzB,QAAQjC,yBAAyBgwF,EAAOxY,GAM9Cj3E,eAAiBA,IACR0B,QAAQ1B,eAAeyvF,GAMhCv9E,IAAIA,CAAAljC,EAAQioG,IACHv1E,QAAQwQ,IAAIu9E,EAAOxY,GAM5BQ,QAAUA,IACD/1E,QAAQ+1E,QAAQgY,GAMzB7jF,IAAG,CAAC58B,EAAQioG,EAAMxpG,KAChBgiH,EAAMxY,GAAQxpG,SACPuB,EAAOioG,IACP,IAGb,CAKO,SAASq1F,GACd78E,GAEY,IADZktB,EAA+BrvI,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,IAAC6pM,YAAY,EAAMC,WAAW,GAE7D,MAAM,YAACjJ,EAAcxxD,EAASw6D,WAAU,WAAE/I,EAAazxD,EAASy6D,UAAS,SAAEC,EAAW16D,EAASpvC,SAAWkiB,EAC1G,MAAO,CACLliB,QAAS8pG,EACTF,WAAYhJ,EACZiJ,UAAWhJ,EACX0I,aAAcl6K,GAAWuxK,GAAeA,EAAc,IAAMA,EAC5D6I,YAAap6K,GAAWwxK,GAAcA,EAAa,IAAMA,EAE7D,CAEA,MAAM2H,GAAUA,CAACD,EAAgBtpM,IAAiBspM,EAASA,EAASvS,GAAY/2L,GAAQA,EAClFwpM,GAAmBA,CAAC/+F,EAAcxpG,IAAmB25B,GAAS35B,IAAmB,aAATwpG,IAC1C,OAAjCrsG,OAAOo1B,eAAevyB,IAAmBA,EAAMuvB,cAAgBpyB,QAElE,SAASirM,GACP7mM,EACAioG,EACAjkE,GAEA,GAAIpoC,OAAOuE,UAAUiO,eAAenQ,KAAK+B,EAAQioG,IAAkB,gBAATA,EACxD,OAAOjoG,EAAOioG,GAGhB,MAAMxpG,EAAQulC,IAGd,OADAhkC,EAAOioG,GAAQxpG,EACRA,CACT,CAmEA,SAAS6pM,GACPl8H,EACA67B,EACAxpG,GAEA,OAAOmvB,GAAWw+C,GAAYA,EAAS67B,EAAMxpG,GAAS2tE,CACxD,CAEA,MAAMm8H,GAAWA,CAAC/nM,EAAwBsmH,KAA8B,IAARtmH,EAAesmH,EAC5D,kBAARtmH,EAAmB2zL,GAAiBrtE,EAAQtmH,QAAOvB,EAE9D,SAASupM,GACP5rK,EACA6rK,EACAjoM,EACAkoM,EACAjqM,GAEA,IAAK,MAAMqoH,KAAU2hF,EAAc,CACjC,MAAMrL,EAAQmL,GAAS/nM,EAAKsmH,GAC5B,GAAIs2E,EAAO,CACTxgK,EAAI37B,IAAIm8L,GACR,MAAMhxH,EAAWk8H,GAAgBlL,EAAMiC,UAAW7+L,EAAK/B,GACvD,GAAwB,qBAAb2tE,GAA4BA,IAAa5rE,GAAO4rE,IAAas8H,EAGtE,OAAOt8H,OAEJ,IAAc,IAAVgxH,GAA6C,qBAAnBsL,GAAkCloM,IAAQkoM,EAG7E,OAAO,IAEX,CACA,OAAO,CACT,CAEA,SAASzB,GACPwB,EACArU,EACAnsF,EACAxpG,GAEA,MAAMkqM,EAAavU,EAASqS,YACtBr6H,EAAWk8H,GAAgBlU,EAASiL,UAAWp3F,EAAMxpG,GACrDmqM,EAAY,IAAIH,KAAiBE,GACjC/rK,EAAM,IAAIhK,IAChBgK,EAAI37B,IAAIxC,GACR,IAAI+B,EAAMqoM,GAAiBjsK,EAAKgsK,EAAW3gG,EAAM77B,GAAY67B,EAAMxpG,GACnE,OAAY,OAAR+B,KAGoB,qBAAb4rE,GAA4BA,IAAa67B,IAClDznG,EAAMqoM,GAAiBjsK,EAAKgsK,EAAWx8H,EAAU5rE,EAAK/B,GAC1C,OAAR+B,KAIC0lM,GAAgBv9K,MAAM46D,KAAK3mD,GAAM,CAAC,IAAK+rK,EAAYv8H,GACxD,IAgBJ,SACEgoH,EACAnsF,EACAxpG,GAEA,MAAMqoH,EAASstE,EAASsS,aAClBz+F,KAAQ6e,IACZA,EAAO7e,GAAQ,CAAC,GAElB,MAAMjoG,EAAS8mH,EAAO7e,GACtB,GAAIr/E,GAAQ5oB,IAAWo4B,GAAS35B,GAE9B,OAAOA,EAET,OAAOuB,GAAU,CAAC,CACpB,CA/BU8oM,CAAa1U,EAAUnsF,EAAgBxpG,KACjD,CAEA,SAASoqM,GACPjsK,EACAgsK,EACApoM,EACA4rE,EACAwgB,GAEA,KAAOpsF,GACLA,EAAMgoM,GAAU5rK,EAAKgsK,EAAWpoM,EAAK4rE,EAAUwgB,GAEjD,OAAOpsF,CACT,CAoCA,SAASm/I,GAASn/I,EAAa2lM,GAC7B,IAAK,MAAM/I,KAAS+I,EAAQ,CAC1B,IAAK/I,EACH,SAEF,MAAM3+L,EAAQ2+L,EAAM58L,GACpB,GAAqB,qBAAV/B,EACT,OAAOA,CAEX,CACF,CAEA,SAAS0oM,GAAqBnnM,GAC5B,IAAIipB,EAAOjpB,EAAO4mM,MAIlB,OAHK39K,IACHA,EAAOjpB,EAAO4mM,MAKlB,SAAkCT,GAChC,MAAMvpK,EAAM,IAAIhK,IAChB,IAAK,MAAMwqK,KAAS+I,EAClB,IAAK,MAAM3lM,KAAO5E,OAAOqtB,KAAKm0K,GAAOj0K,QAAO6d,IAAMA,EAAEspF,WAAW,OAC7D1zF,EAAI37B,IAAIT,GAGZ,OAAOmoB,MAAM46D,KAAK3mD,EACpB,CAb0BmsK,CAAyB/oM,EAAOwmM,UAEjDv9K,CACT,CAYO,SAAS+/K,GACdhoJ,EACAp2C,EACAkqD,EACA5jB,GAEA,MAAM,OAACynJ,GAAU33I,GACX,IAACxgD,EAAM,KAAOP,KAAKgpM,SACnBruG,EAAS,IAAIjyE,MAAoBuoB,GACvC,IAAIluC,EAAWswL,EAAchyL,EAAesrF,EAE5C,IAAK5pF,EAAI,EAAGswL,EAAOpiJ,EAAOluC,EAAIswL,IAAQtwL,EACpC1B,EAAQ0B,EAAI8xD,EACZ83B,EAAOhiF,EAAKtJ,GACZs5F,EAAO53F,GAAK,CACV6nC,EAAG8tJ,EAAOtsL,MAAM8nL,GAAiBvnG,EAAMpsF,GAAMc,IAGjD,OAAOs5F,CACT,CClcA,MAAMsuG,GAAU52K,OAAO42K,SAAW,MAG5BC,GAAWA,CAAC5Q,EAAuBv1L,IAAmCA,EAAIu1L,EAAOh6L,SAAWg6L,EAAOv1L,GAAGomM,MAAQ7Q,EAAOv1L,GACrHqmM,GAAgBrL,GAAuC,MAAdA,EAAoB,IAAM,IAElE,SAASsL,GACdC,EACAC,EACAC,EACAlmM,GAUA,MAAMggM,EAAWgG,EAAWH,KAAOI,EAAcD,EAC3CxlJ,EAAUylJ,EACVn/K,EAAOo/K,EAAWL,KAAOI,EAAcC,EACvCC,EAAMnT,GAAsBxyI,EAASw/I,GACrCoG,EAAMpT,GAAsBlsK,EAAM05B,GAExC,IAAI6lJ,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAGvBC,EAAMz3K,MAAMy3K,GAAO,EAAIA,EACvBC,EAAM13K,MAAM03K,GAAO,EAAIA,EAEvB,MAAMjzJ,EAAKrzC,EAAIqmM,EACT3tJ,EAAK14C,EAAIsmM,EAEf,MAAO,CACLtG,SAAU,CACRtgM,EAAG8gD,EAAQ9gD,EAAI2zC,GAAMvsB,EAAKpnB,EAAIsgM,EAAStgM,GACvCoD,EAAG09C,EAAQ19C,EAAIuwC,GAAMvsB,EAAKhkB,EAAIk9L,EAASl9L,IAEzCgkB,KAAM,CACJpnB,EAAG8gD,EAAQ9gD,EAAIg5C,GAAM5xB,EAAKpnB,EAAIsgM,EAAStgM,GACvCoD,EAAG09C,EAAQ19C,EAAI41C,GAAM5xB,EAAKhkB,EAAIk9L,EAASl9L,IAG7C,CAsEO,SAASyjM,GAAoBvR,GAAmD,IAA5ByF,EAAA1/L,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAuB,IAChF,MAAMyrM,EAAYV,GAAarL,GACzBgM,EAAYzR,EAAOh6L,OACnB0rM,EAAmBthL,MAAMqhL,GAAWp1G,KAAK,GACzCs1G,EAAevhL,MAAMqhL,GAG3B,IAAIhnM,EAAGmnM,EAAkCC,EACrCC,EAAalB,GAAS5Q,EAAQ,GAElC,IAAKv1L,EAAI,EAAGA,EAAIgnM,IAAahnM,EAI3B,GAHAmnM,EAAcC,EACdA,EAAeC,EACfA,EAAalB,GAAS5Q,EAAQv1L,EAAI,GAC7BonM,EAAL,CAIA,GAAIC,EAAY,CACd,MAAMC,EAAaD,EAAWrM,GAAaoM,EAAapM,GAGxDiM,EAAOjnM,GAAoB,IAAfsnM,GAAoBD,EAAWN,GAAaK,EAAaL,IAAcO,EAAa,EAElGJ,EAAGlnM,GAAMmnM,EACJE,EACElV,GAAK8U,EAAOjnM,EAAI,MAAQmyL,GAAK8U,EAAOjnM,IAAO,GACzCinM,EAAOjnM,EAAI,GAAKinM,EAAOjnM,IAAM,EAFpBinM,EAAOjnM,EAAI,GADNinM,EAAOjnM,IAzFlC,SAAwBu1L,EAAuB0R,EAAkBC,GAC/D,MAAMF,EAAYzR,EAAOh6L,OAEzB,IAAIgsM,EAAgBC,EAAeC,EAAcC,EAA0BN,EACvEC,EAAalB,GAAS5Q,EAAQ,GAClC,IAAK,IAAIv1L,EAAI,EAAGA,EAAIgnM,EAAY,IAAKhnM,EACnConM,EAAeC,EACfA,EAAalB,GAAS5Q,EAAQv1L,EAAI,GAC7BonM,GAAiBC,IAIlBjV,GAAa6U,EAAOjnM,GAAI,EAAGkmM,IAC7BgB,EAAGlnM,GAAKknM,EAAGlnM,EAAI,GAAK,GAItBunM,EAASL,EAAGlnM,GAAKinM,EAAOjnM,GACxBwnM,EAAQN,EAAGlnM,EAAI,GAAKinM,EAAOjnM,GAC3B0nM,EAAmBt9L,KAAK0Q,IAAIysL,EAAQ,GAAKn9L,KAAK0Q,IAAI0sL,EAAO,GACrDE,GAAoB,IAIxBD,EAAO,EAAIr9L,KAAKsQ,KAAKgtL,GACrBR,EAAGlnM,GAAKunM,EAASE,EAAOR,EAAOjnM,GAC/BknM,EAAGlnM,EAAI,GAAKwnM,EAAQC,EAAOR,EAAOjnM,KAEtC,CAmEE2nM,CAAepS,EAAQ0R,EAAQC,GAjEjC,SAAyB3R,EAAuB2R,GAA0C,IAA5BlM,EAAA1/L,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAuB,IACnF,MAAMyrM,EAAYV,GAAarL,GACzBgM,EAAYzR,EAAOh6L,OACzB,IAAI6vH,EAAe+7E,EAAkCC,EACjDC,EAAalB,GAAS5Q,EAAQ,GAElC,IAAK,IAAIv1L,EAAI,EAAGA,EAAIgnM,IAAahnM,EAAG,CAIlC,GAHAmnM,EAAcC,EACdA,EAAeC,EACfA,EAAalB,GAAS5Q,EAAQv1L,EAAI,IAC7BonM,EACH,SAGF,MAAMQ,EAASR,EAAapM,GACtB6M,EAAST,EAAaL,GACxBI,IACF/7E,GAASw8E,EAAST,EAAYnM,IAAc,EAC5CoM,EAAa,MAADl/L,OAAO8yL,IAAe4M,EAASx8E,EAC3Cg8E,EAAa,MAADl/L,OAAO6+L,IAAec,EAASz8E,EAAQ87E,EAAGlnM,IAEpDqnM,IACFj8E,GAASi8E,EAAWrM,GAAa4M,GAAU,EAC3CR,EAAa,MAADl/L,OAAO8yL,IAAe4M,EAASx8E,EAC3Cg8E,EAAa,MAADl/L,OAAO6+L,IAAec,EAASz8E,EAAQ87E,EAAGlnM,GAE1D,CACF,CAwCE8nM,CAAgBvS,EAAQ2R,EAAIlM,EAC9B,CAEA,SAAS+M,GAAgBC,EAAYh6L,EAAaF,GAChD,OAAO1D,KAAK0D,IAAI1D,KAAK4D,IAAIg6L,EAAIl6L,GAAME,EACrC,CA2BO,SAASi6L,GACd1S,EACAj4L,EACAqgD,EACA+lC,EACAs3G,GAEA,IAAIh7L,EAAWswL,EAAc6P,EAAoB+H,EAOjD,GAJI5qM,EAAQ6qM,WACV5S,EAASA,EAAOpvK,QAAQ6hL,IAAQA,EAAG5B,QAGE,aAAnC9oM,EAAQ8qM,uBACVtB,GAAoBvR,EAAQyF,OACvB,CACL,IAAI5zK,EAAOs8D,EAAO6xG,EAAOA,EAAOh6L,OAAS,GAAKg6L,EAAO,GACrD,IAAKv1L,EAAI,EAAGswL,EAAOiF,EAAOh6L,OAAQyE,EAAIswL,IAAQtwL,EAC5CmgM,EAAQ5K,EAAOv1L,GACfkoM,EAAgB5B,GACdl/K,EACA+4K,EACA5K,EAAOnrL,KAAK4D,IAAIhO,EAAI,EAAGswL,GAAQ5sG,EAAO,EAAI,IAAM4sG,GAChDhzL,EAAQ+qM,SAEVlI,EAAMS,KAAOsH,EAAc3H,SAAStgM,EACpCkgM,EAAMW,KAAOoH,EAAc3H,SAASl9L,EACpC88L,EAAMU,KAAOqH,EAAc7gL,KAAKpnB,EAChCkgM,EAAMY,KAAOmH,EAAc7gL,KAAKhkB,EAChC+jB,EAAO+4K,EAIP7iM,EAAQgrM,iBA3Dd,SAAyB/S,EAAuB53I,GAC9C,IAAI39C,EAAGswL,EAAM6P,EAAOoI,EAAQC,EACxBC,EAAavI,GAAe3K,EAAO,GAAI53I,GAC3C,IAAK39C,EAAI,EAAGswL,EAAOiF,EAAOh6L,OAAQyE,EAAIswL,IAAQtwL,EAC5CwoM,EAAaD,EACbA,EAASE,EACTA,EAAazoM,EAAIswL,EAAO,GAAK4P,GAAe3K,EAAOv1L,EAAI,GAAI29C,GACtD4qJ,IAGLpI,EAAQ5K,EAAOv1L,GACXwoM,IACFrI,EAAMS,KAAOmH,GAAgB5H,EAAMS,KAAMjjJ,EAAKp6C,KAAMo6C,EAAKn6C,OACzD28L,EAAMW,KAAOiH,GAAgB5H,EAAMW,KAAMnjJ,EAAKoV,IAAKpV,EAAK2+B,SAEtDmsH,IACFtI,EAAMU,KAAOkH,GAAgB5H,EAAMU,KAAMljJ,EAAKp6C,KAAMo6C,EAAKn6C,OACzD28L,EAAMY,KAAOgH,GAAgB5H,EAAMY,KAAMpjJ,EAAKoV,IAAKpV,EAAK2+B,SAG9D,CAwCIgsH,CAAgB/S,EAAQ53I,EAE5B,CC9MO,SAAS+qJ,KACd,MAAyB,qBAAX9sM,QAA8C,qBAAbC,QACjD,CAKO,SAAS8sM,GAAeC,GAC7B,IAAI9kF,EAAS8kF,EAAQhgL,WAIrB,OAHIk7F,GAAgC,wBAAtBA,EAAOh7G,aACnBg7G,EAAUA,EAAsBktB,MAE3BltB,CACT,CAOA,SAAS+kF,GAAcC,EAA6BngL,EAAmBogL,GACrE,IAAIC,EAYJ,MAX0B,kBAAfF,GACTE,EAAgBt8L,SAASo8L,EAAY,KAEJ,IAA7BA,EAAWvqM,QAAQ,OAErByqM,EAAgBA,EAAiB,IAAOrgL,EAAKC,WAAWmgL,KAG1DC,EAAgBF,EAGXE,CACT,CAEA,MAAMzpF,GAAoBx5F,GACxBA,EAAQgzB,cAAcmZ,YAAYqtD,iBAAiBx5F,EAAS,MAM9D,MAAMo5F,GAAY,CAAC,MAAO,QAAS,SAAU,QAC7C,SAAS8pF,GAAmB/pF,EAA6B3hE,EAAe+kH,GACtE,MAAMx1I,EAAS,CAAC,EAChBw1I,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAItiK,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM8nC,EAAMq3E,GAAUn/G,GACtB8sB,EAAOgb,GAAOvY,WAAW2vF,EAAO3hE,EAAQ,IAAMzV,EAAMw6H,KAAY,CAClE,CAGA,OAFAx1I,EAAOmkB,MAAQnkB,EAAOvpB,KAAOupB,EAAOtpB,MACpCspB,EAAOokB,OAASpkB,EAAOimC,IAAMjmC,EAAOwvD,OAC7BxvD,CACT,CAEA,MAAMo8K,GAAeA,CAACjpM,EAAWoD,EAAWrG,KACzCiD,EAAI,GAAKoD,EAAI,MAAQrG,IAAWA,EAAwBmsM,YAuCpD,SAASC,GACdtrM,EACAw/H,GAEA,GAAI,WAAYx/H,EACd,OAAOA,EAGT,MAAM,OAACi3F,EAAA,wBAAQiqG,GAA2B1hE,EACpC//E,EAAQgiE,GAAiBxqB,GACzBs0G,EAAgC,eAApB9rJ,EAAMsiE,UAClBL,EAAWypF,GAAmB1rJ,EAAO,WACrC+rJ,EAAUL,GAAmB1rJ,EAAO,SAAU,UAC9C,EAACt9C,EAAA,EAAGoD,EAAA,IAAGkmM,GA7Cf,SACE/sM,EACAu4F,GAMA,MAAM5nC,EAAU3wD,EAAkB2wD,QAC5BrnC,EAAUqnC,GAAWA,EAAQ5xD,OAAS4xD,EAAQ,GAAK3wD,GACnD,QAACgtM,EAAA,QAASC,GAAW3jL,EAC3B,IACI7lB,EAAGoD,EADHkmM,GAAM,EAEV,GAAIL,GAAaM,EAASC,EAASjtM,EAAEQ,QACnCiD,EAAIupM,EACJnmM,EAAIomM,MACC,CACL,MAAM19J,EAAOgpD,EAAOu+D,wBACpBrzJ,EAAI6lB,EAAOsjC,QAAUrd,EAAKxoC,KAC1BF,EAAIyiB,EAAOujC,QAAUtd,EAAKgnB,IAC1Bw2I,GAAM,EAER,MAAO,CAACtpM,IAAGoD,IAAGkmM,MAChB,CAsBsBG,CAAkB5rM,EAAOi3F,GACvCwqG,EAAU//E,EAASj8G,MAAQgmM,GAAOD,EAAQ/lM,MAC1Ci8L,EAAUhgF,EAASzsD,KAAOw2I,GAAOD,EAAQv2I,KAE/C,IAAI,MAAC9hB,EAAA,OAAOC,GAAUosF,EAKtB,OAJI+rE,IACFp4J,GAASuuE,EAASvuE,MAAQq4J,EAAQr4J,MAClCC,GAAUsuE,EAAStuE,OAASo4J,EAAQp4J,QAE/B,CACLjxC,EAAGmK,KAAKhI,OAAOnC,EAAIs/L,GAAWtuJ,EAAQ8jD,EAAO9jD,MAAQ+tJ,GACrD37L,EAAG+G,KAAKhI,OAAOiB,EAAIm8L,GAAWtuJ,EAAS6jD,EAAO7jD,OAAS8tJ,GAE3D,CA6BA,MAAM2K,GAAUv7J,GAAchkC,KAAKhI,MAAU,GAAJgsC,GAAU,GAG5C,SAASw7J,GACd70G,EACA80G,EACAC,EACApvJ,GAEA,MAAM6C,EAAQgiE,GAAiBxqB,GACzBg1G,EAAUd,GAAmB1rJ,EAAO,UACpC2kD,EAAW2mG,GAActrJ,EAAM2kD,SAAUnN,EAAQ,gBAAkB68F,GACnE9vF,EAAY+mG,GAActrJ,EAAMukD,UAAW/M,EAAQ,iBAAmB68F,GACtEoY,EAxCR,SAA0Bj1G,EAA2B9jD,EAAeC,GAClE,IAAIgxD,EAAkBJ,EAEtB,QAAc7lG,IAAVg1C,QAAkCh1C,IAAXi1C,EAAsB,CAC/C,MAAM4mC,EAAYid,GAAU4zG,GAAe5zG,GAC3C,GAAKjd,EAGE,CACL,MAAM/rC,EAAO+rC,EAAUw7E,wBACjB22C,EAAiB1qF,GAAiBznC,GAClCoyH,EAAkBjB,GAAmBgB,EAAgB,SAAU,SAC/DE,EAAmBlB,GAAmBgB,EAAgB,WAC5Dh5J,EAAQlF,EAAKkF,MAAQk5J,EAAiBl5J,MAAQi5J,EAAgBj5J,MAC9DC,EAASnF,EAAKmF,OAASi5J,EAAiBj5J,OAASg5J,EAAgBh5J,OACjEgxD,EAAW2mG,GAAcoB,EAAe/nG,SAAUpqB,EAAW,eAC7DgqB,EAAY+mG,GAAcoB,EAAenoG,UAAWhqB,EAAW,qBAV/D7mC,EAAQ8jD,EAAOsqB,YACfnuE,EAAS6jD,EAAOuqB,aAYpB,MAAO,CACLruE,QACAC,SACAgxD,SAAUA,GAAY0vF,GACtB9vF,UAAWA,GAAa8vF,GAE5B,CAewBwY,CAAiBr1G,EAAQ80G,EAASC,GACxD,IAAI,MAAC74J,EAAA,OAAOC,GAAU84J,EAEtB,GAAwB,gBAApBzsJ,EAAMsiE,UAA6B,CACrC,MAAMypF,EAAUL,GAAmB1rJ,EAAO,SAAU,SAC9CiiE,EAAWypF,GAAmB1rJ,EAAO,WAC3CtM,GAASuuE,EAASvuE,MAAQq4J,EAAQr4J,MAClCC,GAAUsuE,EAAStuE,OAASo4J,EAAQp4J,OAEtCD,EAAQ7mC,KAAK0D,IAAI,EAAGmjC,EAAQ84J,EAAQ94J,OACpCC,EAAS9mC,KAAK0D,IAAI,EAAG4sC,EAAczJ,EAAQyJ,EAAcxJ,EAAS64J,EAAQ74J,QAC1ED,EAAQ04J,GAAOv/L,KAAK4D,IAAIijC,EAAOixD,EAAU8nG,EAAc9nG,WACvDhxD,EAASy4J,GAAOv/L,KAAK4D,IAAIkjC,EAAQ4wD,EAAWkoG,EAAcloG,YACtD7wD,IAAUC,IAGZA,EAASy4J,GAAO14J,EAAQ,IAU1B,YAPmCh1C,IAAZ4tM,QAAsC5tM,IAAb6tM,IAE1BpvJ,GAAesvJ,EAAc94J,QAAUA,EAAS84J,EAAc94J,SAClFA,EAAS84J,EAAc94J,OACvBD,EAAQ04J,GAAOv/L,KAAKwJ,MAAMs9B,EAASwJ,KAG9B,CAACzJ,QAAOC,SACjB,CAQO,SAASm5J,GACd/sE,EACAgtE,EACAC,GAEA,MAAMC,EAAaF,GAAc,EAC3BlpG,EAAeh3F,KAAKwJ,MAAM0pH,EAAMpsF,OAASs5J,GACzCnpG,EAAcj3F,KAAKwJ,MAAM0pH,EAAMrsF,MAAQu5J,GAE7CltE,EAAMpsF,OAAS9mC,KAAKwJ,MAAM0pH,EAAMpsF,QAChCosF,EAAMrsF,MAAQ7mC,KAAKwJ,MAAM0pH,EAAMrsF,OAE/B,MAAM8jD,EAASuoC,EAAMvoC,OAUrB,OALIA,EAAOx3C,QAAUgtJ,IAAgBx1G,EAAOx3C,MAAMrM,SAAW6jD,EAAOx3C,MAAMtM,SACxE8jD,EAAOx3C,MAAMrM,OAAS,GAAHhpC,OAAMo1H,EAAMpsF,OAAM,MACrC6jD,EAAOx3C,MAAMtM,MAAQ,GAAH/oC,OAAMo1H,EAAMrsF,MAAK,QAGjCqsF,EAAM0hE,0BAA4BwL,GAC/Bz1G,EAAO7jD,SAAWkwD,GAClBrM,EAAO9jD,QAAUowD,KACtBi8B,EAAM0hE,wBAA0BwL,EAChCz1G,EAAO7jD,OAASkwD,EAChBrM,EAAO9jD,MAAQowD,EACfi8B,EAAMr6H,IAAIwnM,aAAaD,EAAY,EAAG,EAAGA,EAAY,EAAG,IACjD,EAGX,CAOa,MAAAE,GAAgC,WAC3C,IAAIC,GAAmB,EACvB,IACE,MAAMrtM,EAAU,CACd,WAAIK,GAEF,OADAgtM,GAAmB,GACZ,CACT,GAGEjC,OACF9sM,OAAOM,iBAAiB,OAAQ,KAAMoB,GACtC1B,OAAOO,oBAAoB,OAAQ,KAAMmB,GAE7C,CAAE,MAAOd,KAGT,OAAOmuM,CACT,CAlB6C,GA8BtC,SAASC,GACd7kL,EACAS,GAEA,MAAM/qB,EAzOD,SAAkBsd,EAAiByN,GACxC,OAAO+4F,GAAiBxmG,GAAI0hH,iBAAiBj0G,EAC/C,CAuOgBqkL,CAAS9kL,EAASS,GAC1B2D,EAAU1uB,GAASA,EAAM2vB,MAAM,qBACrC,OAAOjB,GAAWA,EAAQ,QAAKluB,CACjC,CC9RO,SAAS6uM,GAAavkE,EAAWC,EAAWjmI,EAAWsG,GAC5D,MAAO,CACL5G,EAAGsmI,EAAGtmI,EAAIM,GAAKimI,EAAGvmI,EAAIsmI,EAAGtmI,GACzBoD,EAAGkjI,EAAGljI,EAAI9C,GAAKimI,EAAGnjI,EAAIkjI,EAAGljI,GAE7B,CAKO,SAAS0nM,GACdxkE,EACAC,EACAjmI,EAAWsG,GAEX,MAAO,CACL5G,EAAGsmI,EAAGtmI,EAAIM,GAAKimI,EAAGvmI,EAAIsmI,EAAGtmI,GACzBoD,EAAY,WAATwD,EAAoBtG,EAAI,GAAMgmI,EAAGljI,EAAImjI,EAAGnjI,EAC9B,UAATwD,EAAmBtG,EAAI,EAAIgmI,EAAGljI,EAAImjI,EAAGnjI,EACnC9C,EAAI,EAAIimI,EAAGnjI,EAAIkjI,EAAGljI,EAE5B,CAKO,SAAS2nM,GAAqBzkE,EAAiBC,EAAiBjmI,EAAWsG,GAChF,MAAMokM,EAAM,CAAChrM,EAAGsmI,EAAGs6D,KAAMx9L,EAAGkjI,EAAGw6D,MACzBmK,EAAM,CAACjrM,EAAGumI,EAAGo6D,KAAMv9L,EAAGmjI,EAAGs6D,MACzB59L,EAAI4nM,GAAavkE,EAAI0kE,EAAK1qM,GAC1B4C,EAAI2nM,GAAaG,EAAKC,EAAK3qM,GAC3B6C,EAAI0nM,GAAaI,EAAK1kE,EAAIjmI,GAC1BR,EAAI+qM,GAAa5nM,EAAGC,EAAG5C,GACvB/D,EAAIsuM,GAAa3nM,EAAGC,EAAG7C,GAC7B,OAAOuqM,GAAa/qM,EAAGvD,EAAG+D,EAC5B,CCUO,SAAS4qM,GAAc1hG,EAAc2hG,EAAen6J,GACzD,OAAOw4D,EA3CqB,SAAS2hG,EAAen6J,GACpD,MAAO,CACLhxC,EAAEA,GACOmrM,EAAQA,EAAQn6J,EAAQhxC,EAEjCorM,QAAAA,CAAS91I,GACPtkB,EAAQskB,CACV,EACAysI,UAAU5M,GACM,WAAVA,EACKA,EAEQ,UAAVA,EAAoB,OAAS,QAEtCkW,MAAMA,CAAArrM,EAAGxE,IACAwE,EAAIxE,EAEb8vM,WAAWA,CAAAtrM,EAAGurM,IACLvrM,EAAIurM,EAGjB,CAsBeC,CAAsBL,EAAOn6J,GAnBnC,CACLhxC,EAAEA,GACOA,EAETorM,QAAAA,CAAS91I,GAAI,EAEbysI,UAAU5M,GACDA,EAETkW,MAAMA,CAAArrM,EAAGxE,IACAwE,EAAIxE,EAEb8vM,WAAWA,CAAAtrM,EAAGyrM,IACLzrM,EAOb,CAEO,SAAS0rM,GAAsB1oM,EAA+BqoG,GACnE,IAAI/tD,EAA4BquJ,EACd,QAAdtgG,GAAqC,QAAdA,IACzB/tD,EAAQt6C,EAAI8xF,OAAOx3C,MACnBquJ,EAAW,CACTruJ,EAAMk9E,iBAAiB,aACvBl9E,EAAMsuJ,oBAAoB,cAG5BtuJ,EAAMC,YAAY,YAAa8tD,EAAW,aACzCroG,EAAiD6oM,kBAAoBF,EAE1E,CAEO,SAASG,GAAqB9oM,EAA+B2oM,QACjD3vM,IAAb2vM,WACM3oM,EAAiD6oM,kBACzD7oM,EAAI8xF,OAAOx3C,MAAMC,YAAY,YAAaouJ,EAAS,GAAIA,EAAS,IAEpE,CC/DA,SAASI,GAAWxlL,GAClB,MAAiB,UAAbA,EACK,CACLxuB,QAAS47L,GACTlsH,QAASgsH,GACT3lD,UAAW4lD,IAGR,CACL37L,QAASm8L,GACTzsH,QAASA,CAACxkE,EAAGC,IAAMD,EAAIC,EACvB4qI,UAAW9tI,GAAKA,EAEpB,CAEA,SAASgsM,GAAiBxtH,GAAkC,IAAlC,MAAC3sB,EAAK,IAAEC,EAAG,MAAE7jB,EAAK,KAAEw1C,EAAI,MAAEnmC,GAAMkhC,EACxD,MAAO,CACL3sB,MAAOA,EAAQ5jB,EACf6jB,IAAKA,EAAM7jB,EACXw1C,KAAMA,IAAS3xB,EAAMD,EAAQ,GAAK5jB,IAAU,EAC5CqP,QAEJ,CA4CO,SAAS2uJ,GAAcz9E,EAAS8mE,EAAQoH,GAC7C,IAAKA,EACH,MAAO,CAACluE,GAGV,MAAM,SAACjoG,EAAUsrC,MAAOq6I,EAAYp6I,IAAKq6I,GAAYzP,EAC/CzuJ,EAAQqnJ,EAAOh6L,QACf,QAACmsE,EAAA,QAAS1vE,EAAA,UAAS+1I,GAAai+D,GAAWxlL,IAC3C,MAACsrC,EAAA,IAAOC,EAAA,KAAK2xB,EAAA,MAAMnmC,GAlD3B,SAAoBkxE,EAAS8mE,EAAQoH,GACnC,MAAM,SAACn2K,EAAUsrC,MAAOq6I,EAAYp6I,IAAKq6I,GAAYzP,GAC/C,QAAC3kM,EAAO,UAAE+1I,GAAai+D,GAAWxlL,GAClC0nB,EAAQqnJ,EAAOh6L,OAErB,IACIyE,EAAGswL,GADH,MAACx+H,EAAK,IAAEC,EAAA,KAAK2xB,GAAQ+qC,EAGzB,GAAI/qC,EAAM,CAGR,IAFA5xB,GAAS5jB,EACT6jB,GAAO7jB,EACFluC,EAAI,EAAGswL,EAAOpiJ,EAAOluC,EAAIswL,GACvBt4L,EAAQ+1I,EAAUwnD,EAAOzjI,EAAQ5jB,GAAO1nB,IAAY2lL,EAAYC,KADjCpsM,EAIpC8xD,IACAC,IAEFD,GAAS5jB,EACT6jB,GAAO7jB,EAMT,OAHI6jB,EAAMD,IACRC,GAAO7jB,GAEF,CAAC4jB,QAAOC,MAAK2xB,OAAMnmC,MAAOkxE,EAAQlxE,MAC3C,CAwBoC8uJ,CAAW59E,EAAS8mE,EAAQoH,GAExD7vK,EAAS,GACf,IAEIrxB,EAAO0kM,EAAO5uE,EAFd+6E,GAAS,EACTC,EAAW,KAGf,MAEMC,EAAcA,IAAMF,GAFEt0M,EAAQm0M,EAAY56E,EAAW91H,IAA6C,IAAnCisE,EAAQykI,EAAY56E,GAGnFk7E,EAAaA,KAAOH,GAF6B,IAA7B5kI,EAAQ0kI,EAAU3wM,IAAgBzD,EAAQo0M,EAAU76E,EAAW91H,GAIzF,IAAK,IAAIuE,EAAI8xD,EAAO1qC,EAAO0qC,EAAO9xD,GAAK+xD,IAAO/xD,EAC5CmgM,EAAQ5K,EAAOv1L,EAAIkuC,GAEfiyJ,EAAMiG,OAIV3qM,EAAQsyI,EAAUoyD,EAAM35K,IAEpB/qB,IAAU81H,IAId+6E,EAASt0M,EAAQyD,EAAO0wM,EAAYC,GAEnB,OAAbG,GAAqBC,MACvBD,EAA0C,IAA/B7kI,EAAQjsE,EAAO0wM,GAAoBnsM,EAAIonB,GAGnC,OAAbmlL,GAAqBE,MACvB3/K,EAAO1uB,KAAK6tM,GAAiB,CAACn6I,MAAOy6I,EAAUx6I,IAAK/xD,EAAG0jF,OAAMx1C,QAAOqP,WACpEgvJ,EAAW,MAEbnlL,EAAOpnB,EACPuxH,EAAY91H,IAOd,OAJiB,OAAb8wM,GACFz/K,EAAO1uB,KAAK6tM,GAAiB,CAACn6I,MAAOy6I,EAAUx6I,MAAK2xB,OAAMx1C,QAAOqP,WAG5DzwB,CACT,CAYO,SAAS4/K,GAAev/J,EAAMwvJ,GACnC,MAAM7vK,EAAS,GACT8gG,EAAWzgF,EAAKygF,SAEtB,IAAK,IAAI5tH,EAAI,EAAGA,EAAI4tH,EAASryH,OAAQyE,IAAK,CACxC,MAAM2sM,EAAMT,GAAct+E,EAAS5tH,GAAImtC,EAAKooJ,OAAQoH,GAChDgQ,EAAIpxM,QACNuxB,EAAO1uB,QAAQuuM,EAEnB,CACA,OAAO7/K,CACT,CAiHA,SAAS8/K,GAAcz/J,EAAMygF,EAAU2nE,EAAQsX,GAC7C,OAAKA,GAAmBA,EAAejI,YAAerP,EAaxD,SAAyBpoJ,EAAMygF,EAAU2nE,EAAQsX,GAC/C,MAAMC,EAAe3/J,EAAK4/J,OAAO/3G,aAC3Bg4G,EAAYC,GAAU9/J,EAAK7vC,UAC1B4vM,cAAezc,EAAcnzL,SAAS,SAAC6qM,IAAah7J,EACrDe,EAAQqnJ,EAAOh6L,OACfuxB,EAAS,GACf,IAAIqgL,EAAYH,EACZl7I,EAAQ87D,EAAS,GAAG97D,MACpB9xD,EAAI8xD,EAER,SAASs7I,EAASp5L,EAAGxX,EAAGs6C,EAAGu2J,GACzB,MAAM57F,EAAM02F,GAAY,EAAI,EAC5B,GAAIn0L,IAAMxX,EAAV,CAKA,IADAwX,GAAKk6B,EACEqnJ,EAAOvhL,EAAIk6B,GAAOk4J,MACvBpyL,GAAKy9F,EAEP,KAAO8jF,EAAO/4L,EAAI0xC,GAAOk4J,MACvB5pM,GAAKi1G,EAEHz9F,EAAIk6B,IAAU1xC,EAAI0xC,IACpBphB,EAAO1uB,KAAK,CAAC0zD,MAAO99C,EAAIk6B,EAAO6jB,IAAKv1D,EAAI0xC,EAAOw1C,KAAM5sC,EAAGyG,MAAO8vJ,IAC/DF,EAAYE,EACZv7I,EAAQt1D,EAAI0xC,GAEhB,CAEA,IAAK,MAAMugF,KAAWb,EAAU,CAC9B97D,EAAQq2I,EAAWr2I,EAAQ28D,EAAQ38D,MACnC,IACIvU,EADAn2B,EAAOmuK,EAAOzjI,EAAQ5jB,GAE1B,IAAKluC,EAAI8xD,EAAQ,EAAG9xD,GAAKyuH,EAAQ18D,IAAK/xD,IAAK,CACzC,MAAMgoM,EAAKzS,EAAOv1L,EAAIkuC,GACtBqP,EAAQ0vJ,GAAUJ,EAAejI,WAAW9kG,GAAcgtG,EAAc,CACtEh5K,KAAM,UACNw5K,GAAIlmL,EACJm/G,GAAIyhE,EACJuF,aAAcvtM,EAAI,GAAKkuC,EACvBs/J,YAAaxtM,EAAIkuC,EACjBuiJ,mBAEEgd,GAAalwJ,EAAO4vJ,IACtBC,EAASt7I,EAAO9xD,EAAI,EAAGyuH,EAAQ/qC,KAAMypH,GAEvC/lL,EAAO4gL,EACPmF,EAAY5vJ,CACd,CACIuU,EAAQ9xD,EAAI,GACdotM,EAASt7I,EAAO9xD,EAAI,EAAGyuH,EAAQ/qC,KAAMypH,EAEzC,CAEA,OAAOrgL,CACT,CAlES4gL,CAAgBvgK,EAAMygF,EAAU2nE,EAAQsX,GAFtCj/E,CAGX,CAmEA,SAASq/E,GAAU3vM,GACjB,MAAO,CACLk2H,gBAAiBl2H,EAAQk2H,gBACzBm6E,eAAgBrwM,EAAQqwM,eACxBC,WAAYtwM,EAAQswM,WACpBC,iBAAkBvwM,EAAQuwM,iBAC1BC,gBAAiBxwM,EAAQwwM,gBACzB7N,YAAa3iM,EAAQ2iM,YACrBzF,YAAal9L,EAAQk9L,YAEzB,CAEA,SAASiT,GAAalwJ,EAAO4vJ,GAC3B,IAAKA,EACH,OAAO,EAET,MAAM37H,EAAQ,GACR6iG,EAAW,SAAS72K,EAAK/B,GAC7B,OAAKq9L,GAAoBr9L,IAGpB+1E,EAAMx6B,SAASv7C,IAClB+1E,EAAMpzE,KAAK3C,GAEN+1E,EAAMjzE,QAAQ9C,IALZA,CAMX,EACA,OAAO2zB,KAAKpmB,UAAUu0C,EAAO82H,KAAcjlJ,KAAKpmB,UAAUmkM,EAAW94B,EACvE,CChWO,MAAM05B,GACX/iL,WAAAA,GACE/tB,KAAKs8I,SAAW,KAChBt8I,KAAK+wM,QAAU,IAAI3+K,IACnBpyB,KAAKgxM,UAAW,EAChBhxM,KAAKixM,eAAYjyM,CACnB,CAKAkyM,OAAAA,CAAQ7wE,EAAO8wE,EAAOv/I,EAAM/6B,GAC1B,MAAMinG,EAAYqzE,EAAM5+I,UAAU17B,GAC5Bu6K,EAAWD,EAAM12H,SAEvBqjD,EAAUh9H,SAAQsqB,GAAMA,EAAG,CACzBi1G,QACAgxE,QAASF,EAAME,QACfD,WACAE,YAAankM,KAAK4D,IAAI6gD,EAAOu/I,EAAMt8I,MAAOu8I,MAE9C,CAKAG,QAAAA,GACMvxM,KAAKs8I,WAGTt8I,KAAKgxM,UAAW,EAEhBhxM,KAAKs8I,SAAWw7C,GAAiB95L,KAAKW,QAAQ,KAC5CqB,KAAKwxM,UACLxxM,KAAKs8I,SAAW,KAEZt8I,KAAKgxM,UACPhxM,KAAKuxM,cAGX,CAKAC,OAAAA,GAA2B,IAAnB5/I,EAAAvzD,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAOuzB,KAAKsG,MACd4jD,EAAY,EAEhB97E,KAAK+wM,QAAQjwM,SAAQ,CAACqwM,EAAO9wE,KAC3B,IAAK8wE,EAAMM,UAAYN,EAAM9uE,MAAM/jI,OACjC,OAEF,MAAM+jI,EAAQ8uE,EAAM9uE,MACpB,IAEI11C,EAFA5pF,EAAIs/H,EAAM/jI,OAAS,EACnBozM,GAAO,EAGX,KAAO3uM,GAAK,IAAKA,EACf4pF,EAAO01C,EAAMt/H,GAET4pF,EAAKglH,SACHhlH,EAAKilH,OAAST,EAAM12H,WAGtB02H,EAAM12H,SAAWkS,EAAKilH,QAExBjlH,EAAKklH,KAAKjgJ,GACV8/I,GAAO,IAIPrvE,EAAMt/H,GAAKs/H,EAAMA,EAAM/jI,OAAS,GAChC+jI,EAAM3+F,OAINguK,IACFrxE,EAAMqxE,OACN1xM,KAAKkxM,QAAQ7wE,EAAO8wE,EAAOv/I,EAAM,aAG9BywE,EAAM/jI,SACT6yM,EAAMM,SAAU,EAChBzxM,KAAKkxM,QAAQ7wE,EAAO8wE,EAAOv/I,EAAM,YACjCu/I,EAAME,SAAU,GAGlBv1H,GAAaumD,EAAM/jI,MAAM,IAG3B0B,KAAKixM,UAAYr/I,EAEC,IAAdkqB,IACF97E,KAAKgxM,UAAW,EAEpB,CAKAc,SAAAA,CAAUzxE,GACR,MAAM0xE,EAAS/xM,KAAK+wM,QACpB,IAAII,EAAQY,EAAOzyM,IAAI+gI,GAavB,OAZK8wE,IACHA,EAAQ,CACNM,SAAS,EACTJ,SAAS,EACThvE,MAAO,GACP9vE,UAAW,CACTy/I,SAAU,GACV1tH,SAAU,KAGdytH,EAAOp1K,IAAI0jG,EAAO8wE,IAEbA,CACT,CAOA3iF,MAAAA,CAAO6R,EAAOx/H,EAAOu1B,GACnBp2B,KAAK8xM,UAAUzxE,GAAO9tE,UAAU1xD,GAAOM,KAAKi1B,EAC9C,CAOAp1B,GAAAA,CAAIq/H,EAAOgC,GACJA,GAAUA,EAAM/jI,QAGrB0B,KAAK8xM,UAAUzxE,GAAOgC,MAAMlhI,QAAQkhI,EACtC,CAMAp/F,GAAAA,CAAIo9F,GACF,OAAOrgI,KAAK8xM,UAAUzxE,GAAOgC,MAAM/jI,OAAS,CAC9C,CAMAu2D,KAAAA,CAAMwrE,GACJ,MAAM8wE,EAAQnxM,KAAK+wM,QAAQzxM,IAAI+gI,GAC1B8wE,IAGLA,EAAMM,SAAU,EAChBN,EAAMt8I,MAAQjjC,KAAKsG,MACnBi5K,EAAM12H,SAAW02H,EAAM9uE,MAAMn4G,QAAO,CAACyiJ,EAAKslC,IAAQ9kM,KAAK0D,IAAI87J,EAAKslC,EAAIC,YAAY,GAChFlyM,KAAKuxM,WACP,CAEAE,OAAAA,CAAQpxE,GACN,IAAKrgI,KAAKgxM,SACR,OAAO,EAET,MAAMG,EAAQnxM,KAAK+wM,QAAQzxM,IAAI+gI,GAC/B,SAAK8wE,GAAUA,EAAMM,SAAYN,EAAM9uE,MAAM/jI,OAI/C,CAMA0oF,IAAAA,CAAKq5C,GACH,MAAM8wE,EAAQnxM,KAAK+wM,QAAQzxM,IAAI+gI,GAC/B,IAAK8wE,IAAUA,EAAM9uE,MAAM/jI,OACzB,OAEF,MAAM+jI,EAAQ8uE,EAAM9uE,MACpB,IAAIt/H,EAAIs/H,EAAM/jI,OAAS,EAEvB,KAAOyE,GAAK,IAAKA,EACfs/H,EAAMt/H,GAAGg3B,SAEXo3K,EAAM9uE,MAAQ,GACdriI,KAAKkxM,QAAQ7wE,EAAO8wE,EAAOv/K,KAAKsG,MAAO,WACzC,CAMAinD,MAAAA,CAAOkhD,GACL,OAAOrgI,KAAK+wM,QAAQhpJ,OAAOs4E,EAC7B,EAIF,IAAA8xE,GAA+B,IAAIrB,GCjNnC,MAAMpgB,GAAc,cACd0hB,GAAgB,CACpBlpF,QAAO,CAAC5lC,EAAMD,EAAI3lE,IACTA,EAAS,GAAM2lE,EAAKC,EAO7B3xB,KAAAA,CAAM2xB,EAAMD,EAAI3lE,GACd,MAAM20L,EAAK1gJ,GAAa2xB,GAAQotG,IAC1BgB,EAAK2gB,EAAGhhB,OAAS1/H,GAAa0xB,GAAMqtG,IAC1C,OAAOgB,GAAMA,EAAGL,MACZK,EAAGF,IAAI6gB,EAAI30L,GAAQ6oK,YACnBljG,CACN,EACA/uD,OAAM,CAACgvD,EAAMD,EAAI3lE,IACR4lE,GAAQD,EAAKC,GAAQ5lE,GAIjB,MAAM40L,GACnBvkL,WAAAA,CAAY7lB,EAAKnI,EAAQioG,EAAM3kB,GAC7B,MAAMkvH,EAAexyM,EAAOioG,GAE5B3kB,EAAKt/C,GAAQ,CAAC77B,EAAIm7E,GAAIA,EAAIkvH,EAAcrqM,EAAIo7E,OAC5C,MAAMA,EAAOv/C,GAAQ,CAAC77B,EAAIo7E,KAAMivH,EAAclvH,IAE9CrjF,KAAK2xM,SAAU,EACf3xM,KAAKwyM,IAAMtqM,EAAIkjB,IAAMgnL,GAAclqM,EAAI2uB,aAAeysD,GACtDtjF,KAAKyyM,QAAU5xI,GAAQ34D,EAAIyjG,SAAW9qC,GAAQi5H,OAC9C95L,KAAK0yM,OAASvlM,KAAKwJ,MAAMib,KAAKsG,OAAShwB,EAAIyyE,OAAS,IACpD36E,KAAKkyM,UAAYlyM,KAAK4xM,OAASzkM,KAAKwJ,MAAMzO,EAAIuyE,UAC9Cz6E,KAAK2yM,QAAUzqM,EAAIu+E,KACnBzmF,KAAK4yM,QAAU7yM,EACfC,KAAK6yM,MAAQ7qG,EACbhoG,KAAK8yM,MAAQxvH,EACbtjF,KAAK+yM,IAAM1vH,EACXrjF,KAAKgzM,eAAYh0M,CACnB,CAEAujI,MAAAA,GACE,OAAOviI,KAAK2xM,OACd,CAEA1gM,MAAAA,CAAO/I,EAAKm7E,EAAIzxB,GACd,GAAI5xD,KAAK2xM,QAAS,CAChB3xM,KAAKkxM,SAAQ,GAEb,MAAMqB,EAAevyM,KAAK4yM,QAAQ5yM,KAAK6yM,OACjCI,EAAUrhJ,EAAO5xD,KAAK0yM,OACtB3V,EAAS/8L,KAAKkyM,UAAYe,EAChCjzM,KAAK0yM,OAAS9gJ,EACd5xD,KAAKkyM,UAAY/kM,KAAKwJ,MAAMxJ,KAAK0D,IAAIksL,EAAQ70L,EAAIuyE,WACjDz6E,KAAK4xM,QAAUqB,EACfjzM,KAAK2yM,QAAUzqM,EAAIu+E,KACnBzmF,KAAK+yM,IAAMhvK,GAAQ,CAAC77B,EAAIm7E,GAAIA,EAAIkvH,EAAcrqM,EAAIo7E,OAClDtjF,KAAK8yM,MAAQ/uK,GAAQ,CAAC77B,EAAIo7E,KAAMivH,EAAclvH,IAElD,CAEAtpD,MAAAA,GACM/5B,KAAK2xM,UAEP3xM,KAAK6xM,KAAKjgL,KAAKsG,OACfl4B,KAAK2xM,SAAU,EACf3xM,KAAKkxM,SAAQ,GAEjB,CAEAW,IAAAA,CAAKjgJ,GACH,MAAMqhJ,EAAUrhJ,EAAO5xD,KAAK0yM,OACtBj4H,EAAWz6E,KAAKkyM,UAChBlqG,EAAOhoG,KAAK6yM,MACZvvH,EAAOtjF,KAAK8yM,MACZrsH,EAAOzmF,KAAK2yM,MACZtvH,EAAKrjF,KAAK+yM,IAChB,IAAIr1L,EAIJ,GAFA1d,KAAK2xM,QAAUruH,IAASD,IAAOoD,GAASwsH,EAAUx4H,IAE7Cz6E,KAAK2xM,QAGR,OAFA3xM,KAAK4yM,QAAQ5qG,GAAQ3kB,OACrBrjF,KAAKkxM,SAAQ,GAIX+B,EAAU,EACZjzM,KAAK4yM,QAAQ5qG,GAAQ1kB,GAIvB5lE,EAAUu1L,EAAUx4H,EAAY,EAChC/8D,EAAS+oE,GAAQ/oE,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS1d,KAAKyyM,QAAQtlM,KAAK4D,IAAI,EAAG5D,KAAK0D,IAAI,EAAG6M,KAE9C1d,KAAK4yM,QAAQ5qG,GAAQhoG,KAAKwyM,IAAIlvH,EAAMD,EAAI3lE,GAC1C,CAEA+a,IAAAA,GACE,MAAMyyF,EAAWlrH,KAAKgzM,YAAchzM,KAAKgzM,UAAY,IACrD,OAAO,IAAIzgL,SAAQ,CAACprB,EAAK+rM,KACvBhoF,EAAS/pH,KAAK,CAACgG,MAAK+rM,OAAK,GAE7B,CAEAhC,OAAAA,CAAQiC,GACN,MAAMngH,EAASmgH,EAAW,MAAQ,MAC5BjoF,EAAWlrH,KAAKgzM,WAAa,GACnC,IAAK,IAAIjwM,EAAI,EAAGA,EAAImoH,EAAS5sH,OAAQyE,IACnCmoH,EAASnoH,GAAGiwF,IAEhB,EChHa,MAAMogH,GACnBrlL,WAAAA,CAAYsyG,EAAOv2C,GACjB9pF,KAAK8vM,OAASzvE,EACdrgI,KAAKqzM,YAAc,IAAIjhL,IACvBpyB,KAAKszM,UAAUxpH,EACjB,CAEAwpH,SAAAA,CAAUxpH,GACR,IAAK3xD,GAAS2xD,GACZ,OAGF,MAAMypH,EAAmB53M,OAAOqtB,KAAK0kH,GAAS12E,WACxCw8I,EAAgBxzM,KAAKqzM,YAE3B13M,OAAO65B,oBAAoBs0D,GAAQhpF,SAAQP,IACzC,MAAM2H,EAAM4hF,EAAOvpF,GACnB,IAAK43B,GAASjwB,GACZ,OAEF,MAAMirM,EAAW,CAAC,EAClB,IAAK,MAAMnoE,KAAUuoE,EACnBJ,EAASnoE,GAAU9iI,EAAI8iI,IAGxBriH,GAAQzgB,EAAIoG,aAAepG,EAAIoG,YAAc,CAAC/N,IAAMO,SAASknG,IACxDA,IAASznG,GAAQizM,EAAcvwK,IAAI+kE,IACrCwrG,EAAc72K,IAAIqrE,EAAMmrG,KAE1B,GAEN,CAMAM,eAAAA,CAAgB1zM,EAAQg/B,GACtB,MAAM20K,EAAa30K,EAAO1+B,QACpBA,EAsGV,SAA8BN,EAAQ2zM,GACpC,IAAKA,EACH,OAEF,IAAIrzM,EAAUN,EAAOM,QACrB,IAAKA,EAEH,YADAN,EAAOM,QAAUqzM,GAGfrzM,EAAQszM,UAGV5zM,EAAOM,QAAUA,EAAU1E,OAAO49C,OAAO,CAAC,EAAGl5C,EAAS,CAACszM,SAAS,EAAOC,YAAa,CAAC,KAEvF,OAAOvzM,CACT,CArHoBwzM,CAAqB9zM,EAAQ2zM,GAC7C,IAAKrzM,EACH,MAAO,GAGT,MAAMi/L,EAAat/L,KAAK8zM,kBAAkBzzM,EAASqzM,GAYnD,OAXIA,EAAWC,SAmFnB,SAAkBrU,EAAYhxL,GAC5B,MAAMmjM,EAAU,GACVzoL,EAAOrtB,OAAOqtB,KAAK1a,GACzB,IAAK,IAAIvL,EAAI,EAAGA,EAAIimB,EAAK1qB,OAAQyE,IAAK,CACpC,MAAMgxM,EAAOzU,EAAWt2K,EAAKjmB,IACzBgxM,GAAQA,EAAKxxE,UACfkvE,EAAQtwM,KAAK4yM,EAAKt7K,OAEtB,CAEA,OAAOlG,QAAQvI,IAAIynL,EACrB,CA1FMuC,CAASj0M,EAAOM,QAAQuzM,YAAaF,GAAYx5I,MAAK,KACpDn6D,EAAOM,QAAUqzM,CAAA,IAChB,SAKEpU,CACT,CAKAwU,iBAAAA,CAAkB/zM,EAAQg/B,GACxB,MAAMy0K,EAAgBxzM,KAAKqzM,YACrB/T,EAAa,GACbmS,EAAU1xM,EAAO6zM,cAAgB7zM,EAAO6zM,YAAc,CAAC,GACvDroL,EAAQ5vB,OAAOqtB,KAAK+V,GACpB6yB,EAAOhgC,KAAKsG,MAClB,IAAIn1B,EAEJ,IAAKA,EAAIwoB,EAAMjtB,OAAS,EAAGyE,GAAK,IAAKA,EAAG,CACtC,MAAMilG,EAAOz8E,EAAMxoB,GACnB,GAAuB,MAAnBilG,EAAKl2F,OAAO,GACd,SAGF,GAAa,YAATk2F,EAAoB,CACtBs3F,EAAWn+L,QAAQnB,KAAKyzM,gBAAgB1zM,EAAQg/B,IAChD,SAEF,MAAMvgC,EAAQugC,EAAOipE,GACrB,IAAIhxC,EAAYy6I,EAAQzpG,GACxB,MAAM9/F,EAAMsrM,EAAcl0M,IAAI0oG,GAE9B,GAAIhxC,EAAW,CACb,GAAI9uD,GAAO8uD,EAAUurE,SAAU,CAE7BvrE,EAAU/lD,OAAO/I,EAAK1J,EAAOozD,GAC7B,SAEAoF,EAAUj9B,SAGT7xB,GAAQA,EAAIuyE,UAMjBg3H,EAAQzpG,GAAQhxC,EAAY,IAAIs7I,GAAUpqM,EAAKnI,EAAQioG,EAAMxpG,GAC7D8gM,EAAWn+L,KAAK61D,IALdj3D,EAAOioG,GAAQxpG,CAMnB,CACA,OAAO8gM,CACT,CASAruL,MAAAA,CAAOlR,EAAQg/B,GACb,GAA8B,IAA1B/+B,KAAKqzM,YAAY52K,KAGnB,YADA9gC,OAAO49C,OAAOx5C,EAAQg/B,GAIxB,MAAMugK,EAAat/L,KAAK8zM,kBAAkB/zM,EAAQg/B,GAElD,OAAIugK,EAAWhhM,QACb6zM,GAASnxM,IAAIhB,KAAK8vM,OAAQxQ,IACnB,QAFT,CAIF,ECvHF,SAAS2U,GAAUh8G,EAAOi8G,GACxB,MAAM70M,EAAO44F,GAASA,EAAM53F,SAAW,CAAC,EAClCu5G,EAAUv6G,EAAKu6G,QACf7oG,OAAmB/R,IAAbK,EAAK0R,IAAoBmjM,EAAkB,EACjDrjM,OAAmB7R,IAAbK,EAAKwR,IAAoBqjM,EAAkB,EACvD,MAAO,CACLr/I,MAAO+kD,EAAU/oG,EAAME,EACvB+jD,IAAK8kD,EAAU7oG,EAAMF,EAEzB,CAsCA,SAASsjM,GAAwB9zE,EAAO+zE,GACtC,MAAMprL,EAAO,GACPqrL,EAAWh0E,EAAMi0E,uBAAuBF,GAC9C,IAAIrxM,EAAGswL,EAEP,IAAKtwL,EAAI,EAAGswL,EAAOghB,EAAS/1M,OAAQyE,EAAIswL,IAAQtwL,EAC9CimB,EAAK7nB,KAAKkzM,EAAStxM,GAAG1B,OAExB,OAAO2nB,CACT,CAEA,SAASurL,GAAWh0K,EAAO/hC,EAAOg2M,GAAuB,IAAdn0M,EAAAhC,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAU,CAAC,EACpD,MAAM2qB,EAAOuX,EAAMvX,KACbyrL,EAA8B,WAAjBp0M,EAAQuJ,KAC3B,IAAI7G,EAAGswL,EAAMG,EAAckhB,EAE3B,GAAc,OAAVl2M,EACF,OAGF,IAAIm2M,GAAQ,EACZ,IAAK5xM,EAAI,EAAGswL,EAAOrqK,EAAK1qB,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAE7C,GADAywL,GAAgBxqK,EAAKjmB,GACjBywL,IAAiBghB,EAAS,CAE5B,GADAG,GAAQ,EACJt0M,EAAQ2pB,IACV,SAEF,MAEF0qL,EAAan0K,EAAMxB,OAAOy0J,GACtBZ,GAAS8hB,KAAgBD,GAAyB,IAAVj2M,GAAe02L,GAAK12L,KAAW02L,GAAKwf,MAC9El2M,GAASk2M,EAEb,CAEA,OAAKC,GAAUt0M,EAAQ2pB,IAIhBxrB,EAHE,CAIX,CAmBA,SAASo2M,GAAU38G,EAAOl3C,GACxB,MAAM3f,EAAU62D,GAASA,EAAM53F,QAAQ+gC,QACvC,OAAOA,QAAwBpiC,IAAZoiC,QAAwCpiC,IAAf+hD,EAAKxgB,KACnD,CAcA,SAASs0K,GAAiBC,EAAQC,EAAUC,GAC1C,MAAMC,EAAWH,EAAOC,KAAcD,EAAOC,GAAY,CAAC,GAC1D,OAAOE,EAASD,KAAgBC,EAASD,GAAc,CAAC,EAC1D,CAEA,SAASE,GAAoB30K,EAAO40K,EAAQzrC,EAAU7yI,GACpD,IAAK,MAAMkqB,KAAQo0J,EAAOC,wBAAwBv+K,GAAM+iF,UAAW,CACjE,MAAMp7G,EAAQ+hC,EAAMwgB,EAAK1/C,OACzB,GAAIqoK,GAAalrK,EAAQ,IAAQkrK,GAAYlrK,EAAQ,EACnD,OAAOuiD,EAAK1/C,KAEhB,CAEA,OAAO,IACT,CAEA,SAASg0M,GAAajxF,EAAYzpB,GAChC,MAAM,MAAC0lC,EAAOi1E,YAAav0J,GAAQqjE,EAC7B0wF,EAASz0E,EAAMk1E,UAAYl1E,EAAMk1E,QAAU,CAAC,IAC5C,OAAC7c,EAAA,OAAQyc,EAAQ9zM,MAAOmyL,GAAgBzyI,EACxCy0J,EAAQ9c,EAAOE,KACf6c,EAAQN,EAAOvc,KACfr4L,EAlCR,SAAqBm1M,EAAYC,EAAY50J,GAC3C,MAAO,GAAP91C,OAAUyqM,EAAW9mK,GAAE,KAAA3jC,OAAI0qM,EAAW/mK,GAAE,KAAA3jC,OAAI81C,EAAKxgB,OAASwgB,EAAKlqB,KACjE,CAgCc++K,CAAYld,EAAQyc,EAAQp0J,GAClCsyI,EAAO14F,EAAOr8F,OACpB,IAAIiiC,EAEJ,IAAK,IAAIx9B,EAAI,EAAGA,EAAIswL,IAAQtwL,EAAG,CAC7B,MAAM4pF,EAAOgO,EAAO53F,IACb,CAACyyM,GAAQn0M,EAAO,CAACo0M,GAAQj3M,GAASmuF,EAEzCpsD,GADmBosD,EAAK4oH,UAAY5oH,EAAK4oH,QAAU,CAAC,IACjCE,GAASZ,GAAiBC,EAAQv0M,EAAKc,GAC1Dk/B,EAAMizJ,GAAgBh1L,EAEtB+hC,EAAMs1K,KAAOX,GAAoB30K,EAAO40K,GAAQ,EAAMp0J,EAAKlqB,MAC3D0J,EAAMu1K,QAAUZ,GAAoB30K,EAAO40K,GAAQ,EAAOp0J,EAAKlqB,OAE1C0J,EAAMw1K,gBAAkBx1K,EAAMw1K,cAAgB,CAAC,IACvDviB,GAAgBh1L,CAC/B,CACF,CAEA,SAASw3M,GAAgB31E,EAAOu4D,GAC9B,MAAM0F,EAASj+D,EAAMi+D,OACrB,OAAO3iM,OAAOqtB,KAAKs1K,GAAQp1K,QAAO3oB,GAAO+9L,EAAO/9L,GAAKq4L,OAASA,IAAMrmJ,OACtE,CA4BA,SAAS0jK,GAAYl1J,EAAMshF,GAEzB,MAAMmxD,EAAezyI,EAAKqjE,WAAW/iH,MAC/Bu3L,EAAO73I,EAAKo0J,QAAUp0J,EAAKo0J,OAAOvc,KACxC,GAAKA,EAAL,CAIAv2D,EAAQA,GAASthF,EAAK43I,QACtB,IAAK,MAAMh+F,KAAU0nC,EAAO,CAC1B,MAAMyyE,EAASn6G,EAAO46G,QACtB,IAAKT,QAA2B91M,IAAjB81M,EAAOlc,SAAsD55L,IAA/B81M,EAAOlc,GAAMpF,GACxD,cAEKshB,EAAOlc,GAAMpF,QACex0L,IAA/B81M,EAAOlc,GAAMmd,oBAA4E/2M,IAA7C81M,EAAOlc,GAAMmd,cAAcviB,WAClEshB,EAAOlc,GAAMmd,cAAcviB,EAEtC,EACF,CAEA,MAAM0iB,GAAsBtsM,GAAkB,UAATA,GAA6B,SAATA,EACnDusM,GAAmBA,CAACC,EAAQz1I,IAAWA,EAASy1I,EAASz6M,OAAO49C,OAAO,CAAC,EAAG68J,GAIlE,MAAMC,GAqBnBtoL,WAAAA,CAAYsyG,EAAOmzD,GACjBxzL,KAAKqgI,MAAQA,EACbrgI,KAAKigM,KAAO5/D,EAAMr6H,IAClBhG,KAAKqB,MAAQmyL,EACbxzL,KAAKs2M,gBAAkB,CAAC,EACxBt2M,KAAKs1M,YAAct1M,KAAKu2M,UACxBv2M,KAAKw2M,MAAQx2M,KAAKs1M,YAAYz+K,KAC9B72B,KAAKK,aAAUrB,EAEfgB,KAAKgpM,UAAW,EAChBhpM,KAAK0L,WAAQ1M,EACbgB,KAAKy2M,iBAAcz3M,EACnBgB,KAAK02M,oBAAiB13M,EACtBgB,KAAK22M,gBAAa33M,EAClBgB,KAAK42M,gBAAa53M,EAClBgB,KAAK62M,qBAAsB,EAC3B72M,KAAK82M,oBAAqB,EAC1B92M,KAAK+2M,cAAW/3M,EAChBgB,KAAKg3M,UAAY,GACjBh3M,KAAKi3M,8BAAgCA,mBACrCj3M,KAAKk3M,2BAA6BA,gBAElCl3M,KAAKm3M,YACP,CAEAA,UAAAA,GACE,MAAMp2J,EAAO/gD,KAAKs1M,YAClBt1M,KAAKszM,YACLtzM,KAAKo3M,aACLr2J,EAAKs2J,SAAWzC,GAAU7zJ,EAAKo0J,OAAQp0J,GACvC/gD,KAAKs3M,cAEDt3M,KAAKK,QAAQs0F,OAAS30F,KAAKqgI,MAAMk3E,gBAAgB,WACnDnuI,QAAQ0P,KAAK,qKAEjB,CAEA0+H,WAAAA,CAAYhkB,GACNxzL,KAAKqB,QAAUmyL,GACjByiB,GAAYj2M,KAAKs1M,aAEnBt1M,KAAKqB,MAAQmyL,CACf,CAEA4jB,UAAAA,GACE,MAAM/2E,EAAQrgI,KAAKqgI,MACbt/E,EAAO/gD,KAAKs1M,YACZ/oI,EAAUvsE,KAAKy3M,aAEfC,EAAWA,CAAC9e,EAAM51L,EAAGoD,EAAGwkC,IAAe,MAATguJ,EAAe51L,EAAa,MAAT41L,EAAehuJ,EAAIxkC,EAEpEuxM,EAAM52J,EAAK62J,QAAU9kB,GAAevmH,EAAQqrI,QAAS5B,GAAgB31E,EAAO,MAC5Ew3E,EAAM92J,EAAK+2J,QAAUhlB,GAAevmH,EAAQurI,QAAS9B,GAAgB31E,EAAO,MAC5E03E,EAAMh3J,EAAKi3J,QAAUllB,GAAevmH,EAAQyrI,QAAShC,GAAgB31E,EAAO,MAC5E09D,EAAYh9I,EAAKg9I,UACjBka,EAAMl3J,EAAKm3J,QAAUR,EAAS3Z,EAAW4Z,EAAKE,EAAKE,GACnDI,EAAMp3J,EAAKq3J,QAAUV,EAAS3Z,EAAW8Z,EAAKF,EAAKI,GACzDh3J,EAAKm4I,OAASl5L,KAAKq4M,cAAcV,GACjC52J,EAAKo4I,OAASn5L,KAAKq4M,cAAcR,GACjC92J,EAAKu3J,OAASt4M,KAAKq4M,cAAcN,GACjCh3J,EAAK23I,OAAS14L,KAAKq4M,cAAcJ,GACjCl3J,EAAKo0J,OAASn1M,KAAKq4M,cAAcF,EACnC,CAEAV,UAAAA,GACE,OAAOz3M,KAAKqgI,MAAM11H,KAAK6yL,SAASx9L,KAAKqB,MACvC,CAEAk1M,OAAAA,GACE,OAAOv2M,KAAKqgI,MAAMk4E,eAAev4M,KAAKqB,MACxC,CAMAg3M,aAAAA,CAAcG,GACZ,OAAOx4M,KAAKqgI,MAAMi+D,OAAOka,EAC3B,CAKAC,cAAAA,CAAexgH,GACb,MAAMl3C,EAAO/gD,KAAKs1M,YAClB,OAAOr9G,IAAUl3C,EAAK23I,OAClB33I,EAAKo0J,OACLp0J,EAAK23I,MACX,CAEA/vL,KAAAA,GACE3I,KAAKwxM,QAAQ,QACf,CAKAryB,QAAAA,GACE,MAAMp+H,EAAO/gD,KAAKs1M,YACdt1M,KAAK0L,OACPgsL,GAAoB13L,KAAK0L,MAAO1L,MAE9B+gD,EAAKs2J,UACPpB,GAAYl1J,EAEhB,CAKA23J,UAAAA,GACE,MAAMnsI,EAAUvsE,KAAKy3M,aACf9sM,EAAO4hE,EAAQ5hE,OAAS4hE,EAAQ5hE,KAAO,IACvCe,EAAQ1L,KAAK0L,MAMnB,GAAIysB,GAASxtB,GAAO,CAClB,MAAMo2C,EAAO/gD,KAAKs1M,YAClBt1M,KAAK0L,MAlRX,SAAkCf,EAAMo2C,GACtC,MAAM,OAAC23I,EAAA,OAAQyc,GAAUp0J,EACnB43J,EAA2B,MAAhBjgB,EAAOE,KAAe,IAAM,IACvCggB,EAA2B,MAAhBzD,EAAOvc,KAAe,IAAM,IACvC5vK,EAAOrtB,OAAOqtB,KAAKre,GACnBkuM,EAAQ,IAAInwL,MAAMM,EAAK1qB,QAC7B,IAAIyE,EAAGswL,EAAM9yL,EACb,IAAKwC,EAAI,EAAGswL,EAAOrqK,EAAK1qB,OAAQyE,EAAIswL,IAAQtwL,EAC1CxC,EAAMyoB,EAAKjmB,GACX81M,EAAM91M,GAAK,CACT,CAAC41M,GAAWp4M,EACZ,CAACq4M,GAAWjuM,EAAKpK,IAGrB,OAAOs4M,CACT,CAmQmBC,CAAyBnuM,EAAMo2C,QACvC,GAAIr1C,IAAUf,EAAM,CACzB,GAAIe,EAAO,CAETgsL,GAAoBhsL,EAAO1L,MAE3B,MAAM+gD,EAAO/gD,KAAKs1M,YAClBW,GAAYl1J,GACZA,EAAK43I,QAAU,GAEbhuL,GAAQhP,OAAOo9M,aAAapuM,KrB9QG1J,EqB+QTjB,MrB/QEiqB,EqB+QRtf,GrB9QditL,SACR3tK,EAAM2tK,SAASrlI,UAAUpxD,KAAKF,IAIhCtF,OAAOwD,eAAe8qB,EAAO,WAAY,CACvCY,cAAc,EACdC,YAAY,EACZtsB,MAAO,CACL+zD,UAAW,CAACtxD,MAIhBw2L,GAAY32L,SAASP,IACnB,MAAMyyF,EAAS,UAAYshG,GAAY/zL,GACjCogD,EAAO12B,EAAM1pB,GAEnB5E,OAAOwD,eAAe8qB,EAAO1pB,EAAK,CAChCsqB,cAAc,EACdC,YAAY,EACZtsB,KAAAA,GAAe,QAAAkjF,EAAArjF,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAg5D,GAAA79E,EAAA,EAAAA,EAAA69E,EAAA79E,IAAJurB,EAAIvrB,GAAAxF,UAAAwF,GACX,MAAMsD,EAAMw5C,EAAKliD,MAAMuB,KAAMovB,GAQ7B,OANAnF,EAAM2tK,SAASrlI,UAAUzxD,SAAS1E,IACF,oBAAnBA,EAAO42F,IAChB52F,EAAO42F,MAAW5jE,MAIfjoB,CACT,GACA,MqBiPAnH,KAAKg3M,UAAY,GACjBh3M,KAAK0L,MAAQf,ErBlRZ,IAA2Bsf,EAAOhpB,CqBoRvC,CAEAq2M,WAAAA,GACE,MAAMv2J,EAAO/gD,KAAKs1M,YAElBt1M,KAAK04M,aAED14M,KAAKi3M,qBACPl2J,EAAKwrB,QAAU,IAAIvsE,KAAKi3M,mBAE5B,CAEA+B,qBAAAA,CAAsBC,GACpB,MAAMl4J,EAAO/gD,KAAKs1M,YACZ/oI,EAAUvsE,KAAKy3M,aACrB,IAAIyB,GAAe,EAEnBl5M,KAAK04M,aAGL,MAAMS,EAAap4J,EAAKs2J,SACxBt2J,EAAKs2J,SAAWzC,GAAU7zJ,EAAKo0J,OAAQp0J,GAGnCA,EAAKxgB,QAAUgsC,EAAQhsC,QACzB24K,GAAe,EAEfjD,GAAYl1J,GACZA,EAAKxgB,MAAQgsC,EAAQhsC,OAKvBvgC,KAAKo5M,gBAAgBH,IAGjBC,GAAgBC,IAAep4J,EAAKs2J,YACtChC,GAAar1M,KAAM+gD,EAAK43I,SACxB53I,EAAKs2J,SAAWzC,GAAU7zJ,EAAKo0J,OAAQp0J,GAE3C,CAMAuyJ,SAAAA,GACE,MAAMxpH,EAAS9pF,KAAKqgI,MAAMv2C,OACpBuvH,EAAYvvH,EAAOwvH,iBAAiBt5M,KAAKw2M,OACzCtQ,EAASp8G,EAAOyvH,gBAAgBv5M,KAAKy3M,aAAc4B,GAAW,GACpEr5M,KAAKK,QAAUypF,EAAO0vH,eAAetT,EAAQlmM,KAAK+3F,cAClD/3F,KAAKgpM,SAAWhpM,KAAKK,QAAQg+L,QAC7Br+L,KAAKs2M,gBAAkB,CAAC,CAC1B,CAMAlqM,KAAAA,CAAMyoD,EAAO5jB,GACX,MAAOqkK,YAAav0J,EAAMr1C,MAAOf,GAAQ3K,MACnC,OAAC04L,EAAA,SAAQ2e,GAAYt2J,EACrBy0J,EAAQ9c,EAAOE,KAErB,IAEI71L,EAAGkvM,EAAKt3G,EAFR8+G,EAAmB,IAAV5kJ,GAAe5jB,IAAUtmC,EAAKrM,QAAgByiD,EAAK03I,QAC5DtuK,EAAO0qC,EAAQ,GAAK9T,EAAK43I,QAAQ9jI,EAAQ,GAG7C,IAAsB,IAAlB70D,KAAKgpM,SACPjoJ,EAAK43I,QAAUhuL,EACfo2C,EAAK03I,SAAU,EACf99F,EAAShwF,MACJ,CAEHgwF,EADEhyE,GAAQhe,EAAKkqD,IACN70D,KAAK05M,eAAe34J,EAAMp2C,EAAMkqD,EAAO5jB,GACvC9Y,GAASxtB,EAAKkqD,IACd70D,KAAK25M,gBAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GAExCjxC,KAAK45M,mBAAmB74J,EAAMp2C,EAAMkqD,EAAO5jB,GAGtD,MAAM4oK,EAA6BA,IAAqB,OAAf5H,EAAIuD,IAAoBrrL,GAAQ8nL,EAAIuD,GAASrrL,EAAKqrL,GAC3F,IAAKzyM,EAAI,EAAGA,EAAIkuC,IAASluC,EACvBg+C,EAAK43I,QAAQ51L,EAAI8xD,GAASo9I,EAAMt3G,EAAO53F,GACnC02M,IACEI,MACFJ,GAAS,GAEXtvL,EAAO8nL,GAGXlxJ,EAAK03I,QAAUghB,EAGbpC,GACFhC,GAAar1M,KAAM26F,EAEvB,CAaAi/G,kBAAAA,CAAmB74J,EAAMp2C,EAAMkqD,EAAO5jB,GACpC,MAAM,OAACynJ,EAAA,OAAQyc,GAAUp0J,EACnBy0J,EAAQ9c,EAAOE,KACf6c,EAAQN,EAAOvc,KACfkhB,EAASphB,EAAOqhB,YAChBC,EAActhB,IAAWyc,EACzBx6G,EAAS,IAAIjyE,MAAMuoB,GACzB,IAAIluC,EAAGswL,EAAMhyL,EAEb,IAAK0B,EAAI,EAAGswL,EAAOpiJ,EAAOluC,EAAIswL,IAAQtwL,EACpC1B,EAAQ0B,EAAI8xD,EACZ8lC,EAAO53F,GAAK,CACV,CAACyyM,GAAQwE,GAAethB,EAAOtsL,MAAM0tM,EAAOz4M,GAAQA,GACpD,CAACo0M,GAAQN,EAAO/oM,MAAMzB,EAAKtJ,GAAQA,IAGvC,OAAOs5F,CACT,CAaA++G,cAAAA,CAAe34J,EAAMp2C,EAAMkqD,EAAO5jB,GAChC,MAAM,OAACioJ,EAAA,OAAQC,GAAUp4I,EACnB45C,EAAS,IAAIjyE,MAAMuoB,GACzB,IAAIluC,EAAGswL,EAAMhyL,EAAOsrF,EAEpB,IAAK5pF,EAAI,EAAGswL,EAAOpiJ,EAAOluC,EAAIswL,IAAQtwL,EACpC1B,EAAQ0B,EAAI8xD,EACZ83B,EAAOhiF,EAAKtJ,GACZs5F,EAAO53F,GAAK,CACVC,EAAGk2L,EAAO9sL,MAAMugF,EAAK,GAAItrF,GACzB+E,EAAG+yL,EAAO/sL,MAAMugF,EAAK,GAAItrF,IAG7B,OAAOs5F,CACT,CAaAg/G,eAAAA,CAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACjC,MAAM,OAACioJ,EAAA,OAAQC,GAAUp4I,GACnB,SAACk5J,EAAW,aAAKC,EAAW,KAAOl6M,KAAKgpM,SACxCruG,EAAS,IAAIjyE,MAAMuoB,GACzB,IAAIluC,EAAGswL,EAAMhyL,EAAOsrF,EAEpB,IAAK5pF,EAAI,EAAGswL,EAAOpiJ,EAAOluC,EAAIswL,IAAQtwL,EACpC1B,EAAQ0B,EAAI8xD,EACZ83B,EAAOhiF,EAAKtJ,GACZs5F,EAAO53F,GAAK,CACVC,EAAGk2L,EAAO9sL,MAAM8nL,GAAiBvnG,EAAMstH,GAAW54M,GAClD+E,EAAG+yL,EAAO/sL,MAAM8nL,GAAiBvnG,EAAMutH,GAAW74M,IAGtD,OAAOs5F,CACT,CAKAw/G,SAAAA,CAAU94M,GACR,OAAOrB,KAAKs1M,YAAY3c,QAAQt3L,EAClC,CAKA+4M,cAAAA,CAAe/4M,GACb,OAAOrB,KAAKs1M,YAAY3qM,KAAKtJ,EAC/B,CAKAkzM,UAAAA,CAAWt8G,EAAO0C,EAAQ/wF,GACxB,MAAMy2H,EAAQrgI,KAAKqgI,MACbt/E,EAAO/gD,KAAKs1M,YACZ92M,EAAQm8F,EAAO1C,EAAM2gG,MAK3B,OAAO2b,GAJO,CACZvrL,KAAMmrL,GAAwB9zE,GAAO,GACrCthG,OAAQ47D,EAAO46G,QAAQt9G,EAAM2gG,MAAMmd,eAEZv3M,EAAOuiD,EAAK1/C,MAAO,CAACuI,QAC/C,CAKAywM,qBAAAA,CAAsB99M,EAAO07F,EAAO0C,EAAQp6D,GAC1C,MAAM+5K,EAAc3/G,EAAO1C,EAAM2gG,MACjC,IAAIp6L,EAAwB,OAAhB87M,EAAuBC,IAAMD,EACzC,MAAMv7K,EAASwB,GAASo6D,EAAO46G,QAAQt9G,EAAM2gG,MACzCr4J,GAASxB,IACXwB,EAAMxB,OAASA,EACfvgC,EAAQ+1M,GAAWh0K,EAAO+5K,EAAat6M,KAAKs1M,YAAYj0M,QAE1D9E,EAAMwU,IAAM5D,KAAK4D,IAAIxU,EAAMwU,IAAKvS,GAChCjC,EAAMsU,IAAM1D,KAAK0D,IAAItU,EAAMsU,IAAKrS,EAClC,CAKAg8M,SAAAA,CAAUviH,EAAOwiH,GACf,MAAM15J,EAAO/gD,KAAKs1M,YACZ3c,EAAU53I,EAAK43I,QACf8gB,EAAS14J,EAAK03I,SAAWxgG,IAAUl3C,EAAK23I,OACxCrF,EAAOsF,EAAQr6L,OACfo8M,EAAa16M,KAAKy4M,eAAexgH,GACjC13D,EA7YUo6K,EAACF,EAAU15J,EAAMs/E,IAAUo6E,IAAa15J,EAAK03G,QAAU13G,EAAKs2J,UAC3E,CAACruL,KAAMmrL,GAAwB9zE,GAAO,GAAOthG,OAAQ,MA4YxC47K,CAAYF,EAAU15J,EAAM/gD,KAAKqgI,OACzC9jI,EAAQ,CAACwU,IAAKshB,OAAOuiK,kBAAmB/jL,IAAKwhB,OAAOuoL,oBACnD7pM,IAAK8pM,EAAUhqM,IAAKiqM,GAtf/B,SAAuB7iH,GACrB,MAAM,IAAClnF,EAAG,IAAEF,EAAG,WAAEgoL,EAAU,WAAEC,GAAc7gG,EAAM8gG,gBACjD,MAAO,CACLhoL,IAAK8nL,EAAa9nL,EAAMshB,OAAOuoL,kBAC/B/pM,IAAKioL,EAAajoL,EAAMwhB,OAAOuiK,kBAEnC,CAgf2CmE,CAAc2hB,GACrD,IAAI33M,EAAG43F,EAEP,SAASogH,IACPpgH,EAASg+F,EAAQ51L,GACjB,MAAM2xM,EAAa/5G,EAAO+/G,EAAW9hB,MACrC,OAAQhG,GAASj4F,EAAO1C,EAAM2gG,QAAUiiB,EAAWnG,GAAcoG,EAAWpG,CAC9E,CAEA,IAAK3xM,EAAI,EAAGA,EAAIswL,IACV0nB,MAGJ/6M,KAAKq6M,sBAAsB99M,EAAO07F,EAAO0C,EAAQp6D,IAC7Ck5K,MALkB12M,GAUxB,GAAI02M,EAEF,IAAK12M,EAAIswL,EAAO,EAAGtwL,GAAK,IAAKA,EAC3B,IAAIg4M,IAAJ,CAGA/6M,KAAKq6M,sBAAsB99M,EAAO07F,EAAO0C,EAAQp6D,GACjD,MAGJ,OAAOhkC,CACT,CAEAy+M,kBAAAA,CAAmB/iH,GACjB,MAAM0C,EAAS36F,KAAKs1M,YAAY3c,QAC1B55J,EAAS,GACf,IAAIh8B,EAAGswL,EAAM70L,EAEb,IAAKuE,EAAI,EAAGswL,EAAO14F,EAAOr8F,OAAQyE,EAAIswL,IAAQtwL,EAC5CvE,EAAQm8F,EAAO53F,GAAGk1F,EAAM2gG,MACpBhG,GAASp0L,IACXugC,EAAO59B,KAAK3C,GAGhB,OAAOugC,CACT,CAMAk8K,cAAAA,GACE,OAAO,CACT,CAKAC,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,YACZ5c,EAAS33I,EAAK23I,OACdyc,EAASp0J,EAAKo0J,OACdx6G,EAAS36F,KAAKm6M,UAAU94M,GAC9B,MAAO,CACLkjJ,MAAOm0C,EAAS,GAAKA,EAAOyiB,iBAAiBxgH,EAAO+9F,EAAOE,OAAS,GACpEp6L,MAAO22M,EAAS,GAAKA,EAAOgG,iBAAiBxgH,EAAOw6G,EAAOvc,OAAS,GAExE,CAKA4Y,OAAAA,CAAQ5nM,GACN,MAAMm3C,EAAO/gD,KAAKs1M,YAClBt1M,KAAKiR,OAAOrH,GAAQ,WACpBm3C,EAAKq6J,MA1pBT,SAAgB58M,GACd,IAAI8E,EAAGsnC,EAAG1kC,EAAG2zC,EAWb,OATI1hB,GAAS35B,IACX8E,EAAI9E,EAAMs3D,IACVlrB,EAAIpsC,EAAM+H,MACVL,EAAI1H,EAAM6gF,OACVxlC,EAAIr7C,EAAM8H,MAEVhD,EAAIsnC,EAAI1kC,EAAI2zC,EAAIr7C,EAGX,CACLs3D,IAAKxyD,EACLiD,MAAOqkC,EACPy0C,OAAQn5E,EACRI,KAAMuzC,EACNsC,UAAoB,IAAV39C,EAEd,CAuoBiB68M,CAAOvoB,GAAe9yL,KAAKK,QAAQs/L,KAzqBpD,SAAqBzG,EAAQC,EAAQ+a,GACnC,IAAwB,IAApBA,EACF,OAAO,EAET,MAAMlxM,EAAIixM,GAAU/a,EAAQgb,GACtB9tM,EAAI6tM,GAAU9a,EAAQ+a,GAE5B,MAAO,CACLp+I,IAAK1vD,EAAE0uD,IACPvuD,MAAOvD,EAAE8xD,IACTuqB,OAAQj5E,EAAEyuD,MACVvuD,KAAMtD,EAAE6xD,MAEZ,CA4pB0DymJ,CAAYv6J,EAAKm4I,OAAQn4I,EAAKo4I,OAAQn5L,KAAKi7M,mBACnG,CAKAhqM,MAAAA,CAAOrH,GAAO,CAEd8nM,IAAAA,GACE,MAAM1rM,EAAMhG,KAAKigM,KACX5/D,EAAQrgI,KAAKqgI,MACbt/E,EAAO/gD,KAAKs1M,YACZrnD,EAAWltG,EAAKp2C,MAAQ,GACxB+1C,EAAO2/E,EAAMk7E,UACbh5E,EAAS,GACT1tE,EAAQ70D,KAAK22M,YAAc,EAC3B1lK,EAAQjxC,KAAK42M,YAAe3oD,EAAS3vJ,OAASu2D,EAC9C2pI,EAA0Bx+L,KAAKK,QAAQm+L,wBAC7C,IAAIz7L,EAMJ,IAJIg+C,EAAKwrB,SACPxrB,EAAKwrB,QAAQmlI,KAAK1rM,EAAK06C,EAAMmU,EAAO5jB,GAGjCluC,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,IAASluC,EAAG,CACtC,MAAM+lB,EAAUmlI,EAASlrJ,GACrB+lB,EAAQ2vI,SAGR3vI,EAAQy5G,QAAUi8D,EACpBj8D,EAAOphI,KAAK2nB,GAEZA,EAAQ4oL,KAAK1rM,EAAK06C,GAEtB,CAEA,IAAK39C,EAAI,EAAGA,EAAIw/H,EAAOjkI,SAAUyE,EAC/Bw/H,EAAOx/H,GAAG2uM,KAAK1rM,EAAK06C,EAExB,CASAktJ,QAAAA,CAASvsM,EAAOkhI,GACd,MAAM34H,EAAO24H,EAAS,SAAW,UACjC,YAAiBvjI,IAAVqC,GAAuBrB,KAAKs1M,YAAY/oI,QAC3CvsE,KAAKw7M,6BAA6B5xM,GAClC5J,KAAKy7M,0BAA0Bp6M,GAAS,EAAGuI,EACjD,CAKAmuF,UAAAA,CAAW12F,EAAOkhI,EAAQ34H,GACxB,MAAM2iE,EAAUvsE,KAAKy3M,aACrB,IAAIrnK,EACJ,GAAI/uC,GAAS,GAAKA,EAAQrB,KAAKs1M,YAAY3qM,KAAKrM,OAAQ,CACtD,MAAMwqB,EAAU9oB,KAAKs1M,YAAY3qM,KAAKtJ,GACtC+uC,EAAUtnB,EAAQiuL,WACfjuL,EAAQiuL,SA7jBjB,SAA2BlwF,EAAQxlH,EAAOynB,GACxC,OAAO+5E,GAAcgkB,EAAQ,CAC3B0b,QAAQ,EACR9sF,UAAWp0C,EACXs5F,YAAQ37F,EACR08M,SAAK18M,EACL8pB,UACAznB,QACAuI,KAAM,UACNitB,KAAM,QAEV,CAkjB4B8kL,CAAkB37M,KAAK+3F,aAAc12F,EAAOynB,IAClEsnB,EAAQuqD,OAAS36F,KAAKm6M,UAAU94M,GAChC+uC,EAAQsrK,IAAMnvI,EAAQ5hE,KAAKtJ,GAC3B+uC,EAAQ/uC,MAAQ+uC,EAAQqF,UAAYp0C,OAEpC+uC,EAAUpwC,KAAK+2M,WACZ/2M,KAAK+2M,SAhlBd,SAA8BlwF,EAAQxlH,GACpC,OAAOwhG,GAAcgkB,EACnB,CACE0b,QAAQ,EACRh2D,aAASvtE,EACTw0L,aAAcnyL,EACdA,QACAuI,KAAM,UACNitB,KAAM,WAGZ,CAqkByB+kL,CAAqB57M,KAAKqgI,MAAMtoC,aAAc/3F,KAAKqB,QACtE+uC,EAAQm8B,QAAUA,EAClBn8B,EAAQ/uC,MAAQ+uC,EAAQojJ,aAAexzL,KAAKqB,MAK9C,OAFA+uC,EAAQmyF,SAAWA,EACnBnyF,EAAQxmC,KAAOA,EACRwmC,CACT,CAMAorK,4BAAAA,CAA6B5xM,GAC3B,OAAO5J,KAAK67M,uBAAuB77M,KAAKi3M,mBAAmBroK,GAAIhlC,EACjE,CAOA6xM,yBAAAA,CAA0Bp6M,EAAOuI,GAC/B,OAAO5J,KAAK67M,uBAAuB77M,KAAKk3M,gBAAgBtoK,GAAIhlC,EAAMvI,EACpE,CAKAw6M,sBAAAA,CAAuBtgN,GAAsC,IAAzBqO,EAAAvL,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAO,UAAWgD,EAAKhD,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EACzD,MAAMujI,EAAkB,WAAT34H,EACT2qE,EAAQv0E,KAAKs2M,gBACb33G,EAAWpjG,EAAc,IAAMqO,EAC/BwsM,EAAS7hI,EAAMoqB,GACfxO,EAAUnwF,KAAK62M,qBAAuBtiB,GAAQlzL,GACpD,GAAI+0M,EACF,OAAOD,GAAiBC,EAAQjmH,GAElC,MAAMrG,EAAS9pF,KAAKqgI,MAAMv2C,OACpBuvH,EAAYvvH,EAAOgyH,wBAAwB97M,KAAKw2M,MAAOj7M,GACvD4qM,EAAW5jE,EAAS,IAAAt3H,OAAI1P,EAAY,SAAQ,QAASA,EAAa,IAAM,CAACA,EAAa,IACtF2qM,EAASp8G,EAAOyvH,gBAAgBv5M,KAAKy3M,aAAc4B,GACnD7lC,EAAQ73K,OAAOqtB,KAAK0kH,GAASugB,SAAS1yJ,IAItCwjC,EAAS+qD,EAAOiyH,oBAAoB7V,EAAQ1yB,GADlCpjI,IAAMpwC,KAAK+3F,WAAW12F,EAAOkhI,EAAQ34H,IACau8L,GAalE,OAXIpnK,EAAO40K,UAGT50K,EAAO40K,QAAUxjH,EAKjB5b,EAAMoqB,GAAYhjG,OAAOk9K,OAAOs9B,GAAiBp3K,EAAQoxD,KAGpDpxD,CACT,CAMAi9K,kBAAAA,CAAmB36M,EAAOkoD,EAAYg5E,GACpC,MAAMlC,EAAQrgI,KAAKqgI,MACb9rD,EAAQv0E,KAAKs2M,gBACb33G,EAAW,aAAA1zF,OAAas+C,GACxB6sJ,EAAS7hI,EAAMoqB,GACrB,GAAIy3G,EACF,OAAOA,EAET,IAAI/1M,EACJ,IAAgC,IAA5BggI,EAAMhgI,QAAQ22D,UAAqB,CACrC,MAAM8yB,EAAS9pF,KAAKqgI,MAAMv2C,OACpBuvH,EAAYvvH,EAAOmyH,0BAA0Bj8M,KAAKw2M,MAAOjtJ,GACzD28I,EAASp8G,EAAOyvH,gBAAgBv5M,KAAKy3M,aAAc4B,GACzDh5M,EAAUypF,EAAO0vH,eAAetT,EAAQlmM,KAAK+3F,WAAW12F,EAAOkhI,EAAQh5E,IAEzE,MAAM+1I,EAAa,IAAI8T,GAAW/yE,EAAOhgI,GAAWA,EAAQi/L,YAI5D,OAHIj/L,GAAWA,EAAQimM,aACrB/xH,EAAMoqB,GAAYhjG,OAAOk9K,OAAOymB,IAE3BA,CACT,CAMA4c,gBAAAA,CAAiB77M,GACf,GAAKA,EAAQszM,QAGb,OAAO3zM,KAAK02M,iBAAmB12M,KAAK02M,eAAiB/6M,OAAO49C,OAAO,CAAC,EAAGl5C,GACzE,CAMA87M,cAAAA,CAAevyM,EAAMwyM,GACnB,OAAQA,GAAiBlG,GAAmBtsM,IAAS5J,KAAKqgI,MAAMg8E,mBAClE,CAKAC,iBAAAA,CAAkBznJ,EAAOjrD,GACvB,MAAM2yM,EAAYv8M,KAAKy7M,0BAA0B5mJ,EAAOjrD,GAClD4yM,EAA0Bx8M,KAAK02M,eAC/B0F,EAAgBp8M,KAAKk8M,iBAAiBK,GACtCJ,EAAiBn8M,KAAKm8M,eAAevyM,EAAMwyM,IAAmBA,IAAkBI,EAEtF,OADAx8M,KAAKy8M,oBAAoBL,EAAexyM,EAAM2yM,GACvC,CAACH,gBAAeD,iBACzB,CAMAO,aAAAA,CAAc5zL,EAASznB,EAAOiN,EAAY1E,GACpCssM,GAAmBtsM,GACrBjO,OAAO49C,OAAOzwB,EAASxa,GAEvBtO,KAAKg8M,mBAAmB36M,EAAOuI,GAAMqH,OAAO6X,EAASxa,EAEzD,CAMAmuM,mBAAAA,CAAoBL,EAAexyM,EAAM8pM,GACnC0I,IAAkBlG,GAAmBtsM,IACvC5J,KAAKg8M,wBAAmBh9M,EAAW4K,GAAMqH,OAAOmrM,EAAe1I,EAEnE,CAKAiJ,SAAAA,CAAU7zL,EAASznB,EAAOuI,EAAM24H,GAC9Bz5G,EAAQy5G,OAASA,EACjB,MAAMliI,EAAUL,KAAK4tM,SAASvsM,EAAOkhI,GACrCviI,KAAKg8M,mBAAmB36M,EAAOuI,EAAM24H,GAAQtxH,OAAO6X,EAAS,CAG3DzoB,SAAWkiI,GAAUviI,KAAKk8M,iBAAiB77M,IAAaA,GAE5D,CAEAu8M,gBAAAA,CAAiB9zL,EAAS0qK,EAAcnyL,GACtCrB,KAAK28M,UAAU7zL,EAASznB,EAAO,UAAU,EAC3C,CAEAw7M,aAAAA,CAAc/zL,EAAS0qK,EAAcnyL,GACnCrB,KAAK28M,UAAU7zL,EAASznB,EAAO,UAAU,EAC3C,CAKAy7M,wBAAAA,GACE,MAAMh0L,EAAU9oB,KAAKs1M,YAAY/oI,QAE7BzjD,GACF9oB,KAAK28M,UAAU7zL,OAAS9pB,EAAW,UAAU,EAEjD,CAKA+9M,qBAAAA,GACE,MAAMj0L,EAAU9oB,KAAKs1M,YAAY/oI,QAE7BzjD,GACF9oB,KAAK28M,UAAU7zL,OAAS9pB,EAAW,UAAU,EAEjD,CAKAo6M,eAAAA,CAAgBH,GACd,MAAMtuM,EAAO3K,KAAK0L,MACZuiJ,EAAWjuJ,KAAKs1M,YAAY3qM,KAGlC,IAAK,MAAOqoF,EAAQy+C,EAAMC,KAAS1xI,KAAKg3M,UACtCh3M,KAAKgzF,GAAQy+C,EAAMC,GAErB1xI,KAAKg3M,UAAY,GAEjB,MAAMgG,EAAU/uD,EAAS3vJ,OACnB2+M,EAAUtyM,EAAKrM,OACf2yC,EAAQ9jC,KAAK4D,IAAIksM,EAASD,GAE5B/rK,GAKFjxC,KAAKoM,MAAM,EAAG6kC,GAGZgsK,EAAUD,EACZh9M,KAAKk9M,gBAAgBF,EAASC,EAAUD,EAAS/D,GACxCgE,EAAUD,GACnBh9M,KAAKm9M,gBAAgBF,EAASD,EAAUC,EAE5C,CAKAC,eAAAA,CAAgBroJ,EAAO5jB,GAAgC,IAAzBgoK,IAAA56M,UAAAC,OAAA,QAAAU,IAAAX,UAAA,KAAAA,UAAA,GAC5B,MAAM0iD,EAAO/gD,KAAKs1M,YACZ3qM,EAAOo2C,EAAKp2C,KACZmqD,EAAMD,EAAQ5jB,EACpB,IAAIluC,EAEJ,MAAMq6M,EAAQnuL,IAEZ,IADAA,EAAI3wB,QAAU2yC,EACTluC,EAAIksB,EAAI3wB,OAAS,EAAGyE,GAAK+xD,EAAK/xD,IACjCksB,EAAIlsB,GAAKksB,EAAIlsB,EAAIkuC,EACnB,EAIF,IAFAmsK,EAAKzyM,GAEA5H,EAAI8xD,EAAO9xD,EAAI+xD,IAAO/xD,EACzB4H,EAAK5H,GAAK,IAAI/C,KAAKk3M,gBAGjBl3M,KAAKgpM,UACPoU,EAAKr8J,EAAK43I,SAEZ34L,KAAKoM,MAAMyoD,EAAO5jB,GAEdgoK,GACFj5M,KAAKq9M,eAAe1yM,EAAMkqD,EAAO5jB,EAAO,QAE5C,CAEAosK,cAAAA,CAAev0L,EAAS+rC,EAAO5jB,EAAOrnC,GAAO,CAK7CuzM,eAAAA,CAAgBtoJ,EAAO5jB,GACrB,MAAM8P,EAAO/gD,KAAKs1M,YAClB,GAAIt1M,KAAKgpM,SAAU,CACjB,MAAM5mB,EAAUrhI,EAAK43I,QAAQp3L,OAAOszD,EAAO5jB,GACvC8P,EAAKs2J,UACPpB,GAAYl1J,EAAMqhI,GAGtBrhI,EAAKp2C,KAAKpJ,OAAOszD,EAAO5jB,EAC1B,CAKAqsK,KAAAA,CAAMluL,GACJ,GAAIpvB,KAAKgpM,SACPhpM,KAAKg3M,UAAU71M,KAAKiuB,OACf,CACL,MAAO4jE,EAAQy+C,EAAMC,GAAQtiH,EAC7BpvB,KAAKgzF,GAAQy+C,EAAMC,GAErB1xI,KAAKqgI,MAAMk9E,aAAap8M,KAAK,CAACnB,KAAKqB,SAAU+tB,GAC/C,CAEAouL,WAAAA,GACE,MAAMvsK,EAAQ5yC,UAAUC,OACxB0B,KAAKs9M,MAAM,CAAC,kBAAmBt9M,KAAKy3M,aAAa9sM,KAAKrM,OAAS2yC,EAAOA,GACxE,CAEAwsK,UAAAA,GACEz9M,KAAKs9M,MAAM,CAAC,kBAAmBt9M,KAAKs1M,YAAY3qM,KAAKrM,OAAS,EAAG,GACnE,CAEAo/M,YAAAA,GACE19M,KAAKs9M,MAAM,CAAC,kBAAmB,EAAG,GACpC,CAEAK,aAAAA,CAAc9oJ,EAAO5jB,GACfA,GACFjxC,KAAKs9M,MAAM,CAAC,kBAAmBzoJ,EAAO5jB,IAExC,MAAM2sK,EAAWv/M,UAAUC,OAAS,EAChCs/M,GACF59M,KAAKs9M,MAAM,CAAC,kBAAmBzoJ,EAAO+oJ,GAE1C,CAEAC,cAAAA,GACE79M,KAAKs9M,MAAM,CAAC,kBAAmB,EAAGj/M,UAAUC,QAC9C,EC5hCF,SAASw/M,GAAqB/8J,GAC5B,MAAMk3C,EAAQl3C,EAAK23I,OACb35J,EAnBR,SAA2Bk5D,EAAOphE,GAChC,IAAKohE,EAAM8lH,OAAOC,KAAM,CACtB,MAAMC,EAAehmH,EAAMm9G,wBAAwBv+K,GACnD,IAAIkI,EAAS,GAEb,IAAK,IAAIh8B,EAAI,EAAGswL,EAAO4qB,EAAa3/M,OAAQyE,EAAIswL,EAAMtwL,IACpDg8B,EAASA,EAAO9zB,OAAOgzM,EAAal7M,GAAGqhH,WAAW42F,mBAAmB/iH,IAEvEA,EAAM8lH,OAAOC,KAAOnmB,GAAa94J,EAAO64E,MAAK,CAAC3xG,EAAGC,IAAMD,EAAIC,KAE7D,OAAO+xF,EAAM8lH,OAAOC,IACtB,CAQiBE,CAAkBjmH,EAAOl3C,EAAKlqB,MAC7C,IACI9zB,EAAGswL,EAAM8qB,EAAMh0L,EADfpZ,EAAMknF,EAAMhlD,QAEhB,MAAMmrK,EAAmBA,KACV,QAATD,IAA4B,QAAVA,IAIlB5pB,GAAQpqK,KAEVpZ,EAAM5D,KAAK4D,IAAIA,EAAK5D,KAAK2H,IAAIqpM,EAAOh0L,IAASpZ,IAE/CoZ,EAAOg0L,EAAA,EAGT,IAAKp7M,EAAI,EAAGswL,EAAOt0J,EAAOzgC,OAAQyE,EAAIswL,IAAQtwL,EAC5Co7M,EAAOlmH,EAAM+gG,iBAAiBj6J,EAAOh8B,IACrCq7M,IAIF,IADAj0L,OAAOnrB,EACF+D,EAAI,EAAGswL,EAAOp7F,EAAMqkG,MAAMh+L,OAAQyE,EAAIswL,IAAQtwL,EACjDo7M,EAAOlmH,EAAMomH,gBAAgBt7M,GAC7Bq7M,IAGF,OAAOrtM,CACT,CA2FA,SAAS45G,GAAWhsF,EAAOguD,EAAMwoH,EAAQpyM,GAMvC,OALI4lB,GAAQgW,GA5Bd,SAAuBA,EAAOguD,EAAMwoH,EAAQpyM,GAC1C,MAAMu7M,EAAanJ,EAAO/oM,MAAMuyB,EAAM,GAAI57B,GACpCw7M,EAAWpJ,EAAO/oM,MAAMuyB,EAAM,GAAI57B,GAClCgO,EAAM5D,KAAK4D,IAAIutM,EAAYC,GAC3B1tM,EAAM1D,KAAK0D,IAAIytM,EAAYC,GACjC,IAAIC,EAAWztM,EACX0tM,EAAS5tM,EAET1D,KAAK2H,IAAI/D,GAAO5D,KAAK2H,IAAIjE,KAC3B2tM,EAAW3tM,EACX4tM,EAAS1tM,GAKX47E,EAAKwoH,EAAOvc,MAAQ6lB,EAEpB9xH,EAAK+xH,QAAU,CACbF,WACAC,SACA5pJ,MAAOypJ,EACPxpJ,IAAKypJ,EACLxtM,MACAF,MAEJ,CAII8tM,CAAchgL,EAAOguD,EAAMwoH,EAAQpyM,GAEnC4pF,EAAKwoH,EAAOvc,MAAQuc,EAAO/oM,MAAMuyB,EAAO57B,GAEnC4pF,CACT,CAEA,SAASiyH,GAAsB79J,EAAMp2C,EAAMkqD,EAAO5jB,GAChD,MAAMynJ,EAAS33I,EAAK23I,OACdyc,EAASp0J,EAAKo0J,OACd2E,EAASphB,EAAOqhB,YAChBC,EAActhB,IAAWyc,EACzBx6G,EAAS,GACf,IAAI53F,EAAGswL,EAAM1mG,EAAMhuD,EAEnB,IAAK57B,EAAI8xD,EAAOw+H,EAAOx+H,EAAQ5jB,EAAOluC,EAAIswL,IAAQtwL,EAChD47B,EAAQh0B,EAAK5H,GACb4pF,EAAO,CAAC,EACRA,EAAK+rG,EAAOE,MAAQohB,GAAethB,EAAOtsL,MAAM0tM,EAAO/2M,GAAIA,GAC3D43F,EAAOx5F,KAAKwpH,GAAWhsF,EAAOguD,EAAMwoH,EAAQpyM,IAE9C,OAAO43F,CACT,CAEA,SAASkkH,GAAWC,GAClB,OAAOA,QAA8B9/M,IAApB8/M,EAAON,eAA4Cx/M,IAAlB8/M,EAAOL,MAC3D,CA8BA,SAASM,GAAiBzwM,EAAYjO,EAASkgC,EAAOl/B,GACpD,IAAI29M,EAAO3+M,EAAQ4+M,cACnB,MAAM93M,EAAM,CAAC,EAEb,IAAK63M,EAEH,YADA1wM,EAAW2wM,cAAgB93M,GAI7B,IAAa,IAAT63M,EAEF,YADA1wM,EAAW2wM,cAAgB,CAACnpJ,KAAK,EAAMvvD,OAAO,EAAM84E,QAAQ,EAAM/4E,MAAM,IAI1E,MAAM,MAACuuD,EAAA,IAAOC,EAAA,QAAK8kD,EAAA,IAAS9jD,EAAA,OAAKupB,GAnCnC,SAAqB/wE,GACnB,IAAIsrG,EAAS/kD,EAAOC,EAAKgB,EAAKupB,EAiB9B,OAhBI/wE,EAAW4wM,YACbtlG,EAAUtrG,EAAWqyC,KAAOryC,EAAWtL,EACvC6xD,EAAQ,OACRC,EAAM,UAEN8kD,EAAUtrG,EAAWqyC,KAAOryC,EAAWlI,EACvCyuD,EAAQ,SACRC,EAAM,OAEJ8kD,GACF9jD,EAAM,MACNupB,EAAS,UAETvpB,EAAM,QACNupB,EAAS,OAEJ,CAACxqB,QAAOC,MAAK8kD,UAAS9jD,MAAKupB,SACpC,CAgB6C8/H,CAAY7wM,GAE1C,WAAT0wM,GAAqBz+K,IACvBjyB,EAAW8wM,oBAAqB,GAC3B7+K,EAAMs1K,MAAQ,KAAOx0M,EACxB29M,EAAOlpJ,GACGv1B,EAAMu1K,SAAW,KAAOz0M,EAClC29M,EAAO3/H,GAEPl4E,EAAIk4M,GAAUhgI,EAAQxqB,EAAOC,EAAK8kD,KAAY,EAC9ColG,EAAOlpJ,IAIX3uD,EAAIk4M,GAAUL,EAAMnqJ,EAAOC,EAAK8kD,KAAY,EAC5CtrG,EAAW2wM,cAAgB93M,CAC7B,CAEA,SAASk4M,GAAUL,EAAM/4M,EAAGC,EAAG0zG,GAU/B,IAAc0lG,EAAM/rB,EAAIgsB,EAHtB,OANI3lG,GASkB2lG,EARCr5M,EACrB84M,EAAOQ,GADPR,GAQUM,EAREN,MAQIzrB,EAREttL,GASCs5M,EAAKD,IAASC,EAAKhsB,EAAK+rB,EARrBp5M,EAAGD,IAEzB+4M,EAAOQ,GAASR,EAAM/4M,EAAGC,GAEpB84M,CACT,CAMA,SAASQ,GAASruK,EAAG0jB,EAAOC,GAC1B,MAAa,UAAN3jB,EAAgB0jB,EAAc,QAAN1jB,EAAc2jB,EAAM3jB,CACrD,CAEA,SAASsuK,GAAiBnxM,EAAUkzE,EAAmB9uC,GAAO,IAAxB,cAACgtK,GAAcl+H,EACnDlzE,EAAWoxM,cAAkC,SAAlBA,EACb,IAAVhtK,EAAc,IAAO,EACrBgtK,CACN,CDqzBAh3G,GA30BqB2tG,GAAA,WAKD,CAAC,GAAE3tG,GALF2tG,GAAA,qBAUS,MAAI3tG,GAVb2tG,GAAA,kBAeM,MCSZ,MAAMsJ,WAAsBtJ,GAgDzCuD,kBAAAA,CAAmB74J,EAAMp2C,EAAMkqD,EAAO5jB,GACpC,OAAO2tK,GAAsB79J,EAAMp2C,EAAMkqD,EAAO5jB,EAClD,CAOAyoK,cAAAA,CAAe34J,EAAMp2C,EAAMkqD,EAAO5jB,GAChC,OAAO2tK,GAAsB79J,EAAMp2C,EAAMkqD,EAAO5jB,EAClD,CAOA0oK,eAAAA,CAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACjC,MAAM,OAACynJ,EAAA,OAAQyc,GAAUp0J,GACnB,SAACk5J,EAAW,aAAKC,EAAW,KAAOl6M,KAAKgpM,SACxC2P,EAA2B,MAAhBjgB,EAAOE,KAAeqhB,EAAWC,EAC5CtB,EAA2B,MAAhBzD,EAAOvc,KAAeqhB,EAAWC,EAC5Cv/G,EAAS,GACf,IAAI53F,EAAGswL,EAAM1mG,EAAM3+E,EACnB,IAAKjL,EAAI8xD,EAAOw+H,EAAOx+H,EAAQ5jB,EAAOluC,EAAIswL,IAAQtwL,EAChDiL,EAAMrD,EAAK5H,GACX4pF,EAAO,CAAC,EACRA,EAAK+rG,EAAOE,MAAQF,EAAOtsL,MAAM8nL,GAAiBlmL,EAAK2qM,GAAW51M,GAClE43F,EAAOx5F,KAAKwpH,GAAWupE,GAAiBlmL,EAAK4qM,GAAWjsH,EAAMwoH,EAAQpyM,IAExE,OAAO43F,CACT,CAKA0/G,qBAAAA,CAAsB99M,EAAO07F,EAAO0C,EAAQp6D,GAC1C4jD,MAAMk2H,sBAAsB99M,EAAO07F,EAAO0C,EAAQp6D,GAClD,MAAMu+K,EAASnkH,EAAO+jH,QAClBI,GAAU7mH,IAAUj4F,KAAKs1M,YAAYH,SAEvC54M,EAAMwU,IAAM5D,KAAK4D,IAAIxU,EAAMwU,IAAK+tM,EAAO/tM,KACvCxU,EAAMsU,IAAM1D,KAAK0D,IAAItU,EAAMsU,IAAKiuM,EAAOjuM,KAE3C,CAMAoqM,cAAAA,GACE,OAAO,CACT,CAKAC,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,aACZ,OAAC5c,EAAA,OAAQyc,GAAUp0J,EACnB45C,EAAS36F,KAAKm6M,UAAU94M,GACxBy9M,EAASnkH,EAAO+jH,QAChBlgN,EAAQqgN,GAAWC,GACrB,IAAMA,EAAOjqJ,MAAQ,KAAOiqJ,EAAOhqJ,IAAM,IACzC,GAAKqgJ,EAAOgG,iBAAiBxgH,EAAOw6G,EAAOvc,OAE/C,MAAO,CACLr0C,MAAO,GAAKm0C,EAAOyiB,iBAAiBxgH,EAAO+9F,EAAOE,OAClDp6L,QAEJ,CAEA24M,UAAAA,GACEn3M,KAAK62M,qBAAsB,EAE3B1yH,MAAMgzH,aAEOn3M,KAAKs1M,YACb/0K,MAAQvgC,KAAKy3M,aAAal3K,KACjC,CAEAtvB,MAAAA,CAAOrH,GACL,MAAMm3C,EAAO/gD,KAAKs1M,YAClBt1M,KAAKq9M,eAAet8J,EAAKp2C,KAAM,EAAGo2C,EAAKp2C,KAAKrM,OAAQsL,EACtD,CAEAyzM,cAAAA,CAAeuC,EAAM/qJ,EAAO5jB,EAAOrnC,GACjC,MAAMjB,EAAiB,UAATiB,GACR,MAACvI,EAAOi0M,aAAa,OAACH,IAAWn1M,KACjC2gD,EAAOw0J,EAAO0K,eACdX,EAAa/J,EAAO2K,eACpBC,EAAQ//M,KAAKggN,aACb,cAAC5D,EAAa,eAAED,GAAkBn8M,KAAKs8M,kBAAkBznJ,EAAOjrD,GAEtE,IAAK,IAAI7G,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,EAAOluC,IAAK,CAC1C,MAAM43F,EAAS36F,KAAKm6M,UAAUp3M,GACxBk9M,EAAUt3M,GAASgqL,GAAch4F,EAAOw6G,EAAOvc,OAAS,CAACj4I,OAAMhqB,KAAMgqB,GAAQ3gD,KAAKkgN,yBAAyBn9M,GAC3Go9M,EAAUngN,KAAKogN,yBAAyBr9M,EAAGg9M,GAC3Cx/K,GAASo6D,EAAO46G,SAAW,CAAC,GAAGJ,EAAOvc,MAEtCtqL,EAAa,CACjB4wM,aACAv+J,KAAMs/J,EAAQt/J,KACdy+J,oBAAqB7+K,GAASs+K,GAAWlkH,EAAO+jH,UAAar9M,IAAUk/B,EAAMs1K,MAAQx0M,IAAUk/B,EAAMu1K,QACrG9yM,EAAGk8M,EAAae,EAAQtpL,KAAOwpL,EAAQpgI,OACvC35E,EAAG84M,EAAaiB,EAAQpgI,OAASkgI,EAAQtpL,KACzCsd,OAAQirK,EAAaiB,EAAQ1jL,KAAOtvB,KAAK2H,IAAImrM,EAAQxjL,MACrDuX,MAAOkrK,EAAa/xM,KAAK2H,IAAImrM,EAAQxjL,MAAQ0jL,EAAQ1jL,MAGnD0/K,IACF7tM,EAAWjO,QAAU+7M,GAAiBp8M,KAAKy7M,0BAA0B14M,EAAG68M,EAAK78M,GAAGw/H,OAAS,SAAW34H,IAEtG,MAAMvJ,EAAUiO,EAAWjO,SAAWu/M,EAAK78M,GAAG1C,QAC9C0+M,GAAiBzwM,EAAYjO,EAASkgC,EAAOl/B,GAC7Co+M,GAAiBnxM,EAAYjO,EAAS0/M,EAAMrtK,OAC5C1yC,KAAK08M,cAAckD,EAAK78M,GAAIA,EAAGuL,EAAY1E,EAC7C,CACF,CASAy2M,UAAAA,CAAWhsL,EAAMohB,GACf,MAAM,OAACijJ,GAAU14L,KAAKs1M,YAChBjB,EAAW3b,EAAO0c,wBAAwBp1M,KAAKw2M,OAClDttL,QAAO63B,GAAQA,EAAKqjE,WAAW/jH,QAAQigN,UACpCl/K,EAAUs3J,EAAOr4L,QAAQ+gC,QACzB0zK,EAAS,GACTyL,EAAgBvgN,KAAKs1M,YAAYlxF,WAAW+1F,UAAU1kK,GACtD+qK,EAAcD,GAAiBA,EAAc7nB,EAAOE,MAEpD6nB,EAAY1/J,IAChB,MAAM45C,EAAS55C,EAAK43I,QAAQp+G,MAAKoS,GAAQA,EAAK+rG,EAAOE,QAAU4nB,IACzD/3L,EAAMkyE,GAAUA,EAAO55C,EAAKo0J,OAAOvc,MAEzC,GAAIjG,GAAclqK,IAAQyJ,MAAMzJ,GAC9B,OAAO,GAIX,IAAK,MAAMs4B,KAAQszJ,EACjB,SAAkBr1M,IAAdy2C,IAA2BgrK,EAAS1/J,QASxB,IAAZ3f,IAAqD,IAAhC0zK,EAAOxzM,QAAQy/C,EAAKxgB,aAClCvhC,IAAZoiC,QAAwCpiC,IAAf+hD,EAAKxgB,QAC3Bu0K,EAAO3zM,KAAK4/C,EAAKxgB,OAEfwgB,EAAK1/C,QAAUgzB,GACjB,MAWJ,OAJKygL,EAAOx2M,QACVw2M,EAAO3zM,UAAKnC,GAGP81M,CACT,CAMA4L,cAAAA,CAAer/M,GACb,OAAOrB,KAAKqgN,gBAAWrhN,EAAWqC,GAAO/C,MAC3C,CAUAqiN,cAAAA,CAAentB,EAAcj2L,EAAMk4C,GACjC,MAAMq/J,EAAS90M,KAAKqgN,WAAW7sB,EAAc/9I,GACvCp0C,OAAkBrC,IAAVzB,EACVu3M,EAAOxzM,QAAQ/D,IACd,EAEL,OAAmB,IAAX8D,EACJyzM,EAAOx2M,OAAS,EAChB+C,CACN,CAKA2+M,SAAAA,GACE,MAAM3gN,EAAOW,KAAKK,QACZ0gD,EAAO/gD,KAAKs1M,YACZ5c,EAAS33I,EAAK23I,OACdkoB,EAAS,GACf,IAAI79M,EAAGswL,EAEP,IAAKtwL,EAAI,EAAGswL,EAAOtyI,EAAKp2C,KAAKrM,OAAQyE,EAAIswL,IAAQtwL,EAC/C69M,EAAOz/M,KAAKu3L,EAAOM,iBAAiBh5L,KAAKm6M,UAAUp3M,GAAG21L,EAAOE,MAAO71L,IAGtE,MAAM89M,EAAexhN,EAAKwhN,aAG1B,MAAO,CACL9vM,IAHU8vM,GAAgB/C,GAAqB/8J,GAI/C6/J,SACA/rJ,MAAO6jI,EAAOooB,YACdhsJ,IAAK4jI,EAAOqoB,UACZC,WAAYhhN,KAAK0gN,iBACjBzoH,MAAOygG,EACP4nB,QAASjhN,EAAKihN,QAEd5tK,MAAOmuK,EAAe,EAAIxhN,EAAK4hN,mBAAqB5hN,EAAK6hN,cAE7D,CAMAhB,wBAAAA,CAAyB7+M,GACvB,MAAOi0M,aAAa,OAACH,EAAA,SAAQkC,EAAUh2M,MAAOmyL,GAAenzL,SAAUsgD,KAAMwgK,EAAS,aAAEC,IAAiBphN,KACnGqhN,EAAaF,GAAa,EAC1BxmH,EAAS36F,KAAKm6M,UAAU94M,GACxBy9M,EAASnkH,EAAO+jH,QAChB4C,EAAWzC,GAAWC,GAC5B,IAGInoL,EAAM8F,EAHNj+B,EAAQm8F,EAAOw6G,EAAOvc,MACtB/jI,EAAQ,EACRv2D,EAAS+4M,EAAWr3M,KAAKu0M,WAAWY,EAAQx6G,EAAQ08G,GAAY74M,EAGhEF,IAAWE,IACbq2D,EAAQv2D,EAASE,EACjBF,EAASE,GAGP8iN,IACF9iN,EAAQsgN,EAAON,SACflgN,EAASwgN,EAAOL,OAASK,EAAON,SAElB,IAAVhgN,GAAe02L,GAAK12L,KAAW02L,GAAK4pB,EAAOL,UAC7C5pJ,EAAQ,GAEVA,GAASr2D,GAGX,MAAM8/M,EAAc3rB,GAAcwuB,IAAeG,EAAuBzsJ,EAAZssJ,EAC5D,IAAIxgK,EAAOw0J,EAAOnc,iBAAiBslB,GAWnC,GARE3nL,EADE32B,KAAKqgI,MAAMkhF,kBAAkBlgN,GACxB8zM,EAAOnc,iBAAiBnkI,EAAQv2D,GAGhCqiD,EAGTlkB,EAAO9F,EAAOgqB,EAEVxzC,KAAK2H,IAAI2nB,GAAQ2kL,EAAc,CACjC3kL,EAvZN,SAAiBA,EAAM04K,EAAQkM,GAC7B,OAAa,IAAT5kL,EACKy4J,GAAKz4J,IAEN04K,EAAO2K,eAAiB,GAAK,IAAM3K,EAAOpkM,KAAOswM,EAAa,GAAK,EAC7E,CAkZaG,CAAQ/kL,EAAM04K,EAAQkM,GAAcD,EACvC5iN,IAAU6iN,IACZ1gK,GAAQlkB,EAAO,GAEjB,MAAMglL,EAAatM,EAAOuM,mBAAmB,GACvCC,EAAWxM,EAAOuM,mBAAmB,GACrC3wM,EAAM5D,KAAK4D,IAAI0wM,EAAYE,GAC3B9wM,EAAM1D,KAAK0D,IAAI4wM,EAAYE,GACjChhK,EAAOxzC,KAAK0D,IAAI1D,KAAK4D,IAAI4vC,EAAM9vC,GAAME,GACrC4lB,EAAOgqB,EAAOlkB,EAEV46K,IAAaiK,IAEf3mH,EAAO46G,QAAQJ,EAAOvc,MAAMmd,cAAcviB,GAAgB2hB,EAAOyM,iBAAiBjrL,GAAQw+K,EAAOyM,iBAAiBjhK,IAItH,GAAIA,IAASw0J,EAAOnc,iBAAiBqoB,GAAa,CAChD,MAAMQ,EAAW3sB,GAAKz4J,GAAQ04K,EAAO2M,qBAAqBT,GAAc,EACxE1gK,GAAQkhK,EACRplL,GAAQolL,EAGV,MAAO,CACLplL,OACAkkB,OACAhqB,OACAopD,OAAQppD,EAAO8F,EAAO,EAE1B,CAKA2jL,wBAAAA,CAAyB/+M,EAAO0+M,GAC9B,MAAM9nH,EAAQ8nH,EAAM9nH,MACd53F,EAAUL,KAAKK,QACfogN,EAAWpgN,EAAQogN,SACnBsB,EAAkBjvB,GAAezyL,EAAQ0hN,gBAAiB3wI,KAChE,IAAI2O,EAAQtjD,EACZ,GAAIsjL,EAAMO,QAAS,CACjB,MAAMU,EAAaP,EAAWzgN,KAAK0gN,eAAer/M,GAAS0+M,EAAMiB,WAC3DzkN,EAAiC,SAAzB8D,EAAQwgN,aAthB5B,SAAmCx/M,EAAO0+M,EAAO1/M,EAAS2gN,GACxD,MAAMJ,EAASb,EAAMa,OACfzC,EAAOyC,EAAOv/M,GACpB,IAAI8oB,EAAO9oB,EAAQ,EAAIu/M,EAAOv/M,EAAQ,GAAK,KACvC+oB,EAAO/oB,EAAQu/M,EAAOtiN,OAAS,EAAIsiN,EAAOv/M,EAAQ,GAAK,KAC3D,MAAM2gN,EAAU3hN,EAAQ4gN,mBAEX,OAAT92L,IAGFA,EAAOg0L,GAAiB,OAAT/zL,EAAgB21L,EAAMjrJ,IAAMirJ,EAAMlrJ,MAAQzqC,EAAO+zL,IAGrD,OAAT/zL,IAEFA,EAAO+zL,EAAOA,EAAOh0L,GAGvB,MAAM0qC,EAAQspJ,GAAQA,EAAOhxM,KAAK4D,IAAIoZ,EAAMC,IAAS,EAAI43L,EAGzD,MAAO,CACLvoE,MAHWtsI,KAAK2H,IAAIsV,EAAOD,GAAQ,EAAI63L,EAGzBhB,EACdtuK,MAAOryC,EAAQ6gN,cACfrsJ,QAEJ,CA6fUotJ,CAA0B5gN,EAAO0+M,EAAO1/M,EAAS2gN,GAnjB3D,SAAkC3/M,EAAO0+M,EAAO1/M,EAAS2gN,GACvD,MAAMkB,EAAY7hN,EAAQwgN,aAC1B,IAAIpkL,EAAMiW,EAaV,OAXIigJ,GAAcuvB,IAChBzlL,EAAOsjL,EAAMhvM,IAAM1Q,EAAQ4gN,mBAC3BvuK,EAAQryC,EAAQ6gN,gBAKhBzkL,EAAOylL,EAAYlB,EACnBtuK,EAAQ,GAGH,CACL+mG,MAAOh9G,EAAOukL,EACdtuK,QACAmiB,MAAOkrJ,EAAMa,OAAOv/M,GAAUo7B,EAAO,EAEzC,CAgiBU0lL,CAAyB9gN,EAAO0+M,EAAO1/M,EAAS2gN,GAE9CoB,EAAapiN,KAAK2gN,eAAe3gN,KAAKqB,MAAOrB,KAAKs1M,YAAY/0K,MAAOkgL,EAAWp/M,OAAQrC,GAC9F+gF,EAASxjF,EAAMs4D,MAASt4D,EAAMk9I,MAAQ2oE,EAAe7lN,EAAMk9I,MAAQ,EACnEh9G,EAAOtvB,KAAK4D,IAAIgxM,EAAiBxlN,EAAMk9I,MAAQl9I,EAAMm2C,YAGrDqtC,EAASkY,EAAM+gG,iBAAiBh5L,KAAKm6M,UAAU94M,GAAO42F,EAAM2gG,MAAOv3L,GACnEo7B,EAAOtvB,KAAK4D,IAAIgxM,EAAiBhC,EAAMhvM,IAAMgvM,EAAMrtK,OAGrD,MAAO,CACLiO,KAAMo/B,EAAStjD,EAAO,EACtB9F,KAAMopD,EAAStjD,EAAO,EACtBsjD,SACAtjD,OAEJ,CAEAi1K,IAAAA,GACE,MAAM3wJ,EAAO/gD,KAAKs1M,YACZH,EAASp0J,EAAKo0J,OACdkN,EAAQthK,EAAKp2C,KACb0oL,EAAOgvB,EAAM/jN,OACnB,IAAIyE,EAAI,EAER,KAAOA,EAAIswL,IAAQtwL,EACsB,OAAnC/C,KAAKm6M,UAAUp3M,GAAGoyM,EAAOvc,OAAmBypB,EAAMt/M,GAAG01J,QACvD4pD,EAAMt/M,GAAG2uM,KAAK1xM,KAAKigM,KAGzB,EAEFv3F,GAhZqBi3G,GAAsB,KAE7B,OAAMj3G,GAFCi3G,GAAsB,WAOvB,CAChB1I,oBAAoB,EACpBC,gBAAiB,MAEjB+J,mBAAoB,GACpBC,cAAe,GACfZ,SAAS,EAEThhB,WAAY,CACV1kG,QAAS,CACP/jE,KAAM,SACNvoB,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,cAG5Co6F,GArBiBi3G,GAAsB,YA0BtB,CACjBrhB,OAAQ,CACNgkB,QAAS,CACPzrL,KAAM,WACNlyB,QAAQ,EACR0+F,KAAM,CACJ1+F,QAAQ,IAGZ49M,QAAS,CACP1rL,KAAM,SACN4oK,aAAa,MCnSN,MAAM+iB,WAAyBnM,GAiC5Cc,UAAAA,GACEn3M,KAAK62M,qBAAsB,EAC3B1yH,MAAMgzH,YACR,CAMAyC,kBAAAA,CAAmB74J,EAAMp2C,EAAMkqD,EAAO5jB,GACpC,MAAM0pD,EAASxW,MAAMy1H,mBAAmB74J,EAAMp2C,EAAMkqD,EAAO5jB,GAC3D,IAAK,IAAIluC,EAAI,EAAGA,EAAI43F,EAAOr8F,OAAQyE,IACjC43F,EAAO53F,GAAG27M,QAAU1+M,KAAKy7M,0BAA0B14M,EAAI8xD,GAAOujC,OAEhE,OAAOuC,CACT,CAMA++G,cAAAA,CAAe34J,EAAMp2C,EAAMkqD,EAAO5jB,GAChC,MAAM0pD,EAASxW,MAAMu1H,eAAe34J,EAAMp2C,EAAMkqD,EAAO5jB,GACvD,IAAK,IAAIluC,EAAI,EAAGA,EAAI43F,EAAOr8F,OAAQyE,IAAK,CACtC,MAAM4pF,EAAOhiF,EAAKkqD,EAAQ9xD,GAC1B43F,EAAO53F,GAAG27M,QAAU5rB,GAAenmG,EAAK,GAAI3sF,KAAKy7M,0BAA0B14M,EAAI8xD,GAAOujC,OACxF,CACA,OAAOuC,CACT,CAMAg/G,eAAAA,CAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACjC,MAAM0pD,EAASxW,MAAMw1H,gBAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACxD,IAAK,IAAIluC,EAAI,EAAGA,EAAI43F,EAAOr8F,OAAQyE,IAAK,CACtC,MAAM4pF,EAAOhiF,EAAKkqD,EAAQ9xD,GAC1B43F,EAAO53F,GAAG27M,QAAU5rB,GAAenmG,GAAQA,EAAK/hD,IAAM+hD,EAAK/hD,EAAG5qC,KAAKy7M,0BAA0B14M,EAAI8xD,GAAOujC,OAC1G,CACA,OAAOuC,CACT,CAKAsgH,cAAAA,GACE,MAAMtwM,EAAO3K,KAAKs1M,YAAY3qM,KAE9B,IAAIkG,EAAM,EACV,IAAK,IAAI9N,EAAI4H,EAAKrM,OAAS,EAAGyE,GAAK,IAAKA,EACtC8N,EAAM1D,KAAK0D,IAAIA,EAAKlG,EAAK5H,GAAG05B,KAAKz8B,KAAKy7M,0BAA0B14M,IAAM,GAExE,OAAO8N,EAAM,GAAKA,CACpB,CAKAqqM,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,YACZwE,EAAS95M,KAAKqgI,MAAM11H,KAAKmvM,QAAU,IACnC,OAAC5gB,EAAA,OAAQC,GAAUp4I,EACnB45C,EAAS36F,KAAKm6M,UAAU94M,GACxB2B,EAAIk2L,EAAOiiB,iBAAiBxgH,EAAO33F,GACnCoD,EAAI+yL,EAAOgiB,iBAAiBxgH,EAAOv0F,GACnCwkC,EAAI+vD,EAAO+jH,QAEjB,MAAO,CACLn6D,MAAOu1D,EAAOz4M,IAAU,GACxB7C,MAAO,IAAMwE,EAAI,KAAOoD,GAAKwkC,EAAI,KAAOA,EAAI,IAAM,IAEtD,CAEA35B,MAAAA,CAAOrH,GACL,MAAM0uL,EAASt4L,KAAKs1M,YAAY3qM,KAGhC3K,KAAKq9M,eAAe/kB,EAAQ,EAAGA,EAAOh6L,OAAQsL,EAChD,CAEAyzM,cAAAA,CAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,GACnC,MAAMjB,EAAiB,UAATiB,GACR,OAAC8uL,EAAA,OAAQyc,GAAUn1M,KAAKs1M,aACxB,cAAC8G,EAAa,eAAED,GAAkBn8M,KAAKs8M,kBAAkBznJ,EAAOjrD,GAChE4rM,EAAQ9c,EAAOE,KACf6c,EAAQN,EAAOvc,KAErB,IAAK,IAAI71L,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,EAAOluC,IAAK,CAC1C,MAAMmgM,EAAQ5K,EAAOv1L,GACf43F,GAAUhyF,GAAS3I,KAAKm6M,UAAUp3M,GAClCuL,EAAa,CAAC,EACdq8L,EAASr8L,EAAWknM,GAAS7sM,EAAQ+vL,EAAOgpB,mBAAmB,IAAOhpB,EAAOM,iBAAiBr+F,EAAO66G,IACrG5K,EAASt8L,EAAWmnM,GAAS9sM,EAAQwsM,EAAO0K,eAAiB1K,EAAOnc,iBAAiBr+F,EAAO86G,IAElGnnM,EAAW66L,KAAOj3K,MAAMy4K,IAAWz4K,MAAM04K,GAErCuR,IACF7tM,EAAWjO,QAAU+7M,GAAiBp8M,KAAKy7M,0BAA0B14M,EAAGmgM,EAAM3gE,OAAS,SAAW34H,GAE9FjB,IACF2F,EAAWjO,QAAQ+3F,OAAS,IAIhCp4F,KAAK08M,cAAcxZ,EAAOngM,EAAGuL,EAAY1E,EAC3C,CACF,CAOA6xM,yBAAAA,CAA0Bp6M,EAAOuI,GAC/B,MAAM+wF,EAAS36F,KAAKm6M,UAAU94M,GAC9B,IAAI09B,EAASolD,MAAMs3H,0BAA0Bp6M,EAAOuI,GAGhDm1B,EAAO40K,UACT50K,EAASpjC,OAAO49C,OAAO,CAAC,EAAGxa,EAAQ,CAAC40K,SAAS,KAI/C,MAAMv7G,EAASr5D,EAAOq5D,OAMtB,MALa,WAATxuF,IACFm1B,EAAOq5D,OAAS,GAElBr5D,EAAOq5D,QAAU06F,GAAen4F,GAAUA,EAAO+jH,QAAStmH,GAEnDr5D,CACT,EACF2pE,GArKqB85G,GAAyB,KAEhC,UAAS95G,GAFF85G,GAAyB,WAO1B,CAChBvL,oBAAoB,EACpBC,gBAAiB,QAEjB5X,WAAY,CACV1kG,QAAS,CACP/jE,KAAM,SACNvoB,WAAY,CAAC,IAAK,IAAK,cAAe,cAG1Co6F,GAjBiB85G,GAAyB,YAsBzB,CACjBlkB,OAAQ,CACNt7L,EAAG,CACD6zB,KAAM,UAERzwB,EAAG,CACDywB,KAAM,aCKC,MAAM4rL,WAA2BpM,GA0F9CtoL,WAAAA,CAAYsyG,EAAOmzD,GACjBrvG,MAAMk8C,EAAOmzD,GAEbxzL,KAAK62M,qBAAsB,EAC3B72M,KAAK0iN,iBAAc1jN,EACnBgB,KAAK2iN,iBAAc3jN,EACnBgB,KAAKusM,aAAUvtM,EACfgB,KAAKwsM,aAAUxtM,CACjB,CAEAo4M,UAAAA,GAAc,CAKdhrM,KAAAA,CAAMyoD,EAAO5jB,GACX,MAAMtmC,EAAO3K,KAAKy3M,aAAa9sM,KACzBo2C,EAAO/gD,KAAKs1M,YAElB,IAAsB,IAAlBt1M,KAAKgpM,SACPjoJ,EAAK43I,QAAUhuL,MACV,CACL,IAOI5H,EAAGswL,EAPHxoE,EAAU9nH,IAAO4H,EAAK5H,GAE1B,GAAIo1B,GAASxtB,EAAKkqD,IAAS,CACzB,MAAM,IAACt0D,EAAM,SAAWP,KAAKgpM,SAC7Bn+E,EAAU9nH,IAAOmxL,GAAiBvpL,EAAK5H,GAAIxC,GAI7C,IAAKwC,EAAI8xD,EAAOw+H,EAAOx+H,EAAQ5jB,EAAOluC,EAAIswL,IAAQtwL,EAChDg+C,EAAK43I,QAAQ51L,GAAK8nH,EAAO9nH,GAG/B,CAKA6/M,YAAAA,GACE,OAAOntB,GAAUz1L,KAAKK,QAAQuiM,SAAW,GAC3C,CAKAigB,iBAAAA,GACE,OAAOptB,GAAUz1L,KAAKK,QAAQyiN,cAChC,CAMAC,mBAAAA,GACE,IAAIhyM,EAAM0jL,GACN5jL,GAAO4jL,GAEX,IAAK,IAAI1xL,EAAI,EAAGA,EAAI/C,KAAKqgI,MAAM11H,KAAK6yL,SAASl/L,SAAUyE,EACrD,GAAI/C,KAAKqgI,MAAM2iF,iBAAiBjgN,IAAM/C,KAAKqgI,MAAMk4E,eAAex1M,GAAG8zB,OAAS72B,KAAKw2M,MAAO,CACtF,MAAMpyF,EAAapkH,KAAKqgI,MAAMk4E,eAAex1M,GAAGqhH,WAC1Cw+E,EAAWx+E,EAAWw+F,eACtBE,EAAgB1+F,EAAWy+F,oBAEjC9xM,EAAM5D,KAAK4D,IAAIA,EAAK6xL,GACpB/xL,EAAM1D,KAAK0D,IAAIA,EAAK+xL,EAAWkgB,GAInC,MAAO,CACLlgB,SAAU7xL,EACV+xM,cAAejyM,EAAME,EAEzB,CAKAE,MAAAA,CAAOrH,GACL,MAAMy2H,EAAQrgI,KAAKqgI,OACb,UAACk7E,GAAal7E,EACdt/E,EAAO/gD,KAAKs1M,YACZ2N,EAAOliK,EAAKp2C,KACZu4M,EAAUljN,KAAKmjN,oBAAsBnjN,KAAKojN,aAAaH,GAAQjjN,KAAKK,QAAQ6iN,QAC5EG,EAAUl2M,KAAK0D,KAAK1D,KAAK4D,IAAIwqM,EAAUvnK,MAAOunK,EAAUtnK,QAAUivK,GAAW,EAAG,GAChFI,EAASn2M,KAAK4D,I1B9HIwyM,EAAC/kN,EAAwBw0L,IAClC,kBAAVx0L,GAAsBA,EAAMq/E,SAAS,KAC1CvrD,WAAW9zB,GAAS,KACjBA,EAAQw0L,E0B2HauwB,CAAavjN,KAAKK,QAAQijN,OAAQD,GAAU,GAC9DG,EAAcxjN,KAAKyjN,eAAezjN,KAAKqB,QAKvC,cAACyhN,EAAA,SAAelgB,GAAY5iM,KAAK+iN,uBACjC,OAACW,EAAA,OAAQC,EAAA,QAAQpX,EAAA,QAASC,GAjNpC,SAA2B5J,EAAUkgB,EAAeQ,GAClD,IAAII,EAAS,EACTC,EAAS,EACTpX,EAAU,EACVC,EAAU,EAEd,GAAIsW,EAAgBruB,GAAK,CACvB,MAAMmvB,EAAahhB,EACbihB,EAAWD,EAAad,EACxBzmI,EAASlvE,KAAK+wJ,IAAI0lD,GAClBz0G,EAAShiG,KAAK4H,IAAI6uM,GAClBE,EAAO32M,KAAK+wJ,IAAI2lD,GAChBE,EAAO52M,KAAK4H,IAAI8uM,GAChBG,EAAUA,CAAC5tB,EAAOnwL,EAAGC,IAAMywL,GAAcP,EAAOwtB,EAAYC,GAAU,GAAQ,EAAI12M,KAAK0D,IAAI5K,EAAGA,EAAIq9M,EAAQp9M,EAAGA,EAAIo9M,GACjHW,EAAUA,CAAC7tB,EAAOnwL,EAAGC,IAAMywL,GAAcP,EAAOwtB,EAAYC,GAAU,IAAS,EAAI12M,KAAK4D,IAAI9K,EAAGA,EAAIq9M,EAAQp9M,EAAGA,EAAIo9M,GAClHY,EAAOF,EAAQ,EAAG3nI,EAAQynI,GAC1BK,EAAOH,EAAQlvB,GAAS3lF,EAAQ40G,GAChCK,EAAOH,EAAQ3rH,GAAIjc,EAAQynI,GAC3BO,EAAOJ,EAAQ3rH,GAAKw8F,GAAS3lF,EAAQ40G,GAC3CL,GAAUQ,EAAOE,GAAQ,EACzBT,GAAUQ,EAAOE,GAAQ,EACzB9X,IAAY2X,EAAOE,GAAQ,EAC3B5X,IAAY2X,EAAOE,GAAQ,EAE7B,MAAO,CAACX,SAAQC,SAAQpX,UAASC,UACnC,CAwL+C8X,CAAkB1hB,EAAUkgB,EAAeQ,GAChFr+G,GAAYs2G,EAAUvnK,MAAQkvK,GAAWQ,EACzC7+G,GAAa02G,EAAUtnK,OAASivK,GAAWS,EAC3CY,EAAYp3M,KAAK0D,IAAI1D,KAAK4D,IAAIk0F,EAAUJ,GAAa,EAAG,GACxD89G,EAAc5vB,GAAY/yL,KAAKK,QAAQ+3F,OAAQmsH,GAE/CC,GAAgB7B,EADFx1M,KAAK0D,IAAI8xM,EAAcW,EAAQ,IACAtjN,KAAKykN,gCACxDzkN,KAAKusM,QAAUA,EAAUoW,EACzB3iN,KAAKwsM,QAAUA,EAAUmW,EAEzB5hK,EAAKuyF,MAAQtzI,KAAK0kN,iBAElB1kN,KAAK2iN,YAAcA,EAAc6B,EAAexkN,KAAK2kN,qBAAqB3kN,KAAKqB,OAC/ErB,KAAK0iN,YAAcv1M,KAAK0D,IAAI7Q,KAAK2iN,YAAc6B,EAAehB,EAAa,GAE3ExjN,KAAKq9M,eAAe4F,EAAM,EAAGA,EAAK3kN,OAAQsL,EAC5C,CAKAg7M,cAAAA,CAAe7hN,EAAG4F,GAChB,MAAMtJ,EAAOW,KAAKK,QACZ0gD,EAAO/gD,KAAKs1M,YACZwN,EAAgB9iN,KAAK6iN,oBAC3B,OAAIl6M,GAAUtJ,EAAK23D,UAAU6tJ,gBAAmB7kN,KAAKqgI,MAAMkhF,kBAAkBx+M,IAA0B,OAApBg+C,EAAK43I,QAAQ51L,IAAeg+C,EAAKp2C,KAAK5H,GAAG01J,OACnH,EAEFz4J,KAAK8kN,uBAAuB/jK,EAAK43I,QAAQ51L,GAAK+/M,EAAgBruB,GACvE,CAEA4oB,cAAAA,CAAe4F,EAAMpuJ,EAAO5jB,EAAOrnC,GACjC,MAAMjB,EAAiB,UAATiB,EACRy2H,EAAQrgI,KAAKqgI,MACbk7E,EAAYl7E,EAAMk7E,UAElBwJ,EADO1kF,EAAMhgI,QACQ22D,UACrBguJ,GAAWzJ,EAAUj1M,KAAOi1M,EAAUh1M,OAAS,EAC/C0+M,GAAW1J,EAAUzlJ,IAAMylJ,EAAUl8H,QAAU,EAC/C6lI,EAAev8M,GAASo8M,EAAcG,aACtCxC,EAAcwC,EAAe,EAAIllN,KAAK0iN,YACtCC,EAAcuC,EAAe,EAAIllN,KAAK2iN,aACtC,cAACvG,EAAa,eAAED,GAAkBn8M,KAAKs8M,kBAAkBznJ,EAAOjrD,GACtE,IACI7G,EADA6gN,EAAa5jN,KAAK4iN,eAGtB,IAAK7/M,EAAI,EAAGA,EAAI8xD,IAAS9xD,EACvB6gN,GAAc5jN,KAAK4kN,eAAe7hN,EAAG4F,GAGvC,IAAK5F,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,IAASluC,EAAG,CACtC,MAAM+/M,EAAgB9iN,KAAK4kN,eAAe7hN,EAAG4F,GACvC0vF,EAAM4qH,EAAKlgN,GACXuL,EAAa,CACjBtL,EAAGgiN,EAAUhlN,KAAKusM,QAClBnmM,EAAG6+M,EAAUjlN,KAAKwsM,QAClBoX,aACAC,SAAUD,EAAad,EACvBA,gBACAH,cACAD,eAEEvG,IACF7tM,EAAWjO,QAAU+7M,GAAiBp8M,KAAKy7M,0BAA0B14M,EAAGs1F,EAAIkqC,OAAS,SAAW34H,IAElGg6M,GAAcd,EAEd9iN,KAAK08M,cAAcrkH,EAAKt1F,EAAGuL,EAAY1E,EACzC,CACF,CAEA86M,cAAAA,GACE,MAAM3jK,EAAO/gD,KAAKs1M,YACZ6P,EAAWpkK,EAAKp2C,KACtB,IACI5H,EADAuwI,EAAQ,EAGZ,IAAKvwI,EAAI,EAAGA,EAAIoiN,EAAS7mN,OAAQyE,IAAK,CACpC,MAAMvE,EAAQuiD,EAAK43I,QAAQ51L,GACb,OAAVvE,GAAmB0zB,MAAM1zB,KAAUwB,KAAKqgI,MAAMkhF,kBAAkBx+M,IAAOoiN,EAASpiN,GAAG01J,SACrFnlB,GAASnmI,KAAK2H,IAAItW,GAEtB,CAEA,OAAO80I,CACT,CAEAwxE,sBAAAA,CAAuBtmN,GACrB,MAAM80I,EAAQtzI,KAAKs1M,YAAYhiE,MAC/B,OAAIA,EAAQ,IAAMphH,MAAM1zB,GACfi2L,IAAOtnL,KAAK2H,IAAItW,GAAS80I,GAE3B,CACT,CAEA4nE,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,YACZj1E,EAAQrgI,KAAKqgI,MACby5E,EAASz5E,EAAM11H,KAAKmvM,QAAU,GAC9Bt7M,EAAQy9L,GAAal7I,EAAK43I,QAAQt3L,GAAQg/H,EAAMhgI,QAAQivD,QAE9D,MAAO,CACLi1F,MAAOu1D,EAAOz4M,IAAU,GACxB7C,QAEJ,CAEA2kN,iBAAAA,CAAkBF,GAChB,IAAIpyM,EAAM,EACV,MAAMwvH,EAAQrgI,KAAKqgI,MACnB,IAAIt9H,EAAGswL,EAAMtyI,EAAMqjE,EAAY/jH,EAE/B,IAAK4iN,EAEH,IAAKlgN,EAAI,EAAGswL,EAAOhzD,EAAM11H,KAAK6yL,SAASl/L,OAAQyE,EAAIswL,IAAQtwL,EACzD,GAAIs9H,EAAM2iF,iBAAiBjgN,GAAI,CAC7Bg+C,EAAOs/E,EAAMk4E,eAAex1M,GAC5BkgN,EAAOliK,EAAKp2C,KACZy5G,EAAarjE,EAAKqjE,WAClB,MAKN,IAAK6+F,EACH,OAAO,EAGT,IAAKlgN,EAAI,EAAGswL,EAAO4vB,EAAK3kN,OAAQyE,EAAIswL,IAAQtwL,EAC1C1C,EAAU+jH,EAAWq3F,0BAA0B14M,GACnB,UAAxB1C,EAAQ+kN,cACVv0M,EAAM1D,KAAK0D,IAAIA,EAAKxQ,EAAQ2iM,aAAe,EAAG3iM,EAAQglN,kBAAoB,IAG9E,OAAOx0M,CACT,CAEAuyM,YAAAA,CAAaH,GACX,IAAIpyM,EAAM,EAEV,IAAK,IAAI9N,EAAI,EAAGswL,EAAO4vB,EAAK3kN,OAAQyE,EAAIswL,IAAQtwL,EAAG,CACjD,MAAM1C,EAAUL,KAAKy7M,0BAA0B14M,GAC/C8N,EAAM1D,KAAK0D,IAAIA,EAAKxQ,EAAQsE,QAAU,EAAGtE,EAAQilN,aAAe,EAClE,CACA,OAAOz0M,CACT,CAMA8zM,oBAAAA,CAAqBnxB,GACnB,IAAI+xB,EAAmB,EAEvB,IAAK,IAAIxiN,EAAI,EAAGA,EAAIywL,IAAgBzwL,EAC9B/C,KAAKqgI,MAAM2iF,iBAAiBjgN,KAC9BwiN,GAAoBvlN,KAAKyjN,eAAe1gN,IAI5C,OAAOwiN,CACT,CAKA9B,cAAAA,CAAejwB,GACb,OAAOrmL,KAAK0D,IAAIiiL,GAAe9yL,KAAKqgI,MAAM11H,KAAK6yL,SAAShK,GAAc/B,OAAQ,GAAI,EACpF,CAMAgzB,6BAAAA,GACE,OAAOzkN,KAAK2kN,qBAAqB3kN,KAAKqgI,MAAM11H,KAAK6yL,SAASl/L,SAAW,CACvE,EACFoqG,GAvWqB+5G,GAA2B,KAElC,YAAW/5G,GAFJ+5G,GAA2B,WAO5B,CAChBxL,oBAAoB,EACpBC,gBAAiB,MACjBlgJ,UAAW,CAET6tJ,eAAe,EAEfK,cAAc,GAEhB5lB,WAAY,CACV1kG,QAAS,CACP/jE,KAAM,SACNvoB,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,aAI7Hg1M,OAAQ,MAGR1gB,SAAU,EAGVkgB,cAAe,IAGf1qH,OAAQ,OAGR8qH,QAAS,EAETnlB,UAAW,MACXr1F,GAtCiB+5G,GAA2B,cAwCzB,CACnBvjB,YAAc3hM,GAAkB,YAATA,EACvB4hM,WAAa5hM,GAAkB,YAATA,IAAuBA,EAAK8yH,WAAW,gBAAkB9yH,EAAK8yH,WAAW,qBAC/F3nB,GA3CiB+5G,GAA2B,YAgD3B,CACjBhlK,YAAa,EAGb4+G,QAAS,CACPmpD,OAAQ,CACN1L,OAAQ,CACN2L,cAAAA,CAAeplF,GACb,MAAM11H,EAAO01H,EAAM11H,KACnB,GAAIA,EAAKmvM,OAAOx7M,QAAUqM,EAAK6yL,SAASl/L,OAAQ,CAC9C,MAAOw7M,QAAQ,WAACnX,EAAA,MAAYhxI,IAAU0uE,EAAMmlF,OAAOnlN,QAEnD,OAAOsK,EAAKmvM,OAAOpoM,KAAI,CAAC6yI,EAAOxhJ,KAC7B,MACMu9C,EADO+/E,EAAMk4E,eAAe,GACfn0F,WAAWwpF,SAAS7qM,GAEvC,MAAO,CACLq0B,KAAMmtH,EACNl0G,UAAWiQ,EAAMi2E,gBACjB3hC,YAAat0C,EAAMi9I,YACnBmoB,UAAW/zJ,EACX8iC,UAAWn0C,EAAM0iJ,YACjBL,WAAYA,EACZlqC,QAASp4B,EAAMkhF,kBAAkBx+M,GAGjC1B,MAAO0B,EACR,IAGL,MAAO,EACT,GAGF6qE,OAAAA,CAAQruE,EAAGomN,EAAYH,GACrBA,EAAOnlF,MAAMulF,qBAAqBD,EAAWtkN,OAC7CmkN,EAAOnlF,MAAMpvH,QACf,MCpHO,MAAM40M,WAAuBxP,GA6B1Cc,UAAAA,GACEn3M,KAAK62M,qBAAsB,EAC3B72M,KAAK82M,oBAAqB,EAC1B3yH,MAAMgzH,YACR,CAEAlmM,MAAAA,CAAOrH,GACL,MAAMm3C,EAAO/gD,KAAKs1M,aACX/oI,QAASr8B,EAAMvlC,KAAM2tL,EAAS,GAAE,SAAEwtB,GAAY/kK,EAE/Cw3I,EAAqBv4L,KAAKqgI,MAAMg8E,oBACtC,IAAI,MAACxnJ,EAAA,MAAO5jB,GAASonJ,GAAiCt3I,EAAMu3I,EAAQC,GAEpEv4L,KAAK22M,WAAa9hJ,EAClB70D,KAAK42M,WAAa3lK,EAEdgoJ,GAAoBl4I,KACtB8T,EAAQ,EACR5jB,EAAQqnJ,EAAOh6L,QAIjB4xC,EAAK4/J,OAAS9vM,KAAKqgI,MACnBnwF,EAAK+/J,cAAgBjwM,KAAKqB,MAC1B6uC,EAAK61K,aAAeD,EAASC,WAC7B71K,EAAKooJ,OAASA,EAEd,MAAMj4L,EAAUL,KAAKw7M,6BAA6B5xM,GAC7C5J,KAAKK,QAAQk+L,WAChBl+L,EAAQ2iM,YAAc,GAExB3iM,EAAQmxH,QAAUxxH,KAAKK,QAAQmxH,QAC/BxxH,KAAK08M,cAAcxsK,OAAMlxC,EAAW,CAClCgnN,UAAWztB,EACXl4L,WACCuJ,GAGH5J,KAAKq9M,eAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,EAC5C,CAEAyzM,cAAAA,CAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,GACnC,MAAMjB,EAAiB,UAATiB,GACR,OAAC8uL,EAAA,OAAQyc,EAAA,SAAQkC,EAAA,SAAUyO,GAAY9lN,KAAKs1M,aAC5C,cAAC8G,EAAa,eAAED,GAAkBn8M,KAAKs8M,kBAAkBznJ,EAAOjrD,GAChE4rM,EAAQ9c,EAAOE,KACf6c,EAAQN,EAAOvc,MACf,SAACsS,EAAA,QAAU15E,GAAWxxH,KAAKK,QAC3B4lN,EAAetgF,GAASulE,GAAYA,EAAW74K,OAAOuiK,kBACtDsxB,EAAelmN,KAAKqgI,MAAMg8E,qBAAuB1zM,GAAkB,SAATiB,EAC1DkrD,EAAMD,EAAQ5jB,EACdk1K,EAAc7tB,EAAOh6L,OAC3B,IAAI8nN,EAAavxJ,EAAQ,GAAK70D,KAAKm6M,UAAUtlJ,EAAQ,GAErD,IAAK,IAAI9xD,EAAI,EAAGA,EAAIojN,IAAepjN,EAAG,CACpC,MAAMmgM,EAAQ5K,EAAOv1L,GACfuL,EAAa43M,EAAehjB,EAAQ,GAE1C,GAAIngM,EAAI8xD,GAAS9xD,GAAK+xD,EAAK,CACzBxmD,EAAW66L,MAAO,EAClB,SAGF,MAAMxuG,EAAS36F,KAAKm6M,UAAUp3M,GACxBsjN,EAAW1zB,GAAch4F,EAAO86G,IAChC9K,EAASr8L,EAAWknM,GAAS9c,EAAOM,iBAAiBr+F,EAAO66G,GAAQzyM,GACpE6nM,EAASt8L,EAAWmnM,GAAS9sM,GAAS09M,EAAWlR,EAAO0K,eAAiB1K,EAAOnc,iBAAiBqe,EAAWr3M,KAAKu0M,WAAWY,EAAQx6G,EAAQ08G,GAAY18G,EAAO86G,GAAQ1yM,GAE7KuL,EAAW66L,KAAOj3K,MAAMy4K,IAAWz4K,MAAM04K,IAAWyb,EACpD/3M,EAAW04E,KAAOjkF,EAAI,GAAKoK,KAAM2H,IAAI6lF,EAAO66G,GAAS4Q,EAAW5Q,IAAWyQ,EACvEz0F,IACFljH,EAAWqsF,OAASA,EACpBrsF,EAAWotM,IAAMoK,EAASn7M,KAAK5H,IAG7Bo5M,IACF7tM,EAAWjO,QAAU+7M,GAAiBp8M,KAAKy7M,0BAA0B14M,EAAGmgM,EAAM3gE,OAAS,SAAW34H,IAG/Fs8M,GACHlmN,KAAK08M,cAAcxZ,EAAOngM,EAAGuL,EAAY1E,GAG3Cw8M,EAAazrH,CACf,CACF,CAKAsgH,cAAAA,GACE,MAAMl6J,EAAO/gD,KAAKs1M,YACZ/oI,EAAUxrB,EAAKwrB,QACf4zH,EAAS5zH,EAAQlsE,SAAWksE,EAAQlsE,QAAQ2iM,aAAe,EAC3Dr4L,EAAOo2C,EAAKp2C,MAAQ,GAC1B,IAAKA,EAAKrM,OACR,OAAO6hM,EAET,MAAMmJ,EAAa3+L,EAAK,GAAG8xB,KAAKz8B,KAAKy7M,0BAA0B,IACzD6K,EAAY37M,EAAKA,EAAKrM,OAAS,GAAGm+B,KAAKz8B,KAAKy7M,0BAA0B9wM,EAAKrM,OAAS,IAC1F,OAAO6O,KAAK0D,IAAIsvL,EAAQmJ,EAAYgd,GAAa,CACnD,CAEA5U,IAAAA,GACE,MAAM3wJ,EAAO/gD,KAAKs1M,YAClBv0J,EAAKwrB,QAAQg6I,oBAAoBvmN,KAAKqgI,MAAMk7E,UAAWx6J,EAAK23I,OAAOE,MACnEz0G,MAAMutH,MACR,EACFhpG,GAzIqBm9G,GAAuB,KAE9B,QAAOn9G,GAFAm9G,GAAuB,WAOxB,CAChB5O,mBAAoB,OACpBC,gBAAiB,QAEjB3Y,UAAU,EACV2M,UAAU,IACVxiG,GAbiBm9G,GAAuB,YAkBvB,CACjBvnB,OAAQ,CACNgkB,QAAS,CACPzrL,KAAM,YAER0rL,QAAS,CACP1rL,KAAM,aC1BC,MAAM2vL,WAA4BnQ,GAoF/CtoL,WAAAA,CAAYsyG,EAAOmzD,GACjBrvG,MAAMk8C,EAAOmzD,GAEbxzL,KAAK0iN,iBAAc1jN,EACnBgB,KAAK2iN,iBAAc3jN,CACrB,CAEAk8M,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,YACZj1E,EAAQrgI,KAAKqgI,MACby5E,EAASz5E,EAAM11H,KAAKmvM,QAAU,GAC9Bt7M,EAAQy9L,GAAal7I,EAAK43I,QAAQt3L,GAAOupC,EAAGy1F,EAAMhgI,QAAQivD,QAEhE,MAAO,CACLi1F,MAAOu1D,EAAOz4M,IAAU,GACxB7C,QAEJ,CAEAm7M,eAAAA,CAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACjC,OAAO83J,GAA4BrrM,KAAKsC,KAAjC+oM,CAAuChoJ,EAAMp2C,EAAMkqD,EAAO5jB,EACnE,CAEAhgC,MAAAA,CAAOrH,GACL,MAAMq5M,EAAOjjN,KAAKs1M,YAAY3qM,KAE9B3K,KAAKymN,gBACLzmN,KAAKq9M,eAAe4F,EAAM,EAAGA,EAAK3kN,OAAQsL,EAC5C,CAKA4wM,SAAAA,GACE,MAAMz5J,EAAO/gD,KAAKs1M,YACZ/4M,EAAQ,CAACwU,IAAKshB,OAAOuiK,kBAAmB/jL,IAAKwhB,OAAOuoL,mBAgB1D,OAdA75J,EAAKp2C,KAAK7J,SAAQ,CAACgoB,EAASznB,KAC1B,MAAMs5F,EAAS36F,KAAKm6M,UAAU94M,GAAOupC,GAEhC1Y,MAAMyoE,IAAW36F,KAAKqgI,MAAMkhF,kBAAkBlgN,KAC7Cs5F,EAASp+F,EAAMwU,MACjBxU,EAAMwU,IAAM4pF,GAGVA,EAASp+F,EAAMsU,MACjBtU,EAAMsU,IAAM8pF,OAKXp+F,CACT,CAKAkqN,aAAAA,GACE,MAAMpmF,EAAQrgI,KAAKqgI,MACbk7E,EAAYl7E,EAAMk7E,UAClBl8M,EAAOghI,EAAMhgI,QACbqmN,EAAUv5M,KAAK4D,IAAIwqM,EAAUh1M,MAAQg1M,EAAUj1M,KAAMi1M,EAAUl8H,OAASk8H,EAAUzlJ,KAElF6sJ,EAAcx1M,KAAK0D,IAAI61M,EAAU,EAAG,GAEpClC,GAAgB7B,EADFx1M,KAAK0D,IAAIxR,EAAKsnN,iBAAmBhE,EAAe,IAAQtjN,EAAKsnN,iBAAoB,EAAG,IACrDtmF,EAAMumF,yBAEzD5mN,KAAK2iN,YAAcA,EAAe6B,EAAexkN,KAAKqB,MACtDrB,KAAK0iN,YAAc1iN,KAAK2iN,YAAc6B,CACxC,CAEAnH,cAAAA,CAAe4F,EAAMpuJ,EAAO5jB,EAAOrnC,GACjC,MAAMjB,EAAiB,UAATiB,EACRy2H,EAAQrgI,KAAKqgI,MAEb0kF,EADO1kF,EAAMhgI,QACQ22D,UACrBihC,EAAQj4F,KAAKs1M,YAAYgD,OACzB0M,EAAU/sH,EAAM4uH,QAChB5B,EAAUhtH,EAAM6uH,QAChBC,EAAoB9uH,EAAM+uH,cAAc,GAAK,GAAM1uH,GACzD,IACIv1F,EADAqzL,EAAQ2wB,EAGZ,MAAME,EAAe,IAAMjnN,KAAKknN,uBAEhC,IAAKnkN,EAAI,EAAGA,EAAI8xD,IAAS9xD,EACvBqzL,GAASp2L,KAAKmnN,cAAcpkN,EAAG6G,EAAMq9M,GAEvC,IAAKlkN,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,EAAOluC,IAAK,CACtC,MAAMs1F,EAAM4qH,EAAKlgN,GACjB,IAAI6gN,EAAaxtB,EACbytB,EAAWztB,EAAQp2L,KAAKmnN,cAAcpkN,EAAG6G,EAAMq9M,GAC/CtE,EAActiF,EAAMkhF,kBAAkBx+M,GAAKk1F,EAAMmvH,8BAA8BpnN,KAAKm6M,UAAUp3M,GAAG6nC,GAAK,EAC1GwrJ,EAAQytB,EAEJl7M,IACEo8M,EAAcG,eAChBvC,EAAc,GAEZoC,EAAcF,gBAChBjB,EAAaC,EAAWkD,IAI5B,MAAMz4M,EAAa,CACjBtL,EAAGgiN,EACH5+M,EAAG6+M,EACHvC,YAAa,EACbC,cACAiB,aACAC,WACAxjN,QAASL,KAAKy7M,0BAA0B14M,EAAGs1F,EAAIkqC,OAAS,SAAW34H,IAGrE5J,KAAK08M,cAAcrkH,EAAKt1F,EAAGuL,EAAY1E,EACzC,CACF,CAEAs9M,oBAAAA,GACE,MAAMnmK,EAAO/gD,KAAKs1M,YAClB,IAAIrkK,EAAQ,EAQZ,OANA8P,EAAKp2C,KAAK7J,SAAQ,CAACgoB,EAASznB,MACrB6wB,MAAMlyB,KAAKm6M,UAAU94M,GAAOupC,IAAM5qC,KAAKqgI,MAAMkhF,kBAAkBlgN,IAClE4vC,OAIGA,CACT,CAKAk2K,aAAAA,CAAc9lN,EAAOuI,EAAMq9M,GACzB,OAAOjnN,KAAKqgI,MAAMkhF,kBAAkBlgN,GAChCo0L,GAAUz1L,KAAKy7M,0BAA0Bp6M,EAAOuI,GAAMwsL,OAAS6wB,GAC/D,CACN,EACFv+G,GA/NqB89G,GAA4B,KAEnC,aAAY99G,GAFL89G,GAA4B,WAO7B,CAChBtP,gBAAiB,MACjBlgJ,UAAW,CACT6tJ,eAAe,EACfK,cAAc,GAEhB5lB,WAAY,CACV1kG,QAAS,CACP/jE,KAAM,SACNvoB,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,iBAGpEyvL,UAAW,IACX6lB,WAAY,IACZl7G,GArBiB89G,GAA4B,YA0B5B,CACjB/oK,YAAa,EAEb4+G,QAAS,CACPmpD,OAAQ,CACN1L,OAAQ,CACN2L,cAAAA,CAAeplF,GACb,MAAM11H,EAAO01H,EAAM11H,KACnB,GAAIA,EAAKmvM,OAAOx7M,QAAUqM,EAAK6yL,SAASl/L,OAAQ,CAC9C,MAAOw7M,QAAQ,WAACnX,EAAA,MAAYhxI,IAAU0uE,EAAMmlF,OAAOnlN,QAEnD,OAAOsK,EAAKmvM,OAAOpoM,KAAI,CAAC6yI,EAAOxhJ,KAC7B,MACMu9C,EADO+/E,EAAMk4E,eAAe,GACfn0F,WAAWwpF,SAAS7qM,GAEvC,MAAO,CACLq0B,KAAMmtH,EACNl0G,UAAWiQ,EAAMi2E,gBACjB3hC,YAAat0C,EAAMi9I,YACnBmoB,UAAW/zJ,EACX8iC,UAAWn0C,EAAM0iJ,YACjBL,WAAYA,EACZlqC,QAASp4B,EAAMkhF,kBAAkBx+M,GAGjC1B,MAAO0B,EACR,IAGL,MAAO,EACT,GAGF6qE,OAAAA,CAAQruE,EAAGomN,EAAYH,GACrBA,EAAOnlF,MAAMulF,qBAAqBD,EAAWtkN,OAC7CmkN,EAAOnlF,MAAMpvH,QACf,IAIJqtL,OAAQ,CACN1zJ,EAAG,CACD/T,KAAM,eACNwwL,WAAY,CACVn3I,SAAS,GAEXuvH,aAAa,EACbp8F,KAAM,CACJikH,UAAU,GAEZC,YAAa,CACXr3I,SAAS,GAEX0zI,WAAY,MC/EL,MAAM4D,WAAsB/E,IAoB3C/5G,GApBqB8+G,GAAsB,KAE7B,OAAM9+G,GAFC8+G,GAAsB,WAOvB,CAEhBlE,OAAQ,EAGR1gB,SAAU,EAGVkgB,cAAe,IAGf1qH,OAAQ,SClBG,MAAMqvH,WAAwBpR,GAmC3C6E,gBAAAA,CAAiB75M,GACf,MAAM8zM,EAASn1M,KAAKs1M,YAAYH,OAC1Bx6G,EAAS36F,KAAKm6M,UAAU94M,GAE9B,MAAO,CACLkjJ,MAAO4wD,EAAO4E,YAAY14M,GAC1B7C,MAAO,GAAK22M,EAAOgG,iBAAiBxgH,EAAOw6G,EAAOvc,OAEtD,CAEA+gB,eAAAA,CAAgB54J,EAAMp2C,EAAMkqD,EAAO5jB,GACjC,OAAO83J,GAA4BrrM,KAAKsC,KAAjC+oM,CAAuChoJ,EAAMp2C,EAAMkqD,EAAO5jB,EACnE,CAEAhgC,MAAAA,CAAOrH,GACL,MAAMm3C,EAAO/gD,KAAKs1M,YACZplK,EAAO6Q,EAAKwrB,QACZ+rH,EAASv3I,EAAKp2C,MAAQ,GACtBmvM,EAAS/4J,EAAK23I,OAAOqhB,YAK3B,GAFA7pK,EAAKooJ,OAASA,EAED,WAAT1uL,EAAmB,CACrB,MAAMvJ,EAAUL,KAAKw7M,6BAA6B5xM,GAC7C5J,KAAKK,QAAQk+L,WAChBl+L,EAAQ2iM,YAAc,GAGxB,MAAM10L,EAAa,CACjBqkM,OAAO,EACP+U,UAAW5N,EAAOx7M,SAAWg6L,EAAOh6L,OACpC+B,WAGFL,KAAK08M,cAAcxsK,OAAMlxC,EAAWsP,EAAY1E,GAIlD5J,KAAKq9M,eAAe/kB,EAAQ,EAAGA,EAAOh6L,OAAQsL,EAChD,CAEAyzM,cAAAA,CAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,GACnC,MAAMquF,EAAQj4F,KAAKs1M,YAAYgD,OACzB3vM,EAAiB,UAATiB,EAEd,IAAK,IAAI7G,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,EAAOluC,IAAK,CAC1C,MAAMmgM,EAAQ5K,EAAOv1L,GACf1C,EAAUL,KAAKy7M,0BAA0B14M,EAAGmgM,EAAM3gE,OAAS,SAAW34H,GACtE+9M,EAAgB1vH,EAAM2vH,yBAAyB7kN,EAAG/C,KAAKm6M,UAAUp3M,GAAG6nC,GAEpE5nC,EAAI2F,EAAQsvF,EAAM4uH,QAAUc,EAAc3kN,EAC1CoD,EAAIuC,EAAQsvF,EAAM6uH,QAAUa,EAAcvhN,EAE1CkI,EAAa,CACjBtL,IACAoD,IACAgwL,MAAOuxB,EAAcvxB,MACrB+S,KAAMj3K,MAAMlvB,IAAMkvB,MAAM9rB,GACxB/F,WAGFL,KAAK08M,cAAcxZ,EAAOngM,EAAGuL,EAAY1E,EAC3C,CACF,EACF8+F,GApGqB++G,GAAwB,KAE/B,SAAQ/+G,GAFD++G,GAAwB,WAOzB,CAChBxQ,mBAAoB,OACpBC,gBAAiB,QACjBnZ,UAAW,IACXQ,UAAU,EACVtwC,SAAU,CACR/9G,KAAM,CACJykD,KAAM,YAGV+T,GAjBiB++G,GAAwB,YAsBxB,CACjBhqK,YAAa,EAEb6gJ,OAAQ,CACN1zJ,EAAG,CACD/T,KAAM,mBCzBC,MAAMgxL,WAA0BxR,GAoC7C6E,gBAAAA,CAAiB75M,GACf,MAAM0/C,EAAO/gD,KAAKs1M,YACZwE,EAAS95M,KAAKqgI,MAAM11H,KAAKmvM,QAAU,IACnC,OAAC5gB,EAAA,OAAQC,GAAUp4I,EACnB45C,EAAS36F,KAAKm6M,UAAU94M,GACxB2B,EAAIk2L,EAAOiiB,iBAAiBxgH,EAAO33F,GACnCoD,EAAI+yL,EAAOgiB,iBAAiBxgH,EAAOv0F,GAEzC,MAAO,CACLm+I,MAAOu1D,EAAOz4M,IAAU,GACxB7C,MAAO,IAAMwE,EAAI,KAAOoD,EAAI,IAEhC,CAEA6K,MAAAA,CAAOrH,GACL,MAAMm3C,EAAO/gD,KAAKs1M,aACX3qM,KAAM2tL,EAAS,IAAMv3I,EAEtBw3I,EAAqBv4L,KAAKqgI,MAAMg8E,oBACtC,IAAI,MAACxnJ,EAAA,MAAO5jB,GAASonJ,GAAiCt3I,EAAMu3I,EAAQC,GAUpE,GARAv4L,KAAK22M,WAAa9hJ,EAClB70D,KAAK42M,WAAa3lK,EAEdgoJ,GAAoBl4I,KACtB8T,EAAQ,EACR5jB,EAAQqnJ,EAAOh6L,QAGb0B,KAAKK,QAAQk+L,SAAU,CAGpBv+L,KAAKi3M,oBACRj3M,KAAKs3M,cAEP,MAAO/qI,QAASr8B,EAAA,SAAM41K,GAAY/kK,EAGlC7Q,EAAK4/J,OAAS9vM,KAAKqgI,MACnBnwF,EAAK+/J,cAAgBjwM,KAAKqB,MAC1B6uC,EAAK61K,aAAeD,EAASC,WAC7B71K,EAAKooJ,OAASA,EAEd,MAAMj4L,EAAUL,KAAKw7M,6BAA6B5xM,GAClDvJ,EAAQmxH,QAAUxxH,KAAKK,QAAQmxH,QAC/BxxH,KAAK08M,cAAcxsK,OAAMlxC,EAAW,CAClCgnN,UAAWztB,EACXl4L,WACCuJ,EACL,MAAW5J,KAAKi3M,4BAEPl2J,EAAKwrB,QACZvsE,KAAKi3M,oBAAqB,GAI5Bj3M,KAAKq9M,eAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,EAC5C,CAEA0tM,WAAAA,GACE,MAAM,SAAC/Y,GAAYv+L,KAAKK,SAEnBL,KAAKi3M,oBAAsB1Y,IAC9Bv+L,KAAKi3M,mBAAqBj3M,KAAKqgI,MAAMynF,SAASC,WAAW,SAG3D5jI,MAAMmzH,aACR,CAEA+F,cAAAA,CAAe/kB,EAAQzjI,EAAO5jB,EAAOrnC,GACnC,MAAMjB,EAAiB,UAATiB,GACR,OAAC8uL,EAAA,OAAQyc,EAAA,SAAQkC,EAAA,SAAUyO,GAAY9lN,KAAKs1M,YAC5CiH,EAAYv8M,KAAKy7M,0BAA0B5mJ,EAAOjrD,GAClDwyM,EAAgBp8M,KAAKk8M,iBAAiBK,GACtCJ,EAAiBn8M,KAAKm8M,eAAevyM,EAAMwyM,GAC3C5G,EAAQ9c,EAAOE,KACf6c,EAAQN,EAAOvc,MACf,SAACsS,EAAA,QAAU15E,GAAWxxH,KAAKK,QAC3B4lN,EAAetgF,GAASulE,GAAYA,EAAW74K,OAAOuiK,kBACtDsxB,EAAelmN,KAAKqgI,MAAMg8E,qBAAuB1zM,GAAkB,SAATiB,EAChE,IAAIw8M,EAAavxJ,EAAQ,GAAK70D,KAAKm6M,UAAUtlJ,EAAQ,GAErD,IAAK,IAAI9xD,EAAI8xD,EAAO9xD,EAAI8xD,EAAQ5jB,IAASluC,EAAG,CAC1C,MAAMmgM,EAAQ5K,EAAOv1L,GACf43F,EAAS36F,KAAKm6M,UAAUp3M,GACxBuL,EAAa43M,EAAehjB,EAAQ,GACpCmjB,EAAW1zB,GAAch4F,EAAO86G,IAChC9K,EAASr8L,EAAWknM,GAAS9c,EAAOM,iBAAiBr+F,EAAO66G,GAAQzyM,GACpE6nM,EAASt8L,EAAWmnM,GAAS9sM,GAAS09M,EAAWlR,EAAO0K,eAAiB1K,EAAOnc,iBAAiBqe,EAAWr3M,KAAKu0M,WAAWY,EAAQx6G,EAAQ08G,GAAY18G,EAAO86G,GAAQ1yM,GAE7KuL,EAAW66L,KAAOj3K,MAAMy4K,IAAWz4K,MAAM04K,IAAWyb,EACpD/3M,EAAW04E,KAAOjkF,EAAI,GAAKoK,KAAM2H,IAAI6lF,EAAO66G,GAAS4Q,EAAW5Q,IAAWyQ,EACvEz0F,IACFljH,EAAWqsF,OAASA,EACpBrsF,EAAWotM,IAAMoK,EAASn7M,KAAK5H,IAG7Bo5M,IACF7tM,EAAWjO,QAAU+7M,GAAiBp8M,KAAKy7M,0BAA0B14M,EAAGmgM,EAAM3gE,OAAS,SAAW34H,IAG/Fs8M,GACHlmN,KAAK08M,cAAcxZ,EAAOngM,EAAGuL,EAAY1E,GAG3Cw8M,EAAazrH,CACf,CAEA36F,KAAKy8M,oBAAoBL,EAAexyM,EAAM2yM,EAChD,CAKAtB,cAAAA,GACE,MAAMl6J,EAAO/gD,KAAKs1M,YACZ3qM,EAAOo2C,EAAKp2C,MAAQ,GAE1B,IAAK3K,KAAKK,QAAQk+L,SAAU,CAC1B,IAAI1tL,EAAM,EACV,IAAK,IAAI9N,EAAI4H,EAAKrM,OAAS,EAAGyE,GAAK,IAAKA,EACtC8N,EAAM1D,KAAK0D,IAAIA,EAAKlG,EAAK5H,GAAG05B,KAAKz8B,KAAKy7M,0BAA0B14M,IAAM,GAExE,OAAO8N,EAAM,GAAKA,EAGpB,MAAM07D,EAAUxrB,EAAKwrB,QACf4zH,EAAS5zH,EAAQlsE,SAAWksE,EAAQlsE,QAAQ2iM,aAAe,EAEjE,IAAKr4L,EAAKrM,OACR,OAAO6hM,EAGT,MAAMmJ,EAAa3+L,EAAK,GAAG8xB,KAAKz8B,KAAKy7M,0BAA0B,IACzD6K,EAAY37M,EAAKA,EAAKrM,OAAS,GAAGm+B,KAAKz8B,KAAKy7M,0BAA0B9wM,EAAKrM,OAAS,IAC1F,OAAO6O,KAAK0D,IAAIsvL,EAAQmJ,EAAYgd,GAAa,CACnD,EACF59G,GA7KqBm/G,GAA0B,KAEjC,WAAUn/G,GAFHm/G,GAA0B,WAO3B,CAChB5Q,oBAAoB,EACpBC,gBAAiB,QACjB3Y,UAAU,EACV5pG,MAAM,IACN+T,GAZiBm/G,GAA0B,YAiB1B,CAEjB7pB,YAAa,CACXp0L,KAAM,SAGR00L,OAAQ,CACNt7L,EAAG,CACD6zB,KAAM,UAERzwB,EAAG,CACDywB,KAAM,aC+Bd,SAASmxL,KACP,MAAM,IAAIj6M,MAAM,kFAClB,CAQA,MAAMk6M,GAYJ,eAAOvpB,CACLwpB,GAEAvsN,OAAO49C,OAAO0uK,GAAgB/nN,UAAWgoN,EAC3C,CAIAn6L,WAAAA,CAAY1tB,GAAoBqoG,GAAA,uBAC9B1oG,KAAKK,QAAUA,GAAW,CAAC,CAC7B,CAGAmI,IAAAA,GAAQ,CAER2/M,OAAAA,GACE,OAAOH,IACT,CAEA57M,KAAAA,GACE,OAAO47M,IACT,CAEA/7M,MAAAA,GACE,OAAO+7M,IACT,CAEAhnN,GAAAA,GACE,OAAOgnN,IACT,CAEAI,IAAAA,GACE,OAAOJ,IACT,CAEAK,OAAAA,GACE,OAAOL,IACT,CAEAM,KAAAA,GACE,OAAON,IACT,EAGF,IAAA/qE,GACSgrE,GC9GT,SAASM,GAAaC,EAAS5vB,EAAMp6L,EAAOy/L,GAC1C,MAAM,WAAC75E,EAAU,KAAEz5G,EAAA,QAAM8tL,GAAW+vB,EAC9B9vB,EAASt0E,EAAWkxF,YAAY5c,OACtC,GAAIA,GAAUE,IAASF,EAAOE,MAAiB,MAATA,GAAgBH,GAAW9tL,EAAKrM,OAAQ,CAC5E,MAAMmqN,EAAe/vB,EAAOgwB,eAAiBlxB,GAAgBD,GAC7D,IAAK0G,EACH,OAAOwqB,EAAa99M,EAAMiuL,EAAMp6L,GAC3B,GAAI4lH,EAAWsyF,eAAgB,CAIpC,MAAM56L,EAAKnR,EAAK,GACVpO,EAA+B,oBAAhBuf,EAAG6sM,UAA2B7sM,EAAG6sM,SAAS/vB,GAC/D,GAAIr8L,EAAO,CACT,MAAMs4D,EAAQ4zJ,EAAa99M,EAAMiuL,EAAMp6L,EAAQjC,GACzCu4D,EAAM2zJ,EAAa99M,EAAMiuL,EAAMp6L,EAAQjC,GAC7C,MAAO,CAAC+6L,GAAIziI,EAAMyiI,GAAItyH,GAAIlQ,EAAIkQ,MAKpC,MAAO,CAACsyH,GAAI,EAAGtyH,GAAIr6D,EAAKrM,OAAS,EACnC,CAUA,SAASsqN,GAAyBvoF,EAAOu4D,EAAMr8G,EAAUx7E,EAASk9L,GAChE,MAAMoW,EAAWh0E,EAAMwoF,+BACjBrqN,EAAQ+9E,EAASq8G,GACvB,IAAK,IAAI71L,EAAI,EAAGswL,EAAOghB,EAAS/1M,OAAQyE,EAAIswL,IAAQtwL,EAAG,CACrD,MAAM,MAAC1B,EAAA,KAAOsJ,GAAQ0pM,EAAStxM,IACzB,GAACu0L,EAAA,GAAItyH,GAAMujJ,GAAalU,EAAStxM,GAAI61L,EAAMp6L,EAAOy/L,GACxD,IAAK,IAAI72L,EAAIkwL,EAAIlwL,GAAK49D,IAAM59D,EAAG,CAC7B,MAAM0hB,EAAUne,EAAKvD,GAChB0hB,EAAQqgL,MACXpoM,EAAQ+nB,EAASznB,EAAO+F,EAE5B,CACF,CACF,CA2BA,SAAS0hN,GAAkBzoF,EAAO9jD,EAAUq8G,EAAMmwB,EAAkB7qB,GAClE,MAAM77D,EAAQ,GAEd,IAAK67D,IAAqB79D,EAAM2oF,cAAczsI,GAC5C,OAAO8lD,EAaT,OADAumF,GAAyBvoF,EAAOu4D,EAAMr8G,GATf,SAASzzD,EAAS0qK,EAAcnyL,IAChD68L,GAAqB+E,GAAen6K,EAASu3G,EAAMk7E,UAAW,KAG/DzyL,EAAQmgM,QAAQ1sI,EAASv5E,EAAGu5E,EAASn2E,EAAG2iN,IAC1C1mF,EAAMlhI,KAAK,CAAC2nB,UAAS0qK,eAAcnyL,SAEvC,IAEgE,GACzDghI,CACT,CAoCA,SAAS6mF,GAAyB7oF,EAAO9jD,EAAUq8G,EAAMqF,EAAW8qB,EAAkB7qB,GACpF,IAAI77D,EAAQ,GACZ,MAAM8mF,EA5ER,SAAkCvwB,GAChC,MAAMwwB,GAA8B,IAAvBxwB,EAAKt3L,QAAQ,KACpB+nN,GAA8B,IAAvBzwB,EAAKt3L,QAAQ,KAE1B,OAAO,SAASi1L,EAAKC,GACnB,MAAMjmI,EAAS64J,EAAOj8M,KAAK2H,IAAIyhL,EAAIvzL,EAAIwzL,EAAIxzL,GAAK,EAC1CytD,EAAS44J,EAAOl8M,KAAK2H,IAAIyhL,EAAInwL,EAAIowL,EAAIpwL,GAAK,EAChD,OAAO+G,KAAKsQ,KAAKtQ,KAAK0Q,IAAI0yC,EAAQ,GAAKpjD,KAAK0Q,IAAI4yC,EAAQ,GAC1D,CACF,CAmEyB64J,CAAyB1wB,GAChD,IAAI2wB,EAAcl3L,OAAOuiK,kBAyBzB,OADAg0B,GAAyBvoF,EAAOu4D,EAAMr8G,GAtBtC,SAAwBzzD,EAAS0qK,EAAcnyL,GAC7C,MAAM4nN,EAAUngM,EAAQmgM,QAAQ1sI,EAASv5E,EAAGu5E,EAASn2E,EAAG2iN,GACxD,GAAI9qB,IAAcgrB,EAChB,OAGF,MAAMlpI,EAASj3D,EAAQ0gM,eAAeT,GAEtC,OADsB7qB,GAAoB79D,EAAM2oF,cAAcjpI,MACzCkpI,EACnB,OAGF,MAAM5yB,EAAW8yB,EAAe5sI,EAAUwD,GACtCs2G,EAAWkzB,GACblnF,EAAQ,CAAC,CAACv5G,UAAS0qK,eAAcnyL,UACjCkoN,EAAclzB,GACLA,IAAakzB,GAEtBlnF,EAAMlhI,KAAK,CAAC2nB,UAAS0qK,eAAcnyL,SAEvC,IAGOghI,CACT,CAYA,SAASonF,GAAgBppF,EAAO9jD,EAAUq8G,EAAMqF,EAAW8qB,EAAkB7qB,GAC3E,OAAKA,GAAqB79D,EAAM2oF,cAAczsI,GAI9B,MAATq8G,GAAiBqF,EAEpBirB,GAAyB7oF,EAAO9jD,EAAUq8G,EAAMqF,EAAW8qB,EAAkB7qB,GA1EnF,SAA+B79D,EAAO9jD,EAAUq8G,EAAMmwB,GACpD,IAAI1mF,EAAQ,GAYZ,OADAumF,GAAyBvoF,EAAOu4D,EAAMr8G,GATtC,SAAwBzzD,EAAS0qK,EAAcnyL,GAC7C,MAAM,WAACuiN,EAAA,SAAYC,GAAY/6L,EAAQ4gM,SAAS,CAAC,aAAc,YAAaX,IACtE,MAAC3yB,GAASN,GAAkBhtK,EAAS,CAAC9lB,EAAGu5E,EAASv5E,EAAGoD,EAAGm2E,EAASn2E,IAEnEuwL,GAAcP,EAAOwtB,EAAYC,IACnCxhF,EAAMlhI,KAAK,CAAC2nB,UAAS0qK,eAAcnyL,SAEvC,IAGOghI,CACT,CA2DMsnF,CAAsBtpF,EAAO9jD,EAAUq8G,EAAMmwB,GAJxC,EAMX,CAWA,SAASa,GAAavpF,EAAO9jD,EAAUq8G,EAAMqF,EAAW8qB,GACtD,MAAM1mF,EAAQ,GACRwnF,EAAuB,MAATjxB,EAAe,WAAa,WAChD,IAAIkxB,GAAiB,EAWrB,OATAlB,GAAyBvoF,EAAOu4D,EAAMr8G,GAAU,CAACzzD,EAAS0qK,EAAcnyL,KAClEynB,EAAQ+gM,IAAgB/gM,EAAQ+gM,GAAattI,EAASq8G,GAAOmwB,KAC/D1mF,EAAMlhI,KAAK,CAAC2nB,UAAS0qK,eAAcnyL,UACnCyoN,EAAiBA,GAAkBhhM,EAAQmgM,QAAQ1sI,EAASv5E,EAAGu5E,EAASn2E,EAAG2iN,OAM3E9qB,IAAc6rB,EACT,GAEFznF,CACT,CAMA,IAAA0nF,GAAe,CAEbnB,4BAGAoB,MAAO,CAYL3oN,KAAAA,CAAMg/H,EAAO9gI,EAAGc,EAAS0oN,GACvB,MAAMxsI,EAAW4vH,GAAoB5sM,EAAG8gI,GAElCu4D,EAAOv4L,EAAQu4L,MAAQ,IACvBsF,EAAmB79L,EAAQ69L,mBAAoB,EAC/C77D,EAAQhiI,EAAQ49L,UAClB6qB,GAAkBzoF,EAAO9jD,EAAUq8G,EAAMmwB,EAAkB7qB,GAC3DurB,GAAgBppF,EAAO9jD,EAAUq8G,GAAM,EAAOmwB,EAAkB7qB,GAC9DjwC,EAAW,GAEjB,OAAK5rB,EAAM/jI,QAIX+hI,EAAMwoF,+BAA+B/nN,SAASigD,IAC5C,MAAM1/C,EAAQghI,EAAM,GAAGhhI,MACjBynB,EAAUi4B,EAAKp2C,KAAKtJ,GAGtBynB,IAAYA,EAAQqgL,MACtBl7C,EAAS9sJ,KAAK,CAAC2nB,UAAS0qK,aAAczyI,EAAK1/C,MAAOA,aAI/C4sJ,GAbE,EAcX,EAYA1hF,OAAAA,CAAQ8zD,EAAO9gI,EAAGc,EAAS0oN,GACzB,MAAMxsI,EAAW4vH,GAAoB5sM,EAAG8gI,GAClCu4D,EAAOv4L,EAAQu4L,MAAQ,KACvBsF,EAAmB79L,EAAQ69L,mBAAoB,EACrD,IAAI77D,EAAQhiI,EAAQ49L,UAChB6qB,GAAkBzoF,EAAO9jD,EAAUq8G,EAAMmwB,EAAkB7qB,GAC7DurB,GAAgBppF,EAAO9jD,EAAUq8G,GAAM,EAAOmwB,EAAkB7qB,GAElE,GAAI77D,EAAM/jI,OAAS,EAAG,CACpB,MAAMk1L,EAAenxD,EAAM,GAAGmxD,aACxB7oL,EAAO01H,EAAMk4E,eAAe/kB,GAAc7oL,KAChD03H,EAAQ,GACR,IAAK,IAAIt/H,EAAI,EAAGA,EAAI4H,EAAKrM,SAAUyE,EACjCs/H,EAAMlhI,KAAK,CAAC2nB,QAASne,EAAK5H,GAAIywL,eAAcnyL,MAAO0B,IAIvD,OAAOs/H,CACT,EAYA6gE,MAAK,CAAC7iE,EAAO9gI,EAAGc,EAAS0oN,IAIhBD,GAAkBzoF,EAHR8rE,GAAoB5sM,EAAG8gI,GAC3BhgI,EAAQu4L,MAAQ,KAEmBmwB,EADvB1oN,EAAQ69L,mBAAoB,GAavD+rB,OAAAA,CAAQ5pF,EAAO9gI,EAAGc,EAAS0oN,GACzB,MAAMxsI,EAAW4vH,GAAoB5sM,EAAG8gI,GAClCu4D,EAAOv4L,EAAQu4L,MAAQ,KACvBsF,EAAmB79L,EAAQ69L,mBAAoB,EACrD,OAAOurB,GAAgBppF,EAAO9jD,EAAUq8G,EAAMv4L,EAAQ49L,UAAW8qB,EAAkB7qB,EACrF,EAWAl7L,EAAC,CAACq9H,EAAO9gI,EAAGc,EAAS0oN,IAEZa,GAAavpF,EADH8rE,GAAoB5sM,EAAG8gI,GACH,IAAKhgI,EAAQ49L,UAAW8qB,GAY/D3iN,EAAC,CAACi6H,EAAO9gI,EAAGc,EAAS0oN,IAEZa,GAAavpF,EADH8rE,GAAoB5sM,EAAG8gI,GACH,IAAKhgI,EAAQ49L,UAAW8qB,KCpWnE,MAAMmB,GAAmB,CAAC,OAAQ,MAAO,QAAS,UAElD,SAASC,GAAiBlgM,EAAOsyD,GAC/B,OAAOtyD,EAAMf,QAAOioB,GAAKA,EAAEtG,MAAQ0xC,GACrC,CAEA,SAAS6tI,GAA4BngM,EAAO2uK,GAC1C,OAAO3uK,EAAMf,QAAOioB,IAA0C,IAArC+4K,GAAiB5oN,QAAQ6vC,EAAEtG,MAAesG,EAAEm7J,IAAI1T,OAASA,GACpF,CAEA,SAASyxB,GAAapgM,EAAO2vF,GAC3B,OAAO3vF,EAAM2tF,MAAK,CAAC3xG,EAAGC,KACpB,MAAMotL,EAAK15E,EAAU1zG,EAAID,EACnBstL,EAAK35E,EAAU3zG,EAAIC,EACzB,OAAOotL,EAAG7B,SAAW8B,EAAG9B,OACtB6B,EAAGjyL,MAAQkyL,EAAGlyL,MACdiyL,EAAG7B,OAAS8B,EAAG9B,MAAM,GAE3B,CAuCA,SAAS64B,GAAcC,EAAS97H,GAC9B,MAAMqmH,EAlBR,SAAqByV,GACnB,MAAMzV,EAAS,CAAC,EAChB,IAAK,MAAMrxE,KAAQ8mF,EAAS,CAC1B,MAAM,MAAChqL,EAAK,IAAEsK,EAAA,YAAK2/K,GAAe/mF,EAClC,IAAKljG,IAAU2pL,GAAiBnwK,SAASlP,GACvC,SAEF,MAAM68J,EAASoN,EAAOv0K,KAAWu0K,EAAOv0K,GAAS,CAAC0Q,MAAO,EAAGw5K,OAAQ,EAAGh5B,OAAQ,EAAGh1J,KAAM,IACxFirK,EAAOz2J,QACPy2J,EAAOjW,QAAU+4B,CACnB,CACA,OAAO1V,CACT,CAMiB4V,CAAYH,IACrB,aAACI,EAAA,cAAcC,GAAiBn8H,EACtC,IAAI1rF,EAAGswL,EAAMw3B,EACb,IAAK9nN,EAAI,EAAGswL,EAAOk3B,EAAQjsN,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAChD8nN,EAASN,EAAQxnN,GACjB,MAAM,SAAC+nN,GAAYD,EAAOve,IACpB/rK,EAAQu0K,EAAO+V,EAAOtqL,OACtB7iB,EAAS6iB,GAASsqL,EAAOL,YAAcjqL,EAAMkxJ,OAC/Co5B,EAAO3L,YACT2L,EAAO72K,MAAQt2B,EAASA,EAASitM,EAAeG,GAAYr8H,EAAOs8H,eACnEF,EAAO52K,OAAS22K,IAEhBC,EAAO72K,MAAQ22K,EACfE,EAAO52K,OAASv2B,EAASA,EAASktM,EAAgBE,GAAYr8H,EAAOu8H,gBAEzE,CACA,OAAOlW,CACT,CAsBA,SAASmW,GAAeC,EAAY3P,EAAWt1M,EAAGC,GAChD,OAAOiH,KAAK0D,IAAIq6M,EAAWjlN,GAAIs1M,EAAUt1M,IAAMkH,KAAK0D,IAAIq6M,EAAWhlN,GAAIq1M,EAAUr1M,GACnF,CAEA,SAASilN,GAAiBD,EAAYE,GACpCF,EAAWp1J,IAAM3oD,KAAK0D,IAAIq6M,EAAWp1J,IAAKs1J,EAAWt1J,KACrDo1J,EAAW5kN,KAAO6G,KAAK0D,IAAIq6M,EAAW5kN,KAAM8kN,EAAW9kN,MACvD4kN,EAAW7rI,OAASlyE,KAAK0D,IAAIq6M,EAAW7rI,OAAQ+rI,EAAW/rI,QAC3D6rI,EAAW3kN,MAAQ4G,KAAK0D,IAAIq6M,EAAW3kN,MAAO6kN,EAAW7kN,MAC3D,CAEA,SAAS8kN,GAAW9P,EAAW9sH,EAAQo8H,EAAQ/V,GAC7C,MAAM,IAACjqK,EAAA,IAAKyhK,GAAOue,EACbK,EAAa3P,EAAU2P,WAG7B,IAAK/yL,GAAS0S,GAAM,CACdggL,EAAOpuL,OAET8+K,EAAU1wK,IAAQggL,EAAOpuL,MAE3B,MAAM8D,EAAQu0K,EAAO+V,EAAOtqL,QAAU,CAAC9D,KAAM,EAAGwU,MAAO,GACvD1Q,EAAM9D,KAAOtvB,KAAK0D,IAAI0vB,EAAM9D,KAAMouL,EAAO3L,WAAa5S,EAAIr4J,OAASq4J,EAAIt4J,OACvE62K,EAAOpuL,KAAO8D,EAAM9D,KAAO8D,EAAM0Q,MACjCsqK,EAAU1wK,IAAQggL,EAAOpuL,KAGvB6vK,EAAIgf,YACNH,GAAiBD,EAAY5e,EAAIgf,cAGnC,MAAMC,EAAWp+M,KAAK0D,IAAI,EAAG49E,EAAO+8H,WAAaP,GAAeC,EAAY3P,EAAW,OAAQ,UACzFkQ,EAAYt+M,KAAK0D,IAAI,EAAG49E,EAAOi9H,YAAcT,GAAeC,EAAY3P,EAAW,MAAO,WAC1FoQ,EAAeJ,IAAahQ,EAAUjjJ,EACtCszJ,EAAgBH,IAAclQ,EAAUv9L,EAK9C,OAJAu9L,EAAUjjJ,EAAIizJ,EACdhQ,EAAUv9L,EAAIytM,EAGPZ,EAAO3L,WACV,CAAC2M,KAAMF,EAAcngM,MAAOogM,GAC5B,CAACC,KAAMD,EAAepgM,MAAOmgM,EACnC,CAgBA,SAASG,GAAW5M,EAAY3D,GAC9B,MAAM2P,EAAa3P,EAAU2P,WAE7B,SAASa,EAAmB7pG,GAC1B,MAAM3zE,EAAS,CAACjoC,KAAM,EAAGwvD,IAAK,EAAGvvD,MAAO,EAAG84E,OAAQ,GAInD,OAHA6iC,EAAUphH,SAAS+pC,IACjB0D,EAAO1D,GAAO19B,KAAK0D,IAAI0qM,EAAU1wK,GAAMqgL,EAAWrgL,GAAI,IAEjD0D,CACT,CAEA,OACIw9K,EADG7M,EACgB,CAAC,OAAQ,SACT,CAAC,MAAO,UACjC,CAEA,SAAS8M,GAASC,EAAO1Q,EAAW9sH,EAAQqmH,GAC1C,MAAMoX,EAAa,GACnB,IAAInpN,EAAGswL,EAAMw3B,EAAQve,EAAK6f,EAAOzyB,EAEjC,IAAK32L,EAAI,EAAGswL,EAAO44B,EAAM3tN,OAAQ6tN,EAAQ,EAAGppN,EAAIswL,IAAQtwL,EAAG,CACzD8nN,EAASoB,EAAMlpN,GACfupM,EAAMue,EAAOve,IAEbA,EAAIr7L,OACF45M,EAAO72K,OAASunK,EAAUjjJ,EAC1BuyJ,EAAO52K,QAAUsnK,EAAUv9L,EAC3B8tM,GAAWjB,EAAO3L,WAAY3D,IAEhC,MAAM,KAACsQ,EAAA,MAAMrgM,GAAS6/L,GAAW9P,EAAW9sH,EAAQo8H,EAAQ/V,GAI5DqX,GAASN,GAAQK,EAAW5tN,OAG5Bo7L,EAAUA,GAAWluK,EAEhB8gL,EAAIwe,UACPoB,EAAW/qN,KAAK0pN,EAEpB,CAEA,OAAOsB,GAASH,GAASE,EAAY3Q,EAAW9sH,EAAQqmH,IAAWpb,CACrE,CAEA,SAAS0yB,GAAW9f,EAAKhmM,EAAMwvD,EAAK9hB,EAAOC,GACzCq4J,EAAIx2I,IAAMA,EACVw2I,EAAIhmM,KAAOA,EACXgmM,EAAI/lM,MAAQD,EAAO0tC,EACnBs4J,EAAIjtH,OAASvpB,EAAM7hB,EACnBq4J,EAAIt4J,MAAQA,EACZs4J,EAAIr4J,OAASA,CACf,CAEA,SAASo4K,GAAWJ,EAAO1Q,EAAW9sH,EAAQqmH,GAC5C,MAAMwX,EAAc79H,EAAOzjF,QAC3B,IAAI,EAAChI,EAAA,EAAGoD,GAAKm1M,EAEb,IAAK,MAAMsP,KAAUoB,EAAO,CAC1B,MAAM3f,EAAMue,EAAOve,IACb/rK,EAAQu0K,EAAO+V,EAAOtqL,QAAU,CAAC0Q,MAAO,EAAGw5K,OAAQ,EAAGh5B,OAAQ,GAC9DA,EAASo5B,EAAQL,YAAcjqL,EAAMkxJ,QAAW,EACtD,GAAIo5B,EAAO3L,WAAY,CACrB,MAAMlrK,EAAQunK,EAAUjjJ,EAAIm5H,EACtBx9I,EAAS1T,EAAM9D,MAAQ6vK,EAAIr4J,OAC7BsgJ,GAAQh0J,EAAMs0B,SAChBzuD,EAAIm6B,EAAMs0B,OAERy3I,EAAIwe,SACNsB,GAAW9f,EAAKggB,EAAYhmN,KAAMF,EAAGqoF,EAAO+8H,WAAac,EAAY/lN,MAAQ+lN,EAAYhmN,KAAM2tC,GAE/Fm4K,GAAW9f,EAAKiP,EAAUj1M,KAAOi6B,EAAMkqL,OAAQrkN,EAAG4tC,EAAOC,GAE3D1T,EAAMs0B,MAAQzuD,EACdm6B,EAAMkqL,QAAUz2K,EAChB5tC,EAAIkmM,EAAIjtH,WACH,CACL,MAAMprC,EAASsnK,EAAUv9L,EAAIyzK,EACvBz9I,EAAQzT,EAAM9D,MAAQ6vK,EAAIt4J,MAC5BugJ,GAAQh0J,EAAMs0B,SAChB7xD,EAAIu9B,EAAMs0B,OAERy3I,EAAIwe,SACNsB,GAAW9f,EAAKtpM,EAAGspN,EAAYx2J,IAAK9hB,EAAOy6C,EAAOi9H,YAAcY,EAAYjtI,OAASitI,EAAYx2J,KAEjGs2J,GAAW9f,EAAKtpM,EAAGu4M,EAAUzlJ,IAAMv1B,EAAMkqL,OAAQz2K,EAAOC,GAE1D1T,EAAMs0B,MAAQ7xD,EACdu9B,EAAMkqL,QAAUx2K,EAChBjxC,EAAIspM,EAAI/lM,MAEZ,CAEAg1M,EAAUv4M,EAAIA,EACdu4M,EAAUn1M,EAAIA,CAChB,CAwBA,IAAAmkN,GAAe,CAQbgC,MAAAA,CAAOlsF,EAAO1zC,GACP0zC,EAAM4rF,QACT5rF,EAAM4rF,MAAQ,IAIhBt/H,EAAKm+H,SAAWn+H,EAAKm+H,WAAY,EACjCn+H,EAAKpQ,SAAWoQ,EAAKpQ,UAAY,MACjCoQ,EAAK8kG,OAAS9kG,EAAK8kG,QAAU,EAE7B9kG,EAAK6/H,QAAU7/H,EAAK6/H,SAAW,WAC7B,MAAO,CAAC,CACNxvM,EAAG,EACH00L,IAAAA,CAAK6J,GACH5uH,EAAK+kH,KAAK6J,EACZ,GAEJ,EAEAl7E,EAAM4rF,MAAM9qN,KAAKwrF,EACnB,EAOA8/H,SAAAA,CAAUpsF,EAAOqsF,GACf,MAAMrrN,EAAQg/H,EAAM4rF,MAAQ5rF,EAAM4rF,MAAM3qN,QAAQorN,IAAe,GAChD,IAAXrrN,GACFg/H,EAAM4rF,MAAM1qN,OAAOF,EAAO,EAE9B,EAQAiyM,SAAAA,CAAUjzE,EAAO1zC,EAAMtsF,GACrBssF,EAAKm+H,SAAWzqN,EAAQyqN,SACxBn+H,EAAKpQ,SAAWl8E,EAAQk8E,SACxBoQ,EAAK8kG,OAASpxL,EAAQoxL,MACxB,EAUAxgL,MAAAA,CAAOovH,EAAOrsF,EAAOC,EAAQ04K,GAC3B,IAAKtsF,EACH,OAGF,MAAMr1H,EAAU26L,GAAUtlE,EAAMhgI,QAAQwqN,OAAO7/M,SACzC+/M,EAAiB59M,KAAK0D,IAAImjC,EAAQhpC,EAAQgpC,MAAO,GACjDg3K,EAAkB79M,KAAK0D,IAAIojC,EAASjpC,EAAQipC,OAAQ,GACpDg4K,EA5QV,SAA0BA,GACxB,MAAMW,EA1DR,SAAmBX,GACjB,MAAMW,EAAc,GACpB,IAAI7pN,EAAGswL,EAAMiZ,EAAKzhK,EAAKtK,EAAOiqL,EAE9B,IAAKznN,EAAI,EAAGswL,GAAQ44B,GAAS,IAAI3tN,OAAQyE,EAAIswL,IAAQtwL,EACnDupM,EAAM2f,EAAMlpN,KACVw5E,SAAU1xC,EAAKxqC,SAAUkgC,QAAOiqL,cAAc,IAAMle,GACtDsgB,EAAYzrN,KAAK,CACfE,MAAO0B,EACPupM,MACAzhK,MACAq0K,WAAY5S,EAAIwT,eAChBruB,OAAQ6a,EAAI7a,OACZlxJ,MAAOA,GAAUsK,EAAMtK,EACvBiqL,gBAGJ,OAAOoC,CACT,CAwCsBC,CAAUZ,GACxBnB,EAAWT,GAAauC,EAAY1jM,QAAOu6G,GAAQA,EAAK6oE,IAAIwe,YAAW,GACvExkN,EAAO+jN,GAAaF,GAAiByC,EAAa,SAAS,GAC3DrmN,EAAQ8jN,GAAaF,GAAiByC,EAAa,UACnD92J,EAAMu0J,GAAaF,GAAiByC,EAAa,QAAQ,GACzDvtI,EAASgrI,GAAaF,GAAiByC,EAAa,WACpDE,EAAmB1C,GAA4BwC,EAAa,KAC5DG,EAAiB3C,GAA4BwC,EAAa,KAEhE,MAAO,CACL9B,WACAkC,WAAY1mN,EAAK2E,OAAO6qD,GACxBm3J,eAAgB1mN,EAAM0E,OAAO8hN,GAAgB9hN,OAAOo0E,GAAQp0E,OAAO6hN,GACnEvR,UAAW4O,GAAiByC,EAAa,aACzCx/G,SAAU9mG,EAAK2E,OAAO1E,GAAO0E,OAAO8hN,GACpC7N,WAAYppJ,EAAI7qD,OAAOo0E,GAAQp0E,OAAO6hN,GAE1C,CA0PkBI,CAAiB7sF,EAAM4rF,OAC/BkB,EAAgBlB,EAAM7+G,SACtBggH,EAAkBnB,EAAM/M,WAI9B5yL,GAAK+zG,EAAM4rF,OAAO3f,IACgB,oBAArBA,EAAI+gB,cACb/gB,EAAI+gB,kBA+BR,MAAMC,EAA0BH,EAAcjjM,QAAO,CAACopH,EAAO7P,IAC3DA,EAAK6oE,IAAIjsM,UAAwC,IAA7BojI,EAAK6oE,IAAIjsM,QAAQ6vE,QAAoBojE,EAAQA,EAAQ,GAAG,IAAM,EAE9E7kD,EAAS9yF,OAAOk9K,OAAO,CAC3B2yC,WAAYx3K,EACZ03K,YAAaz3K,EACbjpC,UACA+/M,iBACAC,kBACAL,aAAcI,EAAiB,EAAIuC,EACnC1C,cAAeI,EAAkB,IAE7BE,EAAavvN,OAAO49C,OAAO,CAAC,EAAGvuC,GACrCmgN,GAAiBD,EAAYvlB,GAAUgnB,IACvC,MAAMpR,EAAY5/M,OAAO49C,OAAO,CAC9B2xK,aACA5yJ,EAAGyyJ,EACH/sM,EAAGgtM,EACHhoN,EAAGgI,EAAQ1E,KACXF,EAAG4E,EAAQ8qD,KACV9qD,GAEG8pM,EAASwV,GAAc6C,EAAcliN,OAAOmiN,GAAkB3+H,GAGpEu9H,GAASC,EAAMnB,SAAUvP,EAAW9sH,EAAQqmH,GAG5CkX,GAASmB,EAAe5R,EAAW9sH,EAAQqmH,GAGvCkX,GAASoB,EAAiB7R,EAAW9sH,EAAQqmH,IAE/CkX,GAASmB,EAAe5R,EAAW9sH,EAAQqmH,GApRjD,SAA0ByG,GACxB,MAAM2P,EAAa3P,EAAU2P,WAE7B,SAASqC,EAAU1iL,GACjB,MAAM2iL,EAASrgN,KAAK0D,IAAIq6M,EAAWrgL,GAAO0wK,EAAU1wK,GAAM,GAE1D,OADA0wK,EAAU1wK,IAAQ2iL,EACXA,CACT,CACAjS,EAAUn1M,GAAKmnN,EAAU,OACzBhS,EAAUv4M,GAAKuqN,EAAU,QACzBA,EAAU,SACVA,EAAU,SACZ,CA2QIE,CAAiBlS,GAGjB8Q,GAAWJ,EAAMe,WAAYzR,EAAW9sH,EAAQqmH,GAGhDyG,EAAUv4M,GAAKu4M,EAAUjjJ,EACzBijJ,EAAUn1M,GAAKm1M,EAAUv9L,EAEzBquM,GAAWJ,EAAMgB,eAAgB1R,EAAW9sH,EAAQqmH,GAEpDz0E,EAAMk7E,UAAY,CAChBj1M,KAAMi1M,EAAUj1M,KAChBwvD,IAAKylJ,EAAUzlJ,IACfvvD,MAAOg1M,EAAUj1M,KAAOi1M,EAAUjjJ,EAClC+mB,OAAQk8H,EAAUzlJ,IAAMylJ,EAAUv9L,EAClCi2B,OAAQsnK,EAAUv9L,EAClBg2B,MAAOunK,EAAUjjJ,GAInBhsC,GAAK2/L,EAAM1Q,WAAYsP,IACrB,MAAMve,EAAMue,EAAOve,IACnB3wM,OAAO49C,OAAO+yJ,EAAKjsE,EAAMk7E,WACzBjP,EAAIr7L,OAAOsqM,EAAUjjJ,EAAGijJ,EAAUv9L,EAAG,CAAC1X,KAAM,EAAGwvD,IAAK,EAAGvvD,MAAO,EAAG84E,OAAQ,GAAG,GAEhF,GC7ba,MAAMquI,GAOnBC,cAAAA,CAAe71H,EAAQr6C,GAAc,CAQrCmwK,cAAAA,CAAex9K,GACb,OAAO,CACT,CASAnxC,gBAAAA,CAAiBohI,EAAOxpG,EAAM51B,GAAW,CAQzC/B,mBAAAA,CAAoBmhI,EAAOxpG,EAAM51B,GAAW,CAK5Cw8L,mBAAAA,GACE,OAAO,CACT,CASAkP,cAAAA,CAAe7jL,EAASkrB,EAAOC,EAAQwJ,GAGrC,OAFAzJ,EAAQ7mC,KAAK0D,IAAI,EAAGmjC,GAASlrB,EAAQkrB,OACrCC,EAASA,GAAUnrB,EAAQmrB,OACpB,CACLD,QACAC,OAAQ9mC,KAAK0D,IAAI,EAAG4sC,EAActwC,KAAKwJ,MAAMq9B,EAAQyJ,GAAexJ,GAExE,CAMA45K,UAAAA,CAAW/1H,GACT,OAAO,CACT,CAMAg2H,YAAAA,CAAahkI,GAEb,ECrEa,MAAMikI,WAAsBL,GACzCC,cAAAA,CAAehhI,GAIb,OAAOA,GAAQA,EAAKoL,YAAcpL,EAAKoL,WAAW,OAAS,IAC7D,CACA+1H,YAAAA,CAAahkI,GACXA,EAAOzpF,QAAQ22D,WAAY,CAC7B,ECRF,MAAMg3J,GAAc,WAOdC,GAAc,CAClBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAGRC,GAAgBnwN,GAAmB,OAAVA,GAA4B,KAAVA,EA8DjD,MAAMowN,KAAuBnhB,IAA+B,CAAC/sM,SAAS,GAQtE,SAAS8sB,GAAe6yG,EAAOxpG,EAAM51B,GAC/Bo/H,GAASA,EAAMvoC,QACjBuoC,EAAMvoC,OAAO54F,oBAAoB23B,EAAM51B,EAAU2tN,GAErD,CAcA,SAASC,GAAiBC,EAAUh3H,GAClC,IAAK,MAAMpsE,KAAQojM,EACjB,GAAIpjM,IAASosE,GAAUpsE,EAAKQ,SAAS4rE,GACnC,OAAO,CAGb,CAEA,SAASi3H,GAAqB1uF,EAAOxpG,EAAM51B,GACzC,MAAM62F,EAASuoC,EAAMvoC,OACf8oB,EAAW,IAAIf,kBAAiBnhF,IACpC,IAAIswL,GAAU,EACd,IAAK,MAAMrwL,KAASD,EAClBswL,EAAUA,GAAWH,GAAiBlwL,EAAMswL,WAAYn3H,GACxDk3H,EAAUA,IAAYH,GAAiBlwL,EAAMuwL,aAAcp3H,GAEzDk3H,GACF/tN,OAIJ,OADA2/G,EAASrP,QAAQ3yG,SAAU,CAAC0iH,WAAW,EAAME,SAAS,IAC/CZ,CACT,CAEA,SAASuuG,GAAqB9uF,EAAOxpG,EAAM51B,GACzC,MAAM62F,EAASuoC,EAAMvoC,OACf8oB,EAAW,IAAIf,kBAAiBnhF,IACpC,IAAIswL,GAAU,EACd,IAAK,MAAMrwL,KAASD,EAClBswL,EAAUA,GAAWH,GAAiBlwL,EAAMuwL,aAAcp3H,GAC1Dk3H,EAAUA,IAAYH,GAAiBlwL,EAAMswL,WAAYn3H,GAEvDk3H,GACF/tN,OAIJ,OADA2/G,EAASrP,QAAQ3yG,SAAU,CAAC0iH,WAAW,EAAME,SAAS,IAC/CZ,CACT,CAEA,MAAMwuG,GAAqB,IAAIh9L,IAC/B,IAAIi9L,GAAsB,EAE1B,SAASC,KACP,MAAMC,EAAM5wN,OAAOu5F,iBACfq3H,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmBtuN,SAAQ,CAACu+L,EAAQh/D,KAC9BA,EAAM0hE,0BAA4BwtB,GACpClwB,OAGN,CAgBA,SAASmwB,GAAqBnvF,EAAOxpG,EAAM51B,GACzC,MAAM62F,EAASuoC,EAAMvoC,OACfjd,EAAYid,GAAU4zG,GAAe5zG,GAC3C,IAAKjd,EACH,OAEF,MAAMwkH,EAAStH,IAAU,CAAC/jJ,EAAOC,KAC/B,MAAMqkB,EAAIuiB,EAAUunC,YACpBnhH,EAAS+yC,EAAOC,GACZqkB,EAAIuiB,EAAUunC,aAQhBnhH,MAEDtC,QAGGiiH,EAAW,IAAImE,gBAAermF,IAClC,MAAMC,EAAQD,EAAQ,GAChBsV,EAAQrV,EAAMolF,YAAY/vE,MAC1BC,EAAStV,EAAMolF,YAAY9vE,OAInB,IAAVD,GAA0B,IAAXC,GAGnBorJ,EAAOrrJ,EAAOC,EAAA,IAKhB,OAHA2sE,EAASrP,QAAQ12B,GAhDnB,SAAuCwlD,EAAOg/D,GACvC+vB,GAAmB3yL,MACtB99B,OAAOM,iBAAiB,SAAUqwN,IAEpCF,GAAmBzyL,IAAI0jG,EAAOg/D,EAChC,CA4CEowB,CAA8BpvF,EAAOg/D,GAE9Bz+E,CACT,CAEA,SAAS8uG,GAAgBrvF,EAAOxpG,EAAM+pF,GAChCA,GACFA,EAAS7O,aAEE,WAATl7E,GAnDN,SAAyCwpG,GACvC+uF,GAAmBrnK,OAAOs4E,GACrB+uF,GAAmB3yL,MACtB99B,OAAOO,oBAAoB,SAAUowN,GAEzC,CA+CIK,CAAgCtvF,EAEpC,CAEA,SAASuvF,GAAqBvvF,EAAOxpG,EAAM51B,GACzC,MAAM62F,EAASuoC,EAAMvoC,OACf0oB,EAAQu3E,IAAWl3L,IAIL,OAAdw/H,EAAMr6H,KACR/E,EA1IN,SAAyBJ,EAAOw/H,GAC9B,MAAMxpG,EAAOo3L,GAAYptN,EAAMg2B,OAASh2B,EAAMg2B,MACxC,EAAC7zB,EAAC,EAAEoD,GAAK+lM,GAAoBtrM,EAAOw/H,GAC1C,MAAO,CACLxpG,OACAwpG,QACAwvF,OAAQhvN,EACRmC,OAAShE,IAANgE,EAAkBA,EAAI,KACzBoD,OAASpH,IAANoH,EAAkBA,EAAI,KAE7B,CAgIe0pN,CAAgBjvN,EAAOw/H,MAEjCA,GAIH,OA5JF,SAAqB30G,EAAMmL,EAAM51B,GAC3ByqB,GACFA,EAAKzsB,iBAAiB43B,EAAM51B,EAAU2tN,GAE1C,CAsJE9hM,CAAYgrE,EAAQjhE,EAAM2pF,GAEnBA,CACT,CAMe,MAAMuvG,WAAoBrC,GAOvCC,cAAAA,CAAe71H,EAAQr6C,GAIrB,MAAMrN,EAAU0nD,GAAUA,EAAOC,YAAcD,EAAOC,WAAW,MASjE,OAAI3nD,GAAWA,EAAQ0nD,SAAWA,GA/OtC,SAAoBA,EAAQr6C,GAC1B,MAAM6C,EAAQw3C,EAAOx3C,MAIf0vK,EAAel4H,EAAO0zB,aAAa,UACnCykG,EAAcn4H,EAAO0zB,aAAa,SAsBxC,GAnBA1zB,EAAOk2H,IAAe,CACpB3c,QAAS,CACPp9J,OAAQ+7K,EACRh8K,MAAOi8K,EACP3vK,MAAO,CACL4vB,QAAS5vB,EAAM4vB,QACfj8B,OAAQqM,EAAMrM,OACdD,MAAOsM,EAAMtM,SAQnBsM,EAAM4vB,QAAU5vB,EAAM4vB,SAAW,QAEjC5vB,EAAMsiE,UAAYtiE,EAAMsiE,WAAa,aAEjC+rG,GAAcsB,GAAc,CAC9B,MAAMC,EAAeviB,GAAa71G,EAAQ,cACrB94F,IAAjBkxN,IACFp4H,EAAO9jD,MAAQk8K,GAInB,GAAIvB,GAAcqB,GAChB,GAA4B,KAAxBl4H,EAAOx3C,MAAMrM,OAIf6jD,EAAO7jD,OAAS6jD,EAAO9jD,OAASyJ,GAAe,OAC1C,CACL,MAAM0yK,EAAgBxiB,GAAa71G,EAAQ,eACrB94F,IAAlBmxN,IACFr4H,EAAO7jD,OAASk8K,GAMxB,CAgMMC,CAAWt4H,EAAQr6C,GACZrN,GAGF,IACT,CAKAw9K,cAAAA,CAAex9K,GACb,MAAM0nD,EAAS1nD,EAAQ0nD,OACvB,IAAKA,EAAOk2H,IACV,OAAO,EAGT,MAAM3c,EAAUv5G,EAAOk2H,IAAa3c,QACpC,CAAC,SAAU,SAASvwM,SAASknG,IAC3B,MAAMxpG,EAAQ6yM,EAAQrpG,GAClB2qF,GAAcn0L,GAChBs5F,EAAO7/C,gBAAgB+vD,GAEvBlQ,EAAO5gE,aAAa8wE,EAAMxpG,MAI9B,MAAM8hD,EAAQ+wJ,EAAQ/wJ,OAAS,CAAC,EAahC,OAZA3kD,OAAOqtB,KAAKs3B,GAAOx/C,SAASP,IAC1Bu3F,EAAOx3C,MAAM//C,GAAO+/C,EAAM//C,EAAI,IAQhCu3F,EAAO9jD,MAAQ8jD,EAAO9jD,aAEf8jD,EAAOk2H,KACP,CACT,CAQA/uN,gBAAAA,CAAiBohI,EAAOxpG,EAAM51B,GAE5BjB,KAAKd,oBAAoBmhI,EAAOxpG,GAEhC,MAAMw5L,EAAUhwF,EAAMiwF,WAAajwF,EAAMiwF,SAAW,CAAC,GAM/CvvN,EALW,CACfwvN,OAAQxB,GACRyB,OAAQrB,GACR9vB,OAAQmwB,IAEe34L,IAAS+4L,GAClCS,EAAQx5L,GAAQ91B,EAAQs/H,EAAOxpG,EAAM51B,EACvC,CAOA/B,mBAAAA,CAAoBmhI,EAAOxpG,GACzB,MAAMw5L,EAAUhwF,EAAMiwF,WAAajwF,EAAMiwF,SAAW,CAAC,GAC/C9vG,EAAQ6vG,EAAQx5L,GAEtB,IAAK2pF,EACH,QAGe,CACf+vG,OAAQb,GACRc,OAAQd,GACRrwB,OAAQqwB,IAEe74L,IAASrJ,IAC1B6yG,EAAOxpG,EAAM2pF,GACrB6vG,EAAQx5L,QAAQ73B,CAClB,CAEAy+L,mBAAAA,GACE,OAAO9+L,OAAOu5F,gBAChB,CAQAy0G,cAAAA,CAAe70G,EAAQ9jD,EAAOC,EAAQwJ,GACpC,OAAOkvJ,GAAe70G,EAAQ9jD,EAAOC,EAAQwJ,EAC/C,CAKAowK,UAAAA,CAAW/1H,GACT,MAAMjd,EAAYid,GAAU4zG,GAAe5zG,GAC3C,SAAUjd,IAAaA,EAAU41I,YACnC,EC9Xa,MAAMrkM,GAAA2B,WAAAA,GAAA26E,GAAA,iBAAAA,GAAA,iBAAAA,GAAA,eAOV,GAAKA,GAAA,uBAAAA,GAAA,2BAIdgoH,eAAAA,CAAgB3H,GACd,MAAM,EAAC/lN,EAAA,EAAGoD,GAAKpG,KAAK0pN,SAAS,CAAC,IAAK,KAAMX,GACzC,MAAO,CAAC/lN,IAAGoD,IACb,CAEAikH,QAAAA,GACE,OAAOsb,GAAS3lI,KAAKgD,IAAM2iI,GAAS3lI,KAAKoG,EAC3C,CASAsjN,QAAAA,CAASn+L,EAAiBolM,GACxB,MAAMxf,EAAQnxM,KAAK4zM,YACnB,IAAK+c,IAAUxf,EAEb,OAAOnxM,KAET,MAAMgnI,EAA+B,CAAC,EAItC,OAHAz7G,EAAMzqB,SAASknG,IACbg/B,EAAIh/B,GAAQmpG,EAAMnpG,IAASmpG,EAAMnpG,GAAMu6B,SAAW4uE,EAAMnpG,GAAM+qG,IAAM/yM,KAAKgoG,EAAe,IAEnFg/B,CACT,EC3BK,SAAS25D,GAAS1oG,EAAOqkG,GAC9B,MAAMs0B,EAAW34H,EAAM53F,QAAQi8L,MACzBu0B,EA8BR,SAA2B54H,GACzB,MAAMtzF,EAASszF,EAAM53F,QAAQsE,OACvBo7L,EAAa9nG,EAAM64H,YACnBC,EAAW94H,EAAMhlD,QAAU8sJ,GAAcp7L,EAAS,EAAI,GACtDqsN,EAAW/4H,EAAMg5H,WAAalxB,EACpC,OAAO5yL,KAAKwJ,MAAMxJ,KAAK4D,IAAIggN,EAAUC,GACvC,CApC6BE,CAAkBj5H,GACvCk5H,EAAahkN,KAAK4D,IAAI6/M,EAASQ,eAAiBP,EAAoBA,GACpEQ,EAAeT,EAAS7vB,MAAMuwB,QAgEtC,SAAyBh1B,GACvB,MAAMzsK,EAAS,GACf,IAAI9sB,EAAGswL,EACP,IAAKtwL,EAAI,EAAGswL,EAAOiJ,EAAMh+L,OAAQyE,EAAIswL,EAAMtwL,IACrCu5L,EAAMv5L,GAAGg+L,OACXlxK,EAAO1uB,KAAK4B,GAGhB,OAAO8sB,CACT,CAzEgD0hM,CAAgBj1B,GAAS,GACjEk1B,EAAkBH,EAAa/yN,OAC/B81B,EAAQi9L,EAAa,GACrBh9L,EAAOg9L,EAAaG,EAAkB,GACtCC,EAAW,GAGjB,GAAID,EAAkBL,EAEpB,OAwEJ,SAAoB70B,EAAOm1B,EAAUJ,EAAcnO,GACjD,IAEIngN,EAFAkuC,EAAQ,EACR7mB,EAAOinM,EAAa,GAIxB,IADAnO,EAAU/1M,KAAK+B,KAAKg0M,GACfngN,EAAI,EAAGA,EAAIu5L,EAAMh+L,OAAQyE,IACxBA,IAAMqnB,IACRqnM,EAAStwN,KAAKm7L,EAAMv5L,IACpBkuC,IACA7mB,EAAOinM,EAAapgL,EAAQiyK,GAGlC,CAtFIwO,CAAWp1B,EAAOm1B,EAAUJ,EAAcG,EAAkBL,GACrDM,EAGT,MAAMvO,EA6BR,SAA0BmO,EAAc/0B,EAAO60B,GAC7C,MAAMQ,EA6FR,SAAwB1iM,GACtB,MAAM0kB,EAAM1kB,EAAI3wB,OAChB,IAAIyE,EAAGqlN,EAEP,GAAIz0K,EAAM,EACR,OAAO,EAGT,IAAKy0K,EAAOn5L,EAAI,GAAIlsB,EAAI,EAAGA,EAAI4wC,IAAO5wC,EACpC,GAAIksB,EAAIlsB,GAAKksB,EAAIlsB,EAAI,KAAOqlN,EAC1B,OAAO,EAGX,OAAOA,CACT,CA3G2BwJ,CAAeP,GAClCnO,EAAU5mB,EAAMh+L,OAAS6yN,EAI/B,IAAKQ,EACH,OAAOxkN,KAAK0D,IAAIqyM,EAAS,GAG3B,MAAM2O,EtC/BD,SAAoBrzN,GACzB,MAAMqxB,EAAmB,GACnBpS,EAAOtQ,KAAKsQ,KAAKjf,GACvB,IAAIuE,EAEJ,IAAKA,EAAI,EAAGA,EAAI0a,EAAM1a,IAChBvE,EAAQuE,IAAM,IAChB8sB,EAAO1uB,KAAK4B,GACZ8sB,EAAO1uB,KAAK3C,EAAQuE,IAQxB,OALI0a,KAAiB,EAAPA,IACZoS,EAAO1uB,KAAKsc,GAGdoS,EAAO+nF,MAAK,CAAC3xG,EAAGC,IAAMD,EAAIC,IAAGw9B,MACtB7T,CACT,CsCckBiiM,CAAWH,GAC3B,IAAK,IAAI5uN,EAAI,EAAGswL,EAAOw+B,EAAQvzN,OAAS,EAAGyE,EAAIswL,EAAMtwL,IAAK,CACxD,MAAM2a,EAASm0M,EAAQ9uN,GACvB,GAAI2a,EAASwlM,EACX,OAAOxlM,CAEX,CACA,OAAOvQ,KAAK0D,IAAIqyM,EAAS,EAC3B,CA/CkB6O,CAAiBV,EAAc/0B,EAAO60B,GAEtD,GAAIK,EAAkB,EAAG,CACvB,IAAIzuN,EAAGswL,EACP,MAAM2+B,EAAkBR,EAAkB,EAAIrkN,KAAKhI,OAAOkvB,EAAOD,IAAUo9L,EAAkB,IAAM,KAEnG,IADAroB,GAAK7M,EAAOm1B,EAAUvO,EAASvwB,GAAcq/B,GAAmB,EAAI59L,EAAQ49L,EAAiB59L,GACxFrxB,EAAI,EAAGswL,EAAOm+B,EAAkB,EAAGzuN,EAAIswL,EAAMtwL,IAChDomM,GAAK7M,EAAOm1B,EAAUvO,EAASmO,EAAatuN,GAAIsuN,EAAatuN,EAAI,IAGnE,OADAomM,GAAK7M,EAAOm1B,EAAUvO,EAAS7uL,EAAMs+J,GAAcq/B,GAAmB11B,EAAMh+L,OAAS+1B,EAAO29L,GACrFP,EAGT,OADAtoB,GAAK7M,EAAOm1B,EAAUvO,GACfuO,CACT,CA6EA,SAAStoB,GAAK7M,EAAOm1B,EAAUvO,EAAS+O,EAAYC,GAClD,MAAMr9J,EAAQi+H,GAAem/B,EAAY,GACnCn9J,EAAM3nD,KAAK4D,IAAI+hL,GAAeo/B,EAAU51B,EAAMh+L,QAASg+L,EAAMh+L,QACnE,IACIA,EAAQyE,EAAGqnB,EADX6mB,EAAQ,EAWZ,IARAiyK,EAAU/1M,KAAK+B,KAAKg0M,GAChBgP,IACF5zN,EAAS4zN,EAAWD,EACpB/O,EAAU5kN,EAAS6O,KAAKwJ,MAAMrY,EAAS4kN,IAGzC94L,EAAOyqC,EAEAzqC,EAAO,GACZ6mB,IACA7mB,EAAOjd,KAAKhI,MAAM0vD,EAAQ5jB,EAAQiyK,GAGpC,IAAKngN,EAAIoK,KAAK0D,IAAIgkD,EAAO,GAAI9xD,EAAI+xD,EAAK/xD,IAChCA,IAAMqnB,IACRqnM,EAAStwN,KAAKm7L,EAAMv5L,IACpBkuC,IACA7mB,EAAOjd,KAAKhI,MAAM0vD,EAAQ5jB,EAAQiyK,GAGxC,CDzGAx6G,GAvCqBt8E,GAAA,WAED,CAAC,GAAEs8E,GAFFt8E,GAAA,qBAGIptB,GEAzB,MACMmzN,GAAiBA,CAACl6H,EAAO+mH,EAAMr6M,IAAoB,QAATq6M,GAA2B,SAATA,EAAkB/mH,EAAM+mH,GAAQr6M,EAASszF,EAAM+mH,GAAQr6M,EACnHytN,GAAgBA,CAACC,EAAajB,IAAkBjkN,KAAK4D,IAAIqgN,GAAiBiB,EAAaA,GAY7F,SAASC,GAAOrjM,EAAKsjM,GACnB,MAAM1iM,EAAS,GACT2iM,EAAYvjM,EAAI3wB,OAASi0N,EACzB5+K,EAAM1kB,EAAI3wB,OAChB,IAAIyE,EAAI,EAER,KAAOA,EAAI4wC,EAAK5wC,GAAKyvN,EACnB3iM,EAAO1uB,KAAK8tB,EAAI9hB,KAAKwJ,MAAM5T,KAE7B,OAAO8sB,CACT,CAOA,SAAS4iM,GAAoBx6H,EAAO52F,EAAOqxN,GACzC,MAAMp0N,EAAS25F,EAAMqkG,MAAMh+L,OACrBq0N,EAAaxlN,KAAK4D,IAAI1P,EAAO/C,EAAS,GACtCu2D,EAAQojC,EAAM6oH,YACdhsJ,EAAMmjC,EAAM8oH,UACZ3rB,EAAU,KAChB,IACIzwL,EADAiuN,EAAY36H,EAAMomH,gBAAgBsU,GAGtC,KAAID,IAEA/tN,EADa,IAAXrG,EACO6O,KAAK0D,IAAI+hN,EAAY/9J,EAAOC,EAAM89J,GACxB,IAAVvxN,GACC42F,EAAMomH,gBAAgB,GAAKuU,GAAa,GAExCA,EAAY36H,EAAMomH,gBAAgBsU,EAAa,IAAM,EAEjEC,GAAaD,EAAatxN,EAAQsD,GAAUA,EAGxCiuN,EAAY/9J,EAAQugI,GAAWw9B,EAAY99J,EAAMsgI,IAIvD,OAAOw9B,CACT,CAuBA,SAASC,GAAkBxyN,GACzB,OAAOA,EAAQy/L,UAAYz/L,EAAQ0/L,WAAa,CAClD,CAKA,SAAS+yB,GAAezyN,EAAS8rE,GAC/B,IAAK9rE,EAAQ6vE,QACX,OAAO,EAGT,MAAM6+E,EAAO62C,GAAOvlM,EAAQ0uJ,KAAM5iF,GAC5BnhE,EAAU26L,GAAUtlM,EAAQ2K,SAGlC,OAFc2d,GAAQtoB,EAAQ+2B,MAAQ/2B,EAAQ+2B,KAAK94B,OAAS,GAE5CywJ,EAAK5vG,WAAcn0C,EAAQipC,MAC7C,CAiBA,SAAS8+K,GAAW56B,EAAO57G,EAAUq9B,GAEnC,IAAIotB,EAAMkxD,GAAmBC,GAI7B,OAHIv+E,GAAyB,UAAbr9B,IAA2Bq9B,GAAwB,UAAbr9B,KACpDyqD,EArHkBmxD,IAAoB,SAAVA,EAAmB,QAAoB,UAAVA,EAAoB,OAASA,EAqHhF66B,CAAahsF,IAEdA,CACT,CAuCe,MAAMisF,WAAc7mM,GAGjC2B,WAAAA,CAAY7lB,GACVi8E,QAGAnkF,KAAK4uC,GAAK1mC,EAAI0mC,GAEd5uC,KAAK62B,KAAO3uB,EAAI2uB,KAEhB72B,KAAKK,aAAUrB,EAEfgB,KAAKgG,IAAMkC,EAAIlC,IAEfhG,KAAKqgI,MAAQn4H,EAAIm4H,MAIjBrgI,KAAK81D,SAAM92D,EAEXgB,KAAKq/E,YAASrgF,EAEdgB,KAAKsG,UAAOtH,EAEZgB,KAAKuG,WAAQvH,EAEbgB,KAAKg0C,WAAQh1C,EAEbgB,KAAKi0C,YAASj1C,EACdgB,KAAKkzN,SAAW,CACd5sN,KAAM,EACNC,MAAO,EACPuvD,IAAK,EACLupB,OAAQ,GAGVr/E,KAAKilG,cAAWjmG,EAEhBgB,KAAK6kG,eAAY7lG,EAEjBgB,KAAKmzN,gBAAan0N,EAElBgB,KAAKozN,mBAAgBp0N,EAErBgB,KAAKqzN,iBAAcr0N,EAEnBgB,KAAKy8H,kBAAez9H,EAIpBgB,KAAK44L,UAAO55L,EAEZgB,KAAKszN,mBAAgBt0N,EACrBgB,KAAK+Q,SAAM/R,EACXgB,KAAK6Q,SAAM7R,EACXgB,KAAKuzN,YAASv0N,EAEdgB,KAAKs8L,MAAQ,GAEbt8L,KAAKwzN,eAAiB,KAEtBxzN,KAAKyzN,YAAc,KAEnBzzN,KAAK0zN,YAAc,KACnB1zN,KAAKizC,QAAU,EACfjzC,KAAKixN,WAAa,EAClBjxN,KAAK2zN,kBAAoB,CAAC,EAE1B3zN,KAAK8gN,iBAAc9hN,EAEnBgB,KAAK+gN,eAAY/hN,EACjBgB,KAAK0oN,gBAAiB,EACtB1oN,KAAK4zN,cAAW50N,EAChBgB,KAAK6zN,cAAW70N,EAChBgB,KAAK8zN,mBAAgB90N,EACrBgB,KAAK+zN,mBAAgB/0N,EACrBgB,KAAKg0N,aAAe,EACpBh0N,KAAKi0N,aAAe,EACpBj0N,KAAK+9M,OAAS,CAAC,EACf/9M,KAAKk0N,mBAAoB,EACzBl0N,KAAK+2M,cAAW/3M,CAClB,CAMAwJ,IAAAA,CAAKnI,GACHL,KAAKK,QAAUA,EAAQsnM,WAAW3nM,KAAK+3F,cAEvC/3F,KAAK44L,KAAOv4L,EAAQu4L,KAGpB54L,KAAK6zN,SAAW7zN,KAAKoM,MAAM/L,EAAQ0Q,KACnC/Q,KAAK4zN,SAAW5zN,KAAKoM,MAAM/L,EAAQwQ,KACnC7Q,KAAK+zN,cAAgB/zN,KAAKoM,MAAM/L,EAAQ8zN,cACxCn0N,KAAK8zN,cAAgB9zN,KAAKoM,MAAM/L,EAAQ+zN,aAC1C,CAQAhoN,KAAAA,CAAMsvM,EAAKr6M,GACT,OAAOq6M,CACT,CAOA3iB,aAAAA,GACE,IAAI,SAAC86B,EAAQ,SAAED,EAAQ,cAAEG,EAAA,cAAeD,GAAiB9zN,KAKzD,OAJA6zN,EAAWhhC,GAAgBghC,EAAUxhM,OAAOuiK,mBAC5Cg/B,EAAW/gC,GAAgB+gC,EAAUvhM,OAAOuoL,mBAC5CmZ,EAAgBlhC,GAAgBkhC,EAAe1hM,OAAOuiK,mBACtDk/B,EAAgBjhC,GAAgBihC,EAAezhM,OAAOuoL,mBAC/C,CACL7pM,IAAK8hL,GAAgBghC,EAAUE,GAC/BljN,IAAKgiL,GAAgB+gC,EAAUE,GAC/Bj7B,WAAYjG,GAASihC,GACrB/6B,WAAYlG,GAASghC,GAEzB,CAQApZ,SAAAA,CAAUC,GACR,IACIl+M,GADA,IAACwU,EAAA,IAAKF,EAAA,WAAKgoL,EAAA,WAAYC,GAAc94L,KAAK+4L,gBAG9C,GAAIF,GAAcC,EAChB,MAAO,CAAC/nL,MAAKF,OAGf,MAAMwjN,EAAQr0N,KAAKo1M,0BACnB,IAAK,IAAIryM,EAAI,EAAGswL,EAAOghC,EAAM/1N,OAAQyE,EAAIswL,IAAQtwL,EAC/CxG,EAAQ83N,EAAMtxN,GAAGqhH,WAAWo2F,UAAUx6M,KAAMy6M,GACvC5hB,IACH9nL,EAAM5D,KAAK4D,IAAIA,EAAKxU,EAAMwU,MAEvB+nL,IACHjoL,EAAM1D,KAAK0D,IAAIA,EAAKtU,EAAMsU,MAQ9B,OAHAE,EAAM+nL,GAAc/nL,EAAMF,EAAMA,EAAME,EACtCF,EAAMgoL,GAAc9nL,EAAMF,EAAME,EAAMF,EAE/B,CACLE,IAAK8hL,GAAgB9hL,EAAK8hL,GAAgBhiL,EAAKE,IAC/CF,IAAKgiL,GAAgBhiL,EAAKgiL,GAAgB9hL,EAAKF,IAEnD,CAOAy6M,UAAAA,GACE,MAAO,CACLhlN,KAAMtG,KAAKqzN,aAAe,EAC1Bv9J,IAAK91D,KAAKmzN,YAAc,EACxB5sN,MAAOvG,KAAKy8H,cAAgB,EAC5Bp9C,OAAQr/E,KAAKozN,eAAiB,EAElC,CAOAkB,QAAAA,GACE,OAAOt0N,KAAKs8L,KACd,CAKAyd,SAAAA,GACE,MAAMpvM,EAAO3K,KAAKqgI,MAAM11H,KACxB,OAAO3K,KAAKK,QAAQy5M,SAAW95M,KAAK8/M,eAAiBn1M,EAAK4pN,QAAU5pN,EAAK6pN,UAAY7pN,EAAKmvM,QAAU,EACtG,CAKA2a,aAAAA,GAAgD,IAAlClZ,EAAYl9M,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAA2B,KAAKqgI,MAAMk7E,UAEnC,OADcv7M,KAAKyzN,cAAgBzzN,KAAKyzN,YAAczzN,KAAK00N,mBAAmBnZ,GAEhF,CAGA8R,YAAAA,GACErtN,KAAK+9M,OAAS,CAAC,EACf/9M,KAAKk0N,mBAAoB,CAC3B,CAMAS,YAAAA,GACEzzJ,GAAKlhE,KAAKK,QAAQs0N,aAAc,CAAC30N,MACnC,CAUAiR,MAAAA,CAAOg0F,EAAUJ,EAAWioG,GAC1B,MAAM,YAACrN,EAAW,MAAEG,EAAOtD,MAAOs0B,GAAY5wN,KAAKK,QAC7Cu0N,EAAahE,EAASgE,WAG5B50N,KAAK20N,eAGL30N,KAAKilG,SAAWA,EAChBjlG,KAAK6kG,UAAYA,EACjB7kG,KAAKkzN,SAAWpmB,EAAUnxM,OAAO49C,OAAO,CACtCjzC,KAAM,EACNC,MAAO,EACPuvD,IAAK,EACLupB,OAAQ,GACPytH,GAEH9sM,KAAKs8L,MAAQ,KACbt8L,KAAK0zN,YAAc,KACnB1zN,KAAKwzN,eAAiB,KACtBxzN,KAAKyzN,YAAc,KAGnBzzN,KAAK60N,sBACL70N,KAAK80N,gBACL90N,KAAK+0N,qBAEL/0N,KAAKixN,WAAajxN,KAAK8/M,eACnB9/M,KAAKg0C,MAAQ84J,EAAQxmM,KAAOwmM,EAAQvmM,MACpCvG,KAAKi0C,OAAS64J,EAAQh3I,IAAMg3I,EAAQztH,OAGnCr/E,KAAKk0N,oBACRl0N,KAAKg1N,mBACLh1N,KAAKi1N,sBACLj1N,KAAKk1N,kBACLl1N,KAAKuzN,O3BnPJ,SAAmB4B,EAAuCv1B,EAAwBH,GACvF,MAAM,IAAC1uL,EAAA,IAAKF,GAAOskN,EACb3H,EAASz6B,GAAY6M,GAAQ/uL,EAAME,GAAO,GAC1CqkN,EAAWA,CAAC52N,EAAewC,IAAgBy+L,GAAyB,IAAVjhM,EAAc,EAAIA,EAAQwC,EAC1F,MAAO,CACL+P,IAAKqkN,EAASrkN,GAAM5D,KAAK2H,IAAI04M,IAC7B38M,IAAKukN,EAASvkN,EAAK28M,GAEvB,C2B2OoB6H,CAAUr1N,KAAM4/L,EAAOH,GACrCz/L,KAAKk0N,mBAAoB,GAG3Bl0N,KAAKs1N,mBAELt1N,KAAKs8L,MAAQt8L,KAAKu1N,cAAgB,GAGlCv1N,KAAKw1N,kBAIL,MAAMC,EAAkBb,EAAa50N,KAAKs8L,MAAMh+L,OAChD0B,KAAK01N,sBAAsBD,EAAkBnD,GAAOtyN,KAAKs8L,MAAOs4B,GAAc50N,KAAKs8L,OAMnFt8L,KAAKszM,YAGLtzM,KAAK21N,+BACL31N,KAAK41N,yBACL51N,KAAK61N,8BAGDjF,EAAS1gJ,UAAY0gJ,EAASjwB,UAAgC,SAApBiwB,EAAS/nM,UACrD7oB,KAAKs8L,MAAQqE,GAAS3gM,KAAMA,KAAKs8L,OACjCt8L,KAAK0zN,YAAc,KACnB1zN,KAAK81N,iBAGHL,GAEFz1N,KAAK01N,sBAAsB11N,KAAKs8L,OAGlCt8L,KAAK+1N,YACL/1N,KAAKg2N,MACLh2N,KAAKi2N,WAILj2N,KAAKk2N,aACP,CAKA5iB,SAAAA,GACE,IACImO,EAAYE,EADZwU,EAAgBn2N,KAAKK,QAAQu5G,QAG7B55G,KAAK8/M,gBACP2B,EAAazhN,KAAKsG,KAClBq7M,EAAW3hN,KAAKuG,QAEhBk7M,EAAazhN,KAAK81D,IAClB6rJ,EAAW3hN,KAAKq/E,OAEhB82I,GAAiBA,GAEnBn2N,KAAK8gN,YAAcW,EACnBzhN,KAAK+gN,UAAYY,EACjB3hN,KAAK0oN,eAAiByN,EACtBn2N,KAAKizC,QAAU0uK,EAAWF,EAC1BzhN,KAAKo2N,eAAiBp2N,KAAKK,QAAQg2N,aACrC,CAEAH,WAAAA,GACEh1J,GAAKlhE,KAAKK,QAAQ61N,YAAa,CAACl2N,MAClC,CAIA60N,mBAAAA,GACE3zJ,GAAKlhE,KAAKK,QAAQw0N,oBAAqB,CAAC70N,MAC1C,CACA80N,aAAAA,GAEM90N,KAAK8/M,gBAEP9/M,KAAKg0C,MAAQh0C,KAAKilG,SAClBjlG,KAAKsG,KAAO,EACZtG,KAAKuG,MAAQvG,KAAKg0C,QAElBh0C,KAAKi0C,OAASj0C,KAAK6kG,UAGnB7kG,KAAK81D,IAAM,EACX91D,KAAKq/E,OAASr/E,KAAKi0C,QAIrBj0C,KAAKqzN,YAAc,EACnBrzN,KAAKmzN,WAAa,EAClBnzN,KAAKy8H,aAAe,EACpBz8H,KAAKozN,cAAgB,CACvB,CACA2B,kBAAAA,GACE7zJ,GAAKlhE,KAAKK,QAAQ00N,mBAAoB,CAAC/0N,MACzC,CAEAs2N,UAAAA,CAAW/4N,GACTyC,KAAKqgI,MAAMk2F,cAAch5N,EAAMyC,KAAK+3F,cACpC72B,GAAKlhE,KAAKK,QAAQ9C,GAAO,CAACyC,MAC5B,CAGAg1N,gBAAAA,GACEh1N,KAAKs2N,WAAW,mBAClB,CACArB,mBAAAA,GAAuB,CACvBC,eAAAA,GACEl1N,KAAKs2N,WAAW,kBAClB,CAGAhB,gBAAAA,GACEt1N,KAAKs2N,WAAW,mBAClB,CAIAf,UAAAA,GACE,MAAO,EACT,CACAC,eAAAA,GACEx1N,KAAKs2N,WAAW,kBAClB,CAEAE,2BAAAA,GACEt1J,GAAKlhE,KAAKK,QAAQm2N,4BAA6B,CAACx2N,MAClD,CAKAy2N,kBAAAA,CAAmBn6B,GACjB,MAAMs0B,EAAW5wN,KAAKK,QAAQi8L,MAC9B,IAAIv5L,EAAGswL,EAAMwe,EACb,IAAK9uM,EAAI,EAAGswL,EAAOiJ,EAAMh+L,OAAQyE,EAAIswL,EAAMtwL,IACzC8uM,EAAOvV,EAAMv5L,GACb8uM,EAAKttD,MAAQrjF,GAAK0vJ,EAAS1vJ,SAAU,CAAC2wI,EAAKrzM,MAAOuE,EAAGu5L,GAAQt8L,KAEjE,CACA02N,0BAAAA,GACEx1J,GAAKlhE,KAAKK,QAAQq2N,2BAA4B,CAAC12N,MACjD,CAIA21N,4BAAAA,GACEz0J,GAAKlhE,KAAKK,QAAQs1N,6BAA8B,CAAC31N,MACnD,CACA41N,sBAAAA,GACE,MAAMv1N,EAAUL,KAAKK,QACfuwN,EAAWvwN,EAAQi8L,MACnBq6B,EAAWvE,GAAcpyN,KAAKs8L,MAAMh+L,OAAQ+B,EAAQi8L,MAAM80B,eAC1D9wB,EAAcswB,EAAStwB,aAAe,EACtCC,EAAcqwB,EAASrwB,YAC7B,IACIP,EAAWn7F,EAAW+xH,EADtBtD,EAAgBhzB,EAGpB,IAAKtgM,KAAK62N,eAAiBjG,EAAS1gJ,SAAWowH,GAAeC,GAAeo2B,GAAY,IAAM32N,KAAK8/M,eAElG,YADA9/M,KAAKszN,cAAgBhzB,GAIvB,MAAMw2B,EAAa92N,KAAK+2N,iBAClBC,EAAgBF,EAAWG,OAAOjjL,MAClCkjL,EAAiBJ,EAAWK,QAAQljL,OAIpCgxD,EAAWgyF,GAAYj3L,KAAKqgI,MAAMrsF,MAAQgjL,EAAe,EAAGh3N,KAAKilG,UACvE+6F,EAAY3/L,EAAQsE,OAAS3E,KAAKilG,SAAW0xH,EAAW1xH,GAAY0xH,EAAW,GAG3EK,EAAgB,EAAIh3B,IACtBA,EAAY/6F,GAAY0xH,GAAYt2N,EAAQsE,OAAS,GAAM,IAC3DkgG,EAAY7kG,KAAK6kG,UAAYguH,GAAkBxyN,EAAQgjG,MACvDutH,EAAS5lN,QAAU8nN,GAAezyN,EAAQsuC,MAAO3uC,KAAKqgI,MAAMhgI,QAAQ0uJ,MACpE6nE,EAAmBzpN,KAAKsQ,KAAKu5M,EAAgBA,EAAgBE,EAAiBA,GAC9E5D,EAAgB39B,GAAUxoL,KAAK4D,IAC7B5D,KAAK0wJ,KAAKo5B,IAAa6/B,EAAWK,QAAQljL,OAAS,GAAK+rJ,GAAY,EAAG,IACvE7yL,KAAK0wJ,KAAKo5B,GAAYpyF,EAAY+xH,GAAmB,EAAG,IAAMzpN,KAAK0wJ,KAAKo5B,GAAYigC,EAAiBN,GAAmB,EAAG,MAE7HtD,EAAgBnmN,KAAK0D,IAAIyvL,EAAanzL,KAAK4D,IAAIwvL,EAAa+yB,KAG9DtzN,KAAKszN,cAAgBA,CACvB,CACAuC,2BAAAA,GACE30J,GAAKlhE,KAAKK,QAAQw1N,4BAA6B,CAAC71N,MAClD,CACA81N,aAAAA,GAAiB,CAIjBC,SAAAA,GACE70J,GAAKlhE,KAAKK,QAAQ01N,UAAW,CAAC/1N,MAChC,CACAg2N,GAAAA,GAEE,MAAMtP,EAAU,CACd1yK,MAAO,EACPC,OAAQ,IAGJ,MAACosF,EAAOhgI,SAAUi8L,MAAOs0B,EAAUjiL,MAAOyoL,EAAW/zH,KAAMg0H,IAAar3N,KACxEkwE,EAAUlwE,KAAK62N,aACf/W,EAAe9/M,KAAK8/M,eAE1B,GAAI5vI,EAAS,CACX,MAAMonJ,EAAcxE,GAAesE,EAAW/2F,EAAMhgI,QAAQ0uJ,MAU5D,GATI+wD,GACF4G,EAAQ1yK,MAAQh0C,KAAKilG,SACrByhH,EAAQzyK,OAAS4+K,GAAkBwE,GAAYC,IAE/C5Q,EAAQzyK,OAASj0C,KAAK6kG,UACtB6hH,EAAQ1yK,MAAQ6+K,GAAkBwE,GAAYC,GAI5C1G,EAAS1gJ,SAAWlwE,KAAKs8L,MAAMh+L,OAAQ,CACzC,MAAM,MAAC81B,EAAA,KAAOC,EAAA,OAAM4iM,EAAA,QAAQE,GAAWn3N,KAAK+2N,iBACtCQ,EAAiC,EAAnB3G,EAAS5lN,QACvBwsN,EAAe/hC,GAAUz1L,KAAKszN,eAC9Bp1D,EAAM/wJ,KAAK+wJ,IAAIs5D,GACfziN,EAAM5H,KAAK4H,IAAIyiN,GAErB,GAAI1X,EAAc,CAEhB,MAAM2X,EAAc7G,EAASpwB,OAAS,EAAIzrL,EAAMkiN,EAAOjjL,MAAQkqH,EAAMi5D,EAAQljL,OAC7EyyK,EAAQzyK,OAAS9mC,KAAK4D,IAAI/Q,KAAK6kG,UAAW6hH,EAAQzyK,OAASwjL,EAAcF,OACpE,CAGL,MAAMG,EAAa9G,EAASpwB,OAAS,EAAItiC,EAAM+4D,EAAOjjL,MAAQj/B,EAAMoiN,EAAQljL,OAE5EyyK,EAAQ1yK,MAAQ7mC,KAAK4D,IAAI/Q,KAAKilG,SAAUyhH,EAAQ1yK,MAAQ0jL,EAAaH,GAEvEv3N,KAAK23N,kBAAkBvjM,EAAOC,EAAMtf,EAAKmpJ,IAI7Cl+J,KAAK43N,iBAED9X,GACF9/M,KAAKg0C,MAAQh0C,KAAKizC,QAAUotF,EAAMrsF,MAAQh0C,KAAKkzN,SAAS5sN,KAAOtG,KAAKkzN,SAAS3sN,MAC7EvG,KAAKi0C,OAASyyK,EAAQzyK,SAEtBj0C,KAAKg0C,MAAQ0yK,EAAQ1yK,MACrBh0C,KAAKi0C,OAASj0C,KAAKizC,QAAUotF,EAAMpsF,OAASj0C,KAAKkzN,SAASp9J,IAAM91D,KAAKkzN,SAAS7zI,OAElF,CAEAs4I,iBAAAA,CAAkBvjM,EAAOC,EAAMtf,EAAKmpJ,GAClC,MAAOo+B,OAAO,MAACnE,EAAA,QAAOntL,GAAQ,SAAEuxE,GAAYv8E,KAAKK,QAC3Cw3N,EAAmC,IAAvB73N,KAAKszN,cACjBwE,EAAgC,QAAbv7I,GAAoC,MAAdv8E,KAAK44L,KAEpD,GAAI54L,KAAK8/M,eAAgB,CACvB,MAAM5iG,EAAal9G,KAAKq+M,gBAAgB,GAAKr+M,KAAKsG,KAC5CyxN,EAAc/3N,KAAKuG,MAAQvG,KAAKq+M,gBAAgBr+M,KAAKs8L,MAAMh+L,OAAS,GAC1E,IAAI+0N,EAAc,EACd52F,EAAe,EAIfo7F,EACEC,GACFzE,EAAcn1D,EAAM9pI,EAAM4f,MAC1ByoF,EAAe1nH,EAAMsf,EAAK4f,SAE1Bo/K,EAAct+M,EAAMqf,EAAM6f,OAC1BwoF,EAAeyhC,EAAM7pI,EAAK2f,OAET,UAAVmkJ,EACT17D,EAAepoG,EAAK2f,MACD,QAAVmkJ,EACTk7B,EAAcj/L,EAAM4f,MACD,UAAVmkJ,IACTk7B,EAAcj/L,EAAM4f,MAAQ,EAC5ByoF,EAAepoG,EAAK2f,MAAQ,GAI9Bh0C,KAAKqzN,YAAclmN,KAAK0D,KAAKwiN,EAAcn2G,EAAalyG,GAAWhL,KAAKg0C,OAASh0C,KAAKg0C,MAAQkpE,GAAa,GAC3Gl9G,KAAKy8H,aAAetvH,KAAK0D,KAAK4rH,EAAes7F,EAAc/sN,GAAWhL,KAAKg0C,OAASh0C,KAAKg0C,MAAQ+jL,GAAc,OAC1G,CACL,IAAI5E,EAAa9+L,EAAK4f,OAAS,EAC3Bm/K,EAAgBh/L,EAAM6f,OAAS,EAErB,UAAVkkJ,GACFg7B,EAAa,EACbC,EAAgBh/L,EAAM6f,QACH,QAAVkkJ,IACTg7B,EAAa9+L,EAAK4f,OAClBm/K,EAAgB,GAGlBpzN,KAAKmzN,WAAaA,EAAanoN,EAC/BhL,KAAKozN,cAAgBA,EAAgBpoN,EAEzC,CAMA4sN,cAAAA,GACM53N,KAAKkzN,WACPlzN,KAAKkzN,SAAS5sN,KAAO6G,KAAK0D,IAAI7Q,KAAKqzN,YAAarzN,KAAKkzN,SAAS5sN,MAC9DtG,KAAKkzN,SAASp9J,IAAM3oD,KAAK0D,IAAI7Q,KAAKmzN,WAAYnzN,KAAKkzN,SAASp9J,KAC5D91D,KAAKkzN,SAAS3sN,MAAQ4G,KAAK0D,IAAI7Q,KAAKy8H,aAAcz8H,KAAKkzN,SAAS3sN,OAChEvG,KAAKkzN,SAAS7zI,OAASlyE,KAAK0D,IAAI7Q,KAAKozN,cAAepzN,KAAKkzN,SAAS7zI,QAEtE,CAEA42I,QAAAA,GACE/0J,GAAKlhE,KAAKK,QAAQ41N,SAAU,CAACj2N,MAC/B,CAMA8/M,YAAAA,GACE,MAAM,KAAClnB,EAAA,SAAMr8G,GAAYv8E,KAAKK,QAC9B,MAAoB,QAAbk8E,GAAmC,WAAbA,GAAkC,MAATq8G,CACxD,CAIAo/B,UAAAA,GACE,OAAOh4N,KAAKK,QAAQyqN,QACtB,CAMA4K,qBAAAA,CAAsBp5B,GAMpB,IAAIv5L,EAAGswL,EACP,IANArzL,KAAKw2N,8BAELx2N,KAAKy2N,mBAAmBn6B,GAInBv5L,EAAI,EAAGswL,EAAOiJ,EAAMh+L,OAAQyE,EAAIswL,EAAMtwL,IACrC4vL,GAAc2J,EAAMv5L,GAAGwhJ,SACzB+3C,EAAM/6L,OAAOwB,EAAG,GAChBswL,IACAtwL,KAIJ/C,KAAK02N,4BACP,CAMAK,cAAAA,GACE,IAAID,EAAa92N,KAAK0zN,YAEtB,IAAKoD,EAAY,CACf,MAAMlC,EAAa50N,KAAKK,QAAQi8L,MAAMs4B,WACtC,IAAIt4B,EAAQt8L,KAAKs8L,MACbs4B,EAAat4B,EAAMh+L,SACrBg+L,EAAQg2B,GAAOh2B,EAAOs4B,IAGxB50N,KAAK0zN,YAAcoD,EAAa92N,KAAKi4N,mBAAmB37B,EAAOA,EAAMh+L,OAAQ0B,KAAKK,QAAQi8L,MAAM80B,eAGlG,OAAO0F,CACT,CAQAmB,kBAAAA,CAAmB37B,EAAOh+L,EAAQ8yN,GAChC,MAAM,IAACprN,EAAK2tN,kBAAmBuE,GAAUl4N,KACnCm4N,EAAS,GACTC,EAAU,GACV5F,EAAYrlN,KAAKwJ,MAAMrY,EAAS8zN,GAAc9zN,EAAQ8yN,IAC5D,IAEIruN,EAAGqE,EAAGu6L,EAAMp9C,EAAO8zE,EAAUC,EAAY/jJ,EAAOp1B,EAAYnL,EAAOC,EAAQskL,EAF3EC,EAAkB,EAClBC,EAAmB,EAGvB,IAAK11N,EAAI,EAAGA,EAAIzE,EAAQyE,GAAKyvN,EAAW,CAQtC,GAPAjuE,EAAQ+3C,EAAMv5L,GAAGwhJ,MACjB8zE,EAAWr4N,KAAK04N,wBAAwB31N,GACxCiD,EAAI+oJ,KAAOupE,EAAaD,EAASlkM,OACjCogD,EAAQ2jJ,EAAOI,GAAcJ,EAAOI,IAAe,CAAC3tN,KAAM,CAAC,EAAGo6C,GAAI,IAClE5F,EAAak5K,EAASl5K,WACtBnL,EAAQC,EAAS,EAEZ0+I,GAAcpuC,IAAW57H,GAAQ47H,IAG/B,GAAI57H,GAAQ47H,GAEjB,IAAKn9I,EAAI,EAAGu6L,EAAOp9C,EAAMjmJ,OAAQ8I,EAAIu6L,IAAQv6L,EAC3CmxN,EAAqCh0E,EAAMn9I,GAEtCurL,GAAc4lC,IAAiB5vM,GAAQ4vM,KAC1CvkL,EAAQotJ,GAAap7L,EAAKuuE,EAAM5pE,KAAM4pE,EAAMxvB,GAAI/Q,EAAOukL,GACvDtkL,GAAUkL,QATdnL,EAAQotJ,GAAap7L,EAAKuuE,EAAM5pE,KAAM4pE,EAAMxvB,GAAI/Q,EAAOuwG,GACvDtwG,EAASkL,EAYXg5K,EAAOh3N,KAAK6yC,GACZokL,EAAQj3N,KAAK8yC,GACbukL,EAAkBrrN,KAAK0D,IAAImjC,EAAOwkL,GAClCC,EAAmBtrN,KAAK0D,IAAIojC,EAAQwkL,EACtC,EA/wBJ,SAAwBP,EAAQ55N,GAC9BguB,GAAK4rM,GAAS3jJ,IACZ,MAAMxvB,EAAKwvB,EAAMxvB,GACX88I,EAAQ98I,EAAGzmD,OAAS,EAC1B,IAAIyE,EACJ,GAAI8+L,EAAQvjM,EAAQ,CAClB,IAAKyE,EAAI,EAAGA,EAAI8+L,IAAS9+L,SAChBwxE,EAAM5pE,KAAKo6C,EAAGhiD,IAEvBgiD,EAAGxjD,OAAO,EAAGsgM,MAGnB,CAowBIH,CAAew2B,EAAQ55N,GAEvB,MAAM24N,EAASkB,EAAO72N,QAAQk3N,GACxBrB,EAAUiB,EAAQ92N,QAAQm3N,GAE1BE,EAAW1rG,IAAA,CAAUj5E,MAAOmkL,EAAOlrG,IAAQ,EAAGh5E,OAAQmkL,EAAQnrG,IAAQ,IAE5E,MAAO,CACL74F,MAAOukM,EAAQ,GACftkM,KAAMskM,EAAQr6N,EAAS,GACvB24N,OAAQ0B,EAAQ1B,GAChBE,QAASwB,EAAQxB,GACjBgB,SACAC,UAEJ,CAOAjd,gBAAAA,CAAiB38M,GACf,OAAOA,CACT,CASAw6L,gBAAAA,CAAiBx6L,EAAO6C,GACtB,OAAOk5M,GACT,CAQAqH,gBAAAA,CAAiBttK,GAAQ,CAQzB+pK,eAAAA,CAAgBh9M,GACd,MAAMi7L,EAAQt8L,KAAKs8L,MACnB,OAAIj7L,EAAQ,GAAKA,EAAQi7L,EAAMh+L,OAAS,EAC/B,KAEF0B,KAAKg5L,iBAAiBsD,EAAMj7L,GAAO7C,MAC5C,CAQAkjN,kBAAAA,CAAmB7mH,GACb76F,KAAK0oN,iBACP7tH,EAAU,EAAIA,GAGhB,MAAMvmD,EAAQt0C,KAAK8gN,YAAcjmH,EAAU76F,KAAKizC,QAChD,OvCnuBG,SAAqBz0C,GAC1B,OAAOy4L,GAAYz4L,GAAQ,MAAO,MACpC,CuCiuBWo6N,CAAY54N,KAAKo2N,eAAiBt0B,GAAY9hM,KAAKqgI,MAAO/rF,EAAO,GAAKA,EAC/E,CAMAukL,kBAAAA,CAAmBvkL,GACjB,MAAMumD,GAAWvmD,EAAQt0C,KAAK8gN,aAAe9gN,KAAKizC,QAClD,OAAOjzC,KAAK0oN,eAAiB,EAAI7tH,EAAUA,CAC7C,CAOAglH,YAAAA,GACE,OAAO7/M,KAAKg5L,iBAAiBh5L,KAAK84N,eACpC,CAKAA,YAAAA,GACE,MAAM,IAAC/nN,EAAG,IAAEF,GAAO7Q,KAEnB,OAAO+Q,EAAM,GAAKF,EAAM,EAAIA,EAC1BE,EAAM,GAAKF,EAAM,EAAIE,EACrB,CACJ,CAKAgnF,UAAAA,CAAW12F,GACT,MAAMi7L,EAAQt8L,KAAKs8L,OAAS,GAE5B,GAAIj7L,GAAS,GAAKA,EAAQi7L,EAAMh+L,OAAQ,CACtC,MAAMuzM,EAAOvV,EAAMj7L,GACnB,OAAOwwM,EAAKkF,WACblF,EAAKkF,SAr1BV,SAA2BlwF,EAAQxlH,EAAOwwM,GACxC,OAAOhvG,GAAcgkB,EAAQ,CAC3BgrF,OACAxwM,QACAw1B,KAAM,QAEV,CA+0BqBkiM,CAAkB/4N,KAAK+3F,aAAc12F,EAAOwwM,IAE7D,OAAO7xM,KAAK+2M,WACZ/2M,KAAK+2M,SA91BAl0G,GA81B8B7iG,KAAKqgI,MAAMtoC,aA91BnB,CAC3BE,MA61B4Dj4F,KA51B5D62B,KAAM,UA61BR,CAMAi6L,SAAAA,GACE,MAAMkI,EAAch5N,KAAKK,QAAQi8L,MAG3B28B,EAAMxjC,GAAUz1L,KAAKszN,eACrBp1D,EAAM/wJ,KAAK2H,IAAI3H,KAAK+wJ,IAAI+6D,IACxBlkN,EAAM5H,KAAK2H,IAAI3H,KAAK4H,IAAIkkN,IAExBnC,EAAa92N,KAAK+2N,iBAClB/rN,EAAUguN,EAAYp4B,iBAAmB,EACzCtoI,EAAIw+J,EAAaA,EAAWG,OAAOjjL,MAAQhpC,EAAU,EACrDgT,EAAI84M,EAAaA,EAAWK,QAAQljL,OAASjpC,EAAU,EAG7D,OAAOhL,KAAK8/M,eACR9hM,EAAIkgJ,EAAM5lG,EAAIvjD,EAAMujD,EAAI4lG,EAAMlgJ,EAAIjJ,EAClCiJ,EAAIjJ,EAAMujD,EAAI4lG,EAAMlgJ,EAAIkgJ,EAAM5lG,EAAIvjD,CACxC,CAMA8hN,UAAAA,GACE,MAAM3mJ,EAAUlwE,KAAKK,QAAQ6vE,QAE7B,MAAgB,SAAZA,IACOA,EAGJlwE,KAAKo1M,0BAA0B92M,OAAS,CACjD,CAKA46N,qBAAAA,CAAsB3d,GACpB,MAAM3iB,EAAO54L,KAAK44L,KACZv4D,EAAQrgI,KAAKqgI,MACbhgI,EAAUL,KAAKK,SACf,KAACgjG,EAAI,SAAE9mB,EAAA,OAAU4jH,GAAU9/L,EAC3BsE,EAAS0+F,EAAK1+F,OACdm7M,EAAe9/M,KAAK8/M,eAEpBuS,EADQryN,KAAKs8L,MACOh+L,QAAUqG,EAAS,EAAI,GAC3CixE,EAAKi9I,GAAkBxvH,GACvBg/B,EAAQ,GAER82F,EAAah5B,EAAOwH,WAAW3nM,KAAK+3F,cACpCqhI,EAAYD,EAAWjpJ,QAAUipJ,EAAWnlL,MAAQ,EACpDqlL,EAAgBD,EAAY,EAC5BE,EAAmB,SAAShlL,GAChC,OAAOwtJ,GAAYzhE,EAAO/rF,EAAO8kL,EACnC,EACA,IAAIG,EAAax2N,EAAG6vN,EAAW4G,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAI32N,EAAI42N,EAEpC,GAAiB,QAAbx9I,EACFg9I,EAAcD,EAAiBt5N,KAAKq/E,QACpCq6I,EAAM15N,KAAKq/E,OAASzJ,EACpBgkJ,EAAML,EAAcF,EACpBS,EAAKR,EAAiB/d,EAAUzlJ,KAAOujK,EACvCU,EAAKxe,EAAUl8H,YACV,GAAiB,WAAb9C,EACTg9I,EAAcD,EAAiBt5N,KAAK81D,KACpCgkK,EAAKve,EAAUzlJ,IACfikK,EAAKT,EAAiB/d,EAAUl8H,QAAUg6I,EAC1CK,EAAMH,EAAcF,EACpBO,EAAM55N,KAAK81D,IAAM8f,OACZ,GAAiB,SAAb2G,EACTg9I,EAAcD,EAAiBt5N,KAAKuG,OACpCkzN,EAAMz5N,KAAKuG,MAAQqvE,EACnB+jJ,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiB/d,EAAUj1M,MAAQ+yN,EACxCl2N,EAAKo4M,EAAUh1M,WACV,GAAiB,UAAbg2E,EACTg9I,EAAcD,EAAiBt5N,KAAKsG,MACpCuzN,EAAKte,EAAUj1M,KACfnD,EAAKm2N,EAAiB/d,EAAUh1M,OAAS8yN,EACzCI,EAAMF,EAAcF,EACpBM,EAAM35N,KAAKsG,KAAOsvE,OACb,GAAa,MAATgjH,EAAc,CACvB,GAAiB,WAAbr8G,EACFg9I,EAAcD,GAAkB/d,EAAUzlJ,IAAMylJ,EAAUl8H,QAAU,EAAI,SACnE,GAAIlnD,GAASokD,GAAW,CAC7B,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvBT,EAAcD,EAAiBt5N,KAAKqgI,MAAMi+D,OAAO07B,GAAgBhhC,iBAAiBx6L,IAGpFs7N,EAAKve,EAAUzlJ,IACfikK,EAAKxe,EAAUl8H,OACfq6I,EAAMH,EAAcF,EACpBO,EAAMF,EAAM9jJ,OACP,GAAa,MAATgjH,EAAc,CACvB,GAAiB,WAAbr8G,EACFg9I,EAAcD,GAAkB/d,EAAUj1M,KAAOi1M,EAAUh1M,OAAS,QAC/D,GAAI4xB,GAASokD,GAAW,CAC7B,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvBT,EAAcD,EAAiBt5N,KAAKqgI,MAAMi+D,OAAO07B,GAAgBhhC,iBAAiBx6L,IAGpFi7N,EAAMF,EAAcF,EACpBM,EAAMF,EAAM7jJ,EACZikJ,EAAKte,EAAUj1M,KACfnD,EAAKo4M,EAAUh1M,MAGjB,MAAM0zN,EAAQnnC,GAAezyL,EAAQi8L,MAAM80B,cAAeiB,GACpDrzH,EAAO7xF,KAAK0D,IAAI,EAAG1D,KAAK+B,KAAKmjN,EAAc4H,IACjD,IAAKl3N,EAAI,EAAGA,EAAIsvN,EAAatvN,GAAKi8F,EAAM,CACtC,MAAM5uD,EAAUpwC,KAAK+3F,WAAWh1F,GAC1Bm3N,EAAc72H,EAAKskG,WAAWv3J,GAC9B+pL,EAAoBh6B,EAAOwH,WAAWv3J,GAEtCqkD,EAAYylI,EAAYzlI,UACxB2lI,EAAYF,EAAYvoK,MACxBg/I,EAAawpB,EAAkB/5B,MAAQ,GACvCwQ,EAAmBupB,EAAkB95B,WAErCL,EAAYk6B,EAAYl6B,UACxBE,EAAYg6B,EAAYh6B,UACxBm6B,EAAiBH,EAAYG,gBAAkB,GAC/CC,EAAuBJ,EAAYI,qBAEzC1H,EAAYH,GAAoBzyN,KAAM+C,EAAG4B,QAGvB3F,IAAd4zN,IAIJ4G,EAAmB13B,GAAYzhE,EAAOuyF,EAAWn+H,GAE7CqrH,EACF2Z,EAAME,EAAME,EAAK12N,EAAKq2N,EAEtBE,EAAME,EAAME,EAAKC,EAAKP,EAGxBn3F,EAAMlhI,KAAK,CACTs4N,MACAC,MACAC,MACAC,MACAC,KACAC,KACA32N,KACA42N,KACA/lL,MAAOygD,EACP9iC,MAAOyoK,EACPzpB,aACAC,mBACA5Q,YACAE,YACAm6B,iBACAC,yBAEJ,CAKA,OAHAt6N,KAAKg0N,aAAe3B,EACpBryN,KAAKi0N,aAAesF,EAEbl3F,CACT,CAKAqyF,kBAAAA,CAAmBnZ,GACjB,MAAM3iB,EAAO54L,KAAK44L,KACZv4L,EAAUL,KAAKK,SACf,SAACk8E,EAAU+/G,MAAO08B,GAAe34N,EACjCy/M,EAAe9/M,KAAK8/M,eACpBxjB,EAAQt8L,KAAKs8L,OACb,MAACnE,EAAA,WAAO6I,EAAA,QAAYh2L,EAAO,OAAEw1L,GAAUw4B,EACvCpjJ,EAAKi9I,GAAkBxyN,EAAQgjG,MAC/Bk3H,EAAiB3kJ,EAAK5qE,EACtBwvN,EAAkBh6B,GAAUx1L,EAAUuvN,EACtC33B,GAAYnN,GAAUz1L,KAAKszN,eAC3BjxF,EAAQ,GACd,IAAIt/H,EAAGswL,EAAMwe,EAAMttD,EAAOvhJ,EAAGoD,EAAG2+L,EAAWzwJ,EAAOy6G,EAAM5vG,EAAYs7K,EAAWC,EAC3E7gE,EAAe,SAEnB,GAAiB,QAAbt9E,EACFn2E,EAAIpG,KAAKq/E,OAASm7I,EAClBz1B,EAAY/kM,KAAK26N,+BACZ,GAAiB,WAAbp+I,EACTn2E,EAAIpG,KAAK81D,IAAM0kK,EACfz1B,EAAY/kM,KAAK26N,+BACZ,GAAiB,SAAbp+I,EAAqB,CAC9B,MAAMyqD,EAAMhnI,KAAK46N,wBAAwBhlJ,GACzCmvH,EAAY/9D,EAAI+9D,UAChB/hM,EAAIgkI,EAAIhkI,OACH,GAAiB,UAAbu5E,EAAsB,CAC/B,MAAMyqD,EAAMhnI,KAAK46N,wBAAwBhlJ,GACzCmvH,EAAY/9D,EAAI+9D,UAChB/hM,EAAIgkI,EAAIhkI,OACH,GAAa,MAAT41L,EAAc,CACvB,GAAiB,WAAbr8G,EACFn2E,GAAMm1M,EAAUzlJ,IAAMylJ,EAAUl8H,QAAU,EAAKk7I,OAC1C,GAAIpiM,GAASokD,GAAW,CAC7B,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvB5zN,EAAIpG,KAAKqgI,MAAMi+D,OAAO07B,GAAgBhhC,iBAAiBx6L,GAAS+7N,EAElEx1B,EAAY/kM,KAAK26N,+BACZ,GAAa,MAAT/hC,EAAc,CACvB,GAAiB,WAAbr8G,EACFv5E,GAAMu4M,EAAUj1M,KAAOi1M,EAAUh1M,OAAS,EAAKg0N,OAC1C,GAAIpiM,GAASokD,GAAW,CAC7B,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvBh3N,EAAIhD,KAAKqgI,MAAMi+D,OAAO07B,GAAgBhhC,iBAAiBx6L,GAEzDumM,EAAY/kM,KAAK46N,wBAAwBhlJ,GAAImvH,UAGlC,MAATnM,IACY,UAAVT,EACFt+B,EAAe,MACI,QAAVs+B,IACTt+B,EAAe,WAInB,MAAMi9D,EAAa92N,KAAK+2N,iBACxB,IAAKh0N,EAAI,EAAGswL,EAAOiJ,EAAMh+L,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAC9C8uM,EAAOvV,EAAMv5L,GACbwhJ,EAAQstD,EAAKttD,MAEb,MAAM21E,EAAclB,EAAYrxB,WAAW3nM,KAAK+3F,WAAWh1F,IAC3DuxC,EAAQt0C,KAAKq+M,gBAAgBt7M,GAAKi2N,EAAYn4B,YAC9C9xC,EAAO/uJ,KAAK04N,wBAAwB31N,GACpCo8C,EAAa4vG,EAAK5vG,WAClBs7K,EAAY9xM,GAAQ47H,GAASA,EAAMjmJ,OAAS,EAC5C,MAAMu8N,EAAYJ,EAAY,EACxB9oK,EAAQuoK,EAAYvoK,MACpBkzI,EAAcq1B,EAAYx5B,gBAC1BxgJ,EAAcg6K,EAAYz5B,gBAChC,IA4CIwE,EA5CA61B,EAAgB/1B,EA8CpB,GA5CI+a,GACF98M,EAAIsxC,EAEc,UAAdywJ,IAEA+1B,EADE/3N,IAAMswL,EAAO,EACErzL,KAAKK,QAAQu5G,QAAoB,OAAV,QACzB,IAAN72G,EACQ/C,KAAKK,QAAQu5G,QAAmB,QAAT,OAExB,UAMhB8gH,EAFa,QAAbn+I,EACiB,SAAfykH,GAAsC,IAAb4B,GACb63B,EAAYt7K,EAAaA,EAAa,EAC5B,WAAf6hJ,GACK81B,EAAWK,QAAQljL,OAAS,EAAI4mL,EAAY17K,EAAaA,GAEzD23K,EAAWK,QAAQljL,OAASkL,EAAa,EAItC,SAAf6hJ,GAAsC,IAAb4B,EACdzjJ,EAAa,EACF,WAAf6hJ,EACI81B,EAAWK,QAAQljL,OAAS,EAAI4mL,EAAY17K,EAE5C23K,EAAWK,QAAQljL,OAASwmL,EAAYt7K,EAGrDqhJ,IACFk6B,IAAe,GAEA,IAAb93B,GAAmBs3B,EAAYj5B,oBACjCj+L,GAAKm8C,EAAc,EAAKhyC,KAAK4H,IAAI6tL,MAGnCx8L,EAAIkuC,EACJomL,GAAc,EAAID,GAAat7K,EAAa,GAK1C+6K,EAAYj5B,kBAAmB,CACjC,MAAM85B,EAAep1B,GAAUu0B,EAAY/4B,iBACrCltJ,EAAS6iL,EAAWsB,QAAQr1N,GAC5BixC,EAAQ8iL,EAAWqB,OAAOp1N,GAEhC,IAAI+yD,EAAM4kK,EAAaK,EAAajlK,IAChCxvD,EAAO,EAAIy0N,EAAaz0N,KAE5B,OAAQuzJ,GACR,IAAK,SACH/jG,GAAO7hB,EAAS,EAChB,MACF,IAAK,SACH6hB,GAAO7hB,EAMT,OAAQ8wJ,GACR,IAAK,SACHz+L,GAAQ0tC,EAAQ,EAChB,MACF,IAAK,QACH1tC,GAAQ0tC,EACR,MACF,IAAK,QACCjxC,IAAMswL,EAAO,EACf/sL,GAAQ0tC,EACCjxC,EAAI,IACbuD,GAAQ0tC,EAAQ,GAOpBixJ,EAAW,CACT3+L,OACAwvD,MACA9hB,MAAOA,EAAQ+mL,EAAa/mL,MAC5BC,OAAQA,EAAS8mL,EAAa9mL,OAE9B0d,MAAOuoK,EAAYh5B,eAIvB7+D,EAAMlhI,KAAK,CACTojJ,QACAwK,OACA2rE,aACAr6N,QAAS,CACPuiM,WACAjxI,QACAkzI,cACA3kJ,cACA6kJ,UAAW+1B,EACXjhE,eACAirC,YAAa,CAAC9hM,EAAGoD,GACjB6+L,aAGN,CAEA,OAAO5iE,CACT,CAEAs4F,uBAAAA,GACE,MAAM,SAACp+I,EAAA,MAAU+/G,GAASt8L,KAAKK,QAG/B,IAFkBo1L,GAAUz1L,KAAKszN,eAG/B,MAAoB,QAAb/2I,EAAqB,OAAS,QAGvC,IAAI47G,EAAQ,SAUZ,MARoB,UAAhBmE,EAAMnE,MACRA,EAAQ,OACiB,QAAhBmE,EAAMnE,MACfA,EAAQ,QACiB,UAAhBmE,EAAMnE,QACfA,EAAQ,SAGHA,CACT,CAEAyiC,uBAAAA,CAAwBhlJ,GACtB,MAAM,SAAC2G,EAAU+/G,OAAO,WAAC0E,EAAA,OAAYR,EAAA,QAAQx1L,IAAYhL,KAAKK,QAExDk6N,EAAiB3kJ,EAAK5qE,EACtBisN,EAFaj3N,KAAK+2N,iBAEEE,OAAOjjL,MAEjC,IAAI+wJ,EACA/hM,EA0DJ,MAxDiB,SAAbu5E,EACEikH,GACFx9L,EAAIhD,KAAKuG,MAAQyE,EAEE,SAAfg2L,EACF+D,EAAY,OACY,WAAf/D,GACT+D,EAAY,SACZ/hM,GAAMi0N,EAAS,IAEflyB,EAAY,QACZ/hM,GAAKi0N,KAGPj0N,EAAIhD,KAAKuG,MAAQg0N,EAEE,SAAfv5B,EACF+D,EAAY,QACY,WAAf/D,GACT+D,EAAY,SACZ/hM,GAAMi0N,EAAS,IAEflyB,EAAY,OACZ/hM,EAAIhD,KAAKsG,OAGS,UAAbi2E,EACLikH,GACFx9L,EAAIhD,KAAKsG,KAAO0E,EAEG,SAAfg2L,EACF+D,EAAY,QACY,WAAf/D,GACT+D,EAAY,SACZ/hM,GAAMi0N,EAAS,IAEflyB,EAAY,OACZ/hM,GAAKi0N,KAGPj0N,EAAIhD,KAAKsG,KAAOi0N,EAEG,SAAfv5B,EACF+D,EAAY,OACY,WAAf/D,GACT+D,EAAY,SACZ/hM,GAAKi0N,EAAS,IAEdlyB,EAAY,QACZ/hM,EAAIhD,KAAKuG,QAIbw+L,EAAY,QAGP,CAACA,YAAW/hM,IACrB,CAKAg4N,iBAAAA,GACE,GAAIh7N,KAAKK,QAAQi8L,MAAMkE,OACrB,OAGF,MAAMngE,EAAQrgI,KAAKqgI,MACb9jD,EAAWv8E,KAAKK,QAAQk8E,SAE9B,MAAiB,SAAbA,GAAoC,UAAbA,EAClB,CAACzmB,IAAK,EAAGxvD,KAAMtG,KAAKsG,KAAM+4E,OAAQghD,EAAMpsF,OAAQ1tC,MAAOvG,KAAKuG,OAClD,QAAbg2E,GAAmC,WAAbA,EACnB,CAACzmB,IAAK91D,KAAK81D,IAAKxvD,KAAM,EAAG+4E,OAAQr/E,KAAKq/E,OAAQ94E,MAAO85H,EAAMrsF,YADlE,CAGJ,CAKAinL,cAAAA,GACE,MAAM,IAACj1N,EAAK3F,SAAS,gBAACk2H,GAAgB,KAAEjwH,EAAI,IAAEwvD,EAAA,MAAK9hB,EAAA,OAAOC,GAAUj0C,KAChEu2H,IACFvwH,EAAI4yF,OACJ5yF,EAAIqqC,UAAYkmF,EAChBvwH,EAAIsqC,SAAShqC,EAAMwvD,EAAK9hB,EAAOC,GAC/BjuC,EAAIszF,UAER,CAEAwoH,oBAAAA,CAAqBtjN,GACnB,MAAM6kG,EAAOrjG,KAAKK,QAAQgjG,KAC1B,IAAKrjG,KAAK62N,eAAiBxzH,EAAKnzB,QAC9B,OAAO,EAET,MACM7uE,EADQrB,KAAKs8L,MACCp9G,WAAU57E,GAAKA,EAAE9E,QAAUA,IAC/C,GAAI6C,GAAS,EAAG,CAEd,OADagiG,EAAKskG,WAAW3nM,KAAK+3F,WAAW12F,IACjCozF,UAEd,OAAO,CACT,CAKAymI,QAAAA,CAAS3f,GACP,MAAMl4G,EAAOrjG,KAAKK,QAAQgjG,KACpBr9F,EAAMhG,KAAKgG,IACXq8H,EAAQriI,KAAKwzN,iBAAmBxzN,KAAKwzN,eAAiBxzN,KAAKk5N,sBAAsB3d,IACvF,IAAIx4M,EAAGswL,EAEP,MAAM8nC,EAAWA,CAAC7xF,EAAIC,EAAIjpF,KACnBA,EAAMtM,OAAUsM,EAAMqR,QAG3B3rD,EAAI4yF,OACJ5yF,EAAIyuF,UAAYn0C,EAAMtM,MACtBhuC,EAAI4uF,YAAct0C,EAAMqR,MACxB3rD,EAAIo1N,YAAY96K,EAAMqwJ,YAAc,IACpC3qM,EAAIq1N,eAAiB/6K,EAAMswJ,iBAE3B5qM,EAAIivF,YACJjvF,EAAIkvF,OAAOo0C,EAAGtmI,EAAGsmI,EAAGljI,GACpBJ,EAAImvF,OAAOo0C,EAAGvmI,EAAGumI,EAAGnjI,GACpBJ,EAAIsvF,SACJtvF,EAAIszF,UAAS,EAGf,GAAI+J,EAAKnzB,QACP,IAAKntE,EAAI,EAAGswL,EAAOhxD,EAAM/jI,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAC9C,MAAM4pF,EAAO01C,EAAMt/H,GAEfsgG,EAAKw8F,iBACPs7B,EACE,CAACn4N,EAAG2pF,EAAKktI,GAAIzzN,EAAGumF,EAAKmtI,IACrB,CAAC92N,EAAG2pF,EAAKxpF,GAAIiD,EAAGumF,EAAKotI,IACrBptI,GAIA0W,EAAKy8F,WACPq7B,EACE,CAACn4N,EAAG2pF,EAAK8sI,IAAKrzN,EAAGumF,EAAK+sI,KACtB,CAAC12N,EAAG2pF,EAAKgtI,IAAKvzN,EAAGumF,EAAKitI,KACtB,CACEjoK,MAAOg7B,EAAKuzG,UACZlsJ,MAAO24C,EAAKqzG,UACZ2Q,WAAYhkH,EAAK0tI,eACjBzpB,iBAAkBjkH,EAAK2tI,sBAI/B,CAEJ,CAKAgB,UAAAA,GACE,MAAM,MAACj7F,EAAA,IAAOr6H,EAAK3F,SAAS,OAAC8/L,EAAM,KAAE98F,IAASrjG,KACxCm5N,EAAah5B,EAAOwH,WAAW3nM,KAAK+3F,cACpCqhI,EAAYj5B,EAAOjwH,QAAUipJ,EAAWnlL,MAAQ,EACtD,IAAKolL,EACH,OAEF,MAAMmC,EAAgBl4H,EAAKskG,WAAW3nM,KAAK+3F,WAAW,IAAItD,UACpD8kI,EAAcv5N,KAAKi0N,aACzB,IAAI4F,EAAI12N,EAAI22N,EAAIC,EAEZ/5N,KAAK8/M,gBACP+Z,EAAK/3B,GAAYzhE,EAAOrgI,KAAKsG,KAAM8yN,GAAaA,EAAY,EAC5Dj2N,EAAK2+L,GAAYzhE,EAAOrgI,KAAKuG,MAAOg1N,GAAiBA,EAAgB,EACrEzB,EAAKC,EAAKR,IAEVO,EAAKh4B,GAAYzhE,EAAOrgI,KAAK81D,IAAKsjK,GAAaA,EAAY,EAC3DW,EAAKj4B,GAAYzhE,EAAOrgI,KAAKq/E,OAAQk8I,GAAiBA,EAAgB,EACtE1B,EAAK12N,EAAKo2N,GAEZvzN,EAAI4yF,OACJ5yF,EAAIyuF,UAAY0kI,EAAWnlL,MAC3BhuC,EAAI4uF,YAAcukI,EAAWxnK,MAE7B3rD,EAAIivF,YACJjvF,EAAIkvF,OAAO2kI,EAAIC,GACf9zN,EAAImvF,OAAOhyF,EAAI42N,GACf/zN,EAAIsvF,SAEJtvF,EAAIszF,SACN,CAKAkiI,UAAAA,CAAWjgB,GAGT,IAFoBv7M,KAAKK,QAAQi8L,MAEhBpsH,QACf,OAGF,MAAMlqE,EAAMhG,KAAKgG,IAEX06C,EAAO1gD,KAAKg7N,oBACdt6K,GACFyiJ,GAASn9L,EAAK06C,GAGhB,MAAM2hF,EAAQriI,KAAKy0N,cAAclZ,GACjC,IAAK,MAAM5uH,KAAQ01C,EAAO,CACxB,MAAMo5F,EAAoB9uI,EAAKtsF,QACzBg4N,EAAW1rI,EAAKoiE,KAGtB41C,GAAW3+L,EAFG2mF,EAAK43D,MAEI,EADb53D,EAAK+tI,WACcrC,EAAUoD,EACzC,CAEI/6K,GACF0iJ,GAAWp9L,EAEf,CAKA01N,SAAAA,GACE,MAAM,IAAC11N,EAAK3F,SAAS,SAACk8E,EAAQ,MAAE5tC,EAAK,QAAEirE,IAAY55G,KAEnD,IAAK2uC,EAAMuhC,QACT,OAGF,MAAM6+E,EAAO62C,GAAOj3J,EAAMogH,MACpB/jJ,EAAU26L,GAAUh3J,EAAM3jC,SAC1BmtL,EAAQxpJ,EAAMwpJ,MACpB,IAAIxzL,EAASoqJ,EAAK5vG,WAAa,EAEd,WAAbo9B,GAAsC,WAAbA,GAAyBpkD,GAASokD,IAC7D53E,GAAUqG,EAAQq0E,OACd12D,GAAQgmB,EAAMvX,QAChBzyB,GAAUoqJ,EAAK5vG,YAAcxQ,EAAMvX,KAAK94B,OAAS,KAGnDqG,GAAUqG,EAAQ8qD,IAGpB,MAAM,OAAC6lK,EAAA,OAAQC,EAAA,SAAQ32H,EAAQ,SAAE29F,GAt8CrC,SAAmB3qG,EAAOtzF,EAAQ43E,EAAU47G,GAC1C,MAAM,IAACriI,EAAG,KAAExvD,EAAI,OAAE+4E,EAAM,MAAE94E,EAAK,MAAE85H,GAASpoC,GACpC,UAACsjH,EAAA,OAAWjd,GAAUj+D,EAC5B,IACIp7B,EAAU02H,EAAQC,EADlBh5B,EAAW,EAEf,MAAM3uJ,EAASorC,EAASvpB,EAClB9hB,EAAQztC,EAAQD,EAEtB,GAAI2xF,EAAM6nH,eAAgB,CAGxB,GAFA6b,EAASvjC,GAAeD,EAAO7xL,EAAMC,GAEjC4xB,GAASokD,GAAW,CACtB,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvB4B,EAASt9B,EAAO07B,GAAgBhhC,iBAAiBx6L,GAASy1C,EAAStvC,OAEnEi3N,EADsB,WAAbr/I,GACCg/H,EAAUl8H,OAASk8H,EAAUzlJ,KAAO,EAAI7hB,EAAStvC,EAElDwtN,GAAel6H,EAAO1b,EAAU53E,GAE3CsgG,EAAW1+F,EAAQD,MACd,CACL,GAAI6xB,GAASokD,GAAW,CACtB,MAAMy9I,EAAiBr+N,OAAOqtB,KAAKuzD,GAAU,GACvC/9E,EAAQ+9E,EAASy9I,GACvB2B,EAASr9B,EAAO07B,GAAgBhhC,iBAAiBx6L,GAASw1C,EAAQrvC,OAElEg3N,EADsB,WAAbp/I,GACCg/H,EAAUj1M,KAAOi1M,EAAUh1M,OAAS,EAAIytC,EAAQrvC,EAEjDwtN,GAAel6H,EAAO1b,EAAU53E,GAE3Ci3N,EAASxjC,GAAeD,EAAO94G,EAAQvpB,GACvC8sI,EAAwB,SAAbrmH,GAAuBu4G,GAAUA,GAE9C,MAAO,CAAC6mC,SAAQC,SAAQ32H,WAAU29F,WACpC,CAm6CiDi5B,CAAU77N,KAAM2E,EAAQ43E,EAAU47G,GAE/EwM,GAAW3+L,EAAK2oC,EAAMvX,KAAM,EAAG,EAAG23H,EAAM,CACtCp9F,MAAOhjB,EAAMgjB,MACbszC,WACA29F,WACAmC,UAAWguB,GAAW56B,EAAO57G,EAAUq9B,GACvCigD,aAAc,SACdirC,YAAa,CAAC62B,EAAQC,IAE1B,CAEAlqB,IAAAA,CAAK6J,GACEv7M,KAAK62N,eAIV72N,KAAKi7N,iBACLj7N,KAAKk7N,SAAS3f,GACdv7M,KAAKs7N,aACLt7N,KAAK07N,YACL17N,KAAKw7N,WAAWjgB,GAClB,CAMAiR,OAAAA,GACE,MAAMntN,EAAOW,KAAKK,QACZy7N,EAAKz8N,EAAKi9L,OAASj9L,EAAKi9L,MAAMt/K,GAAK,EACnC++M,EAAKjpC,GAAezzL,EAAKgkG,MAAQhkG,EAAKgkG,KAAKrmF,GAAI,GAC/Cg/M,EAAKlpC,GAAezzL,EAAK8gM,QAAU9gM,EAAK8gM,OAAOnjL,EAAG,GAExD,OAAKhd,KAAK62N,cAAgB72N,KAAK0xM,OAASuhB,GAAM/yN,UAAUwxM,KAUjD,CAAC,CACN10L,EAAG++M,EACHrqB,KAAO6J,IACLv7M,KAAKi7N,iBACLj7N,KAAKk7N,SAAS3f,GACdv7M,KAAK07N,WAAW,GAEjB,CACD1+M,EAAGg/M,EACHtqB,KAAMA,KACJ1xM,KAAKs7N,YAAY,GAElB,CACDt+M,EAAG8+M,EACHpqB,KAAO6J,IACLv7M,KAAKw7N,WAAWjgB,EAAA,IAvBX,CAAC,CACNv+L,EAAG8+M,EACHpqB,KAAO6J,IACLv7M,KAAK0xM,KAAK6J,EAAA,GAuBlB,CAOAnG,uBAAAA,CAAwBv+K,GACtB,MAAMw9L,EAAQr0N,KAAKqgI,MAAMwoF,+BACnBoT,EAASj8N,KAAK44L,KAAO,SACrB/oK,EAAS,GACf,IAAI9sB,EAAGswL,EAEP,IAAKtwL,EAAI,EAAGswL,EAAOghC,EAAM/1N,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAC9C,MAAMg+C,EAAOszK,EAAMtxN,GACfg+C,EAAKk7K,KAAYj8N,KAAK4uC,IAAQ/X,GAAQkqB,EAAKlqB,OAASA,GACtDhH,EAAO1uB,KAAK4/C,EAEhB,CACA,OAAOlxB,CACT,CAOA6oM,uBAAAA,CAAwBr3N,GAEtB,OAAOukM,GADM5lM,KAAKK,QAAQi8L,MAAMqL,WAAW3nM,KAAK+3F,WAAW12F,IACxC0tJ,KACrB,CAKAmtE,UAAAA,GACE,MAAM9sE,EAAWpvJ,KAAK04N,wBAAwB,GAAGv5K,WACjD,OAAQn/C,KAAK8/M,eAAiB9/M,KAAKg0C,MAAQh0C,KAAKi0C,QAAUm7G,CAC5D,ECrqDa,MAAM+sE,GACnBpuM,WAAAA,CAAY8I,EAAMsmK,EAAOuB,GACvB1+L,KAAK62B,KAAOA,EACZ72B,KAAKm9L,MAAQA,EACbn9L,KAAK0+L,SAAWA,EAChB1+L,KAAKqiI,MAAQ1mI,OAAOyM,OAAO,KAC7B,CAEAg0N,SAAAA,CAAUvlM,GACR,OAAOl7B,OAAOuE,UAAUm8N,cAAcr+N,KAAKgC,KAAK62B,KAAK32B,UAAW22B,EAAK32B,UACvE,CAMA8tB,QAAAA,CAAS2+D,GACP,MAAMhqD,EAAQhnC,OAAOo1B,eAAe47D,GACpC,IAAI2vI,GAyFR,SAA2B35L,GACzB,MAAO,OAAQA,GAAS,aAAcA,CACxC,EAzFQ45L,CAAkB55L,KAEpB25L,EAAct8N,KAAKguB,SAAS2U,IAG9B,MAAM0/F,EAAQriI,KAAKqiI,MACbzzF,EAAK+9C,EAAK/9C,GACVuuJ,EAAQn9L,KAAKm9L,MAAQ,IAAMvuJ,EAEjC,IAAKA,EACH,MAAM,IAAI7gC,MAAM,2BAA6B4+E,GAG/C,OAAI/9C,KAAMyzF,IAKVA,EAAMzzF,GAAM+9C,EAsChB,SAA0BA,EAAMwwG,EAAOm/B,GAErC,MAAME,EAAe10F,GAAMnsI,OAAOyM,OAAO,MAAO,CAC9Ck0N,EAAc5uF,GAASpuI,IAAIg9N,GAAe,CAAC,EAC3C5uF,GAASpuI,IAAI69L,GACbxwG,EAAK+gD,WAGPA,GAAS/wG,IAAIwgK,EAAOq/B,GAEhB7vI,EAAK8vI,eASX,SAAuBt/B,EAAOluE,GAC5BtzH,OAAOqtB,KAAKimG,GAAQnuH,SAAQyoB,IAC1B,MAAMmzM,EAAgBnzM,EAASiuB,MAAM,KAC/BmlL,EAAaD,EAAch5L,MAC3Bk5L,EAAc,CAACz/B,GAAOlyL,OAAOyxN,GAAeptN,KAAK,KACjD4kB,EAAQ+6F,EAAO1lG,GAAUiuB,MAAM,KAC/BonJ,EAAa1qK,EAAMwP,MACnBi7J,EAAczqK,EAAM5kB,KAAK,KAC/Bo+H,GAASxd,MAAM0sG,EAAaD,EAAYh+B,EAAaC,EAAA,GAEzD,CAlBIi+B,CAAc1/B,EAAOxwG,EAAK8vI,eAGxB9vI,EAAKm6C,aACP4G,GAAS+wD,SAAStB,EAAOxwG,EAAKm6C,YAElC,CAtDIg2F,CAAiBnwI,EAAMwwG,EAAOm/B,GAC1Bt8N,KAAK0+L,UACPhxD,GAASgxD,SAAS/xG,EAAK/9C,GAAI+9C,EAAKz+E,YANzBivL,CAUX,CAMA79L,GAAAA,CAAIsvC,GACF,OAAO5uC,KAAKqiI,MAAMzzF,EACpB,CAKAxgB,UAAAA,CAAWu+D,GACT,MAAM01C,EAAQriI,KAAKqiI,MACbzzF,EAAK+9C,EAAK/9C,GACVuuJ,EAAQn9L,KAAKm9L,MAEfvuJ,KAAMyzF,UACDA,EAAMzzF,GAGXuuJ,GAASvuJ,KAAM8+F,GAASyvD,YACnBzvD,GAASyvD,GAAOvuJ,GACnB5uC,KAAK0+L,iBACAxwL,GAAU0gC,GAGvB,ECtEK,MAAMmuL,GACXhvM,WAAAA,GACE/tB,KAAKg9N,YAAc,IAAIb,GAAc9lB,GAAmB,YAAY,GACpEr2M,KAAKiuJ,SAAW,IAAIkuE,GAAc/vM,GAAS,YAC3CpsB,KAAKq8J,QAAU,IAAI8/D,GAAcxgO,OAAQ,WACzCqE,KAAKs+L,OAAS,IAAI69B,GAAclJ,GAAO,UAGvCjzN,KAAKi9N,iBAAmB,CAACj9N,KAAKg9N,YAAah9N,KAAKs+L,OAAQt+L,KAAKiuJ,SAC/D,CAKAjtJ,GAAAA,GAAa,QAAA0gF,EAAArjF,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAg5D,GAAA79E,EAAA,EAAAA,EAAA69E,EAAA79E,IAAJurB,EAAIvrB,GAAAxF,UAAAwF,GACT7D,KAAKk9N,MAAM,WAAY9tM,EACzB,CAEA+vD,MAAAA,GAAgB,QAAA8T,EAAA50F,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAuqE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9jE,EAAI8jE,GAAA70F,UAAA60F,GACZlzF,KAAKk9N,MAAM,aAAc9tM,EAC3B,CAKA+tM,cAAAA,GAAwB,QAAAxiD,EAAAt8K,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAiyJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxrJ,EAAIwrJ,GAAAv8K,UAAAu8K,GACpB56K,KAAKk9N,MAAM,WAAY9tM,EAAMpvB,KAAKg9N,YACpC,CAKA1lB,WAAAA,GAAqB,QAAAv8B,EAAA18K,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAqyJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5rJ,EAAI4rJ,GAAA38K,UAAA28K,GACjBh7K,KAAKk9N,MAAM,WAAY9tM,EAAMpvB,KAAKiuJ,SACpC,CAKAmvE,UAAAA,GAAoB,QAAAliD,EAAA78K,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAwyJ,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJhsJ,EAAIgsJ,GAAA/8K,UAAA+8K,GAChBp7K,KAAKk9N,MAAM,WAAY9tM,EAAMpvB,KAAKq8J,QACpC,CAKAghE,SAAAA,GAAmB,QAAAnhD,EAAA79K,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAwzJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ/sJ,EAAI+sJ,GAAA99K,UAAA89K,GACfn8K,KAAKk9N,MAAM,WAAY9tM,EAAMpvB,KAAKs+L,OACpC,CAMAg/B,aAAAA,CAAc1uL,GACZ,OAAO5uC,KAAKu9N,KAAK3uL,EAAI5uC,KAAKg9N,YAAa,aACzC,CAMAjV,UAAAA,CAAWn5K,GACT,OAAO5uC,KAAKu9N,KAAK3uL,EAAI5uC,KAAKiuJ,SAAU,UACtC,CAMAuvE,SAAAA,CAAU5uL,GACR,OAAO5uC,KAAKu9N,KAAK3uL,EAAI5uC,KAAKq8J,QAAS,SACrC,CAMAohE,QAAAA,CAAS7uL,GACP,OAAO5uC,KAAKu9N,KAAK3uL,EAAI5uC,KAAKs+L,OAAQ,QACpC,CAKAo/B,iBAAAA,GAA2B,QAAAC,EAAAt/N,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAi1M,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxuM,EAAIwuM,GAAAv/N,UAAAu/N,GACvB59N,KAAKk9N,MAAM,aAAc9tM,EAAMpvB,KAAKg9N,YACtC,CAKAa,cAAAA,GAAwB,QAAAC,EAAAz/N,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAo1M,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3uM,EAAI2uM,GAAA1/N,UAAA0/N,GACpB/9N,KAAKk9N,MAAM,aAAc9tM,EAAMpvB,KAAKiuJ,SACtC,CAKA+vE,aAAAA,GAAuB,QAAAC,EAAA5/N,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAAu1M,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9uM,EAAI8uM,GAAA7/N,UAAA6/N,GACnBl+N,KAAKk9N,MAAM,aAAc9tM,EAAMpvB,KAAKq8J,QACtC,CAKA8hE,YAAAA,GAAsB,QAAAC,EAAA//N,UAAAC,OAAN8wB,EAAI,IAAA1G,MAAA01M,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjvM,EAAIivM,GAAAhgO,UAAAggO,GAClBr+N,KAAKk9N,MAAM,aAAc9tM,EAAMpvB,KAAKs+L,OACtC,CAKA4+B,KAAAA,CAAMlqI,EAAQ5jE,EAAMkvM,GAClB,IAAIlvM,GAAMtuB,SAAQg9B,IAChB,MAAMygM,EAAMD,GAAiBt+N,KAAKw+N,oBAAoB1gM,GAClDwgM,GAAiBC,EAAInC,UAAUt+L,IAASygM,IAAQv+N,KAAKq8J,SAAWv+H,EAAI8Q,GACtE5uC,KAAKy+N,MAAMzrI,EAAQurI,EAAKzgM,GAMxBxR,GAAKwR,GAAK6uD,IAOR,MAAM+xI,EAAUJ,GAAiBt+N,KAAKw+N,oBAAoB7xI,GAC1D3sF,KAAKy+N,MAAMzrI,EAAQ0rI,EAAS/xI,EAAA,MAIpC,CAKA8xI,KAAAA,CAAMzrI,EAAQ80H,EAAUlxF,GACtB,MAAM+nG,EAAcrqC,GAAYthG,GAChC9xB,GAAK01D,EAAU,SAAW+nG,GAAc,GAAI/nG,GAC5CkxF,EAAS90H,GAAQ4jC,GACjB11D,GAAK01D,EAAU,QAAU+nG,GAAc,GAAI/nG,EAC7C,CAKA4nG,mBAAAA,CAAoB3nM,GAClB,IAAK,IAAI9zB,EAAI,EAAGA,EAAI/C,KAAKi9N,iBAAiB3+N,OAAQyE,IAAK,CACrD,MAAMw7N,EAAMv+N,KAAKi9N,iBAAiBl6N,GAClC,GAAIw7N,EAAInC,UAAUvlM,GAChB,OAAO0nM,CAEX,CAEA,OAAOv+N,KAAKq8J,OACd,CAKAkhE,IAAAA,CAAK3uL,EAAI0vL,EAAeznM,GACtB,MAAM81D,EAAO2xI,EAAch/N,IAAIsvC,GAC/B,QAAa5vC,IAAT2tF,EACF,MAAM,IAAI5+E,MAAM,IAAM6gC,EAAK,yBAA2B/X,EAAO,KAE/D,OAAO81D,CACT,EAKF,IAAAm7H,GAA+B,IAAIiV,GCtKpB,MAAM6B,GACnB7wM,WAAAA,GACE/tB,KAAKq6C,MAAQ,EACf,CAYAonI,MAAAA,CAAOphD,EAAOw+F,EAAMzvM,EAAMlG,GACX,eAAT21M,IACF7+N,KAAKq6C,MAAQr6C,KAAK8+N,mBAAmBz+F,GAAO,GAC5CrgI,KAAKkxM,QAAQlxM,KAAKq6C,MAAOgmF,EAAO,YAGlC,MAAMyG,EAAc59G,EAASlpB,KAAKq9L,aAAah9D,GAAOn3G,OAAOA,GAAUlpB,KAAKq9L,aAAah9D,GACnFxwG,EAAS7vB,KAAKkxM,QAAQpqE,EAAazG,EAAOw+F,EAAMzvM,GAMtD,MAJa,iBAATyvM,IACF7+N,KAAKkxM,QAAQpqE,EAAazG,EAAO,QACjCrgI,KAAKkxM,QAAQlxM,KAAKq6C,MAAOgmF,EAAO,cAE3BxwG,CACT,CAKAqhL,OAAAA,CAAQpqE,EAAazG,EAAOw+F,EAAMzvM,GAChCA,EAAOA,GAAQ,CAAC,EAChB,IAAK,MAAMsG,KAAcoxG,EAAa,CACpC,MAAMy1B,EAAS7mI,EAAW6mI,OAG1B,IAA6C,IAAzCr7F,GAFWq7F,EAAOsiE,GACP,CAACx+F,EAAOjxG,EAAMsG,EAAWr1B,SACPk8J,IAAqBntI,EAAKo8B,WACzD,OAAO,CAEX,CAEA,OAAO,CACT,CAEAuzK,UAAAA,GAMOpsC,GAAc3yL,KAAK+9M,UACtB/9M,KAAKg/N,UAAYh/N,KAAK+9M,OACtB/9M,KAAK+9M,YAAS/+M,EAElB,CAMAq+L,YAAAA,CAAah9D,GACX,GAAIrgI,KAAK+9M,OACP,OAAO/9M,KAAK+9M,OAGd,MAAMj3E,EAAc9mI,KAAK+9M,OAAS/9M,KAAK8+N,mBAAmBz+F,GAI1D,OAFArgI,KAAKi/N,oBAAoB5+F,GAElByG,CACT,CAEAg4F,kBAAAA,CAAmBz+F,EAAOr2G,GACxB,MAAM8/D,EAASu2C,GAASA,EAAMv2C,OACxBzpF,EAAUyyL,GAAehpG,EAAOzpF,SAAWypF,EAAOzpF,QAAQg8J,QAAS,CAAC,GACpEA,EAqBV,SAAoBvyE,GAClB,MAAMo1I,EAAW,CAAC,EACZ7iE,EAAU,GACVrzI,EAAOrtB,OAAOqtB,KAAK8+L,GAASzrD,QAAQh6B,OAC1C,IAAK,IAAIt/H,EAAI,EAAGA,EAAIimB,EAAK1qB,OAAQyE,IAC/Bs5J,EAAQl7J,KAAK2mN,GAAS0V,UAAUx0M,EAAKjmB,KAGvC,MAAMi8L,EAAQl1G,EAAOuyE,SAAW,GAChC,IAAK,IAAIt5J,EAAI,EAAGA,EAAIi8L,EAAM1gM,OAAQyE,IAAK,CACrC,MAAMw5J,EAASyiC,EAAMj8L,IAEY,IAA7Bs5J,EAAQ/6J,QAAQi7J,KAClBF,EAAQl7J,KAAKo7J,GACb2iE,EAAS3iE,EAAO3tH,KAAM,EAE1B,CAEA,MAAO,CAACytH,UAAS6iE,WACnB,CAxCoBC,CAAWr1I,GAE3B,OAAmB,IAAZzpF,GAAsB2pB,EAkDjC,SAA2Bq2G,EAAKh+C,EAAuBhiF,EAAS2pB,GAAK,IAAnC,QAACqyI,EAAO,SAAE6iE,GAAS78I,EACnD,MAAMxyD,EAAS,GACTugB,EAAUiwF,EAAMtoC,aAEtB,IAAK,MAAMwkE,KAAUF,EAAS,CAC5B,MAAMztH,EAAK2tH,EAAO3tH,GACZvvC,EAAO+/N,GAAQ/+N,EAAQuuC,GAAK5kB,GACrB,OAAT3qB,GAGJwwB,EAAO1uB,KAAK,CACVo7J,SACAl8J,QAASg/N,GAAWh/F,EAAMv2C,OAAQ,CAACyyE,SAAQyiC,MAAOkgC,EAAStwL,IAAMvvC,EAAM+wC,IAE3E,CAEA,OAAOvgB,CACT,CAnE4CyvM,CAAkBj/F,EAAOg8B,EAASh8J,EAAS2pB,GAAhD,EACrC,CAMAi1M,mBAAAA,CAAoB5+F,GAClB,MAAMk/F,EAAsBv/N,KAAKg/N,WAAa,GACxCl4F,EAAc9mI,KAAK+9M,OACnBqK,EAAOA,CAACniN,EAAGC,IAAMD,EAAEijB,QAAOlmB,IAAMkD,EAAE8vF,MAAK5vF,GAAKpD,EAAEu5J,OAAO3tH,KAAOxoC,EAAEm2J,OAAO3tH,OAC3E5uC,KAAKkxM,QAAQkX,EAAKmX,EAAqBz4F,GAAczG,EAAO,QAC5DrgI,KAAKkxM,QAAQkX,EAAKthF,EAAay4F,GAAsBl/F,EAAO,QAC9D,EA2BF,SAAS++F,GAAQ/+N,EAAS2pB,GACxB,OAAKA,IAAmB,IAAZ3pB,GAGI,IAAZA,EACK,CAAC,EAEHA,EALE,IAMX,CAqBA,SAASg/N,GAAWv1I,EAAM01I,EAAmBngO,EAAM+wC,GAAS,IAAhC,OAACmsH,EAAM,MAAEyiC,GAAMwgC,EACzC,MAAMx2M,EAAO8gE,EAAO21I,gBAAgBljE,GAC9B2pC,EAASp8G,EAAOyvH,gBAAgBl6M,EAAM2pB,GAK5C,OAJIg2K,GAASziC,EAAO7uB,UAElBw4D,EAAO/kM,KAAKo7J,EAAO7uB,UAEd5jD,EAAO0vH,eAAetT,EAAQ91J,EAAS,CAAC,IAAK,CAElD83J,YAAY,EACZC,WAAW,EACX7pG,SAAS,GAEb,CClLO,SAASohI,GAAa7oM,EAAMx2B,GACjC,MAAMs/N,EAAkBjyF,GAAS8vD,SAAS3mK,IAAS,CAAC,EAEpD,QADwBx2B,EAAQm9L,UAAY,CAAC,GAAG3mK,IAAS,CAAC,GACpCknK,WAAa19L,EAAQ09L,WAAa4hC,EAAgB5hC,WAAa,GACvF,CAgBA,SAAS6hC,GAAchxL,GACrB,GAAW,MAAPA,GAAqB,MAAPA,GAAqB,MAAPA,EAC9B,OAAOA,CAEX,CAWO,SAASixL,GAAcjxL,GAC5B,GAAIgxL,GAAchxL,GAChB,OAAOA,EACR,QAAAkxL,EAAAzhO,UAAAC,OAHkCyhO,EAAY,IAAAr3M,MAAAo3M,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAZD,EAAYC,EAAA,GAAA3hO,UAAA2hO,GAI/C,IAAK,MAAM3gO,KAAQ0gO,EAAc,CAC/B,MAAMnnC,EAAOv5L,EAAKu5L,OAbH,SADOr8G,EAeAl9E,EAAKk9E,WAdU,WAAbA,EACjB,IAEQ,SAAbA,GAAoC,UAAbA,EAClB,SADT,IAYO3tC,EAAGtwC,OAAS,GAAKshO,GAAchxL,EAAG,GAAG6I,eAC1C,GAAImhJ,EACF,OAAOA,CAEX,CApBF,IAA0Br8G,EAqBxB,MAAM,IAAIxuE,MAAA,6BAAA9C,OAAmC2jC,EAAG,uDAClD,CAEA,SAASqxL,GAAmBrxL,EAAIgqJ,EAAMrsH,GACpC,GAAIA,EAAQqsH,EAAO,YAAchqJ,EAC/B,MAAO,CAACgqJ,OAEZ,CAYA,SAASsnC,GAAiBp2I,EAAQzpF,GAChC,MAAM8/N,EAAgBjyN,GAAU47E,EAAOjzD,OAAS,CAACynK,OAAQ,CAAC,GACpD8hC,EAAe//N,EAAQi+L,QAAU,CAAC,EAClC+hC,EAAiBX,GAAa51I,EAAOjzD,KAAMx2B,GAC3Ci+L,EAAS3iM,OAAOyM,OAAO,MAqC7B,OAlCAzM,OAAOqtB,KAAKo3M,GAAct/N,SAAQ8tC,IAChC,MAAM0xL,EAAYF,EAAaxxL,GAC/B,IAAKzW,GAASmoM,GACZ,OAAOl3J,QAAQp2C,MAAM,0CAAD/nB,OAA2C2jC,IAEjE,GAAI0xL,EAAU94B,OACZ,OAAOp+H,QAAQ0P,KAAK,kDAAD7tE,OAAmD2jC,IAExE,MAAMgqJ,EAAOinC,GAAcjxL,EAAI0xL,EAzBnC,SAAkC1xL,EAAIk7C,GACpC,GAAIA,EAAOn/E,MAAQm/E,EAAOn/E,KAAK6yL,SAAU,CACvC,MAAM+iC,EAAUz2I,EAAOn/E,KAAK6yL,SAASt0K,QAAQpmB,GAAMA,EAAE80M,UAAYhpK,GAAM9rC,EAAEg1M,UAAYlpK,IACrF,GAAI2xL,EAAQjiO,OACV,OAAO2hO,GAAmBrxL,EAAI,IAAK2xL,EAAQ,KAAON,GAAmBrxL,EAAI,IAAK2xL,EAAQ,IAG1F,MAAO,CAAC,CACV,CAiB8CC,CAAyB5xL,EAAIk7C,GAAS4jD,GAAS4wD,OAAOgiC,EAAUzpM,OACpG4pM,EAlEV,SAAmC7nC,EAAMmF,GACvC,OAAOnF,IAASmF,EAAY,UAAY,SAC1C,CAgEsB2iC,CAA0B9nC,EAAMynC,GAC5CM,EAAsBR,EAAc7hC,QAAU,CAAC,EACrDA,EAAO1vJ,GAAMmlJ,GAAQp4L,OAAOyM,OAAO,MAAO,CAAC,CAACwwL,QAAO0nC,EAAWK,EAAoB/nC,GAAO+nC,EAAoBF,IAAY,IAI3H32I,EAAOn/E,KAAK6yL,SAAS18L,SAAQyrE,IAC3B,MAAM11C,EAAO01C,EAAQ11C,MAAQizD,EAAOjzD,KAC9BknK,EAAYxxH,EAAQwxH,WAAa2hC,GAAa7oM,EAAMx2B,GAEpDsgO,GADkBzyN,GAAU2oB,IAAS,CAAC,GACAynK,QAAU,CAAC,EACvD3iM,OAAOqtB,KAAK23M,GAAqB7/N,SAAQ8/N,IACvC,MAAMhoC,EAxFZ,SAAmChqJ,EAAImvJ,GACrC,IAAInF,EAAOhqJ,EAMX,MALW,YAAPA,EACFgqJ,EAAOmF,EACS,YAAPnvJ,IACTgqJ,EAAqB,MAAdmF,EAAoB,IAAM,KAE5BnF,CACT,CAgFmBioC,CAA0BD,EAAW7iC,GAC5CnvJ,EAAK29B,EAAQqsH,EAAO,WAAaA,EACvC0F,EAAO1vJ,GAAM0vJ,EAAO1vJ,IAAOjzC,OAAOyM,OAAO,MACzC2rL,GAAQuK,EAAO1vJ,GAAK,CAAC,CAACgqJ,QAAOwnC,EAAaxxL,GAAK+xL,EAAoBC,IAAY,GAC/E,IAIJjlO,OAAOqtB,KAAKs1K,GAAQx9L,SAAQP,IAC1B,MAAM03F,EAAQqmG,EAAO/9L,GACrBwzL,GAAQ97F,EAAO,CAACy1C,GAAS4wD,OAAOrmG,EAAMphE,MAAO62G,GAASz1C,OAAO,IAGxDqmG,CACT,CAEA,SAASwiC,GAAYh3I,GACnB,MAAMzpF,EAAUypF,EAAOzpF,UAAYypF,EAAOzpF,QAAU,CAAC,GAErDA,EAAQg8J,QAAUy2B,GAAezyL,EAAQg8J,QAAS,CAAC,GACnDh8J,EAAQi+L,OAAS4hC,GAAiBp2I,EAAQzpF,EAC5C,CAEA,SAAS0gO,GAASp2N,GAIhB,OAHAA,EAAOA,GAAQ,CAAC,GACX6yL,SAAW7yL,EAAK6yL,UAAY,GACjC7yL,EAAKmvM,OAASnvM,EAAKmvM,QAAU,GACtBnvM,CACT,CAWA,MAAMq2N,GAAW,IAAI5uM,IACf6uM,GAAa,IAAItuM,IAEvB,SAASuuM,GAAWviI,EAAUwiI,GAC5B,IAAIn4M,EAAOg4M,GAAS1hO,IAAIq/F,GAMxB,OALK31E,IACHA,EAAOm4M,IACPH,GAASrkM,IAAIgiE,EAAU31E,GACvBi4M,GAAWjgO,IAAIgoB,IAEVA,CACT,CAEA,MAAMo4M,GAAaA,CAACzkM,EAAK3uB,EAAKzN,KAC5B,MAAMlB,EAAO60L,GAAiBlmL,EAAKzN,QACtBvB,IAATK,GACFs9B,EAAI37B,IAAI3B,IAIG,MAAMgiO,GACnBtzM,WAAAA,CAAY+7D,GACV9pF,KAAK+2I,QA/BT,SAAoBjtD,GAMlB,OALAA,EAASA,GAAU,CAAC,GACbn/E,KAAOo2N,GAASj3I,EAAOn/E,MAE9Bm2N,GAAYh3I,GAELA,CACT,CAwBmBw3I,CAAWx3I,GAC1B9pF,KAAKuhO,YAAc,IAAInvM,IACvBpyB,KAAKwhO,eAAiB,IAAIpvM,GAC5B,CAEA,YAAIypG,GACF,OAAO77H,KAAK+2I,QAAQlb,QACtB,CAEA,QAAIhlG,GACF,OAAO72B,KAAK+2I,QAAQlgH,IACtB,CAEA,QAAIA,CAAKA,GACP72B,KAAK+2I,QAAQlgH,KAAOA,CACtB,CAEA,QAAIlsB,GACF,OAAO3K,KAAK+2I,QAAQpsI,IACtB,CAEA,QAAIA,CAAKA,GACP3K,KAAK+2I,QAAQpsI,KAAOo2N,GAASp2N,EAC/B,CAEA,WAAItK,GACF,OAAOL,KAAK+2I,QAAQ12I,OACtB,CAEA,WAAIA,CAAQA,GACVL,KAAK+2I,QAAQ12I,QAAUA,CACzB,CAEA,WAAIg8J,GACF,OAAOr8J,KAAK+2I,QAAQslB,OACtB,CAEAprJ,MAAAA,GACE,MAAM64E,EAAS9pF,KAAK+2I,QACpB/2I,KAAKyhO,aACLX,GAAYh3I,EACd,CAEA23I,UAAAA,GACEzhO,KAAKuhO,YAAYh0M,QACjBvtB,KAAKwhO,eAAej0M,OACtB,CAQA+rL,gBAAAA,CAAiBooB,GACf,OAAOR,GAAWQ,GAChB,IAAM,CAAC,CAAC,YAADz2N,OACOy2N,GACZ,MAEN,CASAzlB,yBAAAA,CAA0BylB,EAAan4K,GACrC,OAAO23K,GAAA,GAAAj2N,OAAcy2N,EAAA,gBAAAz2N,OAA0Bs+C,IAC7C,IAAM,CACJ,CAAC,YAADt+C,OACcy2N,EAAA,iBAAAz2N,OAA2Bs+C,GAAA,eAAAt+C,OACxBs+C,IAGjB,CAAC,YAADt+C,OACcy2N,GACZ,MAGR,CAUA5lB,uBAAAA,CAAwB4lB,EAAanmO,GACnC,OAAO2lO,GAAA,GAAAj2N,OAAcy2N,EAAA,KAAAz2N,OAAe1P,IAClC,IAAM,CAAC,CAAC,YAAD0P,OACOy2N,EAAA,cAAAz2N,OAAwB1P,GAAA,YAAA0P,OACxBy2N,GAAA,YAAAz2N,OACA1P,GACZ,MAEN,CAOAkkO,eAAAA,CAAgBljE,GACd,MAAM3tH,EAAK2tH,EAAO3tH,GACZ/X,EAAO72B,KAAK62B,KAClB,OAAOqqM,GAAA,GAAAj2N,OAAc4rB,EAAA,YAAA5rB,OAAe2jC,IAClC,IAAM,CAAC,CAAC,WAAD3jC,OACM2jC,MACR2tH,EAAOolE,wBAA0B,MAE1C,CAKAC,aAAAA,CAAcC,EAAWC,GACvB,MAAMP,EAAcvhO,KAAKuhO,YACzB,IAAIhtJ,EAAQgtJ,EAAYjiO,IAAIuiO,GAK5B,OAJKttJ,IAASutJ,IACZvtJ,EAAQ,IAAIniD,IACZmvM,EAAY5kM,IAAIklM,EAAWttJ,IAEtBA,CACT,CAQAglI,eAAAA,CAAgBsoB,EAAWE,EAAUD,GACnC,MAAM,QAACzhO,EAAO,KAAEw2B,GAAQ72B,KAClBu0E,EAAQv0E,KAAK4hO,cAAcC,EAAWC,GACtC1rB,EAAS7hI,EAAMj1E,IAAIyiO,GACzB,GAAI3rB,EACF,OAAOA,EAGT,MAAMlQ,EAAS,IAAIvzK,IAEnBovM,EAASjhO,SAAQkoB,IACX64M,IACF37B,EAAOllM,IAAI6gO,GACX74M,EAAKloB,SAAQP,GAAO6gO,GAAWl7B,EAAQ27B,EAAWthO,MAEpDyoB,EAAKloB,SAAQP,GAAO6gO,GAAWl7B,EAAQ7lM,EAASE,KAChDyoB,EAAKloB,SAAQP,GAAO6gO,GAAWl7B,EAAQh4L,GAAU2oB,IAAS,CAAC,EAAGt2B,KAC9DyoB,EAAKloB,SAAQP,GAAO6gO,GAAWl7B,EAAQx4D,GAAUntI,KACjDyoB,EAAKloB,SAAQP,GAAO6gO,GAAWl7B,EAAQp/D,GAAavmI,IAAA,IAGtD,MAAM0pB,EAAQvB,MAAM46D,KAAK4iH,GAOzB,OANqB,IAAjBj8K,EAAM3rB,QACR2rB,EAAM9oB,KAAKxF,OAAOyM,OAAO,OAEvB64N,GAAWh+L,IAAI8+L,IACjBxtJ,EAAM53C,IAAIolM,EAAU93M,GAEfA,CACT,CAMA+3M,iBAAAA,GACE,MAAM,QAAC3hO,EAAO,KAAEw2B,GAAQ72B,KAExB,MAAO,CACLK,EACA6N,GAAU2oB,IAAS,CAAC,EACpB62G,GAAS8vD,SAAS3mK,IAAS,CAAC,EAC5B,CAACA,QACD62G,GACA5G,GAEJ,CASAi1E,mBAAAA,CAAoB7V,EAAQ1yB,EAAOpjI,GAA0B,IAAjB+1J,EAAW9nM,UAAAC,OAAA,QAAAU,IAAAX,UAAC,GAADA,UAAC,GAAD,CAAC,IACtD,MAAMwxB,EAAS,CAAC8jL,SAAS,IACnB,SAACxf,EAAQ,YAAE8tC,GAAeC,GAAYliO,KAAKwhO,eAAgBt7B,EAAQC,GACzE,IAAI9lM,EAAU8zL,EACd,GAkDJ,SAAqB3zE,EAAOgzD,GAC1B,MAAM,aAACq0B,EAAY,YAAEE,GAAe1K,GAAa78E,GAEjD,IAAK,MAAMxY,KAAQwrE,EAAO,CACxB,MAAM00B,EAAaL,EAAa7/F,GAC1BmgG,EAAYJ,EAAY//F,GACxBxpG,GAAS2pM,GAAaD,IAAe1nF,EAAMxY,GACjD,GAAKkgG,IAAev6K,GAAWnvB,IAAU2jO,GAAY3jO,KAC/C2pM,GAAax/K,GAAQnqB,GACzB,OAAO,CAEX,CACA,OAAO,CACT,CA/DQ4jO,CAAYjuC,EAAU3gB,GAAQ,CAChC3jJ,EAAO8jL,SAAU,EAIjBtzM,EAAUgnM,GAAelT,EAHzB/jJ,EAAUziB,GAAWyiB,GAAWA,IAAYA,EAExBpwC,KAAKw5M,eAAetT,EAAQ91J,EAAS6xL,IAI3D,IAAK,MAAMj6H,KAAQwrE,EACjB3jJ,EAAOm4E,GAAQ3nG,EAAQ2nG,GAEzB,OAAOn4E,CACT,CAQA2pL,cAAAA,CAAetT,EAAQ91J,GAA8C,IAArC+1J,EAAW9nM,UAAAC,OAAA,QAAAU,IAAAX,UAAC,GAADA,UAAC,GAAD,CAAC,IAAKkpM,EAAkBlpM,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EACjE,MAAM,SAACm1L,GAAY+tC,GAAYliO,KAAKwhO,eAAgBt7B,EAAQC,GAC5D,OAAOhuK,GAASiY,GACZi3J,GAAelT,EAAU/jJ,OAASpxC,EAAWuoM,GAC7CpT,CACN,EAGF,SAAS+tC,GAAYG,EAAen8B,EAAQC,GAC1C,IAAI5xH,EAAQ8tJ,EAAc/iO,IAAI4mM,GACzB3xH,IACHA,EAAQ,IAAIniD,IACZiwM,EAAc1lM,IAAIupK,EAAQ3xH,IAE5B,MAAMoqB,EAAWwnG,EAAS72L,OAC1B,IAAI8mM,EAAS7hI,EAAMj1E,IAAIq/F,GACvB,IAAKy3G,EAAQ,CAEXA,EAAS,CACPjiB,SAFe8R,GAAgBC,EAAQC,GAGvC87B,YAAa97B,EAASj9K,QAAOwmB,IAAMA,EAAE+H,cAAcsC,SAAS,YAE9Dw6B,EAAM53C,IAAIgiE,EAAUy3G,GAEtB,OAAOA,CACT,CAEA,MAAM+rB,GAAc3jO,GAAS25B,GAAS35B,IACjC7C,OAAO65B,oBAAoBh3B,GAAOw3F,MAAMz1F,GAAQotB,GAAWnvB,EAAM+B,MC9XtE,MAAM+hO,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,aAC3D,SAASC,GAAqBhmJ,EAAUq8G,GACtC,MAAoB,QAAbr8G,GAAmC,WAAbA,IAAiE,IAAvC+lJ,GAAgBhhO,QAAQi7E,IAA6B,MAATq8G,CACrG,CAEA,SAAS4pC,GAAcC,EAAIC,GACzB,OAAO,SAASz8N,EAAGC,GACjB,OAAOD,EAAEw8N,KAAQv8N,EAAEu8N,GACfx8N,EAAEy8N,GAAMx8N,EAAEw8N,GACVz8N,EAAEw8N,GAAMv8N,EAAEu8N,EAChB,CACF,CAEA,SAASE,GAAqBvyL,GAC5B,MAAMiwF,EAAQjwF,EAAQiwF,MAChBkzE,EAAmBlzE,EAAMhgI,QAAQ22D,UAEvCqpE,EAAMk2F,cAAc,eACpBr1J,GAAaqyI,GAAoBA,EAAiBqvB,WAAY,CAACxyL,GAAUiwF,EAC3E,CAEA,SAASwiG,GAAoBzyL,GAC3B,MAAMiwF,EAAQjwF,EAAQiwF,MAChBkzE,EAAmBlzE,EAAMhgI,QAAQ22D,UACvCkK,GAAaqyI,GAAoBA,EAAiBtuH,WAAY,CAAC70C,GAAUiwF,EAC3E,CAMA,SAASyiG,GAAUn2I,GAYjB,OAXI8+G,MAAqC,kBAAT9+G,EAC9BA,EAAO/tF,SAASmkO,eAAep2I,GACtBA,GAAQA,EAAKruF,SAEtBquF,EAAOA,EAAK,IAGVA,GAAQA,EAAKmL,SAEfnL,EAAOA,EAAKmL,QAEPnL,CACT,CAEA,MAAMq2I,GAAY,CAAC,EACbC,GAAY1iO,IAChB,MAAMu3F,EAASgrI,GAAUviO,GACzB,OAAO5E,OAAOojC,OAAOikM,IAAW95M,QAAQ/iB,GAAMA,EAAE2xF,SAAWA,IAAQp0D,KAAK,EAG1E,SAASw/L,GAAgBl1N,EAAK6mD,EAAOuoJ,GACnC,MAAMp0L,EAAOrtB,OAAOqtB,KAAKhb,GACzB,IAAK,MAAMzN,KAAOyoB,EAAM,CACtB,MAAMm6M,GAAU5iO,EAChB,GAAI4iO,GAAUtuK,EAAO,CACnB,MAAMr2D,EAAQwP,EAAIzN,UACXyN,EAAIzN,IACP68M,EAAO,GAAK+lB,EAAStuK,KACvB7mD,EAAIm1N,EAAS/lB,GAAQ5+M,GAG3B,CACF,CAmBA,SAAS4kO,GAAenrI,EAAOsjH,EAAW7oF,GACxC,OAAOz6B,EAAM53F,QAAQs/L,KAAO1nG,EAAMy6B,GAAS6oF,EAAU7oF,EACvD,CAeA,MAAM2wG,GASJ,eAAOr1M,GACL85L,GAAS9mN,OAAO3C,WAChBilO,IACF,CAEA,iBAAOl1M,GACL05L,GAAS3oI,UAAU9gF,WACnBilO,IACF,CAGAv1M,WAAAA,CAAY4+D,EAAM42I,GAChB,MAAMz5I,EAAS9pF,KAAK8pF,OAAS,IAAIu3I,GAAOkC,GAClCC,EAAgBV,GAAUn2I,GAC1B82I,EAAgBR,GAASO,GAC/B,GAAIC,EACF,MAAM,IAAI11N,MACR,4CAA+C01N,EAAc70L,GAA7D,kDACgD60L,EAAc3rI,OAAOlpD,GAAK,oBAI9E,MAAMvuC,EAAUypF,EAAO0vH,eAAe1vH,EAAOk4I,oBAAqBhiO,KAAK+3F,cAEvE/3F,KAAK67H,SAAW,IAAK/xC,EAAO+xC,UCpJzB,SAAyB/jC,GAC9B,OAAK2zG,MAAiD,qBAApBi4B,iBAAmC5rI,aAAkB4rI,gBAC9E3V,GAEFgC,EACT,CD+I4C4T,CAAgBH,IACxDxjO,KAAK67H,SAASiyF,aAAahkI,GAE3B,MAAM15C,EAAUpwC,KAAK67H,SAAS8xF,eAAe6V,EAAenjO,EAAQo9C,aAC9Dq6C,EAAS1nD,GAAWA,EAAQ0nD,OAC5B7jD,EAAS6jD,GAAUA,EAAO7jD,OAC1BD,EAAQ8jD,GAAUA,EAAO9jD,MAE/Bh0C,KAAK4uC,GAAKzR,KACVn9B,KAAKgG,IAAMoqC,EACXpwC,KAAK83F,OAASA,EACd93F,KAAKg0C,MAAQA,EACbh0C,KAAKi0C,OAASA,EACdj0C,KAAK4jO,SAAWvjO,EAIhBL,KAAK6jO,aAAe7jO,KAAKy9C,YACzBz9C,KAAKwsN,QAAU,GACfxsN,KAAK8jO,UAAY,GACjB9jO,KAAKu1M,aAAUv2M,EACfgB,KAAKisN,MAAQ,GACbjsN,KAAK+hM,6BAA0B/iM,EAC/BgB,KAAKu7M,eAAYv8M,EACjBgB,KAAK2xM,QAAU,GACf3xM,KAAK+jO,gBAAa/kO,EAClBgB,KAAKw/I,WAAa,CAAC,EAEnBx/I,KAAKgkO,0BAAuBhlO,EAC5BgB,KAAKikO,gBAAkB,GACvBjkO,KAAKs+L,OAAS,CAAC,EACft+L,KAAKkkO,SAAW,IAAItF,GACpB5+N,KAAKswN,SAAW,CAAC,EACjBtwN,KAAKmkO,eAAiB,CAAC,EACvBnkO,KAAKokO,UAAW,EAChBpkO,KAAKq8M,yBAAsBr9M,EAC3BgB,KAAK+2M,cAAW/3M,EAChBgB,KAAKqkO,U1C9IF,SAA4Cj5M,EAA8BuvD,GAC/E,IAAI8wC,EACJ,OAAO,WAAyB,QAAAkvD,EAAAt8K,UAAAC,OAAb8wB,EAAW,IAAA1G,MAAAiyJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAXxrJ,EAAWwrJ,GAAAv8K,UAAAu8K,GAO5B,OANIjgG,GACF3gD,aAAayxF,GACbA,EAAU/xF,WAAWtO,EAAIuvD,EAAOvrD,IAEhChE,EAAG3sB,MAAMuB,KAAMovB,GAEVurD,CACT,CACF,C0CmIqB2pJ,EAAS16N,GAAQ5J,KAAKiR,OAAOrH,IAAOvJ,EAAQkkO,aAAe,GAC5EvkO,KAAKu9M,aAAe,GAGpBylB,GAAUhjO,KAAK4uC,IAAM5uC,KAEhBowC,GAAY0nD,GASjBq6G,GAAS3jF,OAAOxuH,KAAM,WAAY2iO,IAClCxwB,GAAS3jF,OAAOxuH,KAAM,WAAY6iO,IAElC7iO,KAAKwkO,cACDxkO,KAAKokO,UACPpkO,KAAKiR,UATLm4D,QAAQp2C,MAAM,oEAWlB,CAEA,eAAIyqB,GACF,MAAOp9C,SAAS,YAACo9C,EAAW,oBAAE0gJ,GAAoB,MAAEnqJ,EAAA,OAAOC,EAAM,aAAE4vL,GAAgB7jO,KACnF,OAAK2yL,GAAcl1I,GAKf0gJ,GAAuB0lC,EAElBA,EAIF5vL,EAASD,EAAQC,EAAS,KATxBwJ,CAUX,CAEA,QAAI9yC,GACF,OAAO3K,KAAK8pF,OAAOn/E,IACrB,CAEA,QAAIA,CAAKA,GACP3K,KAAK8pF,OAAOn/E,KAAOA,CACrB,CAEA,WAAItK,GACF,OAAOL,KAAK4jO,QACd,CAEA,WAAIvjO,CAAQA,GACVL,KAAK8pF,OAAOzpF,QAAUA,CACxB,CAEA,YAAIynN,GACF,OAAOA,EACT,CAKA0c,WAAAA,GAeE,OAbAxkO,KAAKu2N,cAAc,cAEfv2N,KAAKK,QAAQisG,WACftsG,KAAKq/L,SAEL+N,GAAYptM,KAAMA,KAAKK,QAAQ63F,kBAGjCl4F,KAAKykO,aAGLzkO,KAAKu2N,cAAc,aAEZv2N,IACT,CAEAutB,KAAAA,GAEE,OADA00K,GAAYjiM,KAAK83F,OAAQ93F,KAAKgG,KACvBhG,IACT,CAEAgnF,IAAAA,GAEE,OADAmrH,GAASnrH,KAAKhnF,MACPA,IACT,CAOAq/L,MAAAA,CAAOrrJ,EAAOC,GACPk+J,GAASV,QAAQzxM,MAGpBA,KAAK0kO,kBAAoB,CAAC1wL,QAAOC,UAFjCj0C,KAAK2kO,QAAQ3wL,EAAOC,EAIxB,CAEA0wL,OAAAA,CAAQ3wL,EAAOC,GACb,MAAM5zC,EAAUL,KAAKK,QACfy3F,EAAS93F,KAAK83F,OACdr6C,EAAcp9C,EAAQ89L,qBAAuBn+L,KAAKy9C,YAClDmnL,EAAU5kO,KAAK67H,SAAS8wE,eAAe70G,EAAQ9jD,EAAOC,EAAQwJ,GAC9DonL,EAAWxkO,EAAQ63F,kBAAoBl4F,KAAK67H,SAAS4hE,sBACrD7zL,EAAO5J,KAAKg0C,MAAQ,SAAW,SAErCh0C,KAAKg0C,MAAQ4wL,EAAQ5wL,MACrBh0C,KAAKi0C,OAAS2wL,EAAQ3wL,OACtBj0C,KAAK6jO,aAAe7jO,KAAKy9C,YACpB2vJ,GAAYptM,KAAM6kO,GAAU,KAIjC7kO,KAAKu2N,cAAc,SAAU,CAAC95L,KAAMmoM,IAEpC1jK,GAAa7gE,EAAQykO,SAAU,CAAC9kO,KAAM4kO,GAAU5kO,MAE5CA,KAAKokO,UACHpkO,KAAKqkO,UAAUz6N,IAEjB5J,KAAKi6C,SAGX,CAEA8qL,mBAAAA,GAIEz4M,GAHgBtsB,KAAKK,QACSi+L,QAAU,CAAC,GAErB,CAAC0mC,EAAa/I,KAChC+I,EAAYp2L,GAAKqtL,CAAA,GAErB,CAKAgJ,mBAAAA,GACE,MAAM5kO,EAAUL,KAAKK,QACf6kO,EAAY7kO,EAAQi+L,OACpBA,EAASt+L,KAAKs+L,OACd6mC,EAAUxpO,OAAOqtB,KAAKs1K,GAAQp0K,QAAO,CAAClc,EAAK4gC,KAC/C5gC,EAAI4gC,IAAM,EACH5gC,IACN,CAAC,GACJ,IAAIq0H,EAAQ,GAER6iG,IACF7iG,EAAQA,EAAMp3H,OACZtP,OAAOqtB,KAAKk8M,GAAWxzN,KAAKk9B,IAC1B,MAAMmxL,EAAemF,EAAUt2L,GACzBgqJ,EAAOinC,GAAcjxL,EAAImxL,GACzBqF,EAAoB,MAATxsC,EACXknB,EAAwB,MAATlnB,EACrB,MAAO,CACLv4L,QAAS0/N,EACTsF,UAAWD,EAAW,YAActlB,EAAe,SAAW,OAC9DwlB,MAAOF,EAAW,eAAiBtlB,EAAe,WAAa,SAChE,MAKPxzL,GAAK+1G,GAAQ11C,IACX,MAAMozI,EAAepzI,EAAKtsF,QACpBuuC,EAAKmxL,EAAanxL,GAClBgqJ,EAAOinC,GAAcjxL,EAAImxL,GACzBwF,EAAYzyC,GAAeitC,EAAalpM,KAAM81D,EAAK24I,YAE3BtmO,IAA1B+gO,EAAaxjJ,UAA0BgmJ,GAAqBxC,EAAaxjJ,SAAUq8G,KAAU2pC,GAAqB51I,EAAK04I,aACzHtF,EAAaxjJ,SAAWoQ,EAAK04I,WAG/BF,EAAQv2L,IAAM,EACd,IAAIqpD,EAAQ,KACZ,GAAIrpD,KAAM0vJ,GAAUA,EAAO1vJ,GAAI/X,OAAS0uM,EACtCttI,EAAQqmG,EAAO1vJ,OACV,CAELqpD,EAAQ,IADW6vH,GAAS2V,SAAS8H,GAC7B,CAAe,CACrB32L,KACA/X,KAAM0uM,EACNv/N,IAAKhG,KAAKgG,IACVq6H,MAAOrgI,OAETs+L,EAAOrmG,EAAMrpD,IAAMqpD,EAGrBA,EAAMzvF,KAAKu3N,EAAc1/N,EAAA,IAG3BisB,GAAK64M,GAAS,CAACK,EAAY52L,KACpB42L,UACIlnC,EAAO1vJ,MAIlBtiB,GAAKgyK,GAASrmG,IACZsyH,GAAQjX,UAAUtzM,KAAMi4F,EAAOA,EAAM53F,SACrCkqN,GAAQgC,OAAOvsN,KAAMi4F,EAAA,GAEzB,CAKAwtI,eAAAA,GACE,MAAMpxB,EAAWr0M,KAAK8jO,UAChB7mB,EAAUj9M,KAAK2K,KAAK6yL,SAASl/L,OAC7B0+M,EAAU3I,EAAS/1M,OAGzB,GADA+1M,EAASz8F,MAAK,CAAC3xG,EAAGC,IAAMD,EAAE5E,MAAQ6E,EAAE7E,QAChC27M,EAAUC,EAAS,CACrB,IAAK,IAAIl6M,EAAIk6M,EAASl6M,EAAIi6M,IAAWj6M,EACnC/C,KAAK0lO,oBAAoB3iO,GAE3BsxM,EAAS9yM,OAAO07M,EAASD,EAAUC,GAErCj9M,KAAKikO,gBAAkB5vB,EAASx0M,MAAM,GAAG+3G,KAAK4qH,GAAc,QAAS,SACvE,CAKAmD,2BAAAA,GACE,MAAO7B,UAAWzvB,EAAU1pM,MAAM,SAAC6yL,IAAax9L,KAC5Cq0M,EAAS/1M,OAASk/L,EAASl/L,eACtB0B,KAAKu1M,QAEdlB,EAASvzM,SAAQ,CAACigD,EAAM1/C,KACmC,IAArDm8L,EAASt0K,QAAOlmB,GAAKA,IAAM+9C,EAAK+kK,WAAUxnN,QAC5C0B,KAAK0lO,oBAAoBrkO,KAG/B,CAEAukO,wBAAAA,GACE,MAAMC,EAAiB,GACjBroC,EAAWx9L,KAAK2K,KAAK6yL,SAC3B,IAAIz6L,EAAGswL,EAIP,IAFArzL,KAAK2lO,8BAEA5iO,EAAI,EAAGswL,EAAOmK,EAASl/L,OAAQyE,EAAIswL,EAAMtwL,IAAK,CACjD,MAAMwpE,EAAUixH,EAASz6L,GACzB,IAAIg+C,EAAO/gD,KAAKu4M,eAAex1M,GAC/B,MAAM8zB,EAAO01C,EAAQ11C,MAAQ72B,KAAK8pF,OAAOjzD,KAazC,GAXIkqB,EAAKlqB,MAAQkqB,EAAKlqB,OAASA,IAC7B72B,KAAK0lO,oBAAoB3iO,GACzBg+C,EAAO/gD,KAAKu4M,eAAex1M,IAE7Bg+C,EAAKlqB,KAAOA,EACZkqB,EAAKg9I,UAAYxxH,EAAQwxH,WAAa2hC,GAAa7oM,EAAM72B,KAAKK,SAC9D0gD,EAAK1B,MAAQktB,EAAQltB,OAAS,EAC9B0B,EAAK1/C,MAAQ0B,EACbg+C,EAAKwjG,MAAQ,GAAKh4E,EAAQg4E,MAC1BxjG,EAAK0gF,QAAUzhI,KAAKgjN,iBAAiBjgN,GAEjCg+C,EAAKqjE,WACPrjE,EAAKqjE,WAAWozF,YAAYz0M,GAC5Bg+C,EAAKqjE,WAAWgzF,iBACX,CACL,MAAM0uB,EAAkBhe,GAASwV,cAAczmM,IACzC,mBAACogL,EAAA,gBAAoBC,GAAmBxpE,GAAS8vD,SAAS3mK,GAChEl7B,OAAO49C,OAAOusL,EAAiB,CAC7B5uB,gBAAiB4Q,GAASC,WAAW7Q,GACrCD,mBAAoBA,GAAsB6Q,GAASC,WAAW9Q,KAEhEl2J,EAAKqjE,WAAa,IAAI0hH,EAAgB9lO,KAAM+C,GAC5C8iO,EAAe1kO,KAAK4/C,EAAKqjE,YAE7B,CAGA,OADApkH,KAAKylO,kBACEI,CACT,CAMAE,cAAAA,GACEz5M,GAAKtsB,KAAK2K,KAAK6yL,UAAU,CAACjxH,EAASinH,KACjCxzL,KAAKu4M,eAAe/kB,GAAcpvE,WAAWz7G,OAAO,GACnD3I,KACL,CAKA2I,KAAAA,GACE3I,KAAK+lO,iBACL/lO,KAAKu2N,cAAc,QACrB,CAEAtlN,MAAAA,CAAOrH,GACL,MAAMkgF,EAAS9pF,KAAK8pF,OAEpBA,EAAO74E,SACP,MAAM5Q,EAAUL,KAAK4jO,SAAW95I,EAAO0vH,eAAe1vH,EAAOk4I,oBAAqBhiO,KAAK+3F,cACjFiuI,EAAgBhmO,KAAKq8M,qBAAuBh8M,EAAQ22D,UAU1D,GARAh3D,KAAKimO,gBACLjmO,KAAKkmO,sBACLlmO,KAAKmmO,uBAILnmO,KAAKkkO,SAASnF,cAEuD,IAAjE/+N,KAAKu2N,cAAc,eAAgB,CAAC3sN,OAAM4hD,YAAY,IACxD,OAIF,MAAMq6K,EAAiB7lO,KAAK4lO,2BAE5B5lO,KAAKu2N,cAAc,wBAGnB,IAAI5J,EAAa,EACjB,IAAK,IAAI5pN,EAAI,EAAGswL,EAAOrzL,KAAK2K,KAAK6yL,SAASl/L,OAAQyE,EAAIswL,EAAMtwL,IAAK,CAC/D,MAAM,WAACqhH,GAAcpkH,KAAKu4M,eAAex1M,GACnC4F,GAASq9N,IAAyD,IAAxCH,EAAevkO,QAAQ8iH,GAGvDA,EAAW40F,sBAAsBrwM,GACjCgkN,EAAax/M,KAAK0D,KAAKuzG,EAAW62F,iBAAkB0R,EACtD,CACAA,EAAa3sN,KAAKomO,YAAc/lO,EAAQwqN,OAAOrrB,YAAcmtB,EAAa,EAC1E3sN,KAAKqmO,cAAc1Z,GAGdqZ,GAGH15M,GAAKu5M,GAAiBzhH,IACpBA,EAAWz7G,OAAO,IAItB3I,KAAKsmO,gBAAgB18N,GAGrB5J,KAAKu2N,cAAc,cAAe,CAAC3sN,SAEnC5J,KAAKwsN,QAAQ50G,KAAK4qH,GAAc,IAAK,SAGrC,MAAM,QAAC7wB,EAAO,WAAEoyB,GAAc/jO,KAC1B+jO,EACF/jO,KAAKumO,cAAcxC,GAAY,GACtBpyB,EAAQrzM,QACjB0B,KAAKwmO,mBAAmB70B,EAASA,GAAS,GAG5C3xM,KAAKi6C,QACP,CAKAgsL,aAAAA,GACE35M,GAAKtsB,KAAKs+L,QAASrmG,IACjBsyH,GAAQkC,UAAUzsN,KAAMi4F,EAAA,IAG1Bj4F,KAAK+kO,sBACL/kO,KAAKilO,qBACP,CAKAiB,mBAAAA,GACE,MAAM7lO,EAAUL,KAAKK,QACfomO,EAAiB,IAAI9zM,IAAIh3B,OAAOqtB,KAAKhpB,KAAKw/I,aAC1CknF,EAAY,IAAI/zM,IAAItyB,EAAQJ,QAE7Bu0L,GAAUiyC,EAAgBC,MAAgB1mO,KAAKgkO,uBAAyB3jO,EAAQisG,aAEnFtsG,KAAK2mO,eACL3mO,KAAKykO,aAET,CAKA0B,oBAAAA,GACE,MAAM,eAAChC,GAAkBnkO,KACnB4mO,EAAU5mO,KAAK6mO,0BAA4B,GACjD,IAAK,MAAM,OAAC7zI,EAAM,MAAEn+B,EAAA,MAAO5jB,KAAU21L,EAAS,CAE5C1D,GAAgBiB,EAAgBtvK,EADR,oBAAXm+B,GAAgC/hD,EAAQA,EAEvD,CACF,CAKA41L,sBAAAA,GACE,MAAMtpB,EAAev9M,KAAKu9M,aAC1B,IAAKA,IAAiBA,EAAaj/M,OACjC,OAGF0B,KAAKu9M,aAAe,GACpB,MAAMupB,EAAe9mO,KAAK2K,KAAK6yL,SAASl/L,OAClCyoO,EAAW95G,GAAQ,IAAIt6F,IAC3B4qL,EACGr0L,QAAO/iB,GAAKA,EAAE,KAAO8mH,IACrBv7G,KAAI,CAACvL,EAAGpD,IAAMA,EAAI,IAAMoD,EAAE5E,OAAO,GAAG+N,KAAK,QAGxC03N,EAAYD,EAAQ,GAC1B,IAAK,IAAIhkO,EAAI,EAAGA,EAAI+jO,EAAc/jO,IAChC,IAAKyxL,GAAUwyC,EAAWD,EAAQhkO,IAChC,OAGJ,OAAO2lB,MAAM46D,KAAK0jJ,GACft1N,KAAIvL,GAAKA,EAAEqxC,MAAM,OACjB9lC,KAAIzL,IAAA,CAAO+sF,OAAQ/sF,EAAE,GAAI4uD,OAAQ5uD,EAAE,GAAIgrC,OAAQhrC,EAAE,MACtD,CAOAogO,aAAAA,CAAc1Z,GACZ,IAA+D,IAA3D3sN,KAAKu2N,cAAc,eAAgB,CAAC/qK,YAAY,IAClD,OAGF++J,GAAQt5M,OAAOjR,KAAMA,KAAKg0C,MAAOh0C,KAAKi0C,OAAQ04K,GAE9C,MAAMjsK,EAAO1gD,KAAKu7M,UACZ0rB,EAASvmL,EAAK1M,OAAS,GAAK0M,EAAKzM,QAAU,EAEjDj0C,KAAKwsN,QAAU,GACflgM,GAAKtsB,KAAKisN,OAAQ3f,IACZ26B,GAA2B,cAAjB36B,EAAI/vH,WAOd+vH,EAAIgH,WACNhH,EAAIgH,YAENtzM,KAAKwsN,QAAQrrN,QAAQmrM,EAAIkgB,WAAU,GAClCxsN,MAEHA,KAAKwsN,QAAQ1rN,SAAQ,CAAC6rF,EAAMtrF,KAC1BsrF,EAAKu6I,KAAO7lO,CAAA,IAGdrB,KAAKu2N,cAAc,cACrB,CAOA+P,eAAAA,CAAgB18N,GACd,IAA6E,IAAzE5J,KAAKu2N,cAAc,uBAAwB,CAAC3sN,OAAM4hD,YAAY,IAAlE,CAIA,IAAK,IAAIzoD,EAAI,EAAGswL,EAAOrzL,KAAK2K,KAAK6yL,SAASl/L,OAAQyE,EAAIswL,IAAQtwL,EAC5D/C,KAAKu4M,eAAex1M,GAAGqhH,WAAWkvF,YAGpC,IAAK,IAAIvwM,EAAI,EAAGswL,EAAOrzL,KAAK2K,KAAK6yL,SAASl/L,OAAQyE,EAAIswL,IAAQtwL,EAC5D/C,KAAKmnO,eAAepkO,EAAG4qB,GAAW/jB,GAAQA,EAAK,CAAC4pL,aAAczwL,IAAM6G,GAGtE5J,KAAKu2N,cAAc,sBAAuB,CAAC3sN,SAC7C,CAOAu9N,cAAAA,CAAe9lO,EAAOuI,GACpB,MAAMm3C,EAAO/gD,KAAKu4M,eAAel3M,GAC3B+tB,EAAO,CAAC2xB,OAAM1/C,QAAOuI,OAAM4hD,YAAY,IAEW,IAApDxrD,KAAKu2N,cAAc,sBAAuBnnM,KAI9C2xB,EAAKqjE,WAAWotF,QAAQ5nM,GAExBwlB,EAAKo8B,YAAa,EAClBxrD,KAAKu2N,cAAc,qBAAsBnnM,GAC3C,CAEA6qB,MAAAA,IACiE,IAA3Dj6C,KAAKu2N,cAAc,eAAgB,CAAC/qK,YAAY,MAIhD2mJ,GAASlvK,IAAIjjC,MACXA,KAAKokO,WAAajyB,GAASV,QAAQzxM,OACrCmyM,GAASt9I,MAAM70D,OAGjBA,KAAK0xM,OACLixB,GAAqB,CAACtiG,MAAOrgI,QAEjC,CAEA0xM,IAAAA,GACE,IAAI3uM,EACJ,GAAI/C,KAAK0kO,kBAAmB,CAC1B,MAAM,MAAC1wL,EAAA,OAAOC,GAAUj0C,KAAK0kO,kBAE7B1kO,KAAK0kO,kBAAoB,KACzB1kO,KAAK2kO,QAAQ3wL,EAAOC,GAItB,GAFAj0C,KAAKutB,QAEDvtB,KAAKg0C,OAAS,GAAKh0C,KAAKi0C,QAAU,EACpC,OAGF,IAA6D,IAAzDj0C,KAAKu2N,cAAc,aAAc,CAAC/qK,YAAY,IAChD,OAMF,MAAM47K,EAASpnO,KAAKwsN,QACpB,IAAKzpN,EAAI,EAAGA,EAAIqkO,EAAO9oO,QAAU8oO,EAAOrkO,GAAGia,GAAK,IAAKja,EACnDqkO,EAAOrkO,GAAG2uM,KAAK1xM,KAAKu7M,WAMtB,IAHAv7M,KAAKqnO,gBAGEtkO,EAAIqkO,EAAO9oO,SAAUyE,EAC1BqkO,EAAOrkO,GAAG2uM,KAAK1xM,KAAKu7M,WAGtBv7M,KAAKu2N,cAAc,YACrB,CAKAjiB,sBAAAA,CAAuBF,GACrB,MAAMC,EAAWr0M,KAAKikO,gBAChBp0M,EAAS,GACf,IAAI9sB,EAAGswL,EAEP,IAAKtwL,EAAI,EAAGswL,EAAOghB,EAAS/1M,OAAQyE,EAAIswL,IAAQtwL,EAAG,CACjD,MAAMg+C,EAAOszJ,EAAStxM,GACjBqxM,IAAiBrzJ,EAAK0gF,SACzB5xG,EAAO1uB,KAAK4/C,EAEhB,CAEA,OAAOlxB,CACT,CAMAg5L,4BAAAA,GACE,OAAO7oN,KAAKs0M,wBAAuB,EACrC,CAOA+yB,aAAAA,GACE,IAAqE,IAAjErnO,KAAKu2N,cAAc,qBAAsB,CAAC/qK,YAAY,IACxD,OAGF,MAAM6oJ,EAAWr0M,KAAK6oN,+BACtB,IAAK,IAAI9lN,EAAIsxM,EAAS/1M,OAAS,EAAGyE,GAAK,IAAKA,EAC1C/C,KAAKsnO,aAAajzB,EAAStxM,IAG7B/C,KAAKu2N,cAAc,oBACrB,CAOA+Q,YAAAA,CAAavmL,GACX,MAAM/6C,EAAMhG,KAAKgG,IACX25L,EAAO5+I,EAAKq6J,MACZmsB,GAAW5nC,EAAKxjJ,SAChBuE,EAzrBV,SAAwBK,EAAMw6J,GAC5B,MAAM,OAACriB,EAAA,OAAQC,GAAUp4I,EACzB,OAAIm4I,GAAUC,EACL,CACL7yL,KAAM88N,GAAelqC,EAAQqiB,EAAW,QACxCh1M,MAAO68N,GAAelqC,EAAQqiB,EAAW,SACzCzlJ,IAAKstK,GAAejqC,EAAQoiB,EAAW,OACvCl8H,OAAQ+jJ,GAAejqC,EAAQoiB,EAAW,WAGvCA,CACT,CA8qBiBisB,CAAezmL,EAAM/gD,KAAKu7M,WACjCnsL,EAAO,CACX2xB,OACA1/C,MAAO0/C,EAAK1/C,MACZmqD,YAAY,IAGwC,IAAlDxrD,KAAKu2N,cAAc,oBAAqBnnM,KAIxCm4M,GACFpkC,GAASn9L,EAAK,CACZM,MAAoB,IAAdq5L,EAAKr5L,KAAiB,EAAIo6C,EAAKp6C,KAAOq5L,EAAKr5L,KACjDC,OAAsB,IAAfo5L,EAAKp5L,MAAkBvG,KAAKg0C,MAAQ0M,EAAKn6C,MAAQo5L,EAAKp5L,MAC7DuvD,KAAkB,IAAb6pI,EAAK7pI,IAAgB,EAAIpV,EAAKoV,IAAM6pI,EAAK7pI,IAC9CupB,QAAwB,IAAhBsgH,EAAKtgH,OAAmBr/E,KAAKi0C,OAASyM,EAAK2+B,OAASsgH,EAAKtgH,SAIrEt+B,EAAKqjE,WAAWstF,OAEZ61B,GACFnkC,GAAWp9L,GAGbopB,EAAKo8B,YAAa,EAClBxrD,KAAKu2N,cAAc,mBAAoBnnM,GACzC,CAOA45L,aAAAA,CAAc9lB,GACZ,OAAOD,GAAeC,EAAOljM,KAAKu7M,UAAWv7M,KAAKomO,YACpD,CAEAqB,yBAAAA,CAA0BloO,EAAGqK,EAAMvJ,EAAS0oN,GAC1C,MAAM/1H,EAAS+2H,GAAYC,MAAMpgN,GACjC,MAAsB,oBAAXopF,EACFA,EAAOhzF,KAAMT,EAAGc,EAAS0oN,GAG3B,EACT,CAEAxQ,cAAAA,CAAe/kB,GACb,MAAMjnH,EAAUvsE,KAAK2K,KAAK6yL,SAAShK,GAC7B6gB,EAAWr0M,KAAK8jO,UACtB,IAAI/iL,EAAOszJ,EAASnrL,QAAOlmB,GAAKA,GAAKA,EAAE8iN,WAAav5I,IAAS7oC,MAoB7D,OAlBKqd,IACHA,EAAO,CACLlqB,KAAM,KACNlsB,KAAM,GACN4hE,QAAS,KACT63C,WAAY,KACZq0C,OAAQ,KACRm/C,QAAS,KACTE,QAAS,KACTz4J,MAAOktB,GAAWA,EAAQltB,OAAS,EACnCh+C,MAAOmyL,EACPsyB,SAAUv5I,EACVosH,QAAS,GACTF,SAAS,GAEX4b,EAASlzM,KAAK4/C,IAGTA,CACT,CAEAg3C,UAAAA,GACE,OAAO/3F,KAAK+2M,WAAa/2M,KAAK+2M,SAAWl0G,GAAc,KAAM,CAACw9B,MAAOrgI,KAAM62B,KAAM,UACnF,CAEA+vL,sBAAAA,GACE,OAAO5mN,KAAK6oN,+BAA+BvqN,MAC7C,CAEA0kN,gBAAAA,CAAiBxvB,GACf,MAAMjnH,EAAUvsE,KAAK2K,KAAK6yL,SAAShK,GACnC,IAAKjnH,EACH,OAAO,EAGT,MAAMxrB,EAAO/gD,KAAKu4M,eAAe/kB,GAIjC,MAA8B,mBAAhBzyI,EAAK03G,QAAwB13G,EAAK03G,QAAUlsF,EAAQksF,MACpE,CAEAivE,oBAAAA,CAAqBl0C,EAAc/xD,GACpBzhI,KAAKu4M,eAAe/kB,GAC5B/6B,QAAUh3B,CACjB,CAEAmkF,oBAAAA,CAAqBvkN,GACnBrB,KAAKmkO,eAAe9iO,IAAUrB,KAAKmkO,eAAe9iO,EACpD,CAEAkgN,iBAAAA,CAAkBlgN,GAChB,OAAQrB,KAAKmkO,eAAe9iO,EAC9B,CAKAsmO,iBAAAA,CAAkBn0C,EAAc/9I,EAAWgsF,GACzC,MAAM73H,EAAO63H,EAAU,OAAS,OAC1B1gF,EAAO/gD,KAAKu4M,eAAe/kB,GAC3B2d,EAAQpwJ,EAAKqjE,WAAW43F,wBAAmBh9M,EAAW4K,GAExD2qL,GAAQ9+I,IACVsL,EAAKp2C,KAAK8qC,GAAWgjH,QAAUh3B,EAC/BzhI,KAAKiR,WAELjR,KAAK0nO,qBAAqBl0C,EAAc/xD,GAExC0vE,EAAMlgM,OAAO8vC,EAAM,CAAC0gF,YACpBzhI,KAAKiR,QAAQjL,GAAQA,EAAIwtL,eAAiBA,EAAe5pL,OAAO5K,IAEpE,CAEAugM,IAAAA,CAAK/L,EAAc/9I,GACjBz1C,KAAK2nO,kBAAkBn0C,EAAc/9I,GAAW,EAClD,CAEA44G,IAAAA,CAAKmlC,EAAc/9I,GACjBz1C,KAAK2nO,kBAAkBn0C,EAAc/9I,GAAW,EAClD,CAKAiwL,mBAAAA,CAAoBlyC,GAClB,MAAMzyI,EAAO/gD,KAAK8jO,UAAUtwC,GACxBzyI,GAAQA,EAAKqjE,YACfrjE,EAAKqjE,WAAW+6D,kBAEXn/K,KAAK8jO,UAAUtwC,EACxB,CAEAo0C,KAAAA,GACE,IAAI7kO,EAAGswL,EAIP,IAHArzL,KAAKgnF,OACLmrH,GAAShzH,OAAOn/E,MAEX+C,EAAI,EAAGswL,EAAOrzL,KAAK2K,KAAK6yL,SAASl/L,OAAQyE,EAAIswL,IAAQtwL,EACxD/C,KAAK0lO,oBAAoB3iO,EAE7B,CAEAuqB,OAAAA,GACEttB,KAAKu2N,cAAc,iBACnB,MAAM,OAACz+H,EAAM,IAAE9xF,GAAOhG,KAEtBA,KAAK4nO,QACL5nO,KAAK8pF,OAAO23I,aAER3pI,IACF93F,KAAK2mO,eACL1kC,GAAYnqG,EAAQ9xF,GACpBhG,KAAK67H,SAAS+xF,eAAe5nN,GAC7BhG,KAAK83F,OAAS,KACd93F,KAAKgG,IAAM,aAGNg9N,GAAUhjO,KAAK4uC,IAEtB5uC,KAAKu2N,cAAc,eACrB,CAEAsR,aAAAA,GACE,OAAO7nO,KAAK83F,OAAOxD,aAAaj2F,UAClC,CAKAomO,UAAAA,GACEzkO,KAAK8nO,iBACD9nO,KAAKK,QAAQisG,WACftsG,KAAK+nO,uBAEL/nO,KAAKokO,UAAW,CAEpB,CAKA0D,cAAAA,GACE,MAAMv1K,EAAYvyD,KAAKw/I,WACjB3jB,EAAW77H,KAAK67H,SAEhBmsG,EAAOA,CAACnxM,EAAM51B,KAClB46H,EAAS58H,iBAAiBe,KAAM62B,EAAM51B,GACtCsxD,EAAU17B,GAAQ51B,CAAA,EAGdA,EAAWA,CAAC1B,EAAGyD,EAAGoD,KACtB7G,EAAEgtM,QAAUvpM,EACZzD,EAAEitM,QAAUpmM,EACZpG,KAAKumO,cAAchnO,EAAA,EAGrB+sB,GAAKtsB,KAAKK,QAAQJ,QAAS42B,GAASmxM,EAAKnxM,EAAM51B,IACjD,CAKA8mO,oBAAAA,GACO/nO,KAAKgkO,uBACRhkO,KAAKgkO,qBAAuB,CAAC,GAE/B,MAAMzxK,EAAYvyD,KAAKgkO,qBACjBnoG,EAAW77H,KAAK67H,SAEhBmsG,EAAOA,CAACnxM,EAAM51B,KAClB46H,EAAS58H,iBAAiBe,KAAM62B,EAAM51B,GACtCsxD,EAAU17B,GAAQ51B,CAAA,EAEdgnO,EAAUA,CAACpxM,EAAM51B,KACjBsxD,EAAU17B,KACZglG,EAAS38H,oBAAoBc,KAAM62B,EAAM51B,UAClCsxD,EAAU17B,KAIf51B,EAAWA,CAAC+yC,EAAOC,KACnBj0C,KAAK83F,QACP93F,KAAKq/L,OAAOrrJ,EAAOC,IAIvB,IAAIi0L,EACJ,MAAM9D,EAAWA,KACf6D,EAAQ,SAAU7D,GAElBpkO,KAAKokO,UAAW,EAChBpkO,KAAKq/L,SAEL2oC,EAAK,SAAU/mO,GACf+mO,EAAK,SAAUE,EAAA,EAGjBA,EAAWA,KACTloO,KAAKokO,UAAW,EAEhB6D,EAAQ,SAAUhnO,GAGlBjB,KAAK4nO,QACL5nO,KAAK2kO,QAAQ,EAAG,GAEhBqD,EAAK,SAAU5D,EAAA,EAGbvoG,EAASgyF,WAAW7tN,KAAK83F,QAC3BssI,IAEA8D,GAEJ,CAKAvB,YAAAA,GACEr6M,GAAKtsB,KAAKw/I,YAAY,CAACv+I,EAAU41B,KAC/B72B,KAAK67H,SAAS38H,oBAAoBc,KAAM62B,EAAM51B,EAAA,IAEhDjB,KAAKw/I,WAAa,CAAC,EAEnBlzH,GAAKtsB,KAAKgkO,sBAAsB,CAAC/iO,EAAU41B,KACzC72B,KAAK67H,SAAS38H,oBAAoBc,KAAM62B,EAAM51B,EAAA,IAEhDjB,KAAKgkO,0BAAuBhlO,CAC9B,CAEAmpO,gBAAAA,CAAiB9lG,EAAOz4H,EAAM0nN,GAC5B,MAAMzqB,EAASyqB,EAAU,MAAQ,SACjC,IAAIvwK,EAAM4rC,EAAM5pF,EAAGswL,EAOnB,IALa,YAATzpL,IACFm3C,EAAO/gD,KAAKu4M,eAAel2E,EAAM,GAAGmxD,cACpCzyI,EAAKqjE,WAAW,IAAMyiF,EAAS,wBAG5B9jM,EAAI,EAAGswL,EAAOhxD,EAAM/jI,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAC9C4pF,EAAO01C,EAAMt/H,GACb,MAAMqhH,EAAaz3B,GAAQ3sF,KAAKu4M,eAAe5rH,EAAK6mG,cAAcpvE,WAC9DA,GACFA,EAAWyiF,EAAS,cAAcl6G,EAAK7jE,QAAS6jE,EAAK6mG,aAAc7mG,EAAKtrF,MAE5E,CACF,CAMA+mO,iBAAAA,GACE,OAAOpoO,KAAK2xM,SAAW,EACzB,CAMA02B,iBAAAA,CAAkBC,GAChB,MAAMC,EAAavoO,KAAK2xM,SAAW,GAC7BpvE,EAAS+lG,EAAe52N,KAAIumH,IAA2B,IAA1B,aAACu7D,EAAY,MAAEnyL,GAAM42H,EACtD,MAAMl3E,EAAO/gD,KAAKu4M,eAAe/kB,GACjC,IAAKzyI,EACH,MAAM,IAAIhzC,MAAM,6BAA+BylL,GAGjD,MAAO,CACLA,eACA1qK,QAASi4B,EAAKp2C,KAAKtJ,GACnBA,QACD,KAEc6xL,GAAe3wD,EAAQgmG,KAGtCvoO,KAAK2xM,QAAUpvE,EAEfviI,KAAK+jO,WAAa,KAClB/jO,KAAKwmO,mBAAmBjkG,EAAQgmG,GAEpC,CAWAhS,aAAAA,CAAcsI,EAAMzvM,EAAMlG,GACxB,OAAOlpB,KAAKkkO,SAASziD,OAAOzhL,KAAM6+N,EAAMzvM,EAAMlG,EAChD,CAOAquL,eAAAA,CAAgBixB,GACd,OAA6E,IAAtExoO,KAAKkkO,SAASnmB,OAAO70L,QAAOwmB,GAAKA,EAAE6sH,OAAO3tH,KAAO45L,IAAUlqO,MACpE,CAKAkoO,kBAAAA,CAAmBjkG,EAAQgmG,EAAYE,GACrC,MAAMC,EAAe1oO,KAAKK,QAAQs9L,MAC5ByqB,EAAOA,CAACniN,EAAGC,IAAMD,EAAEijB,QAAOlmB,IAAMkD,EAAE8vF,MAAK5vF,GAAKpD,EAAEwwL,eAAiBptL,EAAEotL,cAAgBxwL,EAAE3B,QAAU+E,EAAE/E,UAC/FsnO,EAAcvgB,EAAKmgB,EAAYhmG,GAC/BqmG,EAAYH,EAASlmG,EAAS6lF,EAAK7lF,EAAQgmG,GAE7CI,EAAYrqO,QACd0B,KAAKmoO,iBAAiBQ,EAAaD,EAAa9+N,MAAM,GAGpDg/N,EAAUtqO,QAAUoqO,EAAa9+N,MACnC5J,KAAKmoO,iBAAiBS,EAAWF,EAAa9+N,MAAM,EAExD,CAKA28N,aAAAA,CAAchnO,EAAGkpO,GACf,MAAMr5M,EAAO,CACXvuB,MAAOtB,EACPkpO,SACAj9K,YAAY,EACZq9K,YAAa7oO,KAAKgpN,cAAczpN,IAE5BupO,EAAevsE,IAAYA,EAAOl8J,QAAQJ,QAAUD,KAAKK,QAAQJ,QAAQ85C,SAASx6C,EAAEswN,OAAOh5L,MAEjG,IAA6D,IAAzD72B,KAAKu2N,cAAc,cAAennM,EAAM05M,GAC1C,OAGF,MAAMpvC,EAAU15L,KAAK+oO,aAAaxpO,EAAGkpO,EAAQr5M,EAAKy5M,aASlD,OAPAz5M,EAAKo8B,YAAa,EAClBxrD,KAAKu2N,cAAc,aAAcnnM,EAAM05M,IAEnCpvC,GAAWtqK,EAAKsqK,UAClB15L,KAAKi6C,SAGAj6C,IACT,CAUA+oO,YAAAA,CAAaxpO,EAAGkpO,EAAQI,GACtB,MAAOl3B,QAAS42B,EAAa,GAAE,QAAEloO,GAAWL,KAetC+oN,EAAmB0f,EACnBlmG,EAASviI,KAAKgpO,mBAAmBzpO,EAAGgpO,EAAYM,EAAa9f,GAC7DkgB,E7CxzBH,SAAuB1pO,GAC5B,MAAkB,YAAXA,EAAEs3B,MAAiC,UAAXt3B,EAAEs3B,MAA+B,gBAAXt3B,EAAEs3B,IACzD,C6CszBoBqyM,CAAc3pO,GACxB4pO,EAznCV,SAA4B5pO,EAAG4pO,EAAWN,EAAaI,GACrD,OAAKJ,GAA0B,aAAXtpO,EAAEs3B,KAGlBoyM,EACKE,EAEF5pO,EALE,IAMX,CAinCsB6pO,CAAmB7pO,EAAGS,KAAK+jO,WAAY8E,EAAaI,GAElEJ,IAGF7oO,KAAK+jO,WAAa,KAGlB7iK,GAAa7gE,EAAQ+9L,QAAS,CAAC7+L,EAAGgjI,EAAQviI,MAAOA,MAE7CipO,GACF/nK,GAAa7gE,EAAQutE,QAAS,CAACruE,EAAGgjI,EAAQviI,MAAOA,OAIrD,MAAM05L,GAAWxG,GAAe3wD,EAAQgmG,GAQxC,OAPI7uC,GAAW+uC,KACbzoO,KAAK2xM,QAAUpvE,EACfviI,KAAKwmO,mBAAmBjkG,EAAQgmG,EAAYE,IAG9CzoO,KAAK+jO,WAAaoF,EAEXzvC,CACT,CAUAsvC,kBAAAA,CAAmBzpO,EAAGgpO,EAAYM,EAAa9f,GAC7C,GAAe,aAAXxpN,EAAEs3B,KACJ,MAAO,GAGT,IAAKgyM,EAEH,OAAON,EAGT,MAAMG,EAAe1oO,KAAKK,QAAQs9L,MAClC,OAAO39L,KAAKynO,0BAA0BloO,EAAGmpO,EAAa9+N,KAAM8+N,EAAc3f,EAC5E,EAIF,SAASua,KACP,OAAOh3M,GAAK+2M,GAAML,WAAY3iG,GAAUA,EAAM6jG,SAASnF,cACzD,CE1uCA,SAASsK,GAAkBhxI,EAAiBqqH,EAAqBC,EAAqB2mB,GACpF,MAAMlkM,EARR,SAAyB5mC,GACvB,OAAOgnM,GAAkBhnM,EAAO,CAAC,aAAc,WAAY,aAAc,YAC3E,CAMY+qO,CAAgBlxI,EAAIh4F,QAAQ8lK,cAChCqjE,GAAiB7mB,EAAcD,GAAe,EAC9C+mB,EAAat8N,KAAK4D,IAAIy4N,EAAeF,EAAa5mB,EAAc,GAShEgnB,EAAqBjhN,IACzB,MAAMkhN,GAAiBhnB,EAAcx1M,KAAK4D,IAAIy4N,EAAe/gN,IAAQ6gN,EAAa,EAClF,OAAOryC,GAAYxuK,EAAK,EAAGtb,KAAK4D,IAAIy4N,EAAeG,GAAA,EAGrD,MAAO,CACLC,WAAYF,EAAkBtkM,EAAEwkM,YAChCC,SAAUH,EAAkBtkM,EAAEykM,UAC9BC,WAAY7yC,GAAY7xJ,EAAE0kM,WAAY,EAAGL,GACzCM,SAAU9yC,GAAY7xJ,EAAE2kM,SAAU,EAAGN,GAEzC,CAKA,SAASO,GAAWp/L,EAAWq/L,EAAejnO,EAAWoD,GACvD,MAAO,CACLpD,EAAGA,EAAI4nC,EAAIz9B,KAAK+wJ,IAAI+rE,GACpB7jO,EAAGA,EAAIwkC,EAAIz9B,KAAK4H,IAAIk1N,GAExB,CAiBA,SAASC,GACPlkO,EACA8iB,EACAnkB,EACAu+M,EACApuJ,EACAwyJ,GAEA,MAAM,EAACtkN,EAAA,EAAGoD,EAAGw9M,WAAY/uJ,EAAK,YAAEs1K,EAAaznB,YAAa0nB,GAAUthN,EAE9D65L,EAAcx1M,KAAK0D,IAAIiY,EAAQ65L,YAAcO,EAAUv+M,EAASwlO,EAAa,GAC7EznB,EAAc0nB,EAAS,EAAIA,EAASlnB,EAAUv+M,EAASwlO,EAAc,EAE3E,IAAIE,EAAgB,EACpB,MAAM7hH,EAAQ1zD,EAAMD,EAEpB,GAAIquJ,EAAS,CAIX,MAEMonB,IAFuBF,EAAS,EAAIA,EAASlnB,EAAU,IAChCP,EAAc,EAAIA,EAAcO,EAAU,IACI,EAE3EmnB,GAAiB7hH,GAD4B,IAAvB8hH,EAA2B9hH,EAAS8hH,GAAuBA,EAAqBpnB,GAAW16F,IACvE,EAG5C,MACM+hH,GAAe/hH,EADRr7G,KAAK0D,IAAI,KAAO23G,EAAQm6F,EAAch+M,EAAS2zF,IAAMqqH,GAC7B,EAC/BiB,EAAa/uJ,EAAQ01K,EAAcF,EACnCxmB,EAAW/uJ,EAAMy1K,EAAcF,GAC/B,WAACT,EAAA,SAAYC,EAAA,WAAUC,EAAU,SAAEC,GAAYV,GAAkBvgN,EAAS45L,EAAaC,EAAakB,EAAWD,GAE/G4mB,EAA2B7nB,EAAcinB,EACzCa,EAAyB9nB,EAAcknB,EACvCa,EAA0B9mB,EAAagmB,EAAaY,EACpDG,EAAwB9mB,EAAWgmB,EAAWY,EAE9CG,EAA2BloB,EAAconB,EACzCe,EAAyBnoB,EAAcqnB,EACvCe,EAA0BlnB,EAAakmB,EAAac,EACpDG,EAAwBlnB,EAAWkmB,EAAWc,EAIpD,GAFA7kO,EAAIivF,YAEAqyH,EAAU,CAEZ,MAAM0jB,GAAyBN,EAA0BC,GAAyB,EAKlF,GAJA3kO,EAAIqyF,IAAIr1F,EAAGoD,EAAGu8M,EAAa+nB,EAAyBM,GACpDhlO,EAAIqyF,IAAIr1F,EAAGoD,EAAGu8M,EAAaqoB,EAAuBL,GAG9Cd,EAAW,EAAG,CAChB,MAAMoB,EAAUjB,GAAWS,EAAwBE,EAAuB3nO,EAAGoD,GAC7EJ,EAAIqyF,IAAI4yI,EAAQjoO,EAAGioO,EAAQ7kO,EAAGyjO,EAAUc,EAAuB9mB,EAAW/uB,IAI5E,MAAMo2C,EAAKlB,GAAWa,EAAwBhnB,EAAU7gN,EAAGoD,GAI3D,GAHAJ,EAAImvF,OAAO+1I,EAAGloO,EAAGkoO,EAAG9kO,GAGhB2jO,EAAW,EAAG,CAChB,MAAMkB,EAAUjB,GAAWa,EAAwBE,EAAuB/nO,EAAGoD,GAC7EJ,EAAIqyF,IAAI4yI,EAAQjoO,EAAGioO,EAAQ7kO,EAAG2jO,EAAUlmB,EAAW/uB,GAASi2C,EAAwB59N,KAAKmrF,IAI3F,MAAM6yI,GAA0BtnB,EAAYkmB,EAAWrnB,GAAiBkB,EAAckmB,EAAapnB,IAAiB,EAKpH,GAJA18M,EAAIqyF,IAAIr1F,EAAGoD,EAAGs8M,EAAamB,EAAYkmB,EAAWrnB,EAAcyoB,GAAuB,GACvFnlO,EAAIqyF,IAAIr1F,EAAGoD,EAAGs8M,EAAayoB,EAAuBvnB,EAAckmB,EAAapnB,GAAc,GAGvFonB,EAAa,EAAG,CAClB,MAAMmB,EAAUjB,GAAWY,EAA0BE,EAAyB9nO,EAAGoD,GACjFJ,EAAIqyF,IAAI4yI,EAAQjoO,EAAGioO,EAAQ7kO,EAAG0jO,EAAYgB,EAA0B39N,KAAKmrF,GAAIsrH,EAAa9uB,IAI5F,MAAMs2C,EAAKpB,GAAWQ,EAA0B5mB,EAAY5gN,EAAGoD,GAI/D,GAHAJ,EAAImvF,OAAOi2I,EAAGpoO,EAAGooO,EAAGhlO,GAGhBwjO,EAAa,EAAG,CAClB,MAAMqB,EAAUjB,GAAWQ,EAA0BE,EAAyB1nO,EAAGoD,GACjFJ,EAAIqyF,IAAI4yI,EAAQjoO,EAAGioO,EAAQ7kO,EAAGwjO,EAAYhmB,EAAa9uB,GAAS41C,QAE7D,CACL1kO,EAAIkvF,OAAOlyF,EAAGoD,GAEd,MAAMilO,EAAcl+N,KAAK+wJ,IAAIwsE,GAA2B/nB,EAAc3/M,EAChEsoO,EAAcn+N,KAAK4H,IAAI21N,GAA2B/nB,EAAcv8M,EACtEJ,EAAImvF,OAAOk2I,EAAaC,GAExB,MAAMC,EAAYp+N,KAAK+wJ,IAAIysE,GAAyBhoB,EAAc3/M,EAC5DwoO,EAAYr+N,KAAK4H,IAAI41N,GAAyBhoB,EAAcv8M,EAClEJ,EAAImvF,OAAOo2I,EAAWC,GAGxBxlO,EAAIqvF,WACN,CAyBA,SAASimI,GACPt1N,EACA8iB,EACAnkB,EACAu+M,EACAoE,GAEA,MAAM,YAACmkB,EAAA,WAAa7nB,EAAA,cAAYd,EAAa,QAAEziN,GAAWyoB,GACpD,YAACk6K,EAAA,gBAAa6N,EAAA,WAAiBF,EAAU,iBAAEC,GAAoBvwM,EAC/Dw1F,EAAgC,UAAxBx1F,EAAQ+kN,YAEtB,IAAKpiB,EACH,OAGFh9L,EAAIo1N,YAAYzqB,GAAc,IAC9B3qM,EAAIq1N,eAAiBzqB,EAEjB/6G,GACF7vF,EAAIyuF,UAA0B,EAAduuG,EAChBh9L,EAAI0lO,SAAW76B,GAAmB,UAElC7qM,EAAIyuF,UAAYuuG,EAChBh9L,EAAI0lO,SAAW76B,GAAmB,SAGpC,IAAIgT,EAAW/6L,EAAQ+6L,SACvB,GAAI4nB,EAAa,CACfvB,GAAQlkO,EAAK8iB,EAASnkB,EAAQu+M,EAASW,EAAUyD,GACjD,IAAK,IAAIvkN,EAAI,EAAGA,EAAI0oO,IAAe1oO,EACjCiD,EAAIsvF,SAEDpjE,MAAM4wL,KACTe,EAAWD,GAAcd,EAAgBruB,IAAOA,KAIhD5+F,GA7ON,SAAiB7vF,EAA+B8iB,EAAqB+6L,GACnE,MAAM,WAACD,EAAA,YAAYumB,EAAA,EAAannO,EAAA,EAAGoD,EAAA,YAAGu8M,EAAA,YAAaD,GAAe55L,EAClE,IAAI6iN,EAAcxB,EAAcxnB,EAIhC38M,EAAIivF,YACJjvF,EAAIqyF,IAAIr1F,EAAGoD,EAAGu8M,EAAaiB,EAAa+nB,EAAa9nB,EAAW8nB,GAC5DjpB,EAAcynB,GAChBwB,EAAcxB,EAAcznB,EAC5B18M,EAAIqyF,IAAIr1F,EAAGoD,EAAGs8M,EAAamB,EAAW8nB,EAAa/nB,EAAa+nB,GAAa,IAE7E3lO,EAAIqyF,IAAIr1F,EAAGoD,EAAG+jO,EAAatmB,EAAW/uB,GAAS8uB,EAAa9uB,IAE9D9uL,EAAIqvF,YACJrvF,EAAI25L,MACN,CA8NIisC,CAAQ5lO,EAAK8iB,EAAS+6L,GAGnB4nB,IACHvB,GAAQlkO,EAAK8iB,EAASnkB,EAAQu+M,EAASW,EAAUyD,GACjDthN,EAAIsvF,SAER,CFygCAoT,GA7oCM26H,GAAA,WAEc31F,IAAShlC,GAFvB26H,GAAA,YAGeL,IAAUt6H,GAHzB26H,GAAA,YAIen1N,IAAUw6F,GAJzB26H,GAAA,WAKcvb,IAASp/G,GALvB26H,GAAA,mBAMqB36H,GANrB26H,GAAA,WAOcJ,IEuIL,MAAM4I,WAAmBz/M,GAmCtC2B,WAAAA,CAAY7lB,GACVi8E,QAAKukB,GAAC,KAAD,wBAAAA,GAAC,KAAD,mBAAAA,GAAC,KAAD,sBAAAA,GAAC,KAAD,sBAAAA,GAAC,KAAD,sBAAAA,GAAC,KAAD,sBAAAA,GAAC,KAAD,qBAEL1oG,KAAKK,aAAUrB,EACfgB,KAAK8iN,mBAAgB9jN,EACrBgB,KAAK4jN,gBAAa5kN,EAClBgB,KAAK6jN,cAAW7kN,EAChBgB,KAAK0iN,iBAAc1jN,EACnBgB,KAAK2iN,iBAAc3jN,EACnBgB,KAAKmqO,YAAc,EACnBnqO,KAAKyrO,YAAc,EAEfvjO,GACFvM,OAAO49C,OAAOv5C,KAAMkI,EAExB,CAEA+gN,OAAAA,CAAQ6iB,EAAgBC,EAAgBhjB,GACtC,MAAM7lB,EAAQljM,KAAK0pN,SAAS,CAAC,IAAK,KAAMX,IAClC,MAAC3yB,EAAK,SAAEC,GAAYP,GAAkBoN,EAAO,CAAClgM,EAAG8oO,EAAQ1lO,EAAG2lO,KAC5D,WAACnoB,EAAA,SAAYC,EAAA,YAAUnB,EAAW,YAAEC,EAAW,cAAEG,GAAiB9iN,KAAK0pN,SAAS,CACpF,aACA,WACA,cACA,cACA,iBACCX,GACGijB,GAAWhsO,KAAKK,QAAQ6iN,QAAUljN,KAAKK,QAAQ2iM,aAAe,EAC9D4hB,EAAiB9xB,GAAegwB,EAAee,EAAWD,GAC1DqoB,EAAiBt1C,GAAcP,EAAOwtB,EAAYC,IAAaD,IAAeC,EAC9EqoB,EAAgBtnB,GAAkBnwB,IAAOw3C,EACzCE,EAAej1C,GAAWb,EAAUqsB,EAAcspB,EAASrpB,EAAcqpB,GAE/E,OAAQE,GAAiBC,CAC3B,CAEA3iB,cAAAA,CAAeT,GACb,MAAM,EAAC/lN,EAAC,EAAEoD,EAAC,WAAEw9M,EAAA,SAAYC,EAAA,YAAUnB,EAAA,YAAaC,GAAe3iN,KAAK0pN,SAAS,CAC3E,IACA,IACA,aACA,WACA,cACA,eACCX,IACG,OAACpkN,EAAA,QAAQu+M,GAAWljN,KAAKK,QACzB+rO,GAAaxoB,EAAaC,GAAY,EACtCwoB,GAAc3pB,EAAcC,EAAcO,EAAUv+M,GAAU,EACpE,MAAO,CACL3B,EAAGA,EAAImK,KAAK+wJ,IAAIkuE,GAAaC,EAC7BjmO,EAAGA,EAAI+G,KAAK4H,IAAIq3N,GAAaC,EAEjC,CAEA3b,eAAAA,CAAgB3H,GACd,OAAO/oN,KAAKwpN,eAAeT,EAC7B,CAEArX,IAAAA,CAAK1rM,GACH,MAAM,QAAC3F,EAAO,cAAEyiN,GAAiB9iN,KAC3B2E,GAAUtE,EAAQsE,QAAU,GAAK,EACjCu+M,GAAW7iN,EAAQ6iN,SAAW,GAAK,EACnCoE,EAAWjnN,EAAQinN,SAIzB,GAHAtnN,KAAKmqO,YAAuC,UAAxB9pO,EAAQ+kN,YAA2B,IAAO,EAC9DplN,KAAKyrO,YAAc3oB,EAAgBruB,GAAMtnL,KAAKwJ,MAAMmsM,EAAgBruB,IAAO,EAErD,IAAlBquB,GAAuB9iN,KAAK0iN,YAAc,GAAK1iN,KAAK2iN,YAAc,EACpE,OAGF38M,EAAI4yF,OAEJ,MAAMwzI,GAAapsO,KAAK4jN,WAAa5jN,KAAK6jN,UAAY,EACtD79M,EAAI88L,UAAU31L,KAAK+wJ,IAAIkuE,GAAaznO,EAAQwI,KAAK4H,IAAIq3N,GAAaznO,GAClE,MACM2nO,EAAe3nO,GADT,EAAIwI,KAAK4H,IAAI5H,KAAK4D,IAAIunF,GAAIwqH,GAAiB,KAGvD98M,EAAIqqC,UAAYhwC,EAAQk2H,gBACxBvwH,EAAI4uF,YAAcv0F,EAAQk9L,YA/L9B,SACEv3L,EACA8iB,EACAnkB,EACAu+M,EACAoE,GAEA,MAAM,YAACmkB,EAAW,WAAE7nB,EAAA,cAAYd,GAAiBh6L,EACjD,IAAI+6L,EAAW/6L,EAAQ+6L,SACvB,GAAI4nB,EAAa,CACfvB,GAAQlkO,EAAK8iB,EAASnkB,EAAQu+M,EAASW,EAAUyD,GACjD,IAAK,IAAIvkN,EAAI,EAAGA,EAAI0oO,IAAe1oO,EACjCiD,EAAI2uF,OAEDziE,MAAM4wL,KACTe,EAAWD,GAAcd,EAAgBruB,IAAOA,KAGpDy1C,GAAQlkO,EAAK8iB,EAASnkB,EAAQu+M,EAASW,EAAUyD,GACjDthN,EAAI2uF,MAEN,CA4KI43I,CAAQvmO,EAAKhG,KAAMssO,EAAcppB,EAASoE,GAC1CgU,GAAWt1N,EAAKhG,KAAMssO,EAAcppB,EAASoE,GAE7CthN,EAAIszF,SACN,EClXF,SAASkzI,GAASxmO,EAAK3F,GAA0B,IAAjBigD,EAAAjiD,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAQgC,EACtC2F,EAAIymO,QAAU35C,GAAexyI,EAAMowJ,eAAgBrwM,EAAQqwM,gBAC3D1qM,EAAIo1N,YAAYtoC,GAAexyI,EAAMqwJ,WAAYtwM,EAAQswM,aACzD3qM,EAAIq1N,eAAiBvoC,GAAexyI,EAAMswJ,iBAAkBvwM,EAAQuwM,kBACpE5qM,EAAI0lO,SAAW54C,GAAexyI,EAAMuwJ,gBAAiBxwM,EAAQwwM,iBAC7D7qM,EAAIyuF,UAAYq+F,GAAexyI,EAAM0iJ,YAAa3iM,EAAQ2iM,aAC1Dh9L,EAAI4uF,YAAck+F,GAAexyI,EAAMi9I,YAAal9L,EAAQk9L,YAC9D,CAEA,SAASpoG,GAAOnvF,EAAKs9L,EAAUvjM,GAC7BiG,EAAImvF,OAAOp1F,EAAOiD,EAAGjD,EAAOqG,EAC9B,CAiBA,SAASsmO,GAASp0C,EAAQ9mE,GAAsB,IAAb/iC,EAASpwF,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,MAC1C,MAAM4yC,EAAQqnJ,EAAOh6L,QACdu2D,MAAO83K,EAAc,EAAG73K,IAAK83K,EAAY37L,EAAQ,GAAKw9C,GACtD55B,MAAOg4K,EAAc/3K,IAAKg4K,GAAct7G,EACzC38D,EAAQ1nD,KAAK0D,IAAI87N,EAAaE,GAC9B/3K,EAAM3nD,KAAK4D,IAAI67N,EAAWE,GAC1BC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAElH,MAAO,CACL77L,QACA4jB,QACA4xB,KAAM+qC,EAAQ/qC,KACd4sG,KAAMv+H,EAAMD,IAAUk4K,EAAU97L,EAAQ6jB,EAAMD,EAAQC,EAAMD,EAEhE,CAiBA,SAASm4K,GAAYhnO,EAAKkqC,EAAMshF,EAAS/iC,GACvC,MAAM,OAAC6pG,EAAA,QAAQj4L,GAAW6vC,GACpB,MAACe,EAAA,MAAO4jB,EAAA,KAAO4xB,EAAA,KAAM4sG,GAAQq5C,GAASp0C,EAAQ9mE,EAAS/iC,GACvDw+I,EA9CR,SAAuB5sO,GACrB,OAAIA,EAAQ6sO,QACH7pC,GAGLhjM,EAAQ+qM,SAA8C,aAAnC/qM,EAAQ8qM,uBACtB1H,GAGFtuG,EACT,CAoCqBg4I,CAAc9sO,GAEjC,IACI0C,EAAGmgM,EAAO/4K,GADV,KAACizL,GAAO,EAAI,QAAExjG,GAAWnrB,GAAU,CAAC,EAGxC,IAAK1rF,EAAI,EAAGA,GAAKswL,IAAQtwL,EACvBmgM,EAAQ5K,GAAQzjI,GAAS+kD,EAAUy5E,EAAOtwL,EAAIA,IAAMkuC,GAEhDiyJ,EAAMiG,OAGCiU,GACTp3M,EAAIkvF,OAAOguG,EAAMlgM,EAAGkgM,EAAM98L,GAC1Bg3M,GAAO,GAEP6vB,EAAWjnO,EAAKmkB,EAAM+4K,EAAOtpF,EAASv5G,EAAQ6sO,SAGhD/iN,EAAO+4K,GAQT,OALIz8G,IACFy8G,EAAQ5K,GAAQzjI,GAAS+kD,EAAUy5E,EAAO,IAAMpiJ,GAChDg8L,EAAWjnO,EAAKmkB,EAAM+4K,EAAOtpF,EAASv5G,EAAQ6sO,YAGvCzmJ,CACX,CAiBA,SAAS2mJ,GAAgBpnO,EAAKkqC,EAAMshF,EAAS/iC,GAC3C,MAAM6pG,EAASpoJ,EAAKooJ,QACd,MAACrnJ,EAAK,MAAE4jB,EAAK,KAAEw+H,GAAQq5C,GAASp0C,EAAQ9mE,EAAS/iC,IACjD,KAAC2uH,GAAO,EAAI,QAAExjG,GAAWnrB,GAAU,CAAC,EAC1C,IAEI1rF,EAAGmgM,EAAOmqC,EAAOhpB,EAAMF,EAAMmpB,EAF7BC,EAAO,EACPC,EAAS,EAGb,MAAMC,EAAcpsO,IAAWwzD,GAAS+kD,EAAUy5E,EAAOhyL,EAAQA,IAAU4vC,EACrEy8L,EAAQA,KACRrpB,IAASF,IAEXn+M,EAAImvF,OAAOo4I,EAAMppB,GACjBn+M,EAAImvF,OAAOo4I,EAAMlpB,GAGjBr+M,EAAImvF,OAAOo4I,EAAMD,KASrB,IALIlwB,IACFla,EAAQ5K,EAAOm1C,EAAW,IAC1BznO,EAAIkvF,OAAOguG,EAAMlgM,EAAGkgM,EAAM98L,IAGvBrD,EAAI,EAAGA,GAAKswL,IAAQtwL,EAAG,CAG1B,GAFAmgM,EAAQ5K,EAAOm1C,EAAW1qO,IAEtBmgM,EAAMiG,KAER,SAGF,MAAMnmM,EAAIkgM,EAAMlgM,EACVoD,EAAI88L,EAAM98L,EACVunO,EAAa,EAAJ3qO,EAEX2qO,IAAWN,GAETjnO,EAAIi+M,EACNA,EAAOj+M,EACEA,EAAI+9M,IACbA,EAAO/9M,GAGTmnO,GAAQC,EAASD,EAAOvqO,KAAOwqO,IAE/BE,IAGA1nO,EAAImvF,OAAOnyF,EAAGoD,GAEdinO,EAAQM,EACRH,EAAS,EACTnpB,EAAOF,EAAO/9M,GAGhBknO,EAAQlnO,CACV,CACAsnO,GACF,CAOA,SAASE,GAAkB19L,GACzB,MAAM7wC,EAAO6wC,EAAK7vC,QACZswM,EAAatxM,EAAKsxM,YAActxM,EAAKsxM,WAAWryM,OAEtD,OADqB4xC,EAAK61K,aAAe71K,EAAKyiK,QAAUtzM,EAAK+rM,SAA2C,aAAhC/rM,EAAK8rM,yBAA0C9rM,EAAK6tO,UAAYv8B,EACnHy8B,GAAkBJ,EACzC,CDiMAtkI,GAxHqBmjI,GAAmB,KAE1B,OAAMnjI,GAFCmjI,GAAmB,WAIpB,CAChBzmB,YAAa,SACb7nB,YAAa,OACboT,WAAY,GACZC,iBAAkB,EAClBC,qBAAiB7xM,EACjBmnK,aAAc,EACd68B,YAAa,EACbr+L,OAAQ,EACRu+M,QAAS,EACT9sB,WAAOp3L,EACPsoN,UAAU,IACV5+G,GAhBiBmjI,GAAmB,gBAkBf,CACrBt1G,gBAAiB,oBACjB7tB,GApBiBmjI,GAAmB,cAsBjB,CACnB3sC,aAAa,EACbC,WAAa5hM,GAAkB,eAATA,ICtD1B,MAAMswO,GAA8B,oBAAXC,OAEzB,SAASp8B,GAAK1rM,EAAKkqC,EAAM2kB,EAAO5jB,GAC1B48L,KAAc39L,EAAK7vC,QAAQmxH,QA7BjC,SAA6BxrH,EAAKkqC,EAAM2kB,EAAO5jB,GAC7C,IAAIq8E,EAAOp9E,EAAK69L,MACXzgH,IACHA,EAAOp9E,EAAK69L,MAAQ,IAAID,OACpB59L,EAAKo9E,KAAKA,EAAMz4D,EAAO5jB,IACzBq8E,EAAKj4B,aAGTm3I,GAASxmO,EAAKkqC,EAAK7vC,SACnB2F,EAAIsvF,OAAOg4B,EACb,CAoBI0gH,CAAoBhoO,EAAKkqC,EAAM2kB,EAAO5jB,GAlB1C,SAA0BjrC,EAAKkqC,EAAM2kB,EAAO5jB,GAC1C,MAAM,SAAC0/E,EAAA,QAAUtwH,GAAW6vC,EACtB+9L,EAAgBL,GAAkB19L,GAExC,IAAK,MAAMshF,KAAWb,EACpB67G,GAASxmO,EAAK3F,EAASmxH,EAAQlxE,OAC/Bt6C,EAAIivF,YACAg5I,EAAcjoO,EAAKkqC,EAAMshF,EAAS,CAAC38D,QAAOC,IAAKD,EAAQ5jB,EAAQ,KACjEjrC,EAAIqvF,YAENrvF,EAAIsvF,QAER,CAQI44I,CAAiBloO,EAAKkqC,EAAM2kB,EAAO5jB,EAEvC,CAEe,MAAMk9L,WAAoB/hN,GAoCvC2B,WAAAA,CAAY7lB,GACVi8E,QAEAnkF,KAAKgmN,UAAW,EAChBhmN,KAAKK,aAAUrB,EACfgB,KAAK8vM,YAAS9wM,EACdgB,KAAK2yM,WAAQ3zM,EACbgB,KAAK0nN,eAAY1oN,EACjBgB,KAAK+tO,WAAQ/uO,EACbgB,KAAKouO,aAAUpvO,EACfgB,KAAKquO,eAAYrvO,EACjBgB,KAAK+lN,YAAa,EAClB/lN,KAAKsuO,gBAAiB,EACtBtuO,KAAKiwM,mBAAgBjxM,EAEjBkJ,GACFvM,OAAO49C,OAAOv5C,KAAMkI,EAExB,CAEAq+M,mBAAAA,CAAoBhL,EAAWxd,GAC7B,MAAM19L,EAAUL,KAAKK,QACrB,IAAKA,EAAQ+qM,SAA8C,aAAnC/qM,EAAQ8qM,0BAA2C9qM,EAAQ6sO,UAAYltO,KAAKsuO,eAAgB,CAClH,MAAM7nJ,EAAOpmF,EAAQ6qM,SAAWlrM,KAAK2yM,MAAQ3yM,KAAK0nN,UAClD1c,GAA2BhrM,KAAKouO,QAAS/tO,EAASk7M,EAAW90H,EAAMs3G,GACnE/9L,KAAKsuO,gBAAiB,EAE1B,CAEA,UAAIh2C,CAAOA,GACTt4L,KAAKouO,QAAU91C,SACRt4L,KAAKquO,iBACLruO,KAAK+tO,MACZ/tO,KAAKsuO,gBAAiB,CACxB,CAEA,UAAIh2C,GACF,OAAOt4L,KAAKouO,OACd,CAEA,YAAIz9G,GACF,OAAO3wH,KAAKquO,YAAcruO,KAAKquO,U7BlF5B,SAA0Bn+L,EAAM0/J,GACrC,MAAMtX,EAASpoJ,EAAKooJ,OACd4S,EAAWh7J,EAAK7vC,QAAQ6qM,SACxBj6J,EAAQqnJ,EAAOh6L,OAErB,IAAK2yC,EACH,MAAO,GAGT,MAAMw1C,IAASv2C,EAAKyiK,OACd,MAAC99I,EAAA,IAAOC,GA3FhB,SAAyBwjI,EAAQrnJ,EAAOw1C,EAAMykH,GAC5C,IAAIr2I,EAAQ,EACRC,EAAM7jB,EAAQ,EAElB,GAAIw1C,IAASykH,EAEX,KAAOr2I,EAAQ5jB,IAAUqnJ,EAAOzjI,GAAOs0I,MACrCt0I,IAKJ,KAAOA,EAAQ5jB,GAASqnJ,EAAOzjI,GAAOs0I,MACpCt0I,IAWF,IAPAA,GAAS5jB,EAELw1C,IAEF3xB,GAAOD,GAGFC,EAAMD,GAASyjI,EAAOxjI,EAAM7jB,GAAOk4J,MACxCr0I,IAMF,OAFAA,GAAO7jB,EAEA,CAAC4jB,QAAOC,MACjB,CA2DuBy5K,CAAgBj2C,EAAQrnJ,EAAOw1C,EAAMykH,GAE1D,OACSyE,GAAcz/J,GADN,IAAbg7J,EACyB,CAAC,CAACr2I,QAAOC,MAAK2xB,SArD7C,SAAuB6xG,EAAQzjI,EAAOhkD,EAAK41E,GACzC,MAAMx1C,EAAQqnJ,EAAOh6L,OACfuxB,EAAS,GACf,IAEIilC,EAFAzgC,EAAOwgC,EACP1qC,EAAOmuK,EAAOzjI,GAGlB,IAAKC,EAAMD,EAAQ,EAAGC,GAAOjkD,IAAOikD,EAAK,CACvC,MAAMm9I,EAAM3Z,EAAOxjI,EAAM7jB,GACrBghK,EAAI9I,MAAQ8I,EAAIjrH,KACb78D,EAAKg/K,OACR1iH,GAAO,EACP52D,EAAO1uB,KAAK,CAAC0zD,MAAOA,EAAQ5jB,EAAO6jB,KAAMA,EAAM,GAAK7jB,EAAOw1C,SAE3D5xB,EAAQxgC,EAAO49K,EAAIjrH,KAAOlyB,EAAM,OAGlCzgC,EAAOygC,EACH3qC,EAAKg/K,OACPt0I,EAAQC,IAGZ3qC,EAAO8nL,CACT,CAMA,OAJa,OAAT59K,GACFxE,EAAO1uB,KAAK,CAAC0zD,MAAOA,EAAQ5jB,EAAO6jB,IAAKzgC,EAAO4c,EAAOw1C,SAGjD52D,CACT,CA4B6B2+M,CAAcl2C,EAAQzjI,EAFrCC,EAAMD,EAAQC,EAAM7jB,EAAQ6jB,IACjB5kB,EAAKw3K,WAAuB,IAAV7yJ,GAAeC,IAAQ7jB,EAAQ,GAJrBqnJ,EAAQsX,EAM7D,C6B+D+C6+B,CAAiBzuO,KAAMA,KAAKK,QAAQmxH,SACjF,CAMAp9F,KAAAA,GACE,MAAMu8F,EAAW3wH,KAAK2wH,SAChB2nE,EAASt4L,KAAKs4L,OACpB,OAAO3nE,EAASryH,QAAUg6L,EAAO3nE,EAAS,GAAG97D,MAC/C,CAMAxgC,IAAAA,GACE,MAAMs8F,EAAW3wH,KAAK2wH,SAChB2nE,EAASt4L,KAAKs4L,OACdrnJ,EAAQ0/E,EAASryH,OACvB,OAAO2yC,GAASqnJ,EAAO3nE,EAAS1/E,EAAQ,GAAG6jB,IAC7C,CASAg9H,WAAAA,CAAYoR,EAAO35K,GACjB,MAAMlpB,EAAUL,KAAKK,QACf7B,EAAQ0kM,EAAM35K,GACd+uK,EAASt4L,KAAKs4L,OACd3nE,EAAW8+E,GAAezvM,KAAM,CAACupB,WAAUsrC,MAAOr2D,EAAOs2D,IAAKt2D,IAEpE,IAAKmyH,EAASryH,OACZ,OAGF,MAAMuxB,EAAS,GACT6+M,EAvKV,SAAiCruO,GAC/B,OAAIA,EAAQ6sO,QACHp/B,GAGLztM,EAAQ+qM,SAA8C,aAAnC/qM,EAAQ8qM,uBACtB4C,GAGFF,EACT,CA6JyB8gC,CAAwBtuO,GAC7C,IAAI0C,EAAGswL,EACP,IAAKtwL,EAAI,EAAGswL,EAAO1iE,EAASryH,OAAQyE,EAAIswL,IAAQtwL,EAAG,CACjD,MAAM,MAAC8xD,EAAA,IAAOC,GAAO67D,EAAS5tH,GACxBumI,EAAKgvD,EAAOzjI,GACZ00E,EAAK+uD,EAAOxjI,GAClB,GAAIw0E,IAAOC,EAAI,CACb15G,EAAO1uB,KAAKmoI,GACZ,SAEF,MACMslG,EAAeF,EAAaplG,EAAIC,EAD5Bp8H,KAAK2H,KAAKtW,EAAQ8qI,EAAG//G,KAAcggH,EAAGhgH,GAAY+/G,EAAG//G,KAClBlpB,EAAQ6sO,SACrD0B,EAAarlN,GAAY25K,EAAM35K,GAC/BsG,EAAO1uB,KAAKytO,EACd,CACA,OAAyB,IAAlB/+M,EAAOvxB,OAAeuxB,EAAO,GAAKA,CAC3C,CAgBAm9M,WAAAA,CAAYhnO,EAAKwrH,EAAS/iC,GAExB,OADsBm/I,GAAkB5tO,KACjCiuO,CAAcjoO,EAAKhG,KAAMwxH,EAAS/iC,EAC3C,CASA6+B,IAAAA,CAAKtnH,EAAK6uD,EAAO5jB,GACf,MAAM0/E,EAAW3wH,KAAK2wH,SAChBs9G,EAAgBL,GAAkB5tO,MACxC,IAAIymF,EAAOzmF,KAAK2yM,MAEhB99I,EAAQA,GAAS,EACjB5jB,EAAQA,GAAUjxC,KAAKs4L,OAAOh6L,OAASu2D,EAEvC,IAAK,MAAM28D,KAAWb,EACpBlqC,GAAQwnJ,EAAcjoO,EAAKhG,KAAMwxH,EAAS,CAAC38D,QAAOC,IAAKD,EAAQ5jB,EAAQ,IAEzE,QAASw1C,CACX,CASAirH,IAAAA,CAAK1rM,EAAKu1M,EAAW1mJ,EAAO5jB,GAC1B,MAAM5wC,EAAUL,KAAKK,SAAW,CAAC,GAClBL,KAAKs4L,QAAU,IAEnBh6L,QAAU+B,EAAQ2iM,cAC3Bh9L,EAAI4yF,OAEJ84G,GAAK1rM,EAAKhG,KAAM60D,EAAO5jB,GAEvBjrC,EAAIszF,WAGFt5F,KAAKgmN,WAEPhmN,KAAKsuO,gBAAiB,EACtBtuO,KAAK+tO,WAAQ/uO,EAEjB,ECjbF,SAAS6vO,GAAQ/yN,EAAkB+uB,EAAa+tJ,EAAiBmwB,GAC/D,MAAM1oN,EAAUyb,EAAGzb,SACZ,CAACu4L,GAAOp6L,GAASsd,EAAG4tM,SAAS,CAAC9wB,GAAOmwB,GAE5C,OAAQ57M,KAAK2H,IAAI+1B,EAAMrsC,GAAS6B,EAAQ+3F,OAAS/3F,EAAQyuO,SAC3D,CD6aApmI,GA1MqBylI,GAAoB,KAE3B,QAAOzlI,GAFAylI,GAAoB,WAOrB,CAChBz9B,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjB7N,YAAa,EACbqI,iBAAiB,EACjBF,uBAAwB,UACxBx2G,MAAM,EACNu2G,UAAU,EACVgiC,SAAS,EACT9hC,QAAS,IACT1iG,GAnBiBylI,GAAoB,gBAwBhB,CACrB53G,gBAAiB,kBACjBgnE,YAAa,gBACb70F,GA3BiBylI,GAAoB,cA8BlB,CACnBjvC,aAAa,EACbC,WAAa5hM,GAAkB,eAATA,GAAkC,SAATA,IC/PpC,MAAMwxO,WAAqB3iN,GA6BxC2B,WAAAA,CAAY7lB,GACVi8E,QAAKukB,GAAC,KAAD,iBAAAA,GAAC,KAAD,eAAAA,GAAC,KAAD,eAEL1oG,KAAKK,aAAUrB,EACfgB,KAAK26F,YAAS37F,EACdgB,KAAKmpM,UAAOnqM,EACZgB,KAAKgnF,UAAOhoF,EAERkJ,GACFvM,OAAO49C,OAAOv5C,KAAMkI,EAExB,CAEA+gN,OAAAA,CAAQ+lB,EAAgBC,EAAgBlmB,GACtC,MAAM1oN,EAAUL,KAAKK,SACf,EAAC2C,EAAA,EAAGoD,GAAKpG,KAAK0pN,SAAS,CAAC,IAAK,KAAMX,GACzC,OAAS57M,KAAK0Q,IAAImxN,EAAShsO,EAAG,GAAKmK,KAAK0Q,IAAIoxN,EAAS7oO,EAAG,GAAM+G,KAAK0Q,IAAIxd,EAAQyuO,UAAYzuO,EAAQ+3F,OAAQ,EAC7G,CAEA82I,QAAAA,CAASF,EAAgBjmB,GACvB,OAAO8lB,GAAQ7uO,KAAMgvO,EAAQ,IAAKjmB,EACpC,CAEAomB,QAAAA,CAASF,EAAgBlmB,GACvB,OAAO8lB,GAAQ7uO,KAAMivO,EAAQ,IAAKlmB,EACpC,CAEAS,cAAAA,CAAeT,GACb,MAAM,EAAC/lN,EAAA,EAAGoD,GAAKpG,KAAK0pN,SAAS,CAAC,IAAK,KAAMX,GACzC,MAAO,CAAC/lN,IAAGoD,IACb,CAEAq2B,IAAAA,CAAKp8B,GAEH,IAAI+3F,GADJ/3F,EAAUA,GAAWL,KAAKK,SAAW,CAAC,GACjB+3F,QAAU,EAC/BA,EAASjrF,KAAK0D,IAAIunF,EAAQA,GAAU/3F,EAAQ+uO,aAAe,GAE3D,OAAgC,GAAxBh3I,GADYA,GAAU/3F,EAAQ2iM,aAAe,GAEvD,CAEA0O,IAAAA,CAAK1rM,EAA+B06C,GAClC,MAAMrgD,EAAUL,KAAKK,QAEjBL,KAAKmpM,MAAQ9oM,EAAQ+3F,OAAS,KAAQ6qG,GAAejjM,KAAM0gD,EAAM1gD,KAAKy8B,KAAKp8B,GAAW,KAI1F2F,EAAI4uF,YAAcv0F,EAAQk9L,YAC1Bv3L,EAAIyuF,UAAYp0F,EAAQ2iM,YACxBh9L,EAAIqqC,UAAYhwC,EAAQk2H,gBACxB6rE,GAAUp8L,EAAK3F,EAASL,KAAKgD,EAAGhD,KAAKoG,GACvC,CAEAuiN,QAAAA,GACE,MAAMtoN,EAAUL,KAAKK,SAAW,CAAC,EAEjC,OAAOA,EAAQ+3F,OAAS/3F,EAAQyuO,SAClC,EC3FF,SAASO,GAAaC,EAAKvmB,GACzB,MAAM,EAAC/lN,EAAC,EAAEoD,EAAC,KAAEu6C,EAAA,MAAM3M,EAAA,OAAOC,GAAmCq7L,EAAI5lB,SAAS,CAAC,IAAK,IAAK,OAAQ,QAAS,UAAWX,GAEjH,IAAIziN,EAAMC,EAAOuvD,EAAKupB,EAAQkwJ,EAgB9B,OAdID,EAAIpwB,YACNqwB,EAAOt7L,EAAS,EAChB3tC,EAAO6G,KAAK4D,IAAI/N,EAAG29C,GACnBp6C,EAAQ4G,KAAK0D,IAAI7N,EAAG29C,GACpBmV,EAAM1vD,EAAImpO,EACVlwJ,EAASj5E,EAAImpO,IAEbA,EAAOv7L,EAAQ,EACf1tC,EAAOtD,EAAIusO,EACXhpO,EAAQvD,EAAIusO,EACZz5K,EAAM3oD,KAAK4D,IAAI3K,EAAGu6C,GAClB0+B,EAASlyE,KAAK0D,IAAIzK,EAAGu6C,IAGhB,CAACr6C,OAAMwvD,MAAKvvD,QAAO84E,SAC5B,CAEA,SAASmwJ,GAAYrmC,EAAM3qM,EAAOuS,EAAKF,GACrC,OAAOs4L,EAAO,EAAIlS,GAAYz4L,EAAOuS,EAAKF,EAC5C,CAkCA,SAAS4+N,GAAcH,GACrB,MAAM5vC,EAAS2vC,GAAaC,GACtBt7L,EAAQ0rJ,EAAOn5L,MAAQm5L,EAAOp5L,KAC9B2tC,EAASyrJ,EAAOrgH,OAASqgH,EAAO5pI,IAChCqqI,EApCR,SAA0BmvC,EAAKI,EAAMC,GACnC,MAAMnxO,EAAQ8wO,EAAIjvO,QAAQ2iM,YACpBmG,EAAOmmC,EAAIrwB,cACX75K,EAAIqgK,GAAOjnM,GAEjB,MAAO,CACL8E,EAAGksO,GAAYrmC,EAAKrzI,IAAK1wB,EAAE0wB,IAAK,EAAG65K,GACnC/kM,EAAG4kM,GAAYrmC,EAAK5iM,MAAO6+B,EAAE7+B,MAAO,EAAGmpO,GACvCxpO,EAAGspO,GAAYrmC,EAAK9pH,OAAQj6C,EAAEi6C,OAAQ,EAAGswJ,GACzC91L,EAAG21L,GAAYrmC,EAAK7iM,KAAM8+B,EAAE9+B,KAAM,EAAGopO,GAEzC,CAyBiBE,CAAiBN,EAAKt7L,EAAQ,EAAGC,EAAS,GACnDmkD,EAxBR,SAA2Bk3I,EAAKI,EAAMC,GACpC,MAAM,mBAACvwB,GAAsBkwB,EAAI5lB,SAAS,CAAC,uBACrClrN,EAAQ8wO,EAAIjvO,QAAQ8lK,aACpB/gI,EAAIsgK,GAAclnM,GAClBqxO,EAAO1iO,KAAK4D,IAAI2+N,EAAMC,GACtBxmC,EAAOmmC,EAAIrwB,cAIX6wB,EAAe1wB,GAAsBjnL,GAAS35B,GAEpD,MAAO,CACLihF,QAAS+vJ,IAAaM,GAAgB3mC,EAAKrzI,KAAOqzI,EAAK7iM,KAAM8+B,EAAEq6C,QAAS,EAAGowJ,GAC3EnwJ,SAAU8vJ,IAAaM,GAAgB3mC,EAAKrzI,KAAOqzI,EAAK5iM,MAAO6+B,EAAEs6C,SAAU,EAAGmwJ,GAC9EjwJ,WAAY4vJ,IAAaM,GAAgB3mC,EAAK9pH,QAAU8pH,EAAK7iM,KAAM8+B,EAAEw6C,WAAY,EAAGiwJ,GACpFhwJ,YAAa2vJ,IAAaM,GAAgB3mC,EAAK9pH,QAAU8pH,EAAK5iM,MAAO6+B,EAAEy6C,YAAa,EAAGgwJ,GAE3F,CAOiBE,CAAkBT,EAAKt7L,EAAQ,EAAGC,EAAS,GAE1D,MAAO,CACL2hD,MAAO,CACL5yF,EAAG08L,EAAOp5L,KACVF,EAAGs5L,EAAO5pI,IACVwC,EAAGtkB,EACHh2B,EAAGi2B,EACHmkD,UAEFvC,MAAO,CACL7yF,EAAG08L,EAAOp5L,KAAO65L,EAAOtmJ,EACxBzzC,EAAGs5L,EAAO5pI,IAAMqqI,EAAO78L,EACvBg1D,EAAGtkB,EAAQmsJ,EAAOtmJ,EAAIsmJ,EAAOv1J,EAC7B5sB,EAAGi2B,EAASksJ,EAAO78L,EAAI68L,EAAOj6L,EAC9BkyF,OAAQ,CACN3Y,QAAStyE,KAAK0D,IAAI,EAAGunF,EAAO3Y,QAAUtyE,KAAK0D,IAAIsvL,EAAO78L,EAAG68L,EAAOtmJ,IAChE6lC,SAAUvyE,KAAK0D,IAAI,EAAGunF,EAAO1Y,SAAWvyE,KAAK0D,IAAIsvL,EAAO78L,EAAG68L,EAAOv1J,IAClEg1C,WAAYzyE,KAAK0D,IAAI,EAAGunF,EAAOxY,WAAazyE,KAAK0D,IAAIsvL,EAAOj6L,EAAGi6L,EAAOtmJ,IACtEgmC,YAAa1yE,KAAK0D,IAAI,EAAGunF,EAAOvY,YAAc1yE,KAAK0D,IAAIsvL,EAAOj6L,EAAGi6L,EAAOv1J,MAIhF,CAEA,SAASq+K,GAAQqmB,EAAKtsO,EAAGoD,EAAG2iN,GAC1B,MAAMinB,EAAc,OAANhtO,EACRitO,EAAc,OAAN7pO,EAERs5L,EAAS4vC,KADEU,GAASC,IACSZ,GAAaC,EAAKvmB,GAErD,OAAOrpB,IACHswC,GAAS94C,GAAWl0L,EAAG08L,EAAOp5L,KAAMo5L,EAAOn5L,UAC3C0pO,GAAS/4C,GAAW9wL,EAAGs5L,EAAO5pI,IAAK4pI,EAAOrgH,QAChD,CAWA,SAAS6wJ,GAAkBlqO,EAAK8oC,GAC9B9oC,EAAI8oC,KAAKA,EAAK9rC,EAAG8rC,EAAK1oC,EAAG0oC,EAAKwpB,EAAGxpB,EAAK9wB,EACxC,CAEA,SAASmyN,GAAYrhM,EAAM64C,GAAsB,IAAdyoJ,EAAU/xO,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,MAC3C,MAAM2E,EAAI8rC,EAAK9rC,IAAMotO,EAAQptO,GAAK2kF,EAAS,EACrCvhF,EAAI0oC,EAAK1oC,IAAMgqO,EAAQhqO,GAAKuhF,EAAS,EACrCrvB,GAAKxpB,EAAK9rC,EAAI8rC,EAAKwpB,IAAM83K,EAAQptO,EAAIotO,EAAQ93K,EAAIqvB,EAAS,GAAK3kF,EAC/Dgb,GAAK8wB,EAAK1oC,EAAI0oC,EAAK9wB,IAAMoyN,EAAQhqO,EAAIgqO,EAAQpyN,EAAI2pE,EAAS,GAAKvhF,EACrE,MAAO,CACLpD,EAAG8rC,EAAK9rC,EAAIA,EACZoD,EAAG0oC,EAAK1oC,EAAIA,EACZkyD,EAAGxpB,EAAKwpB,EAAIA,EACZt6C,EAAG8wB,EAAK9wB,EAAIA,EACZo6E,OAAQtpD,EAAKspD,OAEjB,CDhCAsQ,GAvFqBqmI,GAAqB,KAE5B,SAMZrmI,GARmBqmI,GAAqB,WAWtB,CAChB/rC,YAAa,EACb8rC,UAAW,EACXzpB,iBAAkB,EAClB+pB,YAAa,EACbzsC,WAAY,SACZvqG,OAAQ,EACRwqG,SAAU,IAGZl6F,GArBmBqmI,GAAqB,gBAwBjB,CACrBx4G,gBAAiB,kBACjBgnE,YAAa,gBC+FF,MAAM8yC,WAAmBjkN,GAuBtC2B,WAAAA,CAAY7lB,GACVi8E,QAEAnkF,KAAKK,aAAUrB,EACfgB,KAAKk/M,gBAAalgN,EAClBgB,KAAK2gD,UAAO3hD,EACZgB,KAAKg0C,WAAQh1C,EACbgB,KAAKi0C,YAASj1C,EACdgB,KAAK0/M,mBAAgB1gN,EAEjBkJ,GACFvM,OAAO49C,OAAOv5C,KAAMkI,EAExB,CAEAwpM,IAAAA,CAAK1rM,GACH,MAAM,cAAC05M,EAAer/M,SAAS,YAACk9L,EAAA,gBAAahnE,IAAoBv2H,MAC3D,MAAC61F,EAAK,MAAED,GAAS65I,GAAczvO,MAC/BswO,GApESl4I,EAoEexC,EAAMwC,QAnExB3Y,SAAW2Y,EAAO1Y,UAAY0Y,EAAOxY,YAAcwY,EAAOvY,YAmExBslH,GAAqB+qC,GApEvE,IAAmB93I,EAsEfpyF,EAAI4yF,OAEAhD,EAAMt9B,IAAMu9B,EAAMv9B,GAAKs9B,EAAM53E,IAAM63E,EAAM73E,IAC3ChY,EAAIivF,YACJq7I,EAAYtqO,EAAKmqO,GAAYv6I,EAAO8pH,EAAe7pH,IACnD7vF,EAAI25L,OACJ2wC,EAAYtqO,EAAKmqO,GAAYt6I,GAAQ6pH,EAAe9pH,IACpD5vF,EAAIqqC,UAAYktJ,EAChBv3L,EAAI2uF,KAAK,YAGX3uF,EAAIivF,YACJq7I,EAAYtqO,EAAKmqO,GAAYt6I,EAAO6pH,IACpC15M,EAAIqqC,UAAYkmF,EAChBvwH,EAAI2uF,OAEJ3uF,EAAIszF,SACN,CAEA2vH,OAAAA,CAAQ+lB,EAAQC,EAAQlmB,GACtB,OAAOE,GAAQjpN,KAAMgvO,EAAQC,EAAQlmB,EACvC,CAEAmmB,QAAAA,CAASF,EAAQjmB,GACf,OAAOE,GAAQjpN,KAAMgvO,EAAQ,KAAMjmB,EACrC,CAEAomB,QAAAA,CAASF,EAAQlmB,GACf,OAAOE,GAAQjpN,KAAM,KAAMivO,EAAQlmB,EACrC,CAEAS,cAAAA,CAAeT,GACb,MAAM,EAAC/lN,EAAA,EAAGoD,EAAA,KAAGu6C,EAAI,WAAEu+J,GAAuCl/M,KAAK0pN,SAAS,CAAC,IAAK,IAAK,OAAQ,cAAeX,GAC1G,MAAO,CACL/lN,EAAGk8M,GAAcl8M,EAAI29C,GAAQ,EAAI39C,EACjCoD,EAAG84M,EAAa94M,GAAKA,EAAIu6C,GAAQ,EAErC,CAEAgoK,QAAAA,CAAS/vB,GACP,MAAgB,MAATA,EAAe54L,KAAKg0C,MAAQ,EAAIh0C,KAAKi0C,OAAS,CACvD,EACFy0D,GArFqB2nI,GAAmB,KAE1B,OAAM3nI,GAFC2nI,GAAmB,WAOpB,CAChBpxB,cAAe,QACfjc,YAAa,EACb78B,aAAc,EACdu5C,cAAe,OACf/c,gBAAY3jM,IACZ0pG,GAbiB2nI,GAAmB,gBAkBf,CACrB95G,gBAAiB,kBACjBgnE,YAAa,gBCzIjB,MAAMgzC,GAAaA,CAACC,EAAWphF,KAC7B,IAAI,UAACqhF,EAAYrhF,EAAA,SAAUshF,EAAWthF,GAAYohF,EAOlD,OALIA,EAAUG,gBACZF,EAAYtjO,KAAK4D,IAAI0/N,EAAWrhF,GAChCshF,EAAWF,EAAUI,iBAAmBzjO,KAAK4D,IAAI2/N,EAAUthF,IAGtD,CACLshF,WACAD,YACAI,WAAY1jO,KAAK0D,IAAIu+I,EAAUqhF,GAChC,EAKI,MAAMK,WAAe1kN,GAK1B2B,WAAAA,CAAY+7D,GACV3F,QAEAnkF,KAAK+wO,QAAS,EAGd/wO,KAAKgxO,eAAiB,GAKtBhxO,KAAKixO,aAAe,KAGpBjxO,KAAKkxO,cAAe,EAEpBlxO,KAAKqgI,MAAQv2C,EAAOu2C,MACpBrgI,KAAKK,QAAUypF,EAAOzpF,QACtBL,KAAKgG,IAAM8jF,EAAO9jF,IAClBhG,KAAKmxO,iBAAcnyO,EACnBgB,KAAKoxO,iBAAcpyO,EACnBgB,KAAKqxO,gBAAaryO,EAClBgB,KAAK6kG,eAAY7lG,EACjBgB,KAAKilG,cAAWjmG,EAChBgB,KAAK81D,SAAM92D,EACXgB,KAAKq/E,YAASrgF,EACdgB,KAAKsG,UAAOtH,EACZgB,KAAKuG,WAAQvH,EACbgB,KAAKi0C,YAASj1C,EACdgB,KAAKg0C,WAAQh1C,EACbgB,KAAKkzN,cAAWl0N,EAChBgB,KAAKu8E,cAAWv9E,EAChBgB,KAAKyxL,YAASzyL,EACdgB,KAAK8qN,cAAW9rN,CAClB,CAEAiS,MAAAA,CAAOg0F,EAAUJ,EAAWioG,GAC1B9sM,KAAKilG,SAAWA,EAChBjlG,KAAK6kG,UAAYA,EACjB7kG,KAAKkzN,SAAWpmB,EAEhB9sM,KAAK80N,gBACL90N,KAAKsxO,cACLtxO,KAAKg2N,KACP,CAEAlB,aAAAA,GACM90N,KAAK8/M,gBACP9/M,KAAKg0C,MAAQh0C,KAAKilG,SAClBjlG,KAAKsG,KAAOtG,KAAKkzN,SAAS5sN,KAC1BtG,KAAKuG,MAAQvG,KAAKg0C,QAElBh0C,KAAKi0C,OAASj0C,KAAK6kG,UACnB7kG,KAAK81D,IAAM91D,KAAKkzN,SAASp9J,IACzB91D,KAAKq/E,OAASr/E,KAAKi0C,OAEvB,CAEAq9L,WAAAA,GACE,MAAMd,EAAYxwO,KAAKK,QAAQy5M,QAAU,CAAC,EAC1C,IAAIq3B,EAAcjwK,GAAKsvK,EAAU/qB,eAAgB,CAACzlN,KAAKqgI,OAAQrgI,OAAS,GAEpEwwO,EAAUtnN,SACZioN,EAAcA,EAAYjoN,QAAQyjE,GAAS6jJ,EAAUtnN,OAAOyjE,EAAM3sF,KAAKqgI,MAAM11H,SAG3E6lO,EAAU54H,OACZu5H,EAAcA,EAAYv5H,MAAK,CAAC3xG,EAAGC,IAAMsqO,EAAU54H,KAAK3xG,EAAGC,EAAGlG,KAAKqgI,MAAM11H,SAGvE3K,KAAKK,QAAQu5G,SACfu3H,EAAYv3H,UAGd55G,KAAKmxO,YAAcA,CACrB,CAEAnb,GAAAA,GACE,MAAM,QAAC31N,EAAO,IAAE2F,GAAOhG,KAMvB,IAAKK,EAAQ6vE,QAEX,YADAlwE,KAAKg0C,MAAQh0C,KAAKi0C,OAAS,GAI7B,MAAMu8L,EAAYnwO,EAAQy5M,OACpBy3B,EAAY3rC,GAAO4qC,EAAUzhF,MAC7BK,EAAWmiF,EAAU90M,KACrB66L,EAAct3N,KAAKwxO,uBACnB,SAACd,EAAQ,WAAEG,GAAcN,GAAWC,EAAWphF,GAErD,IAAIp7G,EAAOC,EAEXjuC,EAAI+oJ,KAAOwiF,EAAUp9M,OAEjBn0B,KAAK8/M,gBACP9rK,EAAQh0C,KAAKilG,SACbhxD,EAASj0C,KAAKyxO,SAASna,EAAaloE,EAAUshF,EAAUG,GAAc,KAEtE58L,EAASj0C,KAAK6kG,UACd7wD,EAAQh0C,KAAK0xO,SAASpa,EAAaia,EAAWb,EAAUG,GAAc,IAGxE7wO,KAAKg0C,MAAQ7mC,KAAK4D,IAAIijC,EAAO3zC,EAAQ4kG,UAAYjlG,KAAKilG,UACtDjlG,KAAKi0C,OAAS9mC,KAAK4D,IAAIkjC,EAAQ5zC,EAAQwkG,WAAa7kG,KAAK6kG,UAC3D,CAKA4sI,QAAAA,CAASna,EAAaloE,EAAUshF,EAAUG,GACxC,MAAM,IAAC7qO,EAAG,SAAEi/F,EAAU5kG,SAAUy5M,QAAQ,QAAC9uM,KAAahL,KAChD2xO,EAAW3xO,KAAKgxO,eAAiB,GAEjCK,EAAarxO,KAAKqxO,WAAa,CAAC,GAChClyL,EAAa0xL,EAAa7lO,EAChC,IAAI4mO,EAActa,EAElBtxN,EAAI++L,UAAY,OAChB/+L,EAAI6zJ,aAAe,SAEnB,IAAI1vH,GAAO,EACP2rB,GAAO3W,EAgBX,OAfAn/C,KAAKmxO,YAAYrwO,SAAQ,CAAC6kN,EAAY5iN,KACpC,MAAMwrM,EAAYmiC,EAAYthF,EAAW,EAAKppJ,EAAIu7L,YAAYokB,EAAWvuL,MAAM4c,OAErE,IAANjxC,GAAWsuO,EAAWA,EAAW/yO,OAAS,GAAKiwM,EAAY,EAAIvjM,EAAUi6F,KAC3E2sI,GAAezyL,EACfkyL,EAAWA,EAAW/yO,QAAUyE,EAAI,EAAI,EAAI,IAAM,EAClD+yD,GAAO3W,EACPhV,KAGFwnM,EAAS5uO,GAAK,CAACuD,KAAM,EAAGwvD,MAAK3rB,MAAK6J,MAAOu6J,EAAWt6J,OAAQ48L,GAE5DQ,EAAWA,EAAW/yO,OAAS,IAAMiwM,EAAYvjM,CAAA,IAG5C4mO,CACT,CAEAF,QAAAA,CAASpa,EAAaia,EAAWb,EAAUmB,GACzC,MAAM,IAAC7rO,EAAG,UAAE6+F,EAAWxkG,SAAUy5M,QAAQ,QAAC9uM,KAAahL,KACjD2xO,EAAW3xO,KAAKgxO,eAAiB,GACjCI,EAAcpxO,KAAKoxO,YAAc,GACjCU,EAAcjtI,EAAYyyH,EAEhC,IAAIya,EAAa/mO,EACbgnO,EAAkB,EAClBC,EAAmB,EAEnB3rO,EAAO,EACP8jC,EAAM,EAyBV,OAvBApqC,KAAKmxO,YAAYrwO,SAAQ,CAAC6kN,EAAY5iN,KACpC,MAAM,UAACwrM,EAAS,WAAEsiC,GA8VxB,SAA2BH,EAAUa,EAAWvrO,EAAK2/M,EAAYksB,GAC/D,MAAMtjC,EAKR,SAA4BoX,EAAY+qB,EAAUa,EAAWvrO,GAC3D,IAAIksO,EAAiBvsB,EAAWvuL,KAC5B86M,GAA4C,kBAAnBA,IAC3BA,EAAiBA,EAAehoN,QAAO,CAACjkB,EAAGC,IAAMD,EAAE3H,OAAS4H,EAAE5H,OAAS2H,EAAIC,KAE7E,OAAOwqO,EAAYa,EAAU90M,KAAO,EAAKz2B,EAAIu7L,YAAY2wC,GAAgBl+L,KAC3E,CAXoBm+L,CAAmBxsB,EAAY+qB,EAAUa,EAAWvrO,GAChE6qO,EAYR,SAA6BgB,EAAalsB,EAAYysB,GACpD,IAAIvB,EAAagB,EACc,kBAApBlsB,EAAWvuL,OACpBy5M,EAAawB,GAA0B1sB,EAAYysB,IAErD,OAAOvB,CACT,CAlBqByB,CAAoBT,EAAalsB,EAAY4rB,EAAUpyL,YAC1E,MAAO,CAACovJ,YAAWsiC,aACrB,CAlWsC0B,CAAkB7B,EAAUa,EAAWvrO,EAAK2/M,EAAYksB,GAGpF9uO,EAAI,GAAKkvO,EAAmBpB,EAAa,EAAI7lO,EAAU8mO,IACzDC,GAAcC,EAAkBhnO,EAChComO,EAAYjwO,KAAK,CAAC6yC,MAAOg+L,EAAiB/9L,OAAQg+L,IAClD3rO,GAAQ0rO,EAAkBhnO,EAC1Bo/B,IACA4nM,EAAkBC,EAAmB,GAIvCN,EAAS5uO,GAAK,CAACuD,OAAMwvD,IAAKm8K,EAAkB7nM,MAAK4J,MAAOu6J,EAAWt6J,OAAQ48L,GAG3EmB,EAAkB7kO,KAAK0D,IAAImhO,EAAiBzjC,GAC5C0jC,GAAoBpB,EAAa7lO,CAAA,IAGnC+mO,GAAcC,EACdZ,EAAYjwO,KAAK,CAAC6yC,MAAOg+L,EAAiB/9L,OAAQg+L,IAE3CF,CACT,CAEAS,cAAAA,GACE,IAAKxyO,KAAKK,QAAQ6vE,QAChB,OAEF,MAAMonJ,EAAct3N,KAAKwxO,uBAClBR,eAAgBW,EAAUtxO,SAAS,MAAC83L,EAAO2hB,QAAQ,QAAC9uM,GAAQ,IAAEwhG,IAAQxsG,KACvEyyO,EAAYvkC,GAAc1hG,EAAKxsG,KAAKsG,KAAMtG,KAAKg0C,OACrD,GAAIh0C,KAAK8/M,eAAgB,CACvB,IAAI31K,EAAM,EACN7jC,EAAO8xL,GAAeD,EAAOn4L,KAAKsG,KAAO0E,EAAShL,KAAKuG,MAAQvG,KAAKqxO,WAAWlnM,IACnF,IAAK,MAAMuoM,KAAUf,EACfxnM,IAAQuoM,EAAOvoM,MACjBA,EAAMuoM,EAAOvoM,IACb7jC,EAAO8xL,GAAeD,EAAOn4L,KAAKsG,KAAO0E,EAAShL,KAAKuG,MAAQvG,KAAKqxO,WAAWlnM,KAEjFuoM,EAAO58K,KAAO91D,KAAK81D,IAAMwhK,EAActsN,EACvC0nO,EAAOpsO,KAAOmsO,EAAUnkC,WAAWmkC,EAAUzvO,EAAEsD,GAAOosO,EAAO1+L,OAC7D1tC,GAAQosO,EAAO1+L,MAAQhpC,MAEpB,CACL,IAAIo/B,EAAM,EACN0rB,EAAMsiI,GAAeD,EAAOn4L,KAAK81D,IAAMwhK,EAActsN,EAAShL,KAAKq/E,OAASr/E,KAAKoxO,YAAYhnM,GAAK6J,QACtG,IAAK,MAAMy+L,KAAUf,EACfe,EAAOtoM,MAAQA,IACjBA,EAAMsoM,EAAOtoM,IACb0rB,EAAMsiI,GAAeD,EAAOn4L,KAAK81D,IAAMwhK,EAActsN,EAAShL,KAAKq/E,OAASr/E,KAAKoxO,YAAYhnM,GAAK6J,SAEpGy+L,EAAO58K,IAAMA,EACb48K,EAAOpsO,MAAQtG,KAAKsG,KAAO0E,EAC3B0nO,EAAOpsO,KAAOmsO,EAAUnkC,WAAWmkC,EAAUzvO,EAAE0vO,EAAOpsO,MAAOosO,EAAO1+L,OACpE8hB,GAAO48K,EAAOz+L,OAASjpC,EAG7B,CAEA80M,YAAAA,GACE,MAAiC,QAA1B9/M,KAAKK,QAAQk8E,UAAgD,WAA1Bv8E,KAAKK,QAAQk8E,QACzD,CAEAm1H,IAAAA,GACE,GAAI1xM,KAAKK,QAAQ6vE,QAAS,CACxB,MAAMlqE,EAAMhG,KAAKgG,IACjBm9L,GAASn9L,EAAKhG,MAEdA,KAAK2yO,QAELvvC,GAAWp9L,GAEf,CAKA2sO,KAAAA,GACE,MAAOtyO,QAAShB,EAAA,YAAM+xO,EAAA,WAAaC,EAAA,IAAYrrO,GAAOhG,MAChD,MAACm4L,EAAO2hB,OAAQ02B,GAAanxO,EAC7BuzO,EAAellG,GAAS/7E,MACxB8gL,EAAYvkC,GAAc7uM,EAAKmtG,IAAKxsG,KAAKsG,KAAMtG,KAAKg0C,OACpDu9L,EAAY3rC,GAAO4qC,EAAUzhF,OAC7B,QAAC/jJ,GAAWwlO,EACZphF,EAAWmiF,EAAU90M,KACrBo2M,EAAezjF,EAAW,EAChC,IAAI0jF,EAEJ9yO,KAAK07N,YAGL11N,EAAI++L,UAAY0tC,EAAU1tC,UAAU,QACpC/+L,EAAI6zJ,aAAe,SACnB7zJ,EAAIyuF,UAAY,GAChBzuF,EAAI+oJ,KAAOwiF,EAAUp9M,OAErB,MAAM,SAACu8M,EAAA,UAAUD,EAAA,WAAWI,GAAcN,GAAWC,EAAWphF,GAyE1D0wD,EAAe9/M,KAAK8/M,eACpBwX,EAAct3N,KAAKwxO,sBAEvBsB,EADEhzB,EACO,CACP98M,EAAGo1L,GAAeD,EAAOn4L,KAAKsG,KAAO0E,EAAShL,KAAKuG,MAAQ8qO,EAAW,IACtEjrO,EAAGpG,KAAK81D,IAAM9qD,EAAUssN,EACxBpnL,KAAM,GAGC,CACPltC,EAAGhD,KAAKsG,KAAO0E,EACf5E,EAAGgyL,GAAeD,EAAOn4L,KAAK81D,IAAMwhK,EAActsN,EAAShL,KAAKq/E,OAAS+xJ,EAAY,GAAGn9L,QACxF/D,KAAM,GAIVw+J,GAAsB1uM,KAAKgG,IAAK3G,EAAK0zO,eAErC,MAAM5zL,EAAa0xL,EAAa7lO,EAChChL,KAAKmxO,YAAYrwO,SAAQ,CAAC6kN,EAAY5iN,KACpCiD,EAAI4uF,YAAc+wH,EAAWD,UAC7B1/M,EAAIqqC,UAAYs1K,EAAWD,UAE3B,MAAMpkB,EAAYt7L,EAAIu7L,YAAYokB,EAAWvuL,MAAM4c,MAC7C+wJ,EAAY0tC,EAAU1tC,UAAU4gB,EAAW5gB,YAAc4gB,EAAW5gB,UAAYyrC,EAAUzrC,YAC1F/wJ,EAAQ08L,EAAWmC,EAAevxC,EACxC,IAAIt+L,EAAI8vO,EAAO9vO,EACXoD,EAAI0sO,EAAO1sO,EAEfqsO,EAAUrkC,SAASpuM,KAAKg0C,OAEpB8rK,EACE/8M,EAAI,GAAKC,EAAIgxC,EAAQhpC,EAAUhL,KAAKuG,QACtCH,EAAI0sO,EAAO1sO,GAAK+4C,EAChB2zL,EAAO5iM,OACPltC,EAAI8vO,EAAO9vO,EAAIo1L,GAAeD,EAAOn4L,KAAKsG,KAAO0E,EAAShL,KAAKuG,MAAQ8qO,EAAWyB,EAAO5iM,QAElFntC,EAAI,GAAKqD,EAAI+4C,EAAan/C,KAAKq/E,SACxCr8E,EAAI8vO,EAAO9vO,EAAIA,EAAIouO,EAAY0B,EAAO5iM,MAAM8D,MAAQhpC,EACpD8nO,EAAO5iM,OACP9pC,EAAI0sO,EAAO1sO,EAAIgyL,GAAeD,EAAOn4L,KAAK81D,IAAMwhK,EAActsN,EAAShL,KAAKq/E,OAAS+xJ,EAAY0B,EAAO5iM,MAAM+D,SAYhH,GA1HoB,SAASjxC,EAAGoD,EAAGu/M,GACnC,GAAIzzL,MAAMw+M,IAAaA,GAAY,GAAKx+M,MAAMu+M,IAAcA,EAAY,EACtE,OAIFzqO,EAAI4yF,OAEJ,MAAMnE,EAAYq+F,GAAe6yB,EAAWlxH,UAAW,GAUvD,GATAzuF,EAAIqqC,UAAYyiJ,GAAe6yB,EAAWt1K,UAAWuiM,GACrD5sO,EAAIymO,QAAU35C,GAAe6yB,EAAW8mB,QAAS,QACjDzmO,EAAIq1N,eAAiBvoC,GAAe6yB,EAAW0V,eAAgB,GAC/Dr1N,EAAI0lO,SAAW54C,GAAe6yB,EAAW+lB,SAAU,SACnD1lO,EAAIyuF,UAAYA,EAChBzuF,EAAI4uF,YAAck+F,GAAe6yB,EAAW/wH,YAAag+I,GAEzD5sO,EAAIo1N,YAAYtoC,GAAe6yB,EAAWqtB,SAAU,KAEhDxC,EAAUG,cAAe,CAG3B,MAAMsC,EAAc,CAClB76I,OAAQq4I,EAAYtjO,KAAK+lO,MAAQ,EACjCvwC,WAAYgjB,EAAWhjB,WACvBC,SAAU+iB,EAAW/iB,SACrBI,YAAavuG,GAETuwH,EAAUytB,EAAUpkC,MAAMrrM,EAAG0tO,EAAW,GAI9CruC,GAAgBr8L,EAAKitO,EAAajuB,EAHlB5+M,EAAIysO,EAGgCrC,EAAUI,iBAAmBF,OAC5E,CAGL,MAAMyC,EAAU/sO,EAAI+G,KAAK0D,KAAKu+I,EAAWqhF,GAAa,EAAG,GACnD2C,EAAWX,EAAUnkC,WAAWtrM,EAAG0tO,GACnCvqE,EAAeu/B,GAAcigB,EAAWx/C,cAE9CngK,EAAIivF,YAEAt5F,OAAOojC,OAAOonI,GAAcnwE,MAAK7kD,GAAW,IAANA,IACxCg0J,GAAmBn/L,EAAK,CACtBhD,EAAGowO,EACHhtO,EAAG+sO,EACH76K,EAAGo4K,EACH1yN,EAAGyyN,EACHr4I,OAAQ+tE,IAGVngK,EAAI8oC,KAAKskM,EAAUD,EAASzC,EAAUD,GAGxCzqO,EAAI2uF,OACc,IAAdF,GACFzuF,EAAIsvF,SAIRtvF,EAAIszF,SACN,CAuDE+5I,CAFcZ,EAAUzvO,EAAEA,GAELoD,EAAGu/M,GAExB3iN,EhDxVgBswO,EAACn7C,EAAoC7xL,EAAcC,EAAeimG,IAE/E2rF,KADO3rF,EAAM,OAAS,SACJjmG,EAAkB,WAAV4xL,GAAsB7xL,EAAOC,GAAS,EAAID,EgDsVnEgtO,CAAOvuC,EAAW/hM,EAAI0tO,EAAWmC,EAAc/yB,EAAe98M,EAAIgxC,EAAQh0C,KAAKuG,MAAOlH,EAAKmtG,KAvDhF,SAASxpG,EAAGoD,EAAGu/M,GAC9BhhB,GAAW3+L,EAAK2/M,EAAWvuL,KAAMp0B,EAAGoD,EAAKyqO,EAAa,EAAIU,EAAW,CACnEvtC,cAAe2hB,EAAWltD,OAC1BssC,UAAW0tC,EAAU1tC,UAAU4gB,EAAW5gB,YAE9C,CAqDEhrC,CAAS04E,EAAUzvO,EAAEA,GAAIoD,EAAGu/M,GAExB7F,EACFgzB,EAAO9vO,GAAKgxC,EAAQhpC,OACf,GAA+B,kBAApB26M,EAAWvuL,KAAmB,CAC9C,MAAMg7M,EAAiBb,EAAUpyL,WACjC2zL,EAAO1sO,GAAKisO,GAA0B1sB,EAAYysB,GAAkBpnO,OAEpE8nO,EAAO1sO,GAAK+4C,KAIhB2vJ,GAAqB9uM,KAAKgG,IAAK3G,EAAK0zO,cACtC,CAKArX,SAAAA,GACE,MAAMr8N,EAAOW,KAAKK,QACZ+2N,EAAY/3N,EAAKsvC,MACjB4kM,EAAY3tC,GAAOwxB,EAAUroE,MAC7BykF,EAAe7tC,GAAUyxB,EAAUpsN,SAEzC,IAAKosN,EAAUlnJ,QACb,OAGF,MAAMuiK,EAAYvkC,GAAc7uM,EAAKmtG,IAAKxsG,KAAKsG,KAAMtG,KAAKg0C,OACpDhuC,EAAMhG,KAAKgG,IACXu2E,EAAW66I,EAAU76I,SACrBs2J,EAAeU,EAAU92M,KAAO,EAChCg3M,EAA6BD,EAAa19K,IAAM+8K,EACtD,IAAIzsO,EAIAE,EAAOtG,KAAKsG,KACZ2+F,EAAWjlG,KAAKg0C,MAEpB,GAAIh0C,KAAK8/M,eAEP76G,EAAW93F,KAAK0D,OAAO7Q,KAAKqxO,YAC5BjrO,EAAIpG,KAAK81D,IAAM29K,EACfntO,EAAO8xL,GAAe/4L,EAAK84L,MAAO7xL,EAAMtG,KAAKuG,MAAQ0+F,OAChD,CAEL,MAAMJ,EAAY7kG,KAAKoxO,YAAYlnN,QAAO,CAACyiJ,EAAKlwI,IAAStvB,KAAK0D,IAAI87J,EAAKlwI,EAAKwX,SAAS,GACrF7tC,EAAIqtO,EAA6Br7C,GAAe/4L,EAAK84L,MAAOn4L,KAAK81D,IAAK91D,KAAKq/E,OAASwlB,EAAYxlG,EAAKy6M,OAAO9uM,QAAUhL,KAAKwxO,uBAK7H,MAAMxuO,EAAIo1L,GAAe77G,EAAUj2E,EAAMA,EAAO2+F,GAGhDj/F,EAAI++L,UAAY0tC,EAAU1tC,UAAU7M,GAAmB37G,IACvDv2E,EAAI6zJ,aAAe,SACnB7zJ,EAAI4uF,YAAcwiI,EAAUzlK,MAC5B3rD,EAAIqqC,UAAY+mL,EAAUzlK,MAC1B3rD,EAAI+oJ,KAAOwkF,EAAUp/M,OAErBwwK,GAAW3+L,EAAKoxN,EAAUhgM,KAAMp0B,EAAGoD,EAAGmtO,EACxC,CAKA/B,mBAAAA,GACE,MAAMpa,EAAYp3N,KAAKK,QAAQsuC,MACzB4kM,EAAY3tC,GAAOwxB,EAAUroE,MAC7BykF,EAAe7tC,GAAUyxB,EAAUpsN,SACzC,OAAOosN,EAAUlnJ,QAAUqjK,EAAUp0L,WAAaq0L,EAAav/L,OAAS,CAC1E,CAKAy/L,gBAAAA,CAAiB1wO,EAAGoD,GAClB,IAAIrD,EAAG4wO,EAAQ7yK,EAEf,GAAIo2H,GAAWl0L,EAAGhD,KAAKsG,KAAMtG,KAAKuG,QAC7B2wL,GAAW9wL,EAAGpG,KAAK81D,IAAK91D,KAAKq/E,QAGhC,IADAve,EAAK9gE,KAAKgxO,eACLjuO,EAAI,EAAGA,EAAI+9D,EAAGxiE,SAAUyE,EAG3B,GAFA4wO,EAAS7yK,EAAG/9D,GAERm0L,GAAWl0L,EAAG2wO,EAAOrtO,KAAMqtO,EAAOrtO,KAAOqtO,EAAO3/L,QAC/CkjJ,GAAW9wL,EAAGutO,EAAO79K,IAAK69K,EAAO79K,IAAM69K,EAAO1/L,QAEjD,OAAOj0C,KAAKmxO,YAAYpuO,GAK9B,OAAO,IACT,CAMAnC,WAAAA,CAAYrB,GACV,MAAMF,EAAOW,KAAKK,QAClB,IAoDJ,SAAoBw2B,EAAMx3B,GACxB,IAAc,cAATw3B,GAAiC,aAATA,KAAyBx3B,EAAK++L,SAAW/+L,EAAKu0O,SACzE,OAAO,EAET,GAAIv0O,EAAKuuE,UAAqB,UAAT/2C,GAA6B,YAATA,GACvC,OAAO,EAET,OAAO,CACT,CA5DSg9M,CAAWt0O,EAAEs3B,KAAMx3B,GACtB,OAIF,MAAMy0O,EAAc9zO,KAAK0zO,iBAAiBn0O,EAAEyD,EAAGzD,EAAE6G,GAEjD,GAAe,cAAX7G,EAAEs3B,MAAmC,aAAXt3B,EAAEs3B,KAAqB,CACnD,MAAMysK,EAAWtjM,KAAKixO,aAChB8C,EApfOC,EAAC/tO,EAAGC,IAAY,OAAND,GAAoB,OAANC,GAAcD,EAAEutL,eAAiBttL,EAAEstL,cAAgBvtL,EAAE5E,QAAU6E,EAAE7E,MAofrF2yO,CAAW1wC,EAAUwwC,GAClCxwC,IAAaywC,GACf7yK,GAAK7hE,EAAKu0O,QAAS,CAACr0O,EAAG+jM,EAAUtjM,MAAOA,MAG1CA,KAAKixO,aAAe6C,EAEhBA,IAAgBC,GAClB7yK,GAAK7hE,EAAK++L,QAAS,CAAC7+L,EAAGu0O,EAAa9zO,MAAOA,KAE/C,MAAW8zO,GACT5yK,GAAK7hE,EAAKuuE,QAAS,CAACruE,EAAGu0O,EAAa9zO,MAAOA,KAE/C,EAyBF,SAASqyO,GAA0B1sB,EAAYysB,GAE7C,OAAOA,GADazsB,EAAWvuL,KAAOuuL,EAAWvuL,KAAK94B,OAAS,EAEjE,CAYA,IAAA21O,GAAe,CACbrlM,GAAI,SAMJslM,SAAUpD,GAEVj8K,KAAAA,CAAMwrE,EAAO8zG,EAAO9zO,GAClB,MAAMmlN,EAASnlF,EAAMmlF,OAAS,IAAIsrB,GAAO,CAAC9qO,IAAKq6H,EAAMr6H,IAAK3F,UAASggI,UACnEkqF,GAAQjX,UAAUjzE,EAAOmlF,EAAQnlN,GACjCkqN,GAAQgC,OAAOlsF,EAAOmlF,EACxB,EAEAx+H,IAAAA,CAAKq5C,GACHkqF,GAAQkC,UAAUpsF,EAAOA,EAAMmlF,eACxBnlF,EAAMmlF,MACf,EAKAmP,YAAAA,CAAat0F,EAAO8zG,EAAO9zO,GACzB,MAAMmlN,EAASnlF,EAAMmlF,OACrB+E,GAAQjX,UAAUjzE,EAAOmlF,EAAQnlN,GACjCmlN,EAAOnlN,QAAUA,CACnB,EAIA61N,WAAAA,CAAY71F,GACV,MAAMmlF,EAASnlF,EAAMmlF,OACrBA,EAAO8rB,cACP9rB,EAAOgtB,gBACT,EAGA4B,UAAAA,CAAW/zG,EAAOjxG,GACXA,EAAKq5M,QACRpoG,EAAMmlF,OAAO5kN,YAAYwuB,EAAKvuB,MAElC,EAEA6sI,SAAU,CACRx9D,SAAS,EACTqM,SAAU,MACV47G,MAAO,SACP2yB,UAAU,EACVlxG,SAAS,EACT63E,OAAQ,IAGR7jH,OAAAA,CAAQruE,EAAGomN,EAAYH,GACrB,MAAMnkN,EAAQskN,EAAWnyB,aACnB/uH,EAAK+gJ,EAAOnlF,MACd57D,EAAGu+I,iBAAiB3hN,IACtBojE,EAAG86H,KAAKl+L,GACRskN,EAAWltD,QAAS,IAEpBh0F,EAAG4pF,KAAKhtJ,GACRskN,EAAWltD,QAAS,EAExB,EAEA2lC,QAAS,KACTw1C,QAAS,KAET95B,OAAQ,CACNnoJ,MAAQ3rD,GAAQA,EAAIq6H,MAAMhgI,QAAQsxD,MAClC++K,SAAU,GACV1lO,QAAS,GAYTy6M,cAAAA,CAAeplF,GACb,MAAMm9D,EAAWn9D,EAAM11H,KAAK6yL,UACrBsc,QAAQ,cAAC62B,EAAA,WAAehuC,EAAU,UAAEoC,EAAA,MAAWpzI,EAAA,gBAAO0iL,EAAe,aAAEluE,IAAiB9lC,EAAMmlF,OAAOnlN,QAE5G,OAAOggI,EAAMi0E,yBAAyB5iM,KAAKqvC,IACzC,MAAMT,EAAQS,EAAKqjE,WAAWwpF,SAAS+iC,EAAgB,OAAI3xO,GACrDgkM,EAAc2C,GAAUrlJ,EAAM0iJ,aAEpC,MAAO,CACL5rK,KAAMomK,EAASz8I,EAAK1/C,OAAOkjJ,MAC3Bl0G,UAAWiQ,EAAMi2E,gBACjBmvF,UAAW/zJ,EACX8mG,QAAS13G,EAAK0gF,QACdgrG,QAASnsL,EAAMowJ,eACfsiC,SAAU1yL,EAAMqwJ,WAChB0qB,eAAgB/6K,EAAMswJ,iBACtB86B,SAAUprL,EAAMuwJ,gBAChBp8G,WAAYuuG,EAAYhvJ,MAAQgvJ,EAAY/uJ,QAAU,EACtD2gD,YAAat0C,EAAMi9I,YACnBoF,WAAYA,GAAcriJ,EAAMqiJ,WAChCC,SAAUtiJ,EAAMsiJ,SAChBmC,UAAWA,GAAazkJ,EAAMykJ,UAC9B5+B,aAAckuE,IAAoBluE,GAAgB7lH,EAAM6lH,cAGxDqtB,aAAczyI,EAAK1/C,MACpB,GACArB,KACL,GAGF2uC,MAAO,CACLgjB,MAAQ3rD,GAAQA,EAAIq6H,MAAMhgI,QAAQsxD,MAClCue,SAAS,EACTqM,SAAU,SACVnlD,KAAM,KAIV0vG,YAAa,CACXo4D,YAAc3hM,IAAUA,EAAK8yH,WAAW,MACxCypF,OAAQ,CACN5a,YAAc3hM,IAAU,CAAC,iBAAkB,SAAU,QAAQw8C,SAASx8C,MCtsBrE,MAAM+2O,WAAcloN,GAIzB2B,WAAAA,CAAY+7D,GACV3F,QAEAnkF,KAAKqgI,MAAQv2C,EAAOu2C,MACpBrgI,KAAKK,QAAUypF,EAAOzpF,QACtBL,KAAKgG,IAAM8jF,EAAO9jF,IAClBhG,KAAKu0O,cAAWv1O,EAChBgB,KAAK81D,SAAM92D,EACXgB,KAAKq/E,YAASrgF,EACdgB,KAAKsG,UAAOtH,EACZgB,KAAKuG,WAAQvH,EACbgB,KAAKg0C,WAAQh1C,EACbgB,KAAKi0C,YAASj1C,EACdgB,KAAKu8E,cAAWv9E,EAChBgB,KAAKyxL,YAASzyL,EACdgB,KAAK8qN,cAAW9rN,CAClB,CAEAiS,MAAAA,CAAOg0F,EAAUJ,GACf,MAAMxlG,EAAOW,KAAKK,QAKlB,GAHAL,KAAKsG,KAAO,EACZtG,KAAK81D,IAAM,GAENz2D,EAAK6wE,QAER,YADAlwE,KAAKg0C,MAAQh0C,KAAKi0C,OAASj0C,KAAKuG,MAAQvG,KAAKq/E,OAAS,GAIxDr/E,KAAKg0C,MAAQh0C,KAAKuG,MAAQ0+F,EAC1BjlG,KAAKi0C,OAASj0C,KAAKq/E,OAASwlB,EAE5B,MAAM41H,EAAY9xM,GAAQtpB,EAAK+3B,MAAQ/3B,EAAK+3B,KAAK94B,OAAS,EAC1D0B,KAAKu0O,SAAW5uC,GAAUtmM,EAAK2L,SAC/B,MAAMwpO,EAAW/Z,EAAY70B,GAAOvmM,EAAK0vJ,MAAM5vG,WAAan/C,KAAKu0O,SAAStgM,OAEtEj0C,KAAK8/M,eACP9/M,KAAKi0C,OAASugM,EAEdx0O,KAAKg0C,MAAQwgM,CAEjB,CAEA10B,YAAAA,GACE,MAAMj1K,EAAM7qC,KAAKK,QAAQk8E,SACzB,MAAe,QAAR1xC,GAAyB,WAARA,CAC1B,CAEA4pM,SAAAA,CAAU9vO,GACR,MAAM,IAACmxD,EAAA,KAAKxvD,EAAA,OAAM+4E,EAAA,MAAQ94E,EAAA,QAAOlG,GAAWL,KACtCm4L,EAAQ93L,EAAQ83L,MACtB,IACIlzF,EAAU02H,EAAQC,EADlBh5B,EAAW,EAmBf,OAhBI5iM,KAAK8/M,gBACP6b,EAASvjC,GAAeD,EAAO7xL,EAAMC,GACrCq1N,EAAS9lK,EAAMnxD,EACfsgG,EAAW1+F,EAAQD,IAEM,SAArBjG,EAAQk8E,UACVo/I,EAASr1N,EAAO3B,EAChBi3N,EAASxjC,GAAeD,EAAO94G,EAAQvpB,GACvC8sI,GAAiB,GAANtqG,KAEXqjI,EAASp1N,EAAQ5B,EACjBi3N,EAASxjC,GAAeD,EAAOriI,EAAKupB,GACpCujH,EAAgB,GAALtqG,IAEb2M,EAAW5lB,EAASvpB,GAEf,CAAC6lK,SAAQC,SAAQ32H,WAAU29F,WACpC,CAEA8O,IAAAA,GACE,MAAM1rM,EAAMhG,KAAKgG,IACX3G,EAAOW,KAAKK,QAElB,IAAKhB,EAAK6wE,QACR,OAGF,MAAMwkK,EAAW9uC,GAAOvmM,EAAK0vJ,MAEvBpqJ,EADa+vO,EAASv1L,WACA,EAAIn/C,KAAKu0O,SAASz+K,KACxC,OAAC6lK,EAAA,OAAQC,EAAA,SAAQ32H,EAAA,SAAU29F,GAAY5iM,KAAKy0O,UAAU9vO,GAE5DggM,GAAW3+L,EAAK3G,EAAK+3B,KAAM,EAAG,EAAGs9M,EAAU,CACzC/iL,MAAOtyD,EAAKsyD,MACZszC,WACA29F,WACAmC,UAAW7M,GAAmB74L,EAAK84L,OACnCt+B,aAAc,SACdirC,YAAa,CAAC62B,EAAQC,IAE1B,EAeF,IAAA+Y,GAAe,CACb/lM,GAAI,QAMJslM,SAAUI,GAEVz/K,KAAAA,CAAMwrE,EAAO8zG,EAAO9zO,IArBtB,SAAqBggI,EAAO+2F,GAC1B,MAAMzoL,EAAQ,IAAI2lM,GAAM,CACtBtuO,IAAKq6H,EAAMr6H,IACX3F,QAAS+2N,EACT/2F,UAGFkqF,GAAQjX,UAAUjzE,EAAO1xF,EAAOyoL,GAChC7M,GAAQgC,OAAOlsF,EAAO1xF,GACtB0xF,EAAMu0G,WAAajmM,CACrB,CAYIkmM,CAAYx0G,EAAOhgI,EACrB,EAEA2mF,IAAAA,CAAKq5C,GACH,MAAMu0G,EAAav0G,EAAMu0G,WACzBrqB,GAAQkC,UAAUpsF,EAAOu0G,UAClBv0G,EAAMu0G,UACf,EAEAjgB,YAAAA,CAAat0F,EAAO8zG,EAAO9zO,GACzB,MAAMsuC,EAAQ0xF,EAAMu0G,WACpBrqB,GAAQjX,UAAUjzE,EAAO1xF,EAAOtuC,GAChCsuC,EAAMtuC,QAAUA,CAClB,EAEAqtI,SAAU,CACRyqD,MAAO,SACPjoH,SAAS,EACT6+E,KAAM,CACJ0iC,OAAQ,QAEVq5B,UAAU,EACV9/M,QAAS,GACTuxE,SAAU,MACVnlD,KAAM,GACNq6J,OAAQ,KAGVgrC,cAAe,CACb9qK,MAAO,SAGTm1E,YAAa,CACXo4D,aAAa,EACbC,YAAY,IChKJ,IAAItsK,QCahB,MAAMiiN,GAAc,CAIlBC,OAAAA,CAAQ1yG,GACN,IAAKA,EAAM/jI,OACT,OAAO,EAGT,IAAIyE,EAAG4wC,EACHqhM,EAAO,IAAIriN,IACXvsB,EAAI,EACJ6qC,EAAQ,EAEZ,IAAKluC,EAAI,EAAG4wC,EAAM0uF,EAAM/jI,OAAQyE,EAAI4wC,IAAO5wC,EAAG,CAC5C,MAAM+Y,EAAKumH,EAAMt/H,GAAG+lB,QACpB,GAAIhN,GAAMA,EAAGuuG,WAAY,CACvB,MAAMx/E,EAAM/uB,EAAG40M,kBACfskB,EAAKh0O,IAAI6pC,EAAI7nC,GACboD,GAAKykC,EAAIzkC,IACP6qC,EAEN,CAGA,GAAc,IAAVA,GAA6B,IAAd+jM,EAAKv4M,KACtB,OAAO,EAGT,MAAMw4M,EAAW,IAAID,GAAM9qN,QAAO,CAACjkB,EAAGC,IAAMD,EAAIC,IAAK8uO,EAAKv4M,KAE1D,MAAO,CACLz5B,EAAGiyO,EACH7uO,EAAGA,EAAI6qC,EAEX,EAKAg5K,OAAAA,CAAQ5nF,EAAO6yG,GACb,IAAK7yG,EAAM/jI,OACT,OAAO,EAGT,IAGIyE,EAAG4wC,EAAKwhM,EAHRnyO,EAAIkyO,EAAclyO,EAClBoD,EAAI8uO,EAAc9uO,EAClBmjN,EAAcl3L,OAAOuiK,kBAGzB,IAAK7xL,EAAI,EAAG4wC,EAAM0uF,EAAM/jI,OAAQyE,EAAI4wC,IAAO5wC,EAAG,CAC5C,MAAM+Y,EAAKumH,EAAMt/H,GAAG+lB,QACpB,GAAIhN,GAAMA,EAAGuuG,WAAY,CACvB,MACMvnH,EAAIwzL,GAAsB4+C,EADjBp5N,EAAG0tM,kBAGd1mN,EAAIymN,IACNA,EAAczmN,EACdqyO,EAAiBr5N,GAGvB,CAEA,GAAIq5N,EAAgB,CAClB,MAAMC,EAAKD,EAAezkB,kBAC1B1tN,EAAIoyO,EAAGpyO,EACPoD,EAAIgvO,EAAGhvO,EAGT,MAAO,CACLpD,IACAoD,IAEJ,GAIF,SAASivO,GAAa10L,EAAM20L,GAU1B,OATIA,IACE3sN,GAAQ2sN,GAEV5sN,MAAMxoB,UAAUiB,KAAK1C,MAAMkiD,EAAM20L,GAEjC30L,EAAKx/C,KAAKm0O,IAIP30L,CACT,CAQA,SAAS40L,GAAc5lN,GACrB,OAAoB,kBAARA,GAAoBA,aAAenvB,SAAWmvB,EAAIruB,QAAQ,OAAS,EACtEquB,EAAI6nB,MAAM,MAEZ7nB,CACT,CASA,SAAS6lN,GAAkBn1G,EAAO1zC,GAChC,MAAM,QAAC7jE,EAAO,aAAE0qK,EAAA,MAAcnyL,GAASsrF,EACjCy3B,EAAaic,EAAMk4E,eAAe/kB,GAAcpvE,YAChD,MAACmgC,EAAA,MAAO/lJ,GAAS4lH,EAAW82F,iBAAiB75M,GAEnD,MAAO,CACLg/H,QACAkkB,QACA5pD,OAAQypB,EAAW+1F,UAAU94M,GAC7Bq6M,IAAKr7E,EAAM11H,KAAK6yL,SAAShK,GAAc7oL,KAAKtJ,GAC5Co0O,eAAgBj3O,EAChB+tE,QAAS63C,EAAWqzF,aACpBhiK,UAAWp0C,EACXmyL,eACA1qK,UAEJ,CAKA,SAAS4sN,GAAeC,EAASt1O,GAC/B,MAAM2F,EAAM2vO,EAAQt1G,MAAMr6H,KACpB,KAACmmB,EAAI,OAAEypN,EAAA,MAAQjnM,GAASgnM,GACxB,SAACjF,EAAA,UAAUD,GAAapwO,EACxBw1O,EAAWjwC,GAAOvlM,EAAQw1O,UAC1BtC,EAAY3tC,GAAOvlM,EAAQkzO,WAC3BuC,EAAalwC,GAAOvlM,EAAQy1O,YAC5BC,EAAiBpnM,EAAMrwC,OACvB03O,EAAkBJ,EAAOt3O,OACzB23O,EAAoB9pN,EAAK7tB,OAEzB0M,EAAU26L,GAAUtlM,EAAQ2K,SAClC,IAAIipC,EAASjpC,EAAQipC,OACjBD,EAAQ,EAGRkiM,EAAqB/pN,EAAKjC,QAAO,CAAC+mB,EAAOklM,IAAallM,EAAQklM,EAASrtH,OAAOxqH,OAAS63O,EAASvxC,MAAMtmM,OAAS63O,EAASjuH,MAAM5pH,QAAQ,GAQ1I,GAPA43O,GAAsBP,EAAQS,WAAW93O,OAASq3O,EAAQU,UAAU/3O,OAEhEy3O,IACF9hM,GAAU8hM,EAAiBxC,EAAUp0L,YACnC42L,EAAiB,GAAK11O,EAAQi2O,aAC/Bj2O,EAAQk2O,mBAEPL,EAAoB,CAGtBjiM,GAAUgiM,GADa51O,EAAQm2O,cAAgBrpO,KAAK0D,IAAI4/N,EAAWoF,EAAS12L,YAAc02L,EAAS12L,aAEjG+2L,EAAqBD,GAAqBJ,EAAS12L,YACnD+2L,EAAqB,GAAK71O,EAAQo2O,YAElCT,IACF/hM,GAAU5zC,EAAQq2O,gBACjBV,EAAkBF,EAAW32L,YAC5B62L,EAAkB,GAAK31O,EAAQs2O,eAInC,IAAIC,EAAe,EACnB,MAAMC,EAAe,SAAS3mM,GAC5B8D,EAAQ7mC,KAAK0D,IAAImjC,EAAOhuC,EAAIu7L,YAAYrxJ,GAAM8D,MAAQ4iM,EACxD,EA+BA,OA7BA5wO,EAAI4yF,OAEJ5yF,EAAI+oJ,KAAOwkF,EAAUp/M,OACrB7H,GAAKqpN,EAAQhnM,MAAOkoM,GAGpB7wO,EAAI+oJ,KAAO8mF,EAAS1hN,OACpB7H,GAAKqpN,EAAQS,WAAWnrO,OAAO0qO,EAAQU,WAAYQ,GAGnDD,EAAev2O,EAAQm2O,cAAiB9F,EAAW,EAAIrwO,EAAQ+qN,WAAc,EAC7E9+L,GAAKH,GAAOgqN,IACV7pN,GAAK6pN,EAASrtH,OAAQ+tH,GACtBvqN,GAAK6pN,EAASvxC,MAAOiyC,GACrBvqN,GAAK6pN,EAASjuH,MAAO2uH,EAAA,IAIvBD,EAAe,EAGf5wO,EAAI+oJ,KAAO+mF,EAAW3hN,OACtB7H,GAAKqpN,EAAQC,OAAQiB,GAErB7wO,EAAIszF,UAGJtlD,GAAShpC,EAAQgpC,MAEV,CAACA,QAAOC,SACjB,CAyBA,SAAS6iM,GAAgBz2G,EAAOhgI,EAASo8B,EAAMs6M,GAC7C,MAAM,EAAC/zO,EAAA,MAAGgxC,GAASvX,GACZuX,MAAOgjM,EAAYz7B,WAAW,KAACj1M,EAAI,MAAEC,IAAU85H,EACtD,IAAI42G,EAAS,SAcb,MAZe,WAAXF,EACFE,EAASj0O,IAAMsD,EAAOC,GAAS,EAAI,OAAS,QACnCvD,GAAKgxC,EAAQ,EACtBijM,EAAS,OACAj0O,GAAKg0O,EAAahjM,EAAQ,IACnCijM,EAAS,SAtBb,SAA6BA,EAAQ52G,EAAOhgI,EAASo8B,GACnD,MAAM,EAACz5B,EAAA,MAAGgxC,GAASvX,EACby6M,EAAQ72O,EAAQ82O,UAAY92O,EAAQ+2O,aAC1C,MAAe,SAAXH,GAAqBj0O,EAAIgxC,EAAQkjM,EAAQ72G,EAAMrsF,OAIpC,UAAXijM,GAAsBj0O,EAAIgxC,EAAQkjM,EAAQ,QAA9C,CAGF,CAeMG,CAAoBJ,EAAQ52G,EAAOhgI,EAASo8B,KAC9Cw6M,EAAS,UAGJA,CACT,CAKA,SAASK,GAAmBj3G,EAAOhgI,EAASo8B,GAC1C,MAAMs6M,EAASt6M,EAAKs6M,QAAU12O,EAAQ02O,QA/CxC,SAAyB12G,EAAO5jG,GAC9B,MAAM,EAACr2B,EAAA,OAAG6tC,GAAUxX,EAEpB,OAAIr2B,EAAI6tC,EAAS,EACR,MACE7tC,EAAKi6H,EAAMpsF,OAASA,EAAS,EAC/B,SAEF,QACT,CAsCkDsjM,CAAgBl3G,EAAO5jG,GAEvE,MAAO,CACLw6M,OAAQx6M,EAAKw6M,QAAU52O,EAAQ42O,QAAUH,GAAgBz2G,EAAOhgI,EAASo8B,EAAMs6M,GAC/EA,SAEJ,CA4BA,SAASS,GAAmBn3O,EAASo8B,EAAMg7M,EAAWp3G,GACpD,MAAM,UAAC82G,EAAS,aAAEC,EAAA,aAAc50C,GAAgBniM,GAC1C,OAAC42O,EAAA,OAAQF,GAAUU,EACnBC,EAAiBP,EAAYC,GAC7B,QAAC33J,EAAO,SAAEC,EAAQ,WAAEE,EAAA,YAAYC,GAAe6lH,GAAclD,GAEnE,IAAIx/L,EAhCN,SAAgBy5B,EAAMw6M,GACpB,IAAI,EAACj0O,EAAA,MAAGgxC,GAASvX,EAMjB,MALe,UAAXw6M,EACFj0O,GAAKgxC,EACe,WAAXijM,IACTj0O,GAAMgxC,EAAQ,GAEThxC,CACT,CAwBU20O,CAAOl7M,EAAMw6M,GACrB,MAAM7wO,EAvBR,SAAgBq2B,EAAMs6M,EAAQW,GAE5B,IAAI,EAACtxO,EAAA,OAAG6tC,GAAUxX,EAQlB,MAPe,QAAXs6M,EACF3wO,GAAKsxO,EAELtxO,GADoB,WAAX2wO,EACJ9iM,EAASyjM,EAERzjM,EAAS,EAEV7tC,CACT,CAYYwxO,CAAOn7M,EAAMs6M,EAAQW,GAc/B,MAZe,WAAXX,EACa,SAAXE,EACFj0O,GAAK00O,EACe,UAAXT,IACTj0O,GAAK00O,GAEa,SAAXT,EACTj0O,GAAKmK,KAAK0D,IAAI4uE,EAASG,GAAcu3J,EACjB,UAAXF,IACTj0O,GAAKmK,KAAK0D,IAAI6uE,EAAUG,GAAes3J,GAGlC,CACLn0O,EAAGi0L,GAAYj0L,EAAG,EAAGq9H,EAAMrsF,MAAQvX,EAAKuX,OACxC5tC,EAAG6wL,GAAY7wL,EAAG,EAAGi6H,EAAMpsF,OAASxX,EAAKwX,QAE7C,CAEA,SAAS4jM,GAAYlC,EAASx9C,EAAO93L,GACnC,MAAM2K,EAAU26L,GAAUtlM,EAAQ2K,SAElC,MAAiB,WAAVmtL,EACHw9C,EAAQ3yO,EAAI2yO,EAAQ3hM,MAAQ,EAClB,UAAVmkJ,EACEw9C,EAAQ3yO,EAAI2yO,EAAQ3hM,MAAQhpC,EAAQzE,MACpCovO,EAAQ3yO,EAAIgI,EAAQ1E,IAC5B,CAKA,SAASwxO,GAAwB52K,GAC/B,OAAOm0K,GAAa,GAAIE,GAAcr0K,GACxC,CAUA,SAAS62K,GAAkBj6G,EAAW1tF,GACpC,MAAMsuJ,EAAWtuJ,GAAWA,EAAQm8B,SAAWn8B,EAAQm8B,QAAQopK,SAAWvlM,EAAQm8B,QAAQopK,QAAQ73G,UAClG,OAAO4gE,EAAW5gE,EAAU4gE,SAASA,GAAY5gE,CACnD,CAEA,MAAMk6G,GAAmB,CAEvBC,YAAax9O,GACbk0C,KAAAA,CAAMupM,GACJ,GAAIA,EAAa55O,OAAS,EAAG,CAC3B,MAAMquF,EAAOurJ,EAAa,GACpBp+B,EAASntH,EAAK0zC,MAAM11H,KAAKmvM,OACzBq+B,EAAar+B,EAASA,EAAOx7M,OAAS,EAE5C,GAAI0B,MAAQA,KAAKK,SAAiC,YAAtBL,KAAKK,QAAQuJ,KACvC,OAAO+iF,EAAKpgB,QAAQg4E,OAAS,GACxB,GAAI53D,EAAK43D,MACd,OAAO53D,EAAK43D,MACP,GAAI4zF,EAAa,GAAKxrJ,EAAKl3C,UAAY0iM,EAC5C,OAAOr+B,EAAOntH,EAAKl3C,WAIvB,MAAO,EACT,EACA2iM,WAAY39O,GAGZ27O,WAAY37O,GAGZ49O,YAAa59O,GACb8pJ,KAAAA,CAAM+zF,GACJ,GAAIt4O,MAAQA,KAAKK,SAAiC,YAAtBL,KAAKK,QAAQuJ,KACvC,OAAO0uO,EAAY/zF,MAAQ,KAAO+zF,EAAY7C,gBAAkB6C,EAAY7C,eAG9E,IAAIlxF,EAAQ+zF,EAAY/rK,QAAQg4E,OAAS,GAErCA,IACFA,GAAS,MAEX,MAAM/lJ,EAAQ85O,EAAY7C,eAI1B,OAHK9iD,GAAcn0L,KACjB+lJ,GAAS/lJ,GAEJ+lJ,CACT,EACAg0F,UAAAA,CAAWD,GACT,MACMj4O,EADOi4O,EAAYj4G,MAAMk4E,eAAe+/B,EAAY9kD,cACrCpvE,WAAWwpF,SAAS0qC,EAAY7iM,WACrD,MAAO,CACL8nJ,YAAal9L,EAAQk9L,YACrBhnE,gBAAiBl2H,EAAQk2H,gBACzBysE,YAAa3iM,EAAQ2iM,YACrB2N,WAAYtwM,EAAQswM,WACpBC,iBAAkBvwM,EAAQuwM,iBAC1BzqC,aAAc,EAElB,EACAqyE,cAAAA,GACE,OAAOx4O,KAAKK,QAAQo4O,SACtB,EACAC,eAAAA,CAAgBJ,GACd,MACMj4O,EADOi4O,EAAYj4G,MAAMk4E,eAAe+/B,EAAY9kD,cACrCpvE,WAAWwpF,SAAS0qC,EAAY7iM,WACrD,MAAO,CACLktJ,WAAYtiM,EAAQsiM,WACpBC,SAAUviM,EAAQuiM,SAEtB,EACA+1C,WAAYl+O,GAGZ47O,UAAW57O,GAGXm+O,aAAcn+O,GACdm7O,OAAQn7O,GACRo+O,YAAap+O,IAYf,SAASq+O,GAA2Bh7G,EAAWvgI,EAAMyI,EAAK83B,GACxD,MAAMjO,EAASiuG,EAAUvgI,GAAMS,KAAKgI,EAAK83B,GAEzC,MAAsB,qBAAXjO,EACFmoN,GAAiBz6O,GAAMS,KAAKgI,EAAK83B,GAGnCjO,CACT,CAEO,MAAMkpN,WAAgB3sN,GAO3B2B,WAAAA,CAAY+7D,GACV3F,QAEAnkF,KAAKo/C,QAAU,EACfp/C,KAAK2xM,QAAU,GACf3xM,KAAKg5O,oBAAiBh6O,EACtBgB,KAAK21C,WAAQ32C,EACbgB,KAAKi5O,uBAAoBj6O,EACzBgB,KAAKk5O,cAAgB,GACrBl5O,KAAK4zM,iBAAc50M,EACnBgB,KAAK+2M,cAAW/3M,EAChBgB,KAAKqgI,MAAQv2C,EAAOu2C,MACpBrgI,KAAKK,QAAUypF,EAAOzpF,QACtBL,KAAKm5O,gBAAan6O,EAClBgB,KAAK2uC,WAAQ3vC,EACbgB,KAAKo2O,gBAAap3O,EAClBgB,KAAKmsB,UAAOntB,EACZgB,KAAKq2O,eAAYr3O,EACjBgB,KAAK41O,YAAS52O,EACdgB,KAAKi3O,YAASj4O,EACdgB,KAAK+2O,YAAS/3O,EACdgB,KAAKgD,OAAIhE,EACTgB,KAAKoG,OAAIpH,EACTgB,KAAKi0C,YAASj1C,EACdgB,KAAKg0C,WAAQh1C,EACbgB,KAAKo5O,YAASp6O,EACdgB,KAAKq5O,YAASr6O,EAGdgB,KAAKs5O,iBAAct6O,EACnBgB,KAAKu5O,sBAAmBv6O,EACxBgB,KAAKw5O,qBAAkBx6O,CACzB,CAEAm4M,UAAAA,CAAW92M,GACTL,KAAKK,QAAUA,EACfL,KAAKi5O,uBAAoBj6O,EACzBgB,KAAK+2M,cAAW/3M,CAClB,CAKAg9M,kBAAAA,GACE,MAAM5F,EAASp2M,KAAKi5O,kBAEpB,GAAI7iC,EACF,OAAOA,EAGT,MAAM/1E,EAAQrgI,KAAKqgI,MACbhgI,EAAUL,KAAKK,QAAQsnM,WAAW3nM,KAAK+3F,cACvC14F,EAAOgB,EAAQixN,SAAWjxF,EAAMhgI,QAAQ22D,WAAa32D,EAAQi/L,WAC7DA,EAAa,IAAI8T,GAAWpzM,KAAKqgI,MAAOhhI,GAK9C,OAJIA,EAAKinM,aACPtmM,KAAKi5O,kBAAoBt9O,OAAOk9K,OAAOymB,IAGlCA,CACT,CAKAvnG,UAAAA,GACE,OAAO/3F,KAAK+2M,WACZ/2M,KAAK+2M,UAtLqBlwF,EAsLW7mH,KAAKqgI,MAAMtoC,aAtLd49I,EAsL4B31O,KAtLnBk4O,EAsLyBl4O,KAAKk5O,cArLpEr2I,GAAcgkB,EAAQ,CAC3B8uH,UACAuC,eACArhN,KAAM,cAJV,IAA8BgwF,EAAQ8uH,EAASuC,CAuL7C,CAEAuB,QAAAA,CAASrpM,EAAS/vC,GAChB,MAAM,UAACy9H,GAAaz9H,EAEd43O,EAAca,GAA2Bh7G,EAAW,cAAe99H,KAAMowC,GACzEzB,EAAQmqM,GAA2Bh7G,EAAW,QAAS99H,KAAMowC,GAC7DgoM,EAAaU,GAA2Bh7G,EAAW,aAAc99H,KAAMowC,GAE7E,IAAIw0J,EAAQ,GAKZ,OAJAA,EAAQywC,GAAazwC,EAAO2wC,GAAc0C,IAC1CrzC,EAAQywC,GAAazwC,EAAO2wC,GAAc5mM,IAC1Ci2J,EAAQywC,GAAazwC,EAAO2wC,GAAc6C,IAEnCxzC,CACT,CAEA80C,aAAAA,CAAcxB,EAAc73O,GAC1B,OAAOy3O,GACLgB,GAA2Bz4O,EAAQy9H,UAAW,aAAc99H,KAAMk4O,GAEtE,CAEAyB,OAAAA,CAAQzB,EAAc73O,GACpB,MAAM,UAACy9H,GAAaz9H,EACdu5O,EAAY,GAgBlB,OAdAttN,GAAK4rN,GAAe9nM,IAClB,MAAM+lM,EAAW,CACfrtH,OAAQ,GACR87E,MAAO,GACP18E,MAAO,IAEH2xH,EAAS9B,GAAkBj6G,EAAW1tF,GAC5CilM,GAAac,EAASrtH,OAAQysH,GAAcuD,GAA2Be,EAAQ,cAAe75O,KAAMowC,KACpGilM,GAAac,EAASvxC,MAAOk0C,GAA2Be,EAAQ,QAAS75O,KAAMowC,IAC/EilM,GAAac,EAASjuH,MAAOqtH,GAAcuD,GAA2Be,EAAQ,aAAc75O,KAAMowC,KAElGwpM,EAAUz4O,KAAKg1O,EAAA,IAGVyD,CACT,CAEAE,YAAAA,CAAa5B,EAAc73O,GACzB,OAAOy3O,GACLgB,GAA2Bz4O,EAAQy9H,UAAW,YAAa99H,KAAMk4O,GAErE,CAGA6B,SAAAA,CAAU7B,EAAc73O,GACtB,MAAM,UAACy9H,GAAaz9H,EAEdu4O,EAAeE,GAA2Bh7G,EAAW,eAAgB99H,KAAMk4O,GAC3EtC,EAASkD,GAA2Bh7G,EAAW,SAAU99H,KAAMk4O,GAC/DW,EAAcC,GAA2Bh7G,EAAW,cAAe99H,KAAMk4O,GAE/E,IAAItzC,EAAQ,GAKZ,OAJAA,EAAQywC,GAAazwC,EAAO2wC,GAAcqD,IAC1Ch0C,EAAQywC,GAAazwC,EAAO2wC,GAAcK,IAC1ChxC,EAAQywC,GAAazwC,EAAO2wC,GAAcsD,IAEnCj0C,CACT,CAKAo1C,YAAAA,CAAa35O,GACX,MAAMkiI,EAASviI,KAAK2xM,QACdhnM,EAAO3K,KAAKqgI,MAAM11H,KAClB2uO,EAAc,GACdC,EAAmB,GACnBC,EAAkB,GACxB,IACIz2O,EAAG4wC,EADHukM,EAAe,GAGnB,IAAKn1O,EAAI,EAAG4wC,EAAM4uF,EAAOjkI,OAAQyE,EAAI4wC,IAAO5wC,EAC1Cm1O,EAAa/2O,KAAKq0O,GAAkBx1O,KAAKqgI,MAAOkC,EAAOx/H,KAyBzD,OArBI1C,EAAQ6oB,SACVgvN,EAAeA,EAAahvN,QAAO,CAACJ,EAASznB,EAAO4oB,IAAU5pB,EAAQ6oB,OAAOJ,EAASznB,EAAO4oB,EAAOtf,MAIlGtK,EAAQ45O,WACV/B,EAAeA,EAAatgI,MAAK,CAAC3xG,EAAGC,IAAM7F,EAAQ45O,SAASh0O,EAAGC,EAAGyE,MAIpE2hB,GAAK4rN,GAAe9nM,IAClB,MAAMypM,EAAS9B,GAAkB13O,EAAQy9H,UAAW1tF,GACpDkpM,EAAYn4O,KAAK23O,GAA2Be,EAAQ,aAAc75O,KAAMowC,IACxEmpM,EAAiBp4O,KAAK23O,GAA2Be,EAAQ,kBAAmB75O,KAAMowC,IAClFopM,EAAgBr4O,KAAK23O,GAA2Be,EAAQ,iBAAkB75O,KAAMowC,GAAA,IAGlFpwC,KAAKs5O,YAAcA,EACnBt5O,KAAKu5O,iBAAmBA,EACxBv5O,KAAKw5O,gBAAkBA,EACvBx5O,KAAKm5O,WAAajB,EACXA,CACT,CAEAjnO,MAAAA,CAAOyoL,EAAS+uC,GACd,MAAMpoO,EAAUL,KAAKK,QAAQsnM,WAAW3nM,KAAK+3F,cACvCwqC,EAASviI,KAAK2xM,QACpB,IAAIrjM,EACA4pO,EAAe,GAEnB,GAAK31G,EAAOjkI,OAML,CACL,MAAMi+E,EAAWu4J,GAAYz0O,EAAQk8E,UAAUv+E,KAAKgC,KAAMuiI,EAAQviI,KAAKg5O,gBACvEd,EAAel4O,KAAKg6O,aAAa35O,GAEjCL,KAAK2uC,MAAQ3uC,KAAKy5O,SAASvB,EAAc73O,GACzCL,KAAKo2O,WAAap2O,KAAK05O,cAAcxB,EAAc73O,GACnDL,KAAKmsB,KAAOnsB,KAAK25O,QAAQzB,EAAc73O,GACvCL,KAAKq2O,UAAYr2O,KAAK85O,aAAa5B,EAAc73O,GACjDL,KAAK41O,OAAS51O,KAAK+5O,UAAU7B,EAAc73O,GAE3C,MAAMo8B,EAAOz8B,KAAK21C,MAAQ+/L,GAAe11O,KAAMK,GACzC65O,EAAkBv+O,OAAO49C,OAAO,CAAC,EAAGgjC,EAAU9/C,GAC9Cg7M,EAAYH,GAAmBt3O,KAAKqgI,MAAOhgI,EAAS65O,GACpDC,EAAkB3C,GAAmBn3O,EAAS65O,EAAiBzC,EAAWz3O,KAAKqgI,OAErFrgI,KAAKi3O,OAASQ,EAAUR,OACxBj3O,KAAK+2O,OAASU,EAAUV,OAExBzoO,EAAa,CACX8wC,QAAS,EACTp8C,EAAGm3O,EAAgBn3O,EACnBoD,EAAG+zO,EAAgB/zO,EACnB4tC,MAAOvX,EAAKuX,MACZC,OAAQxX,EAAKwX,OACbmlM,OAAQ78J,EAASv5E,EACjBq2O,OAAQ98J,EAASn2E,QA9BE,IAAjBpG,KAAKo/C,UACP9wC,EAAa,CACX8wC,QAAS,IAgCfp/C,KAAKk5O,cAAgBhB,EACrBl4O,KAAK+2M,cAAW/3M,EAEZsP,GACFtO,KAAKg8M,qBAAqB/qM,OAAOjR,KAAMsO,GAGrCorL,GAAWr5L,EAAQ+5O,UACrB/5O,EAAQ+5O,SAASp8O,KAAKgC,KAAM,CAACqgI,MAAOrgI,KAAKqgI,MAAOs1G,QAAS31O,KAAMyoO,UAEnE,CAEA4R,SAAAA,CAAUC,EAAct0O,EAAKy2B,EAAMp8B,GACjC,MAAMk6O,EAAgBv6O,KAAKw6O,iBAAiBF,EAAc79M,EAAMp8B,GAEhE2F,EAAImvF,OAAOolJ,EAAc1gB,GAAI0gB,EAAczgB,IAC3C9zN,EAAImvF,OAAOolJ,EAAcp3O,GAAIo3O,EAAcxgB,IAC3C/zN,EAAImvF,OAAOolJ,EAAcE,GAAIF,EAAcG,GAC7C,CAEAF,gBAAAA,CAAiBF,EAAc79M,EAAMp8B,GACnC,MAAM,OAAC42O,EAAM,OAAEF,GAAU/2O,MACnB,UAACm3O,EAAA,aAAW30C,GAAgBniM,GAC5B,QAACo/E,EAAO,SAAEC,EAAQ,WAAEE,EAAA,YAAYC,GAAe6lH,GAAclD,IAC5Dx/L,EAAG23O,EAAKv0O,EAAGw0O,GAAON,GACnB,MAACtmM,EAAA,OAAOC,GAAUxX,EACxB,IAAIo9L,EAAI12N,EAAIs3O,EAAI3gB,EAAIC,EAAI2gB,EAgDxB,MA9Ce,WAAX3D,GACFhd,EAAK6gB,EAAO3mM,EAAS,EAEN,SAAXgjM,GACFpd,EAAK8gB,EACLx3O,EAAK02N,EAAKsd,EAGVrd,EAAKC,EAAKod,EACVuD,EAAK3gB,EAAKod,IAEVtd,EAAK8gB,EAAM3mM,EACX7wC,EAAK02N,EAAKsd,EAGVrd,EAAKC,EAAKod,EACVuD,EAAK3gB,EAAKod,GAGZsD,EAAK5gB,IAGH12N,EADa,SAAX8zO,EACG0D,EAAMxtO,KAAK0D,IAAI4uE,EAASG,GAAeu3J,EACxB,UAAXF,EACJ0D,EAAM3mM,EAAQ7mC,KAAK0D,IAAI6uE,EAAUG,GAAes3J,EAEhDn3O,KAAKo5O,OAGG,QAAXrC,GACFjd,EAAK8gB,EACL7gB,EAAKD,EAAKqd,EAGVtd,EAAK12N,EAAKg0O,EACVsD,EAAKt3O,EAAKg0O,IAEVrd,EAAK8gB,EAAM3mM,EACX8lL,EAAKD,EAAKqd,EAGVtd,EAAK12N,EAAKg0O,EACVsD,EAAKt3O,EAAKg0O,GAEZuD,EAAK5gB,GAEA,CAACD,KAAI12N,KAAIs3O,KAAI3gB,KAAIC,KAAI2gB,KAC9B,CAEAhf,SAAAA,CAAU3wB,EAAI/kM,EAAK3F,GACjB,MAAMsuC,EAAQ3uC,KAAK2uC,MACbrwC,EAASqwC,EAAMrwC,OACrB,IAAIi1O,EAAW+C,EAAcvzO,EAE7B,GAAIzE,EAAQ,CACV,MAAMm0O,EAAYvkC,GAAc7tM,EAAQmsG,IAAKxsG,KAAKgD,EAAGhD,KAAKg0C,OAa1D,IAXA+2J,EAAG/nM,EAAI60O,GAAY73O,KAAMK,EAAQ0yN,WAAY1yN,GAE7C2F,EAAI++L,UAAY0tC,EAAU1tC,UAAU1kM,EAAQ0yN,YAC5C/sN,EAAI6zJ,aAAe,SAEnB05E,EAAY3tC,GAAOvlM,EAAQkzO,WAC3B+C,EAAej2O,EAAQi2O,aAEvBtwO,EAAIqqC,UAAYhwC,EAAQw6O,WACxB70O,EAAI+oJ,KAAOwkF,EAAUp/M,OAEhBpxB,EAAI,EAAGA,EAAIzE,IAAUyE,EACxBiD,EAAI+zJ,SAASprH,EAAM5rC,GAAI0vO,EAAUzvO,EAAE+nM,EAAG/nM,GAAI+nM,EAAG3kM,EAAImtO,EAAUp0L,WAAa,GACxE4rJ,EAAG3kM,GAAKmtO,EAAUp0L,WAAam3L,EAE3BvzO,EAAI,IAAMzE,IACZysM,EAAG3kM,GAAK/F,EAAQk2O,kBAAoBD,GAI5C,CAKAwE,aAAAA,CAAc90O,EAAK+kM,EAAIhoM,EAAG0vO,EAAWpyO,GACnC,MAAMk4O,EAAav4O,KAAKs5O,YAAYv2O,GAC9B21O,EAAkB14O,KAAKu5O,iBAAiBx2O,IACxC,UAAC0tO,EAAA,SAAWC,GAAYrwO,EACxBw1O,EAAWjwC,GAAOvlM,EAAQw1O,UAC1BkF,EAASlD,GAAY73O,KAAM,OAAQK,GACnC26O,EAAYvI,EAAUzvO,EAAE+3O,GACxBE,EAAUxK,EAAYoF,EAAS12L,YAAc02L,EAAS12L,WAAasxL,GAAa,EAAI,EACpFyK,EAASnwC,EAAG3kM,EAAI60O,EAEtB,GAAI56O,EAAQswO,cAAe,CACzB,MAAMsC,EAAc,CAClB76I,OAAQjrF,KAAK4D,IAAI2/N,EAAUD,GAAa,EACxC9tC,WAAY+1C,EAAgB/1C,WAC5BC,SAAU81C,EAAgB91C,SAC1BI,YAAa,GAITgiB,EAAUytB,EAAUnkC,WAAW0sC,EAAWtK,GAAYA,EAAW,EACjEzrB,EAAUi2B,EAASzK,EAAY,EAGrCzqO,EAAI4uF,YAAcv0F,EAAQ86O,mBAC1Bn1O,EAAIqqC,UAAYhwC,EAAQ86O,mBACxB/4C,GAAUp8L,EAAKitO,EAAajuB,EAASC,GAGrCj/M,EAAI4uF,YAAc2jJ,EAAWh7C,YAC7Bv3L,EAAIqqC,UAAYkoM,EAAWhiH,gBAC3B6rE,GAAUp8L,EAAKitO,EAAajuB,EAASC,OAChC,CAELj/M,EAAIyuF,UAAYt8D,GAASogN,EAAWv1C,aAAe71L,KAAK0D,OAAOlV,OAAOojC,OAAOw5M,EAAWv1C,cAAiBu1C,EAAWv1C,aAAe,EACnIh9L,EAAI4uF,YAAc2jJ,EAAWh7C,YAC7Bv3L,EAAIo1N,YAAYmd,EAAW5nC,YAAc,IACzC3qM,EAAIq1N,eAAiBkd,EAAW3nC,kBAAoB,EAGpD,MAAMwqC,EAAS3I,EAAUnkC,WAAW0sC,EAAWtK,GACzC2K,EAAS5I,EAAUnkC,WAAWmkC,EAAUpkC,MAAM2sC,EAAW,GAAItK,EAAW,GACxEvqE,EAAeu/B,GAAc6yC,EAAWpyE,cAE1CxqK,OAAOojC,OAAOonI,GAAcnwE,MAAK7kD,GAAW,IAANA,KACxCnrC,EAAIivF,YACJjvF,EAAIqqC,UAAYhwC,EAAQ86O,mBACxBh2C,GAAmBn/L,EAAK,CACtBhD,EAAGo4O,EACHh1O,EAAG80O,EACH5iL,EAAGo4K,EACH1yN,EAAGyyN,EACHr4I,OAAQ+tE,IAEVngK,EAAI2uF,OACJ3uF,EAAIsvF,SAGJtvF,EAAIqqC,UAAYkoM,EAAWhiH,gBAC3BvwH,EAAIivF,YACJkwG,GAAmBn/L,EAAK,CACtBhD,EAAGq4O,EACHj1O,EAAG80O,EAAS,EACZ5iL,EAAGo4K,EAAW,EACd1yN,EAAGyyN,EAAY,EACfr4I,OAAQ+tE,IAEVngK,EAAI2uF,SAGJ3uF,EAAIqqC,UAAYhwC,EAAQ86O,mBACxBn1O,EAAIsqC,SAAS8qM,EAAQF,EAAQxK,EAAUD,GACvCzqO,EAAIs1O,WAAWF,EAAQF,EAAQxK,EAAUD,GAEzCzqO,EAAIqqC,UAAYkoM,EAAWhiH,gBAC3BvwH,EAAIsqC,SAAS+qM,EAAQH,EAAS,EAAGxK,EAAW,EAAGD,EAAY,IAK/DzqO,EAAIqqC,UAAYrwC,KAAKw5O,gBAAgBz2O,EACvC,CAEAw4O,QAAAA,CAASxwC,EAAI/kM,EAAK3F,GAChB,MAAM,KAAC8rB,GAAQnsB,MACT,YAACy2O,EAAA,UAAa+E,EAAA,cAAWhF,EAAA,UAAe/F,EAAA,SAAWC,EAAA,WAAUtlB,GAAc/qN,EAC3Ew1O,EAAWjwC,GAAOvlM,EAAQw1O,UAChC,IAAI4F,EAAiB5F,EAAS12L,WAC1Bu8L,EAAe,EAEnB,MAAMjJ,EAAYvkC,GAAc7tM,EAAQmsG,IAAKxsG,KAAKgD,EAAGhD,KAAKg0C,OAEpD2nM,EAAiB,SAASzrM,GAC9BlqC,EAAI+zJ,SAAS7pH,EAAMuiM,EAAUzvO,EAAE+nM,EAAG/nM,EAAI04O,GAAe3wC,EAAG3kM,EAAIq1O,EAAiB,GAC7E1wC,EAAG3kM,GAAKq1O,EAAiBhF,CAC3B,EAEMmF,EAA0BnJ,EAAU1tC,UAAUy2C,GACpD,IAAIrF,EAAU0F,EAAWj3C,EAAO7hM,EAAGqE,EAAGisL,EAAMsO,EAiB5C,IAfA37L,EAAI++L,UAAYy2C,EAChBx1O,EAAI6zJ,aAAe,SACnB7zJ,EAAI+oJ,KAAO8mF,EAAS1hN,OAEpB42K,EAAG/nM,EAAI60O,GAAY73O,KAAM47O,EAAyBv7O,GAGlD2F,EAAIqqC,UAAYhwC,EAAQo4O,UACxBnsN,GAAKtsB,KAAKo2O,WAAYuF,GAEtBD,EAAelF,GAA6C,UAA5BoF,EACd,WAAdJ,EAA0B9K,EAAW,EAAItlB,EAAeslB,EAAW,EAAItlB,EACvE,EAGCroN,EAAI,EAAGswL,EAAOlnK,EAAK7tB,OAAQyE,EAAIswL,IAAQtwL,EAAG,CAc7C,IAbAozO,EAAWhqN,EAAKppB,GAChB84O,EAAY77O,KAAKw5O,gBAAgBz2O,GAEjCiD,EAAIqqC,UAAYwrM,EAChBvvN,GAAK6pN,EAASrtH,OAAQ6yH,GAEtB/2C,EAAQuxC,EAASvxC,MAEb4xC,GAAiB5xC,EAAMtmM,SACzB0B,KAAK86O,cAAc90O,EAAK+kM,EAAIhoM,EAAG0vO,EAAWpyO,GAC1Co7O,EAAiBtuO,KAAK0D,IAAIglO,EAAS12L,WAAYsxL,IAG5CrpO,EAAI,EAAGu6L,EAAOiD,EAAMtmM,OAAQ8I,EAAIu6L,IAAQv6L,EAC3Cu0O,EAAe/2C,EAAMx9L,IAErBq0O,EAAiB5F,EAAS12L,WAG5B7yB,GAAK6pN,EAASjuH,MAAOyzH,EACvB,CAGAD,EAAe,EACfD,EAAiB5F,EAAS12L,WAG1B7yB,GAAKtsB,KAAKq2O,UAAWsF,GACrB5wC,EAAG3kM,GAAKqwO,CACV,CAEAqF,UAAAA,CAAW/wC,EAAI/kM,EAAK3F,GAClB,MAAMu1O,EAAS51O,KAAK41O,OACdt3O,EAASs3O,EAAOt3O,OACtB,IAAIw3O,EAAY/yO,EAEhB,GAAIzE,EAAQ,CACV,MAAMm0O,EAAYvkC,GAAc7tM,EAAQmsG,IAAKxsG,KAAKgD,EAAGhD,KAAKg0C,OAa1D,IAXA+2J,EAAG/nM,EAAI60O,GAAY73O,KAAMK,EAAQ07O,YAAa17O,GAC9C0qM,EAAG3kM,GAAK/F,EAAQq2O,gBAEhB1wO,EAAI++L,UAAY0tC,EAAU1tC,UAAU1kM,EAAQ07O,aAC5C/1O,EAAI6zJ,aAAe,SAEnBi8E,EAAalwC,GAAOvlM,EAAQy1O,YAE5B9vO,EAAIqqC,UAAYhwC,EAAQ27O,YACxBh2O,EAAI+oJ,KAAO+mF,EAAW3hN,OAEjBpxB,EAAI,EAAGA,EAAIzE,IAAUyE,EACxBiD,EAAI+zJ,SAAS67E,EAAO7yO,GAAI0vO,EAAUzvO,EAAE+nM,EAAG/nM,GAAI+nM,EAAG3kM,EAAI0vO,EAAW32L,WAAa,GAC1E4rJ,EAAG3kM,GAAK0vO,EAAW32L,WAAa9+C,EAAQs2O,cAG9C,CAEA1b,cAAAA,CAAelwB,EAAI/kM,EAAKi2O,EAAa57O,GACnC,MAAM,OAAC42O,EAAM,OAAEF,GAAU/2O,MACnB,EAACgD,EAAA,EAAGoD,GAAK2kM,GACT,MAAC/2J,EAAA,OAAOC,GAAUgoM,GAClB,QAACx8J,EAAA,SAASC,EAAA,WAAUE,EAAA,YAAYC,GAAe6lH,GAAcrlM,EAAQmiM,cAE3Ex8L,EAAIqqC,UAAYhwC,EAAQk2H,gBACxBvwH,EAAI4uF,YAAcv0F,EAAQk9L,YAC1Bv3L,EAAIyuF,UAAYp0F,EAAQ2iM,YAExBh9L,EAAIivF,YACJjvF,EAAIkvF,OAAOlyF,EAAIy8E,EAASr5E,GACT,QAAX2wO,GACF/2O,KAAKq6O,UAAUtvC,EAAI/kM,EAAKi2O,EAAa57O,GAEvC2F,EAAImvF,OAAOnyF,EAAIgxC,EAAQ0rC,EAAUt5E,GACjCJ,EAAIovF,iBAAiBpyF,EAAIgxC,EAAO5tC,EAAGpD,EAAIgxC,EAAO5tC,EAAIs5E,GACnC,WAAXq3J,GAAkC,UAAXE,GACzBj3O,KAAKq6O,UAAUtvC,EAAI/kM,EAAKi2O,EAAa57O,GAEvC2F,EAAImvF,OAAOnyF,EAAIgxC,EAAO5tC,EAAI6tC,EAAS4rC,GACnC75E,EAAIovF,iBAAiBpyF,EAAIgxC,EAAO5tC,EAAI6tC,EAAQjxC,EAAIgxC,EAAQ6rC,EAAaz5E,EAAI6tC,GAC1D,WAAX8iM,GACF/2O,KAAKq6O,UAAUtvC,EAAI/kM,EAAKi2O,EAAa57O,GAEvC2F,EAAImvF,OAAOnyF,EAAI48E,EAAYx5E,EAAI6tC,GAC/BjuC,EAAIovF,iBAAiBpyF,EAAGoD,EAAI6tC,EAAQjxC,EAAGoD,EAAI6tC,EAAS2rC,GACrC,WAAXm3J,GAAkC,SAAXE,GACzBj3O,KAAKq6O,UAAUtvC,EAAI/kM,EAAKi2O,EAAa57O,GAEvC2F,EAAImvF,OAAOnyF,EAAGoD,EAAIq5E,GAClBz5E,EAAIovF,iBAAiBpyF,EAAGoD,EAAGpD,EAAIy8E,EAASr5E,GACxCJ,EAAIqvF,YAEJrvF,EAAI2uF,OAEAt0F,EAAQ2iM,YAAc,GACxBh9L,EAAIsvF,QAER,CAMA4mJ,sBAAAA,CAAuB77O,GACrB,MAAMggI,EAAQrgI,KAAKqgI,MACb8wE,EAAQnxM,KAAK4zM,YACbuoC,EAAQhrC,GAASA,EAAMnuM,EACvBo5O,EAAQjrC,GAASA,EAAM/qM,EAC7B,GAAI+1O,GAASC,EAAO,CAClB,MAAM7/J,EAAWu4J,GAAYz0O,EAAQk8E,UAAUv+E,KAAKgC,KAAMA,KAAK2xM,QAAS3xM,KAAKg5O,gBAC7E,IAAKz8J,EACH,OAEF,MAAM9/C,EAAOz8B,KAAK21C,MAAQ+/L,GAAe11O,KAAMK,GACzC65O,EAAkBv+O,OAAO49C,OAAO,CAAC,EAAGgjC,EAAUv8E,KAAK21C,OACnD8hM,EAAYH,GAAmBj3G,EAAOhgI,EAAS65O,GAC/Ch3C,EAAQs0C,GAAmBn3O,EAAS65O,EAAiBzC,EAAWp3G,GAClE87G,EAAMppC,MAAQ7P,EAAMlgM,GAAKo5O,EAAMrpC,MAAQ7P,EAAM98L,IAC/CpG,KAAKi3O,OAASQ,EAAUR,OACxBj3O,KAAK+2O,OAASU,EAAUV,OACxB/2O,KAAKg0C,MAAQvX,EAAKuX,MAClBh0C,KAAKi0C,OAASxX,EAAKwX,OACnBj0C,KAAKo5O,OAAS78J,EAASv5E,EACvBhD,KAAKq5O,OAAS98J,EAASn2E,EACvBpG,KAAKg8M,qBAAqB/qM,OAAOjR,KAAMkjM,IAG7C,CAMAm5C,WAAAA,GACE,QAASr8O,KAAKo/C,OAChB,CAEAsyJ,IAAAA,CAAK1rM,GACH,MAAM3F,EAAUL,KAAKK,QAAQsnM,WAAW3nM,KAAK+3F,cAC7C,IAAI34C,EAAUp/C,KAAKo/C,QAEnB,IAAKA,EACH,OAGFp/C,KAAKk8O,uBAAuB77O,GAE5B,MAAM47O,EAAc,CAClBjoM,MAAOh0C,KAAKg0C,MACZC,OAAQj0C,KAAKi0C,QAET82J,EAAK,CACT/nM,EAAGhD,KAAKgD,EACRoD,EAAGpG,KAAKoG,GAIVg5C,EAAUjyC,KAAK2H,IAAIsqC,GAAW,KAAO,EAAIA,EAEzC,MAAMp0C,EAAU26L,GAAUtlM,EAAQ2K,SAG5BsxO,EAAoBt8O,KAAK2uC,MAAMrwC,QAAU0B,KAAKo2O,WAAW93O,QAAU0B,KAAKmsB,KAAK7tB,QAAU0B,KAAKq2O,UAAU/3O,QAAU0B,KAAK41O,OAAOt3O,OAE9H+B,EAAQixN,SAAWgrB,IACrBt2O,EAAI4yF,OACJ5yF,EAAIozF,YAAch6C,EAGlBp/C,KAAKi7N,eAAelwB,EAAI/kM,EAAKi2O,EAAa57O,GAE1CquM,GAAsB1oM,EAAK3F,EAAQ0yO,eAEnChoC,EAAG3kM,GAAK4E,EAAQ8qD,IAGhB91D,KAAK07N,UAAU3wB,EAAI/kM,EAAK3F,GAGxBL,KAAKu7O,SAASxwC,EAAI/kM,EAAK3F,GAGvBL,KAAK87O,WAAW/wC,EAAI/kM,EAAK3F,GAEzByuM,GAAqB9oM,EAAK3F,EAAQ0yO,eAElC/sO,EAAIszF,UAER,CAMA8uI,iBAAAA,GACE,OAAOpoO,KAAK2xM,SAAW,EACzB,CAOA02B,iBAAAA,CAAkBC,EAAgB4M,GAChC,MAAM3M,EAAavoO,KAAK2xM,QAClBpvE,EAAS+lG,EAAe52N,KAAI6qO,IAA2B,IAA1B,aAAC/oD,EAAY,MAAEnyL,GAAMk7O,EACtD,MAAMx7L,EAAO/gD,KAAKqgI,MAAMk4E,eAAe/kB,GAEvC,IAAKzyI,EACH,MAAM,IAAIhzC,MAAM,kCAAoCylL,GAGtD,MAAO,CACLA,eACA1qK,QAASi4B,EAAKp2C,KAAKtJ,GACnBA,QACD,IAEGq4L,GAAWxG,GAAeq1C,EAAYhmG,GACtCi6G,EAAkBx8O,KAAKy8O,iBAAiBl6G,EAAQ2yG,IAElDx7C,GAAW8iD,KACbx8O,KAAK2xM,QAAUpvE,EACfviI,KAAKg5O,eAAiB9D,EACtBl1O,KAAK08O,qBAAsB,EAC3B18O,KAAKiR,QAAO,GAEhB,CASArQ,WAAAA,CAAYrB,EAAGkpO,GAA4B,IAApBI,IAAAxqO,UAAAC,OAAA,QAAAU,IAAAX,UAAA,KAAAA,UAAA,GACrB,GAAIoqO,GAAUzoO,KAAK08O,oBACjB,OAAO,EAET18O,KAAK08O,qBAAsB,EAE3B,MAAMr8O,EAAUL,KAAKK,QACfkoO,EAAavoO,KAAK2xM,SAAW,GAC7BpvE,EAASviI,KAAKgpO,mBAAmBzpO,EAAGgpO,EAAYE,EAAQI,GAKxD2T,EAAkBx8O,KAAKy8O,iBAAiBl6G,EAAQhjI,GAGhDm6L,EAAU+uC,IAAWv1C,GAAe3wD,EAAQgmG,IAAeiU,EAgBjE,OAbI9iD,IACF15L,KAAK2xM,QAAUpvE,GAEXliI,EAAQixN,SAAWjxN,EAAQ+5O,YAC7Bp6O,KAAKg5O,eAAiB,CACpBh2O,EAAGzD,EAAEyD,EACLoD,EAAG7G,EAAE6G,GAGPpG,KAAKiR,QAAO,EAAMw3N,KAIf/uC,CACT,CAWAsvC,kBAAAA,CAAmBzpO,EAAGgpO,EAAYE,EAAQI,GACxC,MAAMxoO,EAAUL,KAAKK,QAErB,GAAe,aAAXd,EAAEs3B,KACJ,MAAO,GAGT,IAAKgyM,EAGH,OAAON,EAAWr/M,QAAOnmB,GACvB/C,KAAKqgI,MAAM11H,KAAK6yL,SAASz6L,EAAEywL,oBACiDx0L,IAA5EgB,KAAKqgI,MAAMk4E,eAAex1M,EAAEywL,cAAcpvE,WAAW+1F,UAAUp3M,EAAE1B,SAKrE,MAAMkhI,EAASviI,KAAKqgI,MAAMonG,0BAA0BloO,EAAGc,EAAQuJ,KAAMvJ,EAASooO,GAM9E,OAJIpoO,EAAQu5G,SACV2oB,EAAO3oB,UAGF2oB,CACT,CASAk6G,gBAAAA,CAAiBl6G,EAAQhjI,GACvB,MAAM,OAAC65O,EAAA,OAAQC,EAAA,QAAQh5O,GAAWL,KAC5Bu8E,EAAWu4J,GAAYz0O,EAAQk8E,UAAUv+E,KAAKgC,KAAMuiI,EAAQhjI,GAClE,OAAoB,IAAbg9E,IAAuB68J,IAAW78J,EAASv5E,GAAKq2O,IAAW98J,EAASn2E,EAC7E,EACDsiG,GA5vBYqwI,GAAgB,cAKNjE,IAyvBvB,IAAA6H,GAAe,CACb/tM,GAAI,UACJslM,SAAU6E,GACVjE,eAEA8H,SAAAA,CAAUv8G,EAAO8zG,EAAO9zO,GAClBA,IACFggI,EAAMs1G,QAAU,IAAIoD,GAAQ,CAAC14G,QAAOhgI,YAExC,EAEAs0N,YAAAA,CAAat0F,EAAO8zG,EAAO9zO,GACrBggI,EAAMs1G,SACRt1G,EAAMs1G,QAAQx+B,WAAW92M,EAE7B,EAEAsI,KAAAA,CAAM03H,EAAO8zG,EAAO9zO,GACdggI,EAAMs1G,SACRt1G,EAAMs1G,QAAQx+B,WAAW92M,EAE7B,EAEAw8O,SAAAA,CAAUx8G,GACR,MAAMs1G,EAAUt1G,EAAMs1G,QAEtB,GAAIA,GAAWA,EAAQ0G,cAAe,CACpC,MAAMjtN,EAAO,CACXumN,WAGF,IAA8E,IAA1Et1G,EAAMk2F,cAAc,oBAAqBzuI,GAAAA,GAAA,GAAI14D,GAAI,IAAEo8B,YAAY,KACjE,OAGFmqL,EAAQjkC,KAAKrxE,EAAMr6H,KAEnBq6H,EAAMk2F,cAAc,mBAAoBnnM,GAE5C,EAEAglN,UAAAA,CAAW/zG,EAAOjxG,GAChB,GAAIixG,EAAMs1G,QAAS,CAEjB,MAAM5sB,EAAmB35L,EAAKq5M,OAC1BpoG,EAAMs1G,QAAQ/0O,YAAYwuB,EAAKvuB,MAAOkoN,EAAkB35L,EAAKy5M,eAE/Dz5M,EAAKsqK,SAAU,GAGrB,EAEAhsD,SAAU,CACR4jF,SAAS,EACT8oB,SAAU,KACV79J,SAAU,UACVg6C,gBAAiB,kBACjBskH,WAAY,OACZtH,UAAW,CACT9hD,OAAQ,QAEV6kD,aAAc,EACdC,kBAAmB,EACnBxjB,WAAY,OACZ0lB,UAAW,OACXhC,YAAa,EACbZ,SAAU,CAAC,EAEX2F,UAAW,OACXQ,YAAa,OACbrF,cAAe,EACfD,gBAAiB,EACjBZ,WAAY,CACVrkD,OAAQ,QAEVsqD,YAAa,OACb/wO,QAAS,EACTosO,aAAc,EACdD,UAAW,EACX30C,aAAc,EACdiuC,UAAWA,CAACzqO,EAAK3G,IAASA,EAAKw2O,SAASp5M,KACxCi0M,SAAUA,CAAC1qO,EAAK3G,IAASA,EAAKw2O,SAASp5M,KACvC0+M,mBAAoB,OACpB3E,eAAe,EACfprB,WAAY,EACZ7tB,YAAa,gBACbyF,YAAa,EACbhsI,UAAW,CACTyjB,SAAU,IACVkxB,OAAQ,gBAEV2zF,WAAY,CACV1kG,QAAS,CACP/jE,KAAM,SACNvoB,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,WAEtD8wC,QAAS,CACPusD,OAAQ,SACRlxB,SAAU,MAGdqjD,UAAWk6G,IAGbvb,cAAe,CACboZ,SAAU,OACVC,WAAY,OACZvC,UAAW,QAGbzsG,YAAa,CACXo4D,YAAc3hM,GAAkB,WAATA,GAA8B,aAATA,GAAgC,aAATA,EACnE4hM,YAAY,EACZrhE,UAAW,CACTohE,aAAa,EACbC,YAAY,GAEdnoI,UAAW,CACTooI,WAAW,GAEbE,WAAY,CACVF,UAAW,cAKfuiC,uBAAwB,CAAC,gBCvzC3B,SAASmb,GAAehjC,EAAQ4B,EAAKr6M,EAAO07O,GAC1C,MAAM3oN,EAAQ0lL,EAAOx4M,QAAQo6M,GAC7B,IAAe,IAAXtnL,EACF,MAbgB4oN,EAACljC,EAAQ4B,EAAKr6M,EAAO07O,KACpB,kBAARrhC,GACTr6M,EAAQy4M,EAAO34M,KAAKu6M,GAAO,EAC3BqhC,EAAY5jL,QAAQ,CAAC93D,QAAOkjJ,MAAOm3D,KAC1BxpL,MAAMwpL,KACfr6M,EAAQ,MAEHA,GAME27O,CAAYljC,EAAQ4B,EAAKr6M,EAAO07O,GAGzC,OAAO3oN,IADM0lL,EAAOmjC,YAAYvhC,GACRr6M,EAAQ+yB,CAClC,CAIA,SAAS8oN,GAAkB1+O,GACzB,MAAMs7M,EAAS95M,KAAK+5M,YAEpB,OAAIv7M,GAAS,GAAKA,EAAQs7M,EAAOx7M,OACxBw7M,EAAOt7M,GAETA,CACT,CAEe,MAAM2+O,WAAsBlqB,GAazCllM,WAAAA,CAAY7lB,GACVi8E,MAAMj8E,GAGNlI,KAAKo9O,iBAAcp+O,EACnBgB,KAAKq9O,YAAc,EACnBr9O,KAAKs9O,aAAe,EACtB,CAEA90O,IAAAA,CAAKu3N,GACH,MAAMwd,EAAQv9O,KAAKs9O,aACnB,GAAIC,EAAMj/O,OAAQ,CAChB,MAAMw7M,EAAS95M,KAAK+5M,YACpB,IAAK,MAAM,MAAC14M,EAAA,MAAOkjJ,KAAUg5F,EACvBzjC,EAAOz4M,KAAWkjJ,GACpBu1D,EAAOv4M,OAAOF,EAAO,GAGzBrB,KAAKs9O,aAAe,GAEtBn5J,MAAM37E,KAAKu3N,EACb,CAEA3zN,KAAAA,CAAMsvM,EAAKr6M,GACT,GAAIsxL,GAAc+oB,GAChB,OAAO,KAET,MAAM5B,EAAS95M,KAAK+5M,YAGpB,MAtDe4Y,EAACtxN,EAAOwP,IAAkB,OAAVxP,EAAiB,KAAO41L,GAAY9pL,KAAKhI,MAAM9D,GAAQ,EAAGwP,GAsDlF8hN,CAFPtxN,EAAQ4wB,SAAS5wB,IAAUy4M,EAAOz4M,KAAWq6M,EAAMr6M,EAC/Cy7O,GAAehjC,EAAQ4B,EAAK5oB,GAAezxL,EAAOq6M,GAAM17M,KAAKs9O,cACxCxjC,EAAOx7M,OAAS,EAC3C,CAEA22N,mBAAAA,GACE,MAAM,WAACp8B,EAAA,WAAYC,GAAc94L,KAAK+4L,gBACtC,IAAI,IAAChoL,EAAG,IAAEF,GAAO7Q,KAAKw6M,WAAU,GAEJ,UAAxBx6M,KAAKK,QAAQq/L,SACV7G,IACH9nL,EAAM,GAEH+nL,IACHjoL,EAAM7Q,KAAK+5M,YAAYz7M,OAAS,IAIpC0B,KAAK+Q,IAAMA,EACX/Q,KAAK6Q,IAAMA,CACb,CAEA0kN,UAAAA,GACE,MAAMxkN,EAAM/Q,KAAK+Q,IACXF,EAAM7Q,KAAK6Q,IACXlM,EAAS3E,KAAKK,QAAQsE,OACtB23L,EAAQ,GACd,IAAIwd,EAAS95M,KAAK+5M,YAGlBD,EAAkB,IAAT/oM,GAAcF,IAAQipM,EAAOx7M,OAAS,EAAKw7M,EAASA,EAAOj6M,MAAMkR,EAAKF,EAAM,GAErF7Q,KAAKq9O,YAAclwO,KAAK0D,IAAIipM,EAAOx7M,QAAUqG,EAAS,EAAI,GAAI,GAC9D3E,KAAKo9O,YAAcp9O,KAAK+Q,KAAOpM,EAAS,GAAM,GAE9C,IAAK,IAAInG,EAAQuS,EAAKvS,GAASqS,EAAKrS,IAClC89L,EAAMn7L,KAAK,CAAC3C,UAEd,OAAO89L,CACT,CAEA6e,gBAAAA,CAAiB38M,GACf,OAAO0+O,GAAkBl/O,KAAKgC,KAAMxB,EACtC,CAKA80M,SAAAA,GACEnvH,MAAMmvH,YAEDtzM,KAAK8/M,iBAER9/M,KAAK0oN,gBAAkB1oN,KAAK0oN,eAEhC,CAGA1vB,gBAAAA,CAAiBx6L,GAKf,MAJqB,kBAAVA,IACTA,EAAQwB,KAAKoM,MAAM5N,IAGJ,OAAVA,EAAiB+7M,IAAMv6M,KAAK0hN,oBAAoBljN,EAAQwB,KAAKo9O,aAAep9O,KAAKq9O,YAC1F,CAIAh/B,eAAAA,CAAgBh9M,GACd,MAAMi7L,EAAQt8L,KAAKs8L,MACnB,OAAIj7L,EAAQ,GAAKA,EAAQi7L,EAAMh+L,OAAS,EAC/B,KAEF0B,KAAKg5L,iBAAiBsD,EAAMj7L,GAAO7C,MAC5C,CAEAojN,gBAAAA,CAAiBttK,GACf,OAAOnnC,KAAKhI,MAAMnF,KAAKo9O,YAAcp9O,KAAK64N,mBAAmBvkL,GAASt0C,KAAKq9O,YAC7E,CAEAx9B,YAAAA,GACE,OAAO7/M,KAAKq/E,MACd,ECpIF,SAASm+J,GAAcC,EAAmBC,GACxC,MAAMphD,EAAQ,IAMR,OAACoD,EAAM,KAAE1gG,EAAA,IAAMjuF,EAAA,IAAKF,EAAG,UAAEy/I,EAAA,MAAWr/G,EAAA,SAAO0sM,EAAQ,UAAEC,EAAA,cAAWC,GAAiBJ,EACjFK,EAAO9+I,GAAQ,EACf++I,EAAYJ,EAAW,GACtB5sO,IAAKitO,EAAMntO,IAAKotO,GAAQP,EACzB7kD,GAAclG,GAAc5hL,GAC5B+nL,GAAcnG,GAAc9hL,GAC5BqtO,GAAgBvrD,GAAc1hJ,GAC9BktM,GAAcF,EAAOD,IAASJ,EAAY,GAChD,IACIlgO,EAAQ0gO,EAASC,EAASC,EAD1Bp7B,EAAU7tB,IAAS4oD,EAAOD,GAAQD,EAAYD,GAAQA,EAK1D,GAAI56B,EAdgB,QAcUrqB,IAAeC,EAC3C,MAAO,CAAC,CAACt6L,MAAOw/O,GAAO,CAACx/O,MAAOy/O,IAGjCK,EAAYnxO,KAAK+B,KAAK+uO,EAAO/6B,GAAW/1M,KAAKwJ,MAAMqnO,EAAO96B,GACtDo7B,EAAYP,IAEd76B,EAAU7tB,GAAQipD,EAAYp7B,EAAU66B,EAAYD,GAAQA,GAGzDnrD,GAAcriC,KAEjB5yI,EAASvQ,KAAK0Q,IAAI,GAAIyyI,GACtB4yD,EAAU/1M,KAAK+B,KAAKg0M,EAAUxlM,GAAUA,GAG3B,UAAXgiL,GACF0+C,EAAUjxO,KAAKwJ,MAAMqnO,EAAO96B,GAAWA,EACvCm7B,EAAUlxO,KAAK+B,KAAK+uO,EAAO/6B,GAAWA,IAEtCk7B,EAAUJ,EACVK,EAAUJ,GAGRplD,GAAcC,GAAc95F,GvDL3B,SAAqBh8F,EAAWoyL,GACrC,MAAMmpD,EAAUpxO,KAAKhI,MAAMnC,GAC3B,OAAOu7O,EAAYnpD,GAAYpyL,GAAQu7O,EAAUnpD,GAAYpyL,CAC/D,CuDE0Cw7O,EAAa3tO,EAAME,GAAOiuF,EAAMkkH,EAAU,MAKhFo7B,EAAYnxO,KAAKhI,MAAMgI,KAAK4D,KAAKF,EAAME,GAAOmyM,EAASy6B,IACvDz6B,GAAWryM,EAAME,GAAOutO,EACxBF,EAAUrtO,EACVstO,EAAUxtO,GACDqtO,GAITE,EAAUvlD,EAAa9nL,EAAMqtO,EAC7BC,EAAUvlD,EAAajoL,EAAMwtO,EAC7BC,EAAYrtM,EAAQ,EACpBiyK,GAAWm7B,EAAUD,GAAWE,IAGhCA,GAAaD,EAAUD,GAAWl7B,EAIhCo7B,EADEnpD,GAAampD,EAAWnxO,KAAKhI,MAAMm5O,GAAYp7B,EAAU,KAC/C/1M,KAAKhI,MAAMm5O,GAEXnxO,KAAK+B,KAAKovO,IAM1B,MAAMG,EAAgBtxO,KAAK0D,IACzBglL,GAAeqtB,GACfrtB,GAAeuoD,IAEjB1gO,EAASvQ,KAAK0Q,IAAI,GAAI80K,GAAcriC,GAAamuF,EAAgBnuF,GACjE8tF,EAAUjxO,KAAKhI,MAAMi5O,EAAU1gO,GAAUA,EACzC2gO,EAAUlxO,KAAKhI,MAAMk5O,EAAU3gO,GAAUA,EAEzC,IAAItW,EAAI,EAiBR,IAhBIyxL,IACEglD,GAAiBO,IAAYrtO,GAC/BurL,EAAMn7L,KAAK,CAAC3C,MAAOuS,IAEfqtO,EAAUrtO,GACZ3J,IAGE+tL,GAAahoL,KAAKhI,OAAOi5O,EAAUh3O,EAAI87M,GAAWxlM,GAAUA,EAAQ3M,EAAK2tO,GAAkB3tO,EAAKotO,EAAYV,KAC9Gr2O,KAEOg3O,EAAUrtO,GACnB3J,KAIGA,EAAIk3O,IAAal3O,EAAG,CACzB,MAAMi1L,EAAYlvL,KAAKhI,OAAOi5O,EAAUh3O,EAAI87M,GAAWxlM,GAAUA,EACjE,GAAIo7K,GAAcuD,EAAYxrL,EAC5B,MAEFyrL,EAAMn7L,KAAK,CAAC3C,MAAO69L,GACrB,CAaA,OAXIvD,GAAc+kD,GAAiBQ,IAAYxtO,EAEzCyrL,EAAMh+L,QAAU62L,GAAamH,EAAMA,EAAMh+L,OAAS,GAAGE,MAAOqS,EAAK6tO,GAAkB7tO,EAAKstO,EAAYV,IACtGnhD,EAAMA,EAAMh+L,OAAS,GAAGE,MAAQqS,EAEhCyrL,EAAMn7L,KAAK,CAAC3C,MAAOqS,IAEXioL,GAAculD,IAAYxtO,GACpCyrL,EAAMn7L,KAAK,CAAC3C,MAAO6/O,IAGd/hD,CACT,CAEA,SAASoiD,GAAkBlgP,EAAO2/O,EAAUQ,GAA6B,IAA3B,WAACz/B,EAAU,YAAE5e,GAAYq+C,EACrE,MAAM97C,EAAMpN,GAAU6K,GAChB5tJ,GAASwsK,EAAa/xM,KAAK4H,IAAI8tL,GAAO11L,KAAK+wJ,IAAI2kC,KAAS,KACxDvkM,EAAS,IAAO6/O,GAAc,GAAK3/O,GAAOF,OAChD,OAAO6O,KAAK4D,IAAIotO,EAAazrM,EAAOp0C,EACtC,CDMAoqG,GA5HqBy0I,GAAsB,KAE7B,YAAWz0I,GAFJy0I,GAAsB,WAOvB,CAChB7gD,MAAO,CACLp7H,SAAUg8K,MC+GD,MAAM0B,WAAwB3rB,GAE3CllM,WAAAA,CAAY7lB,GACVi8E,MAAMj8E,GAGNlI,KAAK60D,WAAQ71D,EAEbgB,KAAK80D,SAAM91D,EAEXgB,KAAKo9O,iBAAcp+O,EAEnBgB,KAAK6+O,eAAY7/O,EACjBgB,KAAKq9O,YAAc,CACrB,CAEAjxO,KAAAA,CAAMsvM,EAAKr6M,GACT,OAAIsxL,GAAc+oB,KAGE,kBAARA,GAAoBA,aAAerpL,UAAYJ,UAAUypL,GAF5D,MAMDA,CACV,CAEAojC,sBAAAA,GACE,MAAM,YAACr/C,GAAez/L,KAAKK,SACrB,WAACw4L,EAAA,WAAYC,GAAc94L,KAAK+4L,gBACtC,IAAI,IAAChoL,EAAG,IAAEF,GAAO7Q,KAEjB,MAAMq9K,EAASlsI,GAAMpgC,EAAM8nL,EAAa9nL,EAAMogC,EACxCmsI,EAASnsI,GAAMtgC,EAAMioL,EAAajoL,EAAMsgC,EAE9C,GAAIsuJ,EAAa,CACf,MAAMs/C,EAAU7pD,GAAKnkL,GACfiuO,EAAU9pD,GAAKrkL,GAEjBkuO,EAAU,GAAKC,EAAU,EAC3B1hE,EAAO,GACEyhE,EAAU,GAAKC,EAAU,GAClC3hE,EAAO,GAIX,GAAItsK,IAAQF,EAAK,CACf,IAAIlM,EAAiB,IAARkM,EAAY,EAAI1D,KAAK2H,IAAU,IAANjE,GAEtCysK,EAAOzsK,EAAMlM,GAER86L,GACHpiB,EAAOtsK,EAAMpM,GAGjB3E,KAAK+Q,IAAMA,EACX/Q,KAAK6Q,IAAMA,CACb,CAEAouO,YAAAA,GACE,MAAMruB,EAAW5wN,KAAKK,QAAQi8L,MAE9B,IACIqhD,GADA,cAACvsB,EAAA,SAAe8tB,GAAYtuB,EAkBhC,OAfIsuB,GACFvB,EAAWxwO,KAAK+B,KAAKlP,KAAK6Q,IAAMquO,GAAY/xO,KAAKwJ,MAAM3W,KAAK+Q,IAAMmuO,GAAY,EAC1EvB,EAAW,MACbv0K,QAAQ0P,KAAK,UAAD7tE,OAAWjL,KAAK4uC,GAAE,qBAAA3jC,OAAoBi0O,EAAS,mCAAAj0O,OAAiC0yO,EAAA,8BAC5FA,EAAW,OAGbA,EAAW39O,KAAKm/O,mBAChB/tB,EAAgBA,GAAiB,IAG/BA,IACFusB,EAAWxwO,KAAK4D,IAAIqgN,EAAeusB,IAG9BA,CACT,CAKAwB,gBAAAA,GACE,OAAO9sN,OAAOuiK,iBAChB,CAEA2gC,UAAAA,GACE,MAAMl2N,EAAOW,KAAKK,QACZuwN,EAAWvxN,EAAKi9L,MAMtB,IAAIqhD,EAAW39O,KAAKi/O,eACpBtB,EAAWxwO,KAAK0D,IAAI,EAAG8sO,GAEvB,MAcMrhD,EAAQkhD,GAdkB,CAC9BG,WACAj+C,OAAQrgM,EAAKqgM,OACb3uL,IAAK1R,EAAK0R,IACVF,IAAKxR,EAAKwR,IACVy/I,UAAWsgE,EAAStgE,UACpBtxD,KAAM4xH,EAASsuB,SACfjuM,MAAO2/K,EAAS3/K,MAChB2sM,UAAW59O,KAAKk8N,aAChBhd,WAAYl/M,KAAK8/M,eACjBxf,YAAaswB,EAAStwB,aAAe,EACrCu9C,eAA0C,IAA3BjtB,EAASitB,eAER79O,KAAKuzN,QAAUvzN,MAmBjC,MAdoB,UAAhBX,EAAKqgM,QACPlK,GAAmB8G,EAAOt8L,KAAM,SAG9BX,EAAKu6G,SACP0iF,EAAM1iF,UAEN55G,KAAK60D,MAAQ70D,KAAK6Q,IAClB7Q,KAAK80D,IAAM90D,KAAK+Q,MAEhB/Q,KAAK60D,MAAQ70D,KAAK+Q,IAClB/Q,KAAK80D,IAAM90D,KAAK6Q,KAGXyrL,CACT,CAKAgX,SAAAA,GACE,MAAMhX,EAAQt8L,KAAKs8L,MACnB,IAAIznI,EAAQ70D,KAAK+Q,IACb+jD,EAAM90D,KAAK6Q,IAIf,GAFAszE,MAAMmvH,YAEFtzM,KAAKK,QAAQsE,QAAU23L,EAAMh+L,OAAQ,CACvC,MAAMqG,GAAUmwD,EAAMD,GAAS1nD,KAAK0D,IAAIyrL,EAAMh+L,OAAS,EAAG,GAAK,EAC/Du2D,GAASlwD,EACTmwD,GAAOnwD,EAET3E,KAAKo9O,YAAcvoL,EACnB70D,KAAK6+O,UAAY/pL,EACjB90D,KAAKq9O,YAAcvoL,EAAMD,CAC3B,CAEAsmJ,gBAAAA,CAAiB38M,GACf,OAAOy9L,GAAaz9L,EAAOwB,KAAKqgI,MAAMhgI,QAAQivD,OAAQtvD,KAAKK,QAAQi8L,MAAMrwL,OAC3E,EClTa,MAAMmzO,WAAoBR,GAcvC3pB,mBAAAA,GACE,MAAM,IAAClkN,EAAG,IAAEF,GAAO7Q,KAAKw6M,WAAU,GAElCx6M,KAAK+Q,IAAM6hL,GAAS7hL,GAAOA,EAAM,EACjC/Q,KAAK6Q,IAAM+hL,GAAS/hL,GAAOA,EAAM,EAGjC7Q,KAAK8+O,wBACP,CAMAK,gBAAAA,GACE,MAAMjgC,EAAal/M,KAAK8/M,eAClBxhN,EAAS4gN,EAAal/M,KAAKg0C,MAAQh0C,KAAKi0C,OACxCqsJ,EAAc7K,GAAUz1L,KAAKK,QAAQi8L,MAAMgE,aAC3C5tJ,GAASwsK,EAAa/xM,KAAK4H,IAAIurL,GAAenzL,KAAK+wJ,IAAIoiC,KAAiB,KACxE+3B,EAAWr4N,KAAK04N,wBAAwB,GAC9C,OAAOvrN,KAAK+B,KAAK5Q,EAAS6O,KAAK4D,IAAI,GAAIsnN,EAASl5K,WAAazM,GAC/D,CAGAsmJ,gBAAAA,CAAiBx6L,GACf,OAAiB,OAAVA,EAAiB+7M,IAAMv6M,KAAK0hN,oBAAoBljN,EAAQwB,KAAKo9O,aAAep9O,KAAKq9O,YAC1F,CAEAz7B,gBAAAA,CAAiBttK,GACf,OAAOt0C,KAAKo9O,YAAcp9O,KAAK64N,mBAAmBvkL,GAASt0C,KAAKq9O,WAClE,EACF30I,GA7CqB02I,GAAoB,KAE3B,UAAS12I,GAFF02I,GAAoB,WAOrB,CAChB9iD,MAAO,CACLp7H,SAAU+7H,GAAMb,WAAWzyE,WCPjC,MAAM01H,GAAaluM,GAAKhkC,KAAKwJ,MAAMs+K,GAAM9jJ,IACnCmuM,GAAiBA,CAACnuM,EAAGwR,IAAMx1C,KAAK0Q,IAAI,GAAIwhO,GAAWluM,GAAKwR,GAE9D,SAAS48L,GAAQC,GAEf,OAAkB,IADHA,EAAWryO,KAAK0Q,IAAI,GAAIwhO,GAAWG,GAEpD,CAEA,SAASC,GAAM1uO,EAAKF,EAAK6uO,GACvB,MAAMC,EAAYxyO,KAAK0Q,IAAI,GAAI6hO,GACzB7qL,EAAQ1nD,KAAKwJ,MAAM5F,EAAM4uO,GAE/B,OADYxyO,KAAK+B,KAAK2B,EAAM8uO,GACf9qL,CACf,CAqBA,SAAS+qL,GAAcnC,EAAiBoC,GAAc,IAAZ,IAAC9uO,EAAG,IAAEF,GAAIgvO,EAClD9uO,EAAM8hL,GAAgB4qD,EAAkB1sO,IAAKA,GAC7C,MAAMurL,EAAQ,GACRwjD,EAAST,GAAWtuO,GAC1B,IAAIutJ,EAvBN,SAAkBvtJ,EAAKF,GAErB,IAAI6uO,EAAWL,GADDxuO,EAAME,GAEpB,KAAO0uO,GAAM1uO,EAAKF,EAAK6uO,GAAY,IACjCA,IAEF,KAAOD,GAAM1uO,EAAKF,EAAK6uO,GAAY,IACjCA,IAEF,OAAOvyO,KAAK4D,IAAI2uO,EAAUL,GAAWtuO,GACvC,CAaYgvO,CAAShvO,EAAKF,GACpBy/I,EAAYgO,EAAM,EAAInxJ,KAAK0Q,IAAI,GAAI1Q,KAAK2H,IAAIwpJ,IAAQ,EACxD,MAAM4gF,EAAW/xO,KAAK0Q,IAAI,GAAIygJ,GACxB39G,EAAOm/L,EAASxhF,EAAMnxJ,KAAK0Q,IAAI,GAAIiiO,GAAU,EAC7CjrL,EAAQ1nD,KAAKhI,OAAO4L,EAAM4vC,GAAQ2vG,GAAaA,EAC/C3rJ,EAASwI,KAAKwJ,OAAO5F,EAAM4vC,GAAQu+L,EAAW,IAAMA,EAAW,GACrE,IAAIliD,EAAc7vL,KAAKwJ,OAAOk+C,EAAQlwD,GAAUwI,KAAK0Q,IAAI,GAAIygJ,IACzD9/J,EAAQq0L,GAAgB4qD,EAAkB1sO,IAAK5D,KAAKhI,OAAOw7C,EAAOh8C,EAASq4L,EAAc7vL,KAAK0Q,IAAI,GAAIygJ,IAAQhO,GAAaA,GAC/H,KAAO9xJ,EAAQqS,GACbyrL,EAAMn7L,KAAK,CAAC3C,QAAOuiM,MAAOw+C,GAAQ/gP,GAAQw+L,gBACtCA,GAAe,GACjBA,EAAcA,EAAc,GAAK,GAAK,GAEtCA,IAEEA,GAAe,KACjB1+B,IACA0+B,EAAc,EACd1sC,EAAYgO,GAAO,EAAI,EAAIhO,GAE7B9xJ,EAAQ2O,KAAKhI,OAAOw7C,EAAOh8C,EAASq4L,EAAc7vL,KAAK0Q,IAAI,GAAIygJ,IAAQhO,GAAaA,EAEtF,MAAM0vF,EAAWntD,GAAgB4qD,EAAkB5sO,IAAKrS,GAGxD,OAFA89L,EAAMn7L,KAAK,CAAC3C,MAAOwhP,EAAUj/C,MAAOw+C,GAAQS,GAAWhjD,gBAEhDV,CACT,CAEe,MAAM2jD,WAAyBhtB,GAiB5CllM,WAAAA,CAAY7lB,GACVi8E,MAAMj8E,GAGNlI,KAAK60D,WAAQ71D,EAEbgB,KAAK80D,SAAM91D,EAEXgB,KAAKo9O,iBAAcp+O,EACnBgB,KAAKq9O,YAAc,CACrB,CAEAjxO,KAAAA,CAAMsvM,EAAKr6M,GACT,MAAM7C,EAAQogP,GAAgB1+O,UAAUkM,MAAM3N,MAAMuB,KAAM,CAAC07M,EAAKr6M,IAChE,GAAc,IAAV7C,EAIJ,OAAOo0L,GAASp0L,IAAUA,EAAQ,EAAIA,EAAQ,KAH5CwB,KAAKkgP,OAAQ,CAIjB,CAEAjrB,mBAAAA,GACE,MAAM,IAAClkN,EAAG,IAAEF,GAAO7Q,KAAKw6M,WAAU,GAElCx6M,KAAK+Q,IAAM6hL,GAAS7hL,GAAO5D,KAAK0D,IAAI,EAAGE,GAAO,KAC9C/Q,KAAK6Q,IAAM+hL,GAAS/hL,GAAO1D,KAAK0D,IAAI,EAAGA,GAAO,KAE1C7Q,KAAKK,QAAQo/L,cACfz/L,KAAKkgP,OAAQ,GAKXlgP,KAAKkgP,OAASlgP,KAAK+Q,MAAQ/Q,KAAK+zN,gBAAkBnhC,GAAS5yL,KAAK6zN,YAClE7zN,KAAK+Q,IAAMA,IAAQuuO,GAAet/O,KAAK+Q,IAAK,GAAKuuO,GAAet/O,KAAK+Q,KAAM,GAAKuuO,GAAet/O,KAAK+Q,IAAK,IAG3G/Q,KAAK8+O,wBACP,CAEAA,sBAAAA,GACE,MAAM,WAACjmD,EAAA,WAAYC,GAAc94L,KAAK+4L,gBACtC,IAAIhoL,EAAM/Q,KAAK+Q,IACXF,EAAM7Q,KAAK6Q,IAEf,MAAMwsK,EAASlsI,GAAMpgC,EAAM8nL,EAAa9nL,EAAMogC,EACxCmsI,EAASnsI,GAAMtgC,EAAMioL,EAAajoL,EAAMsgC,EAE1CpgC,IAAQF,IACNE,GAAO,GACTssK,EAAO,GACPC,EAAO,MAEPD,EAAOiiE,GAAevuO,GAAM,IAC5BusK,EAAOgiE,GAAezuO,EAAK,MAG3BE,GAAO,GACTssK,EAAOiiE,GAAezuO,GAAM,IAE1BA,GAAO,GAETysK,EAAOgiE,GAAevuO,EAAK,IAG7B/Q,KAAK+Q,IAAMA,EACX/Q,KAAK6Q,IAAMA,CACb,CAEA0kN,UAAAA,GACE,MAAMl2N,EAAOW,KAAKK,QAMZi8L,EAAQsjD,GAJY,CACxB7uO,IAAK/Q,KAAK6zN,SACVhjN,IAAK7Q,KAAK4zN,UAEmC5zN,MAkB/C,MAdoB,UAAhBX,EAAKqgM,QACPlK,GAAmB8G,EAAOt8L,KAAM,SAG9BX,EAAKu6G,SACP0iF,EAAM1iF,UAEN55G,KAAK60D,MAAQ70D,KAAK6Q,IAClB7Q,KAAK80D,IAAM90D,KAAK+Q,MAEhB/Q,KAAK60D,MAAQ70D,KAAK+Q,IAClB/Q,KAAK80D,IAAM90D,KAAK6Q,KAGXyrL,CACT,CAMA6e,gBAAAA,CAAiB38M,GACf,YAAiBQ,IAAVR,EACH,IACAy9L,GAAaz9L,EAAOwB,KAAKqgI,MAAMhgI,QAAQivD,OAAQtvD,KAAKK,QAAQi8L,MAAMrwL,OACxE,CAKAqnM,SAAAA,GACE,MAAMz+I,EAAQ70D,KAAK+Q,IAEnBozE,MAAMmvH,YAENtzM,KAAKo9O,YAAcnoD,GAAMpgI,GACzB70D,KAAKq9O,YAAcpoD,GAAMj1L,KAAK6Q,KAAOokL,GAAMpgI,EAC7C,CAEAmkI,gBAAAA,CAAiBx6L,GAIf,YAHcQ,IAAVR,GAAiC,IAAVA,IACzBA,EAAQwB,KAAK+Q,KAED,OAAVvS,GAAkB0zB,MAAM1zB,GACnB+7M,IAEFv6M,KAAK0hN,mBAAmBljN,IAAUwB,KAAK+Q,IAC1C,GACCkkL,GAAMz2L,GAASwB,KAAKo9O,aAAep9O,KAAKq9O,YAC/C,CAEAz7B,gBAAAA,CAAiBttK,GACf,MAAMumD,EAAU76F,KAAK64N,mBAAmBvkL,GACxC,OAAOnnC,KAAK0Q,IAAI,GAAI7d,KAAKo9O,YAAcviJ,EAAU76F,KAAKq9O,YACxD,ECxNF,SAAS8C,GAAsB9gP,GAC7B,MAAMuxN,EAAWvxN,EAAKi9L,MAEtB,GAAIs0B,EAAS1gJ,SAAW7wE,EAAK6wE,QAAS,CACpC,MAAMllE,EAAU26L,GAAUirB,EAASzvB,iBACnC,OAAOrO,GAAe89B,EAAS7hE,MAAQ6hE,EAAS7hE,KAAKtyH,KAAMixG,GAASqhB,KAAKtyH,MAAQzxB,EAAQipC,OAE3F,OAAO,CACT,CAUA,SAASmsM,GAAgBhqD,EAAOvrJ,EAAKpO,EAAM1rB,EAAKF,GAC9C,OAAIulL,IAAUrlL,GAAOqlL,IAAUvlL,EACtB,CACLgkD,MAAOhqB,EAAOpO,EAAO,EACrBq4B,IAAKjqB,EAAOpO,EAAO,GAEZ25J,EAAQrlL,GAAOqlL,EAAQvlL,EACzB,CACLgkD,MAAOhqB,EAAMpO,EACbq4B,IAAKjqB,GAIF,CACLgqB,MAAOhqB,EACPiqB,IAAKjqB,EAAMpO,EAEf,CAKA,SAAS4jN,GAAmBpoJ,GA8B1B,MAAMqnH,EAAO,CACXzlK,EAAGo+C,EAAM3xF,KAAO2xF,EAAMs8I,SAASjuO,KAC/BskC,EAAGqtD,EAAM1xF,MAAQ0xF,EAAMs8I,SAAShuO,MAChCjD,EAAG20F,EAAMniC,IAAMmiC,EAAMs8I,SAASz+K,IAC9B5vD,EAAG+xF,EAAM5Y,OAAS4Y,EAAMs8I,SAASl1J,QAE7BihK,EAAS3kP,OAAO49C,OAAO,CAAC,EAAG+lK,GAC3BwX,EAAa,GACb9rN,EAAU,GACVu1O,EAAatoJ,EAAMuoJ,aAAaliP,OAChCmiP,EAAiBxoJ,EAAM53F,QAAQknN,YAC/Bm5B,EAAkBD,EAAeE,kBAAoBroJ,GAAKioJ,EAAa,EAE7E,IAAK,IAAIx9O,EAAI,EAAGA,EAAIw9O,EAAYx9O,IAAK,CACnC,MAAM1D,EAAOohP,EAAe94C,WAAW1vG,EAAM2oJ,qBAAqB79O,IAClEiI,EAAQjI,GAAK1D,EAAK2L,QAClB,MAAM28M,EAAgB1vH,EAAM4oJ,iBAAiB99O,EAAGk1F,EAAM6oJ,YAAc91O,EAAQjI,GAAI29O,GAC1EK,EAASn7C,GAAOvmM,EAAK0vJ,MACrBylF,GA9EgBxuO,EA8EYiyF,EAAMjyF,IA9Eb+oJ,EA8EkBgyF,EA7E/Cx8F,EAAQ57H,GAD2B47H,EA8EoBtsD,EAAMuoJ,aAAaz9O,IA7EjDwhJ,EAAQ,CAACA,GAC3B,CACLjsF,EAAGkpI,GAAax7L,EAAK+oJ,EAAK56H,OAAQowH,GAClCvmI,EAAGumI,EAAMjmJ,OAASywJ,EAAK5vG,aA2EvB23K,EAAW/zN,GAAKyxO,EAEhB,MAAMhd,EAAe9gC,GAAgBz+F,EAAM+uH,cAAcjkN,GAAK29O,GACxDtqD,EAAQjpL,KAAKhI,MAAMwwL,GAAU6hC,IAGnCwpB,GAAaV,EAAQhhC,EAAMkY,EAFX4oB,GAAgBhqD,EAAOuxB,EAAc3kN,EAAGwxO,EAASl8K,EAAG,EAAG,KACvD8nL,GAAgBhqD,EAAOuxB,EAAcvhN,EAAGouO,EAASx2N,EAAG,GAAI,KAE1E,CAtFF,IAA0BhY,EAAK+oJ,EAAMxK,EAwFnCtsD,EAAMgpJ,eACJ3hC,EAAKzlK,EAAIymM,EAAOzmM,EAChBymM,EAAO11M,EAAI00K,EAAK10K,EAChB00K,EAAKh8M,EAAIg9O,EAAOh9O,EAChBg9O,EAAOp6O,EAAIo5M,EAAKp5M,GAIlB+xF,EAAMipJ,iBA6DR,SAA8BjpJ,EAAO6+H,EAAY9rN,GAC/C,MAAMq3H,EAAQ,GACRk+G,EAAatoJ,EAAMuoJ,aAAaliP,OAChCe,EAAO44F,EAAM53F,SACb,kBAACsgP,EAAiB,QAAEzwK,GAAW7wE,EAAKkoN,YACpC45B,EAAW,CACfC,MAAOjB,GAAsB9gP,GAAQ,EACrCqhP,gBAAiBC,EAAoBroJ,GAAKioJ,EAAa,GAEzD,IAAI7/L,EAEJ,IAAK,IAAI39C,EAAI,EAAGA,EAAIw9O,EAAYx9O,IAAK,CACnCo+O,EAASn2O,QAAUA,EAAQjI,GAC3Bo+O,EAAS1kN,KAAOq6L,EAAW/zN,GAE3B,MAAM4pF,EAAO00J,GAAqBppJ,EAAOl1F,EAAGo+O,GAC5C9+G,EAAMlhI,KAAKwrF,GACK,SAAZzc,IACFyc,EAAK80C,QAAU6/G,GAAgB30J,EAAMjsC,GACjCisC,EAAK80C,UACP/gF,EAAOisC,GAGb,CACA,OAAO01C,CACT,CAtF2Bk/G,CAAqBtpJ,EAAO6+H,EAAY9rN,EACnE,CAEA,SAASg2O,GAAaV,EAAQhhC,EAAMlpB,EAAOorD,EAASC,GAClD,MAAM1sO,EAAM5H,KAAK2H,IAAI3H,KAAK4H,IAAIqhL,IACxBl4B,EAAM/wJ,KAAK2H,IAAI3H,KAAK+wJ,IAAIk4B,IAC9B,IAAIpzL,EAAI,EACJoD,EAAI,EACJo7O,EAAQ3sL,MAAQyqJ,EAAKzlK,GACvB72C,GAAKs8M,EAAKzlK,EAAI2nM,EAAQ3sL,OAAS9/C,EAC/BurO,EAAOzmM,EAAI1sC,KAAK4D,IAAIuvO,EAAOzmM,EAAGylK,EAAKzlK,EAAI72C,IAC9Bw+O,EAAQ1sL,IAAMwqJ,EAAK10K,IAC5B5nC,GAAKw+O,EAAQ1sL,IAAMwqJ,EAAK10K,GAAK71B,EAC7BurO,EAAO11M,EAAIz9B,KAAK0D,IAAIyvO,EAAO11M,EAAG00K,EAAK10K,EAAI5nC,IAErCy+O,EAAQ5sL,MAAQyqJ,EAAKh8M,GACvB8C,GAAKk5M,EAAKh8M,EAAIm+O,EAAQ5sL,OAASqpG,EAC/BoiF,EAAOh9O,EAAI6J,KAAK4D,IAAIuvO,EAAOh9O,EAAGg8M,EAAKh8M,EAAI8C,IAC9Bq7O,EAAQ3sL,IAAMwqJ,EAAKp5M,IAC5BE,GAAKq7O,EAAQ3sL,IAAMwqJ,EAAKp5M,GAAKg4J,EAC7BoiF,EAAOp6O,EAAIiH,KAAK0D,IAAIyvO,EAAOp6O,EAAGo5M,EAAKp5M,EAAIE,GAE3C,CAEA,SAASi7O,GAAqBppJ,EAAO52F,EAAO8/O,GAC1C,MAAMO,EAAgBzpJ,EAAM6oJ,aACtB,MAACM,EAAA,gBAAOV,EAAA,QAAiB11O,EAAO,KAAEyxB,GAAQ0kN,EAC1CQ,EAAqB1pJ,EAAM4oJ,iBAAiBx/O,EAAOqgP,EAAgBN,EAAQp2O,EAAS01O,GACpFtqD,EAAQjpL,KAAKhI,MAAMwwL,GAAUe,GAAgBirD,EAAmBvrD,MAAQtB,MACxE1uL,EA8ER,SAAmBA,EAAG4X,EAAGo4K,GACT,KAAVA,GAA0B,MAAVA,EAClBhwL,GAAM4X,EAAI,GACDo4K,EAAQ,KAAOA,EAAQ,MAChChwL,GAAK4X,GAEP,OAAO5X,CACT,CArFYw7O,CAAUD,EAAmBv7O,EAAGq2B,EAAKze,EAAGo4K,GAC5C2O,EA0DR,SAA8B3O,GAC5B,GAAc,IAAVA,GAAyB,MAAVA,EACjB,MAAO,SACF,GAAIA,EAAQ,IACjB,MAAO,OAGT,MAAO,OACT,CAlEoByrD,CAAqBzrD,GACjC9vL,EAmER,SAA0BtD,EAAGs1D,EAAG6/H,GAChB,UAAVA,EACFn1L,GAAKs1D,EACc,WAAV6/H,IACTn1L,GAAMs1D,EAAI,GAEZ,OAAOt1D,CACT,CA1Ee8+O,CAAiBH,EAAmB3+O,EAAGy5B,EAAK67B,EAAGysI,GAC5D,MAAO,CAELtjE,SAAS,EAGTz+H,EAAG2+O,EAAmB3+O,EACtBoD,IAGA2+L,YAGAz+L,OACAwvD,IAAK1vD,EACLG,MAAOD,EAAOm2B,EAAK67B,EACnB+mB,OAAQj5E,EAAIq2B,EAAKze,EAErB,CAEA,SAASsjO,GAAgB30J,EAAMjsC,GAC7B,IAAKA,EACH,OAAO,EAET,MAAM,KAACp6C,EAAA,IAAMwvD,EAAA,MAAKvvD,EAAK,OAAE84E,GAAUsN,EAGnC,QAFqBs2G,GAAe,CAACjgM,EAAGsD,EAAMF,EAAG0vD,GAAMpV,IAASuiJ,GAAe,CAACjgM,EAAGsD,EAAMF,EAAGi5E,GAAS3+B,IACnGuiJ,GAAe,CAACjgM,EAAGuD,EAAOH,EAAG0vD,GAAMpV,IAASuiJ,GAAe,CAACjgM,EAAGuD,EAAOH,EAAGi5E,GAAS3+B,GAEtF,CAyDA,SAASqhM,GAAkB/7O,EAAK3G,EAAMstF,GACpC,MAAM,KAACrmF,EAAA,IAAMwvD,EAAA,MAAKvvD,EAAK,OAAE84E,GAAUsN,GAC7B,cAACu0G,GAAiB7hM,EAExB,IAAKszL,GAAcuO,GAAgB,CACjC,MAAM/6B,EAAeu/B,GAAcrmM,EAAK8mK,cAClCn7J,EAAU26L,GAAUtmM,EAAK8hM,iBAC/Bn7L,EAAIqqC,UAAY6wJ,EAEhB,MAAM8gD,EAAe17O,EAAO0E,EAAQ1E,KAC9B27O,EAAcnsL,EAAM9qD,EAAQ8qD,IAC5BosL,EAAgB37O,EAAQD,EAAO0E,EAAQgpC,MACvCmuM,EAAiB9iK,EAASvpB,EAAM9qD,EAAQipC,OAE1Ct4C,OAAOojC,OAAOonI,GAAcnwE,MAAK7kD,GAAW,IAANA,KACxCnrC,EAAIivF,YACJkwG,GAAmBn/L,EAAK,CACtBhD,EAAGg/O,EACH57O,EAAG67O,EACH3pL,EAAG4pL,EACHlkO,EAAGmkO,EACH/pJ,OAAQ+tE,IAEVngK,EAAI2uF,QAEJ3uF,EAAIsqC,SAAS0xM,EAAcC,EAAaC,EAAeC,GAG7D,CA+BA,SAASC,GAAenqJ,EAAOG,EAAQkvH,EAAU6wB,GAC/C,MAAM,IAACnyO,GAAOiyF,EACd,GAAIqvH,EAEFthN,EAAIqyF,IAAIJ,EAAM4uH,QAAS5uH,EAAM6uH,QAAS1uH,EAAQ,EAAGq8F,QAC5C,CAEL,IAAIkzB,EAAgB1vH,EAAM4oJ,iBAAiB,EAAGzoJ,GAC9CpyF,EAAIkvF,OAAOyyH,EAAc3kN,EAAG2kN,EAAcvhN,GAE1C,IAAK,IAAIrD,EAAI,EAAGA,EAAIo1O,EAAYp1O,IAC9B4kN,EAAgB1vH,EAAM4oJ,iBAAiB99O,EAAGq1F,GAC1CpyF,EAAImvF,OAAOwyH,EAAc3kN,EAAG2kN,EAAcvhN,GAGhD,CD/EAsiG,GAxJqBu3I,GAAyB,KAEhC,eAAcv3I,GAFPu3I,GAAyB,WAO1B,CAChB3jD,MAAO,CACLp7H,SAAU+7H,GAAMb,WAAWU,YAC3BiE,MAAO,CACLuwB,SAAS,MC6PF,MAAM+wB,WAA0BzD,GA0E7C7wN,WAAAA,CAAY7lB,GACVi8E,MAAMj8E,GAGNlI,KAAK6mN,aAAU7nN,EAEfgB,KAAK8mN,aAAU9nN,EAEfgB,KAAK8gP,iBAAc9hP,EAEnBgB,KAAKwgP,aAAe,GACpBxgP,KAAKkhP,iBAAmB,EAC1B,CAEApsB,aAAAA,GAEE,MAAM9pN,EAAUhL,KAAKu0O,SAAW5uC,GAAUw6C,GAAsBngP,KAAKK,SAAW,GAC1Ei4D,EAAIt4D,KAAKg0C,MAAQh0C,KAAKilG,SAAWj6F,EAAQgpC,MACzCh2B,EAAIhe,KAAKi0C,OAASj0C,KAAK6kG,UAAY75F,EAAQipC,OACjDj0C,KAAK6mN,QAAU15M,KAAKwJ,MAAM3W,KAAKsG,KAAOgyD,EAAI,EAAIttD,EAAQ1E,MACtDtG,KAAK8mN,QAAU35M,KAAKwJ,MAAM3W,KAAK81D,IAAM93C,EAAI,EAAIhT,EAAQ8qD,KACrD91D,KAAK8gP,YAAc3zO,KAAKwJ,MAAMxJ,KAAK4D,IAAIunD,EAAGt6C,GAAK,EACjD,CAEAi3M,mBAAAA,GACE,MAAM,IAAClkN,EAAG,IAAEF,GAAO7Q,KAAKw6M,WAAU,GAElCx6M,KAAK+Q,IAAM6hL,GAAS7hL,KAASmhB,MAAMnhB,GAAOA,EAAM,EAChD/Q,KAAK6Q,IAAM+hL,GAAS/hL,KAASqhB,MAAMrhB,GAAOA,EAAM,EAGhD7Q,KAAK8+O,wBACP,CAMAK,gBAAAA,GACE,OAAOhyO,KAAK+B,KAAKlP,KAAK8gP,YAAcX,GAAsBngP,KAAKK,SACjE,CAEAo2N,kBAAAA,CAAmBn6B,GACjBsiD,GAAgB1+O,UAAUu2N,mBAAmBz4N,KAAKgC,KAAMs8L,GAGxDt8L,KAAKwgP,aAAexgP,KAAK+5M,YACtBroM,KAAI,CAAClT,EAAO6C,KACX,MAAMkjJ,EAAQrjF,GAAalhE,KAAKK,QAAQknN,YAAYrmJ,SAAU,CAAC1iE,EAAO6C,GAAQrB,MAC9E,OAAOukJ,GAAmB,IAAVA,EAAcA,EAAQ,EAAE,IAEzCr7H,QAAO,CAACioB,EAAGpuC,IAAM/C,KAAKqgI,MAAMkhF,kBAAkBx+M,IACnD,CAEAizN,GAAAA,GACE,MAAM32N,EAAOW,KAAKK,QAEdhB,EAAK6wE,SAAW7wE,EAAKkoN,YAAYr3I,QACnCmwK,GAAmBrgP,MAEnBA,KAAKihP,eAAe,EAAG,EAAG,EAAG,EAEjC,CAEAA,cAAAA,CAAeqB,EAAcC,EAAeC,EAAaC,GACvDziP,KAAK6mN,SAAW15M,KAAKwJ,OAAO2rO,EAAeC,GAAiB,GAC5DviP,KAAK8mN,SAAW35M,KAAKwJ,OAAO6rO,EAAcC,GAAkB,GAC5DziP,KAAK8gP,aAAe3zO,KAAK4D,IAAI/Q,KAAK8gP,YAAc,EAAG3zO,KAAK0D,IAAIyxO,EAAcC,EAAeC,EAAaC,GACxG,CAEAz7B,aAAAA,CAAc3lN,GAIZ,OAAOq1L,GAAgBr1L,GAHCozL,IAAOz0L,KAAKwgP,aAAaliP,QAAU,IAGVm3L,GAF9Bz1L,KAAKK,QAAQujN,YAAc,GAGhD,CAEAwD,6BAAAA,CAA8B5oN,GAC5B,GAAIm0L,GAAcn0L,GAChB,OAAO+7M,IAIT,MAAMmoC,EAAgB1iP,KAAK8gP,aAAe9gP,KAAK6Q,IAAM7Q,KAAK+Q,KAC1D,OAAI/Q,KAAKK,QAAQu5G,SACP55G,KAAK6Q,IAAMrS,GAASkkP,GAEtBlkP,EAAQwB,KAAK+Q,KAAO2xO,CAC9B,CAEAC,6BAAAA,CAA8BtsD,GAC5B,GAAI1D,GAAc0D,GAChB,OAAOkkB,IAGT,MAAMqoC,EAAiBvsD,GAAYr2L,KAAK8gP,aAAe9gP,KAAK6Q,IAAM7Q,KAAK+Q,MACvE,OAAO/Q,KAAKK,QAAQu5G,QAAU55G,KAAK6Q,IAAM+xO,EAAiB5iP,KAAK+Q,IAAM6xO,CACvE,CAEAhC,oBAAAA,CAAqBv/O,GACnB,MAAMkmN,EAAcvnN,KAAKwgP,cAAgB,GAEzC,GAAIn/O,GAAS,GAAKA,EAAQkmN,EAAYjpN,OAAQ,CAC5C,MAAMukP,EAAat7B,EAAYlmN,GAC/B,OA1LN,SAAiCwlH,EAAQxlH,EAAOkjJ,GAC9C,OAAO1hD,GAAcgkB,EAAQ,CAC3B09B,QACAljJ,QACAw1B,KAAM,cAEV,CAoLaisN,CAAwB9iP,KAAK+3F,aAAc12F,EAAOwhP,GAE7D,CAEAhC,gBAAAA,CAAiBx/O,EAAO0hP,GAAyC,IAArBrC,EAAAriP,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAkB,EAC5D,MAAM+3L,EAAQp2L,KAAKgnN,cAAc3lN,GAASyzL,GAAU4rD,EACpD,MAAO,CACL19O,EAAGmK,KAAK+wJ,IAAIk4B,GAAS2sD,EAAqB/iP,KAAK6mN,QAC/CzgN,EAAG+G,KAAK4H,IAAIqhL,GAAS2sD,EAAqB/iP,KAAK8mN,QAC/C1wB,QAEJ,CAEAwxB,wBAAAA,CAAyBvmN,EAAO7C,GAC9B,OAAOwB,KAAK6gP,iBAAiBx/O,EAAOrB,KAAKonN,8BAA8B5oN,GACzE,CAEAwkP,eAAAA,CAAgB3hP,GACd,OAAOrB,KAAK4nN,yBAAyBvmN,GAAS,EAAGrB,KAAK84N,eACxD,CAEAmqB,qBAAAA,CAAsB5hP,GACpB,MAAM,KAACiF,EAAA,IAAMwvD,EAAA,MAAKvvD,EAAK,OAAE84E,GAAUr/E,KAAKkhP,iBAAiB7/O,GACzD,MAAO,CACLiF,OACAwvD,MACAvvD,QACA84E,SAEJ,CAKA47I,cAAAA,GACE,MAAM,gBAAC1kG,EAAiBlzB,MAAM,SAACikH,IAAatnN,KAAKK,QACjD,GAAIk2H,EAAiB,CACnB,MAAMvwH,EAAMhG,KAAKgG,IACjBA,EAAI4yF,OACJ5yF,EAAIivF,YACJmtJ,GAAepiP,KAAMA,KAAKonN,8BAA8BpnN,KAAK6+O,WAAYv3B,EAAUtnN,KAAKwgP,aAAaliP,QACrG0H,EAAIqvF,YACJrvF,EAAIqqC,UAAYkmF,EAChBvwH,EAAI2uF,OACJ3uF,EAAIszF,UAER,CAKA4hI,QAAAA,GACE,MAAMl1N,EAAMhG,KAAKgG,IACX3G,EAAOW,KAAKK,SACZ,WAACgnN,EAAU,KAAEhkH,EAAA,OAAM88F,GAAU9gM,EAC7B84O,EAAan4O,KAAKwgP,aAAaliP,OAErC,IAAIyE,EAAG4B,EAAQ43E,EAmBf,GAjBIl9E,EAAKkoN,YAAYr3I,SA1TzB,SAAyB+nB,EAAOkgJ,GAC9B,MAAM,IAACnyO,EAAK3F,SAAS,YAACknN,IAAgBtvH,EAEtC,IAAK,IAAIl1F,EAAIo1O,EAAa,EAAGp1O,GAAK,EAAGA,IAAK,CACxC,MAAM4pF,EAAOsL,EAAMipJ,iBAAiBn+O,GACpC,IAAK4pF,EAAK80C,QAER,SAEF,MAAMy4F,EAAc3S,EAAY5f,WAAW1vG,EAAM2oJ,qBAAqB79O,IACtEg/O,GAAkB/7O,EAAKk0N,EAAavtI,GACpC,MAAMo0J,EAASn7C,GAAOs0B,EAAYnrE,OAC5B,EAAC/rJ,EAAC,EAAEoD,EAAA,UAAG2+L,GAAap4G,EAE1Bg4G,GACE3+L,EACAiyF,EAAMuoJ,aAAaz9O,GACnBC,EACAoD,EAAK26O,EAAO5hM,WAAa,EACzB4hM,EACA,CACEpvL,MAAOuoK,EAAYvoK,MACnBozI,UAAWA,EACXlrC,aAAc,UAGpB,CACF,CAgSMqpF,CAAgBljP,KAAMm4O,GAGpB90I,EAAKnzB,SACPlwE,KAAKs8L,MAAMx7L,SAAQ,CAAC+wM,EAAMxwM,KACxB,GAAc,IAAVA,GAA0B,IAAVA,GAAerB,KAAK+Q,IAAM,EAAI,CAChDpM,EAAS3E,KAAKonN,8BAA8BvV,EAAKrzM,OACjD,MAAM4xC,EAAUpwC,KAAK+3F,WAAW12F,GAC1B64N,EAAc72H,EAAKskG,WAAWv3J,GAC9B+pL,EAAoBh6B,EAAOwH,WAAWv3J,IAtRtD,SAAwB6nD,EAAOkrJ,EAAc/qJ,EAAQ+/I,EAAYhf,GAC/D,MAAMnzN,EAAMiyF,EAAMjyF,IACZshN,EAAW67B,EAAa77B,UAExB,MAAC31J,EAAA,UAAO8iC,GAAa0uJ,GAErB77B,IAAa6wB,IAAgBxmL,IAAU8iC,GAAa2D,EAAS,IAInEpyF,EAAI4yF,OACJ5yF,EAAI4uF,YAAcjjC,EAClB3rD,EAAIyuF,UAAYA,EAChBzuF,EAAIo1N,YAAYjC,EAAW/4B,MAAQ,IACnCp6L,EAAIq1N,eAAiBlC,EAAW94B,WAEhCr6L,EAAIivF,YACJmtJ,GAAenqJ,EAAOG,EAAQkvH,EAAU6wB,GACxCnyO,EAAIqvF,YACJrvF,EAAIsvF,SACJtvF,EAAIszF,UACN,CAmQU8pJ,CAAepjP,KAAMk6N,EAAav1N,EAAQwzO,EAAYhe,OAKxD9S,EAAWn3I,QAAS,CAGtB,IAFAlqE,EAAI4yF,OAEC71F,EAAIo1O,EAAa,EAAGp1O,GAAK,EAAGA,IAAK,CACpC,MAAMm3N,EAAc7S,EAAW1f,WAAW3nM,KAAK4gP,qBAAqB79O,KAC9D,MAAC4uD,EAAA,UAAO8iC,GAAaylI,EAEtBzlI,GAAc9iC,IAInB3rD,EAAIyuF,UAAYA,EAChBzuF,EAAI4uF,YAAcjjC,EAElB3rD,EAAIo1N,YAAYlB,EAAYvpB,YAC5B3qM,EAAIq1N,eAAiBnB,EAAYtpB,iBAEjCjsM,EAAS3E,KAAKonN,8BAA8B/nN,EAAKu6G,QAAU55G,KAAK+Q,IAAM/Q,KAAK6Q,KAC3E0rE,EAAWv8E,KAAK6gP,iBAAiB99O,EAAG4B,GACpCqB,EAAIivF,YACJjvF,EAAIkvF,OAAOl1F,KAAK6mN,QAAS7mN,KAAK8mN,SAC9B9gN,EAAImvF,OAAO5Y,EAASv5E,EAAGu5E,EAASn2E,GAChCJ,EAAIsvF,SACN,CAEAtvF,EAAIszF,UAER,CAKAgiI,UAAAA,GAAc,CAKdE,UAAAA,GACE,MAAMx1N,EAAMhG,KAAKgG,IACX3G,EAAOW,KAAKK,QACZuwN,EAAWvxN,EAAKi9L,MAEtB,IAAKs0B,EAAS1gJ,QACZ,OAGF,MAAM0zI,EAAa5jN,KAAKgnN,cAAc,GACtC,IAAIriN,EAAQqvC,EAEZhuC,EAAI4yF,OACJ5yF,EAAI88L,UAAU9iM,KAAK6mN,QAAS7mN,KAAK8mN,SACjC9gN,EAAIysL,OAAOmxB,GACX59M,EAAI++L,UAAY,SAChB/+L,EAAI6zJ,aAAe,SAEnB75J,KAAKs8L,MAAMx7L,SAAQ,CAAC+wM,EAAMxwM,KACxB,GAAe,IAAVA,GAAerB,KAAK+Q,KAAO,IAAO1R,EAAKu6G,QAC1C,OAGF,MAAMsgH,EAActJ,EAASjpB,WAAW3nM,KAAK+3F,WAAW12F,IAClDg3N,EAAWzyB,GAAOs0B,EAAYnrE,MAGpC,GAFApqJ,EAAS3E,KAAKonN,8BAA8BpnN,KAAKs8L,MAAMj7L,GAAO7C,OAE1D07N,EAAYj5B,kBAAmB,CACjCj7L,EAAI+oJ,KAAOspE,EAASlkM,OACpB6f,EAAQhuC,EAAIu7L,YAAYsQ,EAAKttD,OAAOvwG,MACpChuC,EAAIqqC,UAAY6pL,EAAYh5B,cAE5B,MAAMl2L,EAAU26L,GAAUu0B,EAAY/4B,iBACtCn7L,EAAIsqC,UACD0D,EAAQ,EAAIhpC,EAAQ1E,MACpB3B,EAAS0zN,EAAS57L,KAAO,EAAIzxB,EAAQ8qD,IACtC9hB,EAAQhpC,EAAQgpC,MAChBqkL,EAAS57L,KAAOzxB,EAAQipC,QAI5B0wJ,GAAW3+L,EAAK6rM,EAAKttD,MAAO,GAAI5/I,EAAQ0zN,EAAU,CAChD1mK,MAAOuoK,EAAYvoK,MACnBkzI,YAAaq1B,EAAYx5B,gBACzBxgJ,YAAag6K,EAAYz5B,iBACzB,IAGJz6L,EAAIszF,SACN,CAKAoiI,SAAAA,GAAa,EACfhzH,GA1VqB25I,GAA0B,KAEjC,gBAAe35I,GAFR25I,GAA0B,WAO3B,CAChBnyK,SAAS,EAGTmzK,SAAS,EACT9mK,SAAU,YAEV8qI,WAAY,CACVn3I,SAAS,EACTukB,UAAW,EACXk8G,WAAY,GACZC,iBAAkB,GAGpBvtG,KAAM,CACJikH,UAAU,GAGZ1D,WAAY,EAGZtnB,MAAO,CAEL2E,mBAAmB,EAEnB//H,SAAU+7H,GAAMb,WAAWzyE,SAG7B49F,YAAa,CACXrmB,mBAAeliM,EAGfmiM,gBAAiB,EAGjBjxH,SAAS,EAGT6+E,KAAM,CACJtyH,KAAM,IAIRykC,SAASqjF,GACAA,EAITv5I,QAAS,EAGT21O,mBAAmB,KAErBj4I,GA5DiB25I,GAA0B,gBA8DtB,CACrB,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,UACf35I,GAlEiB25I,GAA0B,cAoExB,CACnBh7B,WAAY,CACVjoB,UAAW,UCxYjB,MAAMkkD,GAAY,CAChBC,YAAa,CAACh0G,QAAQ,EAAM9yG,KAAM,EAAGgjN,MAAO,KAC5Cl7M,OAAQ,CAACgrG,QAAQ,EAAM9yG,KAAM,IAAMgjN,MAAO,IAC1C+D,OAAQ,CAACj0G,QAAQ,EAAM9yG,KAAM,IAAOgjN,MAAO,IAC3CgE,KAAM,CAACl0G,QAAQ,EAAM9yG,KAAM,KAASgjN,MAAO,IAC3CiE,IAAK,CAACn0G,QAAQ,EAAM9yG,KAAM,MAAUgjN,MAAO,IAC3CttL,KAAM,CAACo9E,QAAQ,EAAO9yG,KAAM,OAAWgjN,MAAO,GAC9C1tL,MAAO,CAACw9E,QAAQ,EAAM9yG,KAAM,OAASgjN,MAAO,IAC5CkE,QAAS,CAACp0G,QAAQ,EAAO9yG,KAAM,OAASgjN,MAAO,GAC/CmE,KAAM,CAACr0G,QAAQ,EAAM9yG,KAAM,SAMvBonN,GAA6CloP,OAAOqtB,KAAKs6N,IAM/D,SAASQ,GAAO79O,EAAGC,GACjB,OAAOD,EAAIC,CACb,CAOA,SAASkG,GAAM6rF,EAAO/kF,GACpB,GAAIy/K,GAAcz/K,GAChB,OAAO,KAGT,MAAM26H,EAAU51C,EAAM8rJ,UAChB,OAACp1G,EAAA,MAAQxpI,EAAA,WAAO6+O,GAAc/rJ,EAAMgsJ,WAC1C,IAAIzlP,EAAQ0U,EAaZ,MAXsB,oBAAXy7H,IACTnwI,EAAQmwI,EAAOnwI,IAIZo0L,GAASp0L,KACZA,EAA0B,kBAAXmwI,EACXd,EAAQzhI,MAAM5N,EAA4BmwI,GAC1Cd,EAAQzhI,MAAM5N,IAGN,OAAVA,EACK,MAGL2G,IACF3G,EAAkB,SAAV2G,IAAqBwgI,GAASq+G,KAA8B,IAAfA,EAEjDn2G,EAAQw6E,QAAQ7pN,EAAO2G,GADvB0oI,EAAQw6E,QAAQ7pN,EAAO,UAAWwlP,KAIhCxlP,EACV,CAUA,SAAS0lP,GAA0BC,EAASpzO,EAAKF,EAAKuzO,GACpD,MAAM/wD,EAAOwwD,GAAMvlP,OAEnB,IAAK,IAAIyE,EAAI8gP,GAAMviP,QAAQ6iP,GAAUphP,EAAIswL,EAAO,IAAKtwL,EAAG,CACtD,MAAMghL,EAAWu/D,GAAUO,GAAM9gP,IAC3B2a,EAASqmK,EAAS07D,MAAQ17D,EAAS07D,MAAQptN,OAAOgI,iBAExD,GAAI0pJ,EAASx0C,QAAUpiI,KAAK+B,MAAM2B,EAAME,IAAQ2M,EAASqmK,EAAStnJ,QAAU2nN,EAC1E,OAAOP,GAAM9gP,EAEjB,CAEA,OAAO8gP,GAAMxwD,EAAO,EACtB,CAuCA,SAASgxD,GAAQ/nD,EAAOljK,EAAMo5G,GAC5B,GAAKA,GAEE,GAAIA,EAAWl0I,OAAQ,CAC5B,MAAM,GAACg5L,EAAE,GAAEtyH,GAAMmyH,GAAQ3kD,EAAYp5G,GAErCkjK,EADkB9pD,EAAW8kD,IAAOl+J,EAAOo5G,EAAW8kD,GAAM9kD,EAAWxtE,KACpD,QAJnBs3H,EAAMljK,IAAQ,CAMlB,CA8BA,SAASkrN,GAAoBrsJ,EAAOl5D,EAAQwlN,GAC1C,MAAMjoD,EAAQ,GAER5qL,EAAM,CAAC,EACP2hL,EAAOt0J,EAAOzgC,OACpB,IAAIyE,EAAGvE,EAEP,IAAKuE,EAAI,EAAGA,EAAIswL,IAAQtwL,EACtBvE,EAAQugC,EAAOh8B,GACf2O,EAAIlT,GAASuE,EAEbu5L,EAAMn7L,KAAK,CACT3C,QACAuiM,OAAO,IAMX,OAAiB,IAAT1N,GAAekxD,EAxCzB,SAAuBtsJ,EAAOqkG,EAAO5qL,EAAK6yO,GACxC,MAAM12G,EAAU51C,EAAM8rJ,SAChB3vN,GAASy5G,EAAQw6E,QAAQ/rB,EAAM,GAAG99L,MAAO+lP,GACzClwN,EAAOioK,EAAMA,EAAMh+L,OAAS,GAAGE,MACrC,IAAIuiM,EAAO1/L,EAEX,IAAK0/L,EAAQ3sK,EAAO2sK,GAAS1sK,EAAM0sK,GAASlzD,EAAQ7sI,IAAI+/L,EAAO,EAAGwjD,GAChEljP,EAAQqQ,EAAIqvL,GACR1/L,GAAS,IACXi7L,EAAMj7L,GAAO0/L,OAAQ,GAGzB,OAAOzE,CACT,CA2B8CkoD,CAAcvsJ,EAAOqkG,EAAO5qL,EAAK6yO,GAAzCjoD,CACtC,CAEe,MAAMmoD,WAAkBxxB,GAgDrCllM,WAAAA,CAAYxC,GACV44D,MAAM54D,GAGNvrB,KAAK+9M,OAAS,CACZpzM,KAAM,GACNmvM,OAAQ,GACR9vL,IAAK,IAIPhqB,KAAK0kP,MAAQ,MAEb1kP,KAAK2kP,gBAAa3lP,EAClBgB,KAAK4kP,SAAW,CAAC,EACjB5kP,KAAK6kP,aAAc,EACnB7kP,KAAKikP,gBAAajlP,CACpB,CAEAwJ,IAAAA,CAAK08N,GAAsB,IAAX7lO,EAAOhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,MACrB,MAAM+6B,EAAO8rM,EAAU9rM,OAAS8rM,EAAU9rM,KAAO,CAAC,GAE5Cy0G,EAAU7tI,KAAK+jP,SAAW,IAAI9mG,GAAeioF,EAAUjoF,SAASrrF,MAEtEi8E,EAAQrlI,KAAKnJ,GAMb00L,GAAQ36J,EAAK0rN,eAAgBj3G,EAAQs6E,WAErCnoN,KAAKikP,WAAa,CAChBt1G,OAAQv1G,EAAKu1G,OACbxpI,MAAOi0B,EAAKj0B,MACZ6+O,WAAY5qN,EAAK4qN,YAGnB7/J,MAAM37E,KAAK08N,GAEXllO,KAAK6kP,YAAcxlP,EAAK0xI,UAC1B,CAOA3kI,KAAAA,CAAMsvM,EAAKr6M,GACT,YAAYrC,IAAR08M,EACK,KAEFtvM,GAAMpM,KAAM07M,EACrB,CAEA2R,YAAAA,GACElpI,MAAMkpI,eACNrtN,KAAK+9M,OAAS,CACZpzM,KAAM,GACNmvM,OAAQ,GACR9vL,IAAK,GAET,CAEAirM,mBAAAA,GACE,MAAM50N,EAAUL,KAAKK,QACfwtI,EAAU7tI,KAAK+jP,SACfjG,EAAOz9O,EAAQ+4B,KAAK0kN,MAAQ,MAElC,IAAI,IAAC/sO,EAAA,IAAKF,EAAA,WAAKgoL,EAAA,WAAYC,GAAc94L,KAAK+4L,gBAK9C,SAASgsD,EAAarlD,GACf7G,GAAe3mK,MAAMwtK,EAAO3uL,OAC/BA,EAAM5D,KAAK4D,IAAIA,EAAK2uL,EAAO3uL,MAExB+nL,GAAe5mK,MAAMwtK,EAAO7uL,OAC/BA,EAAM1D,KAAK0D,IAAIA,EAAK6uL,EAAO7uL,KAE/B,CAGKgoL,GAAeC,IAElBisD,EAAa/kP,KAAKglP,mBAIK,UAAnB3kP,EAAQq/L,QAA+C,WAAzBr/L,EAAQi8L,MAAMzzK,QAC9Ck8N,EAAa/kP,KAAKw6M,WAAU,KAIhCzpM,EAAM6hL,GAAS7hL,KAASmhB,MAAMnhB,GAAOA,GAAO88H,EAAQw6E,QAAQz2L,KAAKsG,MAAO4lN,GACxEjtO,EAAM+hL,GAAS/hL,KAASqhB,MAAMrhB,GAAOA,GAAOg9H,EAAQy6E,MAAM12L,KAAKsG,MAAO4lN,GAAQ,EAG9E99O,KAAK+Q,IAAM5D,KAAK4D,IAAIA,EAAKF,EAAM,GAC/B7Q,KAAK6Q,IAAM1D,KAAK0D,IAAIE,EAAM,EAAGF,EAC/B,CAKAm0O,eAAAA,GACE,MAAM/1N,EAAMjvB,KAAKilP,qBACjB,IAAIl0O,EAAMshB,OAAOuiK,kBACb/jL,EAAMwhB,OAAOuoL,kBAMjB,OAJI3rL,EAAI3wB,SACNyS,EAAMke,EAAI,GACVpe,EAAMoe,EAAIA,EAAI3wB,OAAS,IAElB,CAACyS,MAAKF,MACf,CAKA0kN,UAAAA,GACE,MAAMl1N,EAAUL,KAAKK,QACf6kP,EAAW7kP,EAAQ+4B,KACnBw3L,EAAWvwN,EAAQi8L,MACnB9pD,EAAiC,WAApBo+E,EAAS/nM,OAAsB7oB,KAAKilP,qBAAuBjlP,KAAKmlP,YAE5D,UAAnB9kP,EAAQq/L,QAAsBltD,EAAWl0I,SAC3C0B,KAAK+Q,IAAM/Q,KAAK6zN,UAAYrhF,EAAW,GACvCxyI,KAAK6Q,IAAM7Q,KAAK4zN,UAAYphF,EAAWA,EAAWl0I,OAAS,IAG7D,MAAMyS,EAAM/Q,KAAK+Q,IAGXurL,E1D1SH,SAAwBv9J,EAAkBhuB,EAAaF,GAC5D,IAAIgkD,EAAQ,EACRC,EAAM/1B,EAAOzgC,OAEjB,KAAOu2D,EAAQC,GAAO/1B,EAAO81B,GAAS9jD,GACpC8jD,IAEF,KAAOC,EAAMD,GAAS91B,EAAO+1B,EAAM,GAAKjkD,GACtCikD,IAGF,OAAOD,EAAQ,GAAKC,EAAM/1B,EAAOzgC,OAC7BygC,EAAOl/B,MAAMg1D,EAAOC,GACpB/1B,CACN,C0D4RkBqmN,CAAe5yG,EAAYzhI,EAF7B/Q,KAAK6Q,KAkBjB,OAXA7Q,KAAK0kP,MAAQQ,EAASpH,OAASltB,EAASjwB,SACpCujD,GAA0BgB,EAASf,QAASnkP,KAAK+Q,IAAK/Q,KAAK6Q,IAAK7Q,KAAKqlP,kBAAkBt0O,IArR/F,SAAoCknF,EAAO0+H,EAAUwtB,EAASpzO,EAAKF,GACjE,IAAK,IAAI9N,EAAI8gP,GAAMvlP,OAAS,EAAGyE,GAAK8gP,GAAMviP,QAAQ6iP,GAAUphP,IAAK,CAC/D,MAAM+6O,EAAO+F,GAAM9gP,GACnB,GAAIugP,GAAUxF,GAAMvuG,QAAUt3C,EAAM8rJ,SAAS37B,KAAKv3M,EAAKE,EAAK+sO,IAASnnB,EAAW,EAC9E,OAAOmnB,CAEX,CAEA,OAAO+F,GAAMM,EAAUN,GAAMviP,QAAQ6iP,GAAW,EAClD,CA6QQmB,CAA2BtlP,KAAMs8L,EAAMh+L,OAAQ4mP,EAASf,QAASnkP,KAAK+Q,IAAK/Q,KAAK6Q,MACpF7Q,KAAK2kP,WAAc/zB,EAAS7vB,MAAMuwB,SAA0B,SAAftxN,KAAK0kP,MAxQtD,SAA4B5G,GAC1B,IAAK,IAAI/6O,EAAI8gP,GAAMviP,QAAQw8O,GAAQ,EAAGzqD,EAAOwwD,GAAMvlP,OAAQyE,EAAIswL,IAAQtwL,EACrE,GAAIugP,GAAUO,GAAM9gP,IAAIwsI,OACtB,OAAOs0G,GAAM9gP,EAGnB,CAmQQwiP,CAAmBvlP,KAAK0kP,YADyC1lP,EAErEgB,KAAKwlP,YAAYhzG,GAEbnyI,EAAQu5G,SACV0iF,EAAM1iF,UAGD0qI,GAAoBtkP,KAAMs8L,EAAOt8L,KAAK2kP,WAC/C,CAEA7uB,aAAAA,GAGM91N,KAAKK,QAAQolP,qBACfzlP,KAAKwlP,YAAYxlP,KAAKs8L,MAAM5qL,KAAImgM,IAASA,EAAKrzM,QAElD,CAUAgnP,WAAAA,GAA6B,IAGvBpxN,EAAOC,EAHDm+G,EAAan0I,UAAAC,OAAA,QAAAU,IAAAX,UAAC,GAADA,UAAC,GAAD,GACnBw2D,EAAQ,EACRC,EAAM,EAGN90D,KAAKK,QAAQsE,QAAU6tI,EAAWl0I,SACpC81B,EAAQp0B,KAAK0lP,mBAAmBlzG,EAAW,IAEzC39E,EADwB,IAAtB29E,EAAWl0I,OACL,EAAI81B,GAEHp0B,KAAK0lP,mBAAmBlzG,EAAW,IAAMp+G,GAAS,EAE7DC,EAAOr0B,KAAK0lP,mBAAmBlzG,EAAWA,EAAWl0I,OAAS,IAE5Dw2D,EADwB,IAAtB09E,EAAWl0I,OACP+1B,GAECA,EAAOr0B,KAAK0lP,mBAAmBlzG,EAAWA,EAAWl0I,OAAS,KAAO,GAGhF,MAAM27N,EAAQznF,EAAWl0I,OAAS,EAAI,GAAM,IAC5Cu2D,EAAQoiI,GAAYpiI,EAAO,EAAGolK,GAC9BnlK,EAAMmiI,GAAYniI,EAAK,EAAGmlK,GAE1Bj6N,KAAK4kP,SAAW,CAAC/vL,QAAOC,MAAKp3C,OAAQ,GAAKm3C,EAAQ,EAAIC,GACxD,CASAqwL,SAAAA,GACE,MAAMt3G,EAAU7tI,KAAK+jP,SACfhzO,EAAM/Q,KAAK+Q,IACXF,EAAM7Q,KAAK6Q,IACXxQ,EAAUL,KAAKK,QACf6kP,EAAW7kP,EAAQ+4B,KAEnB0nK,EAAQokD,EAASpH,MAAQoG,GAA0BgB,EAASf,QAASpzO,EAAKF,EAAK7Q,KAAKqlP,kBAAkBt0O,IACtGmuO,EAAWpsD,GAAezyL,EAAQi8L,MAAM4iD,SAAU,GAClDyG,EAAoB,SAAV7kD,GAAmBokD,EAASlB,WACtC4B,EAAajgH,GAASggH,KAAwB,IAAZA,EAClCrpD,EAAQ,CAAC,EACf,IACIljK,EAAM6X,EADN7c,EAAQrjB,EAYZ,GARI60O,IACFxxN,GAASy5G,EAAQw6E,QAAQj0L,EAAO,UAAWuxN,IAI7CvxN,GAASy5G,EAAQw6E,QAAQj0L,EAAOwxN,EAAa,MAAQ9kD,GAGjDjzD,EAAQu6E,KAAKv3M,EAAKE,EAAK+vL,GAAS,IAASo+C,EAC3C,MAAM,IAAInxO,MAAMgD,EAAM,QAAUF,EAAM,uCAAyCquO,EAAW,IAAMp+C,GAGlG,MAAMtuD,EAAsC,SAAzBnyI,EAAQi8L,MAAMzzK,QAAqB7oB,KAAK6lP,oBAC3D,IAAKzsN,EAAOhF,EAAO6c,EAAQ,EAAG7X,EAAOvoB,EAAKuoB,GAAQy0G,EAAQ7sI,IAAIo4B,EAAM8lN,EAAUp+C,GAAQ7vJ,IACpFozM,GAAQ/nD,EAAOljK,EAAMo5G,GAQvB,OALIp5G,IAASvoB,GAA0B,UAAnBxQ,EAAQq/L,QAAgC,IAAVzuJ,GAChDozM,GAAQ/nD,EAAOljK,EAAMo5G,GAIhB72I,OAAOqtB,KAAKszK,GAAO1kF,KAAKksI,IAAQpyO,KAAI1O,IAAMA,GACnD,CAMAm4M,gBAAAA,CAAiB38M,GACf,MAAMqvI,EAAU7tI,KAAK+jP,SACfmB,EAAWllP,KAAKK,QAAQ+4B,KAE9B,OAAI8rN,EAASY,cACJj4G,EAAQ5hI,OAAOzN,EAAO0mP,EAASY,eAEjCj4G,EAAQ5hI,OAAOzN,EAAO0mP,EAASJ,eAAejzL,SACvD,CAOA5lD,MAAAA,CAAOzN,EAAOyN,GACZ,MACMk8M,EADUnoN,KAAKK,QACG+4B,KAAK0rN,eACvBhH,EAAO99O,KAAK0kP,MACZqB,EAAM95O,GAAUk8M,EAAQ21B,GAC9B,OAAO99O,KAAK+jP,SAAS93O,OAAOzN,EAAOunP,EACrC,CAWAC,mBAAAA,CAAoB5sN,EAAM/3B,EAAOi7L,EAAOrwL,GACtC,MAAM5L,EAAUL,KAAKK,QACfyL,EAAYzL,EAAQi8L,MAAMp7H,SAEhC,GAAIp1D,EACF,OAAOo1D,GAAKp1D,EAAW,CAACstB,EAAM/3B,EAAOi7L,GAAQt8L,MAG/C,MAAMmoN,EAAU9nN,EAAQ+4B,KAAK0rN,eACvBhH,EAAO99O,KAAK0kP,MACZH,EAAYvkP,KAAK2kP,WACjBsB,EAAcnI,GAAQ31B,EAAQ21B,GAC9BoI,EAAc3B,GAAap8B,EAAQo8B,GACnC1yC,EAAOvV,EAAMj7L,GACb0/L,EAAQwjD,GAAa2B,GAAer0C,GAAQA,EAAK9Q,MAEvD,OAAO/gM,KAAK+jP,SAAS93O,OAAOmtB,EAAMntB,IAAW80L,EAAQmlD,EAAcD,GACrE,CAKAxvB,kBAAAA,CAAmBn6B,GACjB,IAAIv5L,EAAGswL,EAAMwe,EAEb,IAAK9uM,EAAI,EAAGswL,EAAOiJ,EAAMh+L,OAAQyE,EAAIswL,IAAQtwL,EAC3C8uM,EAAOvV,EAAMv5L,GACb8uM,EAAKttD,MAAQvkJ,KAAKgmP,oBAAoBn0C,EAAKrzM,MAAOuE,EAAGu5L,EAEzD,CAMAopD,kBAAAA,CAAmBlnP,GACjB,OAAiB,OAAVA,EAAiB+7M,KAAO/7M,EAAQwB,KAAK+Q,MAAQ/Q,KAAK6Q,IAAM7Q,KAAK+Q,IACtE,CAMAioL,gBAAAA,CAAiBx6L,GACf,MAAM2nP,EAAUnmP,KAAK4kP,SACf/5M,EAAM7qC,KAAK0lP,mBAAmBlnP,GACpC,OAAOwB,KAAK0hN,oBAAoBykC,EAAQtxL,MAAQhqB,GAAOs7M,EAAQzoO,OACjE,CAMAkkM,gBAAAA,CAAiBttK,GACf,MAAM6xM,EAAUnmP,KAAK4kP,SACf/5M,EAAM7qC,KAAK64N,mBAAmBvkL,GAAS6xM,EAAQzoO,OAASyoO,EAAQrxL,IACtE,OAAO90D,KAAK+Q,IAAM85B,GAAO7qC,KAAK6Q,IAAM7Q,KAAK+Q,IAC3C,CAOAq1O,aAAAA,CAAc7hG,GACZ,MAAM8hG,EAAYrmP,KAAKK,QAAQi8L,MACzBgqD,EAAiBtmP,KAAKgG,IAAIu7L,YAAYh9C,GAAOvwG,MAC7CoiJ,EAAQX,GAAUz1L,KAAK8/M,eAAiBumC,EAAU9lD,YAAc8lD,EAAU/lD,aAC1EimD,EAAcp5O,KAAK+wJ,IAAIk4B,GACvBowD,EAAcr5O,KAAK4H,IAAIqhL,GACvBqwD,EAAezmP,KAAK04N,wBAAwB,GAAGj8L,KAErD,MAAO,CACL67B,EAAIguL,EAAiBC,EAAgBE,EAAeD,EACpDxoO,EAAIsoO,EAAiBE,EAAgBC,EAAeF,EAExD,CAOAlB,iBAAAA,CAAkBqB,GAChB,MAAMxB,EAAWllP,KAAKK,QAAQ+4B,KACxB0rN,EAAiBI,EAASJ,eAG1B74O,EAAS64O,EAAeI,EAASpH,OAASgH,EAAevB,YACzDoD,EAAe3mP,KAAKgmP,oBAAoBU,EAAa,EAAGpC,GAAoBtkP,KAAM,CAAC0mP,GAAc1mP,KAAK2kP,YAAa14O,GACnHwwB,EAAOz8B,KAAKomP,cAAcO,GAG1BvC,EAAWj3O,KAAKwJ,MAAM3W,KAAK8/M,eAAiB9/M,KAAKg0C,MAAQvX,EAAK67B,EAAIt4D,KAAKi0C,OAASxX,EAAKze,GAAK,EAChG,OAAOomO,EAAW,EAAIA,EAAW,CACnC,CAKAyB,iBAAAA,GACE,IACI9iP,EAAGswL,EADH7gD,EAAaxyI,KAAK+9M,OAAOpzM,MAAQ,GAGrC,GAAI6nI,EAAWl0I,OACb,OAAOk0I,EAGT,MAAM6hF,EAAQr0N,KAAKo1M,0BAEnB,GAAIp1M,KAAK6kP,aAAexwB,EAAM/1N,OAC5B,OAAQ0B,KAAK+9M,OAAOpzM,KAAO0pN,EAAM,GAAGjwG,WAAW42F,mBAAmBh7M,MAGpE,IAAK+C,EAAI,EAAGswL,EAAOghC,EAAM/1N,OAAQyE,EAAIswL,IAAQtwL,EAC3CyvI,EAAaA,EAAWvnI,OAAOopN,EAAMtxN,GAAGqhH,WAAW42F,mBAAmBh7M,OAGxE,OAAQA,KAAK+9M,OAAOpzM,KAAO3K,KAAK8wI,UAAU0B,EAC5C,CAKAyyG,kBAAAA,GACE,MAAMzyG,EAAaxyI,KAAK+9M,OAAOjE,QAAU,GACzC,IAAI/2M,EAAGswL,EAEP,GAAI7gD,EAAWl0I,OACb,OAAOk0I,EAGT,MAAMsnE,EAAS95M,KAAK+5M,YACpB,IAAKh3M,EAAI,EAAGswL,EAAOymB,EAAOx7M,OAAQyE,EAAIswL,IAAQtwL,EAC5CyvI,EAAWrxI,KAAKiL,GAAMpM,KAAM85M,EAAO/2M,KAGrC,OAAQ/C,KAAK+9M,OAAOjE,OAAS95M,KAAK6kP,YAAcryG,EAAaxyI,KAAK8wI,UAAU0B,EAC9E,CAMA1B,SAAAA,CAAU/xG,GAER,OAAO84J,GAAa94J,EAAO64E,KAAKksI,IAClC,ECtpBF,SAAShyD,GAAY78I,EAAOxsB,EAAKmxF,GAC/B,IAEIgtI,EAAYC,EAAYC,EAAYC,EAFpCzvD,EAAK,EACLtyH,EAAK/vB,EAAM32C,OAAS,EAEpBs7G,GACEnxF,GAAOwsB,EAAMqiJ,GAAIzsJ,KAAOpiB,GAAOwsB,EAAM+vB,GAAIn6B,OACzCysJ,KAAItyH,MAAMuyH,GAAatiJ,EAAO,MAAOxsB,MAEvCoiB,IAAK+7M,EAAYxtN,KAAM0tN,GAAc7xM,EAAMqiJ,MAC3CzsJ,IAAKg8M,EAAYztN,KAAM2tN,GAAc9xM,EAAM+vB,MAEzCv8C,GAAOwsB,EAAMqiJ,GAAIl+J,MAAQ3Q,GAAOwsB,EAAM+vB,GAAI5rC,QAC1Ck+J,KAAItyH,MAAMuyH,GAAatiJ,EAAO,OAAQxsB,MAExC2Q,KAAMwtN,EAAY/7M,IAAKi8M,GAAc7xM,EAAMqiJ,MAC3Cl+J,KAAMytN,EAAYh8M,IAAKk8M,GAAc9xM,EAAM+vB,KAG/C,MAAMssF,EAAOu1F,EAAaD,EAC1B,OAAOt1F,EAAOw1F,GAAcC,EAAaD,IAAer+N,EAAMm+N,GAAct1F,EAAOw1F,CACrF,CDmoBAp+I,GA5dqB+7I,GAAkB,KAEzB,QAAO/7I,GAFA+7I,GAAkB,WAOnB,CAQhB/kD,OAAQ,OAERziD,SAAU,CAAC,EACX7jH,KAAM,CACJu1G,QAAQ,EACRmvG,MAAM,EACN34O,OAAO,EACP6+O,YAAY,EACZG,QAAS,cACTW,eAAgB,CAAC,GAEnBxoD,MAAO,CASLzzK,OAAQ,OAERq4C,UAAU,EAEV6/H,MAAO,CACLuwB,SAAS,MC7MjB,MAAM01B,WAAwBvC,GAY5B12N,WAAAA,CAAYxC,GACV44D,MAAM54D,GAGNvrB,KAAKinP,OAAS,GAEdjnP,KAAKknP,aAAUloP,EAEfgB,KAAKmnP,iBAAcnoP,CACrB,CAKAwmP,WAAAA,GACE,MAAMhzG,EAAaxyI,KAAKonP,yBAClBnyM,EAAQj1C,KAAKinP,OAASjnP,KAAKqnP,iBAAiB70G,GAClDxyI,KAAKknP,QAAUp1D,GAAY78I,EAAOj1C,KAAK+Q,KACvC/Q,KAAKmnP,YAAcr1D,GAAY78I,EAAOj1C,KAAK6Q,KAAO7Q,KAAKknP,QACvD/iK,MAAMqhK,YAAYhzG,EACpB,CAaA60G,gBAAAA,CAAiB70G,GACf,MAAM,IAACzhI,EAAG,IAAEF,GAAO7Q,KACbqiI,EAAQ,GACRptF,EAAQ,GACd,IAAIlyC,EAAGswL,EAAMlpK,EAAMg0L,EAAM/zL,EAEzB,IAAKrnB,EAAI,EAAGswL,EAAO7gD,EAAWl0I,OAAQyE,EAAIswL,IAAQtwL,EAChDo7M,EAAO3rE,EAAWzvI,GACdo7M,GAAQptM,GAAOotM,GAAQttM,GACzBwxH,EAAMlhI,KAAKg9M,GAIf,GAAI97E,EAAM/jI,OAAS,EAEjB,MAAO,CACL,CAAC86B,KAAMroB,EAAK85B,IAAK,GACjB,CAACzR,KAAMvoB,EAAKg6B,IAAK,IAIrB,IAAK9nC,EAAI,EAAGswL,EAAOhxD,EAAM/jI,OAAQyE,EAAIswL,IAAQtwL,EAC3CqnB,EAAOi4G,EAAMt/H,EAAI,GACjBonB,EAAOk4G,EAAMt/H,EAAI,GACjBo7M,EAAO97E,EAAMt/H,GAGToK,KAAKhI,OAAOilB,EAAOD,GAAQ,KAAOg0L,GACpClpK,EAAM9zC,KAAK,CAACi4B,KAAM+kL,EAAMtzK,IAAK9nC,GAAKswL,EAAO,KAG7C,OAAOp+I,CACT,CAQAkwM,SAAAA,GACE,MAAMp0O,EAAM/Q,KAAK+Q,IACXF,EAAM7Q,KAAK6Q,IACjB,IAAI2hI,EAAaruD,MAAM0hK,oBAOvB,OANKrzG,EAAWz4F,SAAShpC,IAASyhI,EAAWl0I,QAC3Ck0I,EAAWjxI,OAAO,EAAG,EAAGwP,GAErByhI,EAAWz4F,SAASlpC,IAA8B,IAAtB2hI,EAAWl0I,QAC1Ck0I,EAAWrxI,KAAK0P,GAEX2hI,EAAW56B,MAAK,CAAC3xG,EAAGC,IAAMD,EAAIC,GACvC,CAOAkhP,sBAAAA,GACE,IAAI50G,EAAaxyI,KAAK+9M,OAAO/zL,KAAO,GAEpC,GAAIwoH,EAAWl0I,OACb,OAAOk0I,EAGT,MAAM7nI,EAAO3K,KAAK6lP,oBACZthG,EAAQvkJ,KAAKilP,qBAUnB,OANEzyG,EAHE7nI,EAAKrM,QAAUimJ,EAAMjmJ,OAGV0B,KAAK8wI,UAAUnmI,EAAKM,OAAOs5I,IAE3B55I,EAAKrM,OAASqM,EAAO45I,EAEpC/R,EAAaxyI,KAAK+9M,OAAO/zL,IAAMwoH,EAExBA,CACT,CAMAkzG,kBAAAA,CAAmBlnP,GACjB,OAAQszL,GAAY9xL,KAAKinP,OAAQzoP,GAASwB,KAAKknP,SAAWlnP,KAAKmnP,WACjE,CAMAvlC,gBAAAA,CAAiBttK,GACf,MAAM6xM,EAAUnmP,KAAK4kP,SACf/pJ,EAAU76F,KAAK64N,mBAAmBvkL,GAAS6xM,EAAQzoO,OAASyoO,EAAQrxL,IAC1E,OAAOg9H,GAAY9xL,KAAKinP,OAAQpsJ,EAAU76F,KAAKmnP,YAAcnnP,KAAKknP,SAAS,EAC7E,EACFx+I,GA7IMs+I,GAAwB,KAEhB,cAAat+I,GAFrBs+I,GAAwB,WAOVvC,GAAU/2G,+HC5BxB45G,GAAsB,QAErB,SAASC,GAAgB/qP,EAAsBgC,GACjC,oBAARhC,EACTA,EAAIgC,GACKhC,IACTA,EAAIsnD,QAAUtlD,EAElB,CAcO,SAASgpP,GAKdC,EACAC,GAEAD,EAAY3tC,OAAS4tC,CACvB,CAEO,SAASC,GAKdF,EACAG,GACA,IAAAC,EAAAxpP,UAAeC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAAipP,GAEf,MAAMQ,EAA8C,GAEpDL,EAAYjqD,SAAWoqD,EAAal2O,KACjCq2O,IAEC,MAAMC,EAAiBP,EAAYjqD,SAASjjH,MACzChO,GACCA,EAAQs7K,KAAkBE,EAAYF,KAI1C,OACGG,GACAD,EAAYp9O,OACbm9O,EAAc/tM,SAASiuM,IAKzBF,EAAc3mP,KAAK6mP,GAEnBrsP,OAAO49C,OAAOyuM,EAAgBD,GAEvBC,GAPLlgK,GAAA,GAAYigK,EAOP,GAGb,CAEO,SAASE,GAIdt9O,GAAuC,IAAAk9O,EAAAxpP,UAAeC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAAipP,GACtD,MAAMY,EAA4C,CAChDpuC,OAAQ,GACRtc,SAAU,IAMZ,OAHAgqD,GAAUU,EAAUv9O,EAAKmvM,QACzB6tC,GAAYO,EAAUv9O,EAAK6yL,SAAUqqD,GAE9BK,CACT,CCnFA,SAASC,GAKP58N,EACA/uB,GAEA,MAAM,OACJy3C,EAAS,IAAG,MACZD,EAAQ,IAAG,OACXo0M,GAAS,EAAK,aACdP,EAAY,KACZhxN,EAAI,KACJlsB,EAAI,QACJtK,EAAO,QACPg8J,EAAU,GAAE,gBACZgsF,EAAe,WACfC,GAEE/8N,EADCg9N,EAAAv4I,GACDzkF,EAAA0uG,IACE/lC,GAAYntB,EAAAA,EAAAA,QAA0B,MACtCyhL,GAAWzhL,EAAAA,EAAAA,QAA6C,MAExD0hL,EAAcA,KACbv0J,EAAUpwC,UAEf0kM,EAAS1kM,QAAU,IAAI4kM,GAAQx0J,EAAUpwC,QAAS,CAChDjtB,OACAlsB,KAAMs9O,GAAUt9O,EAAMk9O,GACtBxnP,QAASA,GAAWynF,GAAA,GAAKznF,GACzBg8J,YAGFkrF,GAAa/qP,EAAKgsP,EAAS1kM,SAAQ,EAG/B6kM,EAAeA,KACnBpB,GAAa/qP,EAAK,MAEdgsP,EAAS1kM,UACX0kM,EAAS1kM,QAAQx2B,UACjBk7N,EAAS1kM,QAAU,KACrB,EA6CF,OA1CA2iB,EAAAA,EAAAA,YAAW,MACJ2hL,GAAUI,EAAS1kM,SAAWzjD,GDtChC,SAILggI,EAAoCuoH,GACpC,MAAMvoP,EAAUggI,EAAMhgI,QAElBA,GAAWuoP,GACbjtP,OAAO49C,OAAOl5C,EAASuoP,EAE3B,CC6BMC,CAAWL,EAAS1kM,QAASzjD,EAC/B,GACC,CAAC+nP,EAAQ/nP,KAEZomE,EAAAA,EAAAA,YAAW,MACJ2hL,GAAUI,EAAS1kM,SACtB0jM,GAAUgB,EAAS1kM,QAAQgmC,OAAOn/E,KAAMA,EAAKmvM,OAC/C,GACC,CAACsuC,EAAQz9O,EAAKmvM,UAEjBrzI,EAAAA,EAAAA,YAAW,MACJ2hL,GAAUI,EAAS1kM,SAAWn5C,EAAK6yL,UACtCmqD,GAAYa,EAAS1kM,QAAQgmC,OAAOn/E,KAAMA,EAAK6yL,SAAUqqD,EAC3D,GACC,CAACO,EAAQz9O,EAAK6yL,YAEjB/2H,EAAAA,EAAAA,YAAW,KACJ+hL,EAAS1kM,UAEVskM,GACFO,IACAjvN,WAAW+uN,IAEXD,EAAS1kM,QAAQ7yC,OAAOq3O,GAC1B,GACC,CAACF,EAAQ/nP,EAASsK,EAAKmvM,OAAQnvM,EAAK6yL,SAAU8qD,KAEjD7hL,EAAAA,EAAAA,YAAW,KACJ+hL,EAAS1kM,UAEd6kM,IACAjvN,WAAW+uN,GAAA,GACV,CAAC5xN,KAEJ4vC,EAAAA,EAAAA,YAAW,KACTgiL,IAEO,IAAME,MACZ,IAGD30J,EAAAA,cAAC,SAAAlM,GAAA,CACCtrF,IAAK03F,EACL40J,KAAK,MACL70M,OAAQA,EACRD,MAAOA,GACHu0M,GAEHF,EAGP,CAEO,MAAMhlB,IAAQrkH,EAAAA,EAAAA,YAAWmpI,IC7FhC,SAASY,GACPlyN,EACAmyN,GAIA,OAFAN,GAAQ16N,SAASg7N,IAEVhqI,EAAAA,EAAAA,aACJ,CAAAzzF,EAAO/uB,IAAQw3F,EAAAA,cAACqvI,GAAAv7I,GAAAA,GAAA,GAAUv8D,GAAK,IAAE/uB,IAAKA,EAAKq6B,KAAMA,MAEtD,OAEaoyN,GAAuBF,GAAiB,OAAQljC,IAMhDqjC,GAA2BH,GACtC,WACAtmC,ICvCF,GAAwC,4CAAxC,GAAiG,iCAAjG,GAAwI,0BAAxI,GAA2K,6BCI3K4gB,GAAMr1M,SAAS69M,GAAYkN,GAASjI,IAEpC,MAsEA,GAtE6BtvJ,IAAgB,IAAf,MAAEhjF,GAAOgjF,EACnC,MAAMgnK,GAAWzhL,EAAAA,EAAAA,QAAO,MAelB1mE,EAAU,CACZisG,YAAY,EACZ6xF,qBAAqB,EACrB9hC,QAAS,CACLmpD,OAAQ,CAAEt1I,SAAS,GACnBylK,QAAS,CAAErkB,SAAS,IAExBt6J,UAAW,CACP4rK,WAAYA,KACRumB,GAAkB,IAKxBA,EAAmBA,KACrB,MAAM9oH,EAAQmoH,EAAS1kM,QACvB,IAAKu8E,EAAO,OAEZ,MAAMr6H,EAAMq6H,EAAMr6H,IACZg/M,EAAU3kF,EAAMk7E,UAAUj1M,KAAO+5H,EAAMk7E,UAAUvnK,MAAQ,EACzDixK,EAAU5kF,EAAMk7E,UAAUl8H,OAC1B+Y,EAAUioC,EAAMk7E,UAAUvnK,MAAQ,EAAK,GAAM,EAE7CoiJ,GAAc,OAAL53L,QAAK,IAALA,OAAK,EAALA,EAAO4qP,YAAa,IAAOj8O,KAAKmrF,GACzC+wJ,EAAOrkC,EAAU5sH,EAASjrF,KAAK+wJ,IAAIk4B,EAAQjpL,KAAKmrF,IAChDgxJ,EAAOrkC,EAAU7sH,EAASjrF,KAAK4H,IAAIqhL,EAAQjpL,KAAKmrF,IAEtDtyF,EAAIivF,YACJjvF,EAAIqyF,IAAIgxJ,EAAMC,EAAM,EAAG,EAAG,EAAIn8O,KAAKmrF,IACnCtyF,EAAIqqC,UAAY,QAChBrqC,EAAI2uF,OAEJ3uF,EAAIivF,YACJjvF,EAAIqyF,IAAIgxJ,EAAMC,EAAM,EAAG,EAAG,EAAIn8O,KAAKmrF,IACnCtyF,EAAIqqC,UAAY,QAChBrqC,EAAI2uF,MAAM,EAGd,OACIgtC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAA6B5lE,SAAA,EACzCijF,EAAAA,GAAAA,KAAC4pH,GAAQ,CAAC1sP,IAAKgsP,EAAU79O,KArDpB,CACT6yL,SAAU,CACN,CACI7yL,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,IACvB4rH,gBAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,WAC9DysE,YAAa,EACbsgB,OAAQ,MACRR,cAAe,IACflgB,SAAU,OA6CuBviM,QAASA,KAE9Ci/H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAS,GAAAlzE,OAAKg3G,GAAiB,KAAAh3G,OAAIg3G,IAAa5lE,SAC3C,OAAL79C,QAAK,IAALA,OAAK,EAALA,EAAO4qP,cAGZ9pH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAS,GAAAlzE,OAAKg3G,GAAiB,KAAAh3G,OAAIg3G,IAAgB5lE,SAC9C,OAAL79C,QAAK,IAALA,OAAK,EAALA,EAAO+qP,oBAEV,ECnERC,GAAgBhoK,IAIf,IAJgB,QACnBgjG,EAAO,SACPD,EAAQ,eACRE,GACHjjG,EAEOkjG,EAAaH,GAAmB,OAAPC,QAAO,IAAPA,GAAAA,EAASG,iBAAoBvf,GAAiB9yI,WAAWiyJ,GAAYjyJ,WAAkB,OAAPkyJ,QAAO,IAAPA,OAAO,EAAPA,EAASG,mBAAqB,GAE3I,OACIhjD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAiB5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAAjjF,SAAK,kBACLijF,EAAAA,GAAAA,KAAA,OAAAjjF,UACIijF,EAAAA,GAAAA,KAACmqH,GAAY,CAACjrP,MAAOgmL,UAI7B7iD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAC9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAC,gBAClCijF,EAAAA,GAAAA,KAAA,OAAAjjF,SAAoB,OAAdooI,QAAc,IAAdA,GAAAA,EAAgBhtI,cAAcsC,SAAS,MAAK,SAAA9uC,OAAOy5K,GAAS,IAAAz5K,OAASm6J,GAAwB,OAAPof,QAAO,IAAPA,OAAO,EAAPA,EAASG,sBACrGrlD,EAAAA,GAAAA,KAAA,OAAAjjF,SACKmoI,KAAmB,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAASklE,8CAA+C,GAAI/nH,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAgB5lE,SAAA,CAAC,SAAQwoH,GAA6B,OAAP2f,QAAO,IAAPA,OAAO,EAAPA,EAASklE,6CAA8C,GAAG,QAAW/nH,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAgB5lE,SAAA,CAAC,SAAQwoH,GAA6B,OAAP2f,QAAO,IAAPA,OAAO,EAAPA,EAASklE,6CAA8C,GAAG,cAGhV/nH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAC,eAClCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAa5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAI,0BAA0BmY,IAAI,OAAOyvC,UAAW8jC,MACzD0f,EAAAA,GAAAA,MAAA,OAAAtlF,SAAA,CAAMmoI,GAAW3f,GAA6B,OAAP2f,QAAO,IAAPA,OAAO,EAAPA,EAASmlE,cAAe,GAAG,WAEtEhoH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAa5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAI,0BAA0BmY,IAAI,OAAOyvC,UAAW8jC,MACzD0f,EAAAA,GAAAA,MAAA,OAAAtlF,SAAA,CAAMmoI,GAAW3f,GAA6B,OAAP2f,QAAO,IAAPA,OAAO,EAAPA,EAASolE,cAAe,GAAG,kBAI3E,EAIf,IAAe3qI,EAAAA,EAAAA,MAAKuqI,ICRpB,GAjCchoK,IAUP,IAVQ,cACbqoK,EAAa,WACbtkE,EAAU,UACVC,EAAS,UACTskE,EAAS,QACTtlE,EAAO,iBACPS,EAAgB,SAChBV,EAAQ,YACRwlE,EAAW,eACXtlE,GACDjjG,EAEC,MAAMwoK,GAAkBzjL,EAAAA,EAAAA,cAAY,KAC3B+4D,EAAAA,GAAAA,KAAC2qH,GAAQ,CACdzlE,QAASA,EACTD,SAAUA,EACVU,iBAAkBA,EAClBR,eAAgBA,KAEjB,CAACD,EAASC,EAAgBF,IAE7B,OACEjlD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,UAChCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAqB5lE,SAAA,EACnCijF,EAAAA,GAAAA,KAAC0qC,GAAI,CAACsb,MAAOykE,EAAap7M,MAAK,oBAC/B2wF,EAAAA,GAAAA,KAAC0qC,GAAI,CAACub,WAAYA,EAAYC,UAAWA,EAAW72I,MAAK,cAAiBzlB,QAAQ,KAElFo2G,EAAAA,GAAAA,KAAC0qC,GAAI,CAACsb,MAAOwkE,EAAWn7M,MAAK,eAC5Bq7M,QAEC,EClCV,IAAgB,MAAQ,qBAAqB,IAAM,mBAAmB,IAAM,mBAAmB,OAAS,sBAAsB,MAAQ,qBAAqB,KAAO,oBAAoB,SAAW,wBAAwB,KAAO,oBAAoB,KAAO,oBAAoB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,MAAQ,qBAAqB,KAAO,oBAAoB,MAAQ,qBAAqB,OAAS,sBAAsB,aAAe,4BAA4B,aAAe,4BAA4B,WAAa,0BAA0B,iBAAmB,gCAAgC,OAAS,sBAAsB,SAAW,wBAAwB,SAAW,wBAAwB,QAAU,uBAAuB,YAAc,2BAA2B,UAAY,yBAAyB,eAAiB,+BCmMp6B,GA7LcxoK,IAcP,IAdQ,OACbxvB,EAAM,YACNk4L,EAAW,OACXC,EAAM,cACNC,EAAa,UACbC,EAAS,eACTC,EAAc,cACdC,EAAa,kBACbC,EAAiB,iBACjBC,EAAgB,eAChBC,EAAc,YACdC,EAAW,iBACXC,EAAgB,WAChBC,GACDrpK,EACC,MAAM8zC,EAAWJ,KAEjB,OACEyM,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6oI,MAAMzuM,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,SACE9gI,MAAOwzD,EACPmsB,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACL4rE,SAAU2nJ,EACV7sP,KAAK,SACLgrK,YAAY,cACZthD,UAAQ,KAEVqY,EAAAA,GAAAA,KAAA,UAAQ1xD,QAAUruE,IAAQA,EAAEurD,gBAAgB,EAAKqzB,UAAW8jC,GAAOpyF,OAAOwsB,UACxEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,SAASk/B,KAAK,aAG7BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,OAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,WACjB3zD,QAASA,IAAMy8K,EAAU,CACvB33H,MAAO,OACPrzE,MAAyB,UAAZ,OAAN8qM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,QAAsC,SAAZ,OAANy3H,QAAM,IAANA,OAAM,EAANA,EAAQ9qM,OAAkB,OAAS,QACrEhD,SAAA,CACJ,QACyB,UAAZ,OAAN8tM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,OAAqC,QAAjBy3H,EAAO9qM,MAAkB,SAAM,SAAO,SAG5EigF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,WACjB3zD,QAASA,IAAMy8K,EAAU,CACvB33H,MAAO,qBACPrzE,MAAyB,wBAAZ,OAAN8qM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,QAAoD,SAAZ,OAANy3H,QAAM,IAANA,OAAM,EAANA,EAAQ9qM,OAAkB,OAAS,QACnFhD,SAAA,CACJ,SAC0B,wBAAZ,OAAN8tM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,OAAmD,QAAjBy3H,EAAO9qM,MAAkB,SAAM,SAAO,SAG3FigF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,WACjB3zD,QAASA,IAAMy8K,EAAU,CACvB33H,MAAO,YACPrzE,MAAyB,eAAZ,OAAN8qM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,QAA2C,SAAZ,OAANy3H,QAAM,IAANA,OAAM,EAANA,EAAQ9qM,OAAkB,OAAS,QAC1EhD,SAAA,CACJ,SAC0B,eAAZ,OAAN8tM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,OAA0C,QAAjBy3H,EAAO9qM,MAAkB,SAAM,SAAO,SAGlFigF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,WACjB3zD,QAASA,IAAMy8K,EAAU,CACvB33H,MAAO,aACPrzE,MAAyB,gBAAZ,OAAN8qM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,QAA4C,SAAZ,OAANy3H,QAAM,IAANA,OAAM,EAANA,EAAQ9qM,OAAkB,OAAS,QAC3EhD,SAAA,CACJ,QACyB,gBAAZ,OAAN8tM,QAAM,IAANA,OAAM,EAANA,EAAQz3H,OAA2C,QAAjBy3H,EAAO9qM,MAAkB,SAAM,SAAO,SAGlFsiF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,CAAC,aAE1BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,WAEzBklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,CAAC,iBACbijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,WAEvC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,cAGb,OAAhBouM,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB/4O,KAAI,CAAC3O,EAAGgoP,KAAS,IAADC,EACjC,OACErpH,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAO93E,IAAK9qB,MAAOtc,EAAasgF,GAAE,UAAAp4E,OAAa,OAADlI,QAAC,IAADA,GAAO,QAANioP,EAADjoP,EAAGxF,YAAI,IAAAytP,OAAN,EAADA,EAASvzM,eAAgB4E,SAAA,EACtFijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO/xE,KAAKmM,UAAG6tM,EAAc,GAAKQ,EAAiBK,EAAM,OAE3EzrH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKxzB,EAAEg/H,KAAMn/E,QAASuiH,GAAkBz2H,IAAI,YAEnDizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEt5C,EAAExF,QACrC+hI,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEt5C,EAAEomB,kBAI3Cw4G,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,UAC7BwoH,GAAsB9hK,EAAEykK,mBAAoBzkK,EAAE0kK,2BAEjDnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBuoH,GAAsB7hK,EAAEwkK,YACvB5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOynD,SAASrtH,SAAA,CAAEwoH,GAAsB9hK,EAAEwkK,UAAW,GAAG,QAExE5lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0nD,SAASttH,SAAA,CAAEwoH,GAAsB9hK,EAAEwkK,UAAW,GAAG,UAG5EjoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBuoH,GAAsB7hK,EAAE6mK,aACvBjoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOynD,SAASrtH,SAAA,CAAEwoH,GAAsB9hK,EAAE6mK,WAAY,GAAG,QAEzEjoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0nD,SAASttH,SAAA,CAAEwoH,GAAsB9hK,EAAE6mK,WAAY,GAAG,UAG7EjoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,cAEhB,QAAV,OAADt5C,QAAC,IAADA,OAAC,EAADA,EAAGkoP,WAA2BjsP,KAAV,OAAD+D,QAAC,IAADA,OAAC,EAADA,EAAGkoP,MAAgC,MAAV,OAADloP,QAAC,IAADA,OAAC,EAADA,EAAGkoP,MAAyB,KAAV,OAADloP,QAAC,IAADA,OAAC,EAADA,EAAGkoP,MAAwB,OAAV,OAADloP,QAAC,IAADA,OAAC,EAADA,EAAGkoP,KAC9E7lF,GAAkB,OAADriK,QAAC,IAADA,OAAC,EAADA,EAAGkoP,KAEa,QAA/B,OAADloP,QAAC,IAADA,OAAC,EAADA,EAAGmoP,gCAAqElsP,KAA/B,OAAD+D,QAAC,IAADA,OAAC,EAADA,EAAGmoP,2BAA0E,MAA/B,OAADnoP,QAAC,IAADA,OAAC,EAADA,EAAGmoP,2BAAmE,KAA/B,OAADnoP,QAAC,IAADA,OAAC,EAADA,EAAGmoP,2BAAkE,OAA/B,OAADnoP,QAAC,IAADA,OAAC,EAADA,EAAGmoP,2BAClK5rH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOkpI,SAAS9uM,UAC9BslF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAO0zH,QAAQt5L,SAAA,CAC7B+oH,GAAkB,OAADriK,QAAC,IAADA,OAAC,EAADA,EAAGmoP,2BACrB5rH,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOmpI,YAAY/uM,SAAC,2HAC9B,KAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOopI,UAAUhvM,SAAC,sBAI/C,UAGRslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,iBACf,OAAbt5C,EAAE0iF,aAAgCzmF,IAAb+D,EAAE0iF,QAAqC,KAAb1iF,EAAE0iF,OAAiB1iF,EAAE0iF,OAAS,UAEjF65C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,eAAgBtf,GAAOp1D,QAAS+gB,QAAUruE,IAC3DA,EAAEurD,iBACFvrD,EAAEqqD,kBACF0rE,EAAS,WAAW,EACpBj5E,SAAC,cA5DqC0uM,EAgErC,QAIbppH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOqpI,WAAWjvM,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAOspI,iBAAkB,CAAE,CAACtpI,GAAO9lE,UAA2B,IAAhB+tM,IAC5Dt8K,QAASA,IAAM08K,EAAeJ,EAAc,GAC5C/tM,SAA0B,IAAhB+tM,EAAkB7tM,SAC7B,SAIAsuM,EAAYj5O,KAAK4iB,IAChBgrG,EAAAA,GAAAA,KAAA,UAEEnhD,UAAWojD,KAAGtf,GAAOspI,iBAAkB,CACrC,CAACtpI,GAAOsgB,QAAS2nH,IAAgB51N,IAEnCs5C,QAASA,IAAMg9K,EAAiBt2N,GAAQ+nB,SAEvC/nB,GANIA,MAUTgrG,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAOspI,iBAAkB,CAAE,CAACtpI,GAAO9lE,UAAW+tM,IAAgBW,IAC5Ej9K,QAASA,IAAM08K,EAAeJ,EAAc,GAC5C/tM,SAAU+tM,IAAgBW,EAAWxuM,SACtC,cAIC,ECzGV,GA/EgBmlC,IA8BT,IA9BU,OACfxvB,EAAM,iBACNizH,EAAgB,iBAChBumE,EAAgB,WAChBC,EAAU,YACVvB,EAAW,OACXC,EAAM,cACNN,EAAa,WACbtkE,EAAU,UACVC,EAAS,UACTskE,EAAS,QACTtlE,EAAO,SACPD,EAAQ,oBACRW,EAAmB,eACnBT,EAAc,QACdU,EAAO,WACPC,EAAU,sBACVC,EAAqB,sBACrBqmE,EAAqB,cACrBtB,EAAa,UACbC,EAAS,eACTC,EAAc,cACdC,EAAa,kBACbC,EAAiB,iBACjBC,EAAgB,eAChBC,EAAc,YACdX,EAAW,YACXY,EAAW,iBACXC,EAAgB,WAChBC,GACDrpK,EAEC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,IAAgB5lE,UAC5CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAiB5lE,SAAA,EAC/BijF,EAAAA,GAAAA,KAACwpC,GAAK,CACJ+gF,cAAeA,EACftkE,WAAYA,EACZC,UAAWA,EACXskE,UAAWA,EACXtlE,QAASA,EACTS,iBAAkBA,EAClBV,SAAUA,EACVwlE,YAAaA,EACbtlE,eAAgBA,KAElBnlD,EAAAA,GAAAA,KAACqsH,GAAK,CACJ1mE,iBAAkBA,EAClBC,oBAAqBA,EACrBT,eAAgBA,EAChBU,QAASA,EACTC,WAAYA,EACZC,sBAAuBA,KAOzB/lD,EAAAA,GAAAA,KAACsE,GAAK,CACJ5xE,OAAQA,EACRk4L,YAAaA,EACbC,OAAQA,EACRC,cAAeA,EACfC,UAAWA,EACXC,eAAgBA,EAChBC,cAAeA,EACfC,kBAAmBA,EACnBC,iBAAkBA,EAClBC,eAAgBA,EAChBC,YAAaA,EACbC,iBAAkBA,EAClBC,WAAYA,QAGZ,EClFV,GAAkU,gCAAlU,GAA4W,wBAA5W,GAA2a,qBCc3a,GAVqBe,KAEbtsH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAuB5lE,UACnCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgBuf,QAAQ,YAAWnlF,UAC/CijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAa4pI,GAAI,GAAIC,GAAI,GAAIlhN,EAAG,GAAI+pD,KAAM,OAAQz0C,YAAa,QCT5F6rM,GAAmB,mBACnBC,GAAmB,mBACnBC,GAAkB,kBCyBlBC,GAAiBA,IACZn1N,UACHktC,EArBG,CACHptC,KAAMk1N,KAqBN,IAEI9nL,EAnBYhD,KACb,CACHpqC,KAAMm1N,GACN/qL,QAASA,IAgBIkrL,OADa5nF,GAAe,mBAAoB,SAE7D,CACA,MAAOvxI,GACHixC,EAfWjxC,KACZ,CACH6D,KAAMo1N,GACNj5N,MAAOA,IAYMo5N,CAAcp5N,GAC3B,CAAC,ECkMT,GA7Neq5N,KAAO,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACnB,MAAM,iBAAE1lF,GAAqBoa,IAAajiK,GAAmBA,EAAM+nJ,WAC7D,QAAEod,GAAYlD,IAAajiK,GAAmBA,EAAMmlK,UACpDvgH,EAAWg/G,KACX4pE,GAAgB9lL,EAAAA,EAAAA,SAAO,IACtBw9G,EAAUuoE,IAAe9lL,EAAAA,EAAAA,aACzBy9G,EAAgBsoE,IAAqB/lL,EAAAA,EAAAA,UAAS,KAC9Ci+G,EAAkB+nE,IAAuBhmL,EAAAA,EAAAA,UAAS,KAClDwkL,EAAkByB,IAAuBjmL,EAAAA,EAAAA,UAAS,QAClDhV,EAAQk7L,IAAalmL,EAAAA,EAAAA,UAAS,KAC9BmjL,EAAQE,IAAarjL,EAAAA,EAAAA,UAAS,CAAE0rD,MAAO,KAAMrzE,MAAO,SACpD6qM,EAAaI,IAAkBtjL,EAAAA,EAAAA,UAAS,GACzC0jL,EAAiBj7O,SAAS7G,MAE1Bu8K,EAAU,IAAI,IAAIxyJ,IAAoB,OAAhBu0I,QAAgB,IAAhBA,GAAwB,QAARolF,EAAhBplF,EAAkBimF,cAAM,IAAAb,OAAR,EAAhBA,EAA0B56O,KAAKi7E,GAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMygK,gBAEpEhoE,EAA6B,OAAhBle,QAAgB,IAAhBA,GAAwB,QAARqlF,EAAhBrlF,EAAkBimF,cAAM,IAAAZ,OAAR,EAAhBA,EAA0BrjO,QAAQyjE,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMygK,eAAgB3oE,IAE9E4oE,EAAiC,OAAVjoE,QAAU,IAAVA,OAAU,EAAVA,EAAY7qG,MAAMoS,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAM08B,YAAa47D,IAErEwmE,EAAiC,OAApB4B,QAAoB,IAApBA,GAA8B,QAAVb,EAApBa,EAAsBC,gBAAQ,IAAAd,GAA9BA,EAAgCluP,OAC/C,CAAC,SAA8B,OAApB+uP,QAAoB,IAApBA,GAA8B,QAAVZ,EAApBY,EAAsBC,gBAAQ,IAAAb,OAAV,EAApBA,EAAgC/6O,KAAK67O,GAAW,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKD,YAC7D,CAAC,OAECE,EACiB,QAArBhC,GAAmD,OAApB6B,QAAoB,IAApBA,GAA8B,QAAVX,EAApBW,EAAsBC,gBAAQ,IAAAZ,GAA9BA,EAAgCpuP,QAEvC,OAApB+uP,QAAoB,IAApBA,GAA8B,QAAVV,EAApBU,EAAsBC,gBAAQ,IAAAX,GAAmD,QAAnDC,EAA9BD,EAAgCpyK,MAAMgzK,IAAW,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKD,YAAa9B,WAAiB,IAAAoB,OAA7D,EAApBA,EAAmFxlF,UAAW,IAD1E,OAApBimF,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBjmF,UAAW,GAGjCqmF,EAAiC,OAAfD,QAAe,IAAfA,OAAe,EAAfA,EAAiBtkO,QAAQwkO,IAAM,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAC/C,OAANJ,QAAM,IAANA,GAAY,QAANC,EAAND,EAAQnwP,YAAI,IAAAowP,GAAe,QAAfC,EAAZD,EAAcl2M,qBAAa,IAAAm2M,OAArB,EAANA,EAA6B7zM,SAAe,OAANiY,QAAM,IAANA,OAAM,EAANA,EAAQva,kBACxC,OAANi2M,QAAM,IAANA,GAAY,QAANG,EAANH,EAAQpmF,YAAI,IAAAumF,GAAe,QAAfC,EAAZD,EAAcp2M,qBAAa,IAAAq2M,OAArB,EAANA,EAA6B/zM,SAAe,OAANiY,QAAM,IAANA,OAAM,EAANA,EAAQva,eAAc,IAGxD8yM,GAAgB1jL,EAAAA,EAAAA,UAAQ,KAAO,IAAD2a,EAClC,OAAIqrK,EAAc/oM,SAChB+oM,EAAc/oM,SAAU,EACjB2pM,GAGJtD,GAAiB,OAANA,QAAM,IAANA,GAAAA,EAAQz3H,MAEG,QAA3BlxC,EAAO,IAAIisK,UAAgB,IAAAjsK,OAAA,EAApBA,EAAsBo2B,MAAK,CAAC3xG,EAAGC,KACpC,MAAM6nP,EAAiB,OAAN5D,QAAM,IAANA,OAAM,EAANA,EAAQz3H,MAEC,IAADs7H,EAAAC,EAAzB,GAAiB,SAAbF,EACF,MAAwB,QAAjB5D,EAAO9qM,MACT,OAADp5C,QAAC,IAADA,GAAO,QAAN+nP,EAAD/nP,EAAG1I,YAAI,IAAAywP,OAAN,EAADA,EAASE,cAAe,OAADhoP,QAAC,IAADA,OAAC,EAADA,EAAG3I,MACzB,OAAD2I,QAAC,IAADA,GAAO,QAAN+nP,EAAD/nP,EAAG3I,YAAI,IAAA0wP,OAAN,EAADA,EAASC,cAAe,OAADjoP,QAAC,IAADA,OAAC,EAADA,EAAG1I,MACzB,CACL,MAAM4wP,EAAO77N,WAAWrsB,EAAE8nP,IACpBK,EAAO97N,WAAWpsB,EAAE6nP,IAE1B,MAAwB,QAAjB5D,EAAO9qM,MAAkB8uM,EAAOC,EAAOA,EAAOD,CACvD,KAdoCV,CAepC,GACD,CAACA,EAAiBtD,IAEfK,EAAoBN,EAAcQ,EAClC2D,EAAqB7D,EAAoBE,EACzCD,EAAgC,OAAbF,QAAa,IAAbA,OAAa,EAAbA,EAAe1qP,MAAMwuP,EAAoB7D,GAE5DK,EAAa19O,KAAK+B,KAAKq7O,EAAcjsP,OAASosP,GAM9CC,EAAc,GACpB,IAAK,IAAI5nP,EAAI,EAAGA,GAAK8nP,EAAY9nP,IAC/B4nP,EAAYxpP,KAAK4B,IAGnB0jE,EAAAA,EAAAA,YAAU,KAAO,IAAD6nL,EAId,IAHK7pE,GAAyB,OAAPU,QAAO,IAAPA,GAAAA,EAAS7mL,QAC9ByuP,EAAkB5nE,EAAQ,IAEV,OAAdV,QAAc,IAAdA,GAA6B,QAAf6pE,EAAd7pE,EAAgBhtI,qBAAa,IAAA62M,GAA7BA,EAA+Bv0M,SAAS,MAAO,CAAC,IAAD8sH,EAAAC,EAAAC,EAAAC,EACjD,IAAIlC,EAAwB,OAAhBoC,QAAgB,IAAhBA,GAAqB,QAALL,EAAhBK,EAAmB,UAAE,IAAAL,GAAK,QAALC,EAArBD,EAAwB,UAAE,IAAAC,GAAS,QAATC,EAA1BD,EAA4BM,eAAO,IAAAL,GAA+C,QAA/CC,EAAnCD,EAAqCxsF,MAAKv3E,IAAC,IAAAurP,EAAA,MAAgC,UAApB,QAARA,EAAAvrP,EAAEmmB,cAAM,IAAAolO,OAAA,EAARA,EAAU92M,cAAwB,WAAC,IAAAuvH,OAAlE,EAAhBA,EAAoFQ,mBAChGslF,EAAYhoF,EACd,IACC,CAACqgB,EAASV,KAEbh+G,EAAAA,EAAAA,YAAU,KACJ2+G,EAAW9mL,QACb0uP,EAAoB5nE,EAAW,GAAG/7D,UAEpCihI,EAAe,EAAE,GAChB,CAAC7lE,KAEJh+G,EAAAA,EAAAA,YAAU,KACe,IAAZ,OAAP+9G,QAAO,IAAPA,OAAO,EAAPA,EAASlmL,SACX2lE,EAASioL,KACX,GACC,CAAC1nE,KAEJ/9G,EAAAA,EAAAA,YAAU,KAER,MAAMonG,EAASoL,GAAGrwK,gCAAkC,CAClDs1K,aAAa,EACbnO,WAAY,CAAC,eAGflC,EAAOnW,UACP,MAAMosB,EAAa,cACnBjW,EAAO1gJ,GAAG,WAAW,KACnB0gJ,EAAO7vC,KAAK,UAAW8lD,EAAW,IAGpCjW,EAAO1gJ,GAPY,uBAOMi6I,IACvBnjG,EAASq/G,GAAmBlc,IAC5ByG,EAAO97D,YAAY,IAGrB,MAAMgyE,EAAW7yE,aAAY,KAC3B28D,EAAOnW,UACPmW,EAAO7vC,KAAK,UAAW8lD,EAAW,GACjCr0K,SAAS7G,UAEZ,MAAO,KACLipG,cAAckyE,GACdlW,EAAO97D,YAAY,CACpB,GACA,IAEH,MAAMy8I,GAAajoL,EAAAA,EAAAA,cAAY,KACtB+4D,EAAAA,GAAAA,KAAC0kD,GAAI,CACVQ,QAASA,EACTD,SAAUA,EACVE,eAAgBA,KAEjB,CAACD,EAASC,EAAgBF,IAsBvBgB,GAAa1+G,EAAAA,EAAAA,UAAQ,IAClB,IAAI2mL,GACRtkO,QAAQi3G,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMonC,WAAY,IACnC3vD,MAAK,CAAC3xG,EAAGC,IAAOosB,WAAY,OAADpsB,QAAC,IAADA,OAAC,EAADA,EAAGqhK,WAAej1I,WAAY,OAADrsB,QAAC,IAADA,OAAC,EAADA,EAAGshK,aAC3D1nK,MAAM,EAAG,IACX,CAAC2tP,IAEEhoE,GAAY3+G,EAAAA,EAAAA,UAAQ,IACjB,IAAI2mL,GACRtkO,QAAQi3G,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMonC,WAAY,IACnC3vD,MAAK,CAAC3xG,EAAGC,IAAOosB,WAAY,OAADrsB,QAAC,IAADA,OAAC,EAADA,EAAGshK,WAAej1I,WAAY,OAADpsB,QAAC,IAADA,OAAC,EAADA,EAAGqhK,aAC3D1nK,MAAM,EAAG,IACX,CAAC2tP,IAEE1D,GAAYjjL,EAAAA,EAAAA,UAAQ,IACjB,IAAI2mL,GACR51I,MAAK,CAAC3xG,EAAGC,KAAO,IAADuoP,EAAAC,EACd,MAAMC,EAAUr8N,WAAY,OAADrsB,QAAC,IAADA,GAAS,QAARwoP,EAADxoP,EAAGw/E,cAAM,IAAAgpK,OAAR,EAADA,EAAWh7N,QAAQ,KAAM,KAEpD,OADgBnB,WAAY,OAADpsB,QAAC,IAADA,GAAS,QAARwoP,EAADxoP,EAAGu/E,cAAM,IAAAipK,OAAR,EAADA,EAAWj7N,QAAQ,KAAM,KACnCk7N,CAAO,IAEzB9uP,MAAM,EAAG,IACX,CAAC2tP,IAEEzD,GAAcljL,EAAAA,EAAAA,UAAQ,IACnB,IAAI2mL,GACR51I,MAAK,CAAC3xG,EAAGC,IAAM,IAAI0rB,KAAM,OAAD1rB,QAAC,IAADA,OAAC,EAADA,EAAG0oP,WAAa,IAAIh9N,KAAM,OAAD3rB,QAAC,IAADA,OAAC,EAADA,EAAG2oP,aACpD/uP,MAAM,EAAG,IACX,CAAC2tP,IAEJ,OACE7rH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG6qH,GAAoB,IAAK5nC,EAAAA,GAAAA,KAACssH,GAAY,IACtC4C,KACDlvH,EAAAA,GAAAA,KAACuvH,GAAO,CACN3pE,oBAvDuB1mL,IAC3BuuP,EAAkBvuP,GAClBwuP,EAAoB,IACpBC,EAAoB,MAAM,EAqDtBxoE,eAAgBA,EAChBU,QAASA,EACTE,sBApDyB7mL,IAC7BwuP,EAAoBxuP,GACpByuP,EAAoB,OACpB3C,EAAe,EAAE,EAkDbllE,WAAYA,EACZH,iBAAkBA,EAClBwmE,WAAYA,EACZC,sBAlDyBltP,IAC7ByuP,EAAoBzuP,EAAM,EAkDtBgtP,iBAAkBA,EAClBx5L,OAAQA,EACRo4L,cAjDiBvpP,IACrBqsP,EAAUrsP,EAAMd,OAAOvB,MAAM,EAiDzBisP,iBAAkBA,EAClBN,OAAQA,EACRE,UAAWA,EACXH,YAAaA,EACbI,eAAgBA,EAChBC,cAAeA,EACfC,kBAAmBA,EACnBE,eAAgBA,EAChBnlE,WAAYA,EACZC,UAAWA,EACXskE,UAAWA,EACXC,YAAaA,EACbvlE,QAASA,EACTD,SAAUA,EACVomE,YAAaA,EACbC,iBAtJoBkE,IACxBxE,EAAewE,EAAW,EAsJtBjE,WAAYA,MAEb,ECjOP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,oBAAoB,iBAAiB,6BAA6B,eAAe,4BC2C3Q,GAvCarpK,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,oDAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+hB,KAAK3nF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAC/B+gB,QAASA,IACPq6F,EAAYnkH,QAAQ6kH,eAAe,CAAEC,SAAU,WAChDvsH,SACF,eAGDijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,gBAAiBtf,GAAOp1D,QACtC+gB,QAASA,IACPmhL,EAAmBjrM,QAAQ6kH,eAAe,CACxCC,SAAU,WAEbvsH,SACF,gCAKLijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO7uB,MAAM/2C,UAC3BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAI,+CAA+CmY,IAAI,kBAI5D,ECvCV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,wBCAjW,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAiJ,uBAAjJ,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBCyChP,GApCa8yC,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAWojD,KAAGpjD,EAAW8jC,IACzB5+B,GAAE,yBAAAp4E,OAA2B0hF,EAAK26E,MAAOjrH,SAAA,EAEzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1DizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,CAC5BswC,EAAKqiK,eACJ1vH,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,CACE,eAAkC,QAAlB50C,EAAK2gK,UAEvB,CACE,iBAAoC,UAAlB3gK,EAAK2gK,UAEzBrrI,IACA5lE,SAEDswC,EAAKqiK,gBAGV1vH,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,eAKnC,EC/BL40K,GAAiB,CAAC,UAAW,kBAE7B5sH,GAAQ,CACZ,CACEzzF,GAAI,EACJ04H,KAAM,0BACN34H,MAAO,2CACP06E,SAAU,WACVhvC,QAAQ,sJAERizK,SAAU,MACV0B,aAAc,MACdp7I,MAAO,oEACPo1D,QAAS,oEACT92G,IAAK,yBAEP,CACEtjB,GAAI,EACJ04H,KAAM,iCACN34H,MAAO,4CACP06E,SAAU,aACVhvC,QAAQ,4JAERizK,SAAU,QACV0B,aAAc,WACdp7I,MAAO,qEACPo1D,QAAS,qEACT92G,IAAK,yBAEP,CACEtjB,GAAI,EACJ04H,KAAM,uBACN34H,MAAO,kCACP06E,SAAU,UACVhvC,QAAQ,gJAERizK,SAAU,MACV0B,aAAc,MACdp7I,MAAO,qDACPo1D,QAAS,qDACT92G,IAAK,0BA2DT,GAvDiBsvB,IAAmD,IAAlD,YAAEymF,EAAW,YAAEinF,EAAW,eAAEC,GAAgB3tK,EAC5D,MAAO+5C,EAAY6zH,IAAiBpoL,EAAAA,EAAAA,UAASioL,GAAe,IAE5D,OACE3vH,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,UAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOgoD,UACzCtoC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,qBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,OAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyhB,IAAIrnF,SACxB4yM,GAAev9O,KAAI,CAAC1O,EAAG3B,KACtBi+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAOnhE,KAAM,CACzB,CAACmhE,GAAOsgB,QAASlhI,IAAU6tP,IAE7BthL,QAASA,IAAMuhL,EAAe9tP,GAAOg7C,SAGpCr5C,GAFI3B,QAMXi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyQ,MAAMr2E,UAC3BijF,EAAAA,GAAAA,KAACuE,GAAQ,CACP1lD,UAAW8jC,GAAO4f,SAClBimC,kBAAmB7lD,GAAOqtI,aAC1B9wP,MAAO+8H,EACP3gF,SAAUw0M,EACV/uP,QAAS4uP,aAUA,IAAhBC,IACC5vH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAKhD,ECrGV,IAAgB,KAAO,sBAAsB,MAAQ,uBAAuB,OAAS,wBAAwB,QAAU,yBAAyB,SAAW,0BAA0B,IAAM,qBAAqB,KAAO,sBAAsB,OAAS,wBAAwB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,uBCA/U,GAAuB,mBAAvB,GAAoD,sBAApD,GAAqF,uBAArF,GAAmH,mBAAnH,GAA+I,qBAA/I,GAA8K,sBAA9K,GAA4M,oBAA5M,GAAyO,qBAAzO,GAAuQ,qBCsDvQ,GAjDamgF,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAE,yBAAAp4E,OAA2B0hF,EAAK26E,MAAOjrH,SAAA,EACpFslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,CAC5BswC,EAAKqiK,eACJ1vH,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,WACA,CACE,kBAAqC,WAAlB50C,EAAK2gK,UAE1B,CACE,iBAAoC,UAAlB3gK,EAAK2gK,UAEzB,CACE,gBAAmC,SAAlB3gK,EAAK2gK,UAExBrrI,IACA5lE,SAEDswC,EAAKqiK,gBAGV1vH,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,SACvDi+C,EAAK9G,OAAQy5C,EAAAA,GAAAA,KAAC8pC,GAAI,CAACjrF,UAAU,OAAOikD,OAAK,QAE5CT,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,MAChB0f,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAc5lE,SAAEswC,EAAK6iK,YAEtC7iK,EAAKonC,aACJuL,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,CACE,wBAAyC,UAAhB50C,EAAKmnC,QAEhC7R,IACA5lE,SAEDswC,EAAKonC,kBAIP,ECnDE07H,GAAW,CACtB,CACE7gN,GAAI,EACJD,MAAM,qDAEN24H,KAAM,0BACNj+C,SAAU,WACVhvC,QAAQ,4JAERizK,SAAU,QACV0B,aAAc,WACdp7I,MAAO,qCACPo1D,QAAS,wCACT0mF,UAAY,6CACZC,WAAY,6CACZC,cAAgB,6CAChBC,eAAiB,6CACjB7nG,GAAG,gCAEH8nG,GAAG,qQAGH7nG,GAAG,0BAEH8nG,GAAG,+kBAUHC,GAAG,sCAGHC,GAAG,0wBAUL,CACErhN,GAAI,EACJD,MAAO,4CACP24H,KAAM,iCACNj+C,SAAU,aACVhvC,QAAQ,4JAERizK,SAAU,QACV0B,aAAc,WACdp7I,MAAO,qCACPo1D,QAAS,wCACT0mF,UAAY,+CACZC,WAAY,+CACZC,cAAgB,+CAChBC,eAAiB,+CACjB7nG,GAAG,GACH8nG,GAAG,w1BAKH7nG,GAAG,0CAEH8nG,GAAG,irBAIHC,GAAG,mCAEHC,GAAG,maAEHC,GAAG,2CAEHC,GAAG,ymBAGHC,GAAG,8CAEHC,GAAG,wqBAIHC,GAAG,GACHC,GAAG,IAEL,CACE3hN,GAAI,EACJD,MAAO,4BACP06E,SAAU,UACVi+C,KAAM,uBACNjtF,QAAQ,gJAERizK,SAAU,MACV0B,aAAc,MACdp7I,MAAO,qCACPo1D,QAAS,wCACT0mF,UAAY,iDACZC,WAAY,iDACZC,cAAgB,iDAChBC,eAAiB,iDACjB7nG,GAAG,GACH8nG,GAAG,yYAIH7nG,GAAG,kCAEH8nG,GAAG,kNAEHC,GAAG,GACHC,GAAG,2IAEHC,GAAG,SAEHC,GAAG,qNACHC,GAAG,0BAGHC,GAAG,2gCAIHC,GAAG,qBAEHC,GAAG,mlBAIL,CACE3hN,GAAI,EACJ04H,KAAM,kCACN34H,MAAM,mDAGN6gN,OAAQ,GACRlC,SAAU,SAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,iDACPo1D,QAAS,iDACT0mF,UAAW,oEACXC,WAAY,kEACZC,cAAe,oEACfC,eAAgB,kEAChBhqK,MAAM,EACNmiE,GAAG,iDAEH8nG,GAAG,ssBAIH7nG,GAAG,yCAEH8nG,GAAG,k/BAKHC,GAAG,8CAEHC,GAAG,u0BAMHC,GAAG,uCAEHC,GAAG,qZAIHC,GAAG,yDAGHC,GAAG,udAIHC,GAAG,GACHC,GAAG,IAEL,CACE3hN,GAAI,EACJ04H,KAAM,4BACN34H,MAAM,yCAEN6gN,OAAQ,GAER17H,OAAQ,QACRC,WAAY,UACZngB,MAAO,4DACPo1D,QAAS,4DACT0mF,UAAU,qDACVC,WAAY,qDACZC,cAAc,qDACdC,eAAe,qDACf7nG,GAAG,qNAGH8nG,GAAG,k8BAKH7nG,GAAG,gDAEH8nG,GAAG,4/BAMHC,GAAG,iEAEHC,GAAG,+hBAGHC,GAAG,GACHC,GAAG,GACHC,GAAG,GACHC,GAAG,GACHC,GAAG,GACHC,GAAG,IAEL,CACE3hN,GAAI,EACJ04H,KAAM,qBACN34H,MAAM,iCAEN6gN,OAAQ,GACRlC,SAAU,QAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,8CACPo1D,QAAS,8CACT0mF,UAAW,wDACXC,WAAY,wDACZC,cAAe,GACfC,eAAgB,GAChB7nG,GAAG,iCAEH8nG,GAAG,kkBAGH7nG,GAAG,oBAEH8nG,GAAG,qoBAGHC,GAAG,iBAEHC,GAAG,ikBAEHC,GAAG,2BAGHC,GAAG,w4CAIHC,GAAG,GACHC,GAAG,irDAMHC,GAAG,GACHC,GAAG,0+FAKL,CACE3hN,GAAI,EACJ04H,KAAM,wCACN34H,MAAM,uDAEN6gN,OAAQ,IACRlC,SAAU,SAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,+CACPo1D,QAAS,+CACT0mF,UAAW,oDACXC,WAAY,oDACZC,cAAe,GACfC,eAAgB,GAChBhqK,MAAM,EACNmiE,GAAG,+GAEH8nG,GAAG,ktBAEH7nG,GAAG,qCAEH8nG,GAAG,y4BAYHC,GAAG,4BAEHC,GAAG,ydAGHC,GAAG,sDAEHC,GAAG,0XAEHC,GAAG,uBAEHC,GAAG,yoBAKHC,GAAG,GACHC,GAAG,IAEL,CACE3hN,GAAI,EACJ04H,KAAM,qCACN34H,MAAM,0CACN6gN,OAAQ,GACRlC,SAAU,SAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,qDACPo1D,QAAS,qDACT0mF,UAAW,6CACXC,WAAY,6CACZC,cAAe,6CACfC,eAAgB,6CAChBhqK,MAAM,EACNmiE,GAAG,wFAEH8nG,GAAG,s8BAMH7nG,GAAG,qCAEH8nG,GAAG,8tDAWHC,GAAG,0CAGHC,GAAG,y4BAMHC,GAAG,wCAEHC,GAAG,4eAGHC,GAAG,GACHC,GAAG,GACHC,GAAG,GACHC,GAAG,IAGL,CACE3hN,GAAI,GACJ04H,KAAM,qCACN34H,MAAM,0CACN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,4CACPo1D,QAAS,4CACT0mF,UAAW,sDACXC,WAAY,qDACZC,cAAe,GACfC,eAAgB,GAChB7nG,GAAG,qEAEH8nG,GAAG,0bAEH7nG,GAAG,mEAEH8nG,GAAG,4lDAcHC,GAAG,2CAEHC,GAAG,4eAUHC,GAAG,wDAEHC,GAAG,0sBAIHC,GAAG,4EAEHC,GAAG,kaAEHC,GAAG,GACHC,GAAG,IAGL,CACE3hN,GAAI,GACJ04H,KAAM,0BACN34H,MAAM,oDACN+gN,UAAW,sDACXC,WAAY,sDACZC,cAAe,GACfC,eAAgB,GAChBL,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,iEACPo1D,QAAS,iEACThhB,GAAG,yEAGH8nG,GAAG,sZAGH7nG,GAAG,6DAGH8nG,GAAG,22BAIHC,GAAG,8CAEHC,GAAG,gZAEHC,GAAG,gDAEHC,GAAG,mYACHC,GAAG,eACHC,GAAG,yRAGHC,GAAG,eACHC,GAAG,4XAIL,CACE3hN,GAAI,GACJ04H,KAAM,yBACN34H,MAAO,0BACP6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,kDACPo1D,QAAS,kDACT0mF,UAAW,GACXE,cAAe,GACfC,eAAgB,GAChBF,WAAY,GACZ3nG,GAAG,6DAEH8nG,GAAG,ueAGH7nG,GAAG,qCAEH8nG,GAAG,unBAEHC,GAAG,oCAEHC,GAAG,22CAMHC,GAAG,uCAEHC,GAAG,sfAGHC,GAAG,GACHC,GAAG,GACHC,GAAG,GACHC,GAAG,IAGL,CACE3hN,GAAI,GACJ04H,KAAM,sCACN34H,MAAM,iDAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,2CACPo1D,QAAS,8CACT0mF,UAAW,oDACXC,WAAY,oDACZC,cAAe,oDACfC,eAAgB,oDAChB7nG,GAAG,yBACH8nG,GAAG,kyBASH7nG,GAAG,uCAEH8nG,GAAG,yOAGHC,GAAG,mDAEHC,GAAG,+eAGHC,GAAG,6CACHC,GAAG,wXAGHC,GAAG,sCAEHC,GAAG,oTAGHC,GAAG,sDAEHC,GAAG,6oBAKL,CACE3hN,GAAI,GACJ04H,KAAM,gBACN34H,MAAM,6CAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,uDACPo1D,QAAS,uDACT0mF,UAAW,+CACXC,WAAY,+CACZC,cAAe,+CACfC,eAAgB,+CAChB7nG,GAAG,4KAEH8nG,GAAG,opBAKH7nG,GAAG,uBAEH8nG,GAAG,ikBAMHC,GAAG,8BAEHC,GAAG,oUAIHC,GAAG,gCAEHC,GAAG,s3BAMHC,GAAG,GACHC,GAAG,0RAKHC,GAAG,GACHC,GAAG,IAGL,CACE3hN,GAAI,GACJ04H,KAAM,wBACN34H,MAAM,kDAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,2DACPo1D,QAAS,uDACT0mF,UAAW,iDACXC,WAAY,iDACZC,cAAe,iDACfC,eAAgB,iDAChB7nG,GAAG,6HAEH8nG,GAAG,48BAIH7nG,GAAG,qCAEH8nG,GAAG,0eAEHC,GAAG,sCAEHC,GAAG,6ZAEHC,GAAG,gCACHC,GAAG,ieAGHC,GAAG,qCAEHC,GAAG,qoBAEHC,GAAG,GACHC,GAAG,IAGL,CACE3hN,GAAI,GACJ04H,KAAM,6BACN34H,MAAM,0CAEN6gN,OAAQ,uBACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,wCACPo1D,QAAS,wCACT0mF,UAAW,oDACXC,WAAY,oDACZC,cAAe,oDACfC,eAAgB,oDAChB7nG,GAAG,+GACH8nG,GAAG,WAGH7nG,GAAG,qBAEH8nG,GAAG,gsBAGHC,GAAG,qCAEHC,GAAG,opBAMHC,GAAG,qBACHC,GAAG,iTAEHC,GAAG,WACHC,GAAG,2YAGHC,GAAG,OACHC,GAAG,iiBAEHC,GAAG,0CAGHC,GAAG,2sBAWL,CACE7hN,GAAI,GACJ04H,KAAM,yBACN34H,MAAM,gCAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,0CACPo1D,QAAS,0CACT0mF,UAAW,kDACXC,WAAY,kDACZC,cAAe,kDACfC,eAAgB,kDAChB7nG,GAAG,iIAEH8nG,GAAG,kkBAIH7nG,GAAG,sCAEH8nG,GAAG,yfAEHC,GAAG,oEAEHC,GAAG,wfAGHC,GAAG,GACHC,GAAG,+zBAKHC,GAAG,uDAEHC,GAAG,udAGHC,GAAG,GACHC,GAAG,qKACHC,GAAG,GACHC,GAAG,kGAEL,CACE7hN,GAAI,GACJ04H,KAAM,wCACN34H,MAAM,+CAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,yDACPo1D,QAAS,yDACT0mF,UAAW,iDACXC,WAAY,iDACZC,cAAe,iDACfC,eAAgB,iDAChB7nG,GAAG,yKAEH8nG,GAAG,yiDAIH7nG,GAAG,8CAEH8nG,GAAG,6gBAGHC,GAAG,gDAEHC,GAAG,sgBAGHC,GAAG,uCAEHC,GAAG,8fAIHC,GAAG,8CAEHC,GAAG,mTAEHC,GAAG,GACHC,GAAG,IAQL,CACE3hN,GAAI,GACJ04H,KAAM,qBACN34H,MAAM,2BAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,6CACPo1D,QAAS,6CACT0mF,UAAW,8CACXC,WAAY,8CACZC,cAAe,8CACfC,eAAgB,8CAEhB7nG,GAAG,4GACH8nG,GAAG,mXAQH7nG,GAAG,8BACH8nG,GAAG,8SAKHC,GAAG,4CACHC,GAAG,8dAEHC,GAAG,2BACHC,GAAG,0uBAGHC,GAAG,gCACHC,GAAG,4fAGHC,GAAG,uBACHC,GAAG,gqBAKHC,GAAG,uBACHC,GAAG,mHAIL,CACE7hN,GAAI,GACJ04H,KAAM,yBACN34H,MAAM,6DAEN6gN,OAAQ,GACRlC,SAAU,OAEVx5H,OAAQ,QACRC,WAAY,UACZngB,MAAO,+CACPo1D,QAAS,+CACT0mF,UAAW,kDACXC,WAAY,kDACZC,cAAe,kDACfC,eAAe,kDACf7nG,GAAG,SAEH8nG,GAAG,4kBAIH7nG,GAAG,qBACH8nG,GAAG,ubAEHC,GAAG,yBACHC,GAAG,0eAGHC,GAAG,sCACHC,GAAG,yKAKHC,GAAG,GACHC,GAAG,qKAIHG,GAAG,GACHC,GAAG,yKAIHC,GAAG,GACHC,GAAG,8PAKHC,GAAG,iCACHC,GAAG,sfAIHC,IAAI,4EACJC,IAAI,8WAGJC,IAAI,sDACJC,IAAI,2VAKJC,IAAI,sCACJC,IAAI,sMAGJC,IAAI,4BACJC,IAAI,qGCh7BR,GArBgB7vK,IAA6B,IAA5B,mBAAEutK,GAAoBvtK,EAErC,MAAM8vK,EAAQ7B,GAAS5vP,MAAM,GAE7B,OACEy/H,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,8BAA+Btf,GAAOinD,SACpD1sK,IAAKuyP,EAAmB1yM,UAExBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOxsC,KAAKp5B,SAAE,OAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBi1M,EAAM5/O,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,WAI9C,ECtBV,IAAgB,KAAO,sBAAsB,MAAQ,uBAAuB,OAAS,wBAAwB,QAAU,yBAAyB,SAAW,0BAA0B,IAAM,qBAAqB,KAAO,sBAAsB,OAAS,wBAAwB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,uBCA/U,IAAgB,KAAO,mBAAmB,QAAU,sBAAsB,KAAO,mBAAmB,OAAS,qBAAqB,QAAU,sBAAsB,MAAQ,oBAAoB,OAAS,qBAAqB,OAAS,qBAAqB,eAAiB,6BAA6B,cAAgB,4BAA4B,MAAQ,oBAAoB,YAAc,2BCmE9X,GA9DamgF,IAAiC,IAAD+vK,EAAA,IAA/B,UAAEpzK,EAAS,KAAEwO,EAAI,MAAEtrF,GAAOmgF,EAEtC,OACEmgD,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,GAAO4nD,MAAOxmF,GAAE,UAAAp4E,OAAY0hF,EAAKxjE,QAASkzB,SAAA,EACvEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+lD,QAAQ3rH,SAAA,CAC5BswC,EAAKqiK,eACJ1vH,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,WACA,CACE,kBAAqC,WAAlB50C,EAAK2gK,UAE1B,CACE,iBAAoC,UAAlB3gK,EAAK2gK,UAEzB,CACE,gBAAmC,SAAlB3gK,EAAK2gK,UAExBrrI,GAAOqrI,UACPjxM,SAEDswC,EAAKqiK,gBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOuvI,eAAen1M,SAAA,EACpCijF,EAAAA,GAAAA,KAAA,OACE/oG,IAAI,sCACJmY,IAAI,SACJyvC,UAAW8jC,GAAOrO,SAEpB0rB,EAAAA,GAAAA,KAAA,OACE/oG,IAAK3tB,2DAA4C,OAAJ+jF,QAAI,IAAJA,OAAI,EAAJA,EAAMo1C,MACnDrzF,IAAI,OACJyvC,UAAW8jC,GAAOwvI,qBAIxB9vH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO91F,KAAKkwB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyvI,OAAOr1M,UAC5BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAK3tB,2DAA4C,OAAJ+jF,QAAI,IAAJA,OAAI,EAAJA,EAAMo1C,MAAMrzF,IAAI,YAEpEizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtzE,MAAM0N,SAAA,CAAC,oBAAsB,OAAJswC,QAAI,IAAJA,GAAU,QAAN4kK,EAAJ5kK,EAAMpvF,YAAI,IAAAg0P,OAAN,EAAJA,EAAY35M,kBAC5D0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOutI,OAAOnzM,SAAM,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAM6iK,YAEvC7iK,EAAKonC,aACJuL,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,CACE,wBAAyC,UAAhB50C,EAAKmnC,QAEhC7R,GAAO6R,QACPz3E,SAEDswC,EAAKonC,kBAIP,ECrCX,GArBgBvyC,IAAuC,IAAtC,mBAAEutK,EAAkB,SAAE4C,GAAUnwK,EAI/C,OACE89C,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,8BAA+Btf,GAAOinD,SACpD1sK,IAAKuyP,EAAmB1yM,UAExBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOxsC,KAAKp5B,SAAE,OAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACjB,OAARs1M,QAAQ,IAARA,OAAQ,EAARA,EAAUjgP,KAAI,CAAC1O,EAAG3B,KACjBi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,EAAe3B,MAAOA,GAAdA,WAI9C,ECmDV,GAjEoBuwP,KAClB,MAAM3pF,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,OAC3BmoL,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,IACxCigG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChC2qL,EAAUE,IAAe7qL,EAAAA,EAAAA,UAAS,IAEnC8qL,EAAwB/6N,UAC5B8sJ,GAAW,GACX,IAAK,IAADkuE,EAAAC,EACF,MAAMC,QAA8B1tF,GAAe,qBAAsB,QACzEsf,GAAW,GACX,IAAIquE,EAAoC,OAArBD,QAAqB,IAArBA,GAA2B,QAANF,EAArBE,EAAuBtnP,YAAI,IAAAonP,GAAM,QAANC,EAA3BD,EAA6BpnP,YAAI,IAAAqnP,OAAZ,EAArBA,EAAmC9oO,QAAQlmB,IAC5D,GAAkB,KAAb,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG8wH,QACL,OAAO9wH,CACT,IAGF6uP,EAAYK,EACd,CACA,MAAO3yP,IACLskL,GAAW,EACb,CAAC,EASH,OANAp9G,EAAAA,EAAAA,YAAU,KACY,IAAhByoL,GACF4C,GACF,GACC,CAAC5C,KAGFvtH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBtsH,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CACPjD,YAAaA,EACbC,eAAgBA,EAChBlnF,YAAaA,EACb6pF,sBAAuBA,IAOR,IAAhB5C,GACC5vH,EAAAA,GAAAA,KAAC8yH,GAAO,CACNlD,YAAaA,EACbC,eAAgBA,EAChBJ,mBAAoBA,KAGtBzvH,EAAAA,GAAAA,KAAC+yH,GAAc,CACbnD,YAAaA,EACbC,eAAgBA,EAChBJ,mBAAoBA,EACpB4C,SAAUA,KAGdryH,EAAAA,GAAAA,KAAC8kD,GAAI,CAACta,aAAa,6BAClB,ECrEP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCA9G,GAA8B,iCAA9B,GAAsE,0BAAtE,GAAuG,0BCsBvG,GAlBoBtoF,IAA2B,IAA1B,UAAErD,EAAS,MAAEkkD,GAAO7gD,EACvC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGpjD,EAAW8jC,IAAoB5lE,SAC/CgmF,EAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACzBr5C,EAAEkvD,KACDotE,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAW8jC,GAAa5+B,GAAIrgF,EAAEkvD,IAAI7V,SACrCr5C,EAAE2rC,QAGL3rC,EAAE2rC,OAN4BttC,MAUhC,EClBV,IAAgB,OAAS,uBAAuB,QAAU,wBAAwB,OAAS,uBAAuB,KAAO,qBAAqB,SAAW,yBAAyB,KAAO,sBCazL,GAXemgF,IAAoC,IAAnC,UAAErD,EAAS,MAAEy1B,EAAK,QAAEo1D,GAASxnF,EAC3C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAO79B,OAAQjG,GAAW9hC,UAC3CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+lD,QAAQ3rH,UAE7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK+9J,EAAO,OAAOzyI,IAAKq9E,EAAOllE,IAAI,YAE5C,ECJJ4jN,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,UACPujB,IAAK,kBAsBT,GAlBasvB,IAAe,IAAd,KAAE+wK,GAAM/wK,EACpB,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAEk2M,EAAOA,EAAK5jN,MAAQ,QAC5D2wF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAW,OAAJ2+I,QAAI,IAAJA,OAAI,EAAJA,EAAM7C,UACb1mF,QAAa,OAAJupF,QAAI,IAAJA,OAAI,EAAJA,EAAM3C,oBAGf,EC9BV,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,2BCAxI,GAAwB,qBAAxB,GAAsD,sBAAtD,GAAqF,sBAArF,GAAkH,oBAAlH,GAA6I,oBAA7I,GAA0K,sBAA1K,GAAwM,qBAAxM,GAAoO,oBAApO,GAA+P,oBAA/P,GAAgS,0BCDhS,IAAIl8J,GAAyC,WACzC,IAAIC,EAAgB,SAAU7wF,EAAGoD,GAI7B,OAHAytF,EAAgBh4F,OAAOsmF,gBAClB,CAAEjxD,UAAW,cAAgBtI,OAAS,SAAU5lB,EAAGoD,GAAKpD,EAAEkuB,UAAY9qB,CAAG,GAC1E,SAAUpD,EAAGoD,GAAK,IAAK,IAAIwpC,KAAKxpC,EAAOvK,OAAOuE,UAAUiO,eAAenQ,KAAKkI,EAAGwpC,KAAI5sC,EAAE4sC,GAAKxpC,EAAEwpC,GAAI,EAC7FikD,EAAc7wF,EAAGoD,EAC5B,EACA,OAAO,SAAUpD,EAAGoD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIulB,UAAU,uBAAyBjrB,OAAO0F,GAAK,iCAE7D,SAAS0tF,IAAO5zF,KAAK+tB,YAAcjrB,CAAG,CADtC6wF,EAAc7wF,EAAGoD,GAEjBpD,EAAE5C,UAAkB,OAANgG,EAAavK,OAAOyM,OAAOlC,IAAM0tF,EAAG1zF,UAAYgG,EAAEhG,UAAW,IAAI0zF,EACnF,CACJ,CAd6C,GAezC6+J,GAAgC,SAAUx+J,GAE1C,SAASw+J,EAAelpP,GACpB,IAAIrI,EAAQ+yF,EAAOj2F,KAAKgC,KAAMuJ,IAAYvJ,KAE1C,OADAkB,EAAM3D,KAAO,iBACN2D,CACX,CACA,OANAwyF,GAAU++J,EAAgBx+J,GAMnBw+J,CACX,CARoC,CAQlC1kP,OACa,SAAS2kP,GAAOl0P,EAAO+K,GAClC,IAAK/K,EACD,MAAM,IAAIi0P,GAAelpP,EAEjC,CC5Be,SAASopP,GAAkBv2P,GACtC,IAAIqyF,EAAS9yF,OAAO+iC,QAAQtiC,GACvB8sB,QAAO,SAAUogE,GAClB,IAAI9qF,EAAQ8qF,EAAG,GACf,YAAiBtqF,IAAVR,GAAiC,OAAVA,CAClC,IACKkT,KAAI,SAAU43E,GACf,IAAI/oF,EAAM+oF,EAAG,GAAI9qF,EAAQ8qF,EAAG,GAC5B,MAAO,GAAGr+E,OAAOoF,mBAAmB9P,GAAM,KAAK0K,OAAOoF,mBAAmB7P,OAAOhC,IACpF,IACA,OAAOiwF,EAAOnwF,OAAS,EAAI,IAAI2M,OAAOwjF,EAAOn/E,KAAK,MAAQ,EAC9D,CCXA,IAAIokF,GAAyC,WACzC,IAAIC,EAAgB,SAAU7wF,EAAGoD,GAI7B,OAHAytF,EAAgBh4F,OAAOsmF,gBAClB,CAAEjxD,UAAW,cAAgBtI,OAAS,SAAU5lB,EAAGoD,GAAKpD,EAAEkuB,UAAY9qB,CAAG,GAC1E,SAAUpD,EAAGoD,GAAK,IAAK,IAAIwpC,KAAKxpC,EAAOvK,OAAOuE,UAAUiO,eAAenQ,KAAKkI,EAAGwpC,KAAI5sC,EAAE4sC,GAAKxpC,EAAEwpC,GAAI,EAC7FikD,EAAc7wF,EAAGoD,EAC5B,EACA,OAAO,SAAUpD,EAAGoD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIulB,UAAU,uBAAyBjrB,OAAO0F,GAAK,iCAE7D,SAAS0tF,IAAO5zF,KAAK+tB,YAAcjrB,CAAG,CADtC6wF,EAAc7wF,EAAGoD,GAEjBpD,EAAE5C,UAAkB,OAANgG,EAAavK,OAAOyM,OAAOlC,IAAM0tF,EAAG1zF,UAAYgG,EAAEhG,UAAW,IAAI0zF,EACnF,CACJ,CAd6C,GAezCC,GAAsC,WAStC,OARAA,GAAWl4F,OAAO49C,QAAU,SAASj2C,GACjC,IAAK,IAAIyT,EAAGhU,EAAI,EAAGiU,EAAI3Y,UAAUC,OAAQyE,EAAIiU,EAAGjU,IAE5C,IAAK,IAAI2sC,KADT34B,EAAI1Y,UAAU0E,GACOpH,OAAOuE,UAAUiO,eAAenQ,KAAK+Y,EAAG24B,KACzDpsC,EAAEosC,GAAK34B,EAAE24B,IAEjB,OAAOpsC,CACX,EACOuwF,GAASp1F,MAAMuB,KAAM3B,UAChC,EACI6lJ,GAAwC,SAAU7qH,EAAS8qH,EAAYphF,EAAGqhF,GAE1E,OAAO,IAAKrhF,IAAMA,EAAIxwC,WAAU,SAAUwR,EAAS0uD,GAC/C,SAAS45C,EAAU7tI,GAAS,IAAMwgG,EAAKolD,EAAUh6H,KAAK5rB,GAAS,CAAE,MAAOe,IAAKkzF,EAAOlzF,GAAI,CAAE,CAC1F,SAAS+sI,EAAS9tI,GAAS,IAAMwgG,EAAKolD,EAAiB,MAAE5lJ,GAAS,CAAE,MAAOe,IAAKkzF,EAAOlzF,GAAI,CAAE,CAC7F,SAASy/F,EAAKnvE,GAAUA,EAAOwvC,KAAOt7B,EAAQlU,EAAOrxB,OAJzD,SAAeA,GAAS,OAAOA,aAAiBukE,EAAIvkE,EAAQ,IAAIukE,GAAE,SAAUh/B,GAAWA,EAAQvlC,EAAQ,GAAI,CAIzC6lJ,CAAMx0H,EAAOrxB,OAAO07D,KAAKmyE,EAAWC,EAAW,CAC7GttC,GAAMolD,EAAYA,EAAU3lJ,MAAM46B,EAAS8qH,GAAc,KAAK/5H,OAClE,GACJ,EACIk6H,GAA4C,SAAUjrH,EAASlN,GAC/D,IAAsGrO,EAAG1X,EAAG9C,EAAGya,EAA3GyL,EAAI,CAAE+6H,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlhJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmhJ,KAAM,GAAIC,IAAK,IAChG,OAAO3mI,EAAI,CAAEqM,KAAMw6H,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXv8H,SAA0BtK,EAAEsK,OAAOgJ,UAAY,WAAa,OAAOrxB,IAAM,GAAI+d,EACvJ,SAAS6mI,EAAK5tI,GAAK,OAAO,SAAUm6B,GAAK,OACzC,SAAc0zG,GACV,GAAI/mI,EAAG,MAAM,IAAI2N,UAAU,mCAC3B,KAAOjC,OACH,GAAI1L,EAAI,EAAG1X,IAAM9C,EAAY,EAARuhJ,EAAG,GAASz+I,EAAU,OAAIy+I,EAAG,GAAKz+I,EAAS,SAAO9C,EAAI8C,EAAU,SAAM9C,EAAEtF,KAAKoI,GAAI,GAAKA,EAAEgkB,SAAW9mB,EAAIA,EAAEtF,KAAKoI,EAAGy+I,EAAG,KAAKxlF,KAAM,OAAO/7D,EAE3J,OADI8C,EAAI,EAAG9C,IAAGuhJ,EAAK,CAAS,EAARA,EAAG,GAAQvhJ,EAAE9E,QACzBqmJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGvhJ,EAAIuhJ,EAAI,MACxB,KAAK,EAAc,OAAXr7H,EAAE+6H,QAAgB,CAAE/lJ,MAAOqmJ,EAAG,GAAIxlF,MAAM,GAChD,KAAK,EAAG71C,EAAE+6H,QAASn+I,EAAIy+I,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKr7H,EAAEk7H,IAAIhhH,MAAOla,EAAEi7H,KAAK/gH,MAAO,SACxC,QACI,KAAkBpgC,GAAZA,EAAIkmB,EAAEi7H,MAAYnmJ,OAAS,GAAKgF,EAAEA,EAAEhF,OAAS,MAAkB,IAAVumJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEr7H,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVq7H,EAAG,MAAcvhJ,GAAMuhJ,EAAG,GAAKvhJ,EAAE,IAAMuhJ,EAAG,GAAKvhJ,EAAE,IAAM,CAAEkmB,EAAE+6H,MAAQM,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYr7H,EAAE+6H,MAAQjhJ,EAAE,GAAI,CAAEkmB,EAAE+6H,MAAQjhJ,EAAE,GAAIA,EAAIuhJ,EAAI,KAAO,CACpE,GAAIvhJ,GAAKkmB,EAAE+6H,MAAQjhJ,EAAE,GAAI,CAAEkmB,EAAE+6H,MAAQjhJ,EAAE,GAAIkmB,EAAEk7H,IAAIvjJ,KAAK0jJ,GAAK,KAAO,CAC9DvhJ,EAAE,IAAIkmB,EAAEk7H,IAAIhhH,MAChBla,EAAEi7H,KAAK/gH,MAAO,SAEtBmhH,EAAK14H,EAAKnuB,KAAKq7B,EAAS7P,EAC5B,CAAE,MAAOjqB,IAAKslJ,EAAK,CAAC,EAAGtlJ,IAAI6G,EAAI,CAAG,CAAE,QAAU0X,EAAIxa,EAAI,CAAG,CACzD,GAAY,EAARuhJ,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAErmJ,MAAOqmJ,EAAG,GAAKA,EAAG,QAAK,EAAQxlF,MAAM,EAC9E,CAtBgD2/B,CAAK,CAAChoF,EAAGm6B,GAAK,CAAG,CAuBrE,EACIwxD,GAAkC,SAAU5rF,EAAGxX,GAC/C,IAAI+D,EAAI,CAAC,EACT,IAAK,IAAIosC,KAAK34B,EAAOpb,OAAOuE,UAAUiO,eAAenQ,KAAK+Y,EAAG24B,IAAMnwC,EAAE+B,QAAQouC,GAAK,IAC9EpsC,EAAEosC,GAAK34B,EAAE24B,IACb,GAAS,MAAL34B,GAAqD,oBAAjCpb,OAAOstB,sBACtB,KAAIlmB,EAAI,EAAb,IAAgB2sC,EAAI/zC,OAAOstB,sBAAsBlS,GAAIhU,EAAI2sC,EAAEpxC,OAAQyE,IAC3DxD,EAAE+B,QAAQouC,EAAE3sC,IAAM,GAAKpH,OAAOuE,UAAUkpB,qBAAqBprB,KAAK+Y,EAAG24B,EAAE3sC,MACvEO,EAAEosC,EAAE3sC,IAAMgU,EAAE24B,EAAE3sC,IAF4B,CAItD,OAAOO,CACX,EAqCA,IAAIsvP,GAA6B,SAAU3+J,GAEvC,SAAS2+J,IACL,IAAI1xP,EAAmB,OAAX+yF,GAAmBA,EAAOx1F,MAAMuB,KAAM3B,YAAc2B,KAqChE,OApCAkB,EAAM2xP,gBAAkB,SAAU/xM,GAC9B,IApCiC9M,EAAOC,EAoCpCq1C,EAAKpoF,EAAMqqB,MAAOunO,EAAqBxpK,EAAGwpK,mBAAoBr5O,EAAK6vE,EAAGypK,aAAcA,OAAsB,IAAPt5O,EAAgB,IAAMA,EAAI++E,EAAKlP,EAAG0pK,eAAgBA,OAAwB,IAAPx6J,EAAgB,eAAiBA,EAAIizD,EAAKniE,EAAGtK,YAAaA,OAAqB,IAAPysE,EAAgB,IAAMA,GA5BpR,SAAoBv5F,EAAKo3B,EAAI0kF,GACzB,IAAI/5H,EAASq1C,EAAGr1C,OAAQD,EAAQs1C,EAAGt1C,MAAOi/M,EAAatwJ,GAAOrZ,EAAI,CAAC,SAAU,UACzEQ,EAAS+J,GAAS,CAAE5/C,OAAQA,EAAQD,MAAOA,EAAO3L,SAAU,KAAM6qN,QAAS,KAAMp/H,OAAQ,KAAMq/H,YAAa,KAAMC,QAAS,KAAMC,WAAY,MAAOC,UAAW,KAAMC,aAAc,MAAOC,OAAQ,OAASP,GAC3MQ,EAAc90P,OAAO+4I,KAAKxlF,EAAK,GAAIv2D,OAAOqtB,KAAK8gE,GAC9Cp4E,KAAI,SAAUnR,GAAO,MAAO,GAAG0K,OAAO1K,EAAK,KAAK0K,OAAO6+E,EAAOvpF,GAAO,IACrE+O,KAAK,OACV,GAAI0+J,EACA,IAAI0lF,EAAa/0P,OAAOuyG,aAAY,WAChC,KACwB,OAAhBuiJ,GAAwBA,EAAYviF,UACpCvyK,OAAOkzG,cAAc6hJ,GACrB1lF,EAAQylF,GAEhB,CACA,MAAOl0P,IAEH6pE,QAAQp2C,MAAMzzB,GAElB,CACJ,GAAG,IAGX,CAUYo0P,CAAW7yM,EAHQ+yC,GAAS,CAAE5/C,OAAQ8+M,EAAc/+M,MAAOgrC,GAAmC,iBAAnBg0K,GArC1Ch/M,EAsCEgrC,EAtCK/qC,EAsCQ8+M,EAtCU,CAClEzsP,KAAM3H,OAAO6sN,WAAa,GAAK7sN,OAAOstD,SAAWttD,OAAOi1P,YAAc,GAAK5/M,EAAQ,EACnF8hB,IAAKn3D,OAAO+sN,YAAc,GAAK/sN,OAAOutD,SAAWvtD,OAAOk1P,WAAa,GAAK5/M,EAAS,IAEpD,SAAUD,EAAOC,GAAU,MAAQ,CAClE6hB,KAAMn3D,OAAOglG,OAAO1vD,OAASA,GAAU,EACvC3tC,MAAO3H,OAAOglG,OAAO3vD,MAAQA,GAAS,EACtC,CAgCc8/M,CAA6B90K,EAAa+zK,IACjBD,EACnC,EACA5xP,EAAM8jL,YAAc,SAAUnkL,GAAS,OAAOqjJ,GAAUhjJ,OAAO,OAAQ,GAAQ,WAC3E,IAAIooF,EAAIyqK,EAAe53M,EAAU63M,EAAapmL,EAAS1b,EAAK+hM,EAAwB50P,EAAMyhD,EAAMozM,EAChG,OAAO5vG,GAAYtkJ,MAAM,SAAUyZ,GAC/B,OAAQA,EAAG8qI,OACP,KAAK,EAGD,OAFAj7D,EAAKtpF,KAAKurB,MAAOwoO,EAAgBzqK,EAAGyqK,cAAe53M,EAAWmtC,EAAGntC,SAAU63M,EAAc1qK,EAAG0qK,YAAapmL,EAAU0b,EAAG1b,QAAS1b,EAAMo3B,EAAGp3B,IAAK+hM,EAAyB3qK,EAAG2qK,uBAAwB50P,EAAOiqF,EAAGjqF,KAC3MyhD,EAAOkzM,EAAY9hM,EAAK7yD,GACpB88C,EACO,CAAC,IAEZt7C,EAAMiqD,iBACDipM,GACLG,EAAYH,MAzDV/lP,EA0DakmP,IAzDH,kBAARlmP,GAAmC,oBAARA,GAA2C,oBAAbA,EAAIksD,KAyD/B,CAAC,EAAa,GACzC,CAAC,EAAag6L,IAHM,CAAC,EAAa,IAI7C,KAAK,EACDz6O,EAAG+qI,OACH/qI,EAAG8qI,MAAQ,EACf,KAAK,EAOD,OANI0vG,GACAj0P,KAAK6yP,gBAAgB/xM,GAErB8sB,GACAA,EAAQ/sE,EAAOigD,GAEZ,CAAC,GAtEhB,IAAU9yC,CAwEd,GACJ,GAAI,EACG9M,CACX,CAgBA,OAxDAwyF,GAAUk/J,EAAa3+J,GAyCvB2+J,EAAY1yP,UAAU+5C,OAAS,WAC3B,IAAIqvC,EAAKtpF,KAAKurB,MAAyC8wB,GAAlBitC,EAAGyqK,cAA0BzqK,EAAGjtC,UAAU8hC,EAAYmL,EAAGnL,UAAWhiC,EAAWmtC,EAAGntC,SAAUg4M,EAAgB7qK,EAAG6qK,cAAeC,EAAe9qK,EAAG8qK,aAA4CC,GAAhB/qK,EAAG0qK,YAA2B1qK,EAAG+qK,aAA6HC,GAA3FhrK,EAAGwpK,mBAA6CxpK,EAAG2qK,uBAA+B3qK,EAAGjqF,KAAyBiqF,EAAGgrK,kBAAkBh0M,EAAQgpC,EAAGhpC,MAAuHswE,GAA1GtnC,EAAGp3B,IAAoBo3B,EAAGypK,aAA+BzpK,EAAG0pK,eAA8B1pK,EAAGtK,YAAoB2jB,GAAOrZ,EAAI,CAAC,gBAAiB,WAAY,YAAa,WAAY,gBAAiB,eAAgB,cAAe,cAAe,qBAAsB,yBAA0B,OAAQ,mBAAoB,QAAS,MAAO,eAAgB,iBAAkB,iBAC3xBirK,EAAe1I,KAAG,2BAA4B,CAC9C,uCAAwC1vM,EACxCA,WAAYA,GACbgiC,GACCq2K,EACE3gK,GAASA,GADAygK,EACS,CAAE/9H,gBAAiB,cAAe4pE,OAAQ,OAAQn1L,QAAS,EAAG+jJ,KAAM,UAAWp9F,MAAO,UAAWmhL,OAAQ,WAAsE,CAAC,EAA1DxyL,GAASnE,GAAYg4M,GACnK,OAAQngK,EAAAA,cAAoB,SAAUH,GAAS,CAAC,EAAG+8B,EAAM,CAAE,aAAcA,EAAK,eAAiByjI,EAAal2K,UAAWo2K,EAAc3mL,QAAS5tE,KAAKglL,YAAaxoL,IAAK43P,EAAc9zM,MAAOk0M,IAAan4M,EAC3M,EACAu2M,EAAYlrL,aAAe,CACvBysL,cAAe,CAAE/0M,QAAS,IAC1B60M,wBAAwB,EACxBK,kBAAkB,GAEf1B,CACX,CA1DiC,CA0D/Bn0K,EAAAA,WACF,YCxKA,IAAIoV,GAAsC,WAStC,OARAA,GAAWl4F,OAAO49C,QAAU,SAASj2C,GACjC,IAAK,IAAIyT,EAAGhU,EAAI,EAAGiU,EAAI3Y,UAAUC,OAAQyE,EAAIiU,EAAGjU,IAE5C,IAAK,IAAI2sC,KADT34B,EAAI1Y,UAAU0E,GACOpH,OAAOuE,UAAUiO,eAAenQ,KAAK+Y,EAAG24B,KACzDpsC,EAAEosC,GAAK34B,EAAE24B,IAEjB,OAAOpsC,CACX,EACOuwF,GAASp1F,MAAMuB,KAAM3B,UAChC,EAiBA,SAdA,SAA2Bg2P,EAAavzM,EAAM2zM,EAAS/sL,GACnD,SAASgtL,EAAcnpO,EAAO/uB,GAC1B,IAAI6C,EAAOo1P,EAAQlpO,GACfopO,EAAc9gK,GAAS,CAAC,EAAGtoE,GAM/B,OAJe5vB,OAAOqtB,KAAK3pB,GAClByB,SAAQ,SAAUP,UAChBo0P,EAAYp0P,EACvB,IACQyzF,EAAAA,cAAoB4+J,GAAa/+J,GAAS,CAAC,EAAGnsB,EAAcitL,EAAa,CAAEP,aAAc53P,EAAK63P,YAAaA,EAAaL,YAAalzM,EAAMzhD,KAAMo1P,EAAQlpO,KACrK,CAEA,OADAmpO,EAAc56M,YAAc,eAAe7uC,OAAOopP,IAC3Cr1I,EAAAA,EAAAA,YAAW01I,EACtB,ECTA,IAAIE,GAAqBC,GAAkB,WAd3C,SAAqB3iM,EAAKo3B,GACtB,IAAI36C,EAAQ26C,EAAG36C,MAAOmmN,EAAMxrK,EAAGwrK,IAAKr7O,EAAK6vE,EAAGyrK,SAAUA,OAAkB,IAAPt7O,EAAgB,GAAKA,EAAI++E,EAAKlP,EAAG0rK,QAASA,OAAiB,IAAPx8J,EAAgB,GAAKA,EAI1I,OAHAk6J,GAAOxgM,EAAK,eACZwgM,GAAOhqO,MAAMC,QAAQosO,GAAW,oCAChCrC,GAAOhqO,MAAMC,QAAQqsO,GAAU,mCACvB,4BACJrC,GAAkB,CACdzgM,IAAKA,EACL96B,KAAMuX,EACNmmN,IAAKA,EACLC,SAAUA,EAASz2P,OAAS,EAAIy2P,EAASzlP,KAAK,UAAOtQ,EACrDg2P,QAASA,EAAQ12P,OAAS,EAAI02P,EAAQ1lP,KAAK,UAAOtQ,GAE9D,IACmE,SAAUusB,GAAS,MAAQ,CAC1FwpO,SAAUxpO,EAAMwpO,SAChBpmN,MAAOpjB,EAAMojB,MACbmmN,IAAKvpO,EAAMupO,IACXE,QAASzpO,EAAMypO,QACf,GAAG,CACHh2K,YAAa,IACb+zK,aAAc,MAElB,YCbA,IAAIkC,GAAsBJ,GAAkB,YAV5C,SAAsB3iM,EAAKo3B,GACvB,IAAI/0D,EAAQ+0D,EAAG/0D,MAAO2gO,EAAU5rK,EAAG4rK,QAEnC,OADAxC,GAAOxgM,EAAK,gBACJ,6CACJygM,GAAkB,CACdt6L,EAAGnG,EACH39B,MAAOA,EACP2gO,QAASA,GAErB,IACsE,SAAU3pO,GAAS,MAAQ,CAC7FgJ,MAAOhJ,EAAMgJ,MACb2gO,QAAS3pO,EAAM2pO,QACf,GAAG,CACHl2K,YAAa,IACb+zK,aAAc,MAElB,YCgCA,GA1CcvxK,IAAwC,IAAvC,UAAErD,EAAS,OAAEg3K,EAAM,WAAEC,GAAY5zK,EAC9C,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GACvC,OACEs4D,EAAAA,GAAAA,KAACh+C,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,UAC3DslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KACTpjD,EACA8jC,GACA,CAAE,CAACA,IAAgBkzI,GACnB,CAAE,CAAClzI,IAAoBmzI,IACvB/4M,SAAA,EAEFijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KACT,oCACA,CAAE,CAACtf,IAAgBwf,GACnBxf,IAEFr0C,QAASA,IAAM8zD,GAAYD,GAASplF,UAEpCijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,UAE1BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAcwf,IAAWplF,SAAA,EAC1DijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAC,6BAC9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAACs1H,GAAkB,CAACz2K,UAAW8jC,GAAa/vD,IA3BhC,kBA2BqD7V,UAC/DijF,EAAAA,GAAAA,KAAA,QAAAjjF,UACEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,UAAUk/B,KAAK,YAG9B6iG,EAAAA,GAAAA,KAAC21H,GAAmB,CAAC92K,UAAW8jC,GAAa/vD,IAjChC,kBAiCsD7V,UACjEijF,EAAAA,GAAAA,KAAA,QAAAjjF,UACEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,WAAWk/B,KAAK,qBAMjB,EC/C1B,GAAyB,yBAAzB,GAA2D,yBCwB3D,GApBiB+kD,IAAoB,IAAnB,UAAErD,GAAWqD,EAC7B,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GACvC,OACE26D,EAAAA,GAAAA,MAAA,UACExjD,UAAWojD,KACT,oCACAtf,GACA,CACE,CAACA,IAAgBwf,GAEnBtjD,GAEFvQ,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,QACxB6iG,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SACtB,EC2Cb,GA3DgB+kD,IAAe,IAAd,KAAE+wK,GAAM/wK,EACvB,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKk2M,EAAOA,EAAKvqG,GAAK,QACtB1oB,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAOA,EAAKzC,GAAK,OAEpByC,GAAQA,EAAKtqG,IAAKtmB,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKtqG,GAAG,OAAS,KACzCsqG,GAAQA,EAAKxC,IAAKpuH,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,IAAEk2M,EAAKxC,MAAU,MAEvCzwH,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAS,OAAJsnP,QAAI,IAAJA,OAAI,EAAJA,EAAM1C,eAAc,OAAOt5N,IAAS,OAAJg8N,QAAI,IAAJA,OAAI,EAAJA,EAAM5C,WAAYjhN,IAAI,WAGvE6jN,GAAQA,EAAKvC,IAAKruH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKvC,GAAG,OAAS,KACzCuC,GAAQA,EAAKtC,IAAKtuH,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,IAAEk2M,EAAKtC,MAAU,KAEtCsC,GAAQA,EAAKrC,IAAKvuH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKrC,GAAG,OAAS,KACzCqC,GAAQA,EAAKpC,IAAKxuH,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,IAAEk2M,EAAKpC,MAAU,KAEtCoC,GAAQA,EAAKnC,IAAKzuH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKnC,GAAG,OAAS,KACzCmC,GAAQA,EAAKlC,IAAK1uH,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,IAAEk2M,EAAKlC,MAAU,KAEtCkC,GAAQA,EAAKjC,IAAK3uH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKjC,GAAG,OAAS,KACzCiC,GAAQA,EAAKhC,IAAK5uH,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,IAAEk2M,EAAKhC,MAAU,KAEtCgC,GAAQA,EAAK/B,IAAK7uH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAK/B,GAAG,OAAS,KACzC+B,GAAQA,EAAK9B,IAAKnxH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAK9B,KAAU,KAErC8B,GAAQA,EAAK7B,IAAK/uH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAK7B,GAAG,OAAS,KACzC6B,GAAQA,EAAK5B,IAAKrxH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAK5B,KAAU,KAErC4B,GAAQA,EAAK3B,IAAKjvH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAK3B,GAAG,OAAS,KACzC2B,GAAQA,EAAK1B,IAAKvxH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAK1B,KAAU,KAErC0B,GAAQA,EAAKzB,KAAMnvH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKzB,IAAI,OAAS,KAC3CyB,GAAQA,EAAKxB,KAAMzxH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAKxB,MAAW,KAEvCwB,GAAQA,EAAKvB,KAAMrvH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKvB,IAAI,OAAS,KAC3CuB,GAAQA,EAAKtB,KAAM3xH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAKtB,MAAW,KAEvCsB,GAAQA,EAAKrB,KAAMvvH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKrB,IAAI,OAAS,KAC3CqB,GAAQA,EAAKpB,KAAM7xH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAKpB,MAAW,KAEvCoB,GAAQA,EAAKnB,KAAMzvH,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,IAAEk2M,EAAKnB,IAAI,OAAS,KAC3CmB,GAAQA,EAAKlB,KAAM/xH,EAAAA,GAAAA,KAAA,KAAAjjF,SAAIk2M,EAAKlB,MAAW,SAI1C1vH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOozI,QAAQh5M,SAAA,EAC7BijF,EAAAA,GAAAA,KAACg2H,GAAK,CAACH,QAAM,KACb71H,EAAAA,GAAAA,KAACi2H,GAAQ,CAACp3K,UAAW8jC,GAAOuzI,kBAG5B,EC3DV,IAAgB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,uBC6BjF,GApBgBh0K,IAAiB,IAAhB,SAACiuK,GAASjuK,EACzB,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAS7sH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBozM,EAAS/9O,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,UAU9C,ECEV,GArBoBuwP,KAElB,MAAM,KAAEtqF,GAAS9xC,MACV+8H,EAAMkD,IAAWzuL,EAAAA,EAAAA,UAAS,MASjC,OAPAP,EAAAA,EAAAA,YAAU,KACR,IAAI52C,EAAS4/N,GAASl1K,MAAM1qD,GAAWA,EAAOy3I,OAASA,IACnDz3I,GACF4lO,EAAQ5lO,EAAO,GAEhB,KAGD8xG,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAACuuE,KAAMA,KACZjzH,EAAAA,GAAAA,KAACo2H,GAAO,CAACnD,KAAMA,KACfjzH,EAAAA,GAAAA,KAAC8yH,GAAO,CAAC3C,SAAUA,OAClB,ECvBP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxG6C,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,eAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,sCAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,+BACNo1D,QAAQ,sCC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,2BCqDxI,GAlDgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,2FAEVijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,+CAEVijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,0EAAsEijF,EAAAA,GAAAA,KAAA,UACzFA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,qLAAiLijF,EAAAA,GAAAA,KAAA,UACpMA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,iGAA6FijF,EAAAA,GAAAA,KAAA,UAChHA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,2EAAuEijF,EAAAA,GAAAA,KAAA,UAC1FA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,4HAAwHijF,EAAAA,GAAAA,KAAA,UAC3IA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,yGAAqGijF,EAAAA,GAAAA,KAAA,UACxHA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,qKAAiKijF,EAAAA,GAAAA,KAAA,UACpLA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,8NAA0NijF,EAAAA,GAAAA,KAAA,UAC7OA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,mFAA+EijF,EAAAA,GAAAA,KAAA,UAClGA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,uKAAmKijF,EAAAA,GAAAA,KAAA,UACvLA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,oGAAgGijF,EAAAA,GAAAA,KAAA,UACpHA,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,+PAA2PijF,EAAAA,GAAAA,KAAA,aAGjRA,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAO,kCAAkC3oG,IAAI,kCAAkCmY,IAAI,eAG1F4wF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,+CACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,qCAAwCijF,EAAAA,GAAAA,KAAA,SAAM,wTAExDqC,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,iCAAoCijF,EAAAA,GAAAA,KAAA,SAAM,gSAEpDqC,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,oDAAuDijF,EAAAA,GAAAA,KAAA,SAAM,yOAEvEqC,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,4CAA+CijF,EAAAA,GAAAA,KAAA,SAAM,2PCjCzE,GATkBq2H,KAEdh0H,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,IAAM,oBAAoB,MAAQ,sBAAsB,KAAO,qBAAqB,QAAU,yBCA9G,GAAwB,qBAAxB,GAAmD,mBAAnD,GAAwG,oBAAxG,GAAmI,oBAAnI,GAA8J,oBC2B9J,GAvBcl0K,IAA0D,IAAzD,UAAErD,EAAS,QAAE9D,EAAO,SAAEu7K,EAAQ,QAAEC,EAAO,SAAEx5M,GAAUmlC,EAChE,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAc5lE,SAAA,EAC1CijF,EAAAA,GAAAA,KAAA,OACEnhD,UAAW8jC,GACX3hE,MAAO,CACLw1M,gBAAiB,wCAIrBn0H,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAOg+B,KACPilD,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAW8jC,GAAa5+B,GAAIwyK,EAAQx5M,SACvCu5M,QAGLt2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAEA,SAE5B,ECvBV,IAAgB,IAAM,kBAAkB,KAAO,mBAAmB,OAAS,qBAAqB,UAAY,wBAAwB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,qBAAqB,OAAS,qBAAqB,IAAM,kBAAkB,MAAQ,oBAAoB,KAAO,mBAAmB,QAAU,uBCAha,GAAyB,uBAAzB,GAA8D,4BCa9D,GAVemlC,IAA2B,IAA1B,UAAErD,EAAS,MAAExsB,GAAO6vB,EAClC,OACE89C,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAGtf,GAAe9jC,EAAW,CACtC,CAAC8jC,IAA+B,UAAVtwD,KAEnB,EC+GX,GAjHa6vB,IAgBN,IAhBO,OACZu0K,EAAM,MACNjkM,EAAK,SACLo2G,EAAQ,SACRp7J,EAAQ,YACRkpP,EAAW,QACXC,EAAO,WACPC,EAAU,aACVC,EAAY,gBACZC,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,sBACdC,EAAqB,YACrBC,EAAW,QACXtvF,EAAO,aACPuvF,GACDh1K,EACC,MAAMi1K,EAAahgH,KAAKrmI,SAASC,mBAA8B,OAAXkmP,QAAW,IAAXA,OAAW,EAAXA,EAAa9hP,UAEjE,OACEktH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,qDAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy0I,QAAQr6M,SAAA,EAC7BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,QACvBklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/vD,IAAI7V,SAAA,CAAC,YAClBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,mCAIpBslF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpnC,UAAUx+B,UAC/BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,QACNhnJ,KAAK,QACLs5B,KAAK,QACLr4B,MAAOszD,EACP2wC,SAAWljG,IAAQ2oK,EAAS3oK,EAAEQ,OAAOvB,MAAM,EAC3C+pK,YAAY,6BACZthD,UAAQ,OAGZqY,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,QAASuoD,EAAO,eAEnDwtE,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpnC,UAAUx+B,UAC/BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,WACNhnJ,KAAK,WACLs5B,KAAMs/N,EACN33P,MAAOsO,EACP21F,SAAWljG,IAAQy2P,EAAYz2P,EAAEQ,OAAOvB,MAAM,EAC9C+pK,YAAY,wBACZthD,UAAQ,EACRp7D,MAAI,EACJg8G,eAAgByuF,OAGpBh3H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,WAAYuD,EAAU,oBAEvDm6J,GAA6G3nC,EAAAA,GAAAA,KAACs3H,GAAM,CAACz4K,UAAW8jC,GAAOqX,UAA7HgG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOg0I,QAAS1/N,IAAG,6BAAAtrB,OAA+BwrP,GAAc/nN,IAAI,aAChG4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpnC,UAAUx+B,UAC/BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClBn1H,KAAK,UACLs5B,KAAK,OACL0xI,YAAY,uBACZthD,UAAQ,EACRzoH,MAAOy3P,EACPxzJ,SAAWljG,IAAQ22P,EAAW32P,EAAEQ,OAAOvB,MAAM,OAGjD8gI,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,UAAW0sP,EAAS,eAEvDt0H,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO40I,KAAKx6M,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,UACEzoG,KAAK,SACLsnD,UAAW8jC,GAAOhe,KAClBr2B,QAAUruE,IACRA,EAAEurD,iBACFirM,GAAQ,EACR15M,SAAC,mBAGLijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAW8jC,GAAOnhE,KAAMuiC,GAAG,mBAAkBhnC,SAAC,yBAItDijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1BN,EAAa1kM,EAAOhlD,EAAUmpP,EAAoB,OAAXM,QAAW,IAAXA,OAAW,EAAXA,EAAaQ,YAGpDX,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SAAC,eAIN,ECpHP,IAAgB,IAAM,kBAAkB,QAAU,sBAAsB,KAAO,mBAAmB,OAAS,qBAAqB,IAAM,kBAAkB,MAAQ,oBAAoB,KAAO,mBAAmB,QAAU,sBAAsB,MAAQ,oBAAoB,YAAc,0BAA0B,UAAY,wBAAwB,SAAW,uBAAuB,YAAc,0BAA0B,aAAe,2BAA2B,kBAAoB,iCCA9d,GAA2B,2BAA3B,GAA8D,wBAA9D,GAA8F,wBAA9F,GAA6H,uBAA7H,GAA2J,uBAA3J,GAAyL,uBCyBzL,GAtBiBmlC,IAA6D,IAA5D,UAAErD,EAAS,QAAE9D,EAAO,KAAEutF,EAAI,MAAEppK,EAAK,SAAEikG,EAAQ,SAACtmD,GAAUqlC,EACtE,OACEmgD,EAAAA,GAAAA,MAAA,SAAOxjD,UAAWojD,KAAGtf,GAAiB9jC,GAAW9hC,SAAA,EAC/CijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GACXprF,KAAK,WACL4rE,SAAUA,EACVznD,QAASx8C,EACT29C,SAAUA,KAEZwlF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAa5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,MACjBqd,EAAAA,GAAAA,KAAA,QACEnhD,UAAW8jC,GACX7lE,wBAAyB,CAAEwd,OAAQygB,KAEpCutF,IAAQtoC,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAY5lE,SAAEurH,SAEpC,EC8CZ,GA9DapmF,IASN,IATO,SACZy1K,EAAQ,WACRC,EAAU,cACVC,EAAa,aACbC,EAAY,iBACZC,EAAgB,YAChBC,EAAW,WACXC,EAAU,OACVC,GACDh2K,EAEC,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOw1I,MAAMp7M,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,qDAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy0I,QAAQr6M,SAAA,EAC7BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,QACvBklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/vD,IAAI7V,SAAA,CAAC,YAClBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,mCAIpBslF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAMiiL,SAAWn4P,IAAQA,EAAEurD,gBAAgB,EAAGzO,SAAA,EACpEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO01I,kBAAkBt7M,UACvCijF,EAAAA,GAAAA,KAACs4H,GAAQ,CACPp5P,MAAO84P,EACPj9K,QAAQ,oBACRooB,SAAUA,KACR+0J,IACAP,EAAS,EAAE,OAIjB33H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW+4K,EAAaj1I,GAAOrO,MAAQqO,GAAO41I,YAAathO,IAAKghO,EAAY7oN,IAAI,UACrFizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO61I,aAAaz7M,SAAA,EAClCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO81I,UAAU17M,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,YAAgB,yBAAqBijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,oCAAoCv0D,OAAO,SAASwwF,IAAI,aAAapS,UAAW8jC,GAAO2zI,SAASv5M,SAAC,iBAAiB,4DAEzKslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO81I,UAAU17M,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,YAAgB,iGAI1B66M,IACAv1H,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+1I,YAAY37M,SAAC,qBACpCijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,eAAgBtf,GAAOp1D,QAC3C+gB,QAASA,KACPupL,GAAc,GACdC,EAAa,IACbH,EAAS,GACTI,GAAkB,EAClBh7M,SAAC,4BAGP,EC/DV,IAAgB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,qBAAqB,OAAS,qBAAqB,cAAgB,6BCkF1M,GA9EamlC,IAQN,IARO,MACZ1vB,EAAK,aACLmmM,EAAY,gBACZC,EAAe,gBACf9B,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,kBACd8B,GACD32K,EACC,MAAOvE,EAAOm7K,IAAYpxL,EAAAA,EAAAA,UAAS,KAC5BsQ,EAAY+gL,IAAiBrxL,EAAAA,EAAAA,WAAS,GAkB7C,OAhBAP,EAAAA,EAAAA,YAAU,KACR,IAAIs9G,EAYJ,OAVI9mG,EAAQ,GAAK3F,EACfysG,EAAW7yE,aAAY,KACrBknJ,GAASE,GAAaA,EAAY,GAAE,GACnC,KAEc,IAAVr7K,IACPo7K,GAAc,GACdxmJ,cAAckyE,IAGT,IAAMlyE,cAAckyE,EAAS,GACnC,CAAC9mG,EAAO3F,KAGTqqD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,8BACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,0BAAwByV,MACrDwtE,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACE/hI,KAAK,OACLs5B,KAAK,OACL0hO,UAAW,EACX/5P,MAAOy5P,EACPx1J,SAAWljG,IAAQ24P,EAAgB34P,EAAEQ,OAAOvB,MAAM,EAClDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQ0uP,EAAc,qBAEzD34H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1BqB,EAAkBF,IAGlB7B,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,aAGA4gC,GAAS,GAAI0kD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,KAAMtf,GAAOy2I,eAAer8M,SAAA,CAAC,iBAAe4gC,EAAM,OAAU,MAC3FqiD,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACvC1Q,SAAUm7B,EACV1J,QAAUruE,IACRA,EAAEurD,iBACFo6G,GAAUpzG,EAAO,WACjBsmM,EAAS,IACTC,GAAc,EAAK,EACnBh8M,SAAC,iBAGA,EC9EX,IAAgB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,qBAAqB,OAAS,qBAAqB,cAAgB,4BAA4B,QAAU,sBAAsB,SAAW,wBC2DjR,GAxDamlC,IAON,IAPO,qBACZm3K,EAAoB,gBACpBvC,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,iBACduC,EAAgB,oBAChBC,GACDr3K,EAEC,OACEmgD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,0BACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,oCACKijF,EAAAA,GAAAA,KAAA,SAAS,8CAE3CA,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,oEAG7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACE/hI,KAAK,OACLs5B,KAAK,OACL0hO,UAAW,EACX/5P,MAAOo6P,EACPn2J,SAAWljG,IAAQs5P,EAAoBt5P,EAAEQ,OAAOvB,MAAM,EACtDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQqvP,EAAkB,qBAE7Dt5H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1B6B,EAAqBC,IAGrBxC,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,cAGDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO62I,SAASz8M,SAAA,CAAC,+CACYijF,EAAAA,GAAAA,KAAA,SAAS,2BAAuBA,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOy0I,QAAQr6M,SAAC,8BAEzG,ECvDX,IAAgB,MAAQ,oBAAoB,KAAO,mBAAmB,SAAW,uBAAuB,MAAQ,oBAAoB,OAAS,qBAAqB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,sBCgEnO,GA5DamlC,IAQN,IAADu3K,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IARQ,gBACZhD,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,WACdgD,EAAU,qBACVV,EAAoB,oBACpBW,EAAmB,uBACnBC,GACD/3K,EAEC,OACEmgD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2CACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,mCACIijF,EAAAA,GAAAA,KAAA,SAAS,6JAE1CA,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAe,OAAV8iO,QAAU,IAAVA,GAAgB,QAANN,EAAVM,EAAY1uP,YAAI,IAAAouP,GAAM,QAANC,EAAhBD,EAAkBpuP,YAAI,IAAAquP,GAAK,QAALC,EAAtBD,EAAyB,UAAE,IAAAC,OAAjB,EAAVA,EAA6BO,QAAS9qN,IAAI,YAEtD4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,UAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,iBAAyB,OAAVg9M,QAAU,IAAVA,GAAgB,QAANH,EAAVG,EAAY1uP,YAAI,IAAAuuP,GAAM,QAANC,EAAhBD,EAAkBvuP,YAAI,IAAAwuP,GAAK,QAALC,EAAtBD,EAAyB,UAAE,IAAAC,OAAjB,EAAVA,EAA6BK,WAAW,KAACn6H,EAAAA,GAAAA,KAAA,QAAM3wF,MAAM,oFAAmF0N,UAACijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,WAAWk/B,KAAK,eAE5N6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,wGAG7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACE/hI,KAAK,OACLs5B,KAAK,OACL0hO,UAAW,EACX/5P,MAAO86P,EACP72J,SAAWljG,IAAQg6P,EAAuBh6P,EAAEQ,OAAOvB,MAAM,EACzDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQ+vP,EAAqB,qBAEhEh6H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1B6B,EAAqBW,IAGrBlD,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,eAGI,EC5DX,GAA6B,yBCoB7B,GAjBaq9M,KAET/3H,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAmB5+B,GAAG,IAAGhnC,SAAA,EACxCijF,EAAAA,GAAAA,KAAC5mC,GAAK,CACJniE,IAAI,yBACJ0oG,QAAQ,wBACRvwF,IAAI,cAEN4wF,EAAAA,GAAAA,KAAC5mC,GAAK,CACJniE,IAAI,yBACJ0oG,QAAQ,wBACRvwF,IAAI,0CCAZ,MA8SA,GA9SeirN,KACb,MAAO11J,EAAM21J,IAAW5yL,EAAAA,EAAAA,WAAS,IAC1BlV,EAAOo2G,IAAYlhG,EAAAA,EAAAA,UAAS,KAC5Bl6D,EAAUkpP,IAAehvL,EAAAA,EAAAA,UAAS,KAClCivL,EAASC,IAAclvL,EAAAA,EAAAA,UAAS,KAChCmvL,EAAc0D,IAAmB7yL,EAAAA,EAAAA,UAAS,aAC1CkoL,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,GACzCovL,GAAkBrvL,EAAAA,EAAAA,QAAO,IAAI+yL,QAC5B17I,EAAai4I,IAAkBrvL,EAAAA,EAAAA,aAC/BigG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChCuvL,EAAawD,IAAkB/yL,EAAAA,EAAAA,UAAS,KACxCixL,EAAcC,IAAmBlxL,EAAAA,EAAAA,UAAS,KAC1CqyL,EAAYW,IAAiBhzL,EAAAA,EAAAA,UAAS,KACtCsyL,EAAqBC,IAA0BvyL,EAAAA,EAAAA,UAAS,KACxD4xL,EAAkBC,IAAuB7xL,EAAAA,EAAAA,UAAS,KAClDuwL,EAAY0C,IAAiBjzL,EAAAA,EAAAA,UAAS,KACtCkzL,EAAW9C,IAAgBpwL,EAAAA,EAAAA,UAAS,KACpCswL,EAAa6C,IAAkBnzL,EAAAA,EAAAA,WAAS,IACxCkwL,EAAYC,IAAiBnwL,EAAAA,EAAAA,WAAS,IACtC/1B,EAAOgmN,IAAYjwL,EAAAA,EAAAA,UAAS,GAY7BozL,GAAiB7zL,EAAAA,EAAAA,cAAYxvC,UACjC8sJ,GAAW,GACX,MAAMl5K,EAAO,CACXg4H,MAAO1E,aAAaC,QAAQ,aAE9B,IACE,MAAMm8H,QAAsB91F,GAAe,gBAAiB,OAAQ55J,GACpEovP,EAA4B,OAAbM,QAAa,IAAbA,OAAa,EAAbA,EAAe1vP,MAC9Bk5K,GAAW,EACb,CACA,MAAOtkL,IACLskL,GAAW,EACb,CAAC,GACA,IAEGwzE,GAAmB9wL,EAAAA,EAAAA,cAAYxvC,UACnC8sJ,GAAW,GACX,IAAK,IAADy2E,EAAAC,EAAAC,EAAAC,EACF,MAAMC,QAAyBn2F,GAAe,kBAAmB,QACjEsf,GAAW,GACXo2E,EAA8B,OAAhBS,QAAgB,IAAhBA,GAAsB,QAANJ,EAAhBI,EAAkB/vP,YAAI,IAAA2vP,GAAM,QAANC,EAAtBD,EAAwB3vP,YAAI,IAAA4vP,OAAZ,EAAhBA,EAA8B1iK,QAC5Cu/J,EAA6B,OAAhBsD,QAAgB,IAAhBA,GAAsB,QAANF,EAAhBE,EAAkB/vP,YAAI,IAAA6vP,GAAM,QAANC,EAAtBD,EAAwB7vP,YAAI,IAAA8vP,OAAZ,EAAhBA,EAA8BP,UAC7C,CACA,MAAO36P,IACLskL,GAAW,EACb,CAAC,GACA,IA2CG80E,EAAuB5hO,UAC3B8sJ,GAAW,GACX,IAAIl5K,EAAO,CACTmnD,MAAOA,EACPte,KAAMA,GAER,IAAK,IAADmnN,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACF,MAAMC,QAA6B12F,GAAe,cAAe,OAAQ55J,GAGyD,IAADuwP,EAAAC,EAAAC,EADjI,GADAv3E,GAAW,GAC0B,MAAhCo3E,EAAqBnnI,QAAkElrH,cAA5B,OAApBqyP,QAAoB,IAApBA,GAA0B,QAANN,EAApBM,EAAsBtwP,YAAI,IAAAgwP,GAAM,QAANC,EAA1BD,EAA4BhwP,YAAI,IAAAiwP,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuC/R,OAChD,MAAhCmS,EAAqBnnI,QAAkElrH,eAA5B,OAApBqyP,QAAoB,IAApBA,GAA0B,QAANH,EAApBG,EAAsBtwP,YAAI,IAAAmwP,GAAM,QAANC,EAA1BD,EAA4BnwP,YAAI,IAAAowP,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuClS,MAC/E,GAAwB,OAApBmS,QAAoB,IAApBA,GAA0B,QAANC,EAApBD,EAAsBtwP,YAAI,IAAAuwP,GAAM,QAANC,EAA1BD,EAA4BvwP,YAAI,IAAAwwP,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,GAArCA,EAAuC92F,UAAW,CAAC,IAAD+2F,EAAAC,EAAAC,EAAAC,EAAAC,EAChDn3F,EAAgC,OAApB22F,QAAoB,IAApBA,GAA0B,QAANI,EAApBJ,EAAsBtwP,YAAI,IAAA0wP,GAAS,QAATC,EAA1BD,EAA4B1wP,KAAK,UAAE,IAAA2wP,OAAf,EAApBA,EAAqCh3F,UAErDA,GADAA,EAAYA,EAAU7wI,QAAQ,IAAK,MACbA,QAAQ,IAAK,KACnC90B,OAAO0pC,SAASisB,MAA2B,OAApB2mM,QAAoB,IAApBA,GAA0B,QAANM,EAApBN,EAAsBtwP,YAAI,IAAA4wP,GAAM,QAANC,EAA1BD,EAA4B5wP,YAAI,IAAA6wP,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuCvpM,KAAM,QAAUoyG,CAChF,KACK,CAAC,IAADo3F,EAAAC,EAAAC,EACHj9P,OAAO0pC,SAASisB,KAA2B,OAApB2mM,QAAoB,IAApBA,GAA0B,QAANS,EAApBT,EAAsBtwP,YAAI,IAAA+wP,GAAM,QAANC,EAA1BD,EAA4B/wP,YAAI,IAAAgxP,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuC1pM,GAChE,MAGA2sB,GAAgB,CACdlwC,MAAO,QACPplC,QAAQ,+BACRstB,KAAM,UAGZ,CACA,MAAOt3B,IACLskL,GAAW,GACXhlG,GAAgB,CACdlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,UAEV,CAAC,EAkFH,OAnDA4vC,EAAAA,EAAAA,YAAU,KACR,MAAMonG,EAASoL,GAAGrwK,gCAAkC,CAClDs1K,aAAa,EACbnO,WAAY,CAAC,eAmBf,OAjBA8T,GAAW,GACXhW,EAAOnW,UACW,KAAdwiG,IACFr2E,GAAW,GACXhW,EAAO1gJ,GAAG,WAAW,SAGrB0gJ,EAAO1gJ,GAAG,gBAAkB+sO,GAAW,SAAUrqO,GAC/C,GAAIA,EAAO,GAAGy0I,UAAW,CACvB,IAAIA,EAAYz0I,EAAO,GAAGy0I,UAE1BA,GADAA,EAAYA,EAAU7wI,QAAQ,IAAK,MACbA,QAAQ,IAAK,KACnC90B,OAAO0pC,SAASisB,KAAOzkC,EAAO,GAAGqiC,IAAM,QAAUoyG,CACnD,CACF,KAGK,KACLuJ,EAAO97D,YAAY,CACpB,GACA,CAACmoJ,KAEJzzL,EAAAA,EAAAA,YAAU,KACR,GAAIw9B,EAAM,CACR,MAAM43J,EAAkB3qJ,aAAY,KAClC+lJ,GAAU6E,GAAcA,EAAY,GAAE,GACrC,KAMH,OAJc,KAAV7qN,IACF4gE,cAAcgqJ,GACd1E,GAAc,IAET,IAAMtlJ,cAAcgqJ,EAC7B,IACC,CAAC5qN,EAAOgzD,KAEXx9B,EAAAA,EAAAA,YAAU,KACJw9B,GACFozJ,GACF,GACC,CAACA,EAAkBpzJ,KAEtBx9B,EAAAA,EAAAA,YAAU,KACR2zL,GAAgB,GACf,CAACA,KAGFz4H,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBjqH,EAAAA,GAAAA,MAACo6H,GAAK,CACJ1hL,QAAQ,8BACRu7K,SAAS,mBACTC,QAAQ,WAAUx5M,SAAA,EAElBijF,EAAAA,GAAAA,KAACo6H,GAAI,KACLp6H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOw1I,MAAMp7M,SAC1B4nD,GACCq7B,EAAAA,GAAAA,KAAC08H,GAAI,CACH9E,WAAYA,EACZG,iBAAkBA,EAClB8C,eAAgBA,EAChBlD,SAAUA,EACVE,cAAeA,EACfC,aAAcA,EACdE,YAAaA,EACbC,WAAYA,EACZC,OAAQA,KAAQoC,GAAQ,EAAM,EAC9B3oN,MAAOA,EACPgzD,KAAMA,IAGQ,IAAhBirJ,GACE5vH,EAAAA,GAAAA,KAAC28H,GAAI,CACHlG,OAAQA,IAAM6D,GAAQ,GACtB9nM,MAAOA,EACPo2G,SAAUA,EACVp7J,SAAUA,EACVkpP,YAAaA,EACbC,QAASA,EACTC,WAAYA,EACZC,aAAcA,EACdC,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBC,sBA1OiB/2P,IAC7BA,EAAEurD,iBAKF+uM,EAJqB,aAAjB1D,EAIY,WAHE,OAGS,EAqOfI,YAAaA,EACbtvF,QAASA,EACTuvF,aAxMOz/N,MAAO+6B,EAAOhlD,EAAUmpP,EAASiG,KACpDr4E,GAAW,GACX,IAAI0yE,EAAc,CAChB3nN,GAAIstN,EACJ1oN,KAAMyiN,GAER,IACE,MAAMkG,QAAuB53F,GAAe,gBAAiB,OAAQgyF,GACrE,GAA+B,OAAb,OAAd4F,QAAc,IAAdA,OAAc,EAAdA,EAAgBroI,QAAgB,CAClC,IAAInpH,EAAO,CACTmnD,MAAOA,EACPhlD,SAAUA,GAEZ,MAAMsvP,QAAsB73F,GAAe,QAAS,OAAQ55J,GAC5DqvP,EAAcoC,GACgB,OAAb,OAAbA,QAAa,IAAbA,OAAa,EAAbA,EAAetoI,SACjB+vD,GAAW,GACXsrE,EAAe,IAEkB,OAAb,OAAbiN,QAAa,IAAbA,OAAa,EAAbA,EAAetoI,SACtB+vD,GAAW,GACXsrE,EAAe,IAEkB,OAAb,OAAbiN,QAAa,IAAbA,OAAa,EAAbA,EAAetoI,UACtB+vD,GAAW,GACXsrE,EAAe,GAEnB,CACF,CACA,MAAO5vP,IAAI,IAAD88P,EAAAC,EAAAC,EACRrG,EAAW,UACLkE,IACNv2E,GAAW,GACXhlG,GAAgB,CACdlwC,MAAO,QACPplC,QAAU,OAADhK,SAAC,IAADA,IAAO,QAAN88P,EAAD98P,GAAGoL,YAAI,IAAA0xP,GAAS,QAATC,EAAPD,EAAS9yP,eAAO,IAAA+yP,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAApB,EAADA,EAAuB53F,IAChC9tI,KAAM,UAEV,CAAC,IAqKyB,IAAhBq4N,GACE5vH,EAAAA,GAAAA,KAACk9H,GAAO,CACNnD,WAAYA,EACZV,qBAAsBA,EACtBW,oBAAqBA,EACrBC,uBAAwBA,EACxBnD,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,IAGF,IAAhBnH,GACE5vH,EAAAA,GAAAA,KAACm9H,GAAI,CACHxE,aAAcA,EACdC,gBAAiBA,EACjB9B,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBvkM,MAAOA,EACPqmM,kBA9IQphO,UACxB8sJ,GAAW,GACX,IAAIl5K,EAAO,CACT+xP,UAAWlpN,EACXse,MAAOA,EACPj7B,KAAMwiO,EAAW1uP,KAAKpB,QAAQstB,MAEhC,IACE,MAAM8lO,QAA0Bp4F,GAAe,aAAc,OAAQ55J,GACrEqvP,EAAc2C,GACd94E,GAAW,GACuB,OAAb,OAAjB84E,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB7oI,QACrBq7H,EAAe,GAEsB,OAAb,OAAjBwN,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB7oI,SAC1Bq7H,EAAe,EAEnB,CACA,MAAO5vP,IACLskL,GAAW,GACXhlG,GAAgB,CACdlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,UAEV,CAAC,IAwH6B,IAAhBq4N,GACE5vH,EAAAA,GAAAA,KAACs9H,GAAO,CACNjE,qBAAsBA,EACtBvC,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBuC,iBAAkBA,EAClBC,oBAAqBA,IAGvB,UAIb,ECxTP,IAAgB,IAAM,kBAAkB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,oBAAoB,KAAO,mBAAmB,QAAU,sBAAsB,OAAS,qBAAqB,OAAS,sBCAnR,GAAwB,wBAAxB,GAA2D,2BAA3D,GAA+F,yBAA/F,GAA+H,uBAA/H,GAA8J,wBAA9J,GAA6L,uBAA7L,GAAgO,4BAAhO,GAAqQ,yBAArQ,GAA4S,8BCkE5S,GA9DuBr3K,IAehB,IAfiB,UACtBrD,EAAS,WACTupF,EAAU,MACVlpK,EAAK,SACLo8C,EAAQ,KACRxjB,EAAI,QACJylO,EAAO,QACPx8P,EAAO,MACPkkJ,EAAK,YACLu4G,EAAW,gBACXC,EAAe,kBACfj1F,EAAiB,mBACjB8c,EAAkB,kBAClBC,EAAiB,oBACjBC,GACDtjG,EACC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAUvC,OACE26D,EAAAA,GAAAA,MAACrgD,GAAAA,QAAmB,CAACF,eAAgBA,IAAMsgD,GAAW,GAAOrlF,SAAA,CAC1DkoG,IAASjlB,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGmmC,EAAYzlD,IAAc5lE,SAAEkoG,KACzD5iB,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAiB9jC,EAAW,CACxC,CAAC8jC,IAAgBwf,IAChBplF,SAAA,EAEHslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGumC,EAAmB7lD,IACjCr0C,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAiB5lE,SAAEjlB,KACnCkoG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAc2iE,GAAoBvoI,UACnDijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAGjC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGsjD,EAAmB5iE,IAAa5lE,SACzC,OAAPh8C,QAAO,IAAPA,OAAO,EAAPA,EAASqR,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAGujD,EAAqB7iE,GAAe,CAChD,CAACA,IAAqBj/G,EAAEk5P,MAAQ19P,IAElCovE,QAASA,KA/BDo3G,IAACk3E,EAAKc,EAAQC,EAAbf,EAgCKl5P,EAAEk5P,IAhCFc,EAgCOh6P,EAAEg6P,OAhCDC,EAgCSj6P,EAAEi6P,WA/BvCH,GACFC,EAAgBb,EAAKc,EAAQC,GAE/BJ,EAAQG,GACRpiN,EAASshN,GACTx6H,GAAW,EA0B2C,EAC1CrlF,SAGDr5C,EAAEg6P,QAFE37P,YAOO,ECiH1B,GAvKamgF,IA0BN,IA1BO,MACZ1vB,EAAK,SACLo2G,EAAQ,SACRp7J,EAAQ,YACRkpP,EAAW,WACXkH,EAAU,cACVC,EAAa,YACbC,EAAW,eACXC,EAAc,QACdpH,EAAO,WACPC,EAAU,aACVoH,EAAY,gBACZC,EAAe,gBACfnH,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,OACdmH,EAAM,UACNC,EAAS,WACTC,EAAU,YACVnH,EAAW,aACXoH,EAAY,gBACZC,EAAe,sBACftH,EAAqB,aACrBH,EAAY,sBACZ0H,EAAqB,QACrB52F,GACDzlF,EACC,MAAMi1K,EAAahgH,KAAKrmI,SAASC,mBAA8B,OAAXkmP,QAAW,IAAXA,OAAW,EAAXA,EAAa9hP,UAEjE,OACEktH,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,aACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,qDAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy0I,QAAQr6M,SAAA,EAC7BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,OAAOk/B,KAAK,QACvBklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO/vD,IAAI7V,SAAA,CAAC,YAClBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,mCAIpBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO67I,SAASzhN,SAAA,EAC9BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,gBACNhnJ,KAAK,QACLs5B,KAAK,QACLr4B,MAAOszD,EACP2wC,SAAWljG,IAAQ2oK,EAAS3oK,EAAEQ,OAAOvB,MAAM,EAC3C+pK,YAAY,6BACZiwF,OAAQA,KAAO,IAADuF,EACZ3H,EAAgBtyM,QAAQ20M,eAAe,SACvC,MAAMuF,EAA+C,QAAzCD,EAAGn1P,yeAAsC,EAAtCm1P,EAAwCvmN,MAAM,KAC7D,IAAK,IAAIn2C,EAAQ,EAAGA,EAAQ28P,EAAO1/P,OAAQ+C,IAAS,CAAC,IAAD48P,EAClD,IAAS,OAALnsM,QAAK,IAALA,GAAoB,QAAfmsM,EAALnsM,EAAOta,MAAM,KAAK,UAAE,IAAAymN,OAAf,EAALA,EAAsBzmN,MAAM,KAAK,MAAOwmN,EAAO38P,GAAQ,CACzDw9E,GAAgB,CACdlwC,MAAO,QACPplC,QAAS,mCACTstB,KAAM,WAER+mO,GAAgB,GAChB,KACF,CAEEA,GAAgB,EAEpB,MAGJt+H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,QAASuoD,EAAO,eAEnDwtE,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,WACNhnJ,KAAK,WACLs5B,KAAMs/N,EACN33P,MAAOsO,EACP21F,SAAWljG,IAAQy2P,EAAYz2P,EAAEQ,OAAOvB,MAAM,EAC9C+pK,YAAY,wBACZ18G,MAAI,EACJg8G,eAAgByuF,EAChBkC,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,WAAW,KAGtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,WAAYuD,EAAU,qBAEzDwyH,EAAAA,GAAAA,KAAC4+H,GAAc,CACb//K,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,gBACN/lJ,MAAO4+P,EACPxiN,SAAUyiN,EACVjmO,KAAM8lO,EACNL,QAASM,EACT98P,QAASq9P,IAETz2F,GAA6G3nC,EAAAA,GAAAA,KAACs3H,GAAM,CAACz4K,UAAW8jC,GAAOqX,UAA7HgG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOg0I,QAAS1/N,IAAG,6BAAAtrB,OAA+BwrP,GAAc/nN,IAAI,aAChG4wF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClBn1H,KAAK,UACLs5B,KAAK,OACLr4B,MAAOy3P,EACPxzJ,SAAWljG,IAAQ22P,EAAW32P,EAAEQ,OAAOvB,MAAM,EAC7C+pK,YAAY,uBACZiwF,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,UAAU,KAGrDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,UAAW0sP,EAAS,eAEvD32H,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,0BACNhnJ,KAAK,WACLs5B,KAAK,OACLr4B,MAAO8+P,EACP76J,SAAWljG,IAAQg+P,EAAgBh+P,EAAEQ,OAAOvB,MAAM,EAClD+pK,YAAY,wBACZiwF,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,WAAW,KAGtDn5H,EAAAA,GAAAA,KAACs4H,GAAQ,CACPz5K,UAAW8jC,GAAOyQ,MAClBl0H,MAAOg/P,EACP/6J,SAAUA,KACRg7J,GAAWD,GACXpH,EAAgBtyM,QAAQ20M,eAAe,SAAS,EAElDp+K,QAAQ,+UAEVilD,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,SAAUi0P,EAAQ,kBAGvDl+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAC/B1Q,UAAWwhN,EACX/vL,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WACQ,mBAApB,OAAVoG,QAAU,IAAVA,OAAU,EAAVA,EAAYzlN,eACdomN,EAAsB/rM,EAAOhlD,EAAUswP,EAAanH,EAASqH,EAAyB,OAAX/G,QAAW,IAAXA,OAAW,EAAXA,EAAaQ,UAAWyG,GAGnG3+K,GAAgB,CACdlwC,MAAO,QACPplC,QAAS,uBACTstB,KAAM,YAKVu/N,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,cAGI,EC5KX,IAAgB,MAAQ,uBAAuB,KAAO,sBAAsB,SAAW,0BAA0B,MAAQ,uBAAuB,OAAS,yBCAzJ,GAAwB,qBAAxB,GAAqD,qBAArD,GAAkF,qBAAlF,GAA8G,oBAA9G,GAAyI,oBCyBzI,GAtBcmlC,IAA8D,IAA7D,UAAErD,EAAS,QAAE9D,EAAO,KAAE98E,EAAI,MAAEiB,EAAK,SAAEikG,EAAQ,SAAEtmD,GAAUqlC,EACpE,OACEmgD,EAAAA,GAAAA,MAAA,SAAOxjD,UAAWojD,KAAGtf,GAAc9jC,GAAW9hC,SAAA,EAC5CijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GACXprF,KAAK,QACLt5B,KAAMA,EACNklG,SAAUA,EACVznD,QAASx8C,EACT29C,SAAUA,KAEZwlF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAa5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,MACjBqd,EAAAA,GAAAA,KAAA,QACEnhD,UAAW8jC,GACX7lE,wBAAyB,CAAEwd,OAAQygB,UAGjC,ECyBZ,GAzCgBmH,IAIT,IAJU,MACf1vB,EAAK,OACLqsM,EAAM,cACNC,GACD58K,EACC,MAAO68K,EAASC,IAAct3L,EAAAA,EAAAA,WAAS,GAEvC,OACE26D,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,6CACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,iCACEijF,EAAAA,GAAAA,KAAA,SAAS,8CAGxCA,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOs8I,SAASliN,UAC9BijF,EAAAA,GAAAA,KAACk/H,GAAK,CACJrgL,UAAW8jC,GAAOw8I,MAClBlhQ,KAAK,UACLiB,MAAO6/P,EACP57J,SAAUA,IAAM67J,GAAW,GAC3BjkL,QAAO,0CAAApvE,OAA4C6mD,EAAK,yBAG5D6vE,EAAAA,GAAAA,MAAA,UACExjD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAC/B+gB,QAAUruE,IACRA,EAAEurD,iBACFszM,GAAe,EACf/hN,SAAA,EAEFijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,cACNijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,cAAck/B,KAAK,WAEhCklG,EAAAA,GAAAA,MAAA,UAAQxjD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAAS+gB,QAASuwL,EAAO9hN,SAAA,EAC9DijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,QAC7B6iG,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,cAEH,EC1CX,IAAgB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,qBAAqB,OAAS,qBAAqB,cAAgB,6BCkF1M,GA9EamlC,IAQN,IARO,MACZ1vB,EAAK,aACLmmM,EAAY,gBACZC,EAAe,gBACf9B,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,kBACd8B,GACD32K,EACC,MAAOvE,EAAOm7K,IAAYpxL,EAAAA,EAAAA,UAAS,KAC5BsQ,EAAY+gL,IAAiBrxL,EAAAA,EAAAA,WAAS,GAkB7C,OAhBAP,EAAAA,EAAAA,YAAU,KACR,IAAIs9G,EAYJ,OAVI9mG,EAAQ,GAAK3F,EACfysG,EAAW7yE,aAAY,KACrBknJ,GAASE,GAAaA,EAAY,GAAE,GACnC,KAEc,IAAVr7K,IACPo7K,GAAc,GACdxmJ,cAAckyE,IAGT,IAAMlyE,cAAckyE,EAAS,GACnC,CAAC9mG,EAAO3F,KAGTqqD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,8BACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,0BAAwByV,MACrDwtE,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACE/hI,KAAK,OACLs5B,KAAK,OACL0hO,UAAW,EACX/5P,MAAOy5P,EACPx1J,SAAWljG,IAAQ24P,EAAgB34P,EAAEQ,OAAOvB,MAAM,EAClDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQ0uP,EAAc,qBAEzD34H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1BqB,EAAkBF,IAGlB7B,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,aAGA4gC,GAAS,GAAI0kD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,KAAMtf,GAAOy2I,eAAer8M,SAAA,CAAC,iBAAe4gC,EAAM,OAAU,MAC3FqiD,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACvC1Q,SAAUm7B,EACV1J,QAAUruE,IACRA,EAAEurD,iBACFo6G,GAAUpzG,EAAO,WACjBsmM,EAAS,IACTC,GAAc,EAAK,EACnBh8M,SAAC,iBAGA,EC9EX,IAAgB,MAAQ,oBAAoB,KAAO,mBAAmB,SAAW,uBAAuB,MAAQ,oBAAoB,OAAS,qBAAqB,KAAO,mBAAmB,OAAS,qBAAqB,OAAS,sBC+DnO,GA5DamlC,IAQN,IAADk9K,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IARQ,gBACZ3I,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,cACd2I,EAAa,iBACbC,EAAgB,qBAChBC,EAAoB,gBACpBC,GACD39K,EAEC,OACEmgD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2CACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO8nD,KAAK1tH,SAAA,CAAC,kCACGijF,EAAAA,GAAAA,KAAA,SAAS,6JAEzCA,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAoB,OAAf4oO,QAAe,IAAfA,GAAqB,QAANT,EAAfS,EAAiBx0P,YAAI,IAAA+zP,GAAM,QAANC,EAArBD,EAAuB/zP,YAAI,IAAAg0P,GAAK,QAALC,EAA3BD,EAA8B,UAAE,IAAAC,OAAjB,EAAfA,EAAkCpF,QAAS9qN,IAAI,cAE3D4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,UAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,iBAA8B,OAAf8iN,QAAe,IAAfA,GAAqB,QAANN,EAAfM,EAAiBx0P,YAAI,IAAAk0P,GAAM,QAANC,EAArBD,EAAuBl0P,YAAI,IAAAm0P,GAAK,QAALC,EAA3BD,EAA8B,UAAE,IAAAC,OAAjB,EAAfA,EAAkCtF,iBAE1Fn6H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,wGAG7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACE/hI,KAAK,OACLs5B,KAAK,OACL0hO,UAAW,EACX/5P,MAAOwgQ,EACPv8J,SAAWljG,IAAQ0/P,EAAiB1/P,EAAEQ,OAAOvB,MAAM,EACnDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQy1P,EAAe,qBAE1D1/H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1BoI,EAAqBF,IAGrB5I,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,eAGI,EC8RX,GA7Ue+iN,KACX,MAAOlQ,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,IACxClV,EAAOo2G,IAAYlhG,EAAAA,EAAAA,UAAS,KAC5Bl6D,EAAUkpP,IAAehvL,EAAAA,EAAAA,UAAS,KAClCk2L,EAAYC,IAAiBn2L,EAAAA,EAAAA,UAAS,kBACtCo2L,EAAaC,IAAkBr2L,EAAAA,EAAAA,UAAS,KACxCivL,EAASC,IAAclvL,EAAAA,EAAAA,UAAS,KAChCs2L,EAAcC,IAAmBv2L,EAAAA,EAAAA,UAASroE,OAAO0pC,SAASisB,KAAK9c,MAAM,QAAQ,IAC9E4+M,GAAkBrvL,EAAAA,EAAAA,QAAO,IAAI+yL,QAC5B17I,EAAai4I,IAAkBrvL,EAAAA,EAAAA,aAC/Bw2L,EAAQC,IAAaz2L,EAAAA,EAAAA,WAAS,IAC9BigG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChC02L,EAAY2B,IAAiBr4L,EAAAA,EAAAA,UAAS,KACtCuvL,EAAawD,IAAkB/yL,EAAAA,EAAAA,aAC/B22L,EAAcC,IAAmB52L,EAAAA,EAAAA,WAAS,IAC1Cs4L,EAAaC,IAAkBv4L,EAAAA,EAAAA,UAAS,KACxCmvL,EAAc0D,IAAmB7yL,EAAAA,EAAAA,UAAS,aAC1CixL,EAAcC,IAAmBlxL,EAAAA,EAAAA,UAAS,KAC1Cg4L,EAAeC,IAAoBj4L,EAAAA,EAAAA,UAAS,KAC5Cw4L,EAAUC,IAAez4L,EAAAA,EAAAA,UAAS,CAAC,IACnC04L,EAAYC,IAAgB34L,EAAAA,EAAAA,UAAS,KACrCm4L,EAAiBS,IAAsB54L,EAAAA,EAAAA,UAAS,IACjD3+B,EAAW2sF,MAGjBvuD,EAAAA,EAAAA,YAAU,KACN,MACMo5L,EADc,IAAI/yH,gBAAgBzkG,EAAS2pB,QAClB1yD,IAAI,YACnC,GAAIugQ,EAAY,CAAC,IAAD9B,EAAA+B,EACZ53F,EAAS23F,GACT,MAAME,EAA0D,QAAzChC,EAAGn1P,yeAAsC,EAAtCm1P,EAAwCvmN,MAAM,KACxE,IAAIwoN,GAAU,EACd,MAAMC,EAAwB,OAAVJ,QAAU,IAAVA,GAAyB,QAAfC,EAAVD,EAAYroN,MAAM,KAAK,UAAE,IAAAsoN,OAAf,EAAVA,EAA2BtoN,MAAM,KAAK,GAC1D,IAAK,IAAIz0C,EAAI,EAAGA,GAAqB,OAAjBg9P,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBzhQ,QAAQyE,IAAK,CAAC,IAADm9P,EAChD,GAAID,KAAiC,OAAjBF,QAAiB,IAAjBA,GAAsB,QAALG,EAAjBH,EAAoBh9P,UAAE,IAAAm9P,OAAL,EAAjBA,EAAwBhxN,QAAQ,CAChD2vC,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,mCACTstB,KAAM,WAEV+mO,GAAgB,GAChBoC,GAAU,EACV,KACJ,CACJ,CACIA,GACApC,GAAgB,EAExB,MAEI11F,EAAS,IACT01F,GAAgB,EACpB,GACD,CAACv1N,EAAS2pB,SAGb,MAUMmuM,GAAuB55L,EAAAA,EAAAA,cAAYxvC,UACrC8sJ,GAAW,GACX,IAAK,IAADu8E,EAAAC,EACA,MAAMC,QAAsB/7F,GAAe,SAAU,QACrDsf,GAAW,GACX,IAAI65E,EAA0B,OAAb4C,QAAa,IAAbA,GAAmB,QAANF,EAAbE,EAAe31P,YAAI,IAAAy1P,GAAM,QAANC,EAAnBD,EAAqBz1P,YAAI,IAAA01P,OAAZ,EAAbA,EAA2B3uP,KAAK1O,IACtC,CAAE,IAAOA,EAAE4rC,GAAI,OAAU5rC,EAAEzF,SAEtC8hQ,EAAc,IAAI3B,GACtB,CACA,MAAOn+P,IACHskL,GAAW,EACf,IACD,IAGGu2E,GAAiB7zL,EAAAA,EAAAA,cAAYxvC,UAC/B8sJ,GAAW,GACX,MAAMl5K,EAAO,CACTg4H,MAAO1E,aAAaC,QAAQ,aAEhC,IACI,MAAMm8H,QAAsB91F,GAAe,gBAAiB,OAAQ55J,GACpEovP,EAA4B,OAAbM,QAAa,IAAbA,OAAa,EAAbA,EAAe1vP,MAC9Bk5K,GAAW,EACf,CACA,MAAOtkL,IACHskL,GAAW,EACf,CAAC,GACF,IAGG08E,GAAwBh6L,EAAAA,EAAAA,cAAYxvC,UACtC8sJ,GAAW,GACX,IAAK,IAAD28E,EACA,MAAMC,QAA2Bl8F,GAAe,eAChDsf,GAAW,GACX07E,EAAiC,OAAlBkB,QAAkB,IAAlBA,GAAwB,QAAND,EAAlBC,EAAoB91P,YAAI,IAAA61P,OAAN,EAAlBA,EAA0B71P,KAC7C,CACA,MAAOpL,IACHskL,GAAW,EACf,CAAC,GACF,IAsJH,OAdAp9G,EAAAA,EAAAA,YAAU,KACN05L,GAAsB,GACvB,CAACA,KAGJ15L,EAAAA,EAAAA,YAAU,KACN2zL,GAAgB,GACjB,CAACA,KAGJ3zL,EAAAA,EAAAA,YAAU,KACN85L,GAAuB,GACxB,CAACA,KAGA5+H,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACK4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBjqH,EAAAA,GAAAA,MAACo6H,GAAK,CACF1hL,QAAQ,2BACRu7K,SAAS,QACTC,QAAQ,WAAUx5M,SAAA,EAElBijF,EAAAA,GAAAA,KAACo6H,GAAI,IACY,IAAhBxK,IAAqB5vH,EAAAA,GAAAA,KAAC28H,GAAI,CACvBnqM,MAAOA,EACPo2G,SAAUA,EACVp7J,SAAUA,EACVkpP,YAAaA,EACbkH,WAAYA,EACZC,cAAeA,EACfC,YAAaA,EACbC,eAAgBA,EAChBpH,QAASA,EACTC,WAAYA,EACZoH,aAAcA,EACdC,gBAAiBA,EACjBnH,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBmH,OAAQA,EACRC,UAAWA,EACXC,WAAYA,EACZnH,YAAaA,EACboH,aAAcA,EACdC,gBAAiBA,EACjBtH,sBAzOe/2P,IAC3BA,EAAEurD,iBAKF+uM,EAJqB,aAAjB1D,EAIY,WAHI,OAGO,EAoOfA,aAAcA,EACd0H,sBApLc9mO,MAAO+6B,EAAOhlD,EAAUswP,EAAanH,EAASqH,EAAcvG,EAAWyG,KACjG35E,GAAW,GACX,IAAIl5K,EAAO,CACPikC,GAAImoN,EACJvjN,KAAMyiN,GAEV,MAAMuJ,EAAW,CAAC,EAClBA,EAAShC,OAASA,EAClBgC,EAAS1tM,MAAQA,EACjB0tM,EAAS1yP,SAAWA,EACpB0yP,EAAS/1P,WAAU,GAAAwB,OAAMq0P,EAAY9gQ,OAAKyM,OAAGq0P,EAAY1wN,IACzD4wN,EAAS5wN,GAAK0wN,EAAY1wN,GAC1B4wN,EAASkB,OAAStD,EAClBoC,EAASmB,cAAgBrD,EACzBmC,EAAYD,GACZ,IACI,MAAMoB,QAA8Br8F,GAAe,gBAAiB,OAAQ55J,GAC5Ek5K,GAAW,GAC2B,OAAb,OAArB+8E,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB9sI,SAAkB6pI,GACzCxO,EAAe,GACf+G,EAAW,UACLkE,MAGNv7K,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,mCACTstB,KAAM,WAEVq/N,EAAW,UACLkE,IAEd,CACA,MAAO76P,IACHs/E,GAAgB,CACZlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,WAEVgtJ,GAAW,GACXqyE,EAAW,UACLkE,GACV,CAAC,EA2IWnzF,QAASA,IAEI,IAAhBioF,IACG5vH,EAAAA,GAAAA,KAACs9H,GAAO,CACJuB,OAAQA,KACJhP,EAAe,GACf+G,EAAW,GAAG,EAElBpkM,MAAOA,EACPssM,cAhJErnO,UAClB8sJ,GAAW,GACX,IACI,MAAMg9E,QAAsBt8F,GAAe,SAAU,OAAQi7F,GAC7D37E,GAAW,GACX87E,EAAakB,GACiB,OAAb,OAAbA,QAAa,IAAbA,OAAa,EAAbA,EAAe/sI,SACfq7H,EAAe,EAEvB,CACA,MAAO5vP,IACHs/E,GAAgB,CACZlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,WAEVgtJ,GAAW,EACf,CAAC,IAkIwB,IAAhBqrE,IACG5vH,EAAAA,GAAAA,KAACm9H,GAAI,CACD3qM,MAAOA,EACPomM,gBAAiBA,EACjB9B,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChB4B,aAAcA,EACdE,kBAtIMphO,UACtB8sJ,GAAW,GACX,IAAIl5K,EAAO,CACP+xP,UAAWlpN,EACXse,MAAO0tM,EAAS1tM,MAChBj7B,KAAM6oO,EAAW/0P,KAAKpB,QAAQstB,KAC9B8pO,cAAejB,EAAW/0P,KAAKpB,QAAQoB,KAAKg2P,eAEhD,IACI,MAAMhE,QAA0Bp4F,GAAe,aAAc,OAAQ55J,GACrEi1P,EAAmBjD,GACnB94E,GAAW,GACsB,MAA7B84E,EAAkB7oI,OAClBq7H,EAAe,GAGftwK,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,0CACTstB,KAAM,UAGlB,CACA,MAAOt3B,IACHskL,GAAW,GACXhlG,GAAgB,CACZlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,UAEd,CAAC,IA2GwB,IAAhBq4N,IACG5vH,EAAAA,GAAAA,KAACk9H,GAAO,CACJ1qM,MAAOA,EACPomM,gBAAiBA,EACjB9B,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChB2I,cAAeA,EACfC,iBAAkBA,EAClBC,qBAhHSnoO,UACzB8sJ,GAAW,GACX,IAAIl5K,EAAO,CACPmnD,MAAO0tM,EAAS1tM,MAChBte,KAAMA,GAEV,IACI,MAAMstN,QAA6Bv8F,GAAe,cAAe,OAAQ55J,GAE/B,IAADo2P,EAAAC,EAAzC,GADAn9E,GAAW,GACyB,MAAhCi9E,EAAqBhtI,OACrB,GAAkC,QAAlCitI,EAAID,EAAqBn2P,KAAKA,YAAI,IAAAo2P,GAAK,QAALC,EAA9BD,EAAiC,UAAE,IAAAC,GAAnCA,EAAqC18F,UAAW,CAAC,IAAD28F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC5Ch9F,EAAgC,OAApBw8F,QAAoB,IAApBA,GAA0B,QAANG,EAApBH,EAAsBn2P,YAAI,IAAAs2P,GAAM,QAANC,EAA1BD,EAA4Bt2P,YAAI,IAAAu2P,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuC78F,UAEvDA,GADAA,EAAYA,EAAU7wI,QAAQ,IAAK,MACbA,QAAQ,IAAK,KACnC90B,OAAO0pC,SAASisB,MAA2B,OAApBwsM,QAAoB,IAApBA,GAA0B,QAANM,EAApBN,EAAsBn2P,YAAI,IAAAy2P,GAAM,QAANC,EAA1BD,EAA4Bz2P,YAAI,IAAA02P,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuCpvM,KAAM,QAAUoyG,CAClF,KACK,CAAC,IAADi9F,EAAAC,EAAAC,EACD9iQ,OAAO0pC,SAASisB,KAA2B,OAApBwsM,QAAoB,IAApBA,GAA0B,QAANS,EAApBT,EAAsBn2P,YAAI,IAAA42P,GAAM,QAANC,EAA1BD,EAA4B52P,YAAI,IAAA62P,GAAK,QAALC,EAAhCD,EAAmC,UAAE,IAAAC,OAAjB,EAApBA,EAAuCvvM,GAClE,CAER,CACA,MAAO3yD,IACHskL,GAAW,GACXhlG,GAAgB,CACZlwC,MAAO,QACPplC,QAAShK,GAAEoL,KAAKpB,QAAQ,GAAGo7J,IAC3B9tI,KAAM,UAEd,CAAC,EAqFesoO,gBAAiBA,SAI9B,ECrVX,IAAgB,IAAM,kBAAkB,MAAQ,oBAAoB,KAAO,mBAAmB,OAAS,qBAAqB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,sBCgEzL,GA3Da39K,IAON,IAPO,MACZ1vB,EAAK,SACLo2G,EAAQ,gBACRkuF,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,cACdqL,GACDlgL,EACC,OACEmgD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,qBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,iGAK/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO67I,SAASzhN,UAC9BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,0BACNhnJ,KAAK,QACLs5B,KAAK,QACL0xI,YAAY,aACZxmC,KAAK,QACL9a,UAAQ,EACRzoH,MAAOszD,EACP2wC,SAAWljG,IAAQ2oK,EAAS3oK,EAAEQ,OAAOvB,MAAM,EAC3Cg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,QAAQ,OAIrDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,QAASuoD,EAAO,eAEnDwtE,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1B4K,EAAc5vM,IAGdskM,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,cAGDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO40I,KAAKx6M,UAC1BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAW8jC,GAAOnhE,KAAMuiC,GAAG,WAAUhnC,SAAC,4BAIzC,EC5DX,IAAgB,MAAQ,4BAA4B,KAAO,2BAA2B,KAAO,2BAA2B,KAAO,2BAA2B,OAAS,6BAA6B,OAAS,6BAA6B,cAAgB,oCAAoC,OAAS,8BCyFnS,GAtFqBmlC,IASd,IATe,MACpB1vB,EAAK,cACL4vM,EAAa,aACbzJ,EAAY,gBACZC,EAAe,kBACfC,EAAiB,gBACjB/B,EAAe,YACfh4I,EAAW,eACXi4I,GACD70K,EACC,MAAOvE,EAAOm7K,IAAYpxL,EAAAA,EAAAA,UAAS,KAC5BsQ,EAAY+gL,IAAiBrxL,EAAAA,EAAAA,WAAS,GAkB7C,OAhBAP,EAAAA,EAAAA,YAAU,KACR,IAAIs9G,EAYJ,OAVI9mG,EAAQ,GAAK3F,EACfysG,EAAW7yE,aAAY,KACrBknJ,GAASE,GAAaA,EAAY,GAAE,GACnC,KAEc,IAAVr7K,IACPo7K,GAAc,GACdxmJ,cAAckyE,IAGT,IAAMlyE,cAAckyE,EAAS,GACnC,CAAC9mG,EAAO3F,KAGTqqD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2BACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,0EAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO7qF,KAAKilB,SAAA,CAAC,uCACQijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAOyV,QAE5CwtE,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzuE,KAAK6I,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO3tF,OAAO+nB,UAC5BijF,EAAAA,GAAAA,KAAA,SACEzoG,KAAK,OACL0hO,UAAW,EACXh7P,KAAK,OACLiB,MAAOy5P,EACPx1J,SAAWljG,IAAQ24P,EAAgB34P,EAAEQ,OAAOvB,MAAM,EAClDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,OAAO,SAKtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,OAAQ0uP,EAAc,qBAEzD34H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+hB,KAAK3nF,UAC1BijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1BqB,EAAkBF,IAGlB7B,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,eAIF4gC,GAAS,GAAI0kD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,KAAMtf,GAAOy2I,eAAer8M,SAAA,CAAC,iBAAe4gC,EAAM,OAAU,MAC3FqiD,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACvC1Q,SAAUm7B,EACV1J,QAAUruE,IACRA,EAAEurD,iBACF42M,EAAc5vM,GACdsmM,EAAS,IACTC,GAAc,EAAK,EACnBh8M,SAAC,iBAGA,ECrFX,IAAgB,IAAM,yBAAyB,KAAO,0BAA0B,MAAQ,2BAA2B,KAAO,0BAA0B,OAAS,4BAA4B,MAAQ,2BAA2B,KAAO,0BAA0B,OAAS,6BCsEtQ,GAlEoBmlC,IAYb,IAZc,SACnB10E,EAAQ,gBACR60P,EAAe,YACf3L,EAAW,mBACX4L,EAAkB,gBAClBxL,EAAe,YACfh4I,EAAW,eACXi4I,EAAc,sBACdC,EAAqB,aACrBH,EAAY,qBACZ0L,EAAoB,MACpB/vM,GACD0vB,EACC,OACEmgD,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kBACvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO67I,SAASzhN,SAAA,EAC9BijF,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,eACNhnJ,KAAK,WACLs5B,KAAMs/N,EACN5tF,YAAY,WACZ18G,MAAI,EACJg8G,eAAgByuF,EAChB93P,MAAOsO,EACP21F,SAAWljG,IAAQy2P,EAAYz2P,EAAEQ,OAAOvB,MAAM,EAC9Cg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,WAAW,KAGtDn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,WAAYuD,EAAU,qBAEzDwyH,EAAAA,GAAAA,KAACgpC,GAAS,CACRnqF,UAAW8jC,GAAOyQ,MAClB6xB,MAAM,mBACNhnJ,KAAK,mBACLs5B,KAAK,WACL0xI,YAAY,WACZ/pK,MAAOmjQ,EACPl/J,SAAWljG,IAAQqiQ,EAAmBriQ,EAAEQ,OAAOvB,MAAM,EACrDg6P,OAAQA,KACNpC,EAAgBtyM,QAAQ20M,eAAe,mBAAmB,KAG9Dn5H,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO00I,OAAOt6M,SAC5B+5M,EAAgBtyM,QAAQv6C,QAAQ,mBAAoBo4P,EAAgB,eAAD12P,OAAiB6B,UAGzFwyH,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QACrC+gB,QAAUruE,IACRA,EAAEurD,iBACEsrM,EAAgBtyM,QAAQgzM,WAC1B+K,EAAqB/vM,EAAOhlD,EAAU60P,IAGtCvL,EAAgBtyM,QAAQkzM,eACxBX,EAAej4I,EAAc,GAC/B,EACA/hE,SACH,eACI,EC4HX,GAnLuBylN,KACnB,MAAOC,EAAaC,IAAkBh7L,EAAAA,EAAAA,UAAS,IACxClV,EAAOo2G,IAAYlhG,EAAAA,EAAAA,UAAS,IAC7BovL,GAAkBrvL,EAAAA,EAAAA,QAAO,IAAI+yL,KAAJ,CAAyB,CACpDryI,SAAU,CACN+B,GAAI,yDAGLpL,EAAai4I,IAAkBrvL,EAAAA,EAAAA,aAC/BigG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChCixL,EAAcC,IAAmBlxL,EAAAA,EAAAA,UAAS,KAC1Cl6D,EAAUkpP,IAAehvL,EAAAA,EAAAA,UAAS,KAClC26L,EAAiBC,IAAsB56L,EAAAA,EAAAA,UAAS,KAChDmvL,EAAc0D,IAAmB7yL,EAAAA,EAAAA,UAAS,aAC1Ci7L,EAAKC,IAAUl7L,EAAAA,EAAAA,UAAS,IACzBsuD,EAAWJ,KAGXwsI,EAAgB3qO,UAClB8sJ,GAAW,GACX,IAAIl5K,EAAO,CACPmnD,MAAOA,EACPj7B,KAAM,iBACNiyN,KAAM,YAEV,IACI,MAAMqZ,QAAsB59F,GAAe,UAAW,OAAQ55J,GAC9Dk5K,GAAW,GACmB,OAAb,OAAbs+E,QAAa,IAAbA,OAAa,EAAbA,EAAeruI,UACfj1C,GAAgB,CACZlwC,MAAO,UACPplC,QAAS,qBACTstB,KAAM,WAEVmrO,EAAe,GAEvB,CACA,MAAOziQ,IACHs/E,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,gDACTstB,KAAM,WAEVgtJ,GAAW,EACf,CAAC,EAoFL,OACIliD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACK4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBjqH,EAAAA,GAAAA,MAACo6H,GAAK,CACF1hL,QAAQ,8BACRu7K,SAAS,mBACTC,QAAQ,WAAUx5M,SAAA,EAElBijF,EAAAA,GAAAA,KAACo6H,GAAI,IACY,IAAhBqI,IACGziI,EAAAA,GAAAA,KAAC28H,GAAI,CACDnqM,MAAOA,EACPo2G,SAAUA,EACVkuF,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBqL,cAAeA,IAGN,IAAhBK,IACGziI,EAAAA,GAAAA,KAAC8iI,GAAY,CACTtwM,MAAOA,EACP4vM,cAAeA,EACfzJ,aAAcA,EACdC,gBAAiBA,EACjBC,kBAzGMphO,UACtBmrO,EAAO1uN,GACPqwI,GAAW,GACX,IAAIl5K,EAAO,CACP+xP,UAAWlpN,EACX3c,KAAM,iBACNi7B,MAAOA,GAEX,IACI,MAAM6qM,QAA0Bp4F,GAAe,aAAc,OAAQ55J,GACrEk5K,GAAW,GACuB,OAAb,OAAjB84E,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB7oI,QACnBkuI,EAAe,GAGfnjL,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,gDACTstB,KAAM,UAGlB,CACA,MAAOt3B,IAAI,IAAD88P,EAAAE,EACN14E,GAAW,GACXhlG,GAAgB,CACZlwC,MAAO,QACPplC,QAAU,OAADhK,SAAC,IAADA,IAAO,QAAN88P,EAAD98P,GAAGoL,YAAI,IAAA0xP,GAAY,QAAZE,EAAPF,EAAS9yP,QAAQ,UAAE,IAAAgzP,OAAlB,EAADA,EAAqB53F,IAC9B9tI,KAAM,UAEd,CAAC,EA6Eeu/N,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,IAGP,IAAhB0L,IACGziI,EAAAA,GAAAA,KAAC+iI,GAAW,CACRv1P,SAAUA,EACV60P,gBAAiBA,EACjB3L,YAAaA,EACb4L,mBAAoBA,EACpBxL,gBAAiBA,EACjBh4I,YAAaA,EACbi4I,eAAgBA,EAChBC,sBAjDW/2P,IAC3BA,EAAEurD,iBAKF+uM,EAJqB,aAAjB1D,EAIY,WAHI,OAGO,EA4CXA,aAAcA,EACd0L,qBAzFS9qO,MAAO+6B,EAAOhlD,EAAU60P,KACjD99E,GAAW,GACX,IAAIl5K,EAAO,CACPmnD,MAAOA,EACPhlD,SAAUA,EACVw1P,WAAYX,EACZjF,UAAWuF,GAEf,IACI,MAAMM,QAA6Bh+F,GAAe,iBAAkB,OAAQ55J,GAEjC,IAAD63P,EAAAC,EAA1C,GADA5+E,GAAW,GAC0B,OAAb,OAApB0+E,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBzuI,QACtBj1C,GAAgB,CACZlwC,MAAO,UACPplC,QAA6B,OAApBg5P,QAAoB,IAApBA,GAA0B,QAANC,EAApBD,EAAsB53P,YAAI,IAAA63P,GAAY,QAAZC,EAA1BD,EAA4Bj5P,QAAQ,UAAE,IAAAk5P,OAAlB,EAApBA,EAAwC99F,IACjD9tI,KAAM,YAEVy+F,EAAS,iBAGTz2C,GAAgB,CACZlwC,MAAO,QACPplC,QAAS,gDACTstB,KAAM,UAGlB,CACA,MAAOt3B,IAAI,IAADmjQ,EAAAC,EACN9+E,GAAW,GACXhlG,GAAgB,CACZlwC,MAAO,QACPplC,QAAU,OAADhK,SAAC,IAADA,IAAO,QAANmjQ,EAADnjQ,GAAGoL,YAAI,IAAA+3P,GAAY,QAAZC,EAAPD,EAASn5P,QAAQ,UAAE,IAAAo5P,OAAlB,EAADA,EAAqBh+F,IAC9B9tI,KAAM,UAEd,CAAC,EAwDei7B,MAAOA,SAIpB,EC1LX,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxGwgM,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,uBAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,0BAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,iCACNo1D,QAAQ,wCC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,sGC8DxI,GAzDgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,mEAEjDijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,uEAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2QAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+ZAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+ZAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0IAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2JAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,igBAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8UAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iOAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iTAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0ZAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,4aAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0KAIHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,iCACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,4NACrBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,OAAW,qEAErBijF,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAO,oCAAoC3oG,IAAI,oCAAoCmY,IAAI,eAE9F4wF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,yEC1C3D,GAT2BwmN,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxGpD,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,mBAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,oBAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,mCACNo1D,QAAQ,0CC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,qGC+FxI,GA1FgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,iEAEjDijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kWAEHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,8BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iQAIHijF,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAO,sCAAsC3oG,IAAI,sCAAsCmY,IAAI,eAElG4wF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,uCACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,oVAEtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,mHAA+GijF,EAAAA,GAAAA,KAAA,SAAM,yFACzDA,EAAAA,GAAAA,KAAA,SAAM,6GACcA,EAAAA,GAAAA,KAAA,SAAM,mEAChDA,EAAAA,GAAAA,KAAA,SAAM,0IACiEA,EAAAA,GAAAA,KAAA,SAAM,4GACpCA,EAAAA,GAAAA,KAAA,aAErGA,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,kIAEtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,+YACtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,6EAEtBijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,yBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,6FAGHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,uJAEtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,0JAEtBijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,mDACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0LAEHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,8EACtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,wHAEtBijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,yCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8OAGHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,wHAEtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,oHAEtBslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,QAAY,gPAEtBijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,0BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0JAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,2BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qKAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,mCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,uEC1E3D,GATsBymN,KAElBnhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxGpD,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,yBAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,0BAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,oCACNo1D,QAAQ,2CC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,2BC4DxI,GAzDgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,2BACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,oBAAuBijF,EAAAA,GAAAA,KAAA,SAAM,kGACyDA,EAAAA,GAAAA,KAAA,SAAM,iEAGtGqC,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,YAAeijF,EAAAA,GAAAA,KAAA,SAAM,2EAC0CA,EAAAA,GAAAA,KAAA,SAAM,0CAI/EA,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAO,uCAAuC3oG,IAAI,uCAAuCmY,IAAI,eAGpG4wF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,8BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gVAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oaAIHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,aACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,wEACmEijF,EAAAA,GAAAA,KAAA,SAAM,+CAC/BA,EAAAA,GAAAA,KAAA,SAAM,6DACQA,EAAAA,GAAAA,KAAA,SAAM,6DAIjEA,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,8BACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,yEAEoEijF,EAAAA,GAAAA,KAAA,SAAM,uDACxBA,EAAAA,GAAAA,KAAA,SAAM,0EACaA,EAAAA,GAAAA,KAAA,SAAM,0IAC0DA,EAAAA,GAAAA,KAAA,SAAM,mLAI9IA,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,iGCvCpB,GAT4B0mN,KAExBphI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxGpD,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,wCAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2CAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,oCACNo1D,QAAQ,2CC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,2BC6DxI,GA1DgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,MAAAtlF,SAAA,CAAI,sCAAoCzzC,KAAsC,yBAC9E+4H,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,qHAEwBijF,EAAAA,GAAAA,KAAA,SAAM,6CACUA,EAAAA,GAAAA,KAAA,SAAM,yQAGuCA,EAAAA,GAAAA,KAAA,SAAM,sUAIpCA,EAAAA,GAAAA,KAAA,SAAM,8EACYA,EAAAA,GAAAA,KAAA,SAAM,gPAGzBA,EAAAA,GAAAA,KAAA,SAAM,iEACAA,EAAAA,GAAAA,KAAA,SAAM,iLAEmBA,EAAAA,GAAAA,KAAA,SAAM,yHAEhEA,EAAAA,GAAAA,KAAA,SAAM,iOAGcA,EAAAA,GAAAA,KAAA,SAAM,4LAG3CA,EAAAA,GAAAA,KAAA,SAAM,meAMyBA,EAAAA,GAAAA,KAAA,SAAM,uEACmBA,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,SAAM,mUAMjFA,EAAAA,GAAAA,KAAA,UAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAO,uCAAuC3oG,IAAI,uCAAuCmY,IAAI,eAGpG4wF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,uBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0OCxCb,GAT6C2mN,KAEzCrhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBal0K,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,wBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECrCZ,GAAgC,wCAAhC,GAA2F,2CCA3F,SAAS1rP,GAAE/D,EAAEyX,GAAG,MAAMjU,EAAC+kF,GAAA,GAAKvoF,GAAG,IAAI,MAAM6lC,KAAKpuB,EAAE,iBAAiBzX,EAAE6lC,IAAI,OAAO7lC,EAAE6lC,IAAI1c,MAAMC,QAAQppB,EAAE6lC,SAAI,IAASpuB,EAAEouB,KAAKriC,EAAEqiC,GAAGpuB,EAAEouB,IAAIriC,EAAEqiC,GAAG9hC,GAAE/D,EAAE6lC,GAAGpuB,EAAEouB,IAAI,OAAOriC,CAAC,CAAC,MAAMxD,GAAE,CAACy0C,MAAM,IAAIC,OAAO,IAAI8vI,SAAS,KAAKxoB,SAAS,UAAU1gF,UAAU,GAAGqoL,aAAa,GAAG5zM,OAAO,KAAK6zM,UAAU,CAAC1gI,SAAQ,EAAG2gI,WAAU,EAAGC,MAAK,EAAGC,YAAW,EAAGC,mBAAmB,CAACC,gBAAgB,KAAKt1P,UAAU,CAAC,sCAAqC,GAAIu1P,kBAAkB,CAAC,EAAEC,sBAAsB,CAACnnL,SAAS,CAAC,EAAEl9B,MAAM,CAAC,GAAGskN,aAAa,CAACC,YAAY,CAAC,GAAGC,YAAW,EAAGC,UAAS,EAAGC,kBAAkB,GAAGC,iBAAiB,GAAGhyG,OAAM,EAAG1uB,KAAK,CAAC,EAAE2gI,YAAY,CAAC,CAAC7sO,KAAK,KAAK0jE,WAAW,MAAM,CAAC1jE,KAAK,KAAK0jE,WAAW,MAAM,CAAC1jE,KAAK,KAAK0jE,WAAW,OAAO,CAAC1jE,KAAK,KAAK0jE,WAAW,MAAM,CAAC1jE,KAAK,KAAK0jE,WAAW,MAAM,CAAC1jE,KAAK,KAAK0jE,WAAW,KAAK,CAAC1jE,KAAK,KAAK0jE,WAAW,MAAMopK,UAAU,IAAIC,QAAQ,IAAIC,2BAA2B,MAAMC,UAAU,CAACC,UAAU,GAAGC,WAAW,GAAGC,WAAW,GAAGC,aAAa,KAAKztP,GAAEmb,KAAK/lB,MAAM,gqCAAgqC,IAAIrJ,IAAE,EAAG,SAASqiC,GAAE9hC,GAAG,IAAI/D,EAAE,MAAMyX,EAAE,cAAc4c,KAAKtwB,GAAG,MAAM,6BAAN2H,OAAmC3H,EAAC,+BAAA2H,OAA8B,QAAQ1L,EAAE,MAAMyX,OAAE,EAAOA,EAAE,UAAK,IAASzX,EAAEA,EAAE,IAAG,8BAA6B,CAAC,SAASwX,GAAEzT,EAAE/D,GAAG,IAAIwD,EAAE,MAAMgU,EAAE,IAAIu3G,IAAI,GAADrjH,OAAI3H,GAAG,IAAK+kC,SAASisB,MAAMA,KAAK1pB,EAAEzY,KAAK/lB,MAAM,wTAAwTnG,EAAEoK,mBAAmB9Q,GAAGuD,EAAE,QAAQC,EAAEiU,GAAEujE,MAAMj3E,GAAGA,EAAE0+H,WAAW/7H,WAAM,IAASlD,EAAEA,EAAE,CAAC2hQ,IAAI,KAAKlwJ,IAAI,OAAO36D,EAAE,SAAD5uC,OAAUnI,EAAE4hQ,IAAG,WAAAz5P,OAAUnI,EAAE0xG,IAAG,KAAIx2F,EAAE,KAAD/S,OAAM,SAAS3H,EAAE/D,EAAEyX,GAAG,QAAG,IAAS1T,EAAE,MAAM,GAAG,MAAMP,EAAE,GAAGgU,EAAE,GAAG6zB,EAAE,GAAG3kC,EAAE,UAAUnD,EAAE,eAAe,IAAI,MAAM+2C,KAAKv2C,EAAEu2C,EAAEgkC,SAAS,OAAO9mE,EAAE5V,KAAK,8CAAD8J,OAA+C4uC,EAAEpmB,QAAQ,WAAWzc,GAAE,iBAAgB/Q,EAAEgvB,KAAK4kB,IAAIt6C,IAAIuD,EAAEmyB,KAAK4kB,GAAGjP,EAAEzpC,KAAK,+BAAD8J,OAAgC4uC,EAAC,yBAAwB,YAAY5kB,KAAK4kB,IAAI92C,EAAE5B,KAAKikC,GAAEyU,IAAI,MAAM,IAAI92C,KAAKgU,KAAK6zB,GAAGt7B,KAAK,KAAK,CAAnX,CAAqXs7B,EAAE,QAAQ9nC,EAAE0xG,IAAIvuG,GAAE,MAAK,MAAM,wBAANgF,QAA+B9E,EAAE,CAACw+P,QAAQ3mP,EAAE4mP,eAAe3+P,EAAE4+P,UAAUhrN,EAAEirN,YAAY/tP,IAAI8tP,UAAS,uBAAA55P,OAAsB9E,EAAE2+P,YAAW,oGAAA75P,OAAmG9E,EAAEw+P,QAAO,uzLAAqwL,IAAIx+P,CAAC,CAAmF,MAAMF,GAAE,MAAM8nB,WAAAA,CAAY/W,GAAG,IAAIouB,EAAE,GAAGplC,KAAK+kQ,IAAI,eAAD95P,QAAiB,SAAS,EAAEkC,KAAKH,UAAU,GAAGnB,SAAS,IAAIikC,UAAU,IAAK9vC,KAAKglQ,QAAO,EAAGhlQ,KAAKilQ,eAAe,GAAGjlQ,KAAKklQ,gBAAgBllQ,KAAKmlQ,iBAAiBznQ,KAAKsC,OAAOgX,EAAEouP,SAAS,MAAM,IAAIr3P,MAAM,4BAA4B,QAAQq3B,EAAEpuB,EAAE9I,iBAAY,IAASk3B,OAAE,EAAOA,EAAE,yDAAyDgkC,QAAQ0P,KAAK,kHAAkH9hE,EAAE9I,UAAU,uDAAuDlO,KAAK4jO,SAAStgO,GAAE/D,GAAEyX,GAAG,SAAShX,KAAK4jO,SAASjhG,YAAO,IAAS3iI,KAAK4jO,SAASyhC,iBAAiBrlQ,KAAK4jO,SAASyhC,eAAe,CAAC9uI,gBAAgB,YAAYv2H,KAAK4jO,SAAS5xE,QAAQjvJ,KAAIA,IAAE,EAAGqmE,QAAQvjB,IAAI,wEAAwE7lD,KAAKslQ,SAAS,CAACC,YAAAA,CAAajiQ,GAAGtD,KAAKwlQ,YAAYD,aAAajiQ,EAAE,CAACmiQ,YAAAA,CAAaniQ,GAAGtD,KAAKglQ,OAAO1hQ,EAAEtF,KAAKgC,MAAMA,KAAKilQ,eAAe9jQ,KAAKmC,EAAE,CAACoiQ,WAAAA,GAAc,OAAO1lQ,KAAK2lQ,mBAAmBzrM,MAAM,IAAIl6D,KAAK4lQ,eAAeF,eAAe,CAACG,qBAAAA,CAAsBviQ,GAAGtD,KAAK8lQ,uBAAuBvmQ,IAAIA,EAAEsmQ,sBAAsBviQ,EAAE,GAAG,CAACyiQ,UAAAA,CAAWziQ,EAAE/D,GAAGS,KAAKgmQ,0BAA0BhvP,IAAIA,EAAEivP,qBAAqB3iQ,EAAE/D,EAAE,GAAG,CAAC+4I,SAAAA,CAAUh1I,EAAE/D,GAAGS,KAAK8lQ,uBAAuB9uP,IAAIA,EAAEshI,UAAUh1I,EAAE/D,EAAE,GAAG,CAAC63I,WAAAA,CAAY9zI,EAAE/D,GAAGS,KAAK8lQ,uBAAuB9uP,IAAIA,EAAEogI,YAAY9zI,EAAE/D,EAAE,GAAG,CAAC8gI,KAAAA,CAAM/8H,GAAG,OAAOtD,KAAKwlQ,YAAYnlI,MAAM/8H,EAAE,CAAC4iQ,WAAAA,GAAc,OAAOlmQ,KAAK4jO,SAASt0K,MAAM,CAAC62M,SAAAA,CAAU7iQ,EAAE/D,EAAEyX,GAAGhX,KAAKwlQ,YAAYY,aAAa9iQ,EAAE/D,EAAEyX,EAAE,CAACmoE,MAAAA,GAASxgF,OAAOO,oBAAoB,SAASc,KAAKklQ,iBAAiBllQ,KAAKilQ,eAAe1jQ,OAAO,EAAEvB,KAAKilQ,eAAe3mQ,eAAeK,OAAOqB,KAAK+kQ,KAAK/kQ,KAAKqmQ,QAAQ16O,YAAY3rB,KAAKqmQ,QAAQ16O,WAAWsxB,YAAYj9C,KAAKqmQ,QAAQ,CAACC,qBAAAA,GAAwBtmQ,KAAK8lQ,uBAAuBxiQ,IAAIA,EAAEgjQ,uBAAuB,GAAG,CAACC,cAAAA,CAAejjQ,EAAE/D,GAAGS,KAAKwlQ,YAAYe,eAAejjQ,EAAE/D,EAAE,CAACinQ,gBAAAA,GAAmB,OAAOxmQ,KAAKwlQ,YAAYgB,kBAAkB,CAAC5tK,IAAAA,CAAKt1F,GAAGtD,KAAKwlQ,YAAYiB,UAAUnjQ,EAAE,CAAC+gF,IAAAA,CAAK/gF,EAAE/D,GAAGS,KAAKwlQ,YAAYkB,UAAU,CAACC,KAAKrjQ,EAAEsjQ,aAAarnQ,GAAG,CAACsnQ,cAAAA,CAAevjQ,GAAGtD,KAAKwlQ,YAAYqB,eAAevjQ,EAAE,CAACwjQ,mBAAAA,CAAoBxjQ,GAAGtD,KAAKwlQ,YAAYsB,oBAAoBxjQ,EAAE,CAACyjQ,iBAAAA,CAAkBzjQ,EAAE/D,EAAEyX,GAAGhX,KAAKwlQ,YAAYuB,kBAAkBzjQ,EAAE/D,EAAEyX,EAAE,CAACgwP,qBAAAA,CAAsB1jQ,EAAE/D,GAAGS,KAAKwlQ,YAAYwB,sBAAsB1jQ,EAAE/D,EAAE,CAAC0nQ,aAAAA,CAAc3jQ,GAAGtD,KAAK8lQ,uBAAuBvmQ,IAAIA,EAAE0nQ,cAAc3jQ,EAAE,GAAG,CAAC4jQ,YAAAA,CAAa5jQ,GAAG,OAAOtD,KAAK4lQ,eAAesB,aAAa5jQ,EAAE,CAAC6jQ,cAAAA,CAAe7jQ,GAAG,OAAOtD,KAAK4lQ,eAAeuB,eAAe7jQ,EAAE,CAAC8jQ,gBAAAA,CAAiB9jQ,GAAGtD,KAAK8lQ,uBAAuBvmQ,IAAIA,EAAE6nQ,iBAAiB9jQ,EAAE,GAAG,CAAC+jQ,iBAAAA,CAAkB/jQ,GAAGtD,KAAK8lQ,uBAAuBvmQ,IAAIA,EAAE8nQ,kBAAkB/jQ,EAAE,GAAG,CAACgkQ,mBAAAA,GAAsBtnQ,KAAKwlQ,YAAY8B,qBAAqB,CAACC,qBAAAA,GAAwBvnQ,KAAKwlQ,YAAY+B,uBAAuB,CAACC,cAAAA,GAAiB,OAAOxnQ,KAAKwlQ,YAAYiC,mBAAmB,CAACC,wBAAAA,GAA2B,OAAO1nQ,KAAKwlQ,YAAYkC,0BAA0B,CAACC,YAAAA,GAAe,OAAO3nQ,KAAKwlQ,YAAYmC,cAAc,CAACC,cAAAA,GAAiB,OAAO5nQ,KAAKwlQ,YAAYoC,gBAAgB,CAACC,cAAAA,CAAevkQ,GAAG,OAAOtD,KAAKwlQ,YAAYqC,eAAevkQ,EAAE,CAACwkQ,cAAAA,CAAexkQ,GAAG,OAAOtD,KAAKwlQ,YAAYsC,eAAexkQ,EAAE,CAACykQ,gBAAAA,CAAiBzkQ,GAAGtD,KAAK4lQ,eAAemC,iBAAiBzkQ,EAAE,CAAC0kQ,cAAAA,CAAezoQ,GAAGS,KAAK4jO,SAAStgO,GAAEtD,KAAK4jO,SAAS,CAAC11N,UAAU3O,IAAIS,KAAKgmQ,0BAA0B1iQ,IAAIA,EAAE0kQ,eAAezoQ,EAAE,GAAG,CAAC0oQ,qBAAAA,CAAsB3kQ,GAAGtD,KAAKgmQ,0BAA0BzmQ,IAAIA,EAAE0oQ,sBAAsB3kQ,EAAE,GAAG,CAAC4kQ,SAAAA,GAAY,OAAOloQ,KAAKwlQ,YAAYpC,WAAW,CAACC,IAAAA,GAAO,OAAOrjQ,KAAKwlQ,YAAYnC,MAAM,CAACF,SAAAA,GAAY,OAAOnjQ,KAAKwlQ,YAAYrC,WAAW,CAACgF,WAAAA,GAAc,OAAOnoQ,KAAKwlQ,YAAY2C,aAAa,CAACC,WAAAA,GAAc,OAAOpoQ,KAAKwlQ,YAAY4C,aAAa,CAACv9C,MAAAA,GAAS,OAAO7qN,KAAKwlQ,YAAY36C,QAAQ,CAACw9C,SAAAA,CAAU/kQ,GAAGtD,KAAKwlQ,YAAY6C,UAAU/kQ,EAAE,CAACglQ,UAAAA,GAAa,OAAOtoQ,KAAKwlQ,YAAY8C,YAAY,CAACC,WAAAA,CAAYjlQ,EAAE/D,GAAG,OAAOS,KAAK4lQ,eAAe2C,YAAYjlQ,EAAE/D,EAAE,CAACipQ,QAAAA,GAAW,OAAOxoQ,KAAK4lQ,eAAe4C,UAAU,CAACC,cAAAA,GAAiBzoQ,KAAK8lQ,uBAAuBxiQ,IAAIA,EAAEmlQ,gBAAgB,GAAG,CAACC,mBAAAA,GAAsB,OAAO1oQ,KAAKwlQ,YAAYkD,qBAAqB,CAACC,mBAAAA,GAAsB,OAAO3oQ,KAAKwlQ,YAAYmD,qBAAqB,CAACC,eAAAA,CAAgBtlQ,GAAGtD,KAAKwlQ,YAAYoD,gBAAgBtlQ,EAAE,CAACulQ,aAAAA,GAAgB,OAAO7oQ,KAAKwlQ,YAAYqD,eAAe,CAACC,UAAAA,GAAa,OAAO9oQ,KAAKwlQ,YAAYsD,YAAY,CAACC,aAAAA,GAAgB,OAAO/oQ,KAAKwlQ,YAAYuD,eAAe,CAACC,yBAAAA,CAA0B1lQ,GAAGtD,KAAKwlQ,YAAYwD,0BAA0B1lQ,EAAE,CAAC2lQ,YAAAA,CAAa3lQ,GAAGtD,KAAKwlQ,YAAYyD,aAAa3lQ,EAAE,CAAC4lQ,UAAAA,GAAa,OAAOlpQ,KAAKwlQ,YAAY0D,YAAY,CAACC,YAAAA,GAAe,OAAOnpQ,KAAKwlQ,YAAY2D,cAAc,CAACC,aAAAA,GAAgB,OAAOppQ,KAAKwlQ,YAAY4D,eAAe,CAACC,QAAAA,GAAW,OAAOrpQ,KAAKwlQ,YAAY6D,UAAU,CAACC,aAAAA,GAAgB,OAAOtpQ,KAAKwlQ,YAAY8D,eAAe,CAACC,iBAAAA,CAAkBjmQ,EAAE/D,GAAGS,KAAKwlQ,YAAY+D,kBAAkBjmQ,EAAE/D,EAAE,CAACiqQ,cAAAA,GAAiB,OAAOxpQ,KAAK4lQ,eAAe4D,gBAAgB,CAACC,gBAAAA,GAAmB,OAAOzpQ,KAAKwlQ,YAAYiE,kBAAkB,CAACC,IAAAA,GAAO,OAAO1pQ,KAAKwlQ,YAAYkE,MAAM,CAACC,IAAAA,GAAO,OAAO3pQ,KAAKwlQ,YAAYmE,MAAM,CAACC,eAAAA,GAAkB5pQ,KAAKwlQ,YAAYoE,iBAAiB,CAACj/G,cAAAA,GAAiB3qJ,KAAKwlQ,YAAY76G,gBAAgB,CAACk/G,oBAAAA,CAAqBvmQ,GAAG,OAAOtD,KAAKwlQ,YAAYqE,qBAAqBvmQ,EAAE,CAACwmQ,2BAAAA,GAA8B,OAAO9pQ,KAAK4lQ,eAAemE,gCAAgC,CAACC,qBAAAA,GAAwB,OAAOhqQ,KAAK4lQ,eAAeqE,0BAA0B,CAACC,UAAAA,GAAa,OAAOlqQ,KAAK4lQ,eAAeuE,eAAe,CAACC,eAAAA,GAAkB,OAAOpqQ,KAAK4lQ,eAAeyE,oBAAoB,CAACC,yBAAAA,GAA4B,OAAOtqQ,KAAK4lQ,eAAe2E,8BAA8B,CAACC,mBAAAA,GAAsB,OAAOxqQ,KAAKwlQ,YAAYgF,qBAAqB,CAAChF,SAAAA,GAAY,OAAOxlQ,KAAK4lQ,eAAe6E,cAAc,CAAC7E,YAAAA,GAAe,OAAO5lQ,KAAKqmQ,QAAQhyM,aAAa,CAAC2xM,wBAAAA,CAAyB1iQ,GAAGtD,KAAKglQ,OAAO1hQ,EAAEtD,KAAK4lQ,gBAAgB5lQ,KAAK2lQ,mBAAmBzrM,MAAM,KAAK52D,EAAEtD,KAAK4lQ,eAAe,GAAG,CAACE,qBAAAA,CAAsBxiQ,GAAGtD,KAAKgmQ,0BAA0BzmQ,IAAIA,EAAEmrQ,kBAAkB,IAAIpnQ,EAAEtD,KAAKwlQ,cAAc,GAAG,CAACL,gBAAAA,GAAmBnlQ,KAAK4jO,SAASigC,aAAa7jQ,KAAKqmQ,QAAQ/lN,MAAMrM,OAAOt1C,OAAOu+H,YAAY,KAAKp6H,IAAG42B,YAAY,KAAK15B,KAAKqmQ,QAAQ/lN,MAAMrM,OAAOt1C,OAAOu+H,YAAY,IAAI,GAAG,IAAI,CAACooI,OAAAA,GAAU,IAAIhiQ,EAAE/D,EAAE,MAAMyX,EAAE,QAAQzX,EAAE,QAAQ+D,EAAEtD,KAAK4jO,SAASogC,wBAAmB,IAAS1gQ,OAAE,EAAOA,EAAEy2C,SAAS,4CAAuC,IAASx6C,GAAGA,GAAGwD,EAAEqiC,GAAGplC,KAAK2qQ,SAAS3zP,GAAGhX,KAAK4jO,SAASgnC,cAAcxhM,QAAQ0P,KAAK,uHAAuH,MAAM/hE,EAAE/W,KAAK4jO,SAASgnC,cAAc5qQ,KAAK4jO,SAAS/oJ,UAAUjwC,EAAE,iBAAiB7zB,EAAEnY,SAASmkO,eAAehsN,GAAGA,EAAE,GAAG,OAAO6zB,EAAE,MAAM,IAAI78B,MAAM,+BAAD9C,OAAgCjL,KAAK4jO,SAAS/oJ,YAAajwC,EAAEmS,UAAUh6C,EAAE/C,KAAKqmQ,QAAQz7N,EAAE0lE,cAAc,IAADrlG,OAAKjL,KAAK+kQ,MAAO,MAAM9+P,EAAEjG,KAAKqmQ,QAAQrvP,IAAI/Q,EAAEouD,eAAepuD,EAAEouD,cAAcz1D,SAAS84I,OAAOzxI,EAAEouD,cAAcz1D,SAASutC,MAAM/G,GAAGn/B,EAAEouD,cAAcz1D,SAASqiI,SAAS73D,QAAQ0P,KAAK,qIAAqI94E,KAAK4jO,SAASkgC,UAAU9jQ,KAAK4jO,SAASigC,cAAc59P,EAAEq6C,MAAMtM,MAAM,OAAOh0C,KAAK4jO,SAASigC,aAAa59P,EAAEq6C,MAAMrM,OAAO,SAASt1C,OAAOM,iBAAiB,SAASe,KAAKklQ,iBAAiBllQ,KAAKklQ,kBAAkBllQ,KAAK2lQ,mBAAmB,IAAIpzO,SAASjvB,IAAI,MAAM/D,EAAEA,KAAK0G,EAAE/G,oBAAoB,OAAOK,GAAE,GAAI+D,GAAG,EAAE2C,EAAEhH,iBAAiB,OAAOM,GAAE,EAAG,IAAIS,KAAK2lQ,mBAAmBzrM,MAAM,KAAKl6D,KAAK4lQ,eAAeiF,aAAa,KAAK7qQ,KAAKglQ,QAAO,EAAG,IAAI,MAAM1hQ,KAAKtD,KAAKilQ,eAAe,IAAI3hQ,EAAEtF,KAAKgC,KAAK,CAAC,MAAMsD,GAAG8lE,QAAQp2C,MAAM1vB,EAAE,CAACtD,KAAK4lQ,eAAekF,wBAAwB,GAAG,GAAG,CAACH,OAAAA,CAAQrnQ,GAAG,MAAM/D,EAAEZ,OAAO,GAAGY,EAAES,KAAK+kQ,KAAK,CAACK,SAASplQ,KAAK4jO,SAASwhC,SAAS2F,iBAAiB/qQ,KAAK4jO,SAASonC,mBAAmBhrQ,KAAK4jO,SAASmnC,iBAAiBE,cAAcjrQ,KAAK4jO,SAASsnC,gBAAgBlrQ,KAAK4jO,SAASqnC,cAAc/8P,UAAUlO,KAAK4jO,SAAS11N,UAAUi9P,iBAAiBnrQ,KAAK4jO,SAAS6/B,kBAAkB2H,qBAAqBprQ,KAAK4jO,SAAS8/B,sBAAsB2H,iBAAiBrrQ,KAAK4jO,SAASmgC,kBAAkBuH,gBAAgBtrQ,KAAK4jO,SAASogC,iBAAiBL,aAAa3jQ,KAAK4jO,SAAS2nC,eAAevrQ,KAAK4jO,SAAS+/B,aAAa6H,WAAWxrQ,KAAK4jO,SAAS4nC,WAAWnH,UAAUrkQ,KAAK4jO,SAASygC,UAAU/gI,KAAKtjI,KAAK4jO,SAAStgG,KAAKmoI,mBAAmBzrQ,KAAK4jO,SAAS6nC,mBAAmBC,cAAc1rQ,KAAK4jO,SAAS8nC,cAAcC,aAAa3rQ,KAAK4jO,SAASgoC,cAAcC,cAAc7rQ,KAAK4jO,SAASkoC,gBAAgBC,gBAAgB/rQ,KAAK4jO,SAASooC,kBAAkB3G,eAAerlQ,KAAK4jO,SAASyhC,eAAe4G,gBAAgBjsQ,KAAK4jO,SAASsoC,iBAAiBC,oBAAoBnsQ,KAAK4jO,SAASwoC,yBAAyBC,2BAA2BrsQ,KAAK4jO,SAAS0oC,8BAA8BC,wBAAwBvsQ,KAAK4jO,SAAS4oC,2BAA2BC,wBAAwBzsQ,KAAK4jO,SAAS8oC,0BAA0BC,qBAAqB3sQ,KAAK4jO,SAASgpC,uBAAuBC,YAAY7sQ,KAAK4jO,SAASkpC,aAAaC,kBAAkB/sQ,KAAK4jO,SAASopC,mBAAmBC,UAAUjtQ,KAAK4jO,SAASqpC,UAAUC,gBAAgBltQ,KAAK4jO,SAASupC,kBAAkBntQ,KAAK4jO,SAASwpC,WAAW7tQ,EAAES,KAAK+kQ,KAAKsI,aAAa,CAAC1G,KAAK3mQ,KAAK4jO,SAASwpC,YAAYptQ,KAAK4jO,SAAS0pC,uBAAuB/tQ,EAAES,KAAK+kQ,KAAKwI,yBAAyBvtQ,KAAK4jO,SAAS0pC,2BAA2B,IAAIttQ,KAAK4jO,SAASkoC,kBAAkB9rQ,KAAK4jO,SAASz6M,OAAO,MAAM,IAAIpb,MAAM,kFAAkF,GAAG/N,KAAK4jO,SAASs/B,eAAeljQ,KAAK4jO,SAASs/B,aAAarlL,SAAS,MAAMzU,QAAQ0P,KAAK,+DAA+D94E,KAAK4jO,SAASt0K,OAAO,CAAC,MAAMhsD,EAAE+M,mBAAmBrQ,KAAK4jO,SAASt0K,QAAQt4C,GAAEkoE,WAAW3/E,GAAGA,EAAEyiI,WAAW1+H,KAAK,IAAI8lE,QAAQ0P,KAAK,kDAAkD94E,KAAK4jO,SAASt0K,OAAO,KAAK,CAAC,MAAMvsD,EAAEgU,GAAE/W,KAAK4jO,SAASs/B,cAAc,GAAGljQ,KAAK4jO,SAASt0K,QAAQ,IAAIlqB,EAAE,IAAIkpF,IAAI,eAAe,GAAGhrH,EAAE,CAAC,MAAMA,EAAE,IAAI8nI,KAAK,CAACroI,GAAG,CAAC8zB,KAAK,cAAct3B,EAAE+uH,IAAIk/I,gBAAgBlqQ,GAAG8hC,EAAE,IAAIkpF,IAAI/uH,EAAE,CAAC,MAAMqrC,EAAE,UAAUv6B,mBAAmBrQ,KAAK4jO,SAASz6M,QAAQ,IAAI,aAAa9Y,mBAAmBrQ,KAAK4jO,SAAS7/C,WAAW/jL,KAAK4jO,SAAS6pC,WAAW,cAAcp9P,mBAAmBrQ,KAAK4jO,SAAS6pC,WAAWh6O,QAAQ,IAAI,KAAK,KAAKzzB,KAAK4jO,SAAS8pC,eAAe,kBAAkBr9P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAAS8pC,iBAAiB,IAAI,cAAcr9P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAASu/B,aAAanjQ,KAAK4jO,SAAS+pC,gBAAgB,mBAAmBt9P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAAS+pC,kBAAkB,IAAI,eAAet9P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAASqgC,cAAc,WAAW5zP,mBAAmBrQ,KAAK4jO,SAASt0K,QAAQ,QAAQj/C,mBAAmBrQ,KAAK+kQ,KAAK,aAAa10P,mBAAmB7P,OAAOR,KAAK4jO,SAASsgC,YAAY,WAAW7zP,mBAAmB7P,OAAOR,KAAK4jO,SAASugC,WAAWnkQ,KAAK4jO,SAASgqC,mBAAmB,qBAAqBv9P,mBAAmBrQ,KAAK4jO,SAASgqC,oBAAoB,KAAK5tQ,KAAK4jO,SAASwgC,2BAA2B,qBAAqB/zP,mBAAmBrQ,KAAK4jO,SAASwgC,4BAA4B,KAAKpkQ,KAAK4jO,SAASiqC,eAAe,cAAcx9P,mBAAmBrQ,KAAK4jO,SAASiqC,gBAAgB,KAAK7tQ,KAAK4jO,SAASkqC,mBAAmB,qBAAqBz9P,mBAAmBrQ,KAAK4jO,SAASkqC,oBAAoB,KAAK9tQ,KAAK4jO,SAASmqC,gBAAgB,kBAAkB19P,mBAAmB7P,OAAOR,KAAK4jO,SAASmqC,kBAAkB,IAAI,UAAU19P,mBAAmB7P,OAAOR,KAAK4jO,SAAS5xE,SAAShyJ,KAAK4jO,SAASoqC,aAAa,gBAAgB39P,mBAAmBrQ,KAAK4jO,SAASoqC,cAAc,KAAKhuQ,KAAK4jO,SAASroE,SAAS,aAAalrJ,mBAAmBrQ,KAAK4jO,SAASroE,UAAU,KAAKv7J,KAAK4jO,SAASqqC,kBAAkB,oBAAoB59P,mBAAmB7P,OAAOR,KAAK4jO,SAASqqC,oBAAoB,KAAKjuQ,KAAK4jO,SAASsqC,4BAA4B,eAAe79P,mBAAmB7P,OAAOR,KAAK4jO,SAASsqC,8BAA8B,KAAKluQ,KAAK4jO,SAASuqC,gBAAgB,mBAAmB99P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAASuqC,kBAAkB,KAAKnuQ,KAAK4jO,SAASjhG,MAAM,UAAUtyH,mBAAmB7P,OAAOR,KAAK4jO,SAASjhG,QAAQ,KAAK3iI,KAAK4jO,SAAS4oC,2BAA2B,+BAA+Bn8P,mBAAmB7P,OAAOR,KAAK4jO,SAAS4oC,6BAA6B,KAAKxsQ,KAAK4jO,SAASwqC,WAAW,eAAe/9P,mBAAmB8hB,KAAKpmB,UAAU/L,KAAK4jO,SAASwqC,aAAa,IAAI,MAAM,CAAC,oBAADnjQ,OAAqBjL,KAAK+kQ,IAAG,YAAA95P,OAAWjL,KAAK+kQ,IAAG,WAAA95P,OAAUm6B,EAAEkvB,KAAI,2BAAArpD,OAA0B2/B,EAAC,WAAA3/B,OAAUjL,KAAK4jO,SAASkgC,UAAU9jQ,KAAK4jO,SAASigC,WAAW,GAAG,UAAD54P,OAAWjL,KAAK4jO,SAAS5vL,MAAK,cAAA/oC,OAAajL,KAAK4jO,SAAS3vL,OAAM,KAAG,yIAAwIlxC,EAAE,GAAG,oBAAoBpE,SAASA,OAAO0vQ,YAAY1vQ,OAAO0vQ,aAAa,CAAC,EAAE1vQ,OAAO0vQ,YAAYt4L,QAAj5Y,WAAa,MAAM,8DAA8D,GAA20Y,MAAMjzE,KAAI,oBAAoBnE,SAASA,OAAO20F,YAAY30F,OAAO20F,UAAUC,YAAY50F,OAAO20F,UAAUC,UAAUx5C,SAAS,SCCjtrB,IAAIu0N,GAAQ,GACZ,MAEA,IACE,mBAAMC,CAAcC,EAAY1zK,EAAY2zK,EAAUtxO,EAAK2kM,GAAa,IAAD4sC,EACrE,MAAMC,EAmFV,SAA6BH,GAC3B,MAAOI,EAAUzlP,GAAUqlP,EAAWK,UAAUr3N,MAAM,KAAK,GAAGA,MAAM,KACpE,MAAM,GAANvsC,OAAU2jQ,EAAQ,KAAA3jQ,OAAIke,EACxB,CAtF0B2lP,CAAoBN,GAGpCO,EAAS,CACbJ,gBACAxxO,MACA29D,aACA0zK,aACAQ,SAAiD,QAAxCN,EAAAO,GAAgBjhJ,QAAQwgJ,EAAWjxQ,aAAK,IAAAmxQ,OAAA,EAAxCA,EAA0CM,UAAW,KAC9D/tQ,SAAUwtQ,GAEZH,GAAMntQ,KAAK4tQ,GAGX,IACIlhG,SADaohG,GAAgBC,kBACfrhG,OAClB,MAAMnoB,EAAU8oH,EAAWjxQ,KAAKk2B,QAAQ,KAAM,KAG9Co6I,EAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,YACRi4H,QAASA,EACT5qD,WAAYA,EACZq0K,QAAS,OAEb,EAEA,qBAAMC,CAAgBjyO,GACpBmxO,GAAQ,GACR,IAAI3jQ,QAAaskQ,GAAgBC,iBAC7BrhG,EAASljK,EAAKkjK,OACdnoB,EAAU/6I,EAAK0kQ,WACnBxhG,EAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,cACRi4H,QAASA,EAAQ,GAAG4pH,YACpBx0K,WAAY4qD,EAAQ,GAAG5qD,WACvBq0K,QAAS,OAEb,GAGK,SAASI,GAAYhwQ,GAC1B,MAAMoL,EAAO,CACX6kQ,GAAIjwQ,EAAEiwQ,GACN1qG,MAAOxyI,WAAW/yB,EAAEulK,OACpBxxB,MAAO/zI,EAAE+zI,MACToE,KAAMn4I,EAAEm4I,KACR/3H,KAAMpgB,EAAEogB,KACRC,IAAKrgB,EAAEqgB,IACPqhH,MAAO1hI,EAAE0hI,OAGXqtI,GAAMxtQ,SAAQ4uM,IACZ,MAAM+/D,EAQV,SAAmB9kQ,EAAM+kM,GACvB,MAAMs/D,EAAUt/D,EAAIs/D,SAAW,CAAC,EAChC,IAAIS,EACAC,EAAwB,IAAV/kQ,EAAK6kQ,GAGvB,GAAIE,GAAeV,EAAQ51O,MAAQ,GACjC,OAAO,KAYT,OAVAq2O,EAAa,CACXr2O,KAAMs2O,EAENh4H,KAAM/sI,EAAK+sI,KACX/3H,KAAMhV,EAAKgV,KACXC,IAAKjV,EAAKiV,IACVqhH,MAAOt2H,EAAKs2H,MACZx7C,OAAQnzD,WAAW3nB,EAAK2oI,QAGnBm8H,CACT,CA5BuBE,CAAUhlQ,EAAM+kM,GAC/B+/D,IACF//D,EAAIzuM,SAASwuQ,GACb//D,EAAIs/D,QAAUS,EAChB,GAEJ,CCjEA,MAAM5hG,GAAS,IAAI+B,UAAUhnK,6BAE7B,IAAIolH,GAAU,CAAC,EACf,IAAI4hJ,GAAc,GAElB,UACE5hJ,QAASA,GAET,aAAM6hJ,CAAQrB,EAAY1zK,EAAYq0K,EAAS/6O,GAC7C,IACE,MAAM07O,EAAatB,EAAWjxQ,KAAKk2B,QAAQ,KAAM,KAiDjD,OA9CAo6I,GAAOwC,OAAS,KACdu/F,GAAY,GAAK,CACf,YAAeE,EACf,WAAch1K,GAEhB+yE,GAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,YACRi4H,QAASoqH,EACT,WAAch1K,EACd,QAAWq0K,IACV,EAELthG,GAAO4C,QAAU,KACf5C,GAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,cACRi4H,QAASkqH,GAAY,GAAGN,YAAc,IAAMM,GAAY,GAAG90K,aAC1D,EAGL+yE,GAAOv3I,QAAWtD,IAChB66I,GAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,cACRi4H,QAASkqH,GAAY,GAAGN,YAAc,IAAMM,GAAY,GAAG90K,aAC1D,EAGD+yE,GAAOn3I,aAAek5I,UAAUmgG,OAC9BH,GAAYtxQ,OAAS,GACvBuvK,GAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,cACRi4H,QAASkqH,GAAY,GAAGN,YAAc,IAAMM,GAAY,GAAG90K,cAG/D80K,GAAY,GAAK,CACf,YAAeE,EACf,WAAch1K,GAEhB+yE,GAAOp1B,KAAKtmH,KAAKpmB,UAAU,CACzB0hB,OAAQ,YACRi4H,QAASoqH,EACT,WAAch1K,EACd,QAAWq0K,MAKR,IAAI58O,SAAQ,CAACwR,EAAS0uD,KAC3Bo7E,GAAOloD,UAAa9kH,IAClB,MAAMmvQ,EAAW79O,KAAK/lB,MAAMvL,EAAM8J,MAClC,GAA6B,QAAzBqlQ,EAASzmQ,QAAQstB,KACnB,IAAK,IAADo5O,EAAAC,EAAAC,EAAAC,EAAAC,EACF,IAAY,QAARJ,EAAA3B,GAAM,UAAE,IAAA2B,GAAY,QAAZC,EAARD,EAAUzB,kBAAU,IAAA0B,GAAM,QAANC,EAApBD,EAAsB3yQ,YAAI,IAAA4yQ,OAAlB,EAARA,EAA4B14N,iBAAyB,OAARu4N,QAAQ,IAARA,GAAiB,QAATI,EAARJ,EAAUzmQ,eAAO,IAAA6mQ,GAAM,QAANC,EAAjBD,EAAmB9oG,YAAI,IAAA+oG,OAAf,EAARA,EAAyB54N,eAUxE83N,GATW,CACTC,GAAIQ,EAASzmQ,QAAQoB,KAAKyuB,KAC1B0rI,MAAOkrG,EAASzmQ,QAAQoB,KAAKs2H,MAC7BqS,MAAO08H,EAASzmQ,QAAQoB,KAAK86E,OAC7B7lE,IAAK0S,WAAW09O,EAASzmQ,QAAQoB,KAAKiV,KACtCD,KAAM2S,WAAW09O,EAASzmQ,QAAQoB,KAAKgV,MACvC+3H,KAAMplH,WAAW09O,EAASzmQ,QAAQoB,KAAK+sI,MACvCzW,MAAO+uI,EAASzmQ,QAAQoB,KAAKs2H,QAIjC,MACF,CACA,MAAOjuG,GACL,MACF,CAGF,GAAIg9O,GAAmC,YAAvBA,EAASzmQ,QAAQwN,EAC/BgtB,EAAQ,SAGV,GAAIisO,EAASzmQ,QAAQoB,KAAKrM,OAAQ,CAEhC,IAAIshN,EADWowD,EAASzmQ,QAAQoB,KACd+G,KAAKoK,IAAE,CACvBsd,KAAgB,IAAVtd,EAAGsd,KACTxZ,IAAK0S,WAAWxW,EAAG8D,KACnBD,KAAM2S,WAAWxW,EAAG6D,MACpB+3H,KAAMplH,WAAWxW,EAAG47H,MACpBzW,MAAO3uG,WAAWxW,EAAGmlH,OACrBx7C,OAAQnzD,WAAWxW,EAAG2pE,YAGxB,GAAIrxD,EAAO,CACT,MAAM46O,EAAUpvD,EAAKA,EAAKthN,OAAS,GACnC0vH,GAAQwgJ,EAAWjxQ,MAAQ,CAAEyxQ,UAC/B,CACAjrO,EAAQ67K,EACV,EAED,GAIL,CAAE,MAAO5sL,GACP,MAAQ,EACV,CACF,EACA+D,eAAoBm4O,UACX,CACL,OAAUrhG,GACV,WAAc+hG,MCjHdU,GAAuB,CAC3B,IACA,IACA,IACA,KACA,KACA,KACA,MACA,MACA,MACA,IACA,IACA,KAGIxmL,GAAS,CACbymL,sBAAuBD,IAGzB,IACE/qL,QAAS,SAAUnvD,GACjBA,EAAG0zD,GACL,EAEA0mL,cAAe,SACbV,EACAW,EACAC,GACC,IAADC,EAAAC,EAAAC,EAAAC,EAEIC,EAAuB,OAAVjB,QAAU,IAAVA,OAAU,EAAVA,EAAYt4N,MAAM,QACnC,IAAIw5N,EAAmB,OAALpwF,SAAK,IAALA,IAAiB,QAAZ+vF,EAAL/vF,GAAOQ,kBAAU,IAAAuvF,GAAS,QAATC,EAAjBD,EAAmBvpG,eAAO,IAAAwpG,GAAkB,QAAlBC,EAA1BD,EAA4B1pG,wBAAgB,IAAA2pG,GACiE,QADjEC,EAA5CD,EACdI,SAAQC,IAAK,IAAAC,EAAA,OAAS,OAALD,QAAK,IAALA,GAAgG,QAA3FC,EAALD,EAAO32L,MAAKv3E,IAAC,IAAAouQ,EAAAC,EAAAC,EAAAC,EAAA,OAAK,OAADvuQ,QAAC,IAADA,GAAW,QAAVouQ,EAADpuQ,EAAGqmH,gBAAQ,IAAA+nJ,OAAV,EAADA,EAAa35N,kBAA4B,OAAVs5N,QAAU,IAAVA,GAAe,QAALM,EAAVN,EAAa,UAAE,IAAAM,GAAY,QAAZC,EAAfD,EAAiB75N,MAAM,YAAI,IAAA85N,GAAK,QAALC,EAA3BD,EAA8B,UAAE,IAAAC,OAAtB,EAAVA,EAAkC95N,cAAc,eAAA05N,OAA3F,EAALA,EAAkG/pG,OAAO,WAAC,IAAA0pG,OADxG,EAALA,EAEdv2L,MAAK57C,IAAK,IAAA6yO,EAAAC,EAAA,OAAS,OAAL9yO,QAAK,IAALA,GAAW,QAAN6yO,EAAL7yO,EAAO2oI,YAAI,IAAAkqG,OAAN,EAALA,EAAa/5N,kBAA4B,OAAVs5N,QAAU,IAAVA,GAAe,QAALU,EAAVV,EAAa,UAAE,IAAAU,OAAL,EAAVA,EAAiBh6N,cAAc,IAChF,IAAIi6N,EAAc,CAChBn0Q,KAAMwzQ,EAAW,GACjB1mI,YAAa,GACbxzG,KAAM,SACN86O,QAAS,OACTp2G,SAAU,UACVq2G,OAAQ9B,EACRlB,SAAUmC,EAAW,GACrBc,OAAQ,EACRC,WAAYd,EAAc,KAAiB,OAAXA,QAAW,IAAXA,OAAW,EAAXA,EAAavpG,uBAAwB,IAAM,EAE3EsqG,cAAc,EACdxB,sBAAuBD,GACvB0B,qBAAsB,CAAC,IAAK,IAAK,KAAM,KAAM,MAAO,OACpDC,YAAa,aAGfv4O,YAAW,WACT+2O,EAAyBiB,EAC3B,GAAG,EACL,EAEA7B,QAAS,SACPrB,EACA1zK,EACAo3K,EACAC,EACAvvN,EACAmhI,GAIA,MAAM,GAAE1gG,GAAO6uL,EACTE,EAAYF,EAAaE,UACVF,EAAaG,aAElCpD,GACGY,QACCrB,EACA1zK,EACK,IAALzX,EACA+uL,EACAD,GAEDj4M,MAAK,SAAU0lJ,GACd,GAAIA,EAAKthN,OAAQ,CAEf,MACMg0Q,EA2EhB,SAAgC1yD,EAAM7tH,GACpC,MAAMugL,EAAW,GAEjB,IAAK,IAAIvvQ,EAAIgvF,EAAS,EAAGhvF,EAAI68M,EAAKthN,OAAQyE,IAAK,CAC7C,MAIMk0C,EAJc2oK,EACjB//M,MAAMkD,EAAIgvF,EAAS,EAAGhvF,EAAI,GAC1B2O,KAAI,SAAU49N,GAAO,OAAOA,EAAIruG,KAAO,IAClB/2G,QAAO,SAAUopH,EAAOwxB,GAAS,OAAOxxB,EAAQwxB,CAAO,GAAG,GACjE/yE,EACjBugL,EAASnxQ,KAAK81C,EAChB,CAEA,OAAOq7N,CACT,CAxF2BC,CAAuB3yD,EADvB,KAIX4yD,EAAa5yD,EAAKluM,KAAI,SAAU49N,EAAKjuO,GACzC,OAAAymF,GAAAA,GAAA,GACKwnJ,GAAG,IACNr4L,GAAIq7N,EAASjxQ,IAEjB,IAEA8wQ,EAAkBK,EAAY,CAAEC,QAAQ,GAC1C,MACEN,EAAkBvyD,EAAM,CAAE6yD,QAAQ,GAEtC,IACCt4M,OAAM,SAAU1sD,GACfm1C,EAAQn1C,EACV,GACJ,EACA8gQ,cAAe,SACbC,EACA1zK,EACA43K,EACAC,EACAC,GAEAr4H,GAAOg0H,cACLC,EACA1zK,EACA43K,EACAC,EACAC,EAEJ,EAEAxD,gBAAiB,SAAUyD,GACzBt4H,GAAO60H,gBAAgByD,EACzB,EAEAC,sBAAuB,SACrBh4K,EACAi4K,EACAC,GAKA,OAAOl4K,EAAa,GAChB,CAAEi4K,eAAgB,IAAKC,aAAc,UACrCh0Q,CACN,EAEAi0Q,SAAU,SACRzE,EACA0E,EACAC,EACAC,EACAt4K,GAEA,EAGFu4K,kBAAmB,SACjB7E,EACA0E,EACAC,EACAC,EACAt4K,GAEA,EAGFw4K,cAAe,SAAUl9O,GAAM,GC1J1B,MAAMm9O,GAAmB,CAG9B,yCACA,gCACA,kBACA,8CAGWC,GAAoB,CAE/B,gBACA,cACA,iBAIA,uBAKA,qCAqBWC,GAAc,CAEzB,CAAEr8O,KAAM,MAAO0jE,WATH,MAUZ,CAAE1jE,KAAM,MAAO0jE,WATH,MAUZ,CAAE1jE,KAAM,KAAM0jE,WATL,OAUT,CAAE1jE,KAAM,KAAM0jE,WATL,OAUT,CAAE1jE,KAAM,KAAM0jE,WATT,MChCP,SAAS44K,KACR,MACMluH,EADQ,IAAI9yH,OAAO,uBACHkB,KAAKj1B,OAAO0pC,SAAS2pB,QAC3C,OAAmB,OAAZwzF,EACJ,KACAv1I,mBAAmBu1I,EAAQ,GAAG/xH,QAAQ,MAAO,KACjD,CAEA,MA+FA,GA/FyB+tD,IAA8C,IAA7C,OAAEr4D,EAAM,qBAAEwqP,EAAoB,MAAEhxI,GAAOnhD,EAChE,MAAMoyL,GAAoB7sM,EAAAA,EAAAA,QAAO,MAC3B8sM,GAAc9sM,EAAAA,EAAAA,QAAO,MAqF3B,OA9EAN,EAAAA,EAAAA,YAAU,KAET/sC,YAAW,KACV,IAAKm6O,EAAY/vN,QAAS,CACzB,MAAMgwN,EAAgB,CACrB3qP,OAAO,YAADle,OAAoB,OAANke,QAAM,IAANA,OAAM,EAANA,EAAQyuB,eAC5BwtN,SAAU2O,GACVl5L,UAAW+4L,EAAkB9vN,QAC7B6+E,MAAOA,EACPugI,aAAc,qBACd5zM,OAAQokN,MAAwB,KAChCM,gBAAgB,EAChBjwF,SAhBmB9lD,aAAaC,QAAQ,kDACnBt1H,KAgBrBi7P,YAAY,EACZC,UAAU,EACVG,YAAawP,GACbzP,iBAAkBuP,GAClBxP,kBAAmByP,GACnBtgB,SAAS,GAGV2gB,EAAY/vN,QAAU,IAAImwN,GAAOH,GAEjCD,EAAY/vN,QAAQ2hN,cAAa,KAChCoO,EAAY/vN,QACVqkN,cACA+L,YAAY,kBAAkB,GAAO,EAAO,CAAE51Q,OAAQ,IAAM,CAAE,eAAgB,UAAW,wBAA0B,IACrHu1Q,EAAY/vN,QACVqkN,cACA+L,YAAY,kBAAkB,GAAO,EAAO,CAAE51Q,OAAQ,IAAM,CAAE,eAAgB,UAAW,wBAA0B,IACrHu1Q,EAAY/vN,QACVqkN,cACA+L,YAAY,kBAAkB,GAAO,EAAO,CAAE51Q,OAAQ,IAAM,CAAE,eAAgB,UAAW,wBAA0B,IAGrH,MAAM61Q,EAAUN,EAAY/vN,QAAQqkN,cAAciM,gBAClD,IAAK,IAAIrxQ,EAAI,EAAGA,EAAIoxQ,EAAQ71Q,OAAQyE,IAAK,CACxC,MAAMsxQ,EAAQF,EAAQpxQ,GACtB,GAAmB,WAAfsxQ,EAAM92Q,KAAmB,CAC5Bs2Q,EAAY/vN,QAAQqkN,cAAcmM,aAAaD,EAAMzlO,IACrD,KACD,CACD,IAEF,IACE,KACI,KACsB,OAAxBilO,EAAY/vN,UACf+vN,EAAY/vN,QAAQq7B,SACpB00L,EAAY/vN,QAAU,KACvB,IAEC,KAEH2iB,EAAAA,EAAAA,YAAU,KAELotM,EAAY/vN,SACf+vN,EAAY/vN,QAAQkkN,eAAe,CAClC,4BAAuC,SAAVrlI,EAAmB,UAAY,UAC5D,6BAAwC,SAAVA,EAAmB,UAAY,WAE/D,GACE,CAACA,KAEJl8D,EAAAA,EAAAA,YAAU,KACT,GAAIotM,EAAY/vN,QAAS,CACxB,IAAIywN,EAAiBV,EAAY/vN,QAAQqkN,cAAch/O,SACnDqrP,EAAqBX,EAAY/vN,QAAQqkN,cAAcrtK,aAC3DmjC,aAAaE,QAAQ,gDAAiDq2I,GACtED,EAAiBA,EAAe38N,cAEhCm8N,GAAS3E,gBADYmF,EAAiB,MAAQC,GAE9CX,EAAY/vN,QAAQqkN,cAAchC,UAAU,YAADl7P,OAAmB,OAANke,QAAM,IAANA,OAAM,EAANA,EAAQyuB,gBAAiB,SAEjFi8N,EAAY/vN,QAAQqkN,cAAcsM,cAAcx2I,aAAaC,QAAQ,kDAAkD,QACxH,IACE,CAAC/0G,KAGHw4G,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACCijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,MACnBqd,EAAAA,GAAAA,KAAA,OAAK9iI,IAAKo3Q,EAAmBz1L,UAAW8jC,OACtC,EC1GCogB,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,UACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,UACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,qBACP06E,SAAU,UACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,wBACdp7I,MAAO,yDACPo1D,QAAS,yDACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAI/B,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,UAC9EslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KAEbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb0BwzQ,KACxB,MAAM5sG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,qBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBC0CjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECjCZ,MAAM3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,OACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,OACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,kBACP06E,SAAU,OACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,qBACdp7I,MAAO,sDACPo1D,QAAS,sDACT92G,IAAK,oBACL+wM,OAAQ,aAgCZ,GA5BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,SAAA,EAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAbuByzQ,KACrB,MAAM7sG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC2B1L,GAxBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAc7B,ECvBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBC0CjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,EClCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,WACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,WACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,sBACP06E,SAAU,WACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,yBACdp7I,MAAO,0DACPo1D,QAAS,0DACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACEmgD,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,SAAA,EAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb2B0zQ,KACzB,MAAM9sG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GArCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAKR,EChCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,WACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,WACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,sBACP06E,SAAU,WACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,yBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACEmgD,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,SAAA,EAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb2B2zQ,KACzB,MAAM/sG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2BACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GArCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAKR,ECjCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,SACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,SACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,oBACP06E,SAAU,SACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,oBACdp7I,MAAO,4DACPo1D,QAAS,4DACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACEmgD,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,SAAA,EAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECnDV,GAbyB4zQ,KACvB,MAAMhtG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,wBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBC0CjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECjCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,UACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,UACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,qBACP06E,SAAU,UACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,wBACdp7I,MAAO,yDACPo1D,QAAS,yDACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACEmgD,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,SAAA,EAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfxrP,OAAQ,UACRs+I,sBAAuB,OAG3BnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECrDV,GAb0B6zQ,KACxB,MAAMjtG,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,GAAK,kBC4B/H,GAzBa4/C,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBAGvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO7qF,KAAKilB,SAAA,CAAC,2BACJijF,EAAAA,GAAAA,KAAA,UAAAjjF,SAAQ,yBAEjCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gOAELijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,uCACP3oG,IAAI,iCACJmY,IAAI,iBCpBhB,IAAgB,QAAU,0BCA1B,IAAgB,MAAQ,qBAAqB,KAAO,oBAAoB,KAAO,oBAAoB,MAAQ,qBAAqB,KAAO,oBAAoB,QAAU,uBAAuB,KAAO,oBAAoB,MAAQ,qBAAqB,SAAW,wBAAwB,SAAW,wBAAwB,MAAQ,qBAAqB,KAAO,oBAAoB,IAAM,mBAAmB,KAAO,oBAAoB,OAAS,sBAAsB,OAAS,sBAAsB,UAAY,yBAAyB,SAAW,wBAAwB,MAAQ,sBCG9iB26E,GAAW,CACf,CACE16E,MAAO,iCACPwmO,QAAS,kBACT7rI,GAAI,iCACJC,GAAI,mCACJ6rI,GAAI,qBACJlqC,GAAI,wBACJt3H,MAAO,mBACP1hD,IAAK,WACLg4G,WAAY,gBAEd,CACEv7H,MAAO,iCACPwmO,QAAS,mBACT7rI,GAAI,2BACJC,GAAI,gBACJ6rI,GAAI,yBACJlqC,GAAI,aACJt3H,MAAO,mBACP1hD,IAAK,WACLg4G,WAAY,kBAoChB,GAhCcyhF,KAGVrsH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOozJ,MAAMh5N,UAC3BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO91F,KAAKkwB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgtE,GAAS33G,KAAI,CAAC1O,EAAG3B,KAChBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAkBtJ,GAAIrgF,EAAEkvD,IAAI7V,SAAA,EACjDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE4wG,MAAOllE,IAAI,gBAEzBizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO/xE,KAAKmM,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,WAEnC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO6iD,MAAMzoH,SAAEr5C,EAAEmyQ,WACjC71I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEr5C,EAAEsmI,MACpChK,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEr5C,EAAEumI,MACpCjK,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEr5C,EAAEoyQ,MACpC91I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAEr5C,EAAEkoO,MACpC5rG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,UAC9BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,eAAgBtf,GAAOqzJ,WAAYjyL,GAAG,WAAUhnC,SAAGr5C,EAAEknK,oBAd7C7oK,WCnC9C,IAAgB,MAAQ,qBAAqB,IAAM,mBAAmB,IAAM,mBAAmB,OAAS,sBAAsB,MAAQ,qBAAqB,KAAO,oBAAoB,SAAW,wBAAwB,KAAO,oBAAoB,QAAU,uBAAuB,KAAO,oBAAoB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,MAAQ,qBAAqB,QAAU,uBAAuB,SAAW,yBCArgB,IAAgB,MAAQ,qBAAqB,IAAM,mBAAmB,IAAM,mBAAmB,OAAS,sBAAsB,WAAa,0BAA0B,KAAO,oBAAoB,SAAW,wBAAwB,KAAO,oBAAoB,KAAO,oBAAoB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,SAAW,wBAAwB,MAAQ,qBAAqB,MAAQ,sBC2C1c,GAxCcmgF,IAEP,IAFQ,QACX+zL,GACH/zL,EAEG,MAAMg0L,EAAuB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAAS39J,MAAK,CAAC3xG,EAAGC,KAAO,IAADuvQ,EAAAC,EAC1C,MAAMC,GAAkB,QAARF,EAAAxvQ,EAAEkjB,cAAM,IAAAssP,OAAA,EAARA,EAAU79N,gBAAiB,GACrCg+N,GAAkB,QAARF,EAAAxvQ,EAAEijB,cAAM,IAAAusP,OAAA,EAARA,EAAU99N,gBAAiB,GAE3C,OAAI+9N,EAAUC,GAAiB,EAC3BD,EAAUC,EAAgB,EACvB,CAAC,IAGZ,OACIt2I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO6oI,MAAMzuM,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sBAElB,OAAbm5N,QAAa,IAAbA,OAAa,EAAbA,EAAe9jQ,KAAI,CAAC1O,EAAG3B,KAAK,IAAAgmK,EAAAknF,EAAA,OACzB5sH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAA,GAAApxC,OACb,QADao8J,EACnBrkK,EAAEzF,YAAI,IAAA8pK,OAAA,EAANA,EAAQzvH,cAAa,KAAA3sC,OAAY,QAAZsjP,EAAIvrP,EAAEmmB,cAAM,IAAAolO,OAAA,EAARA,EAAU32M,cAAa,QAExD0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAEH,OAAnBr5C,EAAE6yQ,aAAqB,GAAA5qQ,OAAMjI,EAAEzF,MAAI,GAAA0N,OAAQjI,EAAE6yQ,iBAElDv2I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACtBwoH,GAAsB7hK,EAAE8yQ,OAAQ9yQ,EAAE+yQ,sBATV10Q,EAW3B,QAGZ,ECpCR20Q,GAAc,CAClB,CACEz4Q,KAAM,OACN04Q,KAAK,GAADhrQ,OAAKrC,WAA8B,KACvCstQ,KAAK,GAADjrQ,OAAKrC,MACTgrG,MAAO,gCACPuiK,QAAQ,GAADlrQ,OAAKrC,iBACZwtQ,QAAQ,GAADnrQ,OAAKrC,aAEd,CACErL,KAAM,QACN04Q,KAAK,GAADhrQ,OAAKrC,cAA+B,KACxCstQ,KAAK,GAADjrQ,OAAKrC,MACTgrG,MAAO,4BACPuiK,QAAQ,GAADlrQ,OAAKrC,iBACZwtQ,QAAQ,GAADnrQ,OAAKrC,aA0Bd,CACErL,KAAM,aACN04Q,KAAMrtQ,cACNstQ,KAAMttQ,KACNgrG,MAAO,iCACPuiK,QAASvtQ,gBACTwtQ,QAASxtQ,YAUX,CACErL,KAAM,aACN04Q,KAAMrtQ,cACNstQ,KAAMttQ,KACNgrG,MAAO,iCACPuiK,QAASvtQ,gBACTwtQ,QAASxtQ,YAEX,CACErL,KAAM,oBACN04Q,KAAMrtQ,cACNstQ,KAAMttQ,KACNgrG,MAAO,wCACPuiK,QAASvtQ,gBACTwtQ,QAASxtQ,aAIPytQ,GAAO,CACX,CACE94Q,KAAM,eACN04Q,KAAK,GAADhrQ,OAAKrC,WAAwC,KACjDstQ,KAAK,GAADjrQ,OAAKrC,MACTgrG,MAAO,2BACPuiK,QAAQ,GAADlrQ,OAAKrC,MACZwtQ,QAAQ,GAADnrQ,OAAKrC,eAmFhB,GA/Ec44E,IAEP,IAFQ,QACb+zL,GACD/zL,EACC,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6oI,MAAMzuM,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOq0J,QAAQj6N,SAAC,uBAChCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,kBAE7B25N,GAAYtkQ,KAAI,CAAC1O,EAAG3B,KACnBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE4wG,MAAOllE,IAAI,cAEzB4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,SAC7Br5C,EAAEzF,WAGP+hI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEizQ,QAEL32I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEkzQ,QAEL52I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEmzQ,WAEL72I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEozQ,YApB0B/0Q,MAwBnCi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOq0J,QAAQj6N,SAAC,uBAC/Bg6N,GAAK3kQ,KAAI,CAAC1O,EAAG3B,KACZsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8f,KAAK1lF,UAC1BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAKvzB,EAAE4wG,MAAOllE,IAAI,WAExB1rC,EAAEzF,WAGP+hI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEizQ,QAEL32I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEkzQ,QAEL52I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEmzQ,WAEL72I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACxBr5C,EAAEozQ,YAnB0B/0Q,QAyBgB,IAAnDoO,SAAS7G,OACT+4H,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EAEEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOq0J,QAAQj6N,SAAC,yBAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOs0J,SAASl6N,UAC9BijF,EAAAA,GAAAA,KAACk3I,GAAS,CAACjB,QAASA,WAItB,EChJV,GAfgB/zL,IAET,IAFU,QACf+zL,GACD/zL,EACC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOwgB,SAASpmF,UAC5CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAACqsH,GAAK,KACNrsH,EAAAA,GAAAA,KAACsE,GAAK,CACJ2xI,QAASA,QAGT,EChBV,IAAgB,MAAQ,mBAAmB,IAAM,iBAAiB,IAAM,iBAAiB,OAAS,oBAAoB,SAAW,sBAAsB,KAAO,mBCA9J,GAAuB,mBAAvB,GAAiD,mBAAjD,GAA6E,qBAA7E,GAA2G,qBAA3G,GAAwI,oBAAxI,GAAoK,oBAApK,GAA+L,mBAA/L,GAA4N,sBC6B5N,GAzBa/zL,IAAiC,IAAhC,UAAErD,EAAS,KAAEwO,EAAI,MAAEtrF,GAAOmgF,EACtC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACE26D,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAC9C7zD,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAc5lE,SAAA,CAC3Bh7C,EAAQ,GAAK,IACbA,EAAQ,MAEXi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,UAC3BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAGjC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAiBwf,IAAWplF,SAC5DswC,EAAKtS,YAEJ,ECrBJgoD,GAAQ,CACZ,CACE1zF,MAAO,UACP0zF,MAAO,CACL,CACE1zF,MAAO,wBACP0rC,QACE,sJAEJ,CACE1rC,MAAO,mCACP0rC,QACE,yIAEJ,CACE1rC,MAAO,sCACP0rC,QACE,wHAEJ,CACE1rC,MAAO,kCACP0rC,QACE,qFAEJ,CACE1rC,MAAO,mCACP0rC,QACE,sHAEJ,CACE1rC,MAAO,+CACP0rC,QACE,kJAmCV,GA7BYo8L,KACV,MAAMp2Q,EAAU,GAChBgiI,GAAM3wH,KAAK1O,GAAM3C,EAAQc,KAAK6B,EAAE2rC,SAEhC,MAAO2+M,EAAUopB,IAAe1vM,EAAAA,EAAAA,UAAS3mE,EAAQ,IAEjD,OACEi/H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOinD,SAAS7sH,UAC/CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOnsD,IAAIzZ,UACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kCAEzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GACE9nD,MAAMv3E,GAAMA,EAAE2rC,QAAU2+M,IACxBjrH,MAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CACHpxK,UAAW8jC,GAAOt1B,KAClBA,KAAM3pF,EACN3B,MAAOA,GACFA,WAKX,ECRV,GApDas1Q,KACX,MAAO1vG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChC4vM,EAAcC,IAAmB7vM,EAAAA,EAAAA,UAAS,KAC1CuuM,EAASuB,IAAc9vM,EAAAA,EAAAA,UAAS,KAkBvCP,EAAAA,EAAAA,YAAU,KACRswM,GAAe,GACd,IAEH,MAAMA,EAAgBhgP,UACpB8sJ,GAAW,GACX,IAAK,IAADmzF,EACF,MAAMC,QAAsB1yG,GAAe,kBAAmB,QAC9Dsf,GAAW,GACXizF,EAAwB,OAAbG,QAAa,IAAbA,GAAmB,QAAND,EAAbC,EAAetsQ,YAAI,IAAAqsQ,OAAN,EAAbA,EAAqBrsQ,KAClC,CACA,MAAOpL,IACLskL,GAAW,EACb,CAAC,EAGH,OACEliD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBtsH,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACuvH,GAAO,CACN0mB,QAASA,KAKXj2I,EAAAA,GAAAA,KAACm3I,GAAG,MACH,ECvDP,IAAgB,UAAY,6BAA6B,KAAO,wBAAwB,KAAO,wBAAwB,QAAU,2BAA2B,SAAW,4BAA4B,KAAO,wBAAwB,MAAQ,yBAAyB,QAAU,wECMvQS,GAAW,CACf,CACEvoO,MAAO,4BACP0rC,QAAS,kHACTizK,SAAU,SACV0B,aAAc,QACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,yBAEP,CACEvjB,MAAO,iBACP0rC,QAAS,gHACTizK,SAAU,MACV0B,aAAc,SACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,mBAEP,CACEvjB,MAAO,mCACP0rC,QAAS,wGACTizK,SAAU,QACV0B,aAAc,SACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,gBAIHilN,GAAW,CACf,CACExoO,MAAO,4BACP0rC,QAAS,4GACTizK,SAAU,SACV0B,aAAc,SACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,eAEP,CACEvjB,MAAO,uBACP0rC,QAAS,oEACTizK,SAAU,SACV0B,aAAc,SACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,yBAEP,CACEvjB,MAAO,6BACP0rC,QAAS,0DACTizK,SAAU,MACV0B,aAAc,QACdp7I,MAAO,4CACPo1D,QAAS,+CACT92G,IAAK,2CAIH+2G,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAgIxC,GA7HkB+6N,KAChB,MAAM10K,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChBjC,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjC6vE,WAAY,CACV,CACEltB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,IAGlB,CACE1qB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,IAGlB,CACE1qB,WAAY,IACZsjB,SAAU,CACRoH,aAAc,MAMtB,OACEw1B,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOo1J,WAAWh7N,UAC9CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,qEAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOx4B,QAAQptC,SAAA,EAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CACL3J,UAAWojD,KAAG,mBAAoBtf,GAAOknD,SACrCzmE,GAAQ,IAAArmD,SAEX66N,GAASxlQ,KAAI,CAAC1O,EAAG3B,KAChBsgI,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAOt1B,KAAMtJ,GAAIrgF,EAAEkvD,IAAI7V,SAAA,EACtCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,oBAAqBtf,GAAO+lD,SAAS3rH,SAAA,EACtDijF,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,WACA,CACE,kBAAkC,WAAfv+H,EAAEsqP,UAEvB,CACE,iBAAiC,UAAftqP,EAAEsqP,UAEtB,CACE,eAA+B,QAAftqP,EAAEsqP,UAEpBrrI,GAAOqrI,UACPjxM,SAEDr5C,EAAEgsP,gBAEL1vH,EAAAA,GAAAA,KAAA,OACEJ,OAAQl8H,EAAE4wG,MACVr9E,IAAKvzB,EAAE4wG,MACPllE,IAAI,kBAGRizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO91F,KAAKkwB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eA3BOh5E,SAgClDi+H,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CACL3J,UAAWojD,KAAG,mBAAoBtf,GAAOknD,SACrCzmE,GAAQ,IAAArmD,SAEX86N,GAASzlQ,KAAI,CAAC1O,EAAG3B,KAChBsgI,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAOt1B,KAAMtJ,GAAIrgF,EAAEkvD,IAAI7V,SAAA,EACtCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,oBAAqBtf,GAAO+lD,SAAS3rH,SAAA,EACtDijF,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,WACA,CACE,kBAAkC,WAAfv+H,EAAEsqP,UAEvB,CACE,iBAAiC,UAAftqP,EAAEsqP,UAEtB,CACE,eAA+B,QAAftqP,EAAEsqP,UAEpBrrI,GAAOqrI,UACPjxM,SAEDr5C,EAAEgsP,gBAEL1vH,EAAAA,GAAAA,KAAA,OACEJ,OAAQl8H,EAAE4wG,MACVr9E,IAAKvzB,EAAE4wG,MACPllE,IAAI,kBAGRizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO91F,KAAKkwB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eA3BOh5E,eAkClD,EC/LV,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAAgH,oBAAhH,GAA4I,oBAA5I,GAAuK,mBAAvK,GAAyN,iBC+BzN,GA7Ba2iL,KAGT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,QAAStf,IAAc5lE,SAAC,kBAG3CijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,mCACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,6OAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,2BAA6B,mQAGvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,6CACP3oG,IAAI,uCACJmY,IAAI,iBCXhB,GAToB4oO,KAEhB31I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAAC83I,GAAS,OCPhB,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAA4I,oBAA5I,GAAuK,mBAAvK,GAAyN,iBCsCzN,GApCapzF,KAGT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAI1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,iBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,mCAc/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,wCACP3oG,IAAI,kCACJmY,IAAI,iBC9BhB,IAAgB,MAAQ,mBAAmB,IAAM,iBAAiB,IAAM,iBAAiB,OAAS,oBAAoB,SAAW,sBAAsB,KAAO,mBCA9J,GAAuB,mBAAvB,GAAiD,mBAAjD,GAA6E,qBAA7E,GAA2G,qBAA3G,GAAwI,oBAAxI,GAAoK,oBAApK,GAA+L,mBAA/L,GAA4N,sBC6B5N,GAzBa8yC,IAAiC,IAAhC,UAAErD,EAAS,KAAEwO,EAAI,MAAEtrF,GAAOmgF,EACtC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACE26D,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAC9C7zD,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAc5lE,SAAA,CAC3Bh7C,EAAQ,GAAK,IACbA,EAAQ,MAEXi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,UAC3BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAGjC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAiBwf,IAAWplF,SAC5DswC,EAAKtS,YAEJ,ECpBJgoD,GAAQ,CACZ,CACE1zF,MAAO,UACP0zF,MAAO,CACL,CACE1zF,MAAO,qBACP0rC,QACE,iTAEJ,CACE1rC,MAAO,iBACP0rC,QACE,ulBAEJ,CACE1rC,MAAO,uBACP0rC,QACE,6UAEJ,CACE1rC,MAAO,0DACP0rC,QACE,keAEJ,CACE1rC,MAAO,mCACP0rC,QACE,6HAGJ,CACE1rC,MAAO,wCACP0rC,QACE,0JAGJ,CACE1rC,MAAO,+BACP0rC,QACE,6GAGJ,CACE1rC,MAAO,iDACP0rC,QACE,4aAGJ,CACE1rC,MAAO,kEACP0rC,QACE,uRAIR,CACE1rC,MAAO,uBACP0zF,MAAO,CACL,CACE1zF,MAAO,uCACP0rC,QACE,4OAEJ,CACE1rC,MAAO,yCACP0rC,QACE,+TAEJ,CACE1rC,MAAO,yCACP0rC,QACE,8aAEJ,CACE1rC,MAAO,mCACP0rC,QAAS,kVAOf,CACE1rC,MAAO,YACP0zF,MAAO,CACL,CACE1zF,MAAO,gCACP0rC,QACE,oMAEJ,CACE1rC,MAAO,sFACP0rC,QACE,yRAEJ,CACE1rC,MAAO,qCACP0rC,QACE,+MAIR,CACE1rC,MAAO,UACP0zF,MAAO,CACL,CACE1zF,MAAO,gCACP0rC,QACE,yRAEJ,CACE1rC,MAAO,iCACP0rC,QACE,ihBAEJ,CACE1rC,MAAO,0BACP0rC,QACE,4TAMR,CACE1rC,MAAO,uBACP0zF,MAAO,CACL,CACE1zF,MAAO,uDACP0rC,QACE,iUAEJ,CACE1rC,MAAO,uCACP0rC,QACE,oSA0DV,GAhDYo8L,KACV,MAAMp2Q,EAAU,GAChBgiI,GAAM3wH,KAAK1O,GAAM3C,EAAQc,KAAK6B,EAAE2rC,SAEhC,MAAO2+M,EAAUopB,IAAe1vM,EAAAA,EAAAA,UAAS3mE,EAAQ,IAEjD,OACEi/H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAS7sH,UAC5CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,gCACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyhB,IAAIrnF,SACxBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAOs1J,IAAK,CACxB,CAACt1J,GAAOsgB,QAASv/H,EAAE2rC,QAAU2+M,IAE/B1/K,QAASA,IAAM8oM,EAAY1zQ,EAAE2rC,OAAO0N,SAGnCr5C,EAAE2rC,OAFEttC,QAMXi+H,EAAAA,GAAAA,KAACuE,GAAQ,CACP1lD,UAAW8jC,GAAO4f,SAClBrjI,MAAO8uP,EACP1yM,SAAU87N,EACVr2Q,QAASA,QAGbi/H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GACE9nD,MAAMv3E,GAAMA,EAAE2rC,QAAU2+M,IACxBjrH,MAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CACHpxK,UAAW8jC,GAAOt1B,KAClBA,KAAM3pF,EACN3B,MAAOA,GACFA,WAKX,ECtLV,GATmBm2Q,KAEf71I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACm3I,GAAG,OCPV,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCKxGnkB,GAAc,CAClB,CACE3jN,MAAO,eACPujB,IAAK,iBAEP,CACEvjB,MAAO,eAwBX,GApBaq1I,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,+BAGvCijF,EAAAA,GAAAA,KAACkzH,GAAW,CAACr0K,UAAW8jC,GAAOqwI,YAAajwH,MAAOiwH,SAErDhzH,EAAAA,GAAAA,KAACx7C,GAAM,CACL3F,UAAW8jC,GAAO79B,OAClBwvB,MAAM,+BACNo1D,QAAQ,sCC5BlB,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,2BCmExI,GAhEgB0sF,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,aACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oSAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+YAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,sIAEHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,0BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yGAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,mCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2ZAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,+BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8PAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,6YAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gHAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,kBAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yHAGHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,+BAEDijF,EAAAA,GAAAA,KAAA,SAAM,4PAENA,EAAAA,GAAAA,KAAA,SAAM,gVClClB,GATkBm4I,KAEd91I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,oBAAoB,iBAAiB,6BAA6B,eAAe,sDCI3Q,MAkCA,GAlCal0K,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,oDAG7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+hB,KAAK3nF,UAC1BijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,gBAAiBtf,GAAOp1D,QACtC+gB,QAASA,IACPmhL,EAAmBjrM,QAAQ6kH,eAAe,CACxCC,SAAU,WAEbvsH,SACF,yBAKLijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpnC,UAAUx+B,UAC/BijF,EAAAA,GAAAA,KAACo4I,KAAW,CAACxlN,IAAI,8CACfisB,UAAW8jC,GAAOmmD,KAClBp0H,MAAM,SACNC,OAAO,gBAIT,EClCV,IAAgB,KAAO,sBAAsB,MAAQ,uBAAuB,OAAS,wBAAwB,QAAU,yBAAyB,SAAW,0BAA0B,IAAM,qBAAqB,KAAO,sBAAsB,OAAS,wBAAwB,KAAO,sBAAsB,KAAO,sBAAsB,KAAO,uBCA/U,IAAgB,KAAO,mBAAmB,QAAU,sBAAsB,SAAW,uBAAuB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,QAAU,sBAAsB,MAAQ,oBAAoB,OAAS,qBAAqB,OAAS,qCCAjS,UAAgB,MAAQ,qBAAqB,UAAY,yBAAyB,MAAQ,qBAAqB,MAAQ,sBCwDvH,GAjDcutC,IAA4D,IAA3D,eAAEm2L,EAAc,QAAEl2I,EAAO,QAAEusC,EAAO,SAAE3xH,EAAQ,MAAE1N,GAAO6yC,EAClE,MAAMo2L,GAAcrxM,EAAAA,EAAAA,cACjBhnE,IACmB,KAAdA,EAAE4qD,SACJ6jH,GACF,GAEF,CAACA,IAmBH,OAhBAvnG,EAAAA,EAAAA,YAAU,KACR7nE,SAASK,iBAAiB,UAAW24Q,GAAa,GAC3C,KACLh5Q,SAASM,oBAAoB,UAAW04Q,GAAa,EAAM,IAE5D,CAACA,KAEJnxM,EAAAA,EAAAA,YAAU,KACR,GAAIg7D,EAAS,CACX,MAAM1hI,EAASnB,SAAS0xG,cAAc,UACtCsE,GAAkB70G,EACpB,MACE89H,IACF,GACC,CAAC4D,KAEGhqD,EAAAA,GAAAA,cACLgqD,IACEnC,EAAAA,GAAAA,KAAA,OAAK1wF,GAAG,QAAQuvC,UAAW8jC,GAAO41J,MAAMx7N,UACtCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAOrsB,MAAO+hL,GAAgBt7N,UAC/CslF,EAAAA,GAAAA,MAACrgD,GAAAA,QAAmB,CAACF,eAAgB4sF,EAAQ3xH,SAAA,CAC1C1N,IACCgzF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,EACrCijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,OAC5BkS,KAGJ0N,GACDijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOgf,MAAOrzD,QAASogG,EAAQ3xH,UAChDijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,gBAMlC79B,SAASutB,KACV,ECqBH,GAnEaq1D,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAE/B,MAAOs2L,EAAcC,IAAmB/wM,EAAAA,EAAAA,WAAS,GAEjD,OACE26D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,GAAO4nD,MAAOj8F,QAASA,KAAQmqM,GAAgB,EAAK,EAAI17N,SAAA,EACpFslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+lD,QAAQ3rH,SAAA,CAC5BswC,EAAKqiK,eACJ1vH,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,WACA,CACE,kBAAqC,WAAlB50C,EAAK2gK,UAE1B,CACE,iBAAoC,UAAlB3gK,EAAK2gK,UAEzB,CACE,gBAAmC,SAAlB3gK,EAAK2gK,UAExBrrI,GAAOqrI,UACPjxM,SAEDswC,EAAKqiK,gBAGV1vH,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,SACvDi+C,EAAK9G,OAAQy5C,EAAAA,GAAAA,KAAC8pC,GAAI,CAACjrF,UAAU,OAAOikD,OAAK,QAE5CT,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO91F,KAAKkwB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyvI,UACvB/vH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOutI,OAAOnzM,SAAEswC,EAAK6iK,YAEtC7iK,EAAKonC,aACJuL,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KACT,CACE,wBAAyC,UAAhB50C,EAAKmnC,QAEhC7R,GAAO6R,QACPz3E,SAEDswC,EAAKonC,mBAKb+jJ,IACCx4I,EAAAA,GAAAA,KAAC04I,GAAK,CACJv2I,QAASq2I,EACT9pG,QAASA,IAAM+pG,GAAgB,GAAO17N,UAEtCijF,EAAAA,GAAAA,KAACo4I,KAAW,CACVxlN,IAAKy6B,EAAKz6B,IACVisB,UAAW8jC,GAAOmmD,KAClBp0H,MAAM,SACNC,OAAO,cAIZ,ECjEDgkO,GAAc,CAAC,iBAAkB,cACjCC,GAAiB,CAAC,WAAY,UAAW,UAAW,UAEpDzoB,GAAW,CACf,CACE7gN,GAAI,EACJD,MAAM,oGACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,kDAGX,CACEp6H,GAAI,EACJD,MAAM,oEACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,kDAGX,CACEp6H,GAAI,EACJD,MAAM,6DACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,kDAGX,CACEp6H,GAAI,EACJD,MAAM,+CACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,kDAGX,CACEp6H,GAAI,EACJD,MAAM,mCACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,kDAGX,CACEp6H,GAAI,EACJD,MAAM,wCACNujB,IAAK,8CACL0hD,MAAO,iDACPo1D,QAAS,mDAiFb,GA5EgBxnF,IAA6B,IAA5B,mBAAEutK,GAAoBvtK,EACrC,MAAO5vB,EAAMumN,IAAWnxM,EAAAA,EAAAA,UAASixM,GAAY,KACtCG,EAASC,IAAcrxM,EAAAA,EAAAA,UAASkxM,GAAe,KAC/ChpB,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,GAM/C,OACEs4D,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,8BAA+Btf,GAAOinD,SACpD1sK,IAAKuyP,EAAmB1yM,UAExBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOxsC,KAAMhoD,OAAO,GAAGiqO,SAAUA,KATtD4gB,OAS2E,KA6CvEh5I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBozM,GAAS/9O,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,WAU9C,ECnHV,GAZoBuwP,KAClB,MAAM3pF,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC8yH,GAAO,CAACrD,mBAAoBA,MAC5B,ECZP,IAAgB,UAAY,uBAAuB,KAAO,kBAAkB,KAAO,kBAAkB,MAAQ,mBAAmB,KAAO,mBCAvI,GAAuB,mBAAvB,GAAoD,sBAApD,GAAiF,mBAAjF,GAA4G,oBAA5G,GAAwI,oBAAxI,GAAsK,sBC0BtK,GAtBavtK,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1DizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAc5lE,SAAEswC,EAAKs9E,SAEvD3qC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,eAQpC,8CCfJgoD,GAAQ,CACZ,CACE1zF,MAAO,qCACP0rC,QAAS,gGACT4vF,MAAO,YACPr2D,MAAO,+BACPo1D,QAAS,kCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,WAC/DgsC,WAAY,iBAEd,CACEv7H,MAAO,2BACP0rC,QAAS,mEACT4vF,MAAO,mBACPr2D,MAAO,2BACPo1D,QAAS,8BACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,UAAY,WACrDgsC,WAAY,cAEd,CACEv7H,MAAO,oCACP0rC,QAAQ,wGACR4vF,MAAO,cACPr2D,MAAO,kCACPo1D,QAAS,qCACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,cAAgB,WACzDgsC,WAAY,YAIVjB,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAqDxC,GAlDYgmC,IAAuB,IAAtB,aAAEynF,GAAcznF,EAC3B,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChB9B,gBAAgB,EAChBH,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,UAKnC,OACE6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGuoC,EAAc7nD,GAAOinD,SAAS7sH,UAC/CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAS1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,gBACvBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,yBAMxBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAU,eAAkBukB,GAAQ,IAAArmD,SACzCgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,cAKhD,ECvFV,IAAgB,KAAO,mBAAmB,UAAY,wBAAwB,KAAO,mBAAmB,MAAQ,oBAAoB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,GAAK,kBCgCzN,GA7Ba2iL,KAGT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,QAAStf,GAAOgoD,OAAO5tH,SAAC,kCAG3CslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,gBAAYijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,mBAAqB,QAC9EijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,mLAG7BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASw2B,GAAI,IAAGhnC,SAAE,qBAIzDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,sCACP3oG,IAAI,mCACJmY,IAAI,iBCxBhB,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,wBCAjW,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBCyBhP,GApBa8yC,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAC9H,GAAI,CACH17C,UAAWojD,KAAGpjD,EAAW8jC,IACzB5+B,GAAIsJ,EAAKz6B,IAAI7V,SAAA,EAEbijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1DizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,eAGnC,EChBLgoD,GAAQ,CACZ,CACEzzF,GAAI,EACJ04H,KAAM,qCACN34H,MAAO,qCACP06E,SAAU,4BACVhvC,QAAQ,qEACRizK,SAAU,MACV0B,aAAc,MACdp7I,MAAO,uCACPo1D,QAAS,0CACT92G,IAAK,uBA0BT,GAtBiBsvB,IAAsB,IAArB,YAAEymF,GAAazmF,EAC/B,MAAO0tK,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,GAE/C,OACEs4D,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,UAC/DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOgoD,UACzC3qC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwhB,KAAKpnF,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,8BAG3CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECtCV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,wBCAjW,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBCyC/V,GAtCamgF,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAKxFizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAE7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAE7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCilD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAkB5lE,UAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,eAQtF,ECjCN2zF,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,gCACP06E,SAAU,UACVhvC,QAAS,4EACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,0CACPo1D,QAAS,6CACT92G,IAAK,IACL+wM,OAAQ,KAEV,CACEr0N,GAAI,IACJD,MAAO,cACP06E,SAAU,UACVhvC,QAAS,gHACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mCACPo1D,QAAS,sCACT92G,IAAK,IACL+wM,OAAQ,KAEV,CACEr0N,GAAI,IACJD,MAAO,2BACP06E,SAAU,UACVhvC,QAAS,yGACTizK,SAAU,QACV0B,aAAc,wBACdp7I,MAAO,sCACPo1D,QAAS,yCACT92G,IAAK,IACL+wM,OAAQ,MAyBZ,GArBiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAC/B,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,UAC9EijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAOhDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KAEbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,UAI9C,EC5DV,IAAgB,KAAO,oBAAoB,MAAQ,qBAAqB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,QAAU,uBAAuB,OAAS,sBAAsB,SAAW,wBAAwB,QAAU,uBAAuB,QAAU,wBCIjSghI,GAAQ,CACZ,CACE1zF,MAAO,+BACPq6H,QAAS,wCACTp1D,MAAO,qCACPv5B,QAAS,6GAEX,CACE1rC,MAAO,0BACPq6H,QAAS,wCACTp1D,MAAO,qCACPv5B,QAAS,+DAEX,CACE1rC,MAAO,sCACPq6H,QAAS,wCACTp1D,MAAO,qCACPv5B,QAAS,qEAEX,CACE1rC,MAAO,aACPq6H,QAAS,wCACTp1D,MAAO,qCACPv5B,QAAS,iCAwCb,GApCcmH,IAAsB,IAArB,YAAEymF,GAAazmF,EAC5B,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAU1sK,IAAKyrK,EAAY5rH,UAC9DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,mCACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,uIAI/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+lD,QAAQ3rH,UAC7BijF,EAAAA,GAAAA,KAAA,OACEJ,OAAM,GAAAj0H,OAAKjI,EAAEgmK,QAAO,OACpBzyI,IAAKvzB,EAAE4wG,MACPllE,IAAG,QAAAzjC,OAAU5J,EAAQ,QAGzBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO3tF,OAAO+nB,SAAA,CAAC,QAAMh7C,EAAQ,MAC7Ci+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOonD,SAAShtH,SAAEr5C,EAAE2rC,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,YAVHh5E,WAoBpC,EC1CV,GAfoBk3Q,KAClB,MAAMtwG,GAAclhG,EAAAA,EAAAA,QAAO,MAC3B,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACk5I,GAAG,CAAC1uG,aAAa,gBAClBxqC,EAAAA,GAAAA,KAAC+kD,GAAK,KACN/kD,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAACm5I,GAAQ,CAACxwG,YAAaA,MAGtB,ECjBP,IAAgB,KAAO,mBAAmB,UAAY,wBAAwB,KAAO,mBAAmB,MAAQ,oBAAoB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,GAAK,kBCmCzN,GAhCa+b,KAGT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,QAAStf,GAAOgoD,OAAO5tH,SAAC,uCAG3CijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,oPAI7BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASyH,KAAK,kHAAkHv0D,OAAO,SAAQs8C,SAAC,0BAIpLijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,kDACP3oG,IAAI,4CACJmY,IAAI,iBCzBhB,IAAgB,UAAY,uBAAuB,KAAO,kBAAkB,KAAO,kBAAkB,MAAQ,mBAAmB,KAAO,mBCAvI,GAAuB,mBAAvB,GAAoD,sBAApD,GAAiF,mBAAjF,GAA4G,oBAA5G,GAAwI,oBAAxI,GAAsK,sBAAtK,GAAqM,qBC0BrM,GAtBa8yC,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1DizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAc5lE,SAAEswC,EAAKs9E,SAEvD3qC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,WACtCilD,EAAAA,GAAAA,KAACzF,GAAI,CACH17C,UAAWojD,KAAG,eAAgBtf,IAC9B5+B,GAAIsJ,EAAKz6B,IAAI7V,SAEZswC,EAAKu9E,kBAGN,8CCfJ7nC,GAAQ,CACZ,CACE1zF,MAAO,kBACP0rC,QAAQ,4IAGRu5B,MAAO,+BACPo1D,QAAS,kCACT92G,IAAK,IACLg4G,WAAY,kBAsBVjB,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAqDxC,GAlDYgmC,IAAuB,IAAtB,aAAEynF,GAAcznF,EAC3B,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChB9B,gBAAgB,EAChBH,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,UAKnC,OACE6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGuoC,EAAc7nD,GAAOinD,SAAS7sH,UAC/CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAS1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,gBACzBijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,4BAMtBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAU,eAAkBukB,GAAQ,IAAArmD,SACzCgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,cAKhD,ECxFV,IAAgB,UAAY,2BAA2B,KAAO,sBAAsB,MAAQ,uBAAuB,KAAO,sBAAsB,QAAU,yBAAyB,KAAO,sBAAsB,OAAS,yBCAzN,GAAuB,mBAAvB,GAAoD,sBAApD,GAAkF,oBAAlF,GAAgH,sBCsBhH,GAlBamgF,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,UAC7BijF,EAAAA,GAAAA,KAAA,OAAKJ,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,YAE1D4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,YAOlC,8CCZJgoD,GAAQ,CACZ,CACE1zF,MAAO,4BACP0rC,QAAS,4EACTxtB,OAAQ,gBACR+mD,MAAO,0CACPo1D,QAAS,6CACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,YAEjE,CACEvvF,MAAO,qCACP0rC,QAAS,gHACTxtB,OAAQ,gBACR+mD,MAAO,0CACPo1D,QAAS,6CACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,YAEjE,CACEvvF,MAAO,4CACP0rC,QAAS,yGACTxtB,OAAQ,gBACR+mD,MAAO,0CACPo1D,QAAS,6CACT92G,IAAK+rE,aAAaC,QAAQ,aAAe,oBAAsB,aAI7D+qC,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAqExC,GAlEgBgmC,IAAuB,IAAtB,aAAEynF,GAAcznF,EAC/B,MAAMqgB,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChBL,WAAY,CACV,CACEltB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,EACdY,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,WAKrC,CACE2iD,WAAY,IACZsjB,SAAU,CACRoH,aAAc,EACdH,UAAU,EACVe,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAQzC,OACE6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,yBAA0Btf,GAAOinD,SAAS7sH,UAC3DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBAOzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CAAC3J,UAAU,kBAAqBukB,GAAQ,IAAArmD,SAC5CgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KACbi+H,EAAAA,GAAAA,KAAC0qC,GAAI,CAAC7rF,UAAW8jC,GAAO4nD,KAAMl9E,KAAM3pF,GAAQ3B,cAKhD,ECtFV,GAVyBq3Q,KAErB/2I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAAC6kD,GAAO,KACR7kD,EAAAA,GAAAA,KAACq5I,GAAQ,OCRf,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAAgH,oBAAhH,GAA4I,oBAA5I,GAAuK,mBAAvK,GAAyN,iBC+CzN,GA1Ca30F,KAgBT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,QAAStf,IAAc5lE,SAAC,sBAG3CslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAA,CAAC,aAASijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,gBAAkB,QACxEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,yIAG7BijF,EAAAA,GAAAA,KAAA,OAAAjjF,UACEijF,EAAAA,GAAAA,KAAC6C,GAAM,CAAC3jI,MAAOoK,oCAA2Cs5H,SAAS,qBAAqBluF,MAAO,GAAIC,OAAQ,WAG/GqrF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,sCACP3oG,IAAI,mCACJmY,IAAI,iBCxBhB,GAZoBkqO,KACdtlL,UAAUC,UAAUplE,MAAM,WAC5BxvB,OAAO0pC,SAASkR,OAAO3wC,8DACd0qF,UAAUC,UAAUplE,MAAM,qBACnCxvB,OAAO0pC,SAASkR,OAAO3wC,sEAAmC,WAI1D02H,EAAAA,GAAAA,KAAC0kD,GAAI,KCXT,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BC6B9G,GAdaA,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,sDCpBjD,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,uGCiDxI,GA7CgBq5M,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,yEAEjDijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,mKAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,0DACJslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,kFAAyEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,qHAAqHv0D,OAAO,SAAQs8C,SAAC,kBAAiB,wEAC1OijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,+CACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2PAIHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,0EACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iKAEHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iCAEHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,YACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,4GAIHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kGAOHijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,qHAAqHv0D,OAAO,SAAQs8C,SAAC,yCC7BzJ,GAT2BwmN,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,UAAY,wBAAwB,KAAO,mBAAmB,MAAQ,oBAAoB,GAAK,kBC2BzI,GAxBa1xE,KAGT1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,qBAEvCijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASw2B,GAAG,IAAGhnC,SAAC,yBAIvDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOpmD,GAAGxf,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,2CACP3oG,IAAI,qCACJmY,IAAI,iBCThB,GARmB8oO,KAEfl4I,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,MCLX,IAAgB,UAAY,6BAA6B,KAAO,wBAAwB,KAAO,wBAAwB,QAAU,2BAA2B,SAAW,4BAA4B,KAAO,wBAAwB,MAAQ,yBAAyB,QAAU,2BAA2B,QAAU,2BAA2B,YAAc,+BAA+B,aAAe,gCAAgC,WAAa,8BAA8B,YAAc,+BAA+B,WAAa,8BAA8B,WAAa,8BAA8B,YAAc,gCCArmB,IAAgB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,MAAQ,qBAAqB,OAAS,sBAAsB,KAAO,oBAAoB,IAAM,mBAAmB,IAAM,mBAAmB,KAAO,oBAAoB,YAAc,2BAA2B,aAAe,4BAA4B,MAAQ,sBCAjW,GAAuB,mBAAvB,GAAmD,qBAAnD,GAAwG,kBAAxG,GAAgI,kBCyChI,GAtCaxiG,IAAe,IAAd,KAAEmL,GAAMnL,EACpB,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAMvC,OACEs4D,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAAWplF,UAC5DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMpvF,QAETokI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,CACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMksL,WAAW,QAEpBv5I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMmsL,eAKTx5I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACH,KAAjB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMosL,YAAmB,gBArBJzkP,EAqBgD,OAAJq4D,QAAI,IAAJA,OAAI,EAAJA,EAAMosL,WApBzEzkP,EAAO0kP,eAAe,aAyBvB15I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMssL,mBA3BjB,IAAgC3kP,CA+B3B,ECHP,GA9BcktD,IAAoB,IAAnB,UAAE03L,GAAW13L,EAE1B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,yBAGvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOlvE,KAAKsJ,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,WAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,qBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,kBAE5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,kBAGpB,OAAT68N,QAAS,IAATA,OAAS,EAATA,EAAWxnQ,KAAI,CAAC1O,EAAG3B,KAClBi+H,EAAAA,GAAAA,KAACiwH,GAAI,CACHpxK,UAAW8jC,GAAOt1B,KAClBA,KAAM3pF,EAEN3B,MAAOA,GADFA,UAKP,EC9BV,IAAgB,KAAO,oBAAoB,KAAO,oBAAoB,KAAO,oBAAoB,MAAQ,qBAAqB,OAAS,sBAAsB,KAAO,oBAAoB,IAAM,mBAAmB,IAAM,mBAAmB,KAAO,oBAAoB,YAAc,2BAA2B,aAAe,4BAA4B,MAAQ,sBCAjW,GAAuB,mBAAvB,GAAmD,qBAAnD,GAAwG,kBAAxG,GAAgI,kBCyBhI,GAtBamgF,IAAe,IAAd,KAAEmL,GAAMnL,EACpB,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAEvC,OACEs4D,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAAWplF,UAC5DslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMhF,UAET23C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMwsL,eAET75I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACpB,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMysL,gCAIZ,ECSP,GA1Bc53L,IAAuB,IAAtB,aAAE63L,GAAc73L,EAE7B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,uBAGvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOlvE,KAAKsJ,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,kBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,kCAEjB,OAAZg9N,QAAY,IAAZA,OAAY,EAAZA,EAAc3nQ,KAAI,CAAC1O,EAAG3B,KACrBi+H,EAAAA,GAAAA,KAACiwH,GAAI,CACHpxK,UAAW8jC,GAAOt1B,KAClBA,KAAM3pF,EAEN3B,MAAOA,GADFA,UAKP,8CClBJ4nK,GAAaznF,IAAA,IAAC,aAAEooB,EAAY,WAAEC,EAAU,SAAExtD,GAAoBmlC,EAAPj2D,EAAKykF,GAAAxuB,EAAAy4C,IAAA,OAChEqF,EAAAA,GAAAA,KAAA,SAAAx3C,GAAAA,GAAA,GAAYv8D,GAAK,IAAA8wB,SAAGA,IAAkB,EAwIxC,GArIkBgmC,IAAkC,IAADi3L,EAAAC,EAAA,IAAhC,UAAEL,EAAS,aAAEG,GAAch3L,EAE5C,MAAM60L,EAAW,CACf,CACEvoO,MAAO,6CACP2+M,SAAU,SACV15I,MAAO,8CACPo1D,QAAS,kDAEX,CACEr6H,MAAO,iCACP2+M,SAAU,MACV15I,MAAO,8CACPo1D,QAAS,kDAEX,CACEr6H,MAAM,cAAD1jC,OAAgD,QAAhDquQ,EAAgBJ,GAAmB,OAATA,QAAS,IAATA,OAAS,EAATA,EAAW56Q,QAAS,UAAE,IAAAg7Q,OAAA,EAAhCA,EAAkCT,WAAU,gBACjEvrB,SAAU,QACV15I,MAAO,8CACPo1D,QAAS,mDAIPtmE,EAAW,CACfiH,UAAU,EACViD,MAAO,IACP9C,aAAc,EACd6C,eAAgB,EAChBjC,WACE40B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjCwtE,WACEq1B,EAAAA,GAAAA,KAAC2pC,GAAU,CAAA5sH,UACTijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,SAGjC6vE,WAAY,CACV,CACEltB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,IAGlB,CACE1qB,WAAY,KACZsjB,SAAU,CACRoH,aAAc,IAGlB,CACE1qB,WAAY,IACZsjB,SAAU,CACRoH,aAAc,MAMtB,OACE63B,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,UAAWtf,GAAOo1J,WAAWh7N,SAAA,EAC9CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAO8nD,KAAK1tH,UACzBijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAG,yCAAwChnC,SAAC,qDAEpDijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,gCAI5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,oBAAqBtf,GAAOu3J,YAAYn9N,SAAA,EACzDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOw3J,WAAWp9N,UAChCslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAOy3J,WAAWr9N,SAAA,CAAC,cAA4C,QAAjCk9N,EAACL,GAAmB,OAATA,QAAS,IAATA,OAAS,EAATA,EAAW56Q,QAAS,UAAE,IAAAi7Q,OAAA,EAAhCA,EAAkCV,WAAW,sBAG7Fv5I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO03J,YAAYt9N,UACjCijF,EAAAA,GAAAA,KAAA,OACEJ,OAAM,oDACN3oG,IAAK,8CACLmY,IAAI,gBAIV4wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOx4B,QAAQptC,UAC7BijF,EAAAA,GAAAA,KAACloB,GAAAA,EAAMtvB,GAAAA,GAAA,CACL3J,UAAWojD,KAAG,mBAAoBtf,GAAOknD,SACrCzmE,GAAQ,IAAArmD,SAEX66N,EAASxlQ,KAAI,CAAC1O,EAAG3B,KAChBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt1B,KAAKtwC,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,oBAAqBtf,GAAO+lD,SAAS3rH,UACtDijF,EAAAA,GAAAA,KAAA,OACEJ,OAAM,GAAAj0H,OAAKjI,EAAEgmK,QAAO,OACpBzyI,IAAKvzB,EAAE4wG,MACPllE,IAAI,aAGRizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO91F,KAAKkwB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEr5C,EAAE2rC,SACjC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO5nC,QAAQh+B,SAAEr5C,EAAEq3E,eAVLh5E,cAiB1Ci+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAO23J,cAAcv9N,UACnDijF,EAAAA,GAAAA,KAACu6I,GAAM,CACLX,UAAWA,OAGf55I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAO23J,cAAcv9N,UACnDijF,EAAAA,GAAAA,KAACw6I,GAAa,CACZT,aAAcA,OAGlB13I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAO23J,cAAcv9N,SAAA,EACnDijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAO83J,QAAQ19N,SAAC,0BAG/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO+3J,YAAY39N,UACjCijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASw2B,GAAI46C,aAAaC,QAAQ,aAAe,mBAAqB,UAAU7hF,SAAC,6BAK1HijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAO8nD,KAAK1tH,UACzBijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAG,yCAAwChnC,SAAC,sDAEhD,EC7IV,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAAgH,oBAAhH,GAA4I,oBAA5I,GAAyN,iBC+BzN,GA7BamlC,IAAoB,IAAD83L,EAAA,IAAlB,UAAEJ,GAAW13L,EAEzB,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,gDAGvCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,QAAStf,IAAc5lE,SAAA,EACxCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,0EAElC,wFACiH,QAAjCi9N,EAACJ,GAAmB,OAATA,QAAS,IAATA,OAAS,EAATA,EAAW56Q,QAAS,UAAE,IAAAg7Q,OAAA,EAAhCA,EAAkCT,WAAW,oDAIvIv5I,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,mDACP3oG,IAAI,6CACJmY,IAAI,gBAIN,ECaV,GApCoB4oO,KAClB,MAAOrwG,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChCkyM,EAAWe,IAAgBjzM,EAAAA,EAAAA,UAAS,KACpCqyM,EAAca,IAAoBlzM,EAAAA,EAAAA,UAAS,KAElDP,EAAAA,EAAAA,YAAU,KACR0zM,GAAqB,GACpB,IAEH,MAAMA,EAAsBpjP,UAC1B8sJ,GAAW,GACX,IAAK,IAADu2F,EAAAC,EAAAC,EAAAC,EACF,MAAMC,QAAwBj2G,GAAe,cAAe,OAAQ,GAAI,GAAI,GAAI,UAChFsf,GAAW,GACXo2F,EAA4B,OAAfO,QAAe,IAAfA,GAAqB,QAANJ,EAAfI,EAAiB7vQ,YAAI,IAAAyvQ,GAAM,QAANC,EAArBD,EAAuBzvQ,YAAI,IAAA0vQ,OAAZ,EAAfA,EAA6BI,YAC1CP,EAAgC,OAAfM,QAAe,IAAfA,GAAqB,QAANF,EAAfE,EAAiB7vQ,YAAI,IAAA2vQ,GAAM,QAANC,EAArBD,EAAuB3vQ,YAAI,IAAA4vQ,OAAZ,EAAfA,EAA6BG,kBAChD,CACA,MAAOn7Q,IACLskL,GAAW,EACb,CAAC,EAGH,OACEliD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CACHk1F,UAAWA,KAEb55I,EAAAA,GAAAA,KAAC83I,GAAS,CACRnwG,QAASA,EACTiyG,UAAWA,EACXG,aAAcA,MAEf,ECpCP,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAA4I,oBAA5I,GAAuK,mBAAvK,GAAyN,iBC0BzN,GAxBa73L,IAAiC,IAADm5L,EAAA,IAA/B,MAAE35N,EAAK,gBAAE45N,GAAiBp5L,EAEtC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAA,CAAO,OAAL2E,QAAK,IAALA,GAAW,QAAN25N,EAAL35N,EAAOsmH,YAAI,IAAAqzG,OAAN,EAALA,EAAa/iO,cAAc,eACnE0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACV,OAAfu+N,QAAe,IAAfA,OAAe,EAAfA,EAAiBvwI,kBAGtB/K,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OACEJ,OAAO,wCACP3oG,IAAG,GAAAtrB,OAAKrC,yDAA+B,KAAAqC,OAAmB,OAAf2vQ,QAAe,IAAfA,OAAe,EAAfA,EAAiBC,QAE5DnsO,IAAI,gBAIN,ECtBV,IAAgB,MAAQ,mBAAmB,IAAM,iBAAiB,IAAM,iBAAiB,OAAS,oBAAoB,SAAW,sBAAsB,KAAO,mBCA9J,GAAuB,mBAAvB,GAAiD,mBAAjD,GAA6E,qBAA7E,GAA2G,qBAA3G,GAAwI,oBAAxI,GAAoK,oBAApK,GAA+L,mBAA/L,GAA4N,sBCuE5N,GAnEa8yC,IAAiC,IAAhC,UAAErD,EAAS,KAAEwO,EAAI,MAAEtrF,GAAOmgF,EACtC,MAAOigD,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAiCvC,OACE26D,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGpjD,EAAW8jC,IAAa5lE,SAAA,EACzCslF,EAAAA,GAAAA,MAAA,OACExjD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBwf,IAC9C7zD,QAASA,IAAM8zD,GAAYD,GAASplF,SAAA,EAEpCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAc5lE,SAAA,CAC3Bh7C,EAAQ,GAAK,IACbA,EAAQ,MAEXi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,SAAEswC,EAAKh+C,SACpC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,UAC3BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,aAAak/B,KAAK,aAGjC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAiBwf,IAAWplF,SAxC1Cy+N,MACvB,MAAMzgM,EAAc,OAAJsS,QAAI,IAAJA,OAAI,EAAJA,EAAMtS,QACtB,OAAKA,EAEEA,EAAQ7iC,MAAM,MAAM9lC,KAAI,CAACqpQ,EAAW15Q,KACzC,MAAM6yB,EAAQ6mP,EAAUvjO,MAAM,mBAE9B,OACE8nF,EAAAA,GAAAA,KAAA,KAAAjjF,SACGnoB,EAAMxiB,KAAI,CAACojB,EAAM/xB,IACW,aAAvB+xB,EAAK2iB,eAEL6nF,EAAAA,GAAAA,KAAA,KAAWhrE,KAAK,8BAA8Bv0D,OAAO,SAASwwF,IAAI,aAAYl0C,SAC3EvnB,GADK/xB,IAKHu8H,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,SAAGvnB,OATRzzB,EAYJ,IAlBa,IAoBnB,EA4BGy5Q,OAIC,EChCV,GA/BYt5L,IAA8B,IAA7B,aAAEw5L,EAAY,MAAEh6N,GAAOwgC,EAClC,MAAMkyH,EAAa,GASnB,OAPY,OAAZsnE,QAAY,IAAZA,GAAAA,EAActpQ,KAAK1O,IACP,OAAV0wM,QAAU,IAAVA,GAAAA,EAAYvyM,KAAK,CACfwtC,MAAO3rC,EAAE2rC,MACT0rC,QAASr3E,EAAEqnI,aACX,KAIF/K,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOinD,SAAS7sH,UAC5CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOnsD,IAAIzZ,UACzBslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAA,CAAC,oCAAkC2E,EAAMsmH,WAEjFhoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACf,OAAVq3J,QAAU,IAAVA,OAAU,EAAVA,EAAYhiM,KAAI,CAAC1O,EAAG3B,KACnBi+H,EAAAA,GAAAA,KAACiwH,GAAI,CACHpxK,UAAW8jC,GAAOt1B,KAClBA,KAAM3pF,EACN3B,MAAOA,GACFA,WAKT,ECWV,GApCmBm2Q,KAEjB,MAAMx2N,EAAQw0E,MACPyxC,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChCg0M,EAAcC,IAAmBj0M,EAAAA,EAAAA,UAAS,KAC1C4zM,EAAiBM,IAAsBl0M,EAAAA,EAAAA,UAAS,KAEvDP,EAAAA,EAAAA,YAAU,KACR00M,GAAqB,GACpB,IAEH,MAAMA,EAAsBpkP,UAC1B8sJ,GAAW,GACX,IAAIl5K,EAAO,CACTwe,OAAQ63B,EAAMsmH,MAEhB,IAAK,IAAD8zG,EAAAC,EAAAC,EACF,MAAMC,QAA4Bh3G,GAAe,kBAAmB,OAAQ55J,GAC5Ek5K,GAAW,GACXo3F,EAAmC,OAAnBM,QAAmB,IAAnBA,GAAyB,QAANH,EAAnBG,EAAqB5wQ,YAAI,IAAAywQ,GAAM,QAANC,EAAzBD,EAA2BzwQ,YAAI,IAAA0wQ,OAAZ,EAAnBA,EAAiCG,WACjDN,EAAsC,OAAnBK,QAAmB,IAAnBA,GAAyB,QAAND,EAAnBC,EAAqB5wQ,YAAI,IAAA2wQ,OAAN,EAAnBA,EAA2B3wQ,KAChD,CACA,MAAOpL,IACLskL,GAAW,EACb,CAAC,EAGH,OACEliD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBtsH,EAAAA,GAAAA,KAAC0kD,GAAI,CAAChjI,MAAOA,EAAO45N,gBAAiBA,KACrCt7I,EAAAA,GAAAA,KAACm3I,GAAG,CAACuE,aAAcA,EAAch6N,MAAOA,MACvC,ECtCP,GAAuB,mBAAvB,GAAsD,wBAAtD,GAAqF,mBAArF,GAA4I,oBAA5I,GAAuK,mBAAvK,GAAyN,iBAAzN,GAAmP,oFCqCnP,GAhCawgC,IAAU,MAANA,EAEf,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,IAAa5lE,UAC7CslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,IAAkB5lE,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,2BACvCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAC,yCACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SAAC,4EAG7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,IAAgB5+B,GAAI46C,aAAaC,QAAQ,aAAe,UAAY,WAAW7hF,SAAC,cAG9GijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAapS,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAAC,2BAK3FijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAU5lE,UACxBijF,EAAAA,GAAAA,KAAA,OAEE/oG,IAAI,4BACJmY,IAAI,gBAIN,ECjCV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,wBCAjW,GAAgL,oBAAhL,GAA6Q,mBAA7Q,GAA8S,0BAA9S,GAA+U,mBCgB/U,GAXa8yC,IAA0B,IAAzB,UAAErD,EAAS,KAAEwO,GAAMnL,EAC/B,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAmB5lE,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAa5lE,SAAM,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMh+C,SACpC2wF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAY5lE,SAAM,OAAJswC,QAAI,IAAJA,OAAI,EAAJA,EAAMtS,cAEhC,ECRJohM,GAAW,CACf,CACE9sO,MAAO,gBACP0rC,QAAS,iVAEX,CACE1rC,MAAO,aACP0rC,QAAS,wUAEX,CACE1rC,MAAO,aACP0rC,QACE,mOA2BN,GAvBiBmH,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACE89C,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,UAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwhB,KAAKpnF,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,oBAG3CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBo/N,GAAS/pQ,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECvCV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,wBCAjW,IAAgB,KAAO,mBAAmB,MAAQ,oBAAoB,QAAU,sBAAsB,QAAU,sBAAsB,SAAW,uBAAuB,SAAW,uBAAuB,QAAU,sBAAsB,YAAc,0BAA0B,KAAO,mBAAmB,KAAO,mBAAmB,WAAa,yBAAyB,KAAO,mBAAmB,MAAQ,oBAAoB,aAAe,2BAA2B,YAAc,0BAA0B,cAAgB,4BAA4B,KAAO,oBC4BviB,GAzBamgF,IAAe,IAAd,KAAEmL,GAAMnL,EAEpB,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4nD,KAAKxtH,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy5J,WAAWr/N,SAAA,EAChCslF,EAAAA,GAAAA,MAAA,OAAK3tF,MAAM,KAAKC,OAAO,KAAKutF,QAAQ,YAAY7sC,KAAK,OAAOgnL,MAAM,6BAA6Bx9L,UAAW8jC,GAAO8f,KAAK1lF,SAAA,EACpHslF,EAAAA,GAAAA,MAAA,KAAG,YAAU,6BAA4BtlF,SAAA,EACvCijF,EAAAA,GAAAA,KAAA,QAAMx8H,EAAE,+CAA+CwyF,OAAO,eAAe,eAAa,QAAQ,iBAAe,QAAQ,kBAAgB,WACzIgqC,EAAAA,GAAAA,KAAA,QAAM,YAAU,UAAU,YAAU,UAAUx8H,EAAE,0SAA0S6xF,KAAK,gBAEjW2qC,EAAAA,GAAAA,KAAA,QAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,YAAU1wF,GAAG,uBAAsByN,UACjCijF,EAAAA,GAAAA,KAAA,QAAM3qC,KAAK,OAAO7xF,EAAE,iCAI1Bw8H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAEswC,EAAKh+C,YAEzC2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO25J,aAAav/N,UAClCijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAOooB,YAAYhuF,SAAEswC,EAAKtS,cAEtC,ECpBJohM,GAAW,CACf,CACE9sO,MAAO,eACP0rC,QAAS,qCAEX,CACE1rC,MAAO,gBACP0rC,QAAS,0CAgCb,GAvBiBmH,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACE89C,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,cAAetf,GAAOotI,UACpC7yP,IAAKyrK,EAAY5rH,UAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwhB,KAAKpnF,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kBAG3CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBo/N,GAAS/pQ,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECvCV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,YAAc,8BAA8B,SAAW,2BAA2B,QAAU,0BAA0B,KAAO,uBAAuB,eAAiB,iCAAiC,WAAa,6BAA6B,aAAe,+BAA+B,YAAc,8BAA8B,KAAO,uBAAuB,YAAc,8BAA8B,iBAAmB,mCAAmC,QAAU,0BAA0B,UAAY,4BAA4B,YAAc,8BAA8B,cAAgB,gCAAgC,aAAe,+BAA+B,kBAAoB,oCAAoC,QAAU,0BAA0B,KAAO,uBAAuB,UAAY,6BC2H9pC,GAvHiBmgF,IAAsB,IAArB,YAAEymF,GAAazmF,EAE/B,OACE89C,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAC/C7yP,IAAKyrK,EAAY5rH,UAEjBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOwhB,KAAKpnF,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kCAI3CijF,EAAAA,GAAAA,KAAA,SAAOnhD,UAAW8jC,GAAO45J,YAAYx/N,UACnCslF,EAAAA,GAAAA,MAAA,SAAAtlF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,gBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,uBAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,kBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,aAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,gBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,0BAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,mDAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,iBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,oBAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,oBAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,kBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,sBAEP+4H,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAO65J,SAASz/N,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,iBACJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAKzzC,wBAKX+4H,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO85J,eAAe1/N,SAAA,EACpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOy5J,WAAWr/N,UAChCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4nD,KAAKxtH,SAAA,EAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+5J,YAAY3/N,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,oBAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kCAELslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOi6J,kBAAkB7/N,SAAA,EACvCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,SAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wBAELijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOk6J,UAAU9/N,UAC/BijF,EAAAA,GAAAA,KAAA,OAAK/oG,IAAI,gCAAgCmY,IAAI,kBAInDizF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO25J,aAAav/N,SAAA,EAClCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO4nD,KAAKxtH,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOm6J,iBAAiB//N,SAAA,EACtCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,cAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yBACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oCAGPijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO4nD,KAAKxtH,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOm6J,iBAAiB//N,SAAA,EACtCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,eAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yBACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oCAGPijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO4nD,KAAKxtH,UAC1BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOm6J,iBAAiB//N,SAAA,EACtCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,oBAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kDAITslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOo6J,YAAYhgO,SAAA,EACjCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOq6J,YAAYjgO,SAAA,EACjCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO+5J,YAAY3/N,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,gBAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kCAELslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOi6J,kBAAkB7/N,SAAA,EACvCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,SAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2BAGPijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOs6J,cAAclgO,UACnCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOm6J,iBAAiB//N,SAAA,EACtCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOg6J,cAAc5/N,SAAC,qBAC9CijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qEAKXslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwgB,QAAQpmF,SAAA,EAC7BijF,EAAAA,GAAAA,KAACzF,GAAI,CAAC17C,UAAWojD,KAAG,SAAUtf,GAAOp1D,QAASw2B,GAAG,WAAUhnC,SAAC,cAG5DijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO2lD,KAAKvrH,SAAC,8HAG3B,ECrGV,GAbsBmgO,KACpB,MAAMv0G,GAAclhG,EAAAA,EAAAA,QAAO,MAE3B,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAACm9I,GAAQ,KACTn9I,EAAAA,GAAAA,KAACo9I,GAAS,MACT,ECdP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBal7L,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,+BACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECjCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,iBACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,qBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,iBACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,4BACP06E,SAAU,iBACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,yDACPo1D,QAAS,yDACT92G,IAAK,qBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAI/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,SAAA,EAC9EslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfhB,qBAPmB,CAAC,CAAElsG,sBAAuB,IAQ7Ct+I,OAAQ,gBAGZm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KAEbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb2Bs7Q,KACzB,MAAM10G,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,wBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECjCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,UACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,UACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,qBACP06E,SAAU,UACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,wBACdp7I,MAAO,yDACPo1D,QAAS,yDACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAI/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,SAAA,EAC9EslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfhB,qBAPmB,CAAC,CAAElsG,sBAAuB,IAQ7Ct+I,OAAQ,eAGZm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KAEbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb2Bs7Q,KACzB,MAAM10G,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,mBAAmB,KAAO,mBAAmB,OAAS,qBAAqB,MAAQ,qBC0B1L,GAvBa5iD,IAA0C,IAAzC,YAAEymF,EAAW,mBAAE8mF,GAAoBvtK,EAC/C,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,aAActf,GAAOmmD,MAAM/rH,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,uBACvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO8nD,KAAK1tH,SAAC,mDAa7B,ECtBV,IAAgB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,MAAQ,wBAAwB,KAAO,uBAAuB,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,SAAW,2BAA2B,aAAe,+BAA+B,KAAO,uBAAuB,WAAa,6BAA6B,SAAW,2BAA2B,UAAY,6BCApd,GAAuB,mBAAvB,GAAgF,sBAAhF,GAAgH,sBAAhH,GAAgL,oBAAhL,GAA+M,uBAA/M,GAAgP,sBAAhP,GAAmR,yBAAnR,GAAyT,yBAAzT,GAA+V,yBAA/V,GAAiY,qBCyCjY,GAtCamlC,IAA+B,IAA9B,UAAErD,EAAS,KAAEwO,EAAI,IAAEpsF,GAAKihF,EACpC,OACE89C,EAAAA,GAAAA,KAAEzF,GAAI,CAAC17C,UAAWojD,KAAGpjD,EAAW8jC,IAAc5+B,GAAI46C,aAAaC,QAAQ,aAAevxC,EAAKz6B,IAAMy6B,EAAKs2K,OAAO5mN,SAC1GswC,GAAQA,EAAK/9C,GAAK,IAAM,GACvB+yF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,mBAGVrtH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAE7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,iBAI1CsnD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,IAAc5lE,SAAEswC,EAAKh+C,SAC7C2wF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAAEswC,EAAK08B,YACvCiW,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAEswC,EAAKtS,cAExCsnD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAmBid,OAAM,GAAAj0H,OAAK0hF,EAAKq8E,QAAO,OAAOzyI,IAAKo2D,EAAKinB,MAAOllE,IAAI,UACtF4wF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAWojD,KAAG,SAAUtf,IAAe5lE,SAC5CswC,EAAKqiK,sBAMR,ECjCN3sH,GAAQ,CACZ,CACEzzF,GAAI,IACJD,MAAO,uBACP06E,SAAU,SACVhvC,QAAS,ujBACTizK,SAAU,QACV0B,aAAc,gBACdp7I,MAAO,2DACPo1D,QAAS,2DACT92G,IAAK,oBACL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,+BACP06E,SAAU,SACVhvC,QAAS,mSACTizK,SAAU,QACV0B,aAAc,+BACdp7I,MAAO,mEACPo1D,QAAS,mEACT92G,IAAK,yBAEL+wM,OAAQ,YAEV,CACEr0N,GAAI,IACJD,MAAO,oBACP06E,SAAU,SACVhvC,QAAS,ygBACTizK,SAAU,QACV0B,aAAc,uBACdp7I,MAAO,yDACPo1D,QAAS,yDACT92G,IAAK,oBACL+wM,OAAQ,aAiCZ,GA7BiBzhL,IAAsB,IAArB,YAAEymF,GAAazmF,EAI/B,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,yBAA0Btf,GAAOotI,UAAW7yP,IAAKyrK,EAAY5rH,SAAA,EAC9EslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyyJ,WAAWr4N,UAChCijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACfhB,qBAPmB,CAAC,CAAElsG,sBAAuB,IAQ7Ct+I,OAAQ,eAGZm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2yJ,UAAUv4N,UAC/BijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,+BAA+Bi8B,IAAI,oBAAoBxwF,OAAO,SAAQs8C,UAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAU,YAAW9hC,SAAC,6CAG/GijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOlvE,KAAKsJ,SACzBgmF,GAAM3wH,KAAI,CAAC1O,EAAG3B,KAEbi+H,EAAAA,GAAAA,KAACiwH,GAAI,CAACpxK,UAAW8jC,GAAOt1B,KAAMA,KAAM3pF,GAAQ3B,WAI9C,ECpDV,GAb2Bs7Q,KACzB,MAAM10G,GAAclhG,EAAAA,EAAAA,QAAO,MACrBgoL,GAAqBhoL,EAAAA,EAAAA,QAAO,MAElC,OACE46D,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,CAAC/b,YAAaA,EAAa8mF,mBAAoBA,KACpDzvH,EAAAA,GAAAA,KAAC6yH,GAAQ,CAAClqF,YAAaA,KACvB3oC,EAAAA,GAAAA,KAAC8E,GAAQ,MACR,ECbP,IAAgB,QAAU,yBAAyB,UAAY,2BAA2B,cAAgB,+BAA+B,MAAQ,uBAAuB,eAAiB,gCAAgC,OAAS,wBAAwB,gBAAkB,iCAAiC,UAAY,2BAA2B,IAAM,qBAAqB,MAAQ,uBAAuB,YAAc,6BAA6B,gBAAkB,iCAAiC,OAAS,wBAAwB,YAAc,6BAA6B,eAAiB,gCAAgC,sBAAwB,uCAAuC,kBAAoB,mCAAmC,YAAc,6BAA6B,WAAa,4BAA4B,UAAY,2BAA2B,SAAW,0BAA0B,UAAY,2BAA2B,QAAU,yBAAyB,UAAY,2BAA2B,UAAY,2BAA2B,YAAc,6BAA6B,KAAO,sBAAsB,KAAO,sBAAsB,UAAY,2BAA2B,YAAc,6BAA6B,iBAAmB,kCAAkC,YAAc,6BAA6B,YAAc,6BAA6B,KAAO,sBAAsB,YAAc,8BCAp4C,GAAkC,0CAAlC,GAAqF,iCAArF,GAAiI,mCCcjIw4I,GAAQ5uP,SACJmvN,GACAiC,GACAjR,GACAmG,GACAyE,GACAjI,GACA/B,IAGJ,MAmLA,GAnLyBvtJ,IAElB,IAFmB,MACtBniE,GACHmiE,EACG,MAAO72E,EAAMkyQ,IAAW71M,EAAAA,EAAAA,UAAS,KAC1BkrL,EAAc4qB,IAAmB91M,EAAAA,EAAAA,UAAS,KAC1C+1M,EAAgBC,IAAqBh2M,EAAAA,EAAAA,UAAS,OAErDP,EAAAA,EAAAA,YAAU,KACN,MAAMonG,EAAS,IAAI+B,UAAUhnK,6BACvBq0Q,EAAU9vQ,KAAKwJ,MAAMib,KAAKsG,MAAQ,KAoCxC,OAlCA21I,EAAOwC,OAAS,KAAO,IAAD6sG,EAClBrvG,EAAOp1B,KACHtmH,KAAKpmB,UAAU,CACX0hB,OAAQ,YACRi4H,QAAc,OAALrmI,QAAK,IAALA,GAAW,QAAN69P,EAAL79P,EAAOioJ,YAAI,IAAA41G,OAAN,EAALA,EAAazlO,cAAchkB,QAAQ,IAAK,KACjDqnE,WAAY,KACZq0K,QAAS8N,IAEhB,EAGLpvG,EAAOloD,UAAa9kH,IAChB,MAAM0I,EAAU4oB,KAAK/lB,MAAMvL,EAAM8J,MACjC,GAAIpB,GAAWA,EAAQA,QAAQoB,KAAM,CACjC,MAAM6iC,EAAUjkC,EAAQA,QAAQoB,KAAK+G,KAAKi7E,IAAI,CAC1CvzD,KAAkB,IAAZuzD,EAAKvzD,KACXs+G,KAAM/qD,EAAK+qD,KACX/3H,KAAMgtE,EAAKhtE,KACXC,IAAK+sE,EAAK/sE,IACVqhH,MAAOt0C,EAAKs0C,UAGhB47I,EAAQrvO,GACR2vO,EAAW,KAAM3vO,GACjBqgI,EAAO5sC,OACX,GAGJ4sC,EAAOv3I,QAAWtD,MAGlB66I,EAAO4C,QAAU,OAGV,KACH5C,EAAO5sC,OAAO,CACjB,GACF,IAEH,MAAMk8I,EAAaA,CAACprL,EAAQpnF,KACxB,IAAIyyQ,EACJ,MAAMllP,EAAMtG,KAAKsG,MACXmlP,EAAS,MACTC,EAAY,EAAID,EAChBE,EAAe,GAAKF,EACpBG,EAAgB,GAAKH,EACrBI,EAAkB,GAAKJ,EAE7B,OAAQtrL,GACJ,IAAK,KACDqrL,EAAWzyQ,EAAKue,QAAOyjE,GAASz0D,EAAMy0D,EAAKvzD,MAASikP,IACpD,MACJ,IAAK,KAYL,QACID,EAAWzyQ,EAAKue,QAAOyjE,GAASz0D,EAAMy0D,EAAKvzD,MAASkkP,UAVxD,IAAK,MACDF,EAAWzyQ,EAAKue,QAAOyjE,GAASz0D,EAAMy0D,EAAKvzD,MAASmkP,IACpD,MACJ,IAAK,MACDH,EAAWzyQ,EAAKue,QAAOyjE,GAASz0D,EAAMy0D,EAAKvzD,MAASokP,IACpD,MACJ,IAAK,MACDJ,EAAWzyQ,EAAKue,QAAOyjE,GAASz0D,EAAMy0D,EAAKvzD,MAASqkP,IAK5DX,EAAgBM,EAAS,EAGvBM,EAAe,CACjBpxK,YAAY,EACZ+vD,QAAS,CACLmpD,OAAQ,CACJt1I,SAAS,GAEbylK,QAAS,CACL73G,UAAW,CACPymB,MAAO,SAAUn0G,GACb,MAAM,gBAANnlC,OAAuB45J,GAAsBz0H,EAAQsrK,IAAU,OAALr8L,QAAK,IAALA,OAAK,EAALA,EAAOooJ,uBACrE,KAIZ62B,OAAQ,CACJt7L,EAAG,CACCs5L,MAAO,CACHqE,UAAU,EACVywB,cAAe,KAGvBhrN,EAAG,CACCm2E,SAAU,QACVkjH,aAAa,EACb00B,aAAchnN,KAAK4D,OAAOmhP,EAAaxgP,KAAIi7E,GAAQA,EAAK/sE,OACxDw0M,aAAcjnN,KAAK0D,OAAOqhP,EAAaxgP,KAAIi7E,GAAQA,EAAKhtE,WAK9Dg+P,EAAY,CACd7jE,OAAQo4C,EAAaxgP,KAAIi7E,GACR,IAAI/6D,KAAK+6D,EAAKvzD,MACfwkP,mBAAmB,QAAS,CAEpC7rN,MAAO,QACP2xL,IAAK,cAIblmD,SAAU,CACN,CACIj5C,MAAO,aACP55I,KAAMunP,EAAaxgP,KAAIi7E,GAAQA,EAAK+qD,OACpC6lD,YAAa,qBACbyF,YAAa,EACbruG,KAAM,SACN4hC,gBAAiB,uBACjBsnJ,YAAa,KAKzB,OACIl8I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACIslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAuB5lE,SAAA,EACnCijF,EAAAA,GAAAA,KAAA,UACInhD,UAAS,GAAAlzE,OAAKg3G,GAAa,KAAAh3G,OAAuB,OAAnB8xQ,EAA0B96J,GAAkB,IAC3Er0C,QAASA,KACLovM,EAAkB,MAClBG,EAAW,KAAMxyQ,EAAK,EACxB0xC,SACL,QAGDijF,EAAAA,GAAAA,KAAA,UACInhD,UAAS,GAAAlzE,OAAKg3G,GAAa,KAAAh3G,OAAuB,QAAnB8xQ,EAA2B96J,GAAkB,IAC5Er0C,QAASA,KACLovM,EAAkB,OAClBG,EAAW,MAAOxyQ,EAAK,EACzB0xC,SACL,QAGDijF,EAAAA,GAAAA,KAAA,UACInhD,UAAS,GAAAlzE,OAAKg3G,GAAa,KAAAh3G,OAAuB,QAAnB8xQ,EAA2B96J,GAAkB,IAC5Er0C,QAASA,KACLovM,EAAkB,OAClBG,EAAW,MAAOxyQ,EAAK,EACzB0xC,SACL,QAGDijF,EAAAA,GAAAA,KAAA,UACInhD,UAAS,GAAAlzE,OAAKg3G,GAAa,KAAAh3G,OAAuB,QAAnB8xQ,EAA2B96J,GAAkB,IAC5Er0C,QAASA,KACLovM,EAAkB,OAClBG,EAAW,MAAOxyQ,EAAK,EACzB0xC,SACL,WAILijF,EAAAA,GAAAA,KAAC2pH,GAAI,CAACt+O,KAAMgzQ,EAAWt9Q,QAASq9Q,MACjC,ECkGX,GAlSgBl8L,IAGT,IAADs8L,EAAAC,EAAAC,EAAAC,EAAA,IAHW,MACf5+P,EAAK,MACLgjH,GACD7gD,EACC,MAAO0wK,EAAc4qB,IAAmB91M,EAAAA,EAAAA,UAAS,MAE3Cg5L,EAAWxhQ,GACE,OAAVA,QAA4BQ,IAAVR,GAAiC,KAAVA,GAAyB,GAATA,EAYlE,OATAioE,EAAAA,EAAAA,YAAU,KACRs0E,MAAM,mBACH7gF,MAAK+vE,GAAYA,EAAS08H,SAC1BzsM,MAAKvvD,IAAS,IAADuzQ,EACZ,MAAMC,EAA0B,OAAJxzQ,QAAI,IAAJA,GAAkF,QAA9EuzQ,EAAJvzQ,EAAMue,QAAOyjE,IAAI,IAAAyxL,EAAAC,EAAA,OAAQ,OAAJ1xL,QAAI,IAAJA,GAAY,QAARyxL,EAAJzxL,EAAMxjE,cAAM,IAAAi1P,OAAR,EAAJA,EAAc3mO,kBAAuB,OAALp4B,QAAK,IAALA,GAAa,QAARg/P,EAALh/P,EAAO8J,cAAM,IAAAk1P,OAAR,EAALA,EAAe5mO,cAAc,eAAAymO,OAA9E,EAAJA,EAAoFxsQ,KAAI1O,GAAM,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGs7Q,QAAO,GACnIxB,EAAgBqB,EAAoB,GACpC,GACH,KAGDx8I,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOpnC,UAAUx+B,SAAA,EAC/BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOs8J,cAAcliO,SAAA,EACnCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,MAAMllF,SAAA,IAAApxC,OAAU,OAALoU,QAAK,IAALA,OAAK,EAALA,EAAO9hB,KAAI,KAAA0N,OAAS,OAALoU,QAAK,IAALA,OAAK,EAALA,EAAO8J,OAAM,KAAI,aAC9Dw4G,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6iD,MAAMzoH,SAAA,CAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOm/P,aAAmB,OAALn/P,QAAK,IAALA,OAAK,EAALA,EAAOmoJ,uBAC3D7lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOw8J,gBAAgBpiO,SAAA,CAEnB,QAAV,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO4rO,WAA+BjsP,KAAV,OAALqgB,QAAK,IAALA,OAAK,EAALA,EAAO4rO,MAAoC,MAAV,OAAL5rO,QAAK,IAALA,OAAK,EAALA,EAAO4rO,MAA6B,KAAV,OAAL5rO,QAAK,IAALA,OAAK,EAALA,EAAO4rO,MAA4B,OAAV,OAAL5rO,QAAK,IAALA,OAAK,EAALA,EAAO4rO,MAClGtpH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,eAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOm/P,aAAcp5G,GAAsB,OAAL/lJ,QAAK,IAALA,OAAK,EAALA,EAAO4rO,WAEvC,QAA/B,OAAL5rO,QAAK,IAALA,OAAK,EAALA,EAAO6rO,gCAAyElsP,KAA/B,OAALqgB,QAAK,IAALA,OAAK,EAALA,EAAO6rO,2BAA8E,MAA/B,OAAL7rO,QAAK,IAALA,OAAK,EAALA,EAAO6rO,2BAAuE,KAA/B,OAAL7rO,QAAK,IAALA,OAAK,EAALA,EAAO6rO,2BAAsE,OAA/B,OAAL7rO,QAAK,IAALA,OAAK,EAALA,EAAO6rO,2BAC1LvpH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,eAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CACrB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOm/P,aAAcp5G,GAAsB,OAAL/lJ,QAAK,IAALA,OAAK,EAALA,EAAO6rO,2BAC9CvpH,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAO08J,iBAAiBtiO,SAAA,EACvCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO28J,YAAYviO,SAAC,kBACrCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO48J,YAAYxiO,SAAC,oIAMzC,KAGL2jN,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAOy/P,4BACdn9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,6BAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOm/P,aAAmB,OAALn/P,QAAK,IAALA,OAAK,EAALA,EAAOy/P,yBAAyB9F,uBAIvFhZ,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAO0/P,wBACdp9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,sBAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAO0/P,qBAAsB,GAAG,UAWxF/e,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAO2/P,sBACdr9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,wBAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAO,OAALh9B,QAAK,IAALA,GAAyB,QAApBy+P,EAALz+P,EAAO2/P,0BAAkB,IAAAlB,OAApB,EAALA,EAA2B9E,kBAAiBr3I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAO94F,OAAOkzB,SAAA,CAAC,IAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO8J,gBAIvH62O,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAO4/P,cACdt9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,gBAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAO,OAALh9B,QAAK,IAALA,GAAiB,QAAZ0+P,EAAL1+P,EAAO4/P,kBAAU,IAAAlB,OAAZ,EAALA,EAAmB/E,kBAAiBr3I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAO94F,OAAOkzB,SAAA,CAAC,IAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO8J,gBAI/G62O,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAO6/P,gBACdv9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,kBAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAO,OAALh9B,QAAK,IAALA,GAAmB,QAAd2+P,EAAL3+P,EAAO6/P,oBAAY,IAAAlB,OAAd,EAALA,EAAqBhF,kBAAiBr3I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAO94F,OAAOkzB,SAAA,CAAC,IAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO8J,gBAIjH62O,EAAa,OAAL3gP,QAAK,IAALA,OAAK,EAALA,EAAO8/P,aACdx9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOzjH,MAAM69C,SAAO,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO8/P,gBAG1Cx9I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOy8J,UAAUriO,SAAA,EAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO1hH,IAAI87C,SAAC,oCAC5BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOzjH,MAAM69C,SAAA,CAAC,iBAAaijF,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,0CAKlD,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO+/P,cAAmB,OAAL//P,QAAK,IAALA,OAAK,EAALA,EAAOggQ,iBAAsB,OAALhgQ,QAAK,IAALA,OAAK,EAALA,EAAOigQ,oBAAyB,OAALjgQ,QAAK,IAALA,OAAK,EAALA,EAAOkgQ,oBAC/EjgJ,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOw8J,gBAAgBpiO,UACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOu9J,YAAYnjO,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmhB,OAAO/mF,SAAC,UAC/BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOw9J,gBAAgBpjO,SAAA,EAC/B,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOggQ,iBACN//I,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMj1C,EAAMggQ,cAAet/Q,OAAO,SAASwwF,IAAI,sBAAqBl0C,UACrEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,iBAIN,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOigQ,oBACNhgJ,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMj1C,EAAMigQ,iBAAkBv/Q,OAAO,SAASwwF,IAAI,sBAAqBl0C,UACxEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,oBAIN,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOkgQ,mBACNjgJ,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMj1C,EAAMkgQ,gBAAiBx/Q,OAAO,SAASwwF,IAAI,sBAAqBl0C,UACvEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,wBAIe,QAArB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOqgQ,sBAAqD1gR,KAArB,OAALqgB,QAAK,IAALA,OAAK,EAALA,EAAOqgQ,iBACxCpgJ,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMj1C,EAAMqgQ,eAAgB3/Q,OAAO,SAASwwF,IAAI,sBAAqBl0C,UACtEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,uBAIVijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,qBAGJ,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO+/P,cACN9/I,EAAAA,GAAAA,KAAA,KAAGhrE,KAAMj1C,EAAM+/P,WAAYr/Q,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAClEijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOp1D,OAAOxQ,UAC/BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAM,uBAU+C,IAAnE5sC,SAAS7G,OACT02H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOw8J,gBAAgBpiO,UACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOu9J,YAAYnjO,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmhB,OAAO/mF,SAAC,WAC/BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOw9J,gBAAgBpjO,UACrCijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAI,WAAWhnC,UACnBijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAO09J,YAAYtjO,UACpCslF,EAAAA,GAAAA,MAAA,QAAAtlF,SAAA,CAAM,YAAe,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOioJ,uBA4BrC3lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO29J,eAAevjO,SAAA,EACpCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO49J,eAAexjO,UACpCijF,EAAAA,GAAAA,KAACwgJ,GAAgB,CACfzgQ,MAAOA,OAGXigH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO89J,sBAAsB1jO,UAC3CslF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAO+9J,kBAAkB3jO,SAAA,EACzCijF,EAAAA,GAAAA,KAAA,SAAAjjF,UACEslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAOg+J,YAAY5jO,SAAA,EAChCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,QAClCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,SAClCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,QAClCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,SAClCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,SAClCijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOi+J,WAAW7jO,SAAC,cAGtCijF,EAAAA,GAAAA,KAAA,SAAOnhD,UAAW8jC,GAAOk+J,UAAU9jO,UACjCslF,EAAAA,GAAAA,MAAA,MAAIxjD,UAAW8jC,GAAOm+J,SAAS/jO,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOihQ,mBAAoB,GAC1B3+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOihQ,kBAAmB,GAAG,QAErF3+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOihQ,kBAAmB,GAAG,UAG3FhhJ,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOkoJ,WAAY,GAClB5lC,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOkoJ,UAAW,GAAG,QAE7E5lC,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOkoJ,UAAW,GAAG,UAGnFjoC,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOuqJ,YAAa,GACnBjoC,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOuqJ,WAAY,GAAG,QAE9EjoC,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOuqJ,WAAY,GAAG,UAGpFtqC,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOohQ,oBAAqB,GAC3B9+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOohQ,mBAAoB,GAAG,QAEtF9+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOohQ,mBAAoB,GAAG,UAG5FnhJ,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOqhQ,oBAAqB,GAC3B/+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOqhQ,mBAAoB,GAAG,QAEtF/+I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOqhQ,mBAAoB,GAAG,UAG5FphJ,EAAAA,GAAAA,KAAA,MAAInhD,UAAW8jC,GAAOo+J,UAAUhkO,UACxB,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAOshQ,oBAAqB,GAC3Bh/I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOs+J,QAAQlkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOshQ,mBAAoB,GAAG,QAEtFh/I,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOu+J,UAAUnkO,SAAA,CAAEwoH,GAA2B,OAALxlJ,QAAK,IAALA,OAAK,EAALA,EAAOshQ,mBAAoB,GAAG,mBAQlGzuB,IACAvwH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,KAAMtf,GAAO2+J,aAAavkO,SAAA,CAAC,WAC9B,OAALh9B,QAAK,IAALA,OAAK,EAALA,EAAO9hB,KAAK,KAAQ,OAAL8hB,QAAK,IAALA,OAAK,EAALA,EAAO8J,OAAO,SAExCm2G,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO4+J,UAAUxkO,SAClB,OAAZ61M,QAAY,IAAZA,GAAyB,QAAb+rB,EAAZ/rB,EAAc16M,MAAM,aAAK,IAAAymO,OAAb,EAAZA,EAA2BvsQ,KAAI,CAACw+B,EAAM7uC,KAC9Bi+H,EAAAA,GAAAA,KAAA,OAAAjjF,SAAkBnM,GAAR7uC,iBAmB7Bi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO4nD,KAAKxtH,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO6+J,YAAYzkO,UACjCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iOAGN,ECvNP,GA3EegwM,KACb,MAAM,MAAEhtO,GAAU21G,KAgElB,OACEsK,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACEijF,EAAAA,GAAAA,KAACuvH,GAAO,CACNxvO,MAAOA,EACPgjH,MAlEQ,CACZ,CACE1zF,MAAO,uDACP0rC,QACE,iUAEJ,CACE1rC,MAAO,uCACP0rC,QACE,iSAGJ,CACE1rC,MAAO,qBACP0rC,QACE,iTAEJ,CACE1rC,MAAO,iBACP0rC,QACE,ulBAEJ,CACE1rC,MAAO,uBACP0rC,QACE,iVA2CD,EC1EP,IAAgB,SAAW,2BAA2B,IAAM,sBAAsB,KAAO,uBAAuB,OAAS,yBAAyB,IAAM,sBAAsB,IAAM,sBAAsB,UAAY,4BAA4B,aAAe,gCCAjQ,GAAuB,mBAAvB,GAAoD,sBAApD,GAAgF,kBAAhF,GAA4G,sBAA5G,GAAyI,mBAAzI,GAAmK,mBAAnK,GAAiM,uBAAjM,GAA2P,mBAA3P,GAAqR,mBAArR,GAAmT,uBAAnT,GAAuV,yBAAvV,GAA2X,uBAA3X,GAA6Z,uBAA7Z,GAA+b,uBCwE/b,GAnEamH,IAKN,IAADu/L,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IALQ,eACVC,EAAc,mBACd/5G,EAAkB,WAClBg6G,EAAU,UACVC,GACHjgM,EAEG,OACImgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACvBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,SACvB1gD,OAAOqtB,KAAKu4P,GAAgBjjR,OAAuB,OAAdijR,QAAc,IAAdA,GAAoB,QAANR,EAAdQ,EAAgBj6G,YAAI,IAAAy5G,OAAN,EAAdA,EAAsBnpO,cAAgB,SAEhF0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,iBAAkBtf,UAEzCqd,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAAE1gD,OAAOqtB,KAAKu4P,GAAgBjjR,OAAuB,OAAdijR,QAAc,IAAdA,GAAoB,QAANP,EAAdO,EAAgBhkR,YAAI,IAAAyjR,OAAN,EAAdA,EAAsBppO,cAAgB,YAEhH0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,UACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAGtf,GAAkC,WAAfu/J,EAA0Bv/J,GAAkBA,IAAiB5lE,UAC/FijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAgB5lE,SAED,OAAvBmrH,QAAsDxoK,IAAvBwoK,GAA2D,KAAvBA,EAEzC,KAAb,OAATi6G,QAAS,IAATA,OAAS,EAATA,EAAWnjR,SAA8B,OAAdmjR,QAAoCziR,IAAdyiR,EAA0B,MACvE58G,GAA+B,OAAT48G,QAAS,IAATA,GAAiC,QAAxBR,EAATQ,EAAWC,8BAAsB,IAAAT,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC15G,mBAA6B,OAATi6G,QAAS,IAATA,GAAiC,QAAxBN,EAATM,EAAWC,8BAAsB,IAAAP,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC35G,uBAE9H5C,GAAsB2C,EAA6B,OAATi6G,QAAS,IAATA,GAAiC,QAAxBJ,EAATI,EAAWC,8BAAsB,IAAAL,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC75G,iCAM1G9lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,OAAO,iBAGnCklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB3hE,MAAO,CAAEqR,MAAOr/B,WAAyB,OAAdivP,QAAc,IAAdA,OAAc,EAAdA,EAAgBh6G,WAAa,EAAI,UAAY,WAAYlrH,SAAA,CAC/G1gD,OAAOqtB,KAAKu4P,GAAgBjjR,OAASumK,GAAsB08G,EAAeh6G,UAAyB,OAAdg6G,QAAc,IAAdA,OAAc,EAAdA,EAAgB95G,uBAAyB,MAAM,WAG7I9lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,OAAO,kBAGnCklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB3hE,MAAO,CAAEqR,MAAOr/B,WAAyB,OAAdivP,QAAc,IAAdA,OAAc,EAAdA,EAAgB33G,YAAc,EAAI,UAAY,WAAYvtH,SAAA,CAChH1gD,OAAOqtB,KAAKu4P,GAAgBjjR,OAASumK,GAAoC,OAAd08G,QAAc,IAAdA,OAAc,EAAdA,EAAgB33G,WAA0B,OAAd23G,QAAc,IAAdA,OAAc,EAAdA,EAAgB95G,uBAAyB,MAAM,WAG/I9lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EACxBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAC5BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,QAAQk/B,KAAK,OAAO,aAGnC6iG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAe5lE,SAC1B1gD,OAAOqtB,KAAKu4P,GAAgBjjR,OAAuB,OAAdijR,QAAc,IAAdA,OAAc,EAAdA,EAAgB97L,OAAS,aAIzE,ECpEd,IAAgB,QAAU,yBAAyB,KAAO,sBAAsB,QAAU,yBAAyB,UAAY,2BAA2B,OAAS,wBAAwB,aAAe,8BAA8B,cAAgB,+BAA+B,aAAe,8BAA8B,eAAiB,gCAAgC,IAAM,qBAAqB,KAAO,sBAAsB,SAAW,0BAA0B,KAAO,sBAAsB,MAAQ,uBAAuB,SAAW,0BAA0B,OAAS,wBAAwB,MAAQ,uBAAuB,WAAa,4BAA4B,SAAW,0BAA0B,MAAQ,uBAAuB,YAAc,6BAA6B,YAAc,6BAA6B,OAAS,yBCKzzB2yL,GAAU,CACZ,CACIuJ,OAAQ,UACRC,OAAQ,UACRC,OAAQ,WAEZ,CACIF,OAAQ,UACRC,OAAQ,UACRC,OAAQ,WAEZ,CACIF,OAAQ,UACRC,OAAQ,UACRC,OAAQ,YA6FhB,GAzFgBrgM,IAMT,IAADy/L,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAQ,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IANW,IACbC,EAAG,KACHvhJ,EAAI,UACJugJ,EAAS,mBACTj6G,EAAkB,WAClBg6G,GACHhgM,EACG,MAAOkhM,EAAYC,IAAiB37M,EAAAA,EAAAA,UAAS,IACtC47M,EAAaC,IAAkB77M,EAAAA,EAAAA,UAAS,IAY/C,OACI26D,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6gK,QAAQzmO,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UACxBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOm2J,QAAQ/7N,SAC1B+7N,GAAQ1mQ,KAAI,CAAC1O,EAAG3B,KACbsgI,EAAAA,GAAAA,MAAA,UACIxjD,UAAWojD,KAAGtf,GAAO5T,UAAW,CAAE,CAAC4T,GAAOsgB,QAASlhI,IAAUqhR,IACjD90M,QAASA,IAjBtBvsE,KACnBshR,EAActhR,GAEVwhR,EADU,IAAVxhR,GAAyB,IAAVA,EACA,GAGA,GACnB,EAU+C0hR,CAAc1hR,GAAOg7C,SAAA,EAEhDijF,EAAAA,GAAAA,KAAA,QAAMh/E,MAAO,CAAEi2E,gBAAiBvzH,EAAE2+Q,WAClCriJ,EAAAA,GAAAA,KAAA,QAAMh/E,MAAO,CAAEi2E,gBAAiBvzH,EAAE4+Q,WAClCtiJ,EAAAA,GAAAA,KAAA,QAAMh/E,MAAO,CAAEi2E,gBAAiBvzH,EAAE6+Q,YAJ7BxgR,UASrBsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOnsD,IAAIzZ,SAAA,EACvBslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6iD,MAAMzoH,SAAA,CAAC,SAAgB,OAATolO,QAAS,IAATA,GAAiC,QAAxBR,EAATQ,EAAWC,8BAAsB,IAAAT,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwC73J,gBAAQ,IAAA83J,OAAvC,EAATA,EAAkDvpO,cAAc,QACrG+pF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt6B,OAAOtrC,SAAA,CAAC,UAAiB,OAATolO,QAAS,IAATA,GAAiC,QAAxBL,EAATK,EAAWC,8BAAsB,IAAAN,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAM,QAANC,EAAtCD,EAAwClhJ,YAAI,IAAAmhJ,OAAnC,EAATA,EAA8C1pO,cAAc,QACnG+pF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOqxB,MAAMj3F,SAAA,CAAC,SAAgB,OAATolO,QAAS,IAATA,GAAiC,QAAxBK,EAATL,EAAWC,8BAAsB,IAAAI,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwC14J,gBAAQ,IAAA24J,OAAvC,EAATA,EAAkDpqO,cAAc,aAEzG+pF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOlvE,KAAKsJ,SAAA,EACP,IAAfqmO,GAAmC,IAAfA,KACd,OAAJxhJ,QAAI,IAAJA,OAAI,EAAJA,EAAMrhI,MAAM,EAAG+iR,GAAahrK,MAAK,CAAC3xG,EAAGC,IAAMosB,WAAWrsB,EAAE+8Q,WAAa1wP,WAAWpsB,EAAE88Q,WAAa,GAAK,IAAGtxQ,KAAI,CAAC1O,EAAG3B,KAC3GsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAOt1B,KAAM,CAAE,CAACs1B,GAAO0nD,WAAW,IAAQttH,SAAA,EACzDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6iD,MAAMzoH,SAAA,CAAEwoH,GAAsB7hK,EAAEggR,UAAWhgR,EAAEykK,uBAAuB,QAC3F9lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOt6B,OAAOtrC,SAAA,CAAC,IAAEwoH,GAAsB7hK,EAAEigR,UAAWjgR,EAAEkgR,4BACtEvhJ,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOqxB,MAAMj3F,SAAA,CAAEwoH,GAAsB7hK,EAAEmgR,QAAS,GAAG,QAEnE7jJ,EAAAA,GAAAA,KAAA,OACInhD,UAAW8jC,GAAO/xE,KAClBoQ,MAAO,CAAEtM,MAAM,GAAD/oC,OAA0B,IAArBjI,EAAEogR,iBAAsB,UAPgB/hR,OAY3EsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAOohK,WAA2B,WAAf7B,EAA0Bv/J,GAAO0nD,SAAW1nD,GAAOynD,UAAUrtH,SAAA,EAC/FijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAED,OAAvBmrH,QAAsDxoK,IAAvBwoK,GAA2D,KAAvBA,EAEzC,KAAb,OAATi6G,QAAS,IAATA,OAAS,EAATA,EAAWnjR,SAA8B,OAAdmjR,QAAoCziR,IAAdyiR,EAA0B,MACvE58G,GAA+B,OAAT48G,QAAS,IAATA,GAAiC,QAAxBQ,EAATR,EAAWC,8BAAsB,IAAAO,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC16G,mBAA6B,OAATi6G,QAAS,IAATA,GAAiC,QAAxBU,EAATV,EAAWC,8BAAsB,IAAAS,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC36G,uBAE9H5C,GAAsB2C,EAA6B,OAATi6G,QAAS,IAATA,GAAiC,QAAxBY,EAATZ,EAAWC,8BAAsB,IAAAW,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC76G,0BAG9FnoC,EAAAA,GAAAA,KAACsC,GAAI,CAACjtC,KAAqB,WAAf6sL,EAA0Bv/J,GAAO0nD,SAAW1nD,GAAOynD,SAAUnsK,KAAI,SAAA0N,OAAWu2Q,GAAc/kP,KAAK,WAG9F,IAAfimP,GAAmC,IAAfA,KACf,OAAHD,QAAG,IAAHA,GAA0B,QAAvBF,EAAHE,EAAK5iR,MAAM,EAAG+iR,UAAY,IAAAL,GAA4E,QAA5EC,EAA1BD,EAA4B3qK,MAAK,CAAC3xG,EAAGC,IAAMosB,WAAWrsB,EAAE+8Q,WAAa1wP,WAAWpsB,EAAE88Q,WAAa,GAAK,WAAE,IAAAR,OAAnG,EAAHA,EAAwG9wQ,KAAI,CAAC1O,EAAG3B,KAC5GsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAOt1B,KAAM,CAAE,CAACs1B,GAAOynD,WAAW,IAAQrtH,SAAA,EACzDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO6iD,MAAMzoH,SAAEwoH,GAAsB7hK,EAAEggR,UAAWhgR,EAAEykK,0BACpEnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOt6B,OAAOtrC,SAAEwoH,GAAsB7hK,EAAEigR,UAAWjgR,EAAEkgR,2BACrE5jJ,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOqxB,MAAMj3F,SAAEwoH,GAAsB7hK,EAAEmgR,QAAS,MAEhE7jJ,EAAAA,GAAAA,KAAA,OACInhD,UAAW8jC,GAAO/xE,KAClBoQ,MAAO,CAAEtM,MAAM,GAAD/oC,OAA0B,IAArBjI,EAAEogR,iBAAsB,UAPgB/hR,WAa7E,EC5Gd,GAAsB,sBAAtB,GAAmD,uBAAnD,GAAiF,uBAAjF,GAAiH,yBAAjH,GAAkJ,wBAAlJ,GAAmL,yBAAnL,GAAuN,2BAAvN,GAA0P,wBAA1P,GAAwR,sBAAxR,GAAoT,sBAApT,GAAiV,uBAAjV,GAAqZ,uBAArZ,GAAub,2BAAvb,GAA6d,2BAA7d,GAAmwB,+BCwInwB,GAlIiBmgF,IAcV,IAdW,aAChB8hM,EAAY,gBACZC,EAAe,WACfC,EAAU,aACVC,EAAY,sBACZC,EAAqB,MACrBrkO,EAAK,QACL8lI,EAAO,WACPC,EAAU,eACVX,EAAc,oBACdS,EAAmB,iBACnBD,EAAgB,sBAChBI,EAAqB,qBACrBgoE,GACD7rK,EACC,MAAMmiM,EAAcL,EAAa7rO,cAgB3B8yM,GAAgB1jL,EAAAA,EAAAA,UAAQ,KAAO,IAADwb,EAClC,GAAyB,OAApBgrK,QAAoB,IAApBA,IAAAA,EAAsBjmF,QAAS,MAAO,GAE3C,IAAIz8J,EAAwC,QAApC03E,EAAG,IAAIgrK,EAAqBjmF,gBAAQ,IAAA/kF,OAAA,EAAjCA,EAAmCu1B,MAAK,CAAC3xG,EAAGC,KAAO,OAADD,QAAC,IAADA,OAAC,EAADA,EAAG29Q,kBAAmB,OAAD19Q,QAAC,IAADA,OAAC,EAADA,EAAG09Q,mBAErF,OAAmB,OAAZH,QAAY,IAAZA,GAAAA,EAAcljR,IAnBDsjR,EAACC,EAAYn5Q,EAAM00C,KACvC,GAAS,OAAJ10C,QAAI,IAAJA,IAAAA,EAAMrM,OAAQ,MAAO,GAE1B,MAAMylR,EAAa,CACjBxmR,KAAMA,CAAC0I,EAAGC,KAAC,IAAA8nP,EAAA,OAAM,OAAD/nP,QAAC,IAADA,GAAO,QAAN+nP,EAAD/nP,EAAG1I,YAAI,IAAAywP,OAAN,EAADA,EAASE,cAAchoP,EAAE3I,KAAK,EAC9CunK,MAAOA,CAAC7+J,EAAGC,KAAO,OAADD,QAAC,IAADA,OAAC,EAADA,EAAGuhK,qBAAsB,OAADthK,QAAC,IAADA,OAAC,EAADA,EAAGshK,oBAC5CD,UAAWA,CAACthK,EAAGC,KAAO,OAADD,QAAC,IAADA,OAAC,EAADA,EAAGshK,YAAa,OAADrhK,QAAC,IAADA,OAAC,EAADA,EAAGqhK,YAGzC,MAAO,IAAI58J,GAAMitG,MAAK,CAAC3xG,EAAGC,IACd,QAAVm5C,EAAkB0kO,EAAWD,GAAY79Q,EAAGC,GAAK69Q,EAAWD,GAAY59Q,EAAGD,IAC5E,EAQ0B49Q,CAAcJ,EAAaljR,IAAKoK,EAAM00C,GAAS10C,CAAI,GAC7E,CAAC84Q,EAAcpkO,EAAOguM,IAEnBG,GAAkB3mL,EAAAA,EAAAA,UAAQ,IACzBy8M,EAEe,OAAb/4B,QAAa,IAAbA,OAAa,EAAbA,EAAerhO,QAAQlmB,IAAC,IAAAghR,EAAAC,EAAAC,EAAA78G,EAAA88G,EAAA,OAC5B,OAADnhR,QAAC,IAADA,GAAO,QAANghR,EAADhhR,EAAGskK,YAAI,IAAA08G,GAAmB,QAAnBC,EAAPD,EAASvwP,QAAQ,IAAK,YAAI,IAAAwwP,GAAe,QAAfC,EAA1BD,EAA4BxsO,qBAAa,IAAAysO,OAAxC,EAADA,EAA2CnqO,SAAS4pO,MACnD,OAAD3gR,QAAC,IAADA,GAAO,QAANqkK,EAADrkK,EAAGzF,YAAI,IAAA8pK,GAAe,QAAf88G,EAAP98G,EAAS5vH,qBAAa,IAAA0sO,OAArB,EAADA,EAAwBpqO,SAAS4pO,GAAY,IAJrBp5B,GAMzB,CAAC+4B,EAAc/4B,IAElB,OACE5oH,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAgB5lE,SAAA,EAgB9BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACd,OAAV+oI,QAAU,IAAVA,OAAU,EAAVA,EAAY1zK,KAAI,CAAC23G,EAAUhoH,KAC1Bi+H,EAAAA,GAAAA,KAAA,UAEEnhD,UAAWojD,KAAGtf,GAAa,CAAE,CAACA,IAAgBoH,EAASA,WAAa47D,IACpEr3G,QAASA,IAAMy3G,EAAsBh8D,GAAUhtE,SAE9CgtE,EAASA,UAJLhoH,QASXsgI,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAay1I,SAAWn4P,GAAMA,EAAEurD,iBAAiBzO,SAAA,EAChEijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GACXprF,KAAK,OACLr4B,MAAO8kR,EACP7gL,SAAWljG,GAAMgkR,EAAgBhkR,EAAEQ,OAAOvB,OAC1C+pK,YAAY,SACZthD,UAAQ,KAEVqY,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAc5lE,UAC/BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,SAASk/B,KAAK,aAI7BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAa5lE,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACxB,CAAC,OAAQ,QAAS,aAAa3qC,KAAI,CAAC04B,EAAK/oC,KACxCi+H,EAAAA,GAAAA,KAAA,OAAiBnhD,UAAW8jC,GAAW5lE,UACrCijF,EAAAA,GAAAA,KAAA,OACEnhD,UAAWojD,KAAG,UAAW,CAAE,CAACtf,IAAsBwhK,EAAaljR,MAAQ6pC,IACvEwjC,QAASA,IAAM41M,EAAWp5O,GAAKiS,SAEtB,SAARjS,EAAiB,OAAiB,UAARA,EAAkB,QAAU,YALjD/oC,OAWE,OAAfmsP,QAAe,IAAfA,OAAe,EAAfA,EAAiB97O,KAAI,CAAC1O,EAAG3B,KAAK,IAAA+iR,EAAAC,EAAAC,EAAA,OAC7B3iJ,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAwB5+B,GAAE,aAAAp4E,OAAejI,EAAEskK,MAAOjrH,SAAA,EACjEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAYr0C,QAASA,IAAM81M,EAAsB,IAAIrnO,UACnEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAY5lE,UAC1BijF,EAAAA,GAAAA,KAAA,QAAAjjF,SAAQ,OAADr5C,QAAC,IAADA,GAAO,QAANohR,EAADphR,EAAGskK,YAAI,IAAA88G,GAAmB,QAAnBC,EAAPD,EAAS3wP,QAAQ,IAAK,YAAI,IAAA4wP,OAAzB,EAADA,EAA4BzsO,uBAIzC0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACxBwoH,GAAuB,OAAD7hK,QAAC,IAADA,OAAC,EAADA,EAAGwkK,mBAAqB,OAADxkK,QAAC,IAADA,OAAC,EAADA,EAAGykK,0BAEnDnoC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,UACzBslF,EAAAA,GAAAA,MAAA,OAAKxjD,WAAY,OAADn7E,QAAC,IAADA,OAAC,EAADA,EAAGukK,WAAY,EAAItlD,GAAkBA,GAAgB5lE,SAAA,EACjE,OAADr5C,QAAC,IAADA,OAAC,EAADA,EAAGukK,WAAY,EAAI,GAAK,IACA,QADG+8G,EAC3BhyP,WAAY,OAADtvB,QAAC,IAADA,OAAC,EAADA,EAAGukK,kBAAU,IAAA+8G,OAAA,EAAxBA,EAA0Br/G,QAAQ,GAAG,WAdV5jK,EAiB3B,SAGP,ECpIV,GAAwB,qBAAxB,GAAwD,wBAAxD,GAAsF,mBAAtF,GAAgH,oBAAhH,GAA6I,sBAA7I,GAA2K,qBAA3K,GAAsM,mBAAtM,GAA+N,mBAA/N,GAAoW,0BCK9Vk6H,GAAa,CAAC,iBAAkB,iBAsDtC,GApDc/5C,IAAU,MAANA,EAChB,MAAO0tK,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,IACxCoxM,EAASC,IAAcrxM,EAAAA,EAAAA,UAASu0D,GAAW,IAElD,OACEoG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAa5lE,SAAA,EAC3BijF,EAAAA,GAAAA,KAACuE,GAAQ,CACP1lD,UAAW8jC,GACXzjH,MAAO45Q,EACPx9N,SAAUy9N,EACVh4Q,QAASk7H,MAEX+D,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACxBk/E,GAAW7pH,KAAI,CAAC1O,EAAG3B,KAClBi+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAa,CACzB,CAACA,IAAgB5gH,IAAU6tP,IAE7BthL,QAASA,IAAMuhL,EAAe9tP,GAAOg7C,SAGpCr5C,GAFI3B,QAMXi+H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,UAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAW5lE,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,cAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,WAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,UACX,IAAhB6yM,IACCvtH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,SAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,cAGf,IAAhB6yM,IACC5vH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SAAC,iBAIlCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAkB5lE,SAAA,EAChCijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAG,WAAUhnC,SAAC,WAAa,MAAEijF,EAAAA,GAAAA,KAACzF,GAAI,CAACx2C,GAAG,WAAUhnC,SAAC,YAAc,yBAEnE,ECvDV,GAA0B,yBAA1B,GAA0D,sBAA1D,GAAuF,sBAAvF,GAAmH,qBAAnH,GAA+I,sBAA/I,GAA8K,wBAA9K,GAAgN,yBAAhN,GAAgP,sBAAhP,GAA6Q,sBAA7Q,GAA4S,wBCA5S,IAAgB,KAAO,mBAAmB,MAAQ,oBAAoB,MAAQ,oBAAoB,IAAM,kBAAkB,IAAM,mBCAhI,IAAgB,KAAO,qBAAqB,MAAQ,sBAAsB,QAAU,wBAAwB,MAAQ,sBAAsB,MAAQ,sBAAsB,MAAQ,sBAAsB,SAAW,yBAAyB,OAAS,uBAAuB,QAAU,wBAAwB,eAAiB,+BAA+B,aAAe,6BAA6B,UAAY,0BAA0B,OAAS,uBAAuB,OAAS,uBAAuB,SAAW,yBAAyB,QAAU,wBAAwB,YAAc,6BCK5jBkoO,GAAWjyP,WAAW1pB,OACtB47Q,GAAWlyP,WAAW1pB,OACtBk7I,GAASxxH,WAAW1pB,KA0X1B,GAxXe44E,IAQR,IAADijM,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA9C,EAAAC,EAAAC,EAAA6C,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjD,EAAAC,EAAAC,EAAAC,EAAA+C,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IARU,MACd13O,EAAK,MACLsrL,EAAK,YACLqsD,EAAW,UACXC,EAAS,UACT9E,EAAS,KACTn6G,EAAI,mBACJE,GACDhmF,EACC,MAAOglM,EAAeC,IAAoBz/M,EAAAA,EAAAA,UAAS,KAC5C0/M,EAAgBC,IAAqB3/M,EAAAA,EAAAA,UAAS,KAC9C4/M,EAAWC,IAAgB7/M,EAAAA,EAAAA,UAAS,KACpC8/M,EAAYC,IAAiB//M,EAAAA,EAAAA,UAAS,KACtCggN,EAAYC,KAAiBjgN,EAAAA,EAAAA,UAAS,KACtCkgN,GAAaC,KAAkBngN,EAAAA,EAAAA,UAAS,KACxCogN,GAAUC,KAAergN,EAAAA,EAAAA,UAAS,KAClCsgN,GAAWC,KAAgBvgN,EAAAA,EAAAA,UAAS,KACpCi7D,GAAMulJ,KAAWxgN,EAAAA,EAAAA,WAAS,IAEjCP,EAAAA,EAAAA,YAAU,KACRogN,EAAa,IACbE,EAAc,IACdE,GAAc,IACdE,GAAe,IACfE,GAAY,IACZE,GAAa,GAAG,GACf,CAACjgH,EAAMm6G,KAEVh7M,EAAAA,EAAAA,YAAU,KACR+gN,IAAQ,EAAK,GACZ,CAAClgH,KAEJ7gG,EAAAA,EAAAA,YAAU,KACJw7D,IAAQulC,IACVi/G,EAAiBj/G,GACjBm/G,EAAkBn/G,GAClBggH,IAAQ,GACV,GACC,CAACvlJ,GAAMulC,IAEV,MAAMigH,GAAyBjpR,IAE7B,GADc,cACJy2B,KAAKz2B,IAAoB,KAAVA,EAGvB,GAFAqoR,EAAaroR,GAEC,KAAVA,EACFyoR,GAAc,IACdI,GAAY,SAET,GAAI/0P,WAAW9zB,GAAS8zB,WAAW1pB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,gCAAiC,CAAC,IAADC,EAAAC,EACnFX,GAAc,6CAADh8Q,OAA8CrC,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,+BAA8B,KAAAz8Q,OAAQ,OAAJq8J,QAAI,IAAJA,GAAgB,QAAZqgH,EAAJrgH,EAAM9vH,MAAM,YAAI,IAAAmwO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBhwO,cAAa,KAC/I,MACK,GAAItlB,WAAW9zB,IAAU,EAC5ByoR,GAAc,sCAEX,GAAI30P,WAAW9zB,GAAS8zB,WAAoB,OAATmvP,QAAS,IAATA,OAAS,EAATA,EAAWoG,iBACjDZ,GAAc,wBACdI,GAAY,aAET,GAAI/0P,WAAW9zB,GAAS8zB,WAAW1pB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,gCAClDT,GAAc,kDAADh8Q,OAAmDqnB,WAAW1pB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,gCAA+B,KAAAz8Q,OAAIq8J,EAAK9vH,MAAM,KAAK,GAAE,MAC5I6vO,GAAY,QAET,CAAC,IAADpG,EAAAC,EACH+F,GAAc,IAEd,IAAIa,GAAc,EAAKvD,GAAW,KAAQjyP,WAAW9zB,GACjDupR,GAAyB,EAAKjkI,GAAS,KAAQxxH,WAAWw1P,GAC1DE,EAAa11P,WAAWw1P,GAAcx1P,WAAWy1P,GAEjDE,EAAe31P,WAAW01P,GAAc11P,WAAWk0P,GACnD0B,EAAiB51P,WAAWw1P,GAAcx1P,WAAWk0P,GACrD2B,EAAuB71P,WAAW41P,GAAkB51P,WAAW21P,GACnEZ,GAAYc,EAAsBtjH,GAAsBsjH,EAA8B,OAAT1G,QAAS,IAATA,GAAiC,QAAxBR,EAATQ,EAAWC,8BAAsB,IAAAT,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwCgC,wBAA0B,GACjJ,CACF,EAGIkF,GAA0B5pR,IAE9B,GADc,cACJy2B,KAAKz2B,IAAoB,KAAVA,EAGvB,GAFAuoR,EAAcvoR,GAEA,KAAVA,EACF2oR,GAAe,IACfI,GAAa,SAEV,GAAIj1P,WAAW9zB,IAAU,EAC5B2oR,GAAe,sCAEZ,GAAI70P,WAAW9zB,GAAS8zB,WAAoB,OAATmvP,QAAS,IAATA,OAAS,EAATA,EAAW4G,aACjDlB,GAAe,wBACfI,GAAa,aAEV,GAAKj1P,WAAW9zB,GAAS8zB,WAAWo0P,GAAmBp0P,WAAW1pB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,gCACjFP,GAAe,0DAADl8Q,OAA2DqnB,WAAW1pB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,kBAAAA,mCAAAA,qBAAAA,gCAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,IAAAA,4BAAAA,IAAAA,oBAAAA,MAAAA,oBAAAA,MAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,4BAAAA,IAAAA,0BAAAA,IAAAA,0BAAAA,IAAAA,2BAAAA,IAAAA,kCAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,6BAAAA,IAAAA,+BAAAA,IAAAA,wCAAAA,IAAAA,2BAAAA,IAAAA,8BAAAA,IAAAA,yCAAAA,IAAAA,2CAAAA,IAAAA,0CAAAA,IAAAA,2CAAAA,IAAAA,uBAAAA,IAAAA,yBAAAA,IAAAA,oCAAAA,IAAAA,oCAAAA,IAAAA,qCAAAA,IAAAA,8BAAAA,UAAAA,6BAAAA,UAAAA,mCAAAA,UAAAA,kCAAAA,UAAAA,mBAAAA,IAAAA,mBAAAA,WAAAA,uBAAAA,IAAAA,8BAAAA,oCAAAA,0BAAAA,6DAAAA,sBAAAA,sEAAAA,oBAAAA,cAAAA,sBAAAA,KAAAA,2BAAAA,gBAAAA,yBAAAA,WAAAA,2BAAAA,KAAAA,gCAAAA,eAAAA,6BAAAA,WAAAA,+BAAAA,KAAAA,oCAAAA,KAAAA,wBAAAA,IAAAA,kBAAAA,IAAAA,qBAAAA,WAAAA,yBAAAA,YAAAA,wDAAAA,IAAAA,qDAAAA,IAAAA,sDAAAA,IAAAA,qDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,uDAAAA,IAAAA,oDAAAA,IAAAA,qDAAAA,IAAAA,mDAAAA,IAAAA,mDAAAA,IAAAA,oDAAAA,IAAAA,2BAAAA,IAAAA,2BAAAA,meAAAA,0BAAAA,KAAAA,oBAAAA,yDAAAA,qBAAAA,iBAAAA,uBAAAA,OAAAA,sBAAAA,oBAAAA,4BAAAA,cAAAA,iCAAAA,6CAAAA,mCAAAA,cAAAA,6BAAAA,gBAAAA,4BAAAA,aAAAA,yBAAAA,4BAAAA,oCAAAA,qBAAAA,iCAAAA,KAAAA,uCAAAA,KAAAA,wBAAAA,OAAAA,4BAAAA,eAAAA,sCAAAA,QAAAA,yCAAAA,IAAAA,uCAAAA,OAAAA,gCAAAA,cAAAA,qBAAAA,KAAAA,0BAAAA,gBAAAA,0BAAAA,WAAAA,2BAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,kCAAAA,cAAAA,kCAAAA,KAAAA,gCAAAA,gBAAAA,gCAAAA,WAAAA,yCAAAA,cAAAA,yCAAAA,KAAAA,uCAAAA,gBAAAA,uCAAAA,WAAAA,oCAAAA,YAAAA,yBAAAA,IAAAA,mCAAAA,IAAAA,oCAAAA,IAAAA,yBAAAA,IAAAA,0BAAAA,KAAY8+Q,gCAA+B,KAAAz8Q,OAAIq8J,EAAK9vH,MAAM,KAAK,GAAE,MACrJ+vO,GAAa,QAEV,CAAC,IAADpG,EAAAC,EACH+F,GAAe,IAEf,IAAIY,GAAyB,EAAKjkI,GAAS,KAAQxxH,WAAWo0P,GAC1DsB,EAAa11P,WAAWo0P,GAAkBp0P,WAAWy1P,GACrDO,GAAgB,EAAK9D,GAAW,KAAQlyP,WAAW9zB,GACnD+pR,EAAej2P,WAAWo0P,GAAkBp0P,WAAWg2P,GACvDE,EAAoBl2P,WAAWi2P,GAAgBj2P,WAAW01P,GAE9DT,GAAaiB,EAAoB3jH,GAAsB2jH,EAA4B,OAAT/G,QAAS,IAATA,GAAiC,QAAxBN,EAATM,EAAWC,8BAAsB,IAAAP,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC35G,uBAAyB,GAC7I,CACF,EAwDF,OACE9lC,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAE1N,MAEhCsrL,EAC8B,SAApB,OAATssD,QAAS,IAATA,OAAS,EAATA,EAAW9uO,gBACTkqF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,iBAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACRzoH,MAAOgoR,EACPj+G,YAAY,OACZ9lE,SAAWljG,GAtEUf,KAEjC,GADc,cACJy2B,KAAKz2B,IAAoB,KAAVA,EAGvB,GAFAioR,EAAiBjoR,GAEH,KAAVA,EACFyoR,GAAc,IACdI,GAAY,SAET,GAAI/0P,WAAW9zB,IAAU,EAC5ByoR,GAAc,0CAEX,CAAC,IAAD5F,EAAAC,EACH2F,GAAc,IAEd,IAAIa,GAAc,EAAKvD,GAAW,KAAQjyP,WAAWs0P,GACjDmB,GAAyB,EAAKjkI,GAAS,KAAQxxH,WAAWw1P,GAC1DE,EAAa11P,WAAWw1P,GAAcx1P,WAAWy1P,GAEjDE,EAAe31P,WAAW01P,GAAc11P,WAAW9zB,GACnD0pR,EAAiB51P,WAAWw1P,GAAcx1P,WAAW9zB,GACrD2pR,EAAuB71P,WAAW41P,GAAkB51P,WAAW21P,GACnEZ,GAAYc,EAAsBtjH,GAAsBsjH,EAA8B,OAAT1G,QAAS,IAATA,GAAiC,QAAxBJ,EAATI,EAAWC,8BAAsB,IAAAL,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwC4B,wBAA0B,GACjJ,CACF,EA8C6BuF,CAA0BlpR,EAAEQ,OAAOvB,UAEtD8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZm9G,EAAJn9G,EAAM9vH,MAAM,YAAI,IAAAitO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuB9sO,oBAE3D+pF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,YAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,SACL0pH,UAAQ,EACRzoH,MAAOooR,EACPr+G,YAAY,OACZ9lE,SAAWljG,GAAMkoR,GAAsBloR,EAAEQ,OAAOvB,UAElD8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZq9G,EAAJr9G,EAAM9vH,MAAM,YAAI,IAAAmtO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBhtO,oBAE3D0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOymK,eAAersO,UACpCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOgqC,aAAa5vG,SAAE2qO,OAEzCrlJ,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACR9qE,UAAU,EACVd,aAAc+rO,GACd7+G,YAAY,UAEdjpC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZu9G,EAAJv9G,EAAM9vH,MAAM,YAAI,IAAAqtO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBltO,oBAE3D+pF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0mK,OAAOtsO,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2mK,aAAavsO,SAAC,sBACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4mK,SAASxsO,SAAA,CAAC,SAAKijF,EAAAA,GAAAA,KAAA,SAAAjjF,SAAiB,OAATolO,QAAS,IAATA,GAAiC,QAAxBO,EAATP,EAAWC,8BAAsB,IAAAM,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwC54J,gBAAQ,IAAA64J,OAAvC,EAATA,EAAkDtqO,0BAIpG+pF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,iBAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACRzoH,MAAOkoR,EACPn+G,YAAY,OACZ9lE,SAAWljG,GA5FWf,KAElC,GADc,cACJy2B,KAAKz2B,IAAoB,KAAVA,EAGvB,GAFAmoR,EAAkBnoR,GAEJ,KAAVA,EACF2oR,GAAe,IACfI,GAAa,SAEV,GAAIj1P,WAAW9zB,IAAU,EAC5B2oR,GAAe,0CAEZ,CAAC,IAADrF,EAAAC,EACHoF,GAAe,IAEf,IAAIY,GAAyB,EAAKjkI,GAAS,KAAQxxH,WAAW9zB,GAC1DwpR,EAAa11P,WAAW9zB,GAAS8zB,WAAWy1P,GAC5CO,GAAgB,EAAK9D,GAAW,KAAQlyP,WAAWw0P,GACnDyB,EAAej2P,WAAW9zB,GAAS8zB,WAAWg2P,GAC9CE,EAAoBl2P,WAAWi2P,GAAgBj2P,WAAW01P,GAE9DT,GAAaiB,EAAoB3jH,GAAsB2jH,EAA4B,OAAT/G,QAAS,IAATA,GAAiC,QAAxBK,EAATL,EAAWC,8BAAsB,IAAAI,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,OAA7B,EAATA,EAAwCt6G,uBAAyB,GAC7I,CACF,EAqE6BqhH,CAA2BvpR,EAAEQ,OAAOvB,UAEvD8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZy9G,EAAJz9G,EAAM9vH,MAAM,YAAI,IAAAutO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBptO,oBAE3D+pF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,YAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,SACL0pH,UAAQ,EACRzoH,MAAOsoR,EACPv+G,YAAY,OACZ9lE,SAAWljG,GAAM6oR,GAAuB7oR,EAAEQ,OAAOvB,UAEnD8gI,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZ29G,EAAJ39G,EAAM9vH,MAAM,YAAI,IAAAytO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBttO,oBAE3D0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOymK,eAAersO,UACpCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOgqC,aAAa5vG,SAAE6qO,QAEzCvlJ,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACR9qE,UAAU,EACVd,aAAcisO,GACd/+G,YAAY,UAEdjpC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAM,OAAJirH,QAAI,IAAJA,GAAgB,QAAZ69G,EAAJ79G,EAAM9vH,MAAM,YAAI,IAAA2tO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBxtO,oBAE3D+pF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0mK,OAAOtsO,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2mK,aAAavsO,SAAC,sBACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4mK,SAASxsO,SAAA,CAAC,SAAKijF,EAAAA,GAAAA,KAAA,SAAAjjF,SAAiB,OAATolO,QAAS,IAATA,GAAiC,QAAxBU,EAATV,EAAWC,8BAAsB,IAAAS,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAM,QAANC,EAAtCD,EAAwCjiJ,YAAI,IAAAkiJ,OAAnC,EAATA,EAA8CzqO,0BAKlG0nF,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,SACgC,SAApB,OAATkqO,QAAS,IAATA,OAAS,EAATA,EAAW9uO,gBACVkqF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,SACL89C,aAAc,cACdc,UAAU,KAEZmjF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAW,OAATolO,QAAS,IAATA,GAAiC,QAAxBa,EAATb,EAAWC,8BAAsB,IAAAY,GAAK,QAAL+C,EAAjC/C,EAAoC,UAAE,IAAA+C,GAAU,QAAVC,EAAtCD,EAAwCh8J,gBAAQ,IAAAi8J,OAAvC,EAATA,EAAkD1tO,oBAEtF+pF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,YAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACRzoH,MAAOooR,EACPnkL,SAAWljG,GAAMkoR,GAAsBloR,EAAEQ,OAAOvB,OAChD+pK,YAAY,UAEdjpC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAW,OAATolO,QAAS,IAATA,GAAiC,QAAxB8D,EAAT9D,EAAWC,8BAAsB,IAAA6D,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwCn8J,gBAAQ,IAAAo8J,OAAvC,EAATA,EAAkD7tO,oBAEtF0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOymK,eAAersO,UACpCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOgqC,aAAa5vG,SAAE2qO,OAEzCrlJ,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAO8mK,UAAU1sO,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACR9qE,UAAU,EACV6sO,UAAQ,EACRzgH,YAAY,aAGhB5mC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0mK,OAAOtsO,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2mK,aAAavsO,SAAC,sBACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4mK,SAASxsO,SAAA,CAAC,SAAKijF,EAAAA,GAAAA,KAAA,SAAAjjF,SAAiB,OAATolO,QAAS,IAATA,GAAiC,QAAxBiE,EAATjE,EAAWC,8BAAsB,IAAAgE,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwCt8J,gBAAQ,IAAAu8J,OAAvC,EAATA,EAAkDhuO,0BAIpG+pF,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEslF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,SACL89C,aAAc,cACdc,UAAU,KAEZmjF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAW,OAATolO,QAAS,IAATA,GAAiC,QAAxBoE,EAATpE,EAAWC,8BAAsB,IAAAmE,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAU,QAAVC,EAAtCD,EAAwCz8J,gBAAQ,IAAA08J,OAAvC,EAATA,EAAkDnuO,oBAEtF+pF,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAOyQ,MAAMr2E,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,YAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACRzoH,MAAOsoR,EACPrkL,SAAWljG,GAAM6oR,GAAuB7oR,EAAEQ,OAAOvB,OACjD+pK,YAAY,UAEdjpC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOoH,SAAShtE,SAAW,OAATolO,QAAS,IAATA,GAAiC,QAAxBuE,EAATvE,EAAWC,8BAAsB,IAAAsE,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAM,QAANC,EAAtCD,EAAwC9lJ,YAAI,IAAA+lJ,OAAnC,EAATA,EAA8CtuO,oBAElF0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOymK,eAAersO,UACpCijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOgqC,aAAa5vG,SAAE6qO,QAEzCvlJ,EAAAA,GAAAA,MAAA,SAAOxjD,UAAW8jC,GAAO8mK,UAAU1sO,SAAA,EACjCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOsiC,MAAMloG,SAAC,WAC9BijF,EAAAA,GAAAA,KAAA,SACEnhD,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACLt5B,KAAK,QACL0pH,UAAQ,EACR9qE,UAAU,EACV6sO,UAAQ,QAGZrnJ,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO0mK,OAAOtsO,SAAA,EAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO2mK,aAAavsO,SAAC,sBACrCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO4mK,SAASxsO,SAAA,CAAC,SAAKijF,EAAAA,GAAAA,KAAA,SAAAjjF,SAAiB,OAATolO,QAAS,IAATA,GAAiC,QAAxB0E,EAAT1E,EAAWC,8BAAsB,IAAAyE,GAAK,QAALC,EAAjCD,EAAoC,UAAE,IAAAC,GAAM,QAANC,EAAtCD,EAAwCjmJ,YAAI,IAAAkmJ,OAAnC,EAATA,EAA8CzuO,4BAMtG0nF,EAAAA,GAAAA,KAACzF,GAAI,CACH17C,UAAWojD,KAAG+kJ,EAAarkK,GAAOp1D,QAClCw2B,GAAI,WAAWhnC,SAChB,YAGA,iBCxXP,MAwFA,GAxFamlC,IAON,IAADmmM,EAAAC,EAAAnD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAPQ,MACV7qD,EAAK,QACLx4F,EAAO,SACP7mF,EAAQ,UACR6mO,EAAS,KACTn6G,EAAI,mBACJE,GACHhmF,EACG,MAAMynM,GAAWnmL,EAAAA,GAAAA,eAAc,CAAEt2E,MAAO,wBAExC,OACI8yG,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOxsC,KAAKp5B,SACvB4sO,GACG3pJ,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,SACKolF,GACGE,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACIslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EACxBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAC,iBAC9BijF,EAAAA,GAAAA,KAAA,UACInhD,UAAW8jC,GAAOgf,MAClBrzD,QAASA,IAAMhzB,GAAS,GAAOyB,UAE/BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,eAAek/B,KAAK,aAGvC6iG,EAAAA,GAAAA,KAAC5S,GAAM,CACH/9E,MAAK,OAAA1jC,OAAa,OAAJq8J,QAAI,IAAJA,GAAgB,QAAZqgH,EAAJrgH,EAAM9vH,MAAM,YAAI,IAAAmwO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBhwO,eACrCqiL,MAAOA,EACPqsD,YAAY,eACZC,UAAW,MACX9E,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,QAI5B7lC,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACIslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOtrF,KAAK0lB,SAAA,EACxBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtzE,MAAM0N,SAAC,iBAC9BijF,EAAAA,GAAAA,KAAA,UACInhD,UAAW8jC,GAAOgf,MAClBrzD,QAASA,IAAMhzB,GAAS,GAAOyB,UAE/BijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,eAAek/B,KAAK,aAGvC6iG,EAAAA,GAAAA,KAAC5S,GAAM,CACH/9E,MAAK,QAAA1jC,OAAc,OAAJq8J,QAAI,IAAJA,GAAgB,QAAZm9G,EAAJn9G,EAAM9vH,MAAM,YAAI,IAAAitO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuB9sO,eACtCqiL,MAAOA,EACPqsD,YAAY,aACZC,UAAW,OACX9E,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,UAMpC7lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvBijF,EAAAA,GAAAA,KAAC5S,GAAM,CACH/9E,MAAK,OAAA1jC,OAAa,OAAJq8J,QAAI,IAAJA,GAAgB,QAAZq9G,EAAJr9G,EAAM9vH,MAAM,YAAI,IAAAmtO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBhtO,eACrCqiL,MAAOA,EACPqsD,YAAY,eACZC,UAAW,MACX9E,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,OAG5BloC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvBijF,EAAAA,GAAAA,KAAC5S,GAAM,CACH/9E,MAAK,QAAA1jC,OAAc,OAAJq8J,QAAI,IAAJA,GAAgB,QAAZu9G,EAAJv9G,EAAM9vH,MAAM,YAAI,IAAAqtO,GAAK,QAALC,EAAhBD,EAAmB,UAAE,IAAAC,OAAjB,EAAJA,EAAuBltO,eACtCqiL,MAAOA,EACPqsD,YAAY,aACZC,UAAW,OACX9E,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,UAKlC,ECCd,GApFgBhmF,IAKT,IALU,oBACf0nM,EAAmB,UACnBzH,EAAS,KACTn6G,EAAI,mBACJE,GACDhmF,EACC,MAAO0tK,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,IACxCmiN,EAAeC,IAAoBpiN,EAAAA,EAAAA,WAAS,IAC5Cy6D,EAASC,IAAc16D,EAAAA,EAAAA,WAAS,GAYvC,OACE26D,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAe5lE,SAAA,EAC7BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAW5lE,SACL,OAAnB6sO,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBx3Q,KAAI,CAAC1O,EAAG3B,KAC5Bi+H,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAGtf,GAAa,CACzB,CAACA,IAAgB5gH,IAAU6tP,IAE7BthL,QAASA,KACPuhL,EAAe9tP,EAAM,EACrBg7C,SAGDr5C,GAFI3B,QAMXsgI,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,CAAC,2BAE3BslF,EAAAA,GAAAA,MAAC9H,GAAI,CAACx2C,GAAG,gBAAehnC,SAAA,CAAC,cACbijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,cAAck/B,KAAK,iBAI9CklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAGtf,GAAgB,CAAE,CAACA,IAAcwf,IAAWplF,SAAA,CAC5C,IAAhB6yM,IACC5vH,EAAAA,GAAAA,KAAC28H,GAAI,CACHx6H,QAAS0nJ,EACTvuO,SAAU8mF,EACVu4F,OAAK,EACL3yD,KAAMA,EACNm6G,UAAWA,EACXj6G,mBAAoBA,IAGP,IAAhB0nF,IACC5vH,EAAAA,GAAAA,KAAC28H,GAAI,CACHx6H,QAAS0nJ,EACTvuO,SAAU8mF,EACV4lC,KAAMA,EACNm6G,UAAWA,EACXj6G,mBAAoBA,QAI1B7lC,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAY5lE,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,4BAA6Btf,IAC3Cr0C,QAASA,KA1Dfw7M,GAAiB,QACjB1nJ,GAAW,IAyD2BrlF,SACjC,SAGDijF,EAAAA,GAAAA,KAAA,UACEnhD,UAAWojD,KAAG,0BAA2Btf,IACzCr0C,QAASA,KA3Dfw7M,GAAiB,QACjB1nJ,GAAW,IA0D4BrlF,SAClC,cAIC,ECtFV,GAAyB,uBAAzB,GAAwR,sBAAxR,GAAuT,uBC4BvT,IAvBgB4iE,EAAAA,EAAAA,OAAK,CACjBqoD,EACAm6G,KAGA,MAAMriJ,EAAWC,IAAY,GAE7B,OACIC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAc5lE,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAa5lE,UACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAc5lE,UAC1BijF,EAAAA,GAAAA,KAACq1I,GAAgB,CACbxrP,OAAY,OAAJm+I,QAAI,IAAJA,OAAI,EAAJA,EAAMA,KACdqsG,qBAAsB8N,EACtB9+I,MAAOvD,EAAS5gI,MAAQ,OAAS,eAK3C,ICRR+8H,GAAa,CAAC,QAAS,cAAe,UACtC2tJ,GAAsB,CAAC,QAAS,UA6VtC,GA3ViBG,KAAO,IAAD/8B,EAAAC,EACnB,MAAM,KAAEjlF,GAAS9xC,MACV05H,EAAaC,IAAkBnoL,EAAAA,EAAAA,UAAS,GACzCiiN,GAAWnmL,EAAAA,GAAAA,eAAc,CAAEt2E,MAAO,yBACjCy6I,EAAS4c,IAAc78G,EAAAA,EAAAA,WAAS,IAChCy6M,EAAW6H,IAAgBtiN,EAAAA,EAAAA,UAAS,KACrC,iBAAEkgG,GAAqBoa,IAAajiK,GAAUA,EAAM+nJ,UACpDnjG,EAAWg/G,MACVs+F,EAAgBgI,IAAqBviN,EAAAA,EAAAA,UAAS,KAC9CwmL,EAAiBg8B,IAAsBxiN,EAAAA,EAAAA,UAAS,KAChDs8M,EAAcC,IAAmBv8M,EAAAA,EAAAA,UAAS,KAC1CyiN,EAAmBC,IAAwB1iN,EAAAA,EAAAA,UAAS,IACpDy8M,EAAckG,IAAmB3iN,EAAAA,EAAAA,UAAS,CAAEzmE,IAAK,GAAI/B,OAAO,KAC5DorR,EAAeC,IAAoB7iN,EAAAA,EAAAA,UAAS,KAC5C8iN,EAAgBC,IAAqB/iN,EAAAA,EAAAA,UAAS,KAC9C3nB,EAAO2qO,IAAYhjN,EAAAA,EAAAA,UAAS,QAC5BwgG,EAAoBk8G,IAAyB18M,EAAAA,EAAAA,UAAS,KACtDijN,EAAeC,IAAoBljN,EAAAA,EAAAA,UAAS,OAC5CmjN,EAAYC,IAAiBpjN,EAAAA,EAAAA,UAAS,MACvCw6M,EAA4B,OAAf2I,EAAsB,MAAuB,SAAfA,EAAwB,SAAW,OAC7E1lG,EAAgBsoE,IAAqB/lL,EAAAA,EAAAA,UAAS,KAC9Ci+G,EAAkB+nE,IAAuBhmL,EAAAA,EAAAA,UAAS,IAEnDm+G,EAAU,IAAI,IAAIxyJ,IAAoB,OAAhBu0I,QAAgB,IAAhBA,GAAwB,QAARolF,EAAhBplF,EAAkBimF,cAAM,IAAAb,OAAR,EAAhBA,EAA0B56O,KAAKi7E,GAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMygK,gBAEpEhoE,EAA6B,OAAhBle,QAAgB,IAAhBA,GAAwB,QAARqlF,EAAhBrlF,EAAkBimF,cAAM,IAAAZ,OAAR,EAAhBA,EAA0BrjO,QAAQyjE,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMygK,eAAgB3oE,IAE9E4oE,EAAiC,OAAVjoE,QAAU,IAAVA,OAAU,EAAVA,EAAY7qG,MAAMoS,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAM08B,YAAa47D,IAErEC,EAAuB1mL,IACzBuuP,EAAkBvuP,GAClBwuP,EAAoB,GAAG,EAGrB3nE,EAAyB7mL,IAC3BwuP,EAAyB,OAALxuP,QAAK,IAALA,OAAK,EAALA,EAAO6qH,SAAS,GAGxC5iD,EAAAA,EAAAA,YAAU,KACkB,IAAD4jN,EAAnBjlG,EAAW9mL,QACX0uP,EAAiC,QAAdq9B,EAACjlG,EAAW,UAAE,IAAAilG,OAAA,EAAbA,EAAehhK,SACvC,GACD,CAACo7D,KAEJh+G,EAAAA,EAAAA,YAAU,MACDg+G,GAAyB,OAAPU,QAAO,IAAPA,GAAAA,EAAS7mL,QAC5ByuP,EAAkB5nE,EAAQ,GAC9B,GACD,CAACA,EAASV,KAGbh+G,EAAAA,EAAAA,YAAU,KACN,GAAI6gG,EAAM,CACN,IAAIgjH,EAAY,KAChB,MAAMz8G,EAASoL,GAAGrwK,gCAAkC,CAChDs1K,aAAa,EACbnO,WAAY,CAAC,eAEjB,IAAIw6G,EAAe,sBACfC,EAAS,iBAAAv/Q,OAAoBq8J,EAAK7vH,eAClCgzO,EAAc,sBAAAx/Q,OAAyBq8J,EAAK7vH,eAChD,MAAMqsI,EAAa,cAsCnB,OArCAjW,EAAOnW,UAEPmW,EAAO1gJ,GAAG,WAAW,KACjB0gJ,EAAO7vC,KAAK,UAAW8lD,GACvBjW,EAAO7vC,KAAK,YAAiB,OAAJspC,QAAI,IAAJA,OAAI,EAAJA,EAAM7vH,cAAc,IAGjDo2H,EAAO1gJ,GAAGo9P,GAAe5/Q,IACrBs5D,EAASq/G,GAAmB34K,GAAM,IAGtCkjK,EAAO1gJ,GAAGq9P,GAAW,SAAUnrO,GAC3B,IAAIqrO,EAAYC,EAA8BtrO,EAAO,OACjDurO,EAAaD,EAA8BtrO,EAAO,QACtDwqO,EAAiBgB,EAAqB,OAALxrO,QAAK,IAALA,OAAK,EAALA,EAAOojO,IAAKiI,IAC7CX,EAAkBc,EAAqB,OAALxrO,QAAK,IAALA,OAAK,EAALA,EAAO6hF,KAAM0pJ,GACnD,IAEA/8G,EAAO1gJ,GAAGs9P,GAAgB,SAAUprO,GAChC,MAAMyrO,EAAWx4P,WAAgB,OAAL+sB,QAAK,IAALA,OAAK,EAALA,EAAOmoH,oBAED,OAA9Bl1I,WAAW23P,KACP33P,WAAWw4P,IAAax4P,WAAW23P,GACnCG,EAAc,MACP93P,WAAWw4P,GAAYx4P,WAAW23P,IACzCG,EAAc,SAItBF,EAAiBY,GACjBpH,EAAsBoH,GACtBR,EAAY5wP,YAAW,KACnBm0I,EAAO7vC,KAAK,UAAW8lD,GACvBjW,EAAO7vC,KAAK,YAAiB,OAAJspC,QAAI,IAAJA,OAAI,EAAJA,EAAM7vH,cAAc,GAC9ChoC,SAAS7G,QAChB,IAEQ,KACJoxB,aAAaswP,GACbz8G,EAAO97D,YAAY,CAE3B,IACD,CAACu1D,KAGJ7gG,EAAAA,EAAAA,YAAU,KACNskN,EAAczjH,EAAK,GACpB,CAACA,KAGJ7gG,EAAAA,EAAAA,YAAU,KACN,GAAI6gG,GAAQ+lF,EAAsB,CAAC,IAADb,EAC9B,MAAMw+B,EAAoC,OAApB39B,QAAoB,IAApBA,GAA6B,QAATb,EAApBa,EAAsBjmF,eAAO,IAAAolF,OAAT,EAApBA,EAA+BjyK,MAAMmzK,IAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQpmF,QAASA,IACnF0jH,IAA8B,OAAbA,QAAa,IAAbA,OAAa,EAAbA,EAAe1jH,SAAuB,OAAdi6G,QAAc,IAAdA,OAAc,EAAdA,EAAgBj6G,OACzDiiH,EAAkByB,EAE1B,IACD,CAAC1jH,EAAM+lF,IAGV,MAAM09B,EAAgBh0P,UAClB8sJ,GAAW,GACX,IAAIl5K,EAAO,CACPsgR,YAAa3jH,GAEjB,IAAK,IAAD4jH,EACA,MAAMC,QAA4B5mH,GAAe,gCAAiC,OAAQ55J,EAAM,aAChGk5K,GAAW,GACXylG,EAAgC,OAAnB6B,QAAmB,IAAnBA,GAAyB,QAAND,EAAnBC,EAAqBxgR,YAAI,IAAAugR,OAAN,EAAnBA,EAA2BvgR,KAC5C,CACA,MAAOpL,IACHskL,GAAW,EACf,CAAC,EAICunG,GAAe7kN,EAAAA,EAAAA,cAAY,KACtB+4D,EAAAA,GAAAA,KAAC+rJ,GAAM,CACV/jH,KAAMA,EACNm6G,UAAWA,KAEhB,CAACn6G,IAEEujH,EAAkBA,CAACS,EAAQC,KAC7B,IAAIC,EAAe,GACfC,EAAW,GACf,IAAK,IAAIpsO,KAASisO,EAAQ,CACtB,GAAIC,EAAQ,CACR,IAAIG,EAAsBr5P,OAAY,OAALgtB,QAAK,IAALA,OAAK,EAALA,EAAO8jO,SAAW9wP,OAAOk5P,GAC1DlsO,EAAM+jO,iBAAmBsI,CAC7B,CACA,GAAID,EAASnqR,QAAQgxB,WAAW+sB,EAAM2jO,YAAc,EAChDwI,EAAarqR,KAAKk+C,GAClBosO,EAAStqR,KAAKmxB,WAAW+sB,EAAM2jO,gBAC5B,CACH,IAAI3hR,EAAQoqR,EAASnqR,QAAQgxB,WAAW+sB,EAAM2jO,YAC9CwI,EAAanqR,GAAO4hR,UAAY3wP,WAAW+sB,EAAM4jO,WAAa3wP,WAAWk5P,EAAanqR,GAAO4hR,WAC7FuI,EAAanqR,GAAO8hR,QAAU7wP,WAAW+sB,EAAM8jO,SAAW7wP,WAAWk5P,EAAanqR,GAAO8hR,QAC7F,CACJ,CACA,OAAOqI,CAAY,EAGjBhI,EAAaA,CAACM,EAAY5xB,KAE5B83B,EAD8B,QAAV3qO,EAAkB,MAAQ,OAE9CsqO,EAAgB,CAAEppR,IAAKujR,EAAYtlR,OAAO,GAAO,EAwCrD,SAASmsR,EAA8BH,EAAWmB,GAC9C,IACI,MAAM,IAAElJ,EAAG,KAAEvhJ,GAASspJ,EACtB,GAAqC,SAApB,OAAbmB,QAAa,IAAbA,OAAa,EAAbA,EAAel0O,eAAyB,CACxC,MAAMm0O,EAAanJ,EAAI/wQ,KAAIm6Q,GAAOA,EAAI1I,UAEtC,OADqBh2Q,KAAK0D,OAAO+6Q,EAErC,CAAO,CACH,MAAME,EAAa5qJ,EAAKxvH,KAAIq6Q,GAAOA,EAAI5I,UAEvC,OADqBh2Q,KAAK0D,OAAOi7Q,EAErC,CACJ,CAAE,MAAO94P,GACL,OAAO,CACX,CACJ,CAEA,OACIssG,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UACIslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO2sJ,SAASvyN,SAAA,CAC3B4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBtsH,EAAAA,GAAAA,KAAC0kD,GAAI,CACDu9F,eAAgBA,EAChB/5G,mBAAoBA,EACpBg6G,WAAYA,EACZC,UAAWA,KAEfniJ,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOyhB,IAAIrnF,SACtBk/E,GAAW7pH,KAAI,CAAC1O,EAAG3B,KAChBi+H,EAAAA,GAAAA,KAAA,UACInhD,UAAWojD,KAAGtf,GAAOnhE,KAAM,CACvB,CAACmhE,GAAOsgB,QAASlhI,IAAU6tP,IAE/BthL,QAASA,IAAMuhL,EAAe9tP,GAAOg7C,SAGpCr5C,GAFI3B,OAMhB4nR,GACGtnJ,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACIijF,EAAAA,GAAAA,KAAC0sJ,GAAO,CACJ9C,oBAAqBA,GACrBzH,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,IAEP,IAAhB0nF,IACG5vH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOqqF,IAAIjwJ,SACtB+uO,MAGQ,IAAhBl8B,IACG5vH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOqqF,IAAIjwJ,UACvBijF,EAAAA,GAAAA,KAAC2sJ,GAAO,CACJxJ,IAAKmH,EACL1oJ,KAAM4oJ,EACNrI,UAAWA,EACXj6G,mBAAoBA,EACpBg6G,WAAYA,MAIP,IAAhBtyB,IACG5vH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOqqF,IAAIjwJ,UACvBijF,EAAAA,GAAAA,KAAC4sJ,GAAQ,CACL5I,aAAcA,EACdC,gBAAiBA,EACjBmG,qBAAsBA,EACtBD,kBAAmBA,EACnBj8B,gBAAiBA,EACjBg2B,WAAYA,EACZC,aAAcA,EACdC,sBAAuBA,EACvBx8G,iBAAkBA,EAClB7nH,MAAOA,EACP8lI,QAASA,EACTC,WAAYA,EACZX,eAAgBA,EAChBS,oBAAqBA,EACrBD,iBAAkBA,EAClBI,sBAAuBA,EACvBgoE,qBAAsBA,UAMtC1rH,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACIslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACvBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvBijF,EAAAA,GAAAA,KAAC2sJ,GAAO,CACJxJ,IAAKmH,EACL1oJ,KAAM4oJ,EACNrI,UAAWA,EACXj6G,mBAAoBA,EACpBg6G,WAAYA,OAGpB7/I,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO73E,IAAIiS,SAAA,CACtB+uO,KACD9rJ,EAAAA,GAAAA,KAAC0sJ,GAAO,CACJ9C,oBAAqBA,GACrBzH,UAAWA,EACXn6G,KAAMA,EACNE,mBAAoBA,QAG5BloC,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvBijF,EAAAA,GAAAA,KAAC4sJ,GAAQ,CACL5I,aAAcA,EACdC,gBAAiBA,EACjBmG,qBAAsBA,EACtBD,kBAAmBA,EACnBj8B,gBAAiBA,EACjBg2B,WAAYA,EACZC,aAAcA,EACdC,sBAAuBA,EACvBx8G,iBAAkBA,EAClB7nH,MAAOA,EACP8lI,QAASA,EACTC,WAAYA,EACZX,eAAgBA,EAChBS,oBAAqBA,EACrBD,iBAAkBA,EAClBI,sBAAuBA,EACvBgoE,qBAAsBA,UAIlC/tH,EAAAA,GAAAA,KAAC6sJ,GAAK,WAInB,EC1WX,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCiB9G,GAdanoG,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,iCCRjD,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,0BAA0B,KAAO,sBAAsB,KAAO,sBAAsB,UAAY,kGC8NxO,GA1NgBq5M,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kGAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAOnhE,KAAMwT,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,oDAEzEijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+SAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,yCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qQAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,6BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,mEAIHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,ohBASHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qOAKHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qGAKHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iFAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,uCAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wBAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kCAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gFAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iEAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,uCACJijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,oBAClCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yFAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,6LAKHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+UAMHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8EAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2FAGHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,oBAClCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8DAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,4DAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oGAIHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qKAIHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBAGJijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,oBAClCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qIAIHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,6BAGlCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,ydAQHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,2BAGlCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,mJAIHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,sBAGlCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qNAKHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gIAIHijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,wMAK3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,mKAK3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,2SAM3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,oJAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,sUAO3BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,mLAKHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,sPAKHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2IAIHijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,kPAM3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,gGAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,6DAG3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,+CAG3BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,sJAIHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOmqK,UAAU/vO,SAAC,wBAGlCijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0UCtMb,GAT2BwmN,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCiB9G,GAda1xE,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,iCCRjD,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,0BAA0B,KAAO,6FCsIzK,GAlIgBq5M,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+FAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAOnhE,KAAMwT,KAAMsuM,GAAK7iQ,OAAO,SAASwwF,IAAI,aAAYl0C,SAAC,8CAEzEijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8iBASHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iSAOHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,6BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kXAOHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iRAOHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gWAOHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qWAOHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qrBAWHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,gBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,oUAMHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wpBASHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kwBAUHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qZAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,kBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kSAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,iCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iUAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wiBC3Gb,GAT2BwmN,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCiB9G,GAda1xE,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,2BCRjD,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,0BAA0B,KAAO,sBAAsB,MAAQ,uBAAuB,IAAM,qBAAqB,IAAM,qBAAqB,OAAS,wBAAwB,MAAQ,uBAAuB,WAAa,6BC+MjW,QA3MgBq5M,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iGAMHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,qBACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+YACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kOACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qGACHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,0BACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qQACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wPACHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,MAAMllF,SAAC,kBAC1BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yJACHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EAAGijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoqK,WAAWhwO,SAAC,wBAA0B,2GACjEslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EAAGijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoqK,WAAWhwO,SAAC,4BAA8B,qLACrEijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,MAAMllF,SAAC,+BAC1BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,mEACHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EAAGijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoqK,WAAWhwO,SAAC,4BAA8B,yFACrEslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EAAGijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOoqK,WAAWhwO,SAAC,6BAA+B,iJACtEijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gSACHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,2DACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+EACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,wWACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kPACHijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,MAAMllF,SAAC,4BAC1BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gOACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kDACHslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,qBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gOAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,oBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,yFAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sEAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,oBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gCAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uLAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,eAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mBAIhCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,MAAMllF,SAAC,4BAC1BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2UACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kDACHslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,qBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,SAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uPAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,oBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,qGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,oBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,sBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mBAGhCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,MAAMllF,SAAC,2BAC1BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0RACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iDACHslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,qBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,SAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,4GAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,cAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,yMAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,6GAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,SAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,SAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uFAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,yIAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,cAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,2LAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,YAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,gBAE9BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,WAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,iBAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,uGAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,cAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,mBAGhCijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,yeACHijF,EAAAA,GAAAA,KAAA,KAAAjjF,UAAGijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,sHAAsHv0D,OAAO,SAAQs8C,SAAC,eACjJijF,EAAAA,GAAAA,KAAA,KAAAjjF,UAAGijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,qKAAqKv0D,OAAO,SAAQs8C,SAAC,gBAChMijF,EAAAA,GAAAA,KAAA,KAAAjjF,UAAGijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,oJAAoJv0D,OAAO,SAAQs8C,SAAC,0BAC/KijF,EAAAA,GAAAA,KAAA,KAAAjjF,UAAGijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,6DAA6Dv0D,OAAO,SAAQs8C,SAAC,eACxFijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sCACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kQACHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,2DACJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8QC5Lb,GAT2BwmN,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCPd,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,0BAA0B,KAAO,sBAAsB,KAAO,sBAAsB,SAAW,0BAA0B,cAAgB,gCCgHjR,GA7GgBA,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,kCAGJijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,wBAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kHAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qCAGHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,iDAC4CijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,uCAAuCv0D,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAACijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,eAEjLijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2EAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,UACEijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,mHAAmHv0D,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAACijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,cAEhNijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,uCAGHijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,0DAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,oEAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,uFAI3BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,8BAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,+EAKHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,UAEDijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,mFAAmFv0D,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAACijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,eAEhLslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,6CAEiCijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,mFAAmFv0D,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAACijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,WAAiB,iCAEnOijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iHAIHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2EAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8FAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,iGAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,oBAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qDAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,uGAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8GAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gHAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,sBAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8DAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,0DAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,gFAGHslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,CAAG,gGAC2FijF,EAAAA,GAAAA,KAAA,KAAGhrE,KAAK,mFAAmFv0D,OAAO,SAASwwF,IAAI,sBAAqBl0C,UAACijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,eAE5QslF,EAAAA,GAAAA,MAAA,KAAAtlF,SAAA,EACEijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOsqK,SAASlwO,SAAC,UAAY,kPC5F1D,GAT2BwmN,KAEvBvjI,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,CAAAznF,UAEEijF,EAAAA,GAAAA,KAACo2H,GAAO,MCKd,QAT2BmN,KAEvBvjI,EAAAA,GAAAA,KAAAwE,GAAAA,SAAA,KCLJ,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,KAAO,oBCGjGkgD,GAAOxiG,IAAU,MAANA,EAEf,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,cAAetf,GAAOmmD,MAAM/rH,UAC7CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOwhB,KAAKpnF,SAAA,EAC1BijF,EAAAA,GAAAA,KAAA,MAAInhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,qCAGvCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,0OAK7B,EAIV,IAAe4iE,EAAAA,EAAAA,MAAK+kE,ICrBpB,IAAgB,UAAY,4BCA5B,IAAgB,MAAQ,qBAAqB,KAAO,oBAAoB,MAAQ,qBAAqB,OAAS,sBAAsB,IAAM,mBAAmB,IAAM,mBAAmB,OAAS,sBAAsB,MAAQ,qBAAqB,cAAgB,6BAA6B,eAAiB,8BAA8B,UAAY,0BC+F1V,GA3FcxiG,IAIP,IAJQ,QACb+zL,EAAO,OACPvjN,EAAM,aACNw6N,GACDhrM,EAEC,OACEmgD,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO6oI,MAAMzuM,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,QAAMxjD,UAAW8jC,GAAOxsC,KAAKp5B,SAAA,EAC3BijF,EAAAA,GAAAA,KAAA,SACE9gI,MAAOwzD,EACPmsB,UAAW8jC,GAAO/uG,MAClB2jB,KAAK,OACL4rE,SAAU+pL,EACVjvR,KAAK,SACLgrK,YAAY,cACZthD,UAAQ,KAEVqY,EAAAA,GAAAA,KAAA,UAAQ1xD,QAAUruE,IAAQA,EAAEurD,gBAAgB,EAAKqzB,UAAW8jC,GAAOpyF,OAAOwsB,UACxEijF,EAAAA,GAAAA,KAACsC,GAAI,CAACrkI,KAAK,SAASk/B,KAAK,aAG7BklG,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAOhtE,MAAMoH,SAAA,EAC3BslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,OAC5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,UAG5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAG5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,cAG5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,eAG5BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAC,aAItB,OAAPk5N,QAAO,IAAPA,OAAO,EAAPA,EAASrsP,QAAQlmB,IAAO,IAADqkK,EAAAknF,EAAAk+B,EACtB,MAAMC,EAAU,GAAAzhR,OAAO,OAADjI,QAAC,IAADA,GAAO,QAANqkK,EAADrkK,EAAGzF,YAAI,IAAA8pK,OAAN,EAADA,EAASzvH,cAAa,KAAA3sC,OAAK,OAADjI,QAAC,IAADA,GAAS,QAARurP,EAADvrP,EAAGmmB,cAAM,IAAAolO,OAAR,EAADA,EAAW32M,cAAa,KAAA3sC,OAAK,OAADjI,QAAC,IAADA,GAAe,QAAdypR,EAADzpR,EAAG2pR,oBAAY,IAAAF,OAAd,EAADA,EAAiB70O,eAC7F,OAAiB,OAAV80O,QAAU,IAAVA,OAAU,EAAVA,EAAY3yO,SAAe,OAANiY,QAAM,IAANA,OAAM,EAANA,EAAQpa,cAAc,IACjDlmC,KAAI,CAAC3O,EAAGgoP,KAAS,IAADC,EAAA4hC,EAAAC,EACjB,OACElrJ,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO93E,IAAIkS,SAAA,EACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO/xE,KAAKmM,SAAE0uM,EAAM,OAEtCzrH,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SAAA,GAAApxC,OACf,QADe+/O,EACrBjoP,EAAExF,YAAI,IAAAytP,OAAA,EAANA,EAAQpzM,cAAa,KAAA3sC,OAAY,QAAZ2hR,EAAI7pR,EAAEomB,cAAM,IAAAyjQ,OAAA,EAARA,EAAUh1O,cAAa,QAEtD0nF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,SACL,OAAnBt5C,EAAE4pR,aAAqB,GAAA1hR,OAAY,QAAZ4hR,EAAM9pR,EAAExF,YAAI,IAAAsvR,OAAA,EAANA,EAAQj1O,eAAa,GAAA3sC,OAAQlI,EAAE4pR,iBAE/DrtJ,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvB,OAADt5C,QAAC,IAADA,OAAC,EAADA,EAAG+pR,kBAAmBr9Q,SAAS7G,MAC9B02H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,aAIzCijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAO8qK,eAAe1wO,SAAC,gBAK9CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACvB,OAADt5C,QAAC,IAADA,OAAC,EAADA,EAAGiqR,mBAAoBv9Q,SAAS7G,MAC/B02H,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAOqqK,cAAcjwO,SAAC,aAIzCijF,EAAAA,GAAAA,KAAA,UAAQnhD,UAAW8jC,GAAO8qK,eAAe1wO,SAAC,gBAK9CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAO73E,IAAIiS,UACzBijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAOgrK,UAAU5wO,SAAC,eAjCN0uM,EAqC3B,SAIR,ECpEV,GAnBgBvpK,IAIT,IAJU,QACf+zL,EAAO,OACPvjN,EAAM,aACNw6N,GACDhrM,EAEC,OACE89C,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOwgB,SAASpmF,UAC5CijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAACsE,GAAK,CACJ2xI,QAASA,EACTvjN,OAAQA,EACRw6N,aAAcA,OAGd,ECwBV,GAtCengC,KACb,MAAOplF,EAAS4c,IAAc78G,EAAAA,EAAAA,aACvBuuM,EAASuB,IAAc9vM,EAAAA,EAAAA,UAAS,KAChChV,EAAQk7L,IAAalmL,EAAAA,EAAAA,UAAS,KAErCP,EAAAA,EAAAA,YAAU,KACRswM,GAAe,GACd,IAEH,MAAMA,EAAgBhgP,UACpB8sJ,GAAW,GACX,IAAK,IAADmzF,EACF,MAAMC,QAAsB1yG,GAAe,mBAAoB,QAC/Dsf,GAAW,GACXizF,EAAwB,OAAbG,QAAa,IAAbA,GAAmB,QAAND,EAAbC,EAAetsQ,YAAI,IAAAqsQ,OAAN,EAAbA,EAAqBrsQ,KAClC,CACA,MAAOpL,IACLskL,GAAW,EACb,CAAC,EAOH,OACEliD,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,CACG4qH,IAAW3nC,EAAAA,GAAAA,KAACssH,GAAY,KACzBtsH,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACuvH,GAAO,CACN0mB,QAASA,EACTvjN,OAAQA,EACRw6N,aAXgB3rR,IACpBqsP,EAAUrsP,EAAMd,OAAOvB,MAAM,MAY1B,ECvCP,IAAgB,KAAO,mBAAmB,KAAO,mBAAmB,MAAQ,oBAAoB,YAAc,2BCiB9G,GAdawlL,KAET1kD,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,UAChDijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAW8jC,GAAOtrF,KAAK0lB,UAC1BijF,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,KAAMtf,GAAOtzE,OAAO0N,SAAC,kCCRlD,IAAgB,UAAY,2BAA2B,QAAU,yBAAyB,QAAU,yBAAyB,SAAW,0BAA0B,KAAO,sBAAsB,KAAO,sBAAsB,SAAW,0BAA0B,cAAgB,gCCgEjR,GA3DgBq5M,KAEZp2H,EAAAA,GAAAA,KAAA,OAAKnhD,UAAWojD,KAAG,UAAWtf,GAAOmmD,MAAM/rH,UACzCslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAWojD,KAAG,YAAatf,GAAOpnC,WAAWx+B,SAAA,EAChDslF,EAAAA,GAAAA,MAAA,OAAKxjD,UAAW8jC,GAAO5nC,QAAQh+B,SAAA,EAC7BijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,sPAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,8BAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,kYAGHijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,qGAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,mCAGJijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,uCAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,2CAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,uCAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,kCAI3BijF,EAAAA,GAAAA,KAAA,KAAGnhD,UAAW8jC,GAAO7qF,KAAKilB,SAAC,qCAI3BijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,4BAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,2SAGHijF,EAAAA,GAAAA,KAAA,MAAAjjF,SAAI,eAGJijF,EAAAA,GAAAA,KAAA,KAAAjjF,SAAG,8HAILijF,EAAAA,GAAAA,KAAA,OAAAjjF,UAAKslF,EAAAA,GAAAA,MAAC9H,GAAI,CAAC17C,UAAW8jC,GAAOqqK,cAAejpM,GAAI,iBAAiBhnC,SAAA,EAACijF,EAAAA,GAAAA,KAAA,QAAMnhD,UAAW8jC,GAAO8f,OAAa,uBC9C/G,GAT2B8gI,KAEvBlhI,EAAAA,GAAAA,MAAAmC,GAAAA,SAAA,CAAAznF,SAAA,EACEijF,EAAAA,GAAAA,KAAC0kD,GAAI,KACL1kD,EAAAA,GAAAA,KAACo2H,GAAO,OCqed,SA3bA,WAaE,OAZAjvL,EAAAA,EAAAA,YAAU,MACJw3D,aAAaC,QAAQ,cAAsD,KAAtCD,aAAaC,QAAQ,cACzDD,aAAaC,QAAQ,cAAsD,KAAtCD,aAAaC,QAAQ,cAC1DD,aAAaC,QAAQ,oBAAkE,KAA5CD,aAAaC,QAAQ,uBA4azE,WACE,MAAM2Y,EAAUj4I,SAAS01I,OAAO98F,MAAM,KACtC,IAAK,IAAIz0C,EAAI,EAAGA,EAAI8zI,EAAQv4I,OAAQyE,IAAK,CACvC,MAAMuxI,EAASuC,EAAQ9zI,GACjBmqR,EAAQ54I,EAAOhzI,QAAQ,KACvB/D,EAAO2vR,GAAS,EAAI54I,EAAO5kI,OAAO,EAAGw9Q,GAAS54I,EACpD11I,SAAS01I,OAAS/2I,EAAO,yCAC3B,CACF,CAlbM4vR,GACAlvJ,aAAamvJ,WAAW,aACxBnvJ,aAAamvJ,WAAW,aACxBnvJ,aAAamvJ,WAAW,mBAC1B,GACC,KAGD9tJ,EAAAA,GAAAA,KAACtH,GAAM,CAAA37E,UACLslF,EAAAA,GAAAA,MAAClJ,GAAM,CAAAp8E,SAAA,EACLijF,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,IACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACskD,GAAI,SAGXtkD,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACguJ,GAAS,SAIhBhuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,UACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC+sH,GAAM,SAIb/sH,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACsyH,GAAW,SAIlBtyH,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,mBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACiuJ,GAAM,SAIbjuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,8BACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACkuJ,GAAkB,SAIzBluJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,WACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAACpoJ,YAAU,EAACC,YAAU,EAAA7oF,UACzBijF,EAAAA,GAAAA,KAACq6H,GAAM,SAIbr6H,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,WACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAACpoJ,YAAU,EAACC,YAAU,EAAA7oF,UACzBijF,EAAAA,GAAAA,KAAC8/H,GAAM,SAIb9/H,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,mBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAACpoJ,YAAU,EAACC,YAAU,EAAA7oF,UACzBijF,EAAAA,GAAAA,KAACwiI,GAAc,SAIrBxiI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,wBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACujI,GAAkB,SAIzBvjI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACmuJ,GAAW,SAIlBnuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,0BACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACouJ,GAAe,SAItBpuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,yCACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC0jI,GAAoC,SAI3C1jI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,kBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACwjI,GAAa,SAIpBxjI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,cACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACm4I,GAAS,SAIhBn4I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,cACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACq2H,GAAS,SAIhBr2H,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,wBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACyjI,GAAmB,SAI1BzjI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,6CACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC0jI,GAAoC,SAI3C1jI,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACu1I,GAAiB,SAIxBv1I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,sBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACq9I,GAAkB,SAIzBr9I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACquJ,GAAiB,SAIxBruJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,cACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACsuJ,GAAgB,SAIvBtuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,YACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACw1I,GAAc,SAIrBx1I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACy1I,GAAkB,SAIzBz1I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC01I,GAAkB,SAIzB11I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,cACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC21I,GAAgB,SAIvB31I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC41I,GAAiB,SAIxB51I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,QACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACq3I,GAAI,SAIXr3I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACk4I,GAAU,SAIjBl4I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACg4I,GAAW,SAIlBh4I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACi5I,GAAW,SAIlBj5I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,qBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACo5I,GAAgB,SAIvBp5I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACsyH,GAAW,SAIlBtyH,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,gBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACs5I,GAAW,SAIlBt5I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,kBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACk9I,GAAa,SAapBl9I,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACuuJ,GAAU,SAIjBvuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,kBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAACpqJ,YAAU,EAACiC,YAAU,EAAA7oF,UACzBijF,EAAAA,GAAAA,KAAC+pJ,GAAQ,SAIf/pJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,mBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACwuJ,GAAc,SAIrBxuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,iBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAACyuJ,GAAY,SAInBzuJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,iBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC0uJ,GAAe,SAItB1uJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,iBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC2uJ,GAAa,SAIpB3uJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,wBACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC4uJ,GAAkB,SAIzB5uJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,eACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC6uJ,GAAU,SAIjB7uJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,2BACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+tJ,GAAI,CAAAhxO,UACHijF,EAAAA,GAAAA,KAAC8uJ,GAAsB,SAI7B9uJ,EAAAA,GAAAA,KAACvH,GAAK,CACJ7uF,OAAK,EACLokF,KAAK,IACLxkG,SACEw2G,EAAAA,GAAAA,KAAC+uJ,GAAY,UAMzB,EC7de,SAASC,KACpB,OAAOhvJ,EAAAA,GAAAA,KAACivJ,GAAAA,mBAAkB,GAC9B,CCFA,SAASC,GAAsBC,GAqB7B,OAlBiB,SAAoBjtM,GACnC,IAAIvd,EAAWud,EAAKvd,SAChBm9G,EAAW5/F,EAAK4/F,SACpB,OAAO,SAAUh3J,GACf,OAAO,SAAUqD,GAGf,MAAsB,oBAAXA,EAEFA,EAAOw2C,EAAUm9G,EAAUqtG,GAI7BrkQ,EAAKqD,EACd,CACF,CACF,CAGF,CAEA,IAAIihQ,GAAQF,KAGZE,GAAMC,kBAAoBH,GAC1B,YCtBA,SAASI,GAAuBp7O,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,CAGA,IAAIq7O,GACuB,oBAAXxmQ,QAAyBA,OAAOymQ,YAAc,eAS1Dz9L,GAAe,WACjB,OAAOlkF,KAAKH,SAASnB,SAAS,IAAIikC,UAAU,GAAG0H,MAAM,IAAIloC,KAAK,IAChE,EAEIy/Q,GAAc,CAChBC,KAAM,eAAiB39L,KACvB49L,QAAS,kBAAoB59L,KAC7B69L,qBAAsB,WACpB,MAAO,+BAAiC79L,IAC1C,GAOF,SAASu0C,GAAc53H,GACrB,GAAmB,kBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAI20B,EAAQ30B,EAE4B,OAAjCrS,OAAOo1B,eAAe4R,IAC3BA,EAAQhnC,OAAOo1B,eAAe4R,GAGhC,OAAOhnC,OAAOo1B,eAAe/iB,KAAS20B,CACxC,CAuFA,SAASwsP,GAAYtoJ,EAASuoJ,EAAgBC,GAC5C,IAAIhtM,EAEJ,GAA8B,oBAAnB+sM,GAAqD,oBAAbC,GAA+C,oBAAbA,GAAmD,oBAAjBhxR,UAAU,GAC/H,MAAM,IAAI0P,MAA8C6gR,GAAuB,IAQjF,GAL8B,oBAAnBQ,GAAqD,qBAAbC,IACjDA,EAAWD,EACXA,OAAiBpwR,GAGK,qBAAbqwR,EAA0B,CACnC,GAAwB,oBAAbA,EACT,MAAM,IAAIthR,MAA8C6gR,GAAuB,IAGjF,OAAOS,EAASF,GAATE,CAAsBxoJ,EAASuoJ,EACxC,CAEA,GAAuB,oBAAZvoJ,EACT,MAAM,IAAI94H,MAA8C6gR,GAAuB,IAGjF,IAAIU,EAAiBzoJ,EACjB0oJ,EAAeH,EACfI,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiB3vR,QAErC,CAQA,SAASuhL,IACP,GAAIsuG,EACF,MAAM,IAAI3hR,MAA8C6gR,GAAuB,IAGjF,OAAOW,CACT,CA0BA,SAASj3I,EAAUr3I,GACjB,GAAwB,oBAAbA,EACT,MAAM,IAAI8M,MAA8C6gR,GAAuB,IAGjF,GAAIc,EACF,MAAM,IAAI3hR,MAA8C6gR,GAAuB,IAGjF,IAAIxtR,GAAe,EAGnB,OAFAuuR,IACAF,EAActuR,KAAKF,GACZ,WACL,GAAKG,EAAL,CAIA,GAAIsuR,EACF,MAAM,IAAI3hR,MAA8C6gR,GAAuB,IAGjFxtR,GAAe,EACfuuR,IACA,IAAItuR,EAAQouR,EAAcnuR,QAAQL,GAClCwuR,EAAcluR,OAAOF,EAAO,GAC5BmuR,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAASvrN,EAASx2C,GAChB,IAAKm4G,GAAcn4G,GACjB,MAAM,IAAI1f,MAA8C6gR,GAAuB,IAGjF,GAA2B,qBAAhBnhQ,EAAOoJ,KAChB,MAAM,IAAI9oB,MAA8C6gR,GAAuB,IAGjF,GAAIc,EACF,MAAM,IAAI3hR,MAA8C6gR,GAAuB,IAGjF,IACEc,GAAgB,EAChBH,EAAeD,EAAeC,EAAc9hQ,EAC9C,CAAE,QACAiiQ,GAAgB,CAClB,CAIA,IAFA,IAAIn9N,EAAYi9N,EAAmBC,EAE1B1sR,EAAI,EAAGA,EAAIwvD,EAAUj0D,OAAQyE,IAAK,EAEzC9B,EADesxD,EAAUxvD,KAE3B,CAEA,OAAO0qB,CACT,CA4EA,OAHAw2C,EAAS,CACPptC,KAAMk4P,GAAYC,QAEb3sM,EAAQ,CACbpe,SAAUA,EACVq0E,UAAWA,EACX8oC,SAAUA,EACVwuG,eAnEF,SAAwBC,GACtB,GAA2B,oBAAhBA,EACT,MAAM,IAAI9hR,MAA8C6gR,GAAuB,KAGjFU,EAAiBO,EAKjB5rN,EAAS,CACPptC,KAAMk4P,GAAYE,SAEtB,IAuDSJ,IA9CT,WACE,IAAIrtM,EAEAsuM,EAAiBx3I,EACrB,OAAO92D,EAAO,CASZ82D,UAAW,SAAmB13B,GAC5B,GAAwB,kBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAI7yG,MAA8C6gR,GAAuB,KAGjF,SAASmB,IACHnvK,EAASx2F,MACXw2F,EAASx2F,KAAKg3J,IAElB,CAIA,OAFA2uG,IAEO,CACL34I,YAFgB04I,EAAeC,GAInC,IACMlB,IAAgB,WACtB,OAAO7uR,IACT,EAAGwhF,CACL,EAaqCa,CACvC,CA6PA,SAAS2tM,KACP,IAAK,IAAItuM,EAAOrjF,UAAUC,OAAQ2xR,EAAQ,IAAIvnQ,MAAMg5D,GAAO79E,EAAO,EAAGA,EAAO69E,EAAM79E,IAChFosR,EAAMpsR,GAAQxF,UAAUwF,GAG1B,OAAqB,IAAjBosR,EAAM3xR,OACD,SAAUw/B,GACf,OAAOA,CACT,EAGmB,IAAjBmyP,EAAM3xR,OACD2xR,EAAM,GAGRA,EAAM/lQ,QAAO,SAAUjkB,EAAGC,GAC/B,OAAO,WACL,OAAOD,EAAEC,EAAEzH,WAAM,EAAQJ,WAC3B,CACF,GACF,CC3oBA,MAAM6xR,GAAe,CACjBhpH,iBAAkB,GAClBgS,WAAW,EACXjS,SAAS,GCDPipH,GAAe,CACjBjpH,SAAS,EACTud,QAAS,GACTxxJ,MAAO,ICLLm9P,GHgfN,SAAyBC,GAIvB,IAHA,IAAIC,EAAc10R,OAAOqtB,KAAKonQ,GAC1BE,EAAgB,CAAC,EAEZvtR,EAAI,EAAGA,EAAIstR,EAAY/xR,OAAQyE,IAAK,CAC3C,IAAIxC,EAAM8vR,EAAYttR,GAElB6F,EAMyB,oBAAlBwnR,EAAS7vR,KAClB+vR,EAAc/vR,GAAO6vR,EAAS7vR,GAElC,CAEA,IASIgwR,EATAC,EAAmB70R,OAAOqtB,KAAKsnQ,GAWnC,KAjEF,SAA4BF,GAC1Bz0R,OAAOqtB,KAAKonQ,GAAUtvR,SAAQ,SAAUP,GACtC,IAAIsmI,EAAUupJ,EAAS7vR,GAKvB,GAA4B,qBAJTsmI,OAAQ7nI,EAAW,CACpC63B,KAAMk4P,GAAYC,OAIlB,MAAM,IAAIjhR,MAA8C6gR,GAAuB,KAGjF,GAEO,qBAFI/nJ,OAAQ7nI,EAAW,CAC5B63B,KAAMk4P,GAAYG,yBAElB,MAAM,IAAInhR,MAA8C6gR,GAAuB,IAEnF,GACF,CAiDI6B,CAAmBH,EACrB,CAAE,MAAO/wR,IACPgxR,EAAsBhxR,EACxB,CAEA,OAAO,SAAqB8f,EAAOoO,GAKjC,QAJc,IAAVpO,IACFA,EAAQ,CAAC,GAGPkxQ,EACF,MAAMA,EAcR,IAX2C,IAQvCG,GAAa,EACbh3Q,EAAY,CAAC,EAERmB,EAAK,EAAGA,EAAK21Q,EAAiBlyR,OAAQuc,IAAM,CACnD,IAAIhX,EAAO2sR,EAAiB31Q,GACxBgsH,EAAUypJ,EAAczsR,GACxB8sR,EAAsBtxQ,EAAMxb,GAC5B+sR,EAAkB/pJ,EAAQ8pJ,EAAqBljQ,GAEnD,GAA+B,qBAApBmjQ,EAAiC,CACzBnjQ,GAAUA,EAAOoJ,KAClC,MAAM,IAAI9oB,MAA8C6gR,GAAuB,IACjF,CAEAl1Q,EAAU7V,GAAQ+sR,EAClBF,EAAaA,GAAcE,IAAoBD,CACjD,CAGA,OADAD,EAAaA,GAAcF,EAAiBlyR,SAAW3C,OAAOqtB,KAAK3J,GAAO/gB,QACtDob,EAAY2F,CAClC,CACF,CGzjBoBwxQ,CAAgB,CAClCzpH,QFKoB,WAAmC,IAAlC/nJ,EAAKhhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG6xR,GAAcziQ,EAAMpvB,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EAC/C,OAAQyuB,EAAOoJ,OACNwsJ,GACDv7F,GAAAA,GAAA,GACOzoE,GAAK,IACR4nJ,SAAS,EACTC,iBAAkBz5I,EAAOwzC,UAGtB5hD,CAEnB,EEfEmlK,QDMc,WAAmC,IAADssG,EAAAC,EAAAC,EAAA,IAAjC3xQ,EAAKhhB,UAAAC,OAAA,QAAAU,IAAAX,UAAA,GAAAA,UAAA,GAAG6xR,GAAcziQ,EAAMpvB,UAAAC,OAAA,EAAAD,UAAA,QAAAW,EACzC,OAAQyuB,EAAOoJ,MACX,KAAKk1N,GACD,OAAAjkK,GAAAA,GAAA,GACOzoE,GAAK,IACR4nJ,SAAS,IAEjB,KAAK+kF,GACD,OAAAlkK,GAAAA,GAAA,GACOzoE,GAAK,IACR4nJ,SAAS,EACTud,QAAe,OAAN/2J,QAAM,IAANA,GAAe,QAATqjQ,EAANrjQ,EAAQwzC,eAAO,IAAA6vN,GAAM,QAANC,EAAfD,EAAiBnmR,YAAI,IAAAomR,GAAM,QAANC,EAArBD,EAAuBpmR,YAAI,IAAAqmR,OAArB,EAANA,EAA8B,KAE/C,KAAK/kC,GACD,OAAAnkK,GAAAA,GAAA,GACOzoE,GAAK,IACR4nJ,SAAS,EACTj0I,MAAOvF,EAAOuF,QAEtB,QACI,OAAO3T,EAEnB,IEzBMuhK,GAAQuuG,GDAd,GHypBA,WACE,IAAK,IAAIztM,EAAOrjF,UAAUC,OAAQ2yR,EAAc,IAAIvoQ,MAAMg5D,GAAO79E,EAAO,EAAGA,EAAO69E,EAAM79E,IACtFotR,EAAYptR,GAAQxF,UAAUwF,GAGhC,OAAO,SAAUsrR,GACf,OAAO,WACL,IAAIvuG,EAAQuuG,EAAY1wR,WAAM,EAAQJ,WAElC6yR,EAAY,WACd,MAAM,IAAInjR,MAA8C6gR,GAAuB,IACjF,EAEIuC,EAAgB,CAClB/vG,SAAUR,EAAMQ,SAChBn9G,SAAU,WACR,OAAOitN,EAAUzyR,WAAM,EAAQJ,UACjC,GAEE0gJ,EAAQkyI,EAAYv/Q,KAAI,SAAU0/Q,GACpC,OAAOA,EAAWD,EACpB,IAEA,OADAD,EAAYlB,GAAQvxR,WAAM,EAAQsgJ,EAAtBixI,CAA6BpvG,EAAM38G,UACxC6jB,GAAcA,GAAc,CAAC,EAAG84F,GAAQ,CAAC,EAAG,CACjD38G,SAAUitN,GAEd,CACF,CACF,CIrrBoCG,CAAgB3C,KAEpD4C,EAAAA,WAAoB1yR,SAASmkO,eAAe,SAAS9oL,QAEnD0nF,EAAAA,GAAAA,MAAChjB,GAAQ,CAACiiE,MAAOA,GAAMvkI,SAAA,EACrBijF,EAAAA,GAAAA,KAACgvJ,GAAY,KACbhvJ,EAAAA,GAAAA,KAACiyJ,GAAG","sources":["../node_modules/airbnb-prop-types/src/mocks/index.js","../node_modules/airbnb-prop-types/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/consolidated-events/lib/index.esm.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/define-data-property/index.js","../node_modules/define-properties/index.js","../node_modules/document.contains/implementation.js","../node_modules/document.contains/index.js","../node_modules/document.contains/polyfill.js","../node_modules/document.contains/shim.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/es-object-atoms/RequireObjectCoercible.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/hasown/index.js","../node_modules/json2mq/index.js","../node_modules/load-script/index.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.isequal/index.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/object.values/implementation.js","../node_modules/object.values/index.js","../node_modules/object.values/polyfill.js","../node_modules/object.values/shim.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/qrcode-generator/qrcode.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../react-notifications-component/webpack/universalModuleDefinition","../react-notifications-component/external umd {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","../react-notifications-component/webpack/bootstrap","../react-notifications-component/webpack/runtime/compat get default export","../react-notifications-component/webpack/runtime/define property getters","../react-notifications-component/webpack/runtime/hasOwnProperty shorthand","../react-notifications-component/webpack/runtime/make namespace object","../react-notifications-component/src/utils/enums.ts","../react-notifications-component/src/utils/constants.ts","../react-notifications-component/src/utils/helpers.ts","../react-notifications-component/src/utils/timer.ts","../react-notifications-component/src/components/Notification.tsx","../react-notifications-component/src/store/index.ts","../react-notifications-component/src/components/Container.tsx","../node_modules/react-outside-click-handler/build/OutsideClickHandler.js","../node_modules/react-outside-click-handler/index.js","../node_modules/react-player/lib/Player.js","../node_modules/react-player/lib/ReactPlayer.js","../node_modules/react-player/lib/index.js","../node_modules/react-player/lib/patterns.js","../node_modules/react-player/lib/players/index.js","../node_modules/react-player/lib/props.js","../node_modules/react-player/lib/utils.js","../node_modules/react-qrcode-logo/dist/index.js","../MediaQuery/webpack/universalModuleDefinition","../MediaQuery/node_modules/css-mediaquery/index.js","../MediaQuery/node_modules/hyphenate-style-name/index.js","../MediaQuery/node_modules/matchmediaquery/index.js","../MediaQuery/node_modules/object-assign/index.js","../MediaQuery/node_modules/prop-types/checkPropTypes.js","../MediaQuery/node_modules/prop-types/factoryWithTypeCheckers.js","../MediaQuery/node_modules/prop-types/index.js","../MediaQuery/node_modules/prop-types/lib/ReactPropTypesSecret.js","../MediaQuery/node_modules/prop-types/lib/has.js","../MediaQuery/node_modules/react-is/cjs/react-is.development.js","../MediaQuery/node_modules/react-is/index.js","../MediaQuery/node_modules/shallow-equal/dist/index.esm.js","../MediaQuery/src/Component.ts","../MediaQuery/src/Context.ts","../MediaQuery/src/index.ts","../MediaQuery/src/mediaQuery.ts","../MediaQuery/src/toQuery.ts","../MediaQuery/src/useMediaQuery.ts","../MediaQuery/external umd {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","../MediaQuery/webpack/bootstrap","../MediaQuery/webpack/runtime/define property getters","../MediaQuery/webpack/runtime/hasOwnProperty shorthand","../MediaQuery/webpack/runtime/make namespace object","../MediaQuery/webpack/startup","../node_modules/react-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/simple-react-validator/dist/simple-react-validator.min.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://bitdenex-global/./src/components/Page/Page.module.sass?a4a0","webpack://bitdenex-global/./src/components/Header/Header.module.sass?c862","../node_modules/@use-it/event-listener/dist/event-listener.m.js","../node_modules/use-persisted-state/dist/use-persisted-state.m.js","../node_modules/use-dark-mode/dist/use-dark-mode.m.js","components/Image.js","webpack://bitdenex-global/./src/components/Header/Dropdown/Dropdown.module.sass?2afc","components/Icon.js","components/Header/Dropdown/index.js","webpack://bitdenex-global/./src/components/Header/Settings/Settings.module.sass?c3ce","components/Header/Settings/index.js","webpack://bitdenex-global/./src/components/Header/Download/Download.module.sass?0acd","components/QrCode/index.js","components/Header/Download/index.js","webpack://bitdenex-global/./src/components/Theme/Theme.module.sass?bde1","components/Theme/index.js","webpack://bitdenex-global/./src/components/Header/User/User.module.sass?9c3d","components/Header/User/index.js","webpack://bitdenex-global/./src/components/Header/Trade/Trade.module.sass?1e9b","components/Header/Trade/index.js","webpack://bitdenex-global/./src/components/Header/BuyCrypto/BuyCrypto.module.sass?080d","components/Header/BuyCrypto/index.js","webpack://bitdenex-global/./src/components/Header/Finance/Finance.module.sass?b3c1","components/Header/Finance/index.js","components/Header/index.js","webpack://bitdenex-global/./src/components/Footer/Footer.module.sass?e497","components/Footer/index.js","components/Page/index.js","webpack://bitdenex-global/./src/screens/Home/Main/Main.module.sass?60e6","webpack://bitdenex-global/./src/components/ScrollButton/ScrollButton.module.sass?ecfa","components/ScrollButton/index.js","webpack://bitdenex-global/./src/screens/Home/Main/Cards/Cards.module.sass?af91","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@fingerprintjs/fingerprintjs/node_modules/tslib/tslib.es6.mjs","../node_modules/@fingerprintjs/fingerprintjs/dist/fp.esm.js","components/Notification/index.js","actions/httpClient.js","components/helper.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-loading-skeleton/dist/index.js","webpack://bitdenex-global/./src/components/Skeleton/CardSkeleton/CardSkeleton.module.sass?869e","components/Skeleton/CardSkeleton/index.js","screens/Home/Main/Cards/index.js","webpack://bitdenex-global/./src/components/TextInput/TextInput.module.sass?30c7","components/TextInput/index.js","screens/Home/Main/index.js","webpack://bitdenex-global/./src/screens/Home/Learn/Learn.module.sass?dda3","webpack://bitdenex-global/./src/components/Play/Play.module.sass?8d30","components/Play/index.js","screens/Home/Learn/index.js","webpack://bitdenex-global/./src/screens/Home/Trend/Trend.module.sass?87f1","webpack://bitdenex-global/./src/components/Skeleton/TradeSkeleton/TradeSkeleton.module.sass?e2cb","components/Skeleton/TradeSkeleton/index.js","screens/Home/Trend/index.js","webpack://bitdenex-global/./src/components/Popular/Popular.module.sass?da1c","webpack://bitdenex-global/./src/components/Popular/Card/Card.module.sass?4a42","components/Popular/Card/index.js","components/Popular/index.js","webpack://bitdenex-global/./src/screens/Home/Download/Download.module.sass?b4dd","screens/Home/Download/index.js","webpack://bitdenex-global/./src/components/News/News.module.sass?b509","webpack://bitdenex-global/./src/components/News/Card/Card.module.sass?c8ba","components/News/Card/index.js","components/News/index.js","webpack://bitdenex-global/./src/screens/Home/Steps/Steps.module.sass?f2fb","webpack://bitdenex-global/./src/screens/Home/Steps/Notice/Notice.module.sass?e348","screens/Home/Steps/Notice/index.js","screens/Home/Steps/index.js","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../node_modules/socket.io-client/build/esm/url.js","../node_modules/react-redux/src/utils/react.ts","../node_modules/react-redux/src/components/Context.ts","../node_modules/react-redux/src/utils/useSyncExternalStore.ts","../node_modules/react-redux/src/hooks/useReduxContext.ts","../node_modules/react-redux/src/hooks/useSelector.ts","../node_modules/react-redux/src/utils/react-is.ts","../node_modules/react-redux/src/utils/batch.ts","../node_modules/react-redux/src/utils/Subscription.ts","../node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts","../node_modules/react-redux/src/utils/hoistStatics.ts","../node_modules/react-redux/src/components/Provider.tsx","../node_modules/react-redux/src/hooks/useStore.ts","../node_modules/react-redux/src/hooks/useDispatch.ts","../node_modules/react-redux/src/index.ts","../node_modules/react-redux/src/components/connect.tsx","actions/markets/actionType.js","actions/markets/index.js","webpack://bitdenex-global/./src/components/CookieConsent/CookieConsent.module.sass?7b65","components/CookieConsent/index.js","screens/Home/index.js","webpack://bitdenex-global/./src/screens/Market/Main/Main.module.sass?039c","screens/Market/Main/index.js","webpack://bitdenex-global/./src/screens/Market/Details/Details.module.sass?6bfc","webpack://bitdenex-global/./src/screens/Market/Details/Panel/Panel.module.sass?d98d","webpack://bitdenex-global/./src/components/Dropdown/Dropdown.module.sass?7518","components/Dropdown/index.js","screens/Market/Details/Panel/index.js","webpack://bitdenex-global/./src/screens/Market/Details/Cards/Panel.module.sass?6f36","webpack://bitdenex-global/./src/screens/Market/Details/Cards/Card/Card.module.sass?2382","screens/Market/Details/Cards/Card/index.js","webpack://bitdenex-global/./src/screens/Market/Details/Cards/MulCards/MulCards.module.sass?e05d","../node_modules/@kurkle/color/dist/color.esm.js","../node_modules/chart.js/src/helpers/helpers.core.ts","../node_modules/chart.js/src/helpers/helpers.math.ts","../node_modules/chart.js/src/helpers/helpers.collection.ts","../node_modules/chart.js/src/helpers/helpers.extras.ts","../node_modules/chart.js/src/helpers/helpers.easing.ts","../node_modules/chart.js/src/helpers/helpers.color.ts","../node_modules/chart.js/src/core/core.animations.defaults.js","../node_modules/chart.js/src/helpers/helpers.intl.ts","../node_modules/chart.js/src/core/core.ticks.js","../node_modules/chart.js/src/core/core.defaults.js","../node_modules/chart.js/src/core/core.layouts.defaults.js","../node_modules/chart.js/src/core/core.scale.defaults.js","../node_modules/chart.js/src/helpers/helpers.canvas.ts","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.ts","../node_modules/chart.js/src/helpers/helpers.curve.ts","../node_modules/chart.js/src/helpers/helpers.dom.ts","../node_modules/chart.js/src/helpers/helpers.interpolation.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/helpers/helpers.segment.js","../node_modules/chart.js/src/core/core.animator.js","../node_modules/chart.js/src/core/core.animation.js","../node_modules/chart.js/src/core/core.animations.js","../node_modules/chart.js/src/core/core.datasetController.js","../node_modules/chart.js/src/controllers/controller.bar.js","../node_modules/chart.js/src/controllers/controller.bubble.js","../node_modules/chart.js/src/controllers/controller.doughnut.js","../node_modules/chart.js/src/controllers/controller.line.js","../node_modules/chart.js/src/controllers/controller.polarArea.js","../node_modules/chart.js/src/controllers/controller.pie.js","../node_modules/chart.js/src/controllers/controller.radar.js","../node_modules/chart.js/src/controllers/controller.scatter.js","../node_modules/chart.js/src/core/core.adapters.ts","../node_modules/chart.js/src/core/core.interaction.js","../node_modules/chart.js/src/core/core.layouts.js","../node_modules/chart.js/src/platform/platform.base.js","../node_modules/chart.js/src/platform/platform.basic.js","../node_modules/chart.js/src/platform/platform.dom.js","../node_modules/chart.js/src/core/core.element.ts","../node_modules/chart.js/src/core/core.scale.autoskip.js","../node_modules/chart.js/src/core/core.scale.js","../node_modules/chart.js/src/core/core.typedRegistry.js","../node_modules/chart.js/src/core/core.registry.js","../node_modules/chart.js/src/core/core.plugins.js","../node_modules/chart.js/src/core/core.config.js","../node_modules/chart.js/src/core/core.controller.js","../node_modules/chart.js/src/platform/index.js","../node_modules/chart.js/src/elements/element.arc.ts","../node_modules/chart.js/src/elements/element.line.js","../node_modules/chart.js/src/elements/element.point.ts","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.legend.js","../node_modules/chart.js/src/plugins/plugin.title.js","../node_modules/chart.js/src/plugins/plugin.subtitle.js","../node_modules/chart.js/src/plugins/plugin.tooltip.js","../node_modules/chart.js/src/scales/scale.category.js","../node_modules/chart.js/src/scales/scale.linearbase.js","../node_modules/chart.js/src/scales/scale.linear.js","../node_modules/chart.js/src/scales/scale.logarithmic.js","../node_modules/chart.js/src/scales/scale.radialLinear.js","../node_modules/chart.js/src/scales/scale.time.js","../node_modules/chart.js/src/scales/scale.timeseries.js","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","webpack://bitdenex-global/./src/components/SemiPieChart/SemiPieChart.module.sass?b85c","components/SemiPieChart/index.js","screens/Market/Details/Cards/MulCards/index.js","screens/Market/Details/Cards/index.js","webpack://bitdenex-global/./src/screens/Market/Details/Trade/Trade.module.sass?f8f4","screens/Market/Details/Trade/index.js","screens/Market/Details/index.js","webpack://bitdenex-global/./src/components/LoaderScreen/Loader.module.sass?157f","components/LoaderScreen/index.js","actions/cmcData/actionType.js","actions/cmcData/index.js","screens/Market/index.js","webpack://bitdenex-global/./src/screens/LearnCrypto/Main/Main.module.sass?47fc","screens/LearnCrypto/Main/index.js","webpack://bitdenex-global/./src/screens/LearnCrypto/Releases/Releases.module.sass?a5ae","webpack://bitdenex-global/./src/screens/LearnCrypto/Releases/Item/Item.module.sass?d5f4","screens/LearnCrypto/Releases/Item/index.js","screens/LearnCrypto/Releases/index.js","webpack://bitdenex-global/./src/screens/LearnCrypto/Catalog/Catalog.module.sass?d0c6","webpack://bitdenex-global/./src/components/Card/Card.module.sass?fae6","components/Card/index.js","mocks/articles.js","screens/LearnCrypto/Catalog/index.js","webpack://bitdenex-global/./src/screens/LearnCrypto/CoinsAndTokens/Catalog.module.sass?9ba0","webpack://bitdenex-global/./src/screens/LearnCrypto/CoinsAndTokens/Card/Card.module.sass?9f6d","screens/LearnCrypto/CoinsAndTokens/Card/index.js","screens/LearnCrypto/CoinsAndTokens/index.js","screens/LearnCrypto/index.js","webpack://bitdenex-global/./src/screens/LearnCryptoDetails/Main/Main.module.sass?a8e3","webpack://bitdenex-global/./src/components/Breadcrumbs/Breadcrumbs.module.sass?87f8","components/Breadcrumbs/index.js","webpack://bitdenex-global/./src/components/Player/Player.module.sass?3a4a","components/Player/index.js","screens/LearnCryptoDetails/Main/index.js","webpack://bitdenex-global/./src/screens/LearnCryptoDetails/Article/Article.module.sass?9cd7","webpack://bitdenex-global/./src/components/Share/Share.module.sass?0b42","../node_modules/react-share/es/utils/assert.js","../node_modules/react-share/es/utils/objectToGetParams.js","../node_modules/react-share/es/ShareButton.js","../node_modules/react-share/es/hocs/createShareButton.js","../node_modules/react-share/es/TwitterShareButton.js","../node_modules/react-share/es/FacebookShareButton.js","components/Share/index.js","webpack://bitdenex-global/./src/components/Favorite/Favorite.module.sass?941a","components/Favorite/index.js","screens/LearnCryptoDetails/Article/index.js","webpack://bitdenex-global/./src/screens/LearnCryptoDetails/Catalog/Catalog.module.sass?e43e","screens/LearnCryptoDetails/Catalog/index.js","screens/LearnCryptoDetails/index.js","webpack://bitdenex-global/./src/screens/AmlPolicy/Main/Main.module.sass?a8aa","screens/AmlPolicy/Main/index.js","webpack://bitdenex-global/./src/screens/AmlPolicy/Article/Article.module.sass?3fec","screens/AmlPolicy/Article/index.js","screens/AmlPolicy/index.js","webpack://bitdenex-global/./src/screens/SignIn/SignIn.module.sass?5ff9","webpack://bitdenex-global/./src/components/Login/Login.module.sass?2953","components/Login/index.js","webpack://bitdenex-global/./src/screens/SignIn/Form/Form.module.sass?20fa","webpack://bitdenex-global/./src/components/Loader/Loader.module.sass?6c97","components/Loader/index.js","screens/SignIn/Form/index.js","webpack://bitdenex-global/./src/screens/SignIn/Scan/Scan.module.sass?53e9","webpack://bitdenex-global/./src/components/Checkbox/Checkbox.module.sass?f8bc","components/Checkbox/index.js","screens/SignIn/Scan/index.js","webpack://bitdenex-global/./src/screens/SignIn/Code/Code.module.sass?c24b","screens/SignIn/Code/index.js","webpack://bitdenex-global/./src/screens/SignIn/Confirm/Code.module.sass?0188","screens/SignIn/Confirm/index.js","webpack://bitdenex-global/./src/screens/SignIn/Barcode/Code.module.sass?f3d8","screens/SignIn/Barcode/index.js","webpack://bitdenex-global/./src/components/Logo/Logo.module.sass?a3fa","components/Logo/index.js","screens/SignIn/index.js","webpack://bitdenex-global/./src/screens/SignUp/Form/Form.module.sass?856a","webpack://bitdenex-global/./src/components/CustomDropdown/Dropdown.module.sass?b971","components/CustomDropdown/index.js","screens/SignUp/Form/index.js","webpack://bitdenex-global/./src/screens/SignUp/Confirm/Confirm.module.sass?ff7e","webpack://bitdenex-global/./src/components/Radio/Radio.module.sass?15eb","components/Radio/index.js","screens/SignUp/Confirm/index.js","webpack://bitdenex-global/./src/screens/SignUp/Code/Code.module.sass?c6ea","screens/SignUp/Code/index.js","webpack://bitdenex-global/./src/screens/SignUp/Barcode/Code.module.sass?3077","screens/SignUp/Barcode/index.js","screens/SignUp/index.js","webpack://bitdenex-global/./src/screens/ForgotPassword/Form/Form.module.sass?df0f","screens/ForgotPassword/Form/index.js","webpack://bitdenex-global/./src/screens/ForgotPassword/Verification/Verification.module.sass?6bd3","screens/ForgotPassword/Verification/index.js","webpack://bitdenex-global/./src/screens/ForgotPassword/NewPassword/NewPassword.module.sass?1456","screens/ForgotPassword/NewPassword/index.js","screens/ForgotPassword/index.js","webpack://bitdenex-global/./src/screens/TermsAndConditions/Main/Main.module.sass?7ddf","screens/TermsAndConditions/Main/index.js","webpack://bitdenex-global/./src/screens/TermsAndConditions/Article/Article.module.sass?ea19","screens/TermsAndConditions/Article/index.js","screens/TermsAndConditions/index.js","webpack://bitdenex-global/./src/screens/PrivacyPolicy/Main/Main.module.sass?f39d","screens/PrivacyPolicy/Main/index.js","webpack://bitdenex-global/./src/screens/PrivacyPolicy/Article/Article.module.sass?845b","screens/PrivacyPolicy/Article/index.js","screens/PrivacyPolicy/index.js","webpack://bitdenex-global/./src/screens/LocationRestriction/Main/Main.module.sass?291a","screens/LocationRestriction/Main/index.js","webpack://bitdenex-global/./src/screens/LocationRestriction/Article/Article.module.sass?0033","screens/LocationRestriction/Article/index.js","screens/LocationRestriction/index.js","webpack://bitdenex-global/./src/screens/TermsAndConditionsForReferralProgram/Main/Main.module.sass?6021","screens/TermsAndConditionsForReferralProgram/Main/index.js","webpack://bitdenex-global/./src/screens/TermsAndConditionsForReferralProgram/Article/Article.module.sass?8581","screens/TermsAndConditionsForReferralProgram/Article/index.js","screens/TermsAndConditionsForReferralProgram/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellBitcoin/Main/Main.module.sass?a352","screens/BuyAndSellBitcoin/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellBitcoin/Releases/Releases.module.sass?7802","webpack://bitdenex-global/./src/screens/BuyAndSellBitcoin/Releases/Item/Item.module.sass?606f","screens/BuyAndSellBitcoin/Releases/Item/index.js","webpack://bitdenex-global/./src/components/TVChartContainer/index.module.sass?f6c1","charting_library/charting_library.esm.js","components/TVChartContainer/stream.js","components/TVChartContainer/historyProvider.js","components/TVChartContainer/dataFeed.js","components/TVChartContainer/chartConfig.js","components/TVChartContainer/index.js","screens/BuyAndSellBitcoin/Releases/index.js","screens/BuyAndSellBitcoin/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellTron/Main/Main.module.sass?e2d4","screens/BuyAndSellTron/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellTron/Releases/Releases.module.sass?89ca","webpack://bitdenex-global/./src/screens/BuyAndSellTron/Releases/Item/Item.module.sass?32f0","screens/BuyAndSellTron/Releases/Item/index.js","screens/BuyAndSellTron/Releases/index.js","screens/BuyAndSellTron/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellEthereum/Main/Main.module.sass?206f","screens/BuyAndSellEthereum/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellEthereum/Releases/Releases.module.sass?e7ba","webpack://bitdenex-global/./src/screens/BuyAndSellEthereum/Releases/Item/Item.module.sass?41e9","screens/BuyAndSellEthereum/Releases/Item/index.js","screens/BuyAndSellEthereum/Releases/index.js","screens/BuyAndSellEthereum/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellLitecoin/Main/Main.module.sass?2da7","screens/BuyAndSellLitecoin/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellLitecoin/Releases/Releases.module.sass?4f1a","webpack://bitdenex-global/./src/screens/BuyAndSellLitecoin/Releases/Item/Item.module.sass?8a7f","screens/BuyAndSellLitecoin/Releases/Item/index.js","screens/BuyAndSellLitecoin/Releases/index.js","screens/BuyAndSellLitecoin/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellRipple/Main/Main.module.sass?e347","screens/BuyAndSellRipple/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellRipple/Releases/Releases.module.sass?c2a5","webpack://bitdenex-global/./src/screens/BuyAndSellRipple/Releases/Item/Item.module.sass?691f","screens/BuyAndSellRipple/Releases/Item/index.js","screens/BuyAndSellRipple/Releases/index.js","screens/BuyAndSellRipple/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellStellar/Main/Main.module.sass?b7c4","screens/BuyAndSellStellar/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellStellar/Releases/Releases.module.sass?c62d","webpack://bitdenex-global/./src/screens/BuyAndSellStellar/Releases/Item/Item.module.sass?87a6","screens/BuyAndSellStellar/Releases/Item/index.js","screens/BuyAndSellStellar/Releases/index.js","screens/BuyAndSellStellar/index.js","webpack://bitdenex-global/./src/screens/Fees/Main/Main.module.sass?2449","screens/Fees/Main/index.js","webpack://bitdenex-global/./src/screens/Fees/Details/Details.module.sass?1cb4","webpack://bitdenex-global/./src/screens/Fees/Details/Panel/Panel.module.sass?751a","screens/Fees/Details/Panel/index.js","webpack://bitdenex-global/./src/screens/Fees/Details/Trade/Trade.module.sass?fd00","webpack://bitdenex-global/./src/screens/Fees/Details/Trade/CryptoFee/Trade.module.sass?66af","screens/Fees/Details/Trade/CryptoFee/index.js","screens/Fees/Details/Trade/index.js","screens/Fees/Details/index.js","webpack://bitdenex-global/./src/screens/Fees/Faq/Faq.module.sass?b772","webpack://bitdenex-global/./src/screens/Fees/Faq/Item/Item.module.sass?e8a6","screens/Fees/Faq/Item/index.js","screens/Fees/Faq/index.js","screens/Fees/index.js","webpack://bitdenex-global/./src/screens/Contact/Education/Education.module.sass?f3cd","screens/Contact/Education/index.js","webpack://bitdenex-global/./src/screens/LegalCenter/Main/Main.module.sass?983a","screens/LegalCenter/Main/index.js","screens/LegalCenter/index.js","webpack://bitdenex-global/./src/screens/HelpCenter/Main/Main.module.sass?49c6","screens/HelpCenter/Main/index.js","webpack://bitdenex-global/./src/screens/HelpCenter/Faq/Faq.module.sass?5e30","webpack://bitdenex-global/./src/screens/HelpCenter/Faq/Item/Item.module.sass?1830","screens/HelpCenter/Faq/Item/index.js","screens/HelpCenter/Faq/index.js","screens/HelpCenter/index.js","webpack://bitdenex-global/./src/screens/KycPolicy/Main/Main.module.sass?2fc5","screens/KycPolicy/Main/index.js","webpack://bitdenex-global/./src/screens/KycPolicy/Article/Article.module.sass?64d7","screens/KycPolicy/Article/index.js","screens/KycPolicy/index.js","webpack://bitdenex-global/./src/screens/Videos/Main/Main.module.sass?3096","screens/Videos/Main/index.js","webpack://bitdenex-global/./src/screens/Videos/Catalog/Catalog.module.sass?fd1f","webpack://bitdenex-global/./src/screens/Videos/Card/Card.module.sass?7673","webpack://bitdenex-global/./src/screens/Videos/Modal/Modal.module.sass?7952","screens/Videos/Modal/index.js","screens/Videos/Card/index.js","screens/Videos/Catalog/index.js","screens/Videos/index.js","webpack://bitdenex-global/./src/components/Pay/Pay.module.sass?b1d5","webpack://bitdenex-global/./src/components/Pay/Card/Card.module.sass?e23e","components/Pay/Card/index.js","components/Pay/index.js","webpack://bitdenex-global/./src/screens/BitdenexPay/Main/Main.module.sass?b945","screens/BitdenexPay/Main/index.js","webpack://bitdenex-global/./src/screens/BitdenexPay/Merchant/Merchant.module.sass?0ea7","webpack://bitdenex-global/./src/screens/BitdenexPay/Merchant/Item/Item.module.sass?3db3","screens/BitdenexPay/Merchant/Item/index.js","screens/BitdenexPay/Merchant/index.js","webpack://bitdenex-global/./src/screens/BitdenexPay/Releases/Releases.module.sass?f080","webpack://bitdenex-global/./src/screens/BitdenexPay/Releases/Item/Item.module.sass?a6bc","screens/BitdenexPay/Releases/Item/index.js","screens/BitdenexPay/Releases/index.js","webpack://bitdenex-global/./src/screens/BitdenexPay/Steps/Steps.module.sass?7ad2","screens/BitdenexPay/Steps/index.js","screens/BitdenexPay/index.js","webpack://bitdenex-global/./src/screens/BitdenexPartners/Main/Main.module.sass?08eb","screens/BitdenexPartners/Main/index.js","webpack://bitdenex-global/./src/components/Partners/Pay.module.sass?94d7","webpack://bitdenex-global/./src/components/Partners/Card/Card.module.sass?1075","components/Partners/Card/index.js","components/Partners/index.js","webpack://bitdenex-global/./src/screens/BitdenexPartners/Popular/Popular.module.sass?93e3","webpack://bitdenex-global/./src/screens/BitdenexPartners/Popular/Card/Card.module.sass?5aa2","screens/BitdenexPartners/Popular/Card/index.js","screens/BitdenexPartners/Popular/index.js","screens/BitdenexPartners/index.js","webpack://bitdenex-global/./src/screens/BitdenexApp/Main/Main.module.sass?d382","screens/BitdenexApp/Main/index.js","screens/BitdenexApp/index.js","webpack://bitdenex-global/./src/screens/CoinListing/Main/Main.module.sass?e308","screens/CoinListing/Main/index.js","webpack://bitdenex-global/./src/screens/CoinListing/Article/Article.module.sass?9fed","screens/CoinListing/Article/index.js","screens/CoinListing/index.js","webpack://bitdenex-global/./src/screens/PageNotFound/Main/Main.module.sass?1d84","screens/PageNotFound/Main/index.js","screens/PageNotFound/index.js","webpack://bitdenex-global/./src/screens/ReferralProgram/Education/Education.module.sass?baa5","webpack://bitdenex-global/./src/screens/ReferralProgram/CommisionTable/Funds.module.sass?f92f","webpack://bitdenex-global/./src/screens/ReferralProgram/CommisionTable/Item/Item.module.sass?fa2d","screens/ReferralProgram/CommisionTable/Item/index.js","screens/ReferralProgram/CommisionTable/index.js","webpack://bitdenex-global/./src/screens/ReferralProgram/CashbackTable/Funds.module.sass?872e","webpack://bitdenex-global/./src/screens/ReferralProgram/CashbackTable/Item/Item.module.sass?7691","screens/ReferralProgram/CashbackTable/Item/index.js","screens/ReferralProgram/CashbackTable/index.js","screens/ReferralProgram/Education/index.js","webpack://bitdenex-global/./src/screens/ReferralProgram/Main/Main.module.sass?ede9","screens/ReferralProgram/Main/index.js","screens/ReferralProgram/index.js","webpack://bitdenex-global/./src/screens/AboutCoin/Main/Main.module.sass?c91e","screens/AboutCoin/Main/index.js","webpack://bitdenex-global/./src/screens/AboutCoin/Faq/Faq.module.sass?923b","webpack://bitdenex-global/./src/screens/AboutCoin/Faq/Item/Item.module.sass?af94","screens/AboutCoin/Faq/Item/index.js","screens/AboutCoin/Faq/index.js","screens/AboutCoin/index.js","webpack://bitdenex-global/./src/screens/BitdenexToken/Main/Main.module.sass?7c32","screens/BitdenexToken/Main/index.js","webpack://bitdenex-global/./src/screens/BitdenexToken/Releases/Releases.module.sass?1dc8","webpack://bitdenex-global/./src/screens/BitdenexToken/Releases/Item/Item.module.sass?e4fe","screens/BitdenexToken/Releases/Item/index.js","screens/BitdenexToken/Releases/index.js","webpack://bitdenex-global/./src/screens/BitdenexToken/GetToken/Releases.module.sass?a057","webpack://bitdenex-global/./src/screens/BitdenexToken/GetToken/Item/Item.module.sass?e9ea","screens/BitdenexToken/GetToken/Item/index.js","screens/BitdenexToken/GetToken/index.js","webpack://bitdenex-global/./src/screens/BitdenexToken/TokenInfo/Releases.module.sass?ec42","screens/BitdenexToken/TokenInfo/index.js","screens/BitdenexToken/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellBitdenex/Main/Main.module.sass?1f80","screens/BuyAndSellBitdenex/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellBitdenex/Releases/Releases.module.sass?66db","webpack://bitdenex-global/./src/screens/BuyAndSellBitdenex/Releases/Item/Item.module.sass?ae09","screens/BuyAndSellBitdenex/Releases/Item/index.js","screens/BuyAndSellBitdenex/Releases/index.js","screens/BuyAndSellBitdenex/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellCardano/Main/Main.module.sass?1e83","screens/BuyAndSellCardano/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellCardano/Releases/Releases.module.sass?97af","webpack://bitdenex-global/./src/screens/BuyAndSellCardano/Releases/Item/Item.module.sass?ce5f","screens/BuyAndSellCardano/Releases/Item/index.js","screens/BuyAndSellCardano/Releases/index.js","screens/BuyAndSellCardano/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellSolana/Main/Main.module.sass?bc54","screens/BuyAndSellSolana/Main/index.js","webpack://bitdenex-global/./src/screens/BuyAndSellSolana/Releases/Releases.module.sass?d82a","webpack://bitdenex-global/./src/screens/BuyAndSellSolana/Releases/Item/Item.module.sass?5376","screens/BuyAndSellSolana/Releases/Item/index.js","screens/BuyAndSellSolana/Releases/index.js","screens/BuyAndSellSolana/index.js","webpack://bitdenex-global/./src/screens/CoinDetail/Details/Details.module.sass?53c9","webpack://bitdenex-global/./src/components/LightWeightChart/LightWeightChart.module.sass?7c94","components/LightWeightChart/index.js","screens/CoinDetail/Details/index.js","screens/CoinDetail/index.js","webpack://bitdenex-global/./src/screens/Exchange/Exchange.module.sass?ddb8","webpack://bitdenex-global/./src/screens/Exchange/Main/Main.module.sass?f774","screens/Exchange/Main/index.js","webpack://bitdenex-global/./src/screens/Exchange/Balance/Balance.module.sass?4be3","screens/Exchange/Balance/index.js","webpack://bitdenex-global/./src/screens/Exchange/Currency/Currency.module.sass?6dc8","screens/Exchange/Currency/index.js","webpack://bitdenex-global/./src/screens/Exchange/Table/Table.module.sass?4a66","screens/Exchange/Table/index.js","webpack://bitdenex-global/./src/screens/Exchange/Actions/Actions.module.sass?e756","webpack://bitdenex-global/./src/screens/Exchange/Actions/Form/Form.module.sass?fdf8","webpack://bitdenex-global/./src/screens/Exchange/Actions/Form/Action/Action.module.sass?531e","screens/Exchange/Actions/Form/Action/index.js","screens/Exchange/Actions/Form/index.js","screens/Exchange/Actions/index.js","webpack://bitdenex-global/./src/screens/Exchange/Charts/Charts.module.sass?a13d","screens/Exchange/Charts/index.js","screens/Exchange/index.js","webpack://bitdenex-global/./src/screens/TradingRules/Main/Main.module.sass?9be8","screens/TradingRules/Main/index.js","webpack://bitdenex-global/./src/screens/TradingRules/Article/Article.module.sass?3794","screens/TradingRules/Article/index.js","screens/TradingRules/index.js","webpack://bitdenex-global/./src/screens/RiskDisclosure/Main/Main.module.sass?a7c5","screens/RiskDisclosure/Main/index.js","webpack://bitdenex-global/./src/screens/RiskDisclosure/Article/Article.module.sass?7c60","screens/RiskDisclosure/Article/index.js","screens/RiskDisclosure/index.js","webpack://bitdenex-global/./src/screens/CookieStatement/Main/Main.module.sass?866c","screens/CookieStatement/Main/index.js","webpack://bitdenex-global/./src/screens/CookieStatement/Article/Article.module.sass?17a8","screens/CookieStatement/Article/index.js","screens/CookieStatement/index.js","webpack://bitdenex-global/./src/screens/Whistleblower/Article/Article.module.sass?4bda","screens/Whistleblower/Article/index.js","screens/Whistleblower/index.js","screens/ConflictOfInterest/index.js","webpack://bitdenex-global/./src/screens/CoinStatus/Main/Main.module.sass?7698","screens/CoinStatus/Main/index.js","webpack://bitdenex-global/./src/screens/CoinStatus/Details/Details.module.sass?f36d","webpack://bitdenex-global/./src/screens/CoinStatus/Details/Trade/Trade.module.sass?96f2","screens/CoinStatus/Details/Trade/index.js","screens/CoinStatus/Details/index.js","screens/CoinStatus/index.js","webpack://bitdenex-global/./src/screens/WhistleblowerProcedure/Main/Main.module.sass?c5d7","screens/WhistleblowerProcedure/Main/index.js","webpack://bitdenex-global/./src/screens/WhistleblowerProcedure/Article/Article.module.sass?68e3","screens/WhistleblowerProcedure/Article/index.js","screens/WhistleblowerProcedure/index.js","App.js","components/Notification/notification.js","../node_modules/redux-thunk/es/index.js","../node_modules/redux/es/redux.js","reducers/marketsReducer.js","reducers/cmcDataReducer.js","reducers/index.js","index.js"],"sourcesContent":["function noop() { return null; }\nnoop.isRequired = noop;\nfunction noopThunk() { return noop; }\n\nmodule.exports = {\n and: noopThunk,\n between: noopThunk,\n booleanSome: noopThunk,\n childrenHavePropXorChildren: noopThunk,\n childrenOf: noopThunk,\n childrenOfType: noopThunk,\n childrenSequenceOf: noopThunk,\n componentWithName: noopThunk,\n disallowedIf: noopThunk,\n elementType: noopThunk,\n empty: noopThunk,\n explicitNull: noopThunk,\n forbidExtraProps: Object,\n integer: noopThunk,\n keysOf: noopThunk,\n mutuallyExclusiveProps: noopThunk,\n mutuallyExclusiveTrueProps: noopThunk,\n nChildren: noopThunk,\n nonNegativeInteger: noop,\n nonNegativeNumber: noopThunk,\n numericString: noopThunk,\n object: noopThunk,\n or: noopThunk,\n predicate: noopThunk,\n range: noopThunk,\n ref: noopThunk,\n requiredBy: noopThunk,\n restrictedProp: noopThunk,\n sequenceOf: noopThunk,\n shape: noopThunk,\n stringEndsWith: noopThunk,\n stringStartsWith: noopThunk,\n uniqueArray: noopThunk,\n uniqueArrayOf: noopThunk,\n valuesOf: noopThunk,\n withShape: noopThunk,\n};\n","module.exports = process.env.NODE_ENV === 'production' ? require('./build/mocks') : require('./build');\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var CAN_USE_DOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Adapted from Modernizr\n// https://github.com/Modernizr/Modernizr/blob/acb3f0d9/feature-detects/dom/passiveeventlisteners.js#L26-L37\nfunction testPassiveEventListeners() {\n if (!CAN_USE_DOM) {\n return false;\n }\n\n if (!window.addEventListener || !window.removeEventListener || !Object.defineProperty) {\n return false;\n }\n\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n function get() {\n supportsPassiveOption = true;\n }\n\n return get;\n }()\n });\n var noop = function noop() {};\n window.addEventListener('testPassiveEventSupport', noop, opts);\n window.removeEventListener('testPassiveEventSupport', noop, opts);\n } catch (e) {\n // do nothing\n }\n\n return supportsPassiveOption;\n}\n\nvar memoized = void 0;\n\nfunction canUsePassiveEventListeners() {\n if (memoized === undefined) {\n memoized = testPassiveEventListeners();\n }\n return memoized;\n}\n\nfunction normalizeEventOptions(eventOptions) {\n if (!eventOptions) {\n return undefined;\n }\n\n if (!canUsePassiveEventListeners()) {\n // If the browser does not support the passive option, then it is expecting\n // a boolean for the options argument to specify whether it should use\n // capture or not. In more modern browsers, this is passed via the `capture`\n // option, so let's just hoist that value up.\n return !!eventOptions.capture;\n }\n\n return eventOptions;\n}\n\n/* eslint-disable no-bitwise */\n\n/**\n * Generate a unique key for any set of event options\n */\nfunction eventOptionsKey(normalizedEventOptions) {\n if (!normalizedEventOptions) {\n return 0;\n }\n\n // If the browser does not support passive event listeners, the normalized\n // event options will be a boolean.\n if (normalizedEventOptions === true) {\n return 100;\n }\n\n // At this point, the browser supports passive event listeners, so we expect\n // the event options to be an object with possible properties of capture,\n // passive, and once.\n //\n // We want to consistently return the same value, regardless of the order of\n // these properties, so let's use binary maths to assign each property to a\n // bit, and then add those together (with an offset to account for the\n // booleans at the beginning of this function).\n var capture = normalizedEventOptions.capture << 0;\n var passive = normalizedEventOptions.passive << 1;\n var once = normalizedEventOptions.once << 2;\n return capture + passive + once;\n}\n\nfunction ensureCanMutateNextEventHandlers(eventHandlers) {\n if (eventHandlers.handlers === eventHandlers.nextHandlers) {\n // eslint-disable-next-line no-param-reassign\n eventHandlers.nextHandlers = eventHandlers.handlers.slice();\n }\n}\n\nfunction TargetEventHandlers(target) {\n this.target = target;\n this.events = {};\n}\n\nTargetEventHandlers.prototype.getEventHandlers = function () {\n function getEventHandlers(eventName, options) {\n var key = String(eventName) + ' ' + String(eventOptionsKey(options));\n\n if (!this.events[key]) {\n this.events[key] = {\n handlers: [],\n handleEvent: undefined\n };\n this.events[key].nextHandlers = this.events[key].handlers;\n }\n\n return this.events[key];\n }\n\n return getEventHandlers;\n}();\n\nTargetEventHandlers.prototype.handleEvent = function () {\n function handleEvent(eventName, options, event) {\n var eventHandlers = this.getEventHandlers(eventName, options);\n eventHandlers.handlers = eventHandlers.nextHandlers;\n eventHandlers.handlers.forEach(function (handler) {\n if (handler) {\n // We need to check for presence here because a handler function may\n // cause later handlers to get removed. This can happen if you for\n // instance have a waypoint that unmounts another waypoint as part of an\n // onEnter/onLeave handler.\n handler(event);\n }\n });\n }\n\n return handleEvent;\n}();\n\nTargetEventHandlers.prototype.add = function () {\n function add(eventName, listener, options) {\n var _this = this;\n\n // options has already been normalized at this point.\n var eventHandlers = this.getEventHandlers(eventName, options);\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n\n if (eventHandlers.nextHandlers.length === 0) {\n eventHandlers.handleEvent = this.handleEvent.bind(this, eventName, options);\n\n this.target.addEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.nextHandlers.push(listener);\n\n var isSubscribed = true;\n var unsubscribe = function () {\n function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n var index = eventHandlers.nextHandlers.indexOf(listener);\n eventHandlers.nextHandlers.splice(index, 1);\n\n if (eventHandlers.nextHandlers.length === 0) {\n // All event handlers have been removed, so we want to remove the event\n // listener from the target node.\n\n if (_this.target) {\n // There can be a race condition where the target may no longer exist\n // when this function is called, e.g. when a React component is\n // unmounting. Guarding against this prevents the following error:\n //\n // Cannot read property 'removeEventListener' of undefined\n _this.target.removeEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.handleEvent = undefined;\n }\n }\n\n return unsubscribe;\n }();\n return unsubscribe;\n }\n\n return add;\n}();\n\nvar EVENT_HANDLERS_KEY = '__consolidated_events_handlers__';\n\n// eslint-disable-next-line import/prefer-default-export\nfunction addEventListener(target, eventName, listener, options) {\n if (!target[EVENT_HANDLERS_KEY]) {\n // eslint-disable-next-line no-param-reassign\n target[EVENT_HANDLERS_KEY] = new TargetEventHandlers(target);\n }\n var normalizedEventOptions = normalizeEventOptions(options);\n return target[EVENT_HANDLERS_KEY].add(eventName, listener, normalizedEventOptions);\n}\n\nexport { addEventListener };\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nmodule.exports = function contains(other) {\n\tif (arguments.length < 1) {\n\t\tthrow new TypeError('1 argument is required');\n\t}\n\tif (typeof other !== 'object') {\n\t\tthrow new TypeError('Argument 1 (â€other“) to Node.contains must be an instance of Node');\n\t}\n\n\tvar node = other;\n\tdo {\n\t\tif (this === node) {\n\t\t\treturn true;\n\t\t}\n\t\tif (node) {\n\t\t\tnode = node.parentNode;\n\t\t}\n\t} while (node);\n\n\treturn false;\n};\n","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar boundContains = function contains(node, other) {\n\treturn polyfill.apply(node, [other]);\n};\n\ndefine(boundContains, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundContains;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.contains) {\n\t\t\treturn document.contains;\n\t\t}\n\t\tif (document.body && document.body.contains) {\n\t\t\ttry {\n\t\t\t\tif (typeof document.body.contains.call(document, '') === 'boolean') {\n\t\t\t\t\treturn document.body.contains;\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimContains() {\n\tvar polyfill = getPolyfill();\n\tif (typeof document !== 'undefined') {\n\t\tdefine(\n\t\t\tdocument,\n\t\t\t{ contains: polyfill },\n\t\t\t{ contains: function () { return document.contains !== polyfill; } }\n\t\t);\n\t\tif (typeof Element !== 'undefined') {\n\t\t\tdefine(\n\t\t\t\tElement.prototype,\n\t\t\t\t{ contains: polyfill },\n\t\t\t\t{ contains: function () { return Element.prototype.contains !== polyfill; } }\n\t\t\t);\n\t\t}\n\t}\n\treturn polyfill;\n};\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('./RequireObjectCoercible')} */\nmodule.exports = function RequireObjectCoercible(value) {\n\tif (value == null) {\n\t\tthrow new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function values(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar vals = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(vals, obj[key]);\n\t\t}\n\t}\n\treturn vals;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.values === 'function' ? Object.values : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimValues() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { values: polyfill }, {\n\t\tvalues: function testValues() {\n\t\t\treturn Object.values !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': 'â–ˆ',\n 'â–ˆ ': 'â–€',\n ' â–ˆ': 'â–„',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': 'â–€',\n 'â–ˆ ': 'â–€',\n ' â–ˆ': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = 'â–ˆ';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += 'â–ˆ';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('â–€');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-notifications-component\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"react-notifications-component\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__359__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__359__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { NOTIFICATION_CONTAINER, NOTIFICATION_INSERTION, NOTIFICATION_TYPE, NOTIFICATION_REMOVAL_SOURCE };\r\nvar NOTIFICATION_CONTAINER;\r\n(function (NOTIFICATION_CONTAINER) {\r\n NOTIFICATION_CONTAINER[\"BOTTOM_LEFT\"] = \"bottom-left\";\r\n NOTIFICATION_CONTAINER[\"BOTTOM_RIGHT\"] = \"bottom-right\";\r\n NOTIFICATION_CONTAINER[\"BOTTOM_CENTER\"] = \"bottom-center\";\r\n NOTIFICATION_CONTAINER[\"TOP_LEFT\"] = \"top-left\";\r\n NOTIFICATION_CONTAINER[\"TOP_RIGHT\"] = \"top-right\";\r\n NOTIFICATION_CONTAINER[\"TOP_CENTER\"] = \"top-center\";\r\n NOTIFICATION_CONTAINER[\"CENTER\"] = \"center\";\r\n NOTIFICATION_CONTAINER[\"TOP_FULL\"] = \"top-full\";\r\n NOTIFICATION_CONTAINER[\"BOTTOM_FULL\"] = \"bottom-full\";\r\n})(NOTIFICATION_CONTAINER || (NOTIFICATION_CONTAINER = {}));\r\nvar NOTIFICATION_INSERTION;\r\n(function (NOTIFICATION_INSERTION) {\r\n NOTIFICATION_INSERTION[\"TOP\"] = \"top\";\r\n NOTIFICATION_INSERTION[\"BOTTOM\"] = \"bottom\";\r\n})(NOTIFICATION_INSERTION || (NOTIFICATION_INSERTION = {}));\r\nvar NOTIFICATION_TYPE;\r\n(function (NOTIFICATION_TYPE) {\r\n NOTIFICATION_TYPE[\"SUCCESS\"] = \"success\";\r\n NOTIFICATION_TYPE[\"DANGER\"] = \"danger\";\r\n NOTIFICATION_TYPE[\"INFO\"] = \"info\";\r\n NOTIFICATION_TYPE[\"DEFAULT\"] = \"default\";\r\n NOTIFICATION_TYPE[\"WARNING\"] = \"warning\";\r\n})(NOTIFICATION_TYPE || (NOTIFICATION_TYPE = {}));\r\nvar NOTIFICATION_REMOVAL_SOURCE;\r\n(function (NOTIFICATION_REMOVAL_SOURCE) {\r\n NOTIFICATION_REMOVAL_SOURCE[\"TIMEOUT\"] = \"timeout\";\r\n NOTIFICATION_REMOVAL_SOURCE[\"CLICK\"] = \"click\";\r\n NOTIFICATION_REMOVAL_SOURCE[\"TOUCH\"] = \"touch\";\r\n NOTIFICATION_REMOVAL_SOURCE[\"MANUAL\"] = \"manual\";\r\n})(NOTIFICATION_REMOVAL_SOURCE || (NOTIFICATION_REMOVAL_SOURCE = {}));\r\n","export const DEFAULT_CONTAINER_VALUES = {\r\n isMobile: true,\r\n breakpoint: 768,\r\n defaultNotificationWidth: 325\r\n};\r\nexport const NOTIFICATION_BASE_CLASS = 'rnc__notification-item';\r\nexport const ERROR = {\r\n ANIMATION_IN: 'Validation error. `animationIn` option must be an array',\r\n ANIMATION_OUT: 'Validation error. `animationOut` option must be an array',\r\n DISMISS_REQUIRED: 'Validation error. `duration` property of `dismiss` option is required',\r\n DISMISS_NUMBER: 'Validation error. `duration` property of `dismiss` option must be a Number',\r\n DISMISS_POSITIVE: 'Validation error. `duration` property of `dismiss` option must be a positive Number',\r\n DISMISS_CLICK_BOOL: 'Validation error. `click` property of `dismiss` option must be a Boolean',\r\n DISMISS_TOUCH_BOOL: 'Validation error. `touch` property of `dismiss` option must be a Boolean',\r\n DISMISS_WAIT: 'Validation error. `waitForAnimation` property of `dismiss` option must be a Boolean',\r\n DISMISS_PAUSE_BOOL: 'Validation error. `pauseOnHover` property of `dismiss` option must be a Boolean',\r\n DISMISS_ONSCREEN_BOOL: 'Validation error. `onScreen` property of `dismiss` option must be a Boolean',\r\n DISMISS_ICON: 'Validation error. `showIcon` property of `dismiss` option must be a Boolean',\r\n TITLE_STRING: 'Validation error. `title` option must be a String',\r\n TITLE_ELEMENT: 'Validation error. `title` option must be a valid React element/function',\r\n MESSAGE_REQUIRED: 'Validation error. `message` option is required',\r\n MESSAGE_STRING: 'Validation error. `message` option must be a String',\r\n MESSAGE_ELEMENT: 'Validation error. `message` option must be a valid React element/function',\r\n TYPE_REQUIRED: 'Validation error. `type` option is required',\r\n TYPE_STRING: 'Validation error. `type` option must be a String',\r\n TYPE_NOT_EXISTENT: 'Validation error. `type` option not found',\r\n CONTAINER_REQUIRED: 'Validation error. `container` option is required',\r\n CONTAINER_STRING: 'Validation error. `container` option must be a String',\r\n CONTENT_INVALID: 'Validation error. `content` option must be a valid React component/function/element',\r\n WIDTH_NUMBER: 'Validation error. `width` option must be a Number',\r\n INSERT_STRING: 'Validation error. `insert` option must be a String',\r\n TRANSITION_DURATION_NUMBER: 'Validation error. `duration` property of `transition` option must be a Number',\r\n TRANSITION_TIMING_FUNCTION: 'Validation error. `timingFunction` property of `transition` option must be a String',\r\n TRANSITION_DELAY_NUMBER: 'Validation error. `delay` property of `transition` option must be a Number',\r\n TYPE_NOT_FOUND: 'Validation error. Custom type not found',\r\n REMOVAL_FUNC: 'Validation error. `onRemoval` must be a function'\r\n};\r\n","import { NOTIFICATION_BASE_CLASS } from \"src/utils/constants\";\r\nimport { NOTIFICATION_CONTAINER, NOTIFICATION_INSERTION, NOTIFICATION_TYPE } from \"src/utils/enums\";\r\nexport const isNullOrUndefined = (object) => object === null || object === undefined;\r\nexport function isBottomContainer(container) {\r\n return (container === NOTIFICATION_CONTAINER.BOTTOM_FULL ||\r\n container === NOTIFICATION_CONTAINER.BOTTOM_LEFT ||\r\n container === NOTIFICATION_CONTAINER.BOTTOM_RIGHT ||\r\n container === NOTIFICATION_CONTAINER.BOTTOM_CENTER);\r\n}\r\nexport function isTopContainer(container) {\r\n return (container === NOTIFICATION_CONTAINER.TOP_FULL ||\r\n container === NOTIFICATION_CONTAINER.TOP_LEFT ||\r\n container === NOTIFICATION_CONTAINER.TOP_RIGHT ||\r\n container === NOTIFICATION_CONTAINER.TOP_CENTER);\r\n}\r\nexport function hasFullySwiped(diffX, width) {\r\n const swipeLength = Math.abs(diffX);\r\n const requiredSwipeLength = (40 / 100) * width;\r\n return swipeLength >= requiredSwipeLength;\r\n}\r\nexport function shouldNotificationHaveSliding(notification, count) {\r\n if (count <= 1) {\r\n return false;\r\n }\r\n return (count > 1 &&\r\n ((notification.insert === NOTIFICATION_INSERTION.TOP && isTopContainer(notification.container)) ||\r\n (notification.insert === NOTIFICATION_INSERTION.BOTTOM && isBottomContainer(notification.container)) ||\r\n notification.container === NOTIFICATION_CONTAINER.CENTER));\r\n}\r\nexport function htmlClassesForExistingType(type) {\r\n switch (type) {\r\n case NOTIFICATION_TYPE.DEFAULT:\r\n return [NOTIFICATION_BASE_CLASS, 'rnc__notification-item--default'];\r\n case NOTIFICATION_TYPE.SUCCESS:\r\n return [NOTIFICATION_BASE_CLASS, 'rnc__notification-item--success'];\r\n case NOTIFICATION_TYPE.DANGER:\r\n return [NOTIFICATION_BASE_CLASS, 'rnc__notification-item--danger'];\r\n case NOTIFICATION_TYPE.WARNING:\r\n return [NOTIFICATION_BASE_CLASS, 'rnc__notification-item--warning'];\r\n case NOTIFICATION_TYPE.INFO:\r\n return [NOTIFICATION_BASE_CLASS, 'rnc__notification-item--info'];\r\n default:\r\n return [NOTIFICATION_BASE_CLASS];\r\n }\r\n}\r\nexport function getHtmlClassesForType(notification) {\r\n const { type, content, userDefinedTypes } = notification;\r\n const base = [NOTIFICATION_BASE_CLASS];\r\n if (content) {\r\n return base;\r\n }\r\n if (isNullOrUndefined(userDefinedTypes)) {\r\n return htmlClassesForExistingType(type);\r\n }\r\n const foundType = userDefinedTypes.find((q) => q.name === type);\r\n return base.concat(foundType.htmlClasses);\r\n}\r\nexport function getNotificationsForMobileView(notifications) {\r\n const top = [];\r\n const bottom = [];\r\n notifications.forEach((notification) => {\r\n const { container } = notification;\r\n const { CENTER } = NOTIFICATION_CONTAINER;\r\n if (isTopContainer(container) || container === CENTER) {\r\n top.push(notification);\r\n }\r\n else if (isBottomContainer(container)) {\r\n bottom.push(notification);\r\n }\r\n });\r\n return { top, bottom };\r\n}\r\nexport function getNotificationsForEachContainer(notifications) {\r\n const topLeft = [];\r\n const topRight = [];\r\n const topCenter = [];\r\n const bottomLeft = [];\r\n const bottomRight = [];\r\n const bottomCenter = [];\r\n const center = [];\r\n const topFull = [];\r\n const bottomFull = [];\r\n notifications.forEach((notification) => {\r\n const { container } = notification;\r\n if (container === NOTIFICATION_CONTAINER.TOP_FULL) {\r\n topFull.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.BOTTOM_FULL) {\r\n bottomFull.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.TOP_LEFT) {\r\n topLeft.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.TOP_RIGHT) {\r\n topRight.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.TOP_CENTER) {\r\n topCenter.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.BOTTOM_LEFT) {\r\n bottomLeft.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.BOTTOM_RIGHT) {\r\n bottomRight.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.BOTTOM_CENTER) {\r\n bottomCenter.push(notification);\r\n }\r\n else if (container === NOTIFICATION_CONTAINER.CENTER) {\r\n center.push(notification);\r\n }\r\n });\r\n return {\r\n topFull,\r\n bottomFull,\r\n topLeft,\r\n topRight,\r\n topCenter,\r\n bottomLeft,\r\n bottomRight,\r\n bottomCenter,\r\n center\r\n };\r\n}\r\nexport function getTransition({ duration, timingFunction, delay }, property) {\r\n return `${duration}ms ${property} ${timingFunction} ${delay}ms`;\r\n}\r\nexport function getUid(a) {\r\n return a ? (0 | (Math.random() * 16)).toString(16) : ('' + 1e11 + 1e11).replace(/1|0/g, getUid);\r\n}\r\nfunction defaultTransition(transition, { duration, timingFunction, delay }) {\r\n const transitionOptions = transition || {};\r\n if (isNullOrUndefined(transitionOptions.duration)) {\r\n transitionOptions.duration = duration;\r\n }\r\n if (isNullOrUndefined(transitionOptions.timingFunction)) {\r\n transitionOptions.timingFunction = timingFunction;\r\n }\r\n if (isNullOrUndefined(transitionOptions.delay)) {\r\n transitionOptions.delay = delay;\r\n }\r\n return transitionOptions;\r\n}\r\nfunction defaultDismiss(dismiss) {\r\n const option = dismiss;\r\n const defaults = {\r\n duration: 0,\r\n click: true,\r\n touch: true,\r\n onScreen: false,\r\n pauseOnHover: false,\r\n waitForAnimation: false,\r\n showIcon: false\r\n };\r\n if (!option) {\r\n return defaults;\r\n }\r\n Object.keys(defaults).forEach((prop) => {\r\n if (isNullOrUndefined(option[prop])) {\r\n option[prop] = defaults[prop];\r\n }\r\n });\r\n return option;\r\n}\r\nfunction defaultUserDefinedTypes(notification, definedTypes) {\r\n const { content, type } = notification;\r\n if (content) {\r\n return undefined;\r\n }\r\n if (type === NOTIFICATION_TYPE.SUCCESS ||\r\n type === NOTIFICATION_TYPE.DANGER ||\r\n type === NOTIFICATION_TYPE.INFO ||\r\n type === NOTIFICATION_TYPE.DEFAULT ||\r\n type === NOTIFICATION_TYPE.WARNING ||\r\n !definedTypes) {\r\n return undefined;\r\n }\r\n return definedTypes;\r\n}\r\nexport function parseNotification(options, userDefinedTypes, defaultNotificationWidth) {\r\n const notification = options;\r\n const { id, type, insert, content, container, animationIn, animationOut, slidingEnter, slidingExit, touchRevert, touchSlidingExit, dismiss, width, onRemoval } = notification;\r\n notification.id = id || getUid();\r\n notification.type = content ? null : type.toLowerCase();\r\n if (userDefinedTypes && !content) {\r\n notification.userDefinedTypes = defaultUserDefinedTypes(notification, userDefinedTypes);\r\n }\r\n notification.width = isNullOrUndefined(width) ? defaultNotificationWidth : width;\r\n notification.container = container.toLowerCase();\r\n notification.insert = (insert || 'top').toLowerCase();\r\n notification.dismiss = defaultDismiss(dismiss);\r\n notification.animationIn = animationIn || [];\r\n notification.animationOut = animationOut || [];\r\n // eslint-disable-next-line\r\n notification.onRemoval = onRemoval || (() => { });\r\n const t = (duration, timingFunction, delay) => ({\r\n duration,\r\n timingFunction,\r\n delay\r\n });\r\n notification.slidingEnter = defaultTransition(slidingEnter, t(600, 'linear', 0));\r\n notification.slidingExit = defaultTransition(slidingExit, t(600, 'linear', 0));\r\n notification.touchRevert = defaultTransition(touchRevert, t(600, 'linear', 0));\r\n const touchExit = touchSlidingExit || {};\r\n const swipe = touchExit.swipe || {};\r\n const fade = touchExit.fade || {};\r\n notification.touchSlidingExit = touchExit;\r\n notification.touchSlidingExit.swipe = defaultTransition(swipe, t(600, 'linear', 0));\r\n notification.touchSlidingExit.fade = defaultTransition(fade, t(300, 'linear', 0));\r\n return notification;\r\n}\r\n","export default class Timer {\r\n constructor(callback, delay) {\r\n this.callback = callback;\r\n this.remaining = delay;\r\n this.resume();\r\n }\r\n pause() {\r\n clearTimeout(this.timerId);\r\n this.remaining -= Date.now() - this.start;\r\n }\r\n resume() {\r\n this.start = Date.now();\r\n clearTimeout(this.timerId);\r\n this.timerId = setTimeout(this.callback, this.remaining);\r\n }\r\n clear() {\r\n clearTimeout(this.timerId);\r\n }\r\n}\r\n","import React from 'react';\r\nimport { getHtmlClassesForType, getTransition, hasFullySwiped, shouldNotificationHaveSliding } from 'src/utils/helpers';\r\nimport Timer from 'src/utils/timer';\r\nimport { NOTIFICATION_REMOVAL_SOURCE } from 'src/utils/enums';\r\nexport { Notification };\r\nclass Notification extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onClick = () => {\r\n const { notification: { dismiss } } = this.props;\r\n if (dismiss.click || dismiss.showIcon) {\r\n this.removeNotification(NOTIFICATION_REMOVAL_SOURCE.CLICK);\r\n }\r\n };\r\n this.onTouchStart = (event) => {\r\n const { pageX } = event.touches[0];\r\n this.setState(({ parentStyle }) => ({\r\n startX: pageX,\r\n currentX: pageX,\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { position: 'relative' })\r\n }));\r\n };\r\n this.onTouchMove = (event) => {\r\n const { pageX } = event.touches[0];\r\n const { startX } = this.state;\r\n const { toggleRemoval, notification: { id, onRemoval, slidingExit, touchSlidingExit: { swipe, fade } } } = this.props;\r\n const distance = pageX - startX;\r\n const { offsetWidth: width } = this.rootElementRef.current;\r\n const swipeTo = window.innerWidth + width;\r\n const left = `${pageX - startX >= 0 ? swipeTo : -swipeTo}px`;\r\n if (hasFullySwiped(distance, width)) {\r\n const t1 = getTransition(swipe, 'left');\r\n const t2 = getTransition(fade, 'opacity');\r\n const onTransitionEnd = () => {\r\n toggleRemoval(id, () => onRemoval(id, NOTIFICATION_REMOVAL_SOURCE.TOUCH));\r\n };\r\n return this.setState(({ parentStyle }) => ({\r\n touchEnabled: false,\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { left, opacity: 0, transition: `${t1}, ${t2}` }),\r\n onTransitionEnd: () => {\r\n this.setState(({ parentStyle }) => ({\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { height: `0px`, overflow: 'hidden', transition: getTransition(slidingExit, 'height') }),\r\n onTransitionEnd\r\n }));\r\n }\r\n }));\r\n }\r\n return this.setState(({ parentStyle }) => ({\r\n currentX: pageX,\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { left: `${0 + distance}px` })\r\n }));\r\n };\r\n this.onTouchEnd = () => {\r\n const { notification: { touchRevert } } = this.props;\r\n this.setState(({ parentStyle }) => ({\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { left: 0, transition: getTransition(touchRevert, 'left') })\r\n }));\r\n };\r\n this.onMouseEnter = () => {\r\n if (this.timer) {\r\n this.timer.pause();\r\n }\r\n else {\r\n this.setState({ animationPlayState: 'paused' });\r\n }\r\n };\r\n this.onMouseLeave = () => {\r\n if (this.timer) {\r\n this.timer.resume();\r\n }\r\n else {\r\n this.setState({ animationPlayState: 'running' });\r\n }\r\n };\r\n this.rootElementRef = React.createRef();\r\n const { defaultNotificationWidth, notification, isMobile } = props;\r\n const { width } = notification;\r\n this.state = {\r\n parentStyle: {\r\n height: `0px`,\r\n overflow: 'hidden',\r\n width: `${width ? width : defaultNotificationWidth}px`\r\n },\r\n htmlClassList: getHtmlClassesForType(notification),\r\n animationPlayState: 'running',\r\n touchEnabled: true\r\n };\r\n if (isMobile) {\r\n this.state.parentStyle.width = '100%';\r\n }\r\n }\r\n componentWillUnmount() {\r\n if (this.timer) {\r\n this.timer.clear();\r\n }\r\n }\r\n componentDidMount() {\r\n const { notification, notificationsCount } = this.props;\r\n const { dismiss: { duration, onScreen } } = notification;\r\n const willSlide = shouldNotificationHaveSliding(notification, notificationsCount);\r\n const { scrollHeight } = this.rootElementRef.current;\r\n const onTransitionEnd = () => {\r\n if (!duration || onScreen || this.timer)\r\n return;\r\n const callback = () => this.removeNotification(NOTIFICATION_REMOVAL_SOURCE.TIMEOUT);\r\n this.timer = new Timer(callback, duration);\r\n };\r\n const callback = () => {\r\n requestAnimationFrame(() => {\r\n this.setState((prevState) => ({\r\n htmlClassList: [...notification.animationIn, ...prevState.htmlClassList]\r\n }));\r\n });\r\n };\r\n this.setState(({ parentStyle: { width } }) => ({\r\n parentStyle: {\r\n width,\r\n height: `${scrollHeight}px`,\r\n transition: willSlide ? getTransition(notification.slidingEnter, 'height') : '10ms height'\r\n },\r\n onTransitionEnd\r\n }), callback);\r\n }\r\n componentDidUpdate(prevProps) {\r\n if (this.props.hasBeenRemoved && !prevProps.hasBeenRemoved) {\r\n this.removeNotification(NOTIFICATION_REMOVAL_SOURCE.MANUAL);\r\n }\r\n if (prevProps !== this.props && !this.props.hasBeenRemoved) {\r\n const { container } = this.props.notification;\r\n const { scrollHeight } = this.rootElementRef.current.children[0];\r\n this.setState(({ parentStyle }) => ({\r\n parentStyle: Object.assign(Object.assign({}, parentStyle), { height: `${scrollHeight + (container.endsWith('full') ? 0 : 15)}px` })\r\n }));\r\n }\r\n }\r\n removeNotification(removalFlag) {\r\n const { notification, toggleRemoval } = this.props;\r\n const { id, onRemoval, dismiss: { waitForAnimation } } = notification;\r\n const htmlClassList = [...notification.animationOut, ...getHtmlClassesForType(notification)];\r\n const onTransitionEnd = () => toggleRemoval(id, () => onRemoval(id, removalFlag));\r\n const parentStyle = {\r\n height: `0px`,\r\n overflow: 'hidden',\r\n transition: getTransition(notification.slidingExit, 'height')\r\n };\r\n if (waitForAnimation) {\r\n return this.setState(({ parentStyle: { width } }) => ({\r\n htmlClassList,\r\n onAnimationEnd: () => {\r\n this.setState({\r\n parentStyle: Object.assign({ width }, parentStyle),\r\n onTransitionEnd\r\n });\r\n }\r\n }));\r\n }\r\n return this.setState(({ parentStyle: { width } }) => ({\r\n parentStyle: Object.assign({ width }, parentStyle),\r\n onTransitionEnd,\r\n htmlClassList\r\n }));\r\n }\r\n renderTimer() {\r\n const { notification: { dismiss } } = this.props;\r\n const { duration, onScreen } = dismiss;\r\n const { animationPlayState } = this.state;\r\n if (!duration || !onScreen) {\r\n return;\r\n }\r\n const style = {\r\n animationName: 'timer',\r\n animationDuration: `${duration}ms`,\r\n animationTimingFunction: 'linear',\r\n animationFillMode: 'forwards',\r\n animationDelay: `0`,\r\n animationPlayState\r\n };\r\n const onAnimationEnd = () => this.removeNotification(NOTIFICATION_REMOVAL_SOURCE.TIMEOUT);\r\n return (React.createElement(\"div\", { className: \"rnc__notification-timer\" },\r\n React.createElement(\"div\", { className: \"rnc__notification-timer-filler\", onAnimationEnd: onAnimationEnd, style: style })));\r\n }\r\n renderCustomContent() {\r\n const { htmlClassList } = this.state;\r\n const { notification: { id, content: CustomContent, dismiss: { duration, pauseOnHover } } } = this.props;\r\n const hasMouseEvents = duration > 0 && pauseOnHover;\r\n return (React.createElement(\"div\", { className: `${[...htmlClassList].join(' ')}`, onMouseEnter: hasMouseEvents ? this.onMouseEnter : null, onMouseLeave: hasMouseEvents ? this.onMouseLeave : null }, React.isValidElement(CustomContent) ? CustomContent : React.createElement(CustomContent, Object.assign({}, { id, notificationConfig: Object.assign({}, this.props.notification) }))));\r\n }\r\n renderNotification() {\r\n const { notification: { title, message, dismiss: { showIcon, duration, pauseOnHover } } } = this.props;\r\n const { htmlClassList } = this.state;\r\n const hasMouseEvents = duration > 0 && pauseOnHover;\r\n return (React.createElement(\"div\", { className: `${[...htmlClassList].join(' ')}`, onMouseEnter: hasMouseEvents ? this.onMouseEnter : null, onMouseLeave: hasMouseEvents ? this.onMouseLeave : null },\r\n React.createElement(\"div\", { className: \"rnc__notification-content\" },\r\n showIcon && React.createElement(\"div\", { className: \"rnc__notification-close-mark\", onClick: this.onClick }),\r\n title && React.createElement(\"div\", { className: \"rnc__notification-title\" }, title),\r\n React.createElement(\"div\", { className: \"rnc__notification-message\" }, message),\r\n this.renderTimer())));\r\n }\r\n render() {\r\n const { notification: { content, dismiss: { click } } } = this.props;\r\n const { parentStyle, onAnimationEnd, onTransitionEnd, touchEnabled } = this.state;\r\n return (React.createElement(\"div\", { ref: this.rootElementRef, onClick: click ? this.onClick : null, style: parentStyle, className: \"rnc__notification\", onAnimationEnd: onAnimationEnd, onTransitionEnd: onTransitionEnd, onTouchStart: touchEnabled ? this.onTouchStart : null, onTouchMove: touchEnabled ? this.onTouchMove : null, onTouchEnd: touchEnabled ? this.onTouchEnd : null }, content ? this.renderCustomContent() : this.renderNotification()));\r\n }\r\n}\r\n","import { parseNotification } from 'src/utils/helpers';\r\nimport { validateTransition, validators } from 'src/utils/validators';\r\nclass Store {\r\n constructor() {\r\n this.incrementCounter = () => (this.counter += 1);\r\n this.getCounter = () => this.counter;\r\n this.counter = 0;\r\n this.add = null;\r\n }\r\n addNotification(notification) {\r\n if (process.env.NODE_ENV === 'development') {\r\n const transitions = ['slidingEnter', 'slidingExit', 'touchRevert', 'touchSlidingExit'];\r\n transitions.forEach((transition) => validateTransition(notification, transition));\r\n validators.forEach((validator) => validator(notification, this.types));\r\n }\r\n this.incrementCounter();\r\n const parsedNotification = parseNotification(notification, this.types, this.defaultNotificationWidth);\r\n return this.add(parsedNotification);\r\n }\r\n register(parameters) {\r\n const { addNotification, removeNotification, removeAllNotifications, types, defaultNotificationWidth } = parameters;\r\n this.add = addNotification;\r\n this.removeNotification = removeNotification;\r\n this.removeAllNotifications = removeAllNotifications;\r\n this.defaultNotificationWidth = defaultNotificationWidth;\r\n this.types = types;\r\n }\r\n}\r\nexport default new Store();\r\n","import React from 'react';\r\nimport { Notification as ReactNotification } from 'src/components/Notification';\r\nimport store from 'src/store';\r\nimport { DEFAULT_CONTAINER_VALUES as DCV } from 'src/utils/constants';\r\nimport { getNotificationsForEachContainer, getNotificationsForMobileView, isNullOrUndefined } from 'src/utils/helpers';\r\nimport \"src/scss/notification.scss\";\r\nexport { Container };\r\nclass Container extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleResize = () => {\r\n this.setState({ windowWidth: window.innerWidth });\r\n };\r\n this.add = (notification) => {\r\n this.setState(({ notifications }) => {\r\n const nextNotifications = [...notifications];\r\n const i = nextNotifications.findIndex(({ id }) => id === notification.id);\r\n if (i > -1) {\r\n nextNotifications[i] = notification;\r\n return {\r\n notifications: nextNotifications\r\n };\r\n }\r\n return {\r\n notifications: notification.insert === 'top'\r\n ? [notification, ...nextNotifications]\r\n : [...nextNotifications, notification]\r\n };\r\n });\r\n return notification.id;\r\n };\r\n this.remove = (id) => {\r\n this.setState(({ notifications }) => ({\r\n notifications: notifications.map((notification) => {\r\n if (notification.id === id) {\r\n notification.hasBeenRemoved = true;\r\n }\r\n return notification;\r\n })\r\n }));\r\n };\r\n this.removeAllNotifications = () => {\r\n this.setState({\r\n notifications: this.state.notifications.map((notification) => (Object.assign(Object.assign({}, notification), { hasBeenRemoved: true })))\r\n });\r\n };\r\n this.toggleRemoval = (id, callback) => {\r\n this.setState(({ notifications }) => ({\r\n notifications: notifications.filter(({ id: nId }) => nId !== id)\r\n }), callback);\r\n };\r\n this.state = {\r\n isMobile: isNullOrUndefined(props.isMobile) ? DCV.isMobile : props.isMobile,\r\n breakpoint: isNullOrUndefined(props.breakpoint) ? DCV.breakpoint : props.breakpoint,\r\n notifications: [],\r\n windowWidth: undefined\r\n };\r\n }\r\n componentDidMount() {\r\n const { types, defaultNotificationWidth } = this.props;\r\n store.register({\r\n addNotification: this.add,\r\n removeNotification: this.remove,\r\n removeAllNotifications: this.removeAllNotifications,\r\n defaultNotificationWidth: defaultNotificationWidth || DCV.defaultNotificationWidth,\r\n types\r\n });\r\n this.setState({ windowWidth: window.innerWidth });\r\n window.addEventListener('resize', this.handleResize);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize);\r\n }\r\n renderNotifications(notifications, isMobile) {\r\n return notifications.map((notification) => (React.createElement(ReactNotification, { id: notification.id, key: notification.id, isMobile: isMobile, defaultNotificationWidth: this.props.defaultNotificationWidth, notification: notification, toggleRemoval: this.toggleRemoval, notificationsCount: notifications.length, hasBeenRemoved: notification.hasBeenRemoved })));\r\n }\r\n renderMobileNotifications(props) {\r\n const { className, id } = props;\r\n const { notifications } = this.state;\r\n const mobileNotifications = getNotificationsForMobileView(notifications);\r\n const top = this.renderNotifications(mobileNotifications.top, true);\r\n const bottom = this.renderNotifications(mobileNotifications.bottom, true);\r\n return (React.createElement(\"div\", { id: id, key: \"mobile\", className: `rnc__base ${className || ''}` },\r\n React.createElement(\"div\", { className: \"rnc__notification-container--mobile-top\" }, top),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--mobile-bottom\" }, bottom)));\r\n }\r\n renderScreenNotifications(props) {\r\n const { className, id } = props;\r\n const { notifications } = this.state;\r\n const items = getNotificationsForEachContainer(notifications);\r\n const topFull = this.renderNotifications(items.topFull, false);\r\n const bottomFull = this.renderNotifications(items.bottomFull, false);\r\n const topLeft = this.renderNotifications(items.topLeft, false);\r\n const topRight = this.renderNotifications(items.topRight, false);\r\n const topCenter = this.renderNotifications(items.topCenter, false);\r\n const bottomLeft = this.renderNotifications(items.bottomLeft, false);\r\n const bottomRight = this.renderNotifications(items.bottomRight, false);\r\n const bottomCenter = this.renderNotifications(items.bottomCenter, false);\r\n const center = this.renderNotifications(items.center, false);\r\n return (React.createElement(\"div\", { id: id, key: \"screen\", className: `rnc__base ${className || ''}` },\r\n React.createElement(\"div\", { className: \"rnc__notification-container--top-full\" }, topFull),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--bottom-full\" }, bottomFull),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--top-left\" }, topLeft),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--top-right\" }, topRight),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--bottom-left\" }, bottomLeft),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--bottom-right\" }, bottomRight),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--top-center\" }, topCenter),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--center\" },\r\n React.createElement(\"div\", { className: \"rnc__util--flex-center\" }, center)),\r\n React.createElement(\"div\", { className: \"rnc__notification-container--bottom-center\" }, bottomCenter)));\r\n }\r\n render() {\r\n const { isMobile } = this.props;\r\n const { windowWidth, breakpoint } = this.state;\r\n if (isMobile && windowWidth <= breakpoint) {\r\n return this.renderMobileNotifications(this.props);\r\n }\r\n return this.renderScreenNotifications(this.props);\r\n }\r\n}\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _airbnbPropTypes = require('airbnb-prop-types');\n\nvar _consolidatedEvents = require('consolidated-events');\n\nvar _object = require('object.values');\n\nvar _object2 = _interopRequireDefault(_object);\n\nvar _document = require('document.contains');\n\nvar _document2 = _interopRequireDefault(_document);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DISPLAY = {\n BLOCK: 'block',\n FLEX: 'flex',\n INLINE: 'inline',\n INLINE_BLOCK: 'inline-block',\n CONTENTS: 'contents'\n};\n\nvar propTypes = (0, _airbnbPropTypes.forbidExtraProps)({\n children: _propTypes2['default'].node.isRequired,\n onOutsideClick: _propTypes2['default'].func.isRequired,\n disabled: _propTypes2['default'].bool,\n useCapture: _propTypes2['default'].bool,\n display: _propTypes2['default'].oneOf((0, _object2['default'])(DISPLAY))\n});\n\nvar defaultProps = {\n disabled: false,\n\n // `useCapture` is set to true by default so that a `stopPropagation` in the\n // children will not prevent all outside click handlers from firing - maja\n useCapture: true,\n display: DISPLAY.BLOCK\n};\n\nvar OutsideClickHandler = function (_React$Component) {\n _inherits(OutsideClickHandler, _React$Component);\n\n function OutsideClickHandler() {\n var _ref;\n\n _classCallCheck(this, OutsideClickHandler);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = OutsideClickHandler.__proto__ || Object.getPrototypeOf(OutsideClickHandler)).call.apply(_ref, [this].concat(args)));\n\n _this.onMouseDown = _this.onMouseDown.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n _this.setChildNodeRef = _this.setChildNodeRef.bind(_this);\n return _this;\n }\n\n _createClass(OutsideClickHandler, [{\n key: 'componentDidMount',\n value: function () {\n function componentDidMount() {\n var _props = this.props,\n disabled = _props.disabled,\n useCapture = _props.useCapture;\n\n\n if (!disabled) this.addMouseDownEventListener(useCapture);\n }\n\n return componentDidMount;\n }()\n }, {\n key: 'componentDidUpdate',\n value: function () {\n function componentDidUpdate(_ref2) {\n var prevDisabled = _ref2.disabled;\n var _props2 = this.props,\n disabled = _props2.disabled,\n useCapture = _props2.useCapture;\n\n if (prevDisabled !== disabled) {\n if (disabled) {\n this.removeEventListeners();\n } else {\n this.addMouseDownEventListener(useCapture);\n }\n }\n }\n\n return componentDidUpdate;\n }()\n }, {\n key: 'componentWillUnmount',\n value: function () {\n function componentWillUnmount() {\n this.removeEventListeners();\n }\n\n return componentWillUnmount;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseDown',\n value: function () {\n function onMouseDown(e) {\n var useCapture = this.props.useCapture;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (!isDescendantOfRoot) {\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n this.removeMouseUp = (0, _consolidatedEvents.addEventListener)(document, 'mouseup', this.onMouseUp, { capture: useCapture });\n }\n }\n\n return onMouseDown;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseUp',\n value: function () {\n function onMouseUp(e) {\n var onOutsideClick = this.props.onOutsideClick;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n\n if (!isDescendantOfRoot) {\n onOutsideClick(e);\n }\n }\n\n return onMouseUp;\n }()\n }, {\n key: 'setChildNodeRef',\n value: function () {\n function setChildNodeRef(ref) {\n this.childNode = ref;\n }\n\n return setChildNodeRef;\n }()\n }, {\n key: 'addMouseDownEventListener',\n value: function () {\n function addMouseDownEventListener(useCapture) {\n this.removeMouseDown = (0, _consolidatedEvents.addEventListener)(document, 'mousedown', this.onMouseDown, { capture: useCapture });\n }\n\n return addMouseDownEventListener;\n }()\n }, {\n key: 'removeEventListeners',\n value: function () {\n function removeEventListeners() {\n if (this.removeMouseDown) this.removeMouseDown();\n if (this.removeMouseUp) this.removeMouseUp();\n }\n\n return removeEventListeners;\n }()\n }, {\n key: 'render',\n value: function () {\n function render() {\n var _props3 = this.props,\n children = _props3.children,\n display = _props3.display;\n\n\n return _react2['default'].createElement(\n 'div',\n {\n ref: this.setChildNodeRef,\n style: display !== DISPLAY.BLOCK && (0, _object2['default'])(DISPLAY).includes(display) ? { display: display } : undefined\n },\n children\n );\n }\n\n return render;\n }()\n }]);\n\n return OutsideClickHandler;\n}(_react2['default'].Component);\n\nexports['default'] = OutsideClickHandler;\n\n\nOutsideClickHandler.propTypes = propTypes;\nOutsideClickHandler.defaultProps = defaultProps;","// eslint-disable-next-line import/no-unresolved\nmodule.exports = require('./build/OutsideClickHandler');\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar Player_exports = {};\n__export(Player_exports, {\n default: () => Player\n});\nmodule.exports = __toCommonJS(Player_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_react_fast_compare = __toESM(require(\"react-fast-compare\"));\nvar import_props = require(\"./props\");\nvar import_utils = require(\"./utils\");\nconst SEEK_ON_PLAY_EXPIRY = 5e3;\nclass Player extends import_react.Component {\n constructor() {\n super(...arguments);\n __publicField(this, \"mounted\", false);\n __publicField(this, \"isReady\", false);\n __publicField(this, \"isPlaying\", false);\n // Track playing state internally to prevent bugs\n __publicField(this, \"isLoading\", true);\n // Use isLoading to prevent onPause when switching URL\n __publicField(this, \"loadOnReady\", null);\n __publicField(this, \"startOnPlay\", true);\n __publicField(this, \"seekOnPlay\", null);\n __publicField(this, \"onDurationCalled\", false);\n __publicField(this, \"handlePlayerMount\", (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.url);\n this.progress();\n });\n __publicField(this, \"getInternalPlayer\", (key) => {\n if (!this.player)\n return null;\n return this.player[key];\n });\n __publicField(this, \"progress\", () => {\n if (this.props.url && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval);\n });\n __publicField(this, \"handleReady\", () => {\n if (!this.mounted)\n return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n });\n __publicField(this, \"handlePlay\", () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart();\n this.startOnPlay = false;\n }\n onPlay();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n });\n __publicField(this, \"handlePause\", (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause(e);\n }\n });\n __publicField(this, \"handleEnded\", () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded();\n }\n });\n __publicField(this, \"handleError\", (...args) => {\n this.isLoading = false;\n this.props.onError(...args);\n });\n __publicField(this, \"handleDurationCheck\", () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = setTimeout(this.handleDurationCheck, 100);\n }\n });\n __publicField(this, \"handleLoaded\", () => {\n this.isLoading = false;\n });\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n if (this.isReady && this.props.stopOnUnmount) {\n this.player.stop();\n if (this.player.disablePIP) {\n this.player.disablePIP();\n }\n }\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) {\n return;\n }\n const { url, playing, volume, muted, playbackRate, pip, loop, activePlayer, disableDeferredLoading } = this.props;\n if (!(0, import_react_fast_compare.default)(prevProps.url, url)) {\n if (this.isLoading && !activePlayer.forceLoad && !disableDeferredLoading && !(0, import_utils.isMediaStream)(url)) {\n console.warn(`ReactPlayer: the attempt to load ${url} is being deferred until the player has loaded`);\n this.loadOnReady = url;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(url, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (!prevProps.pip && pip && this.player.enablePIP) {\n this.player.enablePIP();\n }\n if (prevProps.pip && !pip && this.player.disablePIP) {\n this.player.disablePIP();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady)\n return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady)\n return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady)\n return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\"ReactPlayer: could not seek using fraction \\u2013\\xA0duration not yet available\");\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return /* @__PURE__ */ import_react.default.createElement(\n Player2,\n {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n }\n );\n }\n}\n__publicField(Player, \"displayName\", \"Player\");\n__publicField(Player, \"propTypes\", import_props.propTypes);\n__publicField(Player, \"defaultProps\", import_props.defaultProps);\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar ReactPlayer_exports = {};\n__export(ReactPlayer_exports, {\n createReactPlayer: () => createReactPlayer\n});\nmodule.exports = __toCommonJS(ReactPlayer_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_deepmerge = __toESM(require(\"deepmerge\"));\nvar import_memoize_one = __toESM(require(\"memoize-one\"));\nvar import_react_fast_compare = __toESM(require(\"react-fast-compare\"));\nvar import_props = require(\"./props\");\nvar import_utils = require(\"./utils\");\nvar import_Player = __toESM(require(\"./Player\"));\nconst Preview = (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerPreview' */\n \"./Preview\"\n));\nconst IS_BROWSER = typeof window !== \"undefined\" && window.document && typeof document !== \"undefined\";\nconst IS_GLOBAL = typeof global !== \"undefined\" && global.window && global.window.document;\nconst SUPPORTED_PROPS = Object.keys(import_props.propTypes);\nconst UniversalSuspense = IS_BROWSER || IS_GLOBAL ? import_react.Suspense : () => null;\nconst customPlayers = [];\nconst createReactPlayer = (players, fallback) => {\n var _a;\n return _a = class extends import_react.Component {\n constructor() {\n super(...arguments);\n __publicField(this, \"state\", {\n showPreview: !!this.props.light\n });\n // Use references, as refs is used by React\n __publicField(this, \"references\", {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n });\n __publicField(this, \"handleClickPreview\", (e) => {\n this.setState({ showPreview: false });\n this.props.onClickPreview(e);\n });\n __publicField(this, \"showPreview\", () => {\n this.setState({ showPreview: true });\n });\n __publicField(this, \"getDuration\", () => {\n if (!this.player)\n return null;\n return this.player.getDuration();\n });\n __publicField(this, \"getCurrentTime\", () => {\n if (!this.player)\n return null;\n return this.player.getCurrentTime();\n });\n __publicField(this, \"getSecondsLoaded\", () => {\n if (!this.player)\n return null;\n return this.player.getSecondsLoaded();\n });\n __publicField(this, \"getInternalPlayer\", (key = \"player\") => {\n if (!this.player)\n return null;\n return this.player.getInternalPlayer(key);\n });\n __publicField(this, \"seekTo\", (fraction, type, keepPlaying) => {\n if (!this.player)\n return null;\n this.player.seekTo(fraction, type, keepPlaying);\n });\n __publicField(this, \"handleReady\", () => {\n this.props.onReady(this);\n });\n __publicField(this, \"getActivePlayer\", (0, import_memoize_one.default)((url) => {\n for (const player of [...customPlayers, ...players]) {\n if (player.canPlay(url)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n }));\n __publicField(this, \"getConfig\", (0, import_memoize_one.default)((url, key) => {\n const { config } = this.props;\n return import_deepmerge.default.all([\n import_props.defaultProps.config,\n import_props.defaultProps.config[key] || {},\n config,\n config[key] || {}\n ]);\n }));\n __publicField(this, \"getAttributes\", (0, import_memoize_one.default)((url) => {\n return (0, import_utils.omit)(this.props, SUPPORTED_PROPS);\n }));\n __publicField(this, \"renderActivePlayer\", (url) => {\n if (!url)\n return null;\n const player = this.getActivePlayer(url);\n if (!player)\n return null;\n const config = this.getConfig(url, player.key);\n return /* @__PURE__ */ import_react.default.createElement(\n import_Player.default,\n {\n ...this.props,\n key: player.key,\n ref: this.references.player,\n config,\n activePlayer: player.lazyPlayer || player,\n onReady: this.handleReady\n }\n );\n });\n }\n shouldComponentUpdate(nextProps, nextState) {\n return !(0, import_react_fast_compare.default)(this.props, nextProps) || !(0, import_react_fast_compare.default)(this.state, nextState);\n }\n componentDidUpdate(prevProps) {\n const { light } = this.props;\n if (!prevProps.light && light) {\n this.setState({ showPreview: true });\n }\n if (prevProps.light && !light) {\n this.setState({ showPreview: false });\n }\n }\n renderPreview(url) {\n if (!url)\n return null;\n const { light, playIcon, previewTabIndex, oEmbedUrl, previewAriaLabel } = this.props;\n return /* @__PURE__ */ import_react.default.createElement(\n Preview,\n {\n url,\n light,\n playIcon,\n previewTabIndex,\n previewAriaLabel,\n oEmbedUrl,\n onClick: this.handleClickPreview\n }\n );\n }\n render() {\n const { url, style, width, height, fallback: fallback2, wrapper: Wrapper } = this.props;\n const { showPreview } = this.state;\n const attributes = this.getAttributes(url);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return /* @__PURE__ */ import_react.default.createElement(Wrapper, { ref: wrapperRef, style: { ...style, width, height }, ...attributes }, /* @__PURE__ */ import_react.default.createElement(UniversalSuspense, { fallback: fallback2 }, showPreview ? this.renderPreview(url) : this.renderActivePlayer(url)));\n }\n }, __publicField(_a, \"displayName\", \"ReactPlayer\"), __publicField(_a, \"propTypes\", import_props.propTypes), __publicField(_a, \"defaultProps\", import_props.defaultProps), __publicField(_a, \"addCustomPlayer\", (player) => {\n customPlayers.push(player);\n }), __publicField(_a, \"removeCustomPlayers\", () => {\n customPlayers.length = 0;\n }), __publicField(_a, \"canPlay\", (url) => {\n for (const Player2 of [...customPlayers, ...players]) {\n if (Player2.canPlay(url)) {\n return true;\n }\n }\n return false;\n }), __publicField(_a, \"canEnablePIP\", (url) => {\n for (const Player2 of [...customPlayers, ...players]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(url)) {\n return true;\n }\n }\n return false;\n }), _a;\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar src_exports = {};\n__export(src_exports, {\n default: () => src_default\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_players = __toESM(require(\"./players\"));\nvar import_ReactPlayer = require(\"./ReactPlayer\");\nconst fallback = import_players.default[import_players.default.length - 1];\nvar src_default = (0, import_ReactPlayer.createReactPlayer)(import_players.default, fallback);\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar patterns_exports = {};\n__export(patterns_exports, {\n AUDIO_EXTENSIONS: () => AUDIO_EXTENSIONS,\n DASH_EXTENSIONS: () => DASH_EXTENSIONS,\n FLV_EXTENSIONS: () => FLV_EXTENSIONS,\n HLS_EXTENSIONS: () => HLS_EXTENSIONS,\n MATCH_URL_DAILYMOTION: () => MATCH_URL_DAILYMOTION,\n MATCH_URL_FACEBOOK: () => MATCH_URL_FACEBOOK,\n MATCH_URL_FACEBOOK_WATCH: () => MATCH_URL_FACEBOOK_WATCH,\n MATCH_URL_KALTURA: () => MATCH_URL_KALTURA,\n MATCH_URL_MIXCLOUD: () => MATCH_URL_MIXCLOUD,\n MATCH_URL_MUX: () => MATCH_URL_MUX,\n MATCH_URL_SOUNDCLOUD: () => MATCH_URL_SOUNDCLOUD,\n MATCH_URL_STREAMABLE: () => MATCH_URL_STREAMABLE,\n MATCH_URL_TWITCH_CHANNEL: () => MATCH_URL_TWITCH_CHANNEL,\n MATCH_URL_TWITCH_VIDEO: () => MATCH_URL_TWITCH_VIDEO,\n MATCH_URL_VIDYARD: () => MATCH_URL_VIDYARD,\n MATCH_URL_VIMEO: () => MATCH_URL_VIMEO,\n MATCH_URL_WISTIA: () => MATCH_URL_WISTIA,\n MATCH_URL_YOUTUBE: () => MATCH_URL_YOUTUBE,\n VIDEO_EXTENSIONS: () => VIDEO_EXTENSIONS,\n canPlay: () => canPlay\n});\nmodule.exports = __toCommonJS(patterns_exports);\nvar import_utils = require(\"./utils\");\nconst MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie|education)?\\.com\\/(?:embed\\/|v\\/|watch\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//;\nconst MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/;\nconst MATCH_URL_VIMEO = /vimeo\\.com\\/(?!progressive_redirect).+/;\nconst MATCH_URL_MUX = /stream\\.mux\\.com\\/(?!\\w+\\.m3u8)(\\w+)/;\nconst MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/;\nconst MATCH_URL_FACEBOOK_WATCH = /^https?:\\/\\/fb\\.watch\\/.+$/;\nconst MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/;\nconst MATCH_URL_WISTIA = /(?:wistia\\.(?:com|net)|wi\\.st)\\/(?:medias|embed)\\/(?:iframe\\/)?([^?]+)/;\nconst MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nconst MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nconst MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?(?:[\\w.#_-]+)?/;\nconst MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\nconst MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-_]+)/;\nconst MATCH_URL_KALTURA = /^https?:\\/\\/[a-zA-Z]+\\.kaltura.(com|org)\\/p\\/([0-9]+)\\/sp\\/([0-9]+)00\\/embedIframeJs\\/uiconf_id\\/([0-9]+)\\/partner_id\\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/;\nconst AUDIO_EXTENSIONS = /\\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nconst VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\\d+]+)?($|\\?)/i;\nconst HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nconst DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nconst FLV_EXTENSIONS = /\\.(flv)($|\\?)/i;\nconst canPlayFile = (url) => {\n if (url instanceof Array) {\n for (const item of url) {\n if (typeof item === \"string\" && canPlayFile(item)) {\n return true;\n }\n if (canPlayFile(item.src)) {\n return true;\n }\n }\n return false;\n }\n if ((0, import_utils.isMediaStream)(url) || (0, import_utils.isBlobUrl)(url)) {\n return true;\n }\n return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url) || FLV_EXTENSIONS.test(url);\n};\nconst canPlay = {\n youtube: (url) => {\n if (url instanceof Array) {\n return url.every((item) => MATCH_URL_YOUTUBE.test(item));\n }\n return MATCH_URL_YOUTUBE.test(url);\n },\n soundcloud: (url) => MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url),\n vimeo: (url) => MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url),\n mux: (url) => MATCH_URL_MUX.test(url),\n facebook: (url) => MATCH_URL_FACEBOOK.test(url) || MATCH_URL_FACEBOOK_WATCH.test(url),\n streamable: (url) => MATCH_URL_STREAMABLE.test(url),\n wistia: (url) => MATCH_URL_WISTIA.test(url),\n twitch: (url) => MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url),\n dailymotion: (url) => MATCH_URL_DAILYMOTION.test(url),\n mixcloud: (url) => MATCH_URL_MIXCLOUD.test(url),\n vidyard: (url) => MATCH_URL_VIDYARD.test(url),\n kaltura: (url) => MATCH_URL_KALTURA.test(url),\n file: canPlayFile\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar players_exports = {};\n__export(players_exports, {\n default: () => players_default\n});\nmodule.exports = __toCommonJS(players_exports);\nvar import_utils = require(\"../utils\");\nvar import_patterns = require(\"../patterns\");\nvar players_default = [\n {\n key: \"youtube\",\n name: \"YouTube\",\n canPlay: import_patterns.canPlay.youtube,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerYouTube' */\n \"./YouTube\"\n ))\n },\n {\n key: \"soundcloud\",\n name: \"SoundCloud\",\n canPlay: import_patterns.canPlay.soundcloud,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerSoundCloud' */\n \"./SoundCloud\"\n ))\n },\n {\n key: \"vimeo\",\n name: \"Vimeo\",\n canPlay: import_patterns.canPlay.vimeo,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerVimeo' */\n \"./Vimeo\"\n ))\n },\n {\n key: \"mux\",\n name: \"Mux\",\n canPlay: import_patterns.canPlay.mux,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerMux' */\n \"./Mux\"\n ))\n },\n {\n key: \"facebook\",\n name: \"Facebook\",\n canPlay: import_patterns.canPlay.facebook,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerFacebook' */\n \"./Facebook\"\n ))\n },\n {\n key: \"streamable\",\n name: \"Streamable\",\n canPlay: import_patterns.canPlay.streamable,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerStreamable' */\n \"./Streamable\"\n ))\n },\n {\n key: \"wistia\",\n name: \"Wistia\",\n canPlay: import_patterns.canPlay.wistia,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerWistia' */\n \"./Wistia\"\n ))\n },\n {\n key: \"twitch\",\n name: \"Twitch\",\n canPlay: import_patterns.canPlay.twitch,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerTwitch' */\n \"./Twitch\"\n ))\n },\n {\n key: \"dailymotion\",\n name: \"DailyMotion\",\n canPlay: import_patterns.canPlay.dailymotion,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerDailyMotion' */\n \"./DailyMotion\"\n ))\n },\n {\n key: \"mixcloud\",\n name: \"Mixcloud\",\n canPlay: import_patterns.canPlay.mixcloud,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerMixcloud' */\n \"./Mixcloud\"\n ))\n },\n {\n key: \"vidyard\",\n name: \"Vidyard\",\n canPlay: import_patterns.canPlay.vidyard,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerVidyard' */\n \"./Vidyard\"\n ))\n },\n {\n key: \"kaltura\",\n name: \"Kaltura\",\n canPlay: import_patterns.canPlay.kaltura,\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerKaltura' */\n \"./Kaltura\"\n ))\n },\n {\n key: \"file\",\n name: \"FilePlayer\",\n canPlay: import_patterns.canPlay.file,\n canEnablePIP: (url) => {\n return import_patterns.canPlay.file(url) && (document.pictureInPictureEnabled || (0, import_utils.supportsWebKitPresentationMode)()) && !import_patterns.AUDIO_EXTENSIONS.test(url);\n },\n lazyPlayer: (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerFilePlayer' */\n \"./FilePlayer\"\n ))\n }\n];\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar props_exports = {};\n__export(props_exports, {\n defaultProps: () => defaultProps,\n propTypes: () => propTypes\n});\nmodule.exports = __toCommonJS(props_exports);\nvar import_prop_types = __toESM(require(\"prop-types\"));\nconst { string, bool, number, array, oneOfType, shape, object, func, node } = import_prop_types.default;\nconst propTypes = {\n url: oneOfType([string, array, object]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([string, number]),\n height: oneOfType([string, number]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n stopOnUnmount: bool,\n light: oneOfType([bool, string, object]),\n playIcon: node,\n previewTabIndex: number,\n previewAriaLabel: string,\n fallback: node,\n oEmbedUrl: string,\n wrapper: oneOfType([\n string,\n func,\n shape({ render: func.isRequired })\n ]),\n config: shape({\n soundcloud: shape({\n options: object\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n onUnstarted: func\n }),\n facebook: shape({\n appId: string,\n version: string,\n playerId: string,\n attributes: object\n }),\n dailymotion: shape({\n params: object\n }),\n vimeo: shape({\n playerOptions: object,\n title: string\n }),\n mux: shape({\n attributes: object,\n version: string\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceSafariHLS: bool,\n forceDisableHls: bool,\n forceDASH: bool,\n forceFLV: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string,\n flvVersion: string\n }),\n wistia: shape({\n options: object,\n playerId: string,\n customControls: array\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object,\n playerId: string\n }),\n vidyard: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onPlaybackRateChange: func,\n onPlaybackQualityChange: func,\n onProgress: func,\n onClickPreview: func,\n onEnablePIP: func,\n onDisablePIP: func\n};\nconst noop = () => {\n};\nconst defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: \"640px\",\n height: \"360px\",\n style: {},\n progressInterval: 1e3,\n playsinline: false,\n pip: false,\n stopOnUnmount: true,\n light: false,\n fallback: null,\n wrapper: \"div\",\n previewTabIndex: 0,\n previewAriaLabel: \"\",\n oEmbedUrl: \"https://noembed.com/embed?url={url}\",\n config: {\n soundcloud: {\n options: {\n visual: true,\n // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n onUnstarted: noop\n },\n facebook: {\n appId: \"1309697205772819\",\n version: \"v3.3\",\n playerId: null,\n attributes: {}\n },\n dailymotion: {\n params: {\n api: 1,\n \"endscreen-enable\": false\n }\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n title: null\n },\n mux: {\n attributes: {},\n version: \"2\"\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n forceFLV: false,\n hlsOptions: {},\n hlsVersion: \"1.1.4\",\n dashVersion: \"3.1.3\",\n flvVersion: \"1.5.0\",\n forceDisableHls: false\n },\n wistia: {\n options: {},\n playerId: null,\n customControls: null\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {},\n playerId: null\n },\n vidyard: {\n options: {}\n }\n },\n onReady: noop,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onPlaybackRateChange: noop,\n onPlaybackQualityChange: noop,\n onProgress: noop,\n onClickPreview: noop,\n onEnablePIP: noop,\n onDisablePIP: noop\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar utils_exports = {};\n__export(utils_exports, {\n callPlayer: () => callPlayer,\n getConfig: () => getConfig,\n getSDK: () => getSDK,\n isBlobUrl: () => isBlobUrl,\n isMediaStream: () => isMediaStream,\n lazy: () => lazy,\n omit: () => omit,\n parseEndTime: () => parseEndTime,\n parseStartTime: () => parseStartTime,\n queryString: () => queryString,\n randomString: () => randomString,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode\n});\nmodule.exports = __toCommonJS(utils_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_load_script = __toESM(require(\"load-script\"));\nvar import_deepmerge = __toESM(require(\"deepmerge\"));\nconst lazy = (componentImportFn) => import_react.default.lazy(async () => {\n const obj = await componentImportFn();\n return typeof obj.default === \"function\" ? obj : obj.default;\n});\nconst MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/;\nconst MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/;\nconst MATCH_START_STAMP = /(\\d+)(h|m|s)/g;\nconst MATCH_NUMERIC = /^\\d+$/;\nfunction parseTimeParam(url, pattern) {\n if (url instanceof Array) {\n return void 0;\n }\n const match = url.match(pattern);\n if (match) {\n const stamp = match[1];\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp);\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp);\n }\n }\n return void 0;\n}\nfunction parseTimeString(stamp) {\n let seconds = 0;\n let array = MATCH_START_STAMP.exec(stamp);\n while (array !== null) {\n const [, count, period] = array;\n if (period === \"h\")\n seconds += parseInt(count, 10) * 60 * 60;\n if (period === \"m\")\n seconds += parseInt(count, 10) * 60;\n if (period === \"s\")\n seconds += parseInt(count, 10);\n array = MATCH_START_STAMP.exec(stamp);\n }\n return seconds;\n}\nfunction parseStartTime(url) {\n return parseTimeParam(url, MATCH_START_QUERY);\n}\nfunction parseEndTime(url) {\n return parseTimeParam(url, MATCH_END_QUERY);\n}\nfunction randomString() {\n return Math.random().toString(36).substr(2, 5);\n}\nfunction queryString(object) {\n return Object.keys(object).map((key) => `${key}=${object[key]}`).join(\"&\");\n}\nfunction getGlobal(key) {\n if (window[key]) {\n return window[key];\n }\n if (window.exports && window.exports[key]) {\n return window.exports[key];\n }\n if (window.module && window.module.exports && window.module.exports[key]) {\n return window.module.exports[key];\n }\n return null;\n}\nconst requests = {};\nconst getSDK = enableStubOn(function getSDK2(url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = import_load_script.default) {\n const existingGlobal = getGlobal(sdkGlobal);\n if (existingGlobal && isLoaded(existingGlobal)) {\n return Promise.resolve(existingGlobal);\n }\n return new Promise((resolve, reject) => {\n if (requests[url]) {\n requests[url].push({ resolve, reject });\n return;\n }\n requests[url] = [{ resolve, reject }];\n const onLoaded = (sdk) => {\n requests[url].forEach((request) => request.resolve(sdk));\n };\n if (sdkReady) {\n const previousOnReady = window[sdkReady];\n window[sdkReady] = function() {\n if (previousOnReady)\n previousOnReady();\n onLoaded(getGlobal(sdkGlobal));\n };\n }\n fetchScript(url, (err) => {\n if (err) {\n requests[url].forEach((request) => request.reject(err));\n requests[url] = null;\n } else if (!sdkReady) {\n onLoaded(getGlobal(sdkGlobal));\n }\n });\n });\n});\nfunction getConfig(props, defaultProps) {\n return (0, import_deepmerge.default)(defaultProps.config, props.config);\n}\nfunction omit(object, ...arrays) {\n const omitKeys = [].concat(...arrays);\n const output = {};\n const keys = Object.keys(object);\n for (const key of keys) {\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key];\n }\n }\n return output;\n}\nfunction callPlayer(method, ...args) {\n if (!this.player || !this.player[method]) {\n let message = `ReactPlayer: ${this.constructor.displayName} player could not call %c${method}%c \\u2013 `;\n if (!this.player) {\n message += \"The player was not available\";\n } else if (!this.player[method]) {\n message += \"The method was not available\";\n }\n console.warn(message, \"font-weight: bold\", \"\");\n return null;\n }\n return this.player[method](...args);\n}\nfunction isMediaStream(url) {\n return typeof window !== \"undefined\" && typeof window.MediaStream !== \"undefined\" && url instanceof window.MediaStream;\n}\nfunction isBlobUrl(url) {\n return /^blob:/.test(url);\n}\nfunction supportsWebKitPresentationMode(video = document.createElement(\"video\")) {\n const notMobile = /iPhone|iPod/.test(navigator.userAgent) === false;\n return video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === \"function\" && notMobile;\n}\nfunction enableStubOn(fn) {\n if (false) {\n const wrap = (...args) => wrap.stub(...args);\n wrap.stub = fn;\n return wrap;\n }\n return fn;\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCode = void 0;\nvar isEqual = require(\"lodash.isequal\");\nvar qrGenerator = require(\"qrcode-generator\");\nvar React = require(\"react\");\nvar QRCode = /** @class */ (function (_super) {\n __extends(QRCode, _super);\n function QRCode(props) {\n var _this = _super.call(this, props) || this;\n _this.canvasRef = React.createRef();\n return _this;\n }\n QRCode.prototype.download = function (fileType, fileName) {\n if (this.canvasRef.current) {\n var mimeType = void 0;\n switch (fileType) {\n case 'jpg':\n mimeType = 'image/jpeg';\n break;\n case 'webp':\n mimeType = 'image/webp';\n break;\n case 'png':\n default:\n mimeType = 'image/png';\n break;\n }\n var url = this.canvasRef.current.toDataURL(mimeType, 1.0);\n var link = document.createElement('a');\n link.download = fileName !== null && fileName !== void 0 ? fileName : 'react-qrcode-logo';\n link.href = url;\n link.click();\n }\n };\n QRCode.prototype.utf16to8 = function (str) {\n var out = '', i, c;\n var len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if ((c >= 0x0001) && (c <= 0x007F)) {\n out += str.charAt(i);\n }\n else if (c > 0x07FF) {\n out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));\n out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n }\n else {\n out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n }\n }\n return out;\n };\n /**\n * Draw a rounded square in the canvas\n */\n QRCode.prototype.drawRoundedSquare = function (lineWidth, x, y, size, color, radii, fill, ctx) {\n ctx.lineWidth = lineWidth;\n ctx.fillStyle = color;\n ctx.strokeStyle = color;\n // Adjust coordinates so that the outside of the stroke is aligned to the edges\n y += lineWidth / 2;\n x += lineWidth / 2;\n size -= lineWidth;\n if (!Array.isArray(radii)) {\n radii = [radii, radii, radii, radii];\n }\n // Radius should not be greater than half the size or less than zero\n radii = radii.map(function (r) {\n r = Math.min(r, size / 2);\n return (r < 0) ? 0 : r;\n });\n var rTopLeft = radii[0] || 0;\n var rTopRight = radii[1] || 0;\n var rBottomRight = radii[2] || 0;\n var rBottomLeft = radii[3] || 0;\n ctx.beginPath();\n ctx.moveTo(x + rTopLeft, y);\n ctx.lineTo(x + size - rTopRight, y);\n if (rTopRight)\n ctx.quadraticCurveTo(x + size, y, x + size, y + rTopRight);\n ctx.lineTo(x + size, y + size - rBottomRight);\n if (rBottomRight)\n ctx.quadraticCurveTo(x + size, y + size, x + size - rBottomRight, y + size);\n ctx.lineTo(x + rBottomLeft, y + size);\n if (rBottomLeft)\n ctx.quadraticCurveTo(x, y + size, x, y + size - rBottomLeft);\n ctx.lineTo(x, y + rTopLeft);\n if (rTopLeft)\n ctx.quadraticCurveTo(x, y, x + rTopLeft, y);\n ctx.closePath();\n ctx.stroke();\n if (fill) {\n ctx.fill();\n }\n };\n /**\n * Draw a single positional pattern eye.\n */\n QRCode.prototype.drawPositioningPattern = function (ctx, cellSize, offset, row, col, color, radii) {\n if (radii === void 0) { radii = [0, 0, 0, 0]; }\n var lineWidth = Math.ceil(cellSize);\n var radiiOuter;\n var radiiInner;\n if (typeof radii !== 'number' && !Array.isArray(radii)) {\n radiiOuter = radii.outer || 0;\n radiiInner = radii.inner || 0;\n }\n else {\n radiiOuter = radii;\n radiiInner = radiiOuter;\n }\n var colorOuter;\n var colorInner;\n if (typeof color !== 'string') {\n colorOuter = color.outer;\n colorInner = color.inner;\n }\n else {\n colorOuter = color;\n colorInner = color;\n }\n var y = (row * cellSize) + offset;\n var x = (col * cellSize) + offset;\n var size = cellSize * 7;\n // Outer box\n this.drawRoundedSquare(lineWidth, x, y, size, colorOuter, radiiOuter, false, ctx);\n // Inner box\n size = cellSize * 3;\n y += cellSize * 2;\n x += cellSize * 2;\n this.drawRoundedSquare(lineWidth, x, y, size, colorInner, radiiInner, true, ctx);\n };\n ;\n /**\n * Is this dot inside a positional pattern zone.\n */\n QRCode.prototype.isInPositioninZone = function (col, row, zones) {\n return zones.some(function (zone) { return (row >= zone.row && row <= zone.row + 7 &&\n col >= zone.col && col <= zone.col + 7); });\n };\n QRCode.prototype.transformPixelLengthIntoNumberOfCells = function (pixelLength, cellSize) {\n return pixelLength / cellSize;\n };\n QRCode.prototype.isCoordinateInImage = function (col, row, dWidthLogo, dHeightLogo, dxLogo, dyLogo, cellSize, logoImage) {\n if (logoImage) {\n var numberOfCellsMargin = 2;\n var firstRowOfLogo = this.transformPixelLengthIntoNumberOfCells(dxLogo, cellSize);\n var firstColumnOfLogo = this.transformPixelLengthIntoNumberOfCells(dyLogo, cellSize);\n var logoWidthInCells = this.transformPixelLengthIntoNumberOfCells(dWidthLogo, cellSize) - 1;\n var logoHeightInCells = this.transformPixelLengthIntoNumberOfCells(dHeightLogo, cellSize) - 1;\n return row >= firstRowOfLogo - numberOfCellsMargin && row <= firstRowOfLogo + logoWidthInCells + numberOfCellsMargin // check rows\n && col >= firstColumnOfLogo - numberOfCellsMargin && col <= firstColumnOfLogo + logoHeightInCells + numberOfCellsMargin; // check cols\n }\n else {\n return false;\n }\n };\n QRCode.prototype.shouldComponentUpdate = function (nextProps) {\n return !isEqual(this.props, nextProps);\n };\n QRCode.prototype.componentDidMount = function () {\n this.update();\n };\n QRCode.prototype.componentDidUpdate = function () {\n this.update();\n };\n QRCode.prototype.update = function () {\n var _a;\n var _b = this.props, value = _b.value, ecLevel = _b.ecLevel, enableCORS = _b.enableCORS, bgColor = _b.bgColor, fgColor = _b.fgColor, logoImage = _b.logoImage, logoOpacity = _b.logoOpacity, logoOnLoad = _b.logoOnLoad, removeQrCodeBehindLogo = _b.removeQrCodeBehindLogo, qrStyle = _b.qrStyle, eyeRadius = _b.eyeRadius, eyeColor = _b.eyeColor, logoPaddingStyle = _b.logoPaddingStyle;\n // just make sure that these params are passed as numbers\n var size = +this.props.size;\n var quietZone = +this.props.quietZone;\n var logoWidth = this.props.logoWidth ? +this.props.logoWidth : 0;\n var logoHeight = this.props.logoHeight ? +this.props.logoHeight : 0;\n var logoPadding = this.props.logoPadding ? +this.props.logoPadding : 0;\n var qrCode = qrGenerator(0, ecLevel);\n qrCode.addData(this.utf16to8(value));\n qrCode.make();\n var canvas = (_a = this.canvasRef) === null || _a === void 0 ? void 0 : _a.current;\n var ctx = canvas.getContext('2d');\n var canvasSize = size + (2 * quietZone);\n var length = qrCode.getModuleCount();\n var cellSize = size / length;\n var scale = (window.devicePixelRatio || 1);\n canvas.height = canvas.width = canvasSize * scale;\n ctx.scale(scale, scale);\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, canvasSize, canvasSize);\n var offset = quietZone;\n var positioningZones = [\n { row: 0, col: 0 },\n { row: 0, col: length - 7 },\n { row: length - 7, col: 0 },\n ];\n ctx.strokeStyle = fgColor;\n if (qrStyle === 'dots') {\n ctx.fillStyle = fgColor;\n var radius = cellSize / 2;\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n if (qrCode.isDark(row, col) && !this.isInPositioninZone(row, col, positioningZones)) {\n ctx.beginPath();\n ctx.arc(Math.round(col * cellSize) + radius + offset, Math.round(row * cellSize) + radius + offset, (radius / 100) * 75, 0, 2 * Math.PI, false);\n ctx.closePath();\n ctx.fill();\n }\n }\n }\n }\n else if (qrStyle === 'fluid') {\n var radius = Math.ceil(cellSize / 2);\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n if (qrCode.isDark(row, col) && !this.isInPositioninZone(row, col, positioningZones)) {\n var roundedCorners = [false, false, false, false]; // top-left, top-right, bottom-right, bottom-left\n if ((row > 0 && !qrCode.isDark(row - 1, col)) && (col > 0 && !qrCode.isDark(row, col - 1)))\n roundedCorners[0] = true;\n if ((row > 0 && !qrCode.isDark(row - 1, col)) && (col < length - 1 && !qrCode.isDark(row, col + 1)))\n roundedCorners[1] = true;\n if ((row < length - 1 && !qrCode.isDark(row + 1, col)) && (col < length - 1 && !qrCode.isDark(row, col + 1)))\n roundedCorners[2] = true;\n if ((row < length - 1 && !qrCode.isDark(row + 1, col)) && (col > 0 && !qrCode.isDark(row, col - 1)))\n roundedCorners[3] = true;\n var w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize));\n var h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize));\n ctx.fillStyle = fgColor;\n ctx.beginPath();\n ctx.arc(Math.round(col * cellSize) + radius + offset, Math.round(row * cellSize) + radius + offset, radius, 0, 2 * Math.PI, false);\n ctx.closePath();\n ctx.fill();\n if (!roundedCorners[0])\n ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset, w / 2, h / 2);\n if (!roundedCorners[1])\n ctx.fillRect(Math.round(col * cellSize) + offset + Math.floor(w / 2), Math.round(row * cellSize) + offset, w / 2, h / 2);\n if (!roundedCorners[2])\n ctx.fillRect(Math.round(col * cellSize) + offset + Math.floor(w / 2), Math.round(row * cellSize) + offset + Math.floor(h / 2), w / 2, h / 2);\n if (!roundedCorners[3])\n ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset + Math.floor(h / 2), w / 2, h / 2);\n }\n }\n }\n }\n else {\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n if (qrCode.isDark(row, col) && !this.isInPositioninZone(row, col, positioningZones)) {\n ctx.fillStyle = fgColor;\n var w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize));\n var h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize));\n ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset, w, h);\n }\n }\n }\n }\n // Draw positioning patterns\n for (var i = 0; i < 3; i++) {\n var _c = positioningZones[i], row = _c.row, col = _c.col;\n var radii = eyeRadius;\n var color = void 0;\n if (Array.isArray(radii)) {\n radii = radii[i];\n }\n if (typeof radii == 'number') {\n radii = [radii, radii, radii, radii];\n }\n if (!eyeColor) { // if not specified, eye color is the same as foreground, \n color = fgColor;\n }\n else {\n if (Array.isArray(eyeColor)) { // if array, we pass the single color\n color = eyeColor[i];\n }\n else {\n color = eyeColor;\n }\n }\n this.drawPositioningPattern(ctx, cellSize, offset, row, col, color, radii);\n }\n if (logoImage) {\n var image_1 = new Image();\n if (enableCORS) {\n image_1.crossOrigin = 'Anonymous';\n }\n image_1.onload = function (e) {\n ctx.save();\n var dWidthLogo = logoWidth || size * 0.2;\n var dHeightLogo = logoHeight || dWidthLogo;\n var dxLogo = ((size - dWidthLogo) / 2);\n var dyLogo = ((size - dHeightLogo) / 2);\n if (removeQrCodeBehindLogo || logoPadding) {\n ctx.beginPath();\n ctx.strokeStyle = bgColor;\n ctx.fillStyle = bgColor;\n var dWidthLogoPadding = dWidthLogo + (2 * logoPadding);\n var dHeightLogoPadding = dHeightLogo + (2 * logoPadding);\n var dxLogoPadding = dxLogo + offset - logoPadding;\n var dyLogoPadding = dyLogo + offset - logoPadding;\n if (logoPaddingStyle === 'circle') {\n var dxCenterLogoPadding = dxLogoPadding + (dWidthLogoPadding / 2);\n var dyCenterLogoPadding = dyLogoPadding + (dHeightLogoPadding / 2);\n ctx.ellipse(dxCenterLogoPadding, dyCenterLogoPadding, dWidthLogoPadding / 2, dHeightLogoPadding / 2, 0, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.fill();\n }\n else {\n ctx.fillRect(dxLogoPadding, dyLogoPadding, dWidthLogoPadding, dHeightLogoPadding);\n }\n }\n ctx.globalAlpha = logoOpacity;\n ctx.drawImage(image_1, dxLogo + offset, dyLogo + offset, dWidthLogo, dHeightLogo);\n ctx.restore();\n if (logoOnLoad) {\n logoOnLoad(e);\n }\n };\n image_1.src = logoImage;\n }\n };\n QRCode.prototype.render = function () {\n var _a;\n var qrSize = +this.props.size + (2 * +this.props.quietZone);\n return React.createElement(\"canvas\", { id: (_a = this.props.id) !== null && _a !== void 0 ? _a : 'react-qrcode-logo', height: qrSize, width: qrSize, style: __assign({ height: qrSize + 'px', width: qrSize + 'px' }, this.props.style), ref: this.canvasRef });\n };\n QRCode.defaultProps = {\n value: 'https://reactjs.org/',\n ecLevel: 'M',\n enableCORS: false,\n size: 150,\n quietZone: 10,\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n logoOpacity: 1,\n qrStyle: 'squares',\n eyeRadius: [0, 0, 0],\n logoPaddingStyle: 'square'\n };\n return QRCode;\n}(React.Component));\nexports.QRCode = QRCode;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_react__) => {\nreturn ","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport { shallowEqualArrays, shallowEqualObjects };\n","import useMediaQuery from './useMediaQuery';\nimport { ReactNode, ReactElement, FC, CSSProperties } from 'react';\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types';\n\ninterface MediaQueryProps extends MediaQueryAllQueryable {\n component?: ReactNode\n // eslint-disable-next-line @typescript-eslint/ban-types\n children?: ReactNode | ((matches: boolean) => ReactNode);\n query?: string;\n style?: CSSProperties;\n className?: string;\n device?: MediaQueryMatchers;\n values?: Partial<MediaQueryMatchers>;\n onBeforeChange?: (_matches: boolean) => void;\n onChange?: (_matches: boolean) => void;\n}\n\n// ReactNode and ReactElement typings are a little funky for functional components, so the ReactElement cast is needed on the return\nconst MediaQuery: FC<MediaQueryProps> = ({\n children,\n device,\n onChange,\n ...settings\n}) => {\n const matches = useMediaQuery(settings, device, onChange);\n\n if (typeof children === 'function') {\n return children(matches) as ReactElement;\n }\n return matches ? children as ReactElement : null;\n};\n\nexport default MediaQuery;\n","import { createContext } from 'react'\nimport { MediaQueryAllQueryable } from './types'\n\nconst Context = createContext<Partial<MediaQueryAllQueryable> | undefined>(undefined)\n\nexport default Context\n","import useMediaQuery from './useMediaQuery'\nimport MediaQuery from './Component'\nimport toQuery from './toQuery'\nimport Context from './Context'\n\nexport {\n MediaQuery as default,\n useMediaQuery,\n toQuery,\n Context\n}\n\nexport type {\n MediaQueryTypes,\n MediaQueryType,\n MediaQueryFeatures,\n MediaQueryMatchers,\n MediaQueryAllQueryable\n} from './types'\n","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n])\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf([\n 'portrait',\n 'landscape'\n ]),\n\n scan: PropTypes.oneOf([\n 'progressive',\n 'interlace'\n ]),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...featureMatchers\n}\n\nconst all = { ...types, ...features }\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\nimport { MediaQueryAllQueryable } from './types'\n\nconst negate = (cond: string) => `not ${cond}`\n\nconst keyVal = (k: string, v: unknown): string => {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return realKey\n }\n if (v === false) {\n return negate(realKey)\n }\n return `(${realKey}: ${v})`\n}\n\nconst join = (conds: string[]): string => conds.join(' and ')\n\nconst toQuery = (obj: Partial<MediaQueryAllQueryable>): string => {\n const rules: string[] = []\n Object.keys(mq.all).forEach((k) => {\n const v = obj[k as keyof MediaQueryAllQueryable]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\nexport default toQuery\n","import { useRef, useEffect, useContext, useState } from 'react'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport { shallowEqualObjects } from 'shallow-equal'\nimport toQuery from './toQuery'\nimport Context from './Context'\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types'\n\ntype MediaQuerySettings = Partial<MediaQueryAllQueryable & { query?: string }>\ntype HyphenateKeyTypes = MediaQueryMatchers | MediaQueryAllQueryable;\n\nconst makeQuery = (settings: MediaQuerySettings) => settings.query || toQuery(settings)\n\nconst hyphenateKeys = (obj?: HyphenateKeyTypes) => {\n type K = keyof HyphenateKeyTypes;\n\n if (!obj) return undefined\n const keys = Object.keys(obj) as K[]\n\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = obj[key]\n return result\n }, {} as Record<string, typeof obj[K]>)\n}\n\nconst useIsUpdate = () => {\n const ref = useRef(false)\n\n useEffect(() => {\n ref.current = true\n }, [])\n\n return ref.current\n}\n\nconst useDevice = (deviceFromProps?: MediaQueryMatchers): Partial<MediaQueryAllQueryable> | undefined => {\n const deviceFromContext = useContext(Context)\n const getDevice = () =>\n hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext)\n const [ device, setDevice ] = useState(getDevice)\n\n useEffect(() => {\n const newDevice = getDevice()\n if (!shallowEqualObjects(device, newDevice)) {\n setDevice(newDevice)\n }\n }, [ deviceFromProps, deviceFromContext ])\n\n return device\n}\n\nconst useQuery = (settings: MediaQuerySettings) => {\n const getQuery = () => makeQuery(settings)\n const [ query, setQuery ] = useState(getQuery)\n\n useEffect(() => {\n const newQuery = getQuery()\n if (query !== newQuery) {\n setQuery(newQuery)\n }\n }, [ settings ])\n\n return query\n}\n\nconst useMatchMedia = (query: string, device?: MediaQueryMatchers) => {\n const getMatchMedia = () => matchMedia(query, device || {}, !!device)\n const [ mq, setMq ] = useState(getMatchMedia)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate) {\n // skip on mounting, it has already been set\n const newMq = getMatchMedia()\n setMq(newMq)\n\n return () => {\n if (newMq) {\n newMq.dispose()\n }\n }\n }\n }, [ query, device ])\n\n return mq\n}\n\nconst useMatches = (mediaQuery: MediaQueryList): boolean => {\n const [ matches, setMatches ] = useState<boolean>(mediaQuery.matches)\n\n useEffect(() => {\n const updateMatches = (ev: MediaQueryListEvent) => {\n setMatches(ev.matches)\n }\n mediaQuery.addListener(updateMatches)\n setMatches(mediaQuery.matches)\n\n return () => {\n mediaQuery.removeListener(updateMatches)\n }\n }, [ mediaQuery ])\n\n return matches\n}\n\nconst useMediaQuery = (settings: MediaQuerySettings, device?: MediaQueryMatchers, onChange?: (_: boolean) => void) => {\n const deviceSettings = useDevice(device)\n const query = useQuery(settings)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const mq = useMatchMedia(query, deviceSettings)\n const matches = useMatches(mq as unknown as MediaQueryList)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate && onChange) {\n onChange(matches)\n }\n }, [ matches ])\n\n useEffect(() => () => {\n if (mq) {\n mq.dispose()\n }\n }, [])\n\n return matches\n}\n\nexport default useMediaQuery\n","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrevArrow = exports.NextArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = exports.extractObject = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","// Simple React Validator v1.6.2 | Created By Dockwa | MIT License | 2017 - Present\n!function(e,t){\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?module.exports=t(require(\"react\")):e.SimpleReactValidator=t(e.React)}(this,function(s){\"use strict\";function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==r)return;var n,s,a=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){u=!0,s=e}finally{try{i||null==r.return||r.return()}finally{if(u)throw s}}return a}(e,t)||l(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=l(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,s=function(){};return{s:s,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:s}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function l(e,t){if(e){if(\"string\"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function a(e){return(a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function d(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach(function(e){o(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var e=function(){function n(){var r=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),o(this,\"showMessageFor\",function(e){r.visibleFields.includes(e)||r.visibleFields.push(e),r.helpers.forceUpdateIfNeeded()}),o(this,\"hideMessageFor\",function(e){var t=r.visibleFields.indexOf(e);-1<t&&r.visibleFields.splice(t,1),r.helpers.forceUpdateIfNeeded()}),o(this,\"helpers\",{parent:this,passes:function(e,t,r,n){return n.hasOwnProperty(e)?!(this.isRequired(e,n)||!this.isBlank(t))||!1!==n[e].rule(t,r,this.parent):(console.error(\"Rule Not Found: There is no rule with the name \".concat(e,\".\")),!0)},isRequired:function(e,t){return t[e].hasOwnProperty(\"required\")&&t[e].required},isBlank:function(e){return null==e||this.testRegex(e,/^[\\s]*$/)},normalizeValues:function(e,t){return[this.valueOrEmptyString(e),this.getValidation(t),this.getOptions(t)]},getValidation:function(e){return e===Object(e)&&Object.keys(e).length?Object.keys(e)[0]:e.split(\":\")[0]},getOptions:function(e){if(e===Object(e)&&Object.values(e).length){var t=Object.values(e)[0];return Array.isArray(t)?t:[t]}return 1<(t=e.split(\":\")).length?t[1].split(\",\"):[]},valueOrEmptyString:function(e){return null==e?\"\":e},toSentence:function(e){return e.slice(0,-2).join(\", \")+(e.slice(0,-2).length?\", \":\"\")+e.slice(-2).join(2<e.length?\", or \":\" or \")},testRegex:function(e,t){return null!==e.toString().match(t)},forceUpdateIfNeeded:function(){this.parent.autoForceUpdate&&this.parent.autoForceUpdate.forceUpdate()},message:function(e,t,r,n){r.messages=r.messages||{};var s=r.messages[e]||r.messages.default||this.parent.messages[e]||this.parent.messages.default||n[e].message;return s.replace(\":attribute\",this.humanizeFieldName(t))},humanizeFieldName:function(e){return e.replace(/([a-z0-9])([A-Z])/g,\"$1 $2\").replace(/_/g,\" \").toLowerCase()},element:function(e,t){var r=t.element||this.parent.element;return r(e,t.className)},momentInstalled:function(){return!(!window||!window.moment)||(console.warn(\"Date validators require using momentjs https://momentjs.com and moment objects.\"),!1)},size:function(e,t){return\"string\"===t||void 0===t||\"array\"===t?e.length:\"num\"===t?parseFloat(e):void 0},sizeText:function(e){return\"string\"===e||void 0===e?\" characters\":\"array\"===e?\" elements\":\"\"}}),this.fields={},this.visibleFields=[],this.errorMessages={},this.messagesShown=!1,this.rules=d({accepted:{message:\"The :attribute must be accepted.\",rule:function(e){return!0===e},required:!0},after:{message:\"The :attribute must be after :date.\",rule:function(e,t){return r.helpers.momentInstalled()&&moment.isMoment(e)&&e.isAfter(t[0],\"day\")},messageReplace:function(e,t){return e.replace(\":date\",t[0].format(\"MM/DD/YYYY\"))}},after_or_equal:{message:\"The :attribute must be after or on :date.\",rule:function(e,t){return r.helpers.momentInstalled()&&moment.isMoment(e)&&e.isSameOrAfter(t[0],\"day\")},messageReplace:function(e,t){return e.replace(\":date\",t[0].format(\"MM/DD/YYYY\"))}},alpha:{message:\"The :attribute may only contain letters.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z]*$/i)}},alpha_space:{message:\"The :attribute may only contain letters and spaces.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z\\s]*$/i)}},alpha_num:{message:\"The :attribute may only contain letters and numbers.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z0-9]*$/i)}},alpha_num_space:{message:\"The :attribute may only contain letters, numbers, and spaces.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z0-9\\s]*$/i)}},alpha_num_dash:{message:\"The :attribute may only contain letters, numbers, and dashes.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z0-9_-]*$/i)}},alpha_num_dash_space:{message:\"The :attribute may only contain letters, numbers, dashes, and spaces.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z0-9_-\\s]*$/i)}},array:{message:\"The :attribute must be an array.\",rule:function(e){return Array.isArray(e)}},before:{message:\"The :attribute must be before :date.\",rule:function(e,t){return r.helpers.momentInstalled()&&moment.isMoment(e)&&e.isBefore(t[0],\"day\")},messageReplace:function(e,t){return e.replace(\":date\",t[0].format(\"MM/DD/YYYY\"))}},before_or_equal:{message:\"The :attribute must be before or on :date.\",rule:function(e,t){return r.helpers.momentInstalled()&&moment.isMoment(e)&&e.isSameOrBefore(t[0],\"day\")},messageReplace:function(e,t){return e.replace(\":date\",t[0].format(\"MM/DD/YYYY\"))}},between:{message:\"The :attribute must be between :min and :max:type.\",rule:function(e,t){return r.helpers.size(e,t[2])>=parseFloat(t[0])&&r.helpers.size(e,t[2])<=parseFloat(t[1])},messageReplace:function(e,t){return e.replace(\":min\",t[0]).replace(\":max\",t[1]).replace(\":type\",r.helpers.sizeText(t[2]))}},boolean:{message:\"The :attribute must be a boolean.\",rule:function(e){return!1===e||!0===e}},card_exp:{message:\"The :attribute must be a valid expiration date.\",rule:function(e){return r.helpers.testRegex(e,/^(([0]?[1-9]{1})|([1]{1}[0-2]{1}))\\s?\\/\\s?(\\d{2}|\\d{4})$/)}},card_num:{message:\"The :attribute must be a valid credit card number.\",rule:function(e){return r.helpers.testRegex(e,/^\\d{4}\\s?\\d{4,6}\\s?\\d{4,5}\\s?\\d{0,8}$/)}},currency:{message:\"The :attribute must be a valid currency.\",rule:function(e){return r.helpers.testRegex(e,/^[\\$£€¥]?(\\d{1,3})(\\,?\\d{3})*\\.?\\d{0,2}$/)}},date:{message:\"The :attribute must be a date.\",rule:function(e){return r.helpers.momentInstalled()&&moment.isMoment(e)}},date_equals:{message:\"The :attribute must be on :date.\",rule:function(e,t){return r.helpers.momentInstalled()&&moment.isMoment(e)&&e.isSame(t[0],\"day\")},messageReplace:function(e,t){return e.replace(\":date\",t[0].format(\"MM/DD/YYYY\"))}},email:{message:\"The :attribute must be a valid email address.\",rule:function(e){return r.helpers.testRegex(e,/^[A-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i)}},in:{message:\"The selected :attribute must be :values.\",rule:function(e,t){return t.includes(e)},messageReplace:function(e,t){return e.replace(\":values\",r.helpers.toSentence(t))}},integer:{message:\"The :attribute must be an integer.\",rule:function(e){return r.helpers.testRegex(e,/^\\-?\\d*$/)}},max:{message:\"The :attribute may not be greater than :max:type.\",rule:function(e,t){return r.helpers.size(e,t[1])<=parseFloat(t[0])},messageReplace:function(e,t){return e.replace(\":max\",t[0]).replace(\":type\",r.helpers.sizeText(t[1]))}},min:{message:\"The :attribute must be at least :min:type.\",rule:function(e,t){return r.helpers.size(e,t[1])>=parseFloat(t[0])},messageReplace:function(e,t){return e.replace(\":min\",t[0]).replace(\":type\",r.helpers.sizeText(t[1]))}},not_in:{message:\"The selected :attribute must not be :values.\",rule:function(e,t){return!t.includes(e)},messageReplace:function(e,t){return e.replace(\":values\",r.helpers.toSentence(t))}},not_regex:{message:\"The :attribute must not match the required pattern.\",rule:function(e,t){return!r.helpers.testRegex(e,\"string\"==typeof t[0]||t[0]instanceof String?new RegExp(t[0]):t[0])}},numeric:{message:\"The :attribute must be a number.\",rule:function(e){return r.helpers.testRegex(e,/^\\-?\\d*\\.?\\d+$/)}},phone:{message:\"The :attribute must be a valid phone number.\",rule:function(e){return r.helpers.testRegex(e,/^(\\+?\\d{0,4})?\\s?-?\\s?(\\(?\\d{3}\\)?)\\s?-?\\s?(\\(?\\d{3}\\)?)\\s?-?\\s?(\\(?\\d{4}\\)?)$/)&&!r.helpers.testRegex(e,/^\\b(\\d)\\1{8,}\\b$/)}},regex:{message:\"The :attribute must match the required pattern.\",rule:function(e,t){return r.helpers.testRegex(e,\"string\"==typeof t[0]||t[0]instanceof String?new RegExp(t[0]):t[0])}},required:{message:\"The :attribute field is required.\",rule:function(e){return!r.helpers.isBlank(e)},required:!0},size:{message:\"The :attribute must be :size:type.\",rule:function(e,t){return r.helpers.size(e,t[1])==parseFloat(t[0])},messageReplace:function(e,t){return e.replace(\":size\",t[0]).replace(\":type\",r.helpers.sizeText(t[1]))}},string:{message:\"The :attribute must be a string.\",rule:function(e){return a(e)===a(\"string\")}},typeof:{message:\"The :attribute is not the correct type of :type.\",rule:function(e,t){return a(e)===a(t[0])},messageReplace:function(e,t){return e.replace(\":type\",a(t[0]))}},url:{message:\"The :attribute must be a url.\",rule:function(e){return r.helpers.testRegex(e,/^https?:\\/\\/[-a-z0-9@:%._\\+~#=]{1,256}\\.[a-z0-9()]{2,13}\\b([-a-z0-9()@:%_\\+.~#?&//=]*)$/i)}}},e.validators||{}),e.locale&&!n.locales.hasOwnProperty(e.locale)&&console.warn(\"Locale not found! Make sure it is spelled correctly and the locale file is loaded.\");var t=n.locales[e.locale]||{};Object.keys(this.rules).forEach(function(e){r.rules[e].message=t[e]||r.rules[e].message}),this.messages=e.messages||{},this.className=e.className,this.autoForceUpdate=e.autoForceUpdate||!1,!1===e.element?this.element=function(e){return e}:e.hasOwnProperty(\"element\")?this.element=e.element:\"object\"===(\"undefined\"==typeof navigator?\"undefined\":a(navigator))&&\"ReactNative\"===navigator.product?this.element=function(e){return e}:this.element=function(e,t){return s.createElement(\"div\",{className:t||r.className||\"srv-validation-message\"},e)}}var e,t,r;return e=n,r=[{key:\"addLocale\",value:function(e,t){this.locales[e]=t}}],(t=[{key:\"getErrorMessages\",value:function(){return this.errorMessages}},{key:\"showMessages\",value:function(){this.messagesShown=!0,this.helpers.forceUpdateIfNeeded()}},{key:\"hideMessages\",value:function(){this.messagesShown=!1,this.helpers.forceUpdateIfNeeded()}},{key:\"allValid\",value:function(){for(var e in this.fields)if(!1===this.fieldValid(e))return!1;return!0}},{key:\"fieldValid\",value:function(e){return this.fields.hasOwnProperty(e)&&!0===this.fields[e]}},{key:\"purgeFields\",value:function(){this.fields={},this.errorMessages={}}},{key:\"messageWhenPresent\",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(!this.helpers.isBlank(e)&&this.messagesShown)return this.helpers.element(e,t)}},{key:\"messageAlways\",value:function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(console.warn(\"The messageAlways() method is deprecated in SimpleReactValidator. Please see the documentation and switch to the messageWhenPresent() method.\"),t&&this.messagesShown)return this.helpers.element(t,r)}},{key:\"check\",value:function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Array.isArray(t)||(t=t.split(\"|\"));var n,s=r.validators?d(d({},this.rules),r.validators):this.rules,a=p(t);try{for(a.s();!(n=a.n()).done;){var i=n.value,u=f(this.helpers.normalizeValues(e,i),3),l=u[0],o=u[1],c=u[2];if(!this.helpers.passes(o,l,c,s))return!1}}catch(e){a.e(e)}finally{a.f()}return!0}},{key:\"message\",value:function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};this.errorMessages[e]=null,this.fields[e]=!0,Array.isArray(r)||(r=r.split(\"|\"));var s,a=n.validators?d(d({},this.rules),n.validators):this.rules,i=p(r);try{for(i.s();!(s=i.n()).done;){var u=s.value,l=f(this.helpers.normalizeValues(t,u),3),o=l[0],c=l[1],m=l[2];if(!this.helpers.passes(c,o,m,a)){this.fields[e]=!1;var h=this.helpers.message(c,e,n,a);if(0<m.length&&a[c].hasOwnProperty(\"messageReplace\")&&(h=a[c].messageReplace(h,m)),this.errorMessages[e]=h,this.messagesShown||this.visibleFields.includes(e))return this.helpers.element(h,n)}}}catch(e){i.e(e)}finally{i.f()}}}])&&u(e.prototype,t),r&&u(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),n}();return o(e,\"version\",\"1.5.1\"),o(e,\"locales\",{en:{}}),e});","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","/**\n * @license React\n * use-sync-external-store-with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var g=require(\"react\");function n(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var p=\"function\"===typeof Object.is?Object.is:n,q=g.useSyncExternalStore,r=g.useRef,t=g.useEffect,u=g.useMemo,v=g.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,h){var c=r(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=u(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==h&&f.hasValue){var b=f.value;if(h(b,a))return k=b}return k=a}b=k;if(p(d,a))return b;var e=l(a);if(void 0!==h&&h(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,h]);var d=q(a,c[0],c[1]);\nt(function(){f.hasValue=!0;f.value=d},[d]);v(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + {\"42\":\"reactPlayerTwitch\",\"173\":\"reactPlayerVimeo\",\"328\":\"reactPlayerDailyMotion\",\"340\":\"reactPlayerWistia\",\"353\":\"reactPlayerPreview\",\"392\":\"reactPlayerVidyard\",\"446\":\"reactPlayerYouTube\",\"458\":\"reactPlayerFilePlayer\",\"463\":\"reactPlayerKaltura\",\"570\":\"reactPlayerMixcloud\",\"627\":\"reactPlayerStreamable\",\"723\":\"reactPlayerMux\",\"887\":\"reactPlayerFacebook\",\"979\":\"reactPlayerSoundCloud\"}[chunkId] + \".\" + {\"42\":\"580e52cc\",\"173\":\"fdec6ee5\",\"328\":\"6916e9f0\",\"340\":\"a6cbff99\",\"353\":\"3ab1753f\",\"392\":\"9960358a\",\"446\":\"7a6d7bb5\",\"458\":\"17c7e19d\",\"463\":\"fe37855b\",\"570\":\"ed9f6cfb\",\"627\":\"3caa6862\",\"723\":\"d142d85c\",\"887\":\"e2928626\",\"979\":\"cdf24339\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"bitdenex-global:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbitdenex_global\"] = self[\"webpackChunkbitdenex_global\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an <a href> attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly<Location> {\n let location: Readonly<Location> = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial<Path>) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n let parsedPath: Partial<Path> = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;\n\n/**\n * Users can specify either lowercase or uppercase form methods on <Form>,\n * useSubmit(), <fetcher.Form>, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude<FormMethod, \"get\">;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude<V7_FormMethod, \"GET\">;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set<ImmutableRouteKey>([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction<R extends AgnosticRouteObject> {\n (): Promise<Omit<R, ImmutableRouteKey>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam<L> | _PathParam<R>\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam<Path extends string> =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam<Rest>\n : // look for params in the absence of wildcards\n _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n // if could not find path params, fallback to `string`\n [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n detectErrorBoundary: DetectErrorBoundaryFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n hasErrorBoundary: detectErrorBoundary(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n hasErrorBoundary: detectErrorBoundary(route),\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n detectErrorBoundary,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch<string, RouteObjectType>(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch<RouteObjectType>[] = [],\n parentsMeta: RouteMeta<RouteObjectType>[] = [],\n parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta<RouteObjectType> = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch<RouteObjectType>,\n pathname: string\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params<ParamKey>,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n originalPath: Path,\n params: {\n [key in PathParam<Path>]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam<Path>;\n const starParam = params[star];\n\n // Apply the splat\n return starParam;\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam<Path>];\n\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n\n return param;\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial<Path>\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in <Link to=\"...\"> and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial<Path>;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise<any> {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set<string> = new Set<string>();\n private controller: AbortController;\n private abortPromise: Promise<void>;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record<string, unknown>;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record<string, unknown>, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise<unknown> | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record<string, unknown>,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record<string, number>,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise<void>;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise<void>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher<TData = any>(key?: string): Fetcher<TData>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map<string, AbortController>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map<string, Fetcher>;\n\n /**\n * Map of current blockers\n */\n blockers: Map<string, Blocker>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n future?: FutureConfig;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n actionHeaders: Record<string, Headers>;\n activeDeferreds: Record<string, DeferredData> | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise<StaticHandlerContext | Response>;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise<any>;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit<LinkNavigateOptions, \"replace\">\n | Omit<SubmissionNavigateOptions, \"replace\">;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher<TData = any> =\n FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n\nconst defaultDetectErrorBoundary = (route: AgnosticRouteObject) =>\n Boolean(route.hasErrorBoundary);\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let detectErrorBoundary =\n init.detectErrorBoundary || defaultDetectErrorBoundary;\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set<RouterSubscriber>();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record<string, number> | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map<string, AbortController>();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map<string, number>();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set<string>();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map<string, DeferredData>();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map<string, BlockerFunction>();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial<RouterState>): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise<void> {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n to,\n future,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise<void> {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a <Form method=\"post\"> which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise<HandleActionResult> {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise<HandleLoadersResult> {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission || fetcherSubmission\n ? submission || fetcherSubmission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher<TData = any>(key: string): Fetcher<TData> {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = matchRoutes(routesToUse, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(\n href,\n future,\n opts,\n true\n );\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename =\n stripBasename(url.pathname, init.basename || \"/\") == null;\n\n if (window.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n },\n fetcherSubmission: submission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(\n positions: Record<string, number>,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n inFlightDataRoutes = newRoutes;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let detectErrorBoundary =\n opts?.detectErrorBoundary || defaultDetectErrorBoundary;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise<StaticHandlerContext | Response> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise<any> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map<string, DeferredData>();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set<string>(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n future: FutureConfig,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n let formMethod = opts.formMethod || \"get\";\n submission = {\n formMethod: future.v7_normalizeFormMethod\n ? (formMethod.toUpperCase() as V7_FormMethod)\n : (formMethod.toLowerCase() as FormMethod),\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map<string, FetchLoadMatch>,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData\n if (!fetcherMatches) {\n revalidatingFetchers.push({ key, ...f, matches: null, match: null });\n return;\n }\n\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters<ShouldRevalidateFunction>[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record<string, any> = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to detectErrorBoundary\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `detectErrorBoundary` function to set the `hasErrorBoundary` route\n // property since the logic will differ between frameworks.\n hasErrorBoundary: detectErrorBoundary({ ...routeToUpdate }),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise<DataResult> {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, detectErrorBoundary, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, detectErrorBoundary, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n throw getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else {\n invariant<Function>(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map<string, DeferredData>\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record<string, Headers> = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map<string, DeferredData>\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore<T>(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<IndexRouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<NonIndexRouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n <LocationContext.Provider\n value={{\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location,\n },\n navigationType: NavigationType.Pop,\n }}\n >\n {renderedMatches}\n </LocationContext.Provider>\n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n <p>💿 Hey developer 👋</p>\n <p>\n You can provide a way better UX than this when your app throws errors\n by providing your own \n <code style={codeStyles}>ErrorBoundary</code> prop on \n <code style={codeStyles}><Route></code>\n </p>\n </>\n );\n }\n\n return (\n <>\n <h2>Unexpected Application Error!</h2>\n <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n {stack ? <pre style={preStyles}>{stack}</pre> : null}\n {devInfo}\n </>\n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n <RouteContext.Provider value={this.props.routeContext}>\n <RouteErrorContext.Provider\n value={this.state.error}\n children={this.props.component}\n />\n </RouteContext.Provider>\n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch<string, RouteObject>;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n <RouteContext.Provider value={routeContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n if (match.route.ErrorBoundary) {\n errorElement = <match.route.ErrorBoundary />;\n } else if (match.route.errorElement) {\n errorElement = match.route.errorElement;\n } else {\n errorElement = <DefaultErrorComponent />;\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode = outlet;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n children = <match.route.Component />;\n } else if (match.route.element) {\n children = match.route.element;\n }\n return (\n <RenderedRoute\n match={match}\n routeContext={{ outlet, matches }}\n children={children}\n />\n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n <RenderErrorBoundary\n location={dataRouterState.location}\n component={errorElement}\n error={error}\n children={getChildren()}\n routeContext={{ outlet: null, matches }}\n />\n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback<BlockerFunction>(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n // Prefer the blocker from state since DataRouterContext is memoized so this\n // ensures we update on blocker state updates\n return state.blockers.get(blockerKey) || blocker;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n let getState = React.useCallback(() => router.state, [router]);\n\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n getState,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n getState\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return (\n <>\n <DataRouterContext.Provider value={dataRouterContext}>\n <DataRouterStateContext.Provider value={state}>\n <Router\n basename={router.basename}\n location={router.state.location}\n navigationType={router.state.historyAction}\n navigator={navigator}\n >\n {router.state.initialized ? <Routes /> : fallbackElement}\n </Router>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n {null}\n </>\n );\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let dataRouterState = React.useContext(DataRouterStateContext);\n let navigate = useNavigate();\n\n React.useEffect(() => {\n // Avoid kicking off multiple navigations if we're in the middle of a\n // data-router navigation, since components get re-rendered when we enter\n // a submitting/loading state\n if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n return;\n }\n navigate(to, { replace, state, relative });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<NonIndexRouteObject>;\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<IndexRouteObject>;\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n },\n navigationType,\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (locationContext == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider children={children} value={locationContext} />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n let dataRouterContext = React.useContext(DataRouterContext);\n // When in a DataRouterContext _without_ children, we use the router routes\n // directly. If we have children, then we're in a descendant tree and we\n // need to use child routes.\n let routes =\n dataRouterContext && !children\n ? (dataRouterContext.router.routes as DataRouteObject[])\n : createRoutesFromChildren(children);\n return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n <ResolveAwait>{children}</ResolveAwait>\n </AwaitErrorBoundary>\n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return <AwaitContext.Provider value={promise} children={errorElement} />;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return <AwaitContext.Provider value={promise} children={children} />;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n let treePath = [...parentPath, index];\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary:\n element.props.ErrorBoundary != null ||\n element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n NavigateOptions,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n unstable_useBlocker as useBlocker,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_detectErrorBoundary as detectErrorBoundary,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n FutureConfig,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HTMLFormMethod,\n HydrationState,\n Router as RemixRouter,\n V7_FormMethod,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n joinPaths,\n stripBasename,\n ErrorResponse,\n UNSAFE_invariant as invariant,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n V7_FormMethod,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n unstable_Blocker,\n unstable_BlockerFunction,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LazyRouteFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n unstable_useBlocker,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n basename?: string;\n future?: FutureConfig;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: opts?.future,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n detectErrorBoundary,\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: opts?.future,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n detectErrorBoundary,\n }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors),\n };\n }\n return state;\n}\n\nfunction deserializeErrors(\n errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponse(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let { basename } = React.useContext(NavigationContext);\n\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n\n // Only check for external origins client-side\n if (isBrowser) {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\")\n ? new URL(currentUrl.protocol + to)\n : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n }\n }\n\n // Rendered into <a href> for relative URLs\n let href = useHref(to, { relative });\n\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={absoluteHref || href}\n onClick={isExternal || reloadDocument ? onClick : handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n let { navigator } = React.useContext(NavigationContext);\n\n let toPathname = navigator.encodeLocation\n ? navigator.encodeLocation(path).pathname\n : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: HTMLFormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * Prevent the scroll position from resetting to the top of the viewport on\n * completion of the navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} />;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n reloadDocument,\n replace,\n method = defaultMethod,\n action,\n onSubmit,\n fetcherKey,\n routeId,\n relative,\n preventScrollReset,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: HTMLFormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n let submitMethod =\n (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n method;\n\n submit(submitter || event.currentTarget, {\n method: submitMethod,\n replace,\n relative,\n preventScrollReset,\n });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={reloadDocument ? onSubmit : submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n FormImpl.displayName = \"FormImpl\";\n}\n\nexport interface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmitImpl = \"useSubmitImpl\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback<SetURLSearchParams>(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\ntype SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `<form>` to be submitted to the server, a specific\n * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n * arbitrary data to submit.\n *\n * Note: When using a `<button>` its `name` and `value` will also be\n * included in the form data that is submitted.\n */\n target: SubmitTarget,\n\n /**\n * Options that override the `<form>`'s own attributes. Required when\n * submitting arbitrary data without a backing `<form>`.\n */\n options?: SubmitOptions\n ): void;\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmitImpl);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n if (typeof document === \"undefined\") {\n throw new Error(\n \"You are calling submit during the server render. \" +\n \"Try calling submit within a `useEffect` or callback instead.\"\n );\n }\n\n let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n replace: options.replace,\n preventScrollReset: options.preventScrollReset,\n formData,\n formMethod: method as HTMLFormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(\n action?: string,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n let { basename } = React.useContext(NavigationContext);\n let routeContext = React.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n // Previously we set the default action to \".\". The problem with this is that\n // `useResolvedPath(\".\")` excludes search params and the hash of the resolved\n // URL. This is the intended behavior of when \".\" is specifically provided as\n // the form action, but inconsistent w/ browsers when the action is omitted.\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to these directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n // or hash\n path.search = location.search;\n path.hash = location.hash;\n\n // When grabbing search params from the URL, remove the automatically\n // inserted ?index param so we match the useResolvedPath search behavior\n // which would not include ?index\n if (match.route.index) {\n let params = new URLSearchParams(path.search);\n params.delete(\"index\");\n path.search = params.toString() ? `?${params.toString()}` : \"\";\n }\n }\n\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: (\n target: SubmitTarget,\n // Fetchers cannot replace/preventScrollReset because they are not\n // navigation events\n options?: Omit<SubmitOptions, \"replace\" | \"preventScrollReset\">\n ) => void;\n load: (href: string) => void;\n};\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>(): FetcherWithComponents<TData> {\n let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => {\n invariant(routeId, `No routeId available for fetcher.Form()`);\n return createFetcherForm(fetcherKey, routeId);\n });\n let [load] = React.useState(() => (href: string) => {\n invariant(router, \"No router available for fetcher.load()\");\n invariant(routeId, \"No routeId available for fetcher.load()\");\n router.fetch(fetcherKey, routeId, href);\n });\n let submit = useSubmitImpl(fetcherKey, routeId);\n\n let fetcher = router.getFetcher<TData>(fetcherKey);\n\n let fetcherWithComponents = React.useMemo(\n () => ({\n Form,\n submit,\n load,\n ...fetcher,\n }),\n [fetcher, Form, submit, load]\n );\n\n React.useEffect(() => {\n // Is this busted when the React team gets real weird and calls effects\n // twice on mount? We really just need to garbage collect here when this\n // fetcher is no longer around.\n return () => {\n if (!router) {\n console.warn(`No fetcher available to clean up from useFetcher()`);\n return;\n }\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n\n return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): Fetcher[] {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return [...state.fetchers.values()];\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n DataRouterStateHook.UseScrollRestoration\n );\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n\n // Save positions on pagehide\n usePageHide(\n React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches])\n );\n\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n callback: (event: BeforeUnloadEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n callback: (event: PageTransitionEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt({ when, message }: { when: boolean; message: string }) {\n let blocker = useBlocker(when);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n//#endregion\n","import type { FormEncType, HTMLFormMethod } from \"@remix-run/router\";\nimport type { RelativeRoutingType } from \"react-router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n }\n\n return searchParams;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `<form method>`.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides `<form action>`.\n * Defaults to the path of the current route.\n *\n * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL used to submit the form. Overrides `<form encType>`.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n}\n\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n\n // <button>/<input type=\"submit\"> may override attributes of <form>\n\n method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>, appending in case the button name\n // matches an existing input name\n if (target.name) {\n formData.append(target.name, target.value);\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or ` +\n `<input type=\"submit|image\">`\n );\n } else {\n method = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method: method.toLowerCase(), encType, formData };\n}\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n","// extracted by mini-css-extract-plugin\nexport default {\"page\":\"Page_page__L2Y9k\",\"inner\":\"Page_inner__NzybS\"};","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"Header_header__8RLBN\",\"wide\":\"Header_wide__x5j29\",\"container\":\"Header_container__20TPa\",\"logo\":\"Header_logo__JyHXM\",\"picDesktop\":\"Header_picDesktop__YOhLI\",\"picMobile\":\"Header_picMobile__lFHk9\",\"wrapper\":\"Header_wrapper__HTWBM\",\"theme\":\"Header_theme__5w9XU\",\"btns\":\"Header_btns__eZ7Si\",\"wrap\":\"Header_wrap__s51d2\",\"visible\":\"Header_visible__mntH4\",\"button\":\"Header_button__6MFMu\",\"nav\":\"Header_nav__si1hr\",\"item\":\"Header_item__TrQC1\",\"active\":\"Header_active__IzVUH\",\"control\":\"Header_control__M9ThF\",\"settings\":\"Header_settings__dZYDE\",\"activity\":\"Header_activity__L26e6\",\"notifications\":\"Header_notifications__5XXMQ\",\"burger\":\"Header_burger__JZCvL\",\"download\":\"Header_download__B34B8\"};","import{useRef as e,useEffect as n}from\"react\";export default function(t,r,i,o){void 0===i&&(i=global),void 0===o&&(o={});var c=e(),u=o.capture,a=o.passive,v=o.once;n(function(){c.current=r},[r]),n(function(){if(i&&i.addEventListener){var e=function(e){return c.current(e)},n={capture:u,passive:a,once:v};return i.addEventListener(t,e,n),function(){i.removeEventListener(t,e,n)}}},[t,i,u,a,v])}\n","import{useRef as e,useState as n,useEffect as t,useCallback as o}from\"react\";import r from\"@use-it/event-listener\";var l={},a=function(e,n,t){return l[e]||(l[e]={callbacks:[],value:t}),l[e].callbacks.push(n),{deregister:function(){var t=l[e].callbacks,o=t.indexOf(n);o>-1&&t.splice(o,1)},emit:function(t){l[e].value!==t&&(l[e].value=t,l[e].callbacks.forEach(function(e){n!==e&&e(t)}))}}};export default function(l,u){if(void 0===u&&(u=\"undefined\"!=typeof global&&global.localStorage?global.localStorage:\"undefined\"!=typeof globalThis&&globalThis.localStorage?globalThis.localStorage:\"undefined\"!=typeof window&&window.localStorage?window.localStorage:\"undefined\"!=typeof localStorage?localStorage:null),u){var i=function(e){return{get:function(n,t){var o=e.getItem(n);return null==o?\"function\"==typeof t?t():t:JSON.parse(o)},set:function(n,t){e.setItem(n,JSON.stringify(t))}}}(u);return function(u){return function(l,u,i){var c=i.get,f=i.set,g=e(null),s=n(function(){return c(u,l)}),d=s[0],p=s[1];r(\"storage\",function(e){if(e.key===u){var n=JSON.parse(e.newValue);d!==n&&p(n)}}),t(function(){return g.current=a(u,p,l),function(){g.current.deregister()}},[l,u]);var v=o(function(e){var n=\"function\"==typeof e?e(d):e;f(u,n),p(n),g.current.emit(e)},[d,f,u]);return[d,v]}(u,l,i)}}return n}\n","import e from\"@use-it/event-listener\";import{useState as t,useEffect as r,useCallback as n,useMemo as a}from\"react\";import o from\"use-persisted-state\";var i=function(){},u={classList:{add:i,remove:i}},d=function(e,r,n){void 0===n&&(n=global);var a=e?o(e,r):t,i=n.matchMedia?n.matchMedia(\"(prefers-color-scheme: dark)\"):{},d={addEventListener:function(e,t){return i.addListener&&i.addListener(t)},removeEventListener:function(e,t){return i.removeListener&&i.removeListener(t)}},s=\"(prefers-color-scheme: dark)\"===i.media,c=n.document&&n.document.body||u;return{usePersistedDarkModeState:a,getDefaultOnChange:function(e,t,r){return void 0===e&&(e=c),void 0===t&&(t=\"dark-mode\"),void 0===r&&(r=\"light-mode\"),function(n){e.classList.add(n?t:r),e.classList.remove(n?r:t)}},mediaQueryEventTarget:d,getInitialValue:function(e){return s?i.matches:e}}};export default function(t,o){void 0===t&&(t=!1),void 0===o&&(o={});var i=o.element,u=o.classNameDark,s=o.classNameLight,c=o.onChange,m=o.storageKey;void 0===m&&(m=\"darkMode\");var l=o.storageProvider,f=o.global,v=a(function(){return d(m,l,f)},[m,l,f]),g=v.getDefaultOnChange,h=v.mediaQueryEventTarget,L=(0,v.usePersistedDarkModeState)((0,v.getInitialValue)(t)),k=L[0],p=L[1],b=a(function(){return c||g(i,u,s)},[c,i,u,s,g]);return r(function(){b(k)},[b,k]),e(\"change\",function(e){return p(e.matches)},h),{value:k,enable:n(function(){return p(!0)},[p]),disable:n(function(){return p(!1)},[p]),toggle:n(function(){return p(function(e){return!e})},[p])}}\n","import React from \"react\";\nimport useDarkMode from \"use-dark-mode\";\n\nconst Image = ({ className, src, srcdark, srcSet, srcSetDark, alt }) => {\n const darkMode = useDarkMode(false);\n\n return (\n <img\n className={className}\n srcSet={darkMode.value ? srcSetDark : srcSet}\n src={darkMode.value ? srcdark : src}\n alt={alt}\n />\n );\n};\n\nexport default Image;\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"Dropdown_dropdown__pcVex\",\"active\":\"Dropdown_active__xJ+12\",\"head\":\"Dropdown_head__zEwrS\",\"body\":\"Dropdown_body__h4H3j\",\"link\":\"Dropdown_link__P46Lw\"};","import React from \"react\";\nimport cn from \"classnames\";\n\nconst icons = {\n \"arrow-down\":\n \"M10.805 6.529c-.26-.26-.682-.26-.943 0L8 8.391 6.138 6.529c-.26-.26-.682-.26-.943 0s-.26.682 0 .943l2.333 2.333c.26.26.682.26.943 0l2.333-2.333c.26-.26.26-.682 0-.943z\",\n \"arrow-next\":\n \"M10.39 3.765c.464-.375 1.187-.349 1.615.057l3.692 3.5a.91.91 0 0 1 0 1.357l-3.692 3.5c-.428.406-1.151.431-1.615.057s-.493-1.007-.065-1.413L12.247 9H1.143C.512 9 0 8.552 0 8s.512-1 1.143-1h11.104l-1.922-1.822c-.428-.406-.399-1.038.065-1.413z\",\n \"arrow-prev\":\n \"M5.61 12.235c-.464.375-1.187.349-1.615-.057l-3.692-3.5a.91.91 0 0 1 0-1.357l3.692-3.5c.428-.406 1.151-.431 1.615-.057s.493 1.007.065 1.413L3.753 7h11.104C15.488 7 16 7.448 16 8s-.512 1-1.143 1H3.753l1.922 1.822c.428.406.399 1.038-.065 1.413z\",\n \"arrow-right\":\n \"M6.528 5.195c-.26.26-.26.682 0 .943L8.39 8 6.528 9.862c-.26.26-.26.682 0 .943s.682.26.943 0l2.333-2.333c.26-.26.26-.682 0-.943L7.471 5.195c-.26-.26-.682-.26-.943 0z\",\n \"arrow-left\":\n \"M9.471 5.195c.26.26.26.682 0 .943L7.61 8l1.862 1.862c.26.26.26.682 0 .943s-.682.26-.943 0L6.195 8.471c-.26-.26-.26-.682 0-.943l2.333-2.333c.26-.26.682-.26.943 0z\",\n \"arrow-bottom\":\n \"M11.156 9.394c.25.271.233.692-.038.942L8.785 12.49c-.255.236-.649.236-.904 0l-2.333-2.154c-.271-.25-.287-.671-.038-.942s.672-.287.942-.038l1.214 1.121V4c0-.368.298-.667.667-.667S9 3.631 9 4v6.477l1.214-1.121c.271-.25.692-.233.942.038z\",\n \"arrow-top\":\n \"M11.157 6.607c.25-.271.233-.692-.038-.942L8.786 3.511c-.255-.236-.649-.236-.904 0L5.548 5.665c-.271.25-.287.672-.038.942s.672.287.942.038l1.215-1.121v6.477c0 .368.298.667.667.667s.667-.299.667-.667V5.523l1.214 1.121c.271.25.692.233.942-.038z\",\n arrows:\n \"M4.863 6.805c.26.26.682.26.943 0l1.862-1.862L9.53 6.805c.26.26.682.26.943 0s.26-.682 0-.943L8.139 3.529c-.26-.26-.682-.26-.943 0L4.863 5.863c-.26.26-.26.682 0 .943zm0 2.391c.26-.26.682-.26.943 0l1.862 1.862L9.53 9.197c.26-.26.682-.26.943 0s.26.682 0 .943l-2.333 2.333c-.26.26-.682.26-.943 0l-2.333-2.333c-.26-.26-.26-.682 0-.943z\",\n image:\n \"M8 1.334a28.06 28.06 0 0 1 3.639.246c1.465.193 2.588 1.317 2.782 2.782a28.06 28.06 0 0 1 .246 3.639c0 1.372-.113 2.632-.246 3.639-.193 1.464-1.317 2.588-2.782 2.782-1.007.133-2.266.246-3.639.246s-2.632-.113-3.639-.246c-1.465-.193-2.588-1.317-2.782-2.782a28.06 28.06 0 0 1-.246-3.639 28.06 28.06 0 0 1 .246-3.639c.193-1.465 1.317-2.588 2.782-2.782A28.06 28.06 0 0 1 8 1.334zm0 1.333a26.73 26.73 0 0 0-3.464.235c-.867.114-1.52.768-1.635 1.635-.127.963-.235 2.163-.235 3.464s.107 2.501.235 3.464l.031.175-.031-.177h0l-.07-.572 1.087-1.087a2 2 0 0 1 2.828 0l.114.114c.26.26.682.26.943 0L9.252 8.47a2 2 0 0 1 2.828 0l1.196 1.196-.168 1.718-1.971-1.971c-.26-.26-.682-.26-.943 0l-1.448 1.448a2 2 0 0 1-2.828 0l-.114-.114c-.26-.26-.682-.26-.943 0l-1.606 1.606c-.143-.194-.249-.417-.311-.662.189.753.801 1.305 1.591 1.409.963.127 2.163.235 3.464.235s2.501-.107 3.464-.235c.867-.114 1.52-.768 1.635-1.635.127-.963.234-2.163.234-3.464s-.107-2.501-.234-3.464c-.114-.867-.768-1.52-1.635-1.635-.963-.127-2.163-.235-3.464-.235zM6 4.665c.736 0 1.333.597 1.333 1.333S6.736 7.332 6 7.332s-1.333-.597-1.333-1.333S5.263 4.665 6 4.665z\",\n user: \"M8 .666a4 4 0 0 1 4 4c0 1.297-.618 2.45-1.575 3.181C12.531 8.776 14 10.884 14 13.335v1.333c0 .368-.298.667-.667.667s-.667-.298-.667-.667v-1.333A4.67 4.67 0 0 0 8 8.668a4.67 4.67 0 0 0-4.667 4.667v1.333c0 .368-.298.667-.667.667S2 15.036 2 14.668v-1.333c0-2.451 1.469-4.558 3.575-5.49C4.618 7.116 4 5.963 4 4.666a4 4 0 0 1 4-4zm0 1.333c-1.473 0-2.667 1.194-2.667 2.667S6.527 7.333 8 7.333s2.667-1.194 2.667-2.667S9.473 1.999 8 1.999z\",\n lightning:\n \"M9.001.308a.67.67 0 0 1 1.198.5h0l-.866 5.194h3.363a.67.67 0 0 1 .54 1.057h0l-6.237 8.637a.67.67 0 0 1-1.198-.5h0l.866-5.194H3.304a.67.67 0 0 1-.54-1.057h0zm-.585 3.087L4.608 8.668h3.633l-.657 3.94 3.808-5.273H7.759l.657-3.94z\",\n bell: \"M8.833 12.861c.368 0 .679.313.516.643-.072.146-.169.281-.289.398-.281.276-.663.431-1.061.431s-.779-.155-1.061-.431a1.47 1.47 0 0 1-.289-.398c-.163-.33.148-.643.516-.643h1.667zM8 1.667c2.982 0 5.4 2.382 5.4 5.321v4.106h.011a.59.59 0 0 1 .589.589.59.59 0 0 1-.589.589H2.589A.59.59 0 0 1 2 11.683a.59.59 0 0 1 .589-.589H2.6V6.988c0-2.939 2.418-5.321 5.4-5.321zm0 1.178c-2.32 0-4.2 1.855-4.2 4.142v4.106h8.4V6.988c0-2.288-1.88-4.142-4.2-4.142z\",\n \"theme-light\":\n \"M8 13.333c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667.298-.667.667-.667zm-4.714-1.562c.26-.26.682-.26.943 0s.26.682 0 .943-.682.26-.943 0-.26-.682 0-.943zm9.428 0c.26.26.26.682 0 .943s-.682.26-.943 0-.26-.682 0-.943.682-.26.943 0zM8 5.333c1.473 0 2.667 1.194 2.667 2.667S9.472 10.666 8 10.666 5.333 9.472 5.333 8 6.527 5.333 8 5.333zm0 1.333c-.736 0-1.333.597-1.333 1.333S7.263 9.333 8 9.333 9.333 8.736 9.333 8 8.736 6.666 8 6.666zm6 .667c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667.298-.667.667-.667zm-12 0c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667.298-.667.667-.667zm10.714-4.047c.26.26.26.682 0 .943s-.682.26-.943 0-.26-.682 0-.943.682-.26.943 0zm-9.428 0c.26-.26.682-.26.943 0s.26.682 0 .943-.682.26-.943 0-.26-.682 0-.943zM8 1.333c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667.298-.667.667-.667z\",\n \"theme-dark\":\n \"M8 12c.368 0 .667.298.667.667h0V14c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0v-1.333c0-.368.298-.667.667-.667zm-3.771-1.171c.26-.26.682-.26.943 0s.26.682 0 .943h0l-.943.943c-.26.26-.682.26-.943 0s-.26-.682 0-.943h0zm7.542 0l.943.943c.26.26.26.682 0 .943s-.682.26-.943 0l-.943-.943c-.26-.26-.26-.682 0-.943s.682-.26.943 0zM8 5.333c1.473 0 2.667 1.194 2.667 2.667S9.472 10.666 8 10.666 5.333 9.472 5.333 8 6.527 5.333 8 5.333zm0 1.333c-.736 0-1.333.597-1.333 1.333S7.263 9.333 8 9.333 9.333 8.736 9.333 8 8.736 6.666 8 6.666zm6 .667c.368 0 .667.298.667.667s-.298.667-.667.667h-1.333C12.298 8.666 12 8.368 12 8s.298-.667.667-.667H14zm-10.667 0c.368 0 .667.298.667.667s-.298.667-.667.667h0H2c-.368 0-.667-.298-.667-.667s.298-.667.667-.667h0zm9.381-4.047c.26.26.26.682 0 .943l-.943.943c-.26.26-.682.26-.943 0s-.26-.682 0-.943l.943-.943c.26-.26.682-.26.943 0zm-9.428 0c.26-.26.682-.26.943 0h0l.943.943c.26.26.26.682 0 .943s-.682.26-.943 0h0l-.943-.943c-.26-.26-.26-.682 0-.943zM8 1.333c.368 0 .667.298.667.667h0v1.333C8.666 3.701 8.368 4 8 4s-.667-.298-.667-.667h0V2c0-.368.298-.667.667-.667z\",\n share:\n \"M10.702 6.063l1.279.098c.99.104 1.779.806 1.898 1.843.068.591.122 1.444.122 2.663l-.122 2.663c-.118 1.036-.906 1.739-1.896 1.843-.787.083-2.042.161-3.982.161s-3.195-.078-3.982-.161c-.99-.104-1.778-.807-1.896-1.843C2.054 12.739 2 11.886 2 10.667l.122-2.663c.119-1.037.908-1.739 1.897-1.843l1.279-.098c.368-.02.682.263.701.63s-.263.682-.63.701l-1.21.092c-.417.044-.671.3-.713.669-.06.529-.113 1.33-.113 2.511l.113 2.511c.042.369.295.625.711.669C4.887 13.924 6.093 14 8 14l3.842-.154c.416-.044.669-.299.711-.669.06-.529.113-1.33.113-2.511l-.113-2.511c-.042-.369-.296-.625-.713-.669l-1.21-.092c-.368-.02-.65-.334-.63-.701s.334-.65.701-.63zM8.471.862l2.333 2.333c.26.26.26.682 0 .943s-.682.26-.943 0L8.667 2.943v6.391c0 .368-.298.667-.667.667s-.667-.298-.667-.667V2.943L6.138 4.138c-.26.26-.682.26-.943 0s-.26-.682 0-.943L7.529.862c.26-.26.682-.26.943 0z\",\n lock: \"M7.999.668c1.841 0 3.333 1.492 3.333 3.333l-.001 2.113.023.003a2.92 2.92 0 0 1 2.571 2.703L14 10.667l-.074 1.847a2.92 2.92 0 0 1-2.747 2.719l-3.179.1a50.36 50.36 0 0 1-3.179-.1 2.92 2.92 0 0 1-2.747-2.719L2 10.667l.074-1.847a2.92 2.92 0 0 1 2.592-2.705V4.001C4.666 2.16 6.158.668 7.999.668zM8 7.333l-3.094.098c-.816.052-1.443.674-1.502 1.484l-.071 1.751.071 1.751c.059.81.686 1.432 1.502 1.484L8 14l3.094-.098c.816-.052 1.443-.674 1.502-1.484l.071-1.751-.071-1.751c-.059-.81-.686-1.432-1.502-1.484L8 7.333zm-.001 1.335c.736 0 1.333.597 1.333 1.333 0 .494-.268.924-.667 1.155h0v.845c0 .368-.298.667-.667.667s-.667-.299-.667-.667h0v-.845c-.399-.231-.667-.662-.667-1.155 0-.736.597-1.333 1.333-1.333zm0-6.667a2 2 0 0 0-2 2L5.998 6.04 8 6l2.001.04-.002-2.038a2 2 0 0 0-2-2z\",\n exit: \"M10.667 2l2.663.122c1.036.118 1.739.906 1.843 1.896.083.787.161 2.042.161 3.982l-.161 3.982c-.104.99-.807 1.778-1.843 1.896-.591.068-1.444.122-2.663.122s-2.072-.054-2.663-.122c-1.037-.119-1.739-.908-1.843-1.898l-.098-1.279c-.02-.368.263-.682.63-.701s.682.263.701.63l.092 1.21c.044.417.3.671.669.713.529.06 1.33.113 2.511.113l2.511-.113c.369-.042.625-.295.669-.711C13.924 11.113 14 9.907 14 8l-.154-3.842c-.044-.416-.299-.669-.669-.711-.529-.06-1.33-.113-2.511-.113l-2.511.113c-.369.042-.625.296-.669.713l-.092 1.21c-.02.368-.334.65-.701.63s-.65-.334-.63-.701l.098-1.279c.104-.99.806-1.779 1.843-1.897C8.595 2.054 9.448 2 10.667 2zM4.138 5.195c.26.26.26.682 0 .943L2.943 7.333h6.391c.368 0 .667.298.667.667s-.298.667-.667.667H2.943l1.195 1.195c.26.26.26.682 0 .943s-.682.26-.943 0L.862 8.471c-.26-.26-.26-.682 0-.943l2.333-2.333c.26-.26.682-.26.943 0z\",\n cog: \"M8 1.334c.499 0 .956.183 1.307.486l.126.119.115.129c.146.178.262.382.34.604a1.99 1.99 0 0 1 .081.308c.007.041.034.075.073.091s.082.01.116-.013c.088-.062.18-.115.275-.161a2 2 0 0 1 .668-.187l.173-.01.173.005a1.99 1.99 0 0 1 1.267.58c.397.397.593.92.586 1.441a2 2 0 0 1-.197.84 1.99 1.99 0 0 1-.161.275c-.024.034-.029.078-.013.116s.051.065.091.073c.106.019.209.046.308.081a2 2 0 0 1 .605.34l.129.115.119.126a1.99 1.99 0 0 1 .486 1.307c0 .499-.183.956-.486 1.307l-.119.126-.129.115c-.178.146-.382.262-.604.34a1.99 1.99 0 0 1-.308.081c-.041.007-.076.034-.091.073s-.01.082.013.116a1.99 1.99 0 0 1 .161.275 2 2 0 0 1 .187.668l.01.172-.005.173a1.99 1.99 0 0 1-.58 1.268c-.353.353-.806.547-1.268.58l-.174.005-.172-.01c-.229-.023-.455-.085-.667-.187-.095-.046-.187-.099-.275-.161-.034-.024-.078-.029-.116-.013s-.065.051-.073.091a1.98 1.98 0 0 1-.081.308 2 2 0 0 1-.34.605l-.115.129-.126.119A1.99 1.99 0 0 1 8 14.667c-.499 0-.957-.183-1.307-.486l-.126-.119-.115-.129c-.146-.178-.262-.382-.34-.604-.035-.099-.062-.202-.081-.308-.007-.041-.034-.076-.073-.091s-.082-.01-.116.013a1.98 1.98 0 0 1-.275.161 2 2 0 0 1-.668.187l-.172.01-.173-.005c-.462-.034-.914-.227-1.268-.58s-.547-.806-.58-1.268l-.005-.174.01-.172c.023-.229.085-.455.187-.667a1.99 1.99 0 0 1 .161-.275c.024-.034.029-.078.013-.116s-.051-.065-.091-.073a1.99 1.99 0 0 1-.308-.081 2 2 0 0 1-.605-.34l-.129-.115-.119-.126a1.99 1.99 0 0 1-.486-1.307c0-.499.183-.957.486-1.307l.119-.126.129-.115c.178-.146.382-.262.604-.34.099-.035.202-.062.308-.081.041-.007.075-.034.091-.073s.01-.082-.013-.116c-.062-.088-.115-.18-.161-.275A2 2 0 0 1 2.71 4.9l-.01-.172.005-.173a1.99 1.99 0 0 1 .58-1.268c.353-.353.806-.547 1.268-.58l.174-.005.172.01c.229.023.455.085.667.187.095.046.187.099.275.161.034.024.078.029.116.013s.065-.051.073-.091c.019-.106.046-.209.081-.308a2 2 0 0 1 .34-.605l.115-.129.126-.119A1.99 1.99 0 0 1 8 1.334zm0 1.333c-.327 0-.601.236-.656.547-.084.473-.402.893-.875 1.089s-.996.123-1.389-.151c-.259-.181-.62-.154-.851.077s-.258.592-.077.851c.274.393.348.916.151 1.389s-.616.79-1.089.875c-.311.055-.547.33-.547.656s.236.601.547.656c.473.084.893.402 1.089.875s.123.996-.151 1.389c-.181.259-.154.62.077.851s.592.258.851.077c.393-.274.916-.348 1.389-.151s.79.616.875 1.089c.055.311.33.547.656.547s.601-.236.656-.547c.084-.473.402-.893.874-1.089s.996-.123 1.389.151c.259.181.62.154.851-.077s.258-.592.077-.851c-.274-.393-.348-.916-.151-1.389s.616-.79 1.089-.875c.311-.055.547-.33.547-.656s-.236-.601-.547-.656c-.473-.084-.893-.402-1.089-.875s-.123-.996.151-1.389c.181-.259.154-.62-.077-.851s-.592-.258-.851-.077c-.393.274-.916.348-1.389.151s-.79-.616-.874-1.089c-.055-.311-.33-.547-.656-.547zm0 2.667c1.473 0 2.667 1.194 2.667 2.667S9.472 10.667 8 10.667 5.333 9.473 5.333 8.001 6.527 5.334 8 5.334zm0 1.333c-.736 0-1.333.597-1.333 1.333S7.263 9.334 8 9.334s1.333-.597 1.333-1.333S8.736 6.667 8 6.667z\",\n instagram:\n \"M11.2 0A4.8 4.8 0 0 1 16 4.8h0v6.4a4.8 4.8 0 0 1-4.8 4.8h0-6.4A4.8 4.8 0 0 1 0 11.2h0V4.8A4.8 4.8 0 0 1 4.8 0h0zm0 1.6H4.8a3.2 3.2 0 0 0-3.2 3.2v6.4a3.2 3.2 0 0 0 3.2 3.2h6.4a3.2 3.2 0 0 0 3.2-3.2V4.8a3.2 3.2 0 0 0-3.2-3.2zM8 4a4 4 0 1 1 0 8 4 4 0 1 1 0-8zm0 1.6a2.4 2.4 0 0 0 0 4.8 2.4 2.4 0 0 0 0-4.8zm4-2.4a.8.8 0 1 1 0 1.6.8.8 0 1 1 0-1.6z\",\n facebook:\n \"M7.967.017a8 8 0 1 1 0 16 8 8 0 1 1 0-16zm0 1.6a6.4 6.4 0 0 0-6.4 6.4c0 2.982 2.039 5.487 4.799 6.198l.001-4.598h-.8a.8.8 0 1 1 0-1.6h.8v-1.6a2.4 2.4 0 0 1 2.4-2.4h.8a.8.8 0 1 1 0 1.6h0-.8a.8.8 0 0 0-.8.8h0v1.6h1.6a.8.8 0 1 1 0 1.6h0-1.6v4.8a6.4 6.4 0 0 0 0-12.8z\",\n twitter:\n \"M2.121 9.233C1.018 9.236.306 10.492.986 11.444c.973 1.363 2.737 2.456 5.681 2.456 4.563 0 8.226-3.719 7.714-8.113l.751-1.503c.521-1.042-.384-2.227-1.527-1.999l-.993.198c-.263-.139-.535-.244-.768-.32-.454-.148-1.003-.265-1.511-.265-.913 0-1.701.234-2.327.704-.619.464-.968 1.075-1.159 1.635-.088.258-.147.518-.185.766-.354-.111-.715-.261-1.069-.445-.802-.415-1.451-.942-1.817-1.404-.614-.775-1.915-.717-2.371.29-.643 1.42-.467 3.102.111 4.462a6.57 6.57 0 0 0 .754 1.324l-.151.001zm4.546 3.333c-2.576 0-3.907-.933-4.596-1.898-.031-.043 0-.102.054-.103.701-.002 2.139-.035 3.087-.59.049-.029.038-.101-.016-.119-2.211-.743-3.467-3.891-2.575-5.86.02-.045.081-.051.112-.012C3.752 5.271 5.98 6.531 7.919 6.566c.042.001.074-.037.067-.079-.078-.507-.376-3.254 2.347-3.254.65 0 1.618.317 1.974.642a.07.07 0 0 0 .061.017l1.498-.3c.054-.011.098.046.073.095l-.929 1.858c-.006.013-.008.028-.006.042.651 3.658-2.345 6.978-6.337 6.978z\",\n dribbble:\n \"M8 0a7.97 7.97 0 0 1 5.441 2.135h0l.012.011.191.184-.203-.195.251.244.391.425.058.069.122.15.07.09a7.96 7.96 0 0 1 1.606 3.903l.021.186.002.015.01.111-.012-.127.024.299L16 8l-.004.249L16 8l-.025.632-.013.149-.002.02c-.248 2.499-1.647 4.659-3.658 5.945l-.017.011-.028.018-.236.143.264-.161-.307.186-.531.279-.114.053-.211.093-.034.014C10.138 15.78 9.095 16 8 16c-1.715 0-3.304-.54-4.606-1.458h0l-.033-.024-.468-.36-.025-.021-.186-.161-.062-.056-.414-.405-.024-.025C.829 12.057 0 10.125 0 8l.005-.297L0 7.993l.011-.415.013-.199.007-.09.02-.203.019-.156.027-.186.016-.1.04-.216.008-.037C.643 4.036 2.157 2.059 4.21.953l-.266.15.301-.169.27-.137.088-.042.154-.07.124-.054.536-.205.031-.011C6.25.146 7.108 0 8 0zm1.356 9.906c-1.362.66-2.858 1.732-4.775 3.502A6.35 6.35 0 0 0 8 14.4a6.38 6.38 0 0 0 2.504-.508 24.45 24.45 0 0 0-1.148-3.985zm4.991-1.08l-.04.001c-1.289.046-2.38.169-3.462.495a25.99 25.99 0 0 1 1.113 3.706 6.39 6.39 0 0 0 2.389-4.202zM7.942 6.86c-1.85.583-3.914.939-6.34 1.076A.85.85 0 0 0 1.6 8c0 1.695.659 3.237 1.735 4.382 2.086-1.945 3.78-3.18 5.397-3.951L7.942 6.86zm5.266-2.581l-.147.101c-1.136.761-2.314 1.406-3.597 1.931l.759 1.53c1.34-.425 2.665-.568 4.129-.616a6.34 6.34 0 0 0-1.144-2.946zM4.958 2.37l-.126.068c-1.459.833-2.558 2.223-3.009 3.88 2.028-.132 3.752-.426 5.288-.878-.639-1.026-1.357-2.042-2.153-3.07zM8 1.6a6.42 6.42 0 0 0-1.485.173l2.147 3.135c1.224-.484 2.349-1.087 3.444-1.816C10.995 2.16 9.563 1.6 8 1.6z\",\n behance:\n \"M12.667 5.367C14.508 5.367 16 6.86 16 8.701v.667c0 .368-.298.667-.667.667h-4.667a2 2 0 0 0 2 2 1.99 1.99 0 0 0 1.233-.425c.177-.139.387-.242.612-.242.571 0 .937.59.537.998-.605.618-1.449 1.002-2.382 1.002-1.841 0-3.333-1.492-3.333-3.333V8.701c0-1.841 1.492-3.333 3.333-3.333zm-8-2.667c1.473 0 2.667 1.194 2.667 2.667a2.66 2.66 0 0 1-.8 1.905A3.33 3.33 0 0 1 8 10.033c0 1.841-1.492 3.333-3.333 3.333h0-3.524C.512 13.367 0 12.855 0 12.224h0V3.767C0 3.178.478 2.7 1.067 2.7h0zm0 5.333H1.333v4h3.333a2 2 0 0 0 0-4zm8-1.333a2 2 0 0 0-2 2h4a2 2 0 0 0-2-2zm-8-2.667H1.333V6.7h3.333C5.403 6.7 6 6.103 6 5.367s-.597-1.333-1.333-1.333zM14 2.7c.368 0 .667.298.667.667s-.298.667-.667.667h0-2.667c-.368 0-.667-.298-.667-.667s.298-.667.667-.667h0z\",\n linkedin:\n \"M12.8.001a3.2 3.2 0 0 1 3.2 3.2h0v9.6a3.2 3.2 0 0 1-3.2 3.2h0-9.6a3.2 3.2 0 0 1-3.2-3.2h0v-9.6a3.2 3.2 0 0 1 3.2-3.2h0zm0 1.6H3.2a1.6 1.6 0 0 0-1.6 1.6v9.6a1.6 1.6 0 0 0 1.6 1.6h9.6a1.6 1.6 0 0 0 1.6-1.6v-9.6a1.6 1.6 0 0 0-1.6-1.6zM4 6.401a.8.8 0 0 1 .8.8h0v4.8a.8.8 0 0 1-1.6 0h0v-4.8a.8.8 0 0 1 .8-.8zm5.6 0a3.2 3.2 0 0 1 3.2 3.2v2.4a.8.8 0 1 1-1.6 0v-2.4a1.6 1.6 0 0 0-3.2 0v2.4a.8.8 0 0 1-1.6 0v-4.8a.8.8 0 0 1 1.529-.33c.486-.298 1.059-.47 1.671-.47zM4 3.201a.8.8 0 0 1 0 1.6.8.8 0 0 1 0-1.6z\",\n play: \"M1.509 2.463c0-1.71 1.876-2.755 3.33-1.855l8.945 5.538c1.378.853 1.378 2.857 0 3.711l-8.945 5.538c-1.454.899-3.33-.147-3.33-1.856V2.463z\",\n coin: \"M8 1.334a6.67 6.67 0 0 1 6.667 6.667A6.67 6.67 0 0 1 8 14.667a6.67 6.67 0 0 1-6.667-6.667A6.67 6.67 0 0 1 8 1.334zm0 1.333c-2.946 0-5.333 2.388-5.333 5.333S5.054 13.334 8 13.334s5.333-2.388 5.333-5.333S10.945 2.667 8 2.667zm0 1.333c.368 0 .667.298.667.667a2 2 0 0 1 2 2c0 .368-.298.667-.667.667s-.667-.298-.667-.667-.298-.667-.667-.667H7.162c-.274 0-.496.222-.496.496 0 .213.137.403.339.47l2.411.804a1.83 1.83 0 0 1-.578 3.564h-.171c0 .368-.298.667-.667.667s-.667-.298-.667-.667a2 2 0 0 1-2-2c0-.368.298-.667.667-.667s.667.298.667.667.298.667.667.667h1.504c.274 0 .496-.222.496-.496 0-.213-.136-.403-.339-.47l-2.411-.804a1.83 1.83 0 0 1 .578-3.564h.171c0-.368.298-.667.667-.667z\",\n star: \"M9.69 1.529l1.442 2.838 3.238.457c1.517.214 2.211 2.086 1.041 3.192l-2.326 2.198.547 3.098c.28 1.587-1.404 2.653-2.73 1.977L8 13.809l-2.903 1.481c-1.328.678-3.011-.391-2.731-1.976l.547-3.098L.588 8.017C-.582 6.91.114 5.038 1.628 4.824l3.239-.457L6.31 1.529c.697-1.371 2.683-1.372 3.38 0z\",\n \"star-outline\":\n \"M6.339 2.517c.616-1.475 2.706-1.475 3.322 0h0l1.017 2.437 2.639.211c1.598.128 2.245 2.123 1.025 3.164h0l-2.006 1.711.613 2.56c.373 1.556-1.319 2.789-2.686 1.957h0L8 13.179l-2.264 1.377c-1.367.832-3.059-.401-2.686-1.957h0l.613-2.56-2.006-1.711C.438 7.288 1.084 5.292 2.682 5.165h0l2.639-.211zm1.23.514L6.348 5.956c-.067.161-.219.271-.393.285l-3.166.253a.47.47 0 0 0-.266.82l2.41 2.056c.133.114.192.293.151.464l-.737 3.076a.47.47 0 0 0 .696.507l2.714-1.651c.149-.091.336-.091.485 0l2.714 1.651a.47.47 0 0 0 .696-.507l-.737-3.076c-.041-.171.017-.35.151-.464l2.41-2.056a.47.47 0 0 0-.266-.82l-3.166-.253c-.174-.014-.326-.124-.393-.285L8.43 3.031a.47.47 0 0 0-.861 0z\",\n chart:\n \"M1.339 2c.368 0 .667.298.667.667V12c0 .368.298.667.667.667h12c.368 0 .667.298.667.667s-.298.667-.667.667h-12a2 2 0 0 1-2-2V2.667C.672 2.298.97 2 1.339 2zm10.667 1.334c.368 0 .667.298.667.667h0v6.667c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V4c0-.368.298-.667.667-.667zM6.673 4.667c.368 0 .667.298.667.667h0v5.333c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V5.334c0-.368.298-.667.667-.667zm-2.667 4c.368 0 .667.298.667.667h0v1.333c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V9.334c0-.368.298-.667.667-.667zM9.339 6c.368 0 .667.298.667.667v4c0 .368-.298.667-.667.667s-.667-.298-.667-.667v-4c0-.368.298-.667.667-.667z\",\n search:\n \"M6.667 1.334c2.945 0 5.333 2.388 5.333 5.333a5.31 5.31 0 0 1-1.12 3.27l3.592 3.592c.26.26.26.682 0 .943s-.682.26-.943 0l-3.591-3.592a5.31 5.31 0 0 1-3.27 1.12c-2.946 0-5.333-2.388-5.333-5.333s2.388-5.333 5.333-5.333zm0 1.333a4 4 0 1 0 0 8 4 4 0 1 0 0-8z\",\n \"full-screen\":\n \"M8 1.333a28.06 28.06 0 0 1 3.639.246c1.465.193 2.588 1.317 2.782 2.782.133 1.007.246 2.266.246 3.639s-.113 2.632-.246 3.639c-.193 1.465-1.317 2.588-2.782 2.782-1.007.133-2.266.246-3.639.246s-2.632-.113-3.639-.246c-1.465-.193-2.588-1.317-2.782-2.782A28.06 28.06 0 0 1 1.333 8a28.06 28.06 0 0 1 .246-3.639c.193-1.465 1.317-2.588 2.782-2.782A28.06 28.06 0 0 1 8 1.333zm-4.667 8c-.368 0-.667.298-.667.667h0v1.333a2 2 0 0 0 2 2h0H6c.368 0 .667-.298.667-.667S6.368 12 6 12h0-1.333C4.298 12 4 11.701 4 11.333h0V10c0-.368-.298-.667-.667-.667zm9.333 0c-.368 0-.667.298-.667.667h0v1.333c0 .368-.298.667-.667.667h0H10c-.368 0-.667.298-.667.667s.298.667.667.667h0 1.333a2 2 0 0 0 2-2h0V10c0-.368-.298-.667-.667-.667zM6 2.666H4.666a2 2 0 0 0-2 2V6c0 .368.298.667.667.667S4 6.368 4 6V4.666C4 4.298 4.298 4 4.666 4H6c.368 0 .667-.298.667-.667S6.368 2.666 6 2.666zm5.333 0H10c-.368 0-.667.298-.667.667S9.631 4 10 4h1.333c.368 0 .667.298.667.667V6c0 .368.298.667.667.667s.667-.298.667-.667V4.666a2 2 0 0 0-2-2z\",\n volume:\n \"M10.667 2.667c-.368 0-.667.298-.667.667s.298.667.667.667a4 4 0 1 1 0 8c-.368 0-.667.298-.667.667s.298.667.667.667C13.612 13.334 16 10.946 16 8s-2.388-5.333-5.333-5.333zm0 2.667c-.368 0-.667.298-.667.667s.298.667.667.667A1.33 1.33 0 0 1 12 8c0 .736-.597 1.333-1.333 1.333-.368 0-.667.298-.667.667s.298.667.667.667A2.67 2.67 0 0 0 13.334 8a2.67 2.67 0 0 0-2.667-2.667zM3.333 6l3.088-2.895c.852-.798 2.245-.195 2.245.973v7.845c0 1.167-1.394 1.771-2.245.973L3.333 10h-2C.597 10 0 9.403 0 8.667V7.334C0 6.597.597 6 1.333 6h2z\",\n heart:\n \"M11 2.112c2.393 0 4.333 1.94 4.333 4.333 0 4.245-4.647 6.59-6.542 7.37-.511.21-1.071.21-1.582 0-1.896-.78-6.543-3.124-6.543-7.37 0-2.393 1.94-4.333 4.333-4.333a4.32 4.32 0 0 1 3 1.206 4.32 4.32 0 0 1 3-1.206zm0 1.333c-.807 0-1.537.317-2.077.835l-.462.443c-.258.248-.665.248-.923 0l-.462-.443c-.54-.518-1.27-.835-2.077-.835a3 3 0 0 0-3 3c0 1.588.86 2.9 2.101 3.978s2.728 1.794 3.615 2.159a.73.73 0 0 0 .567 0c.888-.365 2.373-1.08 3.615-2.159S14 8.034 14 6.445a3 3 0 0 0-3-3z\",\n \"heart-fill\":\n \"M8 3.339a4.32 4.32 0 0 0-3-1.206c-2.393 0-4.333 1.94-4.333 4.333 0 4.246 4.647 6.59 6.543 7.37.511.21 1.071.21 1.582 0 1.896-.78 6.543-3.124 6.543-7.37 0-2.393-1.94-4.333-4.333-4.333a4.32 4.32 0 0 0-3 1.206z\",\n wallet:\n \"M12.667 2c1.416 0 2.574 1.104 2.661 2.498l.005.169v6.667c0 1.416-1.104 2.574-2.498 2.661l-.169.005H3.334C1.918 14 .759 12.896.672 11.502l-.005-.169V4.667c0-1.416 1.104-2.574 2.498-2.661L3.334 2h9.333zm0 1.333H3.334C2.597 3.333 2 3.93 2 4.667v6.667c0 .736.597 1.333 1.333 1.333h9.333c.736 0 1.333-.597 1.333-1.333h-2c-1.841 0-3.333-1.492-3.333-3.333S10.159 4.667 12 4.667h2c0-.736-.597-1.333-1.333-1.333zM14 6h-2a2 2 0 0 0 0 4h2V6zm-2 1.333c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667.298-.667.667-.667z\",\n candlesticks:\n \"M8 4.667c.368 0 .667.298.667.667h0l.001 1.448a2 2 0 0 1 1.326 1.736l.005.149v2a2 2 0 0 1-1.332 1.886l-.001.781c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0v-.781a2 2 0 0 1-1.327-1.737L6 10.667v-2a2 2 0 0 1 1.333-1.886V5.333c0-.368.298-.667.667-.667zM2.667 2c.368 0 .667.298.667.667h0v.781a2 2 0 0 1 1.327 1.737l.005.149v1.333a2 2 0 0 1-1.333 1.886V12c0 .368-.298.667-.667.667S2 12.368 2 12h0V8.553A2 2 0 0 1 .672 6.816l-.005-.149V5.333A2 2 0 0 1 2 3.447v-.781C2 2.298 2.299 2 2.667 2zm10.667 0c.368 0 .667.298.667.667h0v.781a2 2 0 0 1 1.327 1.737l.005.149v3.333a2 2 0 0 1-1.333 1.886V12c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0v-1.447a2 2 0 0 1-1.327-1.737l-.005-.149V5.333a2 2 0 0 1 1.333-1.886v-.781c0-.368.298-.667.667-.667zM8 8c-.368 0-.667.298-.667.667v2c0 .368.298.667.667.667s.667-.298.667-.667v-2C8.667 8.298 8.369 8 8 8zm5.333-3.333c-.368 0-.667.298-.667.667v3.333c0 .368.298.667.667.667S14 9.035 14 8.667V5.333c0-.368-.298-.667-.667-.667zm-10.667 0c-.368 0-.667.298-.667.667v1.333c0 .368.298.667.667.667s.667-.298.667-.667V5.333c0-.368-.298-.667-.667-.667z\",\n eye: \"M8 2.667c3.351 0 5.649 2.106 6.895 3.671.784.985.784 2.34 0 3.325-1.246 1.565-3.544 3.671-6.895 3.671S2.35 11.228 1.105 9.663c-.784-.985-.784-2.34 0-3.325C2.35 4.773 4.649 2.667 8 2.667zM8 4c-2.75 0-4.706 1.728-5.852 3.168a1.31 1.31 0 0 0 0 1.665C3.294 10.272 5.249 12 8 12s4.706-1.728 5.851-3.168a1.31 1.31 0 0 0 0-1.665C12.706 5.729 10.75 4 8 4zm0 1.333c1.473 0 2.667 1.194 2.667 2.667S9.473 10.667 8 10.667 5.333 9.473 5.333 8 6.527 5.334 8 5.334zm0 1.333l-.056.001A1 1 0 0 1 7 8a1 1 0 0 1-.332-.057L6.667 8c0 .736.597 1.333 1.333 1.333S9.333 8.737 9.333 8 8.736 6.667 8 6.667z\",\n google:\n \"M14.899 6.789H8.536v2.728h3.607c-.577 1.818-2.001 2.424-3.636 2.424a3.94 3.94 0 0 1-3.23-1.677A3.94 3.94 0 0 1 4.8 6.655a3.94 3.94 0 0 1 2.683-2.459 3.94 3.94 0 0 1 3.553.789l1.982-1.887c-.798-.735-1.764-1.264-2.812-1.542s-2.15-.295-3.207-.05-2.039.743-2.859 1.453-1.455 1.609-1.85 2.62-.536 2.103-.412 3.181.508 2.109 1.121 3.005 1.435 1.628 2.395 2.134 2.029.77 3.114.769c3.676 0 7-2.424 6.392-7.879z\",\n apple:\n \"M7.56 4.975c-.331-.148-.687-.308-1.282-.308C4.056 4.668 3.5 6.89 3.5 9.112s1.667 5 2.778 5c.651 0 1.111-.191 1.492-.349.27-.112.5-.207.73-.207s.46.095.73.207c.381.158.841.349 1.492.349.793 0 1.869-1.415 2.42-3.034.056-.163-.058-.331-.224-.376-.945-.255-1.641-1.119-1.641-2.145 0-.968.619-1.792 1.484-2.097.164-.058.265-.238.188-.393-.416-.839-1.112-1.399-2.227-1.399-.595 0-.952.16-1.282.308-.286.128-.553.248-.94.248s-.654-.12-.94-.248zm.94-1.002c0-1.151.933-2.083 2.083-2.083.077 0 .139.062.139.139 0 1.151-.933 2.083-2.083 2.083-.077 0-.139-.062-.139-.139z\",\n email:\n \"M13.334 2a2 2 0 0 1 1.995 1.851l.005.149v8a2 2 0 0 1-1.851 1.995l-.149.005H2.667a2 2 0 0 1-1.995-1.851L.667 12V4a2 2 0 0 1 1.851-1.995L2.667 2h10.667zm0 1.333H2.667C2.299 3.333 2 3.632 2 4v8c0 .368.298.667.667.667h10.667c.368 0 .667-.298.667-.667V4c0-.368-.298-.667-.667-.667zm-.821 1.573c.236.283.198.703-.085.939L9.281 8.468a2 2 0 0 1-2.561 0L3.574 5.845c-.283-.236-.321-.656-.085-.939s.656-.321.939-.085l3.146 2.622c.247.206.606.206.854 0l3.146-2.622c.283-.236.703-.197.939.085z\",\n calendar:\n \"M11.333 1.333c.335 0 .612.247.659.568L12 2l-.001.666h.667a2 2 0 0 1 1.995 1.851l.005.149v8a2 2 0 0 1-1.851 1.995l-.149.005H3.333a2 2 0 0 1-1.995-1.851l-.005-.149v-8a2 2 0 0 1 1.851-1.995l.149-.005h.666L4 2c0-.368.298-.667.667-.667.335 0 .612.247.659.568L5.333 2l-.001.666h5.334V2c0-.368.298-.667.667-.667zM12.666 4l-.667-.001.001.667c0 .368-.298.667-.667.667-.335 0-.612-.247-.659-.568l-.007-.099v-.667H5.332l.001.667c0 .368-.298.667-.667.667-.335 0-.612-.247-.659-.568L4 4.666l-.001-.667L3.333 4c-.368 0-.667.298-.667.667v8c0 .368.298.667.667.667h9.333c.368 0 .667-.298.667-.667v-8c0-.368-.298-.667-.667-.667zm-4 6.667c.368 0 .667.298.667.667 0 .335-.247.612-.568.659L8.666 12h-4C4.298 12 4 11.701 4 11.333c0-.335.247-.612.568-.659l.099-.007h4zM11.333 8c.368 0 .667.298.667.667 0 .335-.247.612-.568.659l-.099.007H6.666c-.368 0-.667-.298-.667-.667 0-.335.247-.612.568-.659L6.666 8h4.667z\",\n keyboard:\n \"M13.333 2.667c1.416 0 2.574 1.104 2.661 2.498l.005.169v5.333c0 1.416-1.104 2.574-2.498 2.661l-.169.005H2.667c-1.416 0-2.574-1.104-2.661-2.498L0 10.667V5.334c0-1.416 1.104-2.574 2.498-2.661l.169-.005h10.667zm0 1.333H2.667c-.736 0-1.333.597-1.333 1.333v5.333c0 .736.597 1.333 1.333 1.333h10.667c.736 0 1.333-.597 1.333-1.333V5.334c0-.736-.597-1.333-1.333-1.333zm-10 4.667c.368 0 .667.298.667.667S3.702 10 3.333 10s-.667-.298-.667-.667.298-.667.667-.667zm6.667 0c.368 0 .667.298.667.667S10.368 10 10 10H6c-.368 0-.667-.298-.667-.667s.298-.667.667-.667h4zm2.667 0c.368 0 .667.298.667.667s-.298.667-.667.667S12 9.702 12 9.334s.298-.667.667-.667zm0-2.667c.368 0 .667.298.667.667s-.298.667-.667.667h-1.333c-.368 0-.667-.298-.667-.667S10.965 6 11.333 6h1.333zm-4 0c.368 0 .667.298.667.667s-.298.667-.667.667S8 7.035 8 6.667 8.298 6 8.667 6zM6 6c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667S5.632 6 6 6zM3.333 6c.368 0 .667.298.667.667s-.298.667-.667.667-.667-.298-.667-.667S2.965 6 3.333 6z\",\n barcode:\n \"M15.333 9.334c.368 0 .667.298.667.667h0v1.333a2 2 0 0 1-2 2h0-1.333c-.368 0-.667-.298-.667-.667s.298-.667.667-.667h0H14c.368 0 .667-.298.667-.667h0V10c0-.368.298-.667.667-.667zm-14.667 0c.368 0 .667.298.667.667v1.333c0 .368.298.667.667.667h1.333c.368 0 .667.298.667.667s-.298.667-.667.667H2a2 2 0 0 1-2-2V10c0-.368.298-.667.667-.667zm2.667-4c.368 0 .667.298.667.667h0v4c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V6c0-.368.298-.667.667-.667zm9.333 0c.368 0 .667.298.667.667h0v4c0 .368-.298.667-.667.667h0H12c-.368 0-.667-.298-.667-.667h0V6c0-.368.298-.667.667-.667h0zm-6 0c.368 0 .667.298.667.667v4c0 .368-.298.667-.667.667H6c-.368 0-.667-.298-.667-.667V6c0-.368.298-.667.667-.667h.667zm2.667 0c.368 0 .667.298.667.667h0v4c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V6c0-.368.298-.667.667-.667zm-6-2.667c.368 0 .667.298.667.667S3.702 4 3.333 4h0H2c-.368 0-.667.298-.667.667h0V6c0 .368-.298.667-.667.667S0 6.369 0 6h0V4.667a2 2 0 0 1 2-2h0zm10.667 0a2 2 0 0 1 2 2h0V6c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V4.667c0-.368-.298-.667-.667-.667h0-1.333C12.298 4 12 3.702 12 3.334s.298-.667.667-.667h0z\",\n laptop:\n \"M12 2a2 2 0 0 1 1.995 1.851L14 4v6h.667c.335 0 .612.247.659.568l.007.099V12a2 2 0 0 1-1.851 1.995l-.149.005H2.667a2 2 0 0 1-1.995-1.851L.667 12v-1.333c0-.335.247-.612.568-.659L1.334 10H2V4a2 2 0 0 1 1.851-1.995L4 2h8zm2 9.333H2V12c0 .368.298.667.667.667h10.667c.368 0 .667-.298.667-.667v-.667zm-2-8H4c-.368 0-.667.298-.667.667v6h9.333V4c0-.368-.298-.667-.667-.667z\",\n plus: \"M8.667 4.667C8.667 4.298 8.368 4 8 4s-.667.298-.667.667v2.667H4.667C4.298 7.333 4 7.632 4 8s.298.667.667.667h2.667v2.667c0 .368.298.667.667.667s.667-.298.667-.667V8.667h2.667c.368 0 .667-.298.667-.667s-.298-.667-.667-.667H8.667V4.667z\",\n close:\n \"M3.528 3.528c.26-.26.682-.26.943 0L8 7.057l3.529-3.529c.26-.26.682-.26.943 0s.26.682 0 .943L8.942 8l3.529 3.529c.26.26.26.682 0 .943s-.682.26-.943 0L8 8.942l-3.529 3.529c-.26.26-.682.26-.943 0s-.26-.682 0-.943L7.057 8 3.528 4.471c-.26-.26-.26-.682 0-.943z\",\n \"close-circle\":\n \"M8 1.334a6.67 6.67 0 0 1 6.667 6.667A6.67 6.67 0 0 1 8 14.667a6.67 6.67 0 0 1-6.667-6.667A6.67 6.67 0 0 1 8 1.334zm0 1.333c-2.946 0-5.333 2.388-5.333 5.333S5.054 13.334 8 13.334s5.333-2.388 5.333-5.333S10.945 2.667 8 2.667zm2.471 2.862c.26.26.26.682 0 .943L8.943 8.001l1.529 1.529c.26.26.26.682 0 .943s-.682.26-.943 0L8 8.943l-1.529 1.529c-.26.26-.682.26-.943 0s-.26-.682 0-.943l1.529-1.529-1.529-1.529c-.26-.26-.26-.682 0-.943s.682-.26.943 0L8 7.058l1.529-1.529c.26-.26.682-.26.943 0z\",\n sell: \"M14.667 2c.368 0 .667.298.667.667s-.298.667-.667.667h0-12C2.299 3.333 2 3.632 2 4h0v9.333c0 .368-.298.667-.667.667s-.667-.298-.667-.667h0V4a2 2 0 0 1 2-2h0zm-1.999 2.667c.09 0 .175.018.253.051s.149.079.212.14l1.338 1.338c.26.26.26.682 0 .943s-.682.26-.943 0h0l-.201-.201a6.67 6.67 0 0 1-6.661 6.396h0-2.667c-.368 0-.667-.298-.667-.667S3.631 12 3.999 12h0 2.667c2.85 0 5.178-2.236 5.326-5.05h0l-.188.188c-.26.26-.682.26-.943 0s-.26-.682 0-.943h0l1.335-1.335h0c.122-.12.286-.193.467-.193h0z\",\n \"line-dots\":\n \"M2 2.667a2 2 0 0 1 2 2 1.99 1.99 0 0 1-.361 1.146L4.78 7.411a2 2 0 0 1 .553-.077c.539 0 1.028.213 1.388.56l1.961-.98a2.02 2.02 0 0 1-.015-.247 2 2 0 1 1 4 0 1.99 1.99 0 0 1-.361 1.146l1.141 1.598A2 2 0 0 1 16 11.334a2 2 0 1 1-4 0 1.99 1.99 0 0 1 .362-1.148l-1.141-1.597a2 2 0 0 1-.555.078c-.539 0-1.028-.213-1.388-.56l-1.961.98a2.02 2.02 0 0 1 .015.247 2 2 0 1 1-4 0 1.99 1.99 0 0 1 .362-1.148L2.555 6.589A2 2 0 0 1 2 6.667a2 2 0 1 1 0-4z\",\n copy: \"M6 5.333A4.67 4.67 0 0 1 10.666 10 4.67 4.67 0 0 1 6 14.666 4.67 4.67 0 0 1 1.333 10 4.67 4.67 0 0 1 6 5.333zm0 1.333c-1.841 0-3.333 1.492-3.333 3.333S4.159 13.333 6 13.333 9.333 11.841 9.333 10 7.841 6.666 6 6.666zm4-5.333A4.67 4.67 0 0 1 14.666 6c0 1.382-.602 2.625-1.555 3.478-.274.246-.696.222-.941-.052s-.222-.696.052-.941c.683-.611 1.111-1.498 1.111-2.485 0-1.841-1.492-3.333-3.333-3.333-.987 0-1.873.428-2.485 1.111-.246.274-.667.298-.941.052s-.298-.667-.052-.941c.854-.954 2.096-1.555 3.478-1.555z\",\n cloud:\n \"M10.289 13.333c2.946 0 5.333-2.388 5.333-5.333s-2.388-5.333-5.333-5.333c-2.253 0-4.18 1.397-4.961 3.373a3.74 3.74 0 0 0-1.204-.198C2.055 5.841.378 7.518.378 9.587s1.677 3.746 3.746 3.746h0 0 5.468c.081 0 .161-.007.24-.019l.457.019z\",\n clock:\n \"M8 1.334a6.67 6.67 0 0 1 6.667 6.667A6.67 6.67 0 0 1 8 14.667a6.67 6.67 0 0 1-6.667-6.667A6.67 6.67 0 0 1 8 1.334zm0 1.333c-2.946 0-5.333 2.388-5.333 5.333S5.054 13.334 8 13.334s5.333-2.388 5.333-5.333S10.945 2.667 8 2.667zM8 4c.368 0 .667.298.667.667v3.057l1.471 1.471c.26.26.26.682 0 .943s-.682.26-.943 0L7.528 8.471c-.125-.125-.195-.295-.195-.471V4.667C7.333 4.299 7.631 4 8 4z\",\n youtube: \"M1.509 2.463c0-1.71 1.876-2.755 3.33-1.855l8.945 5.538c1.378.853 1.378 2.857 0 3.711l-8.945 5.538c-1.454.899-3.33-.147-3.33-1.856V2.463z\",\n unHide: \"M6.71277 6.7226C3.66479 8.79527 2 12 2 12C2 12 5.63636 19 12 19C14.0503 19 15.8174 18.2734 17.2711 17.2884M11 5.05822C11.3254 5.02013 11.6588 5 12 5C18.3636 5 22 12 22 12C22 12 21.3082 13.3317 20 14.8335\" \n};\n\nconst Icon = (props) => {\n const size = props.size ? props.size : 16;\n return (\n <svg\n className={cn(props.className)}\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n >\n <path d={icons[props.name]}></path>\n </svg>\n );\n};\n\nexport default Icon;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Dropdown.module.sass\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport { NavLink } from \"react-router-dom\";\nimport Icon from \"../../Icon\";\n\nconst Dropdown = ({ className, item, setValue }) => {\n const [visible, setVisible] = useState(false);\n\n const handleClick = () => {\n setVisible(false);\n setValue(false);\n };\n\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.dropdown, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n {item.title}\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n <div className={styles.body}>\n {item.dropdown.map((x, index) => (\n <NavLink\n className={styles.link}\n activeClassName={styles.active}\n to={x.url}\n key={index}\n onClick={() => handleClick()}\n >\n <Icon name={x.icon} size=\"20\" />\n {x.title}\n </NavLink>\n ))}\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Dropdown;\n","// extracted by mini-css-extract-plugin\nexport default {\"settings\":\"Settings_settings__YhAor\",\"active\":\"Settings_active__Skkkr\",\"head\":\"Settings_head__xceAh\",\"body\":\"Settings_body__vEAwa\",\"row\":\"Settings_row__N062y\",\"col\":\"Settings_col__arORc\",\"category\":\"Settings_category__cAOco\",\"menu\":\"Settings_menu__lomTx\",\"language\":\"Settings_language__dNPHN\",\"currency\":\"Settings_currency__Rg-j5\",\"flag\":\"Settings_flag__CQMK+\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Settings.module.sass\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport Icon from \"../../Icon\";\n\nconst language = [\n {\n title: \"English\",\n flag: \"🇺🇸\",\n },\n];\n\nconst currency = [\"EUR\"];\n\nconst Settings = ({ className }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.settings, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n EN/EUR\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n <div className={styles.body}>\n <div className={styles.row}>\n <div className={styles.col}>\n <div className={styles.category}>Language</div>\n <div className={styles.menu}>\n {language.map((x, index) => (\n <div\n className={cn(styles.language, {\n [styles.active]: index === 0,\n })}\n key={index}\n >\n <span className={styles.flag}>{x.flag}</span>\n {x.title}\n </div>\n ))}\n </div>\n </div>\n <div className={styles.col}>\n <div className={styles.category}>Currency</div>\n <div className={styles.menu}>\n {currency.map((x, index) => (\n <div\n className={cn(styles.currency, {\n [styles.active]: index === 0,\n })}\n key={index}\n >\n {x}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Settings;\n","// extracted by mini-css-extract-plugin\nexport default {\"settings\":\"Download_settings__XAXAx\",\"active\":\"Download_active__GaAsx\",\"head\":\"Download_head__n4gt6\",\"body\":\"Download_body__Gdat2\",\"row\":\"Download_row__vwEr-\",\"col\":\"Download_col__PCOdE\",\"category\":\"Download_category__ukwpL\",\"menu\":\"Download_menu__v83bc\",\"language\":\"Download_language__1zjc7\",\"currency\":\"Download_currency__XJ2nX\",\"flag\":\"Download_flag__094I6\"};","import React from \"react\";\nimport { QRCode } from 'react-qrcode-logo';\n\nconst QrCode = ({ value, logoPath, width, height }) => {\n return (\n\n <QRCode value={value}\n logoImage={logoPath}\n logoWidth={width}\n logoHeight={height}\n />\n\n );\n};\n\nexport default QrCode;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Download.module.sass\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport Icon from \"../../Icon\";\nimport { Link } from \"react-router-dom\";\nimport QrCode from \"../../QrCode\";\n\nconst Download = ({ className }) => {\n const [visible, setVisible] = useState(false);\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.settings, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n <Icon name=\"barcode\" size=\"26\" />\n </button>\n <div className={styles.body}>\n <QrCode value={process.env.REACT_APP_MOBILE_REDIRECT_URL} logoPath=\"/images/Qrcode.jpg\" width={40} height={40} /> \n <div className={styles.menu}>Scan to download our app </div>\n <Link className={styles.flag} to={'/bitdenex-app'}> <span className={styles.language}>Read More..</span></Link>\n </div>\n </div>\n\n </OutsideClickHandler>\n );\n};\n\nexport default Download;\n","// extracted by mini-css-extract-plugin\nexport default {\"theme\":\"Theme_theme__hrgiE\",\"input\":\"Theme_input__ZbgxM\",\"inner\":\"Theme_inner__GxBJx\",\"box\":\"Theme_box__JAqn3\",\"icon\":\"Theme_icon__GyLWV\",\"small\":\"Theme_small__ZANhz\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Theme.module.sass\";\nimport useDarkMode from \"use-dark-mode\";\nimport Icon from \"../Icon\";\n\nconst Theme = ({ className, icon, small }) => {\n const darkMode = useDarkMode(false);\n\n return (\n <label className={cn(className, styles.theme, { [styles.small]: small })}>\n <input\n className={styles.input}\n checked={darkMode.value}\n onChange={darkMode.toggle}\n type=\"checkbox\"\n />\n {icon ? (\n <div className={styles.icon}>\n <Icon name=\"theme-light\" size=\"24\" />\n <Icon name=\"theme-dark\" size=\"24\" />\n </div>\n ) : (\n <span className={styles.inner}>\n <span className={styles.box}></span>\n </span>\n )}\n </label>\n );\n};\n\nexport default Theme;\n","// extracted by mini-css-extract-plugin\nexport default {\"user\":\"User_user__3f3xR\",\"active\":\"User_active__H0+km\",\"body\":\"User_body__qd5eT\",\"head\":\"User_head__3HcuA\",\"item\":\"User_item__sIn5D\",\"icon\":\"User_icon__zWPzz\",\"details\":\"User_details__eIRci\",\"line\":\"User_line__hh9qv\",\"title\":\"User_title__Ctwji\",\"content\":\"User_content__FbtSa\"};","import React, { useState } from \"react\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./User.module.sass\";\nimport Icon from \"../../Icon\";\nimport Theme from \"../../Theme\";\nconst items = [\n {\n title: \"Profile\",\n icon: \"user\",\n content: \"Important account details\",\n url: \"/profile-info\",\n },\n\n {\n title: \"Kyc Verification\",\n icon: \"eye\",\n content: \"Submit your KYC\",\n url: \"/user-kyc-verification\",\n },\n\n {\n title: \"Bank Verification\",\n icon: \"wallet\",\n content: \"Get your bank account verified\",\n url: \"/bank-verification\",\n separator: true,\n },\n\n // {\n // title: \"2FA security\",\n // icon: \"lock\",\n // content: \"Setup 2FA for more security\",\n // url: \"/2fa\",\n // },\n // {\n // title: \"Settings\",\n // icon: \"cog\",\n // content: \"View additional settings\",\n // url: \"/profile-info\",\n // },\n\n {\n title: \"Dark mode\",\n icon: \"theme-dark\",\n content: \"Switch dark/light mode\",\n },\n\n];\n\nconst User = ({ className }) => {\n const [visible, setVisible] = useState(false);\n const navigate = useNavigate()\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div className={cn(className, styles.user, { [styles.active]: visible })}>\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n <img src=\"/images/content/avatar-user.jpg\" alt=\"Avatar\" />\n </button>\n <div className={styles.body}>\n <div className={styles.menu}>\n {items.map((x, index) =>\n x.url ? (\n <Link\n className={styles.item}\n to={x.url}\n onClick={() => setVisible(!visible)}\n key={index}\n >\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ) : (\n <div className={styles.item} key={index}>\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.title}</div>\n <Theme className={styles.theme} small />\n </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n )\n )}\n <button\n className={styles.item}\n onClick={() => {\n localStorage.clear();\n navigate('/sign-in')\n // window.location.href = \"/sign-in\";\n return false;\n }}\n >\n <div className={styles.icon}>\n <Icon name=\"exit\" size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>Logout</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default User;\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"Trade_dropdown__3i-Jn\",\"active\":\"Trade_active__its2f\",\"head\":\"Trade_head__bIriF\",\"body\":\"Trade_body__jE+1H\",\"item\":\"Trade_item__fKirx\",\"icon\":\"Trade_icon__9oUdc\",\"details\":\"Trade_details__DBMsJ\",\"line\":\"Trade_line__G2Yf2\",\"title\":\"Trade_title__yclTi\",\"content\":\"Trade_content__CaT4V\"};","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./Trade.module.sass\";\nimport Icon from \"../../Icon\";\nimport Theme from \"../../Theme\";\n\n\nconst items = [\n {\n title: \"Spot Trading\",\n icon: \"eye\",\n content: \"Trade crypto with advanced tools\",\n url: \"/exchange/BTC-EUR\",\n }\n];\n\nconst Trade = ({ className, navigation }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.dropdown, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n Trade\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n <div className={styles.body}>\n <div className={styles.menu}>\n {items.map((x, index) =>\n x.url ? (\n <Link\n className={styles.item}\n to={x.url}\n onClick={() => setVisible(!visible)}\n key={index}\n >\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ) : (\n <div className={styles.item} key={index}>\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.title}</div>\n <Theme className={styles.theme} small />\n </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n )\n )}\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Trade;\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"BuyCrypto_dropdown__b5P0N\",\"active\":\"BuyCrypto_active__dyUnZ\",\"head\":\"BuyCrypto_head__c64vK\",\"body\":\"BuyCrypto_body__AjKNV\",\"item\":\"BuyCrypto_item__zn+J-\",\"icon\":\"BuyCrypto_icon__5xg4h\",\"details\":\"BuyCrypto_details__78A2o\",\"line\":\"BuyCrypto_line__iVCo7\",\"title\":\"BuyCrypto_title__7rCCd\",\"content\":\"BuyCrypto_content__4oflB\",\"soon\":\"BuyCrypto_soon__0X1FO\"};","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./BuyCrypto.module.sass\";\nimport Icon from \"../../Icon\";\nimport Theme from \"../../Theme\";\n\n\nconst items = [\n {\n title: \"Instant Buy\",\n icon: \"user\",\n content: \"Buy Crypto with your EUR balance\",\n url: \"/buy-crypto\",\n },\n {\n title: \"Bank Deposit\",\n icon: \"image\",\n content: \"Deposit Euro via SEPA or iDeal\",\n url: \"/deposit-fiat\",\n },\n // {\n // title: \"Credit Card\",\n // icon: \"laptop\",\n // content: \"Buy crypto via card\",\n // url: \"/buy-crypto\",\n // cs: true\n // }\n];\n\nconst BuyCrypto = ({ className }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.dropdown, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n Buy Crypto\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n <div className={styles.body}>\n <div className={styles.menu}>\n {items.map((x, index) =>\n x.url ? (\n <Link\n className={styles.item}\n to={x.url}\n onClick={() => setVisible(!visible)}\n key={index}\n >\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>{x.title} {x.cs === true && (<small className={styles.soon}>(Coming Soon)</small>)} </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ) : (\n <div className={styles.item} key={index}>\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.title}</div>\n <Theme className={styles.theme} small />\n </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n )\n )}\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default BuyCrypto;\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"Finance_dropdown__xGHZR\",\"active\":\"Finance_active__EHOxG\",\"head\":\"Finance_head__HiQa2\",\"body\":\"Finance_body__rSlTq\",\"item\":\"Finance_item__vNMH4\",\"icon\":\"Finance_icon__taCpe\",\"details\":\"Finance_details__n8VzB\",\"line\":\"Finance_line__if4PP\",\"title\":\"Finance_title__a3leK\",\"content\":\"Finance_content__QgG56\",\"soon\":\"Finance_soon__zIRWo\"};","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./Finance.module.sass\";\nimport Icon from \"../../Icon\";\nimport Theme from \"../../Theme\";\n\n\nconst items = [\n {\n title: \"Bitdenex Pay\",\n icon: \"laptop\",\n content: \"Instant send and receive crypto\",\n url: \"/bitdenex-pay\",\n new: true\n },\n // {\n // title: \"Bitdenex Partners\",\n // icon: \"laptop\",\n // content: \"Meet our partners\",\n // url: \"/bitdenex-partners\",\n // new: true\n // }\n];\n\nconst Finance = ({ className }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(className, styles.dropdown, {\n [styles.active]: visible,\n })}\n >\n <button className={styles.head} onClick={() => setVisible(!visible)}>\n Finance\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n <div className={styles.body}>\n <div className={styles.menu}>\n {items.map((x, index) =>\n x.url ? (\n <Link\n className={styles.item}\n to={x.url}\n onClick={() => setVisible(!visible)}\n key={index}\n >\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>{x.title} {x.new === true && (<small className={styles.soon}>(New)</small>)} </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ) : (\n <div className={styles.item} key={index}>\n <div className={styles.icon}>\n <Icon name={x.icon} size=\"20\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.title}</div>\n <Theme className={styles.theme} small />\n </div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n )\n )}\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Finance;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Header.module.sass\";\nimport { Link, NavLink } from \"react-router-dom\";\nimport Image from \"../Image\";\nimport Dropdown from \"./Dropdown\";\nimport Settings from \"./Settings\";\nimport Download from \"./Download\";\nimport Theme from \"../Theme\";\nimport User from \"./User\";\nimport Trade from \"./Trade\";\nimport BuyCrypto from \"./BuyCrypto\";\nimport Finance from \"./Finance\";\n\nconst postLoginNavigation = [\n {\n title: \"Markets\",\n url: \"/market\",\n }\n];\n\nconst preLoginNavigation = [\n {\n title: \"Markets\",\n url: \"/market\",\n },\n {\n title: \"NFT\",\n // url: \"https://nft.bitdenex.com/\",\n },\n];\n\nconst Header = ({ headerWide }) => {\n const [visibleNav, setVisibleNav] = useState(false);\n const navigation = localStorage.getItem(\"signature\") ? postLoginNavigation : preLoginNavigation;\n\n return (\n <header className={cn(styles.header, { [styles.wide]: headerWide })}>\n <div className={cn(\"container\", styles.container)}>\n <Link\n className={styles.logo}\n to=\"/\"\n onClick={() => setVisibleNav(false)}\n >\n <Image\n className={styles.picDesktop}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"Bitdenex\"\n />\n <img\n className={styles.picMobile}\n src=\"/images/logo.svg\"\n alt=\"Bitdenex\"\n />\n </Link>\n <div className={styles.wrapper}>\n <div className={cn(styles.wrap, { [styles.visible]: visibleNav })}>\n <nav className={styles.nav}>\n <Finance className={styles.dropdown} />\n <Trade className={styles.dropdown} />\n {navigation.map((x, index) =>\n x.dropdown ? (\n <Dropdown\n className={styles.dropdown}\n key={index}\n item={x}\n setValue={setVisibleNav}\n />\n ) :\n x.title.toLowerCase() === \"nft\" ?\n (\n <a\n className={styles.item}\n activeClassName={styles.active}\n onClick={() => setVisibleNav(false)}\n href={\"https://nft.bitdenex.com/\"}\n key={index}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {x.title}\n </a>\n )\n :\n (\n <NavLink\n className={styles.item}\n activeClassName={styles.active}\n onClick={() => setVisibleNav(false)}\n to={x.url}\n key={index}\n >\n {x.title}\n </NavLink>\n )\n )}\n {localStorage.getItem(\"signature\") && (\n <>\n <BuyCrypto className={styles.dropdown} />\n <Trade className={styles.dropdown} />\n </>\n )}\n </nav>\n </div>\n <div className={styles.btns}>\n {localStorage.getItem(\"signature\") ?\n <>\n <Settings className={styles.settings} />\n\n <div className={styles.control}>\n <NavLink\n className={cn(\"button-stroke button-small\", styles.button)}\n activeClassName={styles.active}\n to=\"/open-orders-list\"\n >\n Orders\n </NavLink>\n <NavLink\n className={cn(\"button-stroke button-small\", styles.button)}\n activeClassName={styles.active}\n to=\"/wallet-overview\"\n >\n Wallet\n </NavLink>\n <Theme className={styles.theme} icon />\n <User className={styles.user} />\n </div>\n </>\n :\n <div className={styles.control}>\n <Theme className={styles.theme} icon />\n <NavLink\n className={cn(\"button-small\", styles.button)}\n activeClassName={styles.active}\n to=\"/sign-up\"\n onClick={() => setVisibleNav(false)}\n >\n Sign Up\n </NavLink>\n <NavLink\n className={cn(\"button-stroke button-small\", styles.button)}\n activeClassName={styles.active}\n to=\"/sign-in\"\n onClick={() => setVisibleNav(false)}\n >\n Login\n </NavLink>\n </div>\n }\n <Download className={styles.download} />\n\n </div>\n <button\n className={cn(styles.burger, { [styles.active]: visibleNav })}\n onClick={() => setVisibleNav(!visibleNav)}\n ></button>\n </div>\n </div>\n </header>\n );\n};\n\nexport default Header;\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"Footer_footer__YOvWG\",\"container\":\"Footer_container__GGww+\",\"body\":\"Footer_body__tbyG7\",\"col\":\"Footer_col__P7uNc\",\"logo\":\"Footer_logo__AQiqY\",\"picDesktop\":\"Footer_picDesktop__Oifgr\",\"picMobile\":\"Footer_picMobile__OmRLz\",\"item\":\"Footer_item__2FpRg\",\"category\":\"Footer_category__EsQN+\",\"active\":\"Footer_active__XOvIV\",\"menu\":\"Footer_menu__1KpgC\",\"link\":\"Footer_link__Mg-qD\",\"info\":\"Footer_info__C5lvg\",\"foot\":\"Footer_foot__faqzD\",\"copyright\":\"Footer_copyright__wZ8z6\",\"risk\":\"Footer_risk__h9eiB\",\"socials\":\"Footer_socials__qUMkw\",\"social\":\"Footer_social__FauaN\",\"contact\":\"Footer_contact__xC5Nj\"};","import React, { useState } from \"react\";\nimport { Link, NavLink } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport styles from \"./Footer.module.sass\";\nimport Icon from \"../Icon\";\nimport Image from \"../Image\";\n\nconst menu = [\n {\n title: \"Exchange\",\n url: \"/sign-in\",\n },\n {\n title: \"Markets\",\n url: \"/market\",\n },\n {\n title: \"Fees\",\n url: \"/fees\",\n },\n {\n title: \"Help Center\",\n url: \"/help-center\",\n },\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Learn Crypto\",\n url: \"/learn-crypto\",\n },\n {\n title: \"Blogs & News\",\n url: \"https://blog.bitdenex.com\",\n target: true\n },\n {\n title: \"NFT\",\n url: \"https://nft.bitdenex.com\",\n target: true\n },\n {\n title: \"Bitdenex Token\",\n url: \"/bitdenex-token\",\n },\n {\n title: \"Trading Rules\",\n url: \"/trading-rules\",\n },\n // {\n // title: \"Whistleblower Policy\",\n // url: \"/whistleblower\",\n // },\n // {\n // title: \"Conflict of Interest\",\n // url: \"/conflict-of-interest\",\n // },\n // {\n // title: \"Coin Status\",\n // url: \"/coin-status\",\n // },\n {\n title: \"Whistleblower Procedure\",\n url: \"/whistleblower-procedure\",\n },\n];\n\nconst menuLegal = [\n {\n title: \"Terms & Conditions\",\n url: \"/terms-and-conditions\",\n },\n {\n title: \"Privacy Policy\",\n url: \"/privacy-policy\",\n },\n {\n title: \"AML Policy\",\n url: \"/aml-policy\",\n },\n {\n title: \"KYC Policy\",\n url: \"/kyc-policy\",\n },\n {\n title: \"Location Restriction\",\n url: \"/location-restriction\",\n },\n {\n title: \"Terms For Referral Program\",\n url: \"/terms-and-conditions-for-referral-program\",\n },\n {\n title: \"Asset Listing & Policy\",\n url: \"/coin-listing\",\n },\n {\n title: \"Referral & Affiliate\",\n url: \"/referral-and-affiliate\",\n },\n // {\n // title: \"Staking BDNX\",\n // url: \"/staking\",\n // },\n {\n title: \"Risk Disclosure\",\n url: \"/risk-disclosure\",\n },\n {\n title: \"Cookie Statement\",\n url: \"/cookie-policy\",\n },\n];\n\nconst menu2 = [\n {\n title: \"Buy & Sell Bitdenex Token\",\n url: \"/buy-bitdenex-token\",\n },\n {\n title: \"Buy & Sell Bitcoin\",\n url: \"/buy-bitcoin\",\n },\n {\n title: \"Buy & Sell Tron\",\n url: \"/buy-tron\",\n },\n {\n title: \"Buy & Sell Ethereum\",\n url: \"/buy-ethereum\",\n },\n {\n title: \"Buy & Sell Litecoin\",\n url: \"/buy-litecoin\",\n },\n {\n title: \"Buy & Sell Ripple XRP\",\n url: \"/buy-ripple\",\n },\n {\n title: \"Buy & Sell Stellar\",\n url: \"/buy-steller\",\n },\n {\n title: \"Buy & Sell Cardano\",\n url: \"/buy-cardano\",\n },\n {\n title: \"Buy & Sell Solana\",\n url: \"/buy-solana\",\n },\n];\n\n// const menu3 = [\n// {\n// title: \"Referral\",\n// url: \"/referral\",\n// },\n// {\n// title: \"Listing Application\",\n// url: \"/coin-listing\",\n// },\n// ];\n\nconst socials = [\n {\n title: \"facebook\",\n size: \"16\",\n url: \"https://www.facebook.com/Bitdenex.official\",\n },\n {\n title: \"twitter\",\n size: \"18\",\n url: \"https://twitter.com/bitdenex\",\n },\n {\n title: \"instagram\",\n size: \"16\",\n url: \"https://www.instagram.com/bitdenex\",\n },\n {\n title: \"linkedin\",\n size: \"16\",\n url: \"https://www.linkedin.com/company/bitdenex\",\n },\n // {\n // title: \"youtube\",\n // size: \"16\",\n // url: \"https://www.youtube.com/@bitdenex\",\n // },\n];\n\nconst Footer = () => {\n const [visible, setVisible] = useState(false);\n const [legal, setLegal] = useState(false);\n const [popular, setPopular] = useState(false);\n\n // const [email, setEmail] = useState(\"\");\n\n // const handleSubmit = (e) => {\n // alert();\n // };\n\n return (\n <footer className={styles.footer}>\n <div className={styles.body}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.col}>\n <div className={styles.logo} >\n <Link to=\"/\">\n <img\n className={styles.picMobile}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"Bitdenex\"\n />\n <Image\n className={styles.picDesktop}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"Bitdenex\"\n />\n </Link>\n <div className={styles.contact}>\n {/* <ul>\n <li>W.M. Dudokstraat 4,</li>\n <li>1333LR ALMERE,</li>\n <li>The Netherlands</li>\n <li>Email: support@bitdenex.com</li>\n <li>Coc: 74012940</li>\n <li>VAT-number: NL859743676B01</li>\n </ul> */}\n </div>\n <div className={styles.socials}>\n {socials.map((x, index) => (\n <a\n className={styles.social}\n href={x.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n key={index}\n title={x.title}\n >\n <Icon name={x.title} size={x.size} />\n </a>\n ))}\n </div>\n </div>\n <div className={cn(styles.item, { [styles.active]: visible })}>\n <div\n className={styles.category}\n onClick={() => setVisible(!visible)}\n >\n Overview\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n\n <div className={styles.menu}>\n {menu?.filter(y => {\n if (y.title === \"Conflict of Interest\" && parseInt(process.env.REACT_APP_SHOW_CONFLICT_OF_INTEREST) !== 1) {\n return false;\n }\n return true;\n })?.map((x, index) => {\n if (x.target) {\n return (<a\n className={styles.link}\n activeclassname={styles.active}\n href={x.url}\n key={index}\n target={x.target && x.target === true ? \"_blank\" : \"\"}\n rel={x.target && x.target === true ? \"noopener noreferrer\" : \"\"}\n >\n {x.title}\n </a>)\n } else {\n return (\n\n <NavLink\n className={styles.link}\n activeClassName={styles.active}\n to={x.url}\n key={index}\n >\n {x.title}\n </NavLink>\n )\n }\n })}\n </div>\n </div>\n </div>\n <div className={styles.col}>\n <div className={cn(styles.item, { [styles.active]: legal })}>\n <div className={styles.category} onClick={() => setLegal(!legal)}>\n Legal\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n <div className={styles.menu}>\n {menuLegal.map((x, index) => (\n <NavLink\n className={styles.link}\n activeClassName={styles.active}\n to={x.url}\n key={index}\n >\n {x.title}\n </NavLink>\n ))}\n </div>\n </div>\n </div>\n <div className={styles.col}>\n <div className={cn(styles.item, { [styles.active]: popular })}>\n <div\n className={styles.category}\n onClick={() => setPopular(!popular)}\n >\n popular currencies\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n\n <div className={styles.menu}>\n {menu2.map((x, index) => (\n <NavLink\n className={styles.link}\n activeClassName={styles.active}\n to={x.url}\n key={index}\n >\n {x.title}\n </NavLink>\n ))}\n </div>\n </div>\n </div>\n {/* <div className={styles.col}>\n <div className={cn(styles.item, { [styles.active]: popular })}>\n <div\n className={styles.category}\n onClick={() => setPopular(!popular)}\n >\n Services\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n\n <div className={styles.menu}>\n {menu3.map((x, index) => (\n <NavLink\n className={styles.link}\n activeClassName={styles.active}\n to={x.url}\n key={index}\n >\n {x.title}\n </NavLink>\n ))}\n </div>\n </div>\n </div> */}\n </div>\n </div>\n <div className={styles.foot}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.copyright}>\n Copyright © {new Date().getFullYear()} BITDENEX. All rights reserved.\n </div>\n <div className={styles.risk}>\n Trading crypto assets involves significant risks. Always do your own research.\n </div>\n </div>\n </div>\n </footer>\n );\n};\n\nexport default Footer;\n","import React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { clearAllBodyScrollLocks } from \"body-scroll-lock\";\nimport styles from \"./Page.module.sass\";\nimport Header from \"../Header\";\nimport Footer from \"../Footer\";\n\nconst Page = ({ headerHide, children, footerHide, headerWide }) => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n clearAllBodyScrollLocks();\n }, [pathname]);\n\n return (\n <>\n <div className={styles.page}>\n {!headerHide && <Header headerWide={headerWide} />}\n <div className={styles.inner}>{children}</div>\n {!footerHide && <Footer />}\n </div>\n </>\n );\n};\n\nexport default Page;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__YikyM\",\"wrap\":\"Main_wrap__QCLyr\",\"title\":\"Main_title__7oImM\",\"text\":\"Main_text__Fdp6k\",\"button\":\"Main_button__edxDu\",\"scroll\":\"Main_scroll__CSx5-\",\"bg\":\"Main_bg__n0bTF\",\"subTitle\":\"Main_subTitle__S4twM\",\"emailOptions\":\"Main_emailOptions__YEJMC\",\"email\":\"Main_email__to3iP\"};","// extracted by mini-css-extract-plugin\nexport default {\"scroll\":\"ScrollButton_scroll__XytaT\",\"line\":\"ScrollButton_line__zovhM\",\"arrowsDown\":\"ScrollButton_arrowsDown__Ks83h\",\"arrowsDownSmall\":\"ScrollButton_arrowsDownSmall__Sqwvw\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./ScrollButton.module.sass\";\nimport Icon from \"../Icon\";\n\nconst ScrollButton = ({ className, onScroll }) => {\n return (\n <button className={cn(styles.scroll, className)} onClick={onScroll}>\n <div className={styles.line}>\n <Icon name=\"arrow-bottom\" size=\"24\" />\n <Icon name=\"arrow-bottom\" size=\"24\" />\n </div>\n </button>\n );\n};\n\nexport default ScrollButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"cards\":\"Cards_cards__T0RRL\",\"card\":\"Cards_card__JR2cZ\",\"icon\":\"Cards_icon__7MrD2\",\"details\":\"Cards_details__ldwbq\",\"line\":\"Cards_line__qcV72\",\"title\":\"Cards_title__YrjcI\",\"positive\":\"Cards_positive__Lzrmw\",\"negative\":\"Cards_negative__m9HFq\",\"price\":\"Cards_price__hNi5J\",\"money\":\"Cards_money__5Ozie\"};","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nexport { _OverloadYield as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _wrapAsyncGenerator(e) {\n return function () {\n return new AsyncGenerator(e.apply(this, arguments));\n };\n}\nfunction AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, AsyncGenerator.prototype[\"throw\"] = function (e) {\n return this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype[\"return\"] = function (e) {\n return this._invoke(\"return\", e);\n};\nexport { _wrapAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _awaitAsyncGenerator(e) {\n return new OverloadYield(e, 0);\n}\nexport { _awaitAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _asyncGeneratorDelegate(t) {\n var e = {},\n n = !1;\n function pump(e, r) {\n return n = !0, r = new Promise(function (n) {\n n(t[e](r));\n }), {\n done: !1,\n value: new OverloadYield(r, 1)\n };\n }\n return e[\"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n }, e.next = function (t) {\n return n ? (n = !1, t) : pump(\"next\", t);\n }, \"function\" == typeof t[\"throw\"] && (e[\"throw\"] = function (t) {\n if (n) throw n = !1, t;\n return pump(\"throw\", t);\n }), \"function\" == typeof t[\"return\"] && (e[\"return\"] = function (t) {\n return n ? (n = !1, t) : pump(\"return\", t);\n }), e;\n}\nexport { _asyncGeneratorDelegate as default };","function _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n \"throw\": function _throw(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}\nexport { _asyncIterator as default };","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * FingerprintJS v4.5.1 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n *\n * Licensed under Business Source License 1.1 https://mariadb.com/bsl11/\n * Licensor: FingerprintJS, Inc.\n * Licensed Work: FingerprintJS browser fingerprinting library\n * Additional Use Grant: None\n * Change Date: Four years from first release for the specific version.\n * Change License: MIT, text at https://opensource.org/license/mit/ with the following copyright notice:\n * Copyright 2015-present FingerprintJS, Inc.\n */\n\nimport { __awaiter, __generator, __assign, __spreadArray } from 'tslib';\n\nvar version = \"4.5.1\";\n\nfunction wait(durationMs, resolveWith) {\n return new Promise(function (resolve) { return setTimeout(resolve, durationMs, resolveWith); });\n}\n/**\n * Allows asynchronous actions and microtasks to happen.\n */\nfunction releaseEventLoop() {\n // Don't use setTimeout because Chrome throttles it in some cases causing very long agent execution:\n // https://stackoverflow.com/a/6032591/1118709\n // https://github.com/chromium/chromium/commit/0295dd09496330f3a9103ef7e543fa9b6050409b\n // Reusing a MessageChannel object gives no noticeable benefits\n return new Promise(function (resolve) {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () { return resolve(); };\n channel.port2.postMessage(null);\n });\n}\nfunction requestIdleCallbackIfAvailable(fallbackTimeout, deadlineTimeout) {\n if (deadlineTimeout === void 0) { deadlineTimeout = Infinity; }\n var requestIdleCallback = window.requestIdleCallback;\n if (requestIdleCallback) {\n // The function `requestIdleCallback` loses the binding to `window` here.\n // `globalThis` isn't always equal `window` (see https://github.com/fingerprintjs/fingerprintjs/issues/683).\n // Therefore, an error can occur. `call(window,` prevents the error.\n return new Promise(function (resolve) { return requestIdleCallback.call(window, function () { return resolve(); }, { timeout: deadlineTimeout }); });\n }\n else {\n return wait(Math.min(fallbackTimeout, deadlineTimeout));\n }\n}\nfunction isPromise(value) {\n return !!value && typeof value.then === 'function';\n}\n/**\n * Calls a maybe asynchronous function without creating microtasks when the function is synchronous.\n * Catches errors in both cases.\n *\n * If just you run a code like this:\n * ```\n * console.time('Action duration')\n * await action()\n * console.timeEnd('Action duration')\n * ```\n * The synchronous function time can be measured incorrectly because another microtask may run before the `await`\n * returns the control back to the code.\n */\nfunction awaitIfAsync(action, callback) {\n try {\n var returnedValue = action();\n if (isPromise(returnedValue)) {\n returnedValue.then(function (result) { return callback(true, result); }, function (error) { return callback(false, error); });\n }\n else {\n callback(true, returnedValue);\n }\n }\n catch (error) {\n callback(false, error);\n }\n}\n/**\n * If you run many synchronous tasks without using this function, the JS main loop will be busy and asynchronous tasks\n * (e.g. completing a network request, rendering the page) won't be able to happen.\n * This function allows running many synchronous tasks such way that asynchronous tasks can run too in background.\n */\nfunction mapWithBreaks(items, callback, loopReleaseInterval) {\n if (loopReleaseInterval === void 0) { loopReleaseInterval = 16; }\n return __awaiter(this, void 0, void 0, function () {\n var results, lastLoopReleaseTime, i, now;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n results = Array(items.length);\n lastLoopReleaseTime = Date.now();\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < items.length)) return [3 /*break*/, 4];\n results[i] = callback(items[i], i);\n now = Date.now();\n if (!(now >= lastLoopReleaseTime + loopReleaseInterval)) return [3 /*break*/, 3];\n lastLoopReleaseTime = now;\n return [4 /*yield*/, releaseEventLoop()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n ++i;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, results];\n }\n });\n });\n}\n/**\n * Makes the given promise never emit an unhandled promise rejection console warning.\n * The promise will still pass errors to the next promises.\n * Returns the input promise for convenience.\n *\n * Otherwise, promise emits a console warning unless it has a `catch` listener.\n */\nfunction suppressUnhandledRejectionWarning(promise) {\n promise.then(undefined, function () { return undefined; });\n return promise;\n}\n\n/*\n * This file contains functions to work with pure data only (no browser features, DOM, side effects, etc).\n */\n/**\n * Does the same as Array.prototype.includes but has better typing\n */\nfunction includes(haystack, needle) {\n for (var i = 0, l = haystack.length; i < l; ++i) {\n if (haystack[i] === needle) {\n return true;\n }\n }\n return false;\n}\n/**\n * Like `!includes()` but with proper typing\n */\nfunction excludes(haystack, needle) {\n return !includes(haystack, needle);\n}\n/**\n * Be careful, NaN can return\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Be careful, NaN can return\n */\nfunction toFloat(value) {\n return parseFloat(value);\n}\nfunction replaceNaN(value, replacement) {\n return typeof value === 'number' && isNaN(value) ? replacement : value;\n}\nfunction countTruthy(values) {\n return values.reduce(function (sum, value) { return sum + (value ? 1 : 0); }, 0);\n}\nfunction round(value, base) {\n if (base === void 0) { base = 1; }\n if (Math.abs(base) >= 1) {\n return Math.round(value / base) * base;\n }\n else {\n // Sometimes when a number is multiplied by a small number, precision is lost,\n // for example 1234 * 0.0001 === 0.12340000000000001, and it's more precise divide: 1234 / (1 / 0.0001) === 0.1234.\n var counterBase = 1 / base;\n return Math.round(value * counterBase) / counterBase;\n }\n}\n/**\n * Parses a CSS selector into tag name with HTML attributes.\n * Only single element selector are supported (without operators like space, +, >, etc).\n *\n * Multiple values can be returned for each attribute. You decide how to handle them.\n */\nfunction parseSimpleCssSelector(selector) {\n var _a, _b;\n var errorMessage = \"Unexpected syntax '\".concat(selector, \"'\");\n var tagMatch = /^\\s*([a-z-]*)(.*)$/i.exec(selector);\n var tag = tagMatch[1] || undefined;\n var attributes = {};\n var partsRegex = /([.:#][\\w-]+|\\[.+?\\])/gi;\n var addAttribute = function (name, value) {\n attributes[name] = attributes[name] || [];\n attributes[name].push(value);\n };\n for (;;) {\n var match = partsRegex.exec(tagMatch[2]);\n if (!match) {\n break;\n }\n var part = match[0];\n switch (part[0]) {\n case '.':\n addAttribute('class', part.slice(1));\n break;\n case '#':\n addAttribute('id', part.slice(1));\n break;\n case '[': {\n var attributeMatch = /^\\[([\\w-]+)([~|^$*]?=(\"(.*?)\"|([\\w-]+)))?(\\s+[is])?\\]$/.exec(part);\n if (attributeMatch) {\n addAttribute(attributeMatch[1], (_b = (_a = attributeMatch[4]) !== null && _a !== void 0 ? _a : attributeMatch[5]) !== null && _b !== void 0 ? _b : '');\n }\n else {\n throw new Error(errorMessage);\n }\n break;\n }\n default:\n throw new Error(errorMessage);\n }\n }\n return [tag, attributes];\n}\n/**\n * Converts a string to UTF8 bytes\n */\nfunction getUTF8Bytes(input) {\n // Benchmark: https://jsbench.me/b6klaaxgwq/1\n // If you want to just count bytes, see solutions at https://jsbench.me/ehklab415e/1\n var result = new Uint8Array(input.length);\n for (var i = 0; i < input.length; i++) {\n // `charCode` is faster than encoding, so we prefer that when it's possible\n var charCode = input.charCodeAt(i);\n // In case of non-ASCII symbols we use proper encoding\n if (charCode > 127) {\n return new TextEncoder().encode(input);\n }\n result[i] = charCode;\n }\n return result;\n}\n\n/*\n * Based on https://github.com/karanlyons/murmurHash3.js/blob/a33d0723127e2e5415056c455f8aed2451ace208/murmurHash3.js\n */\n/**\n * Adds two 64-bit values (provided as tuples of 32-bit values)\n * and updates (mutates) first value to write the result\n */\nfunction x64Add(m, n) {\n var m0 = m[0] >>> 16, m1 = m[0] & 0xffff, m2 = m[1] >>> 16, m3 = m[1] & 0xffff;\n var n0 = n[0] >>> 16, n1 = n[0] & 0xffff, n2 = n[1] >>> 16, n3 = n[1] & 0xffff;\n var o0 = 0, o1 = 0, o2 = 0, o3 = 0;\n o3 += m3 + n3;\n o2 += o3 >>> 16;\n o3 &= 0xffff;\n o2 += m2 + n2;\n o1 += o2 >>> 16;\n o2 &= 0xffff;\n o1 += m1 + n1;\n o0 += o1 >>> 16;\n o1 &= 0xffff;\n o0 += m0 + n0;\n o0 &= 0xffff;\n m[0] = (o0 << 16) | o1;\n m[1] = (o2 << 16) | o3;\n}\n/**\n * Multiplies two 64-bit values (provided as tuples of 32-bit values)\n * and updates (mutates) first value to write the result\n */\nfunction x64Multiply(m, n) {\n var m0 = m[0] >>> 16, m1 = m[0] & 0xffff, m2 = m[1] >>> 16, m3 = m[1] & 0xffff;\n var n0 = n[0] >>> 16, n1 = n[0] & 0xffff, n2 = n[1] >>> 16, n3 = n[1] & 0xffff;\n var o0 = 0, o1 = 0, o2 = 0, o3 = 0;\n o3 += m3 * n3;\n o2 += o3 >>> 16;\n o3 &= 0xffff;\n o2 += m2 * n3;\n o1 += o2 >>> 16;\n o2 &= 0xffff;\n o2 += m3 * n2;\n o1 += o2 >>> 16;\n o2 &= 0xffff;\n o1 += m1 * n3;\n o0 += o1 >>> 16;\n o1 &= 0xffff;\n o1 += m2 * n2;\n o0 += o1 >>> 16;\n o1 &= 0xffff;\n o1 += m3 * n1;\n o0 += o1 >>> 16;\n o1 &= 0xffff;\n o0 += m0 * n3 + m1 * n2 + m2 * n1 + m3 * n0;\n o0 &= 0xffff;\n m[0] = (o0 << 16) | o1;\n m[1] = (o2 << 16) | o3;\n}\n/**\n * Provides left rotation of the given int64 value (provided as tuple of two int32)\n * by given number of bits. Result is written back to the value\n */\nfunction x64Rotl(m, bits) {\n var m0 = m[0];\n bits %= 64;\n if (bits === 32) {\n m[0] = m[1];\n m[1] = m0;\n }\n else if (bits < 32) {\n m[0] = (m0 << bits) | (m[1] >>> (32 - bits));\n m[1] = (m[1] << bits) | (m0 >>> (32 - bits));\n }\n else {\n bits -= 32;\n m[0] = (m[1] << bits) | (m0 >>> (32 - bits));\n m[1] = (m0 << bits) | (m[1] >>> (32 - bits));\n }\n}\n/**\n * Provides a left shift of the given int32 value (provided as tuple of [0, int32])\n * by given number of bits. Result is written back to the value\n */\nfunction x64LeftShift(m, bits) {\n bits %= 64;\n if (bits === 0) {\n return;\n }\n else if (bits < 32) {\n m[0] = m[1] >>> (32 - bits);\n m[1] = m[1] << bits;\n }\n else {\n m[0] = m[1] << (bits - 32);\n m[1] = 0;\n }\n}\n/**\n * Provides a XOR of the given int64 values(provided as tuple of two int32).\n * Result is written back to the first value\n */\nfunction x64Xor(m, n) {\n m[0] ^= n[0];\n m[1] ^= n[1];\n}\nvar F1 = [0xff51afd7, 0xed558ccd];\nvar F2 = [0xc4ceb9fe, 0x1a85ec53];\n/**\n * Calculates murmurHash3's final x64 mix of that block and writes result back to the input value.\n * (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n * only place where we need to right shift 64bit ints.)\n */\nfunction x64Fmix(h) {\n var shifted = [0, h[0] >>> 1];\n x64Xor(h, shifted);\n x64Multiply(h, F1);\n shifted[1] = h[0] >>> 1;\n x64Xor(h, shifted);\n x64Multiply(h, F2);\n shifted[1] = h[0] >>> 1;\n x64Xor(h, shifted);\n}\nvar C1 = [0x87c37b91, 0x114253d5];\nvar C2 = [0x4cf5ad43, 0x2745937f];\nvar M$1 = [0, 5];\nvar N1 = [0, 0x52dce729];\nvar N2 = [0, 0x38495ab5];\n/**\n * Given a string and an optional seed as an int, returns a 128 bit\n * hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n * All internal functions mutates passed value to achieve minimal memory allocations and GC load\n *\n * Benchmark https://jsbench.me/p4lkpaoabi/1\n */\nfunction x64hash128(input, seed) {\n var key = getUTF8Bytes(input);\n seed = seed || 0;\n var length = [0, key.length];\n var remainder = length[1] % 16;\n var bytes = length[1] - remainder;\n var h1 = [0, seed];\n var h2 = [0, seed];\n var k1 = [0, 0];\n var k2 = [0, 0];\n var i;\n for (i = 0; i < bytes; i = i + 16) {\n k1[0] = key[i + 4] | (key[i + 5] << 8) | (key[i + 6] << 16) | (key[i + 7] << 24);\n k1[1] = key[i] | (key[i + 1] << 8) | (key[i + 2] << 16) | (key[i + 3] << 24);\n k2[0] = key[i + 12] | (key[i + 13] << 8) | (key[i + 14] << 16) | (key[i + 15] << 24);\n k2[1] = key[i + 8] | (key[i + 9] << 8) | (key[i + 10] << 16) | (key[i + 11] << 24);\n x64Multiply(k1, C1);\n x64Rotl(k1, 31);\n x64Multiply(k1, C2);\n x64Xor(h1, k1);\n x64Rotl(h1, 27);\n x64Add(h1, h2);\n x64Multiply(h1, M$1);\n x64Add(h1, N1);\n x64Multiply(k2, C2);\n x64Rotl(k2, 33);\n x64Multiply(k2, C1);\n x64Xor(h2, k2);\n x64Rotl(h2, 31);\n x64Add(h2, h1);\n x64Multiply(h2, M$1);\n x64Add(h2, N2);\n }\n k1[0] = 0;\n k1[1] = 0;\n k2[0] = 0;\n k2[1] = 0;\n var val = [0, 0];\n switch (remainder) {\n case 15:\n val[1] = key[i + 14];\n x64LeftShift(val, 48);\n x64Xor(k2, val);\n // fallthrough\n case 14:\n val[1] = key[i + 13];\n x64LeftShift(val, 40);\n x64Xor(k2, val);\n // fallthrough\n case 13:\n val[1] = key[i + 12];\n x64LeftShift(val, 32);\n x64Xor(k2, val);\n // fallthrough\n case 12:\n val[1] = key[i + 11];\n x64LeftShift(val, 24);\n x64Xor(k2, val);\n // fallthrough\n case 11:\n val[1] = key[i + 10];\n x64LeftShift(val, 16);\n x64Xor(k2, val);\n // fallthrough\n case 10:\n val[1] = key[i + 9];\n x64LeftShift(val, 8);\n x64Xor(k2, val);\n // fallthrough\n case 9:\n val[1] = key[i + 8];\n x64Xor(k2, val);\n x64Multiply(k2, C2);\n x64Rotl(k2, 33);\n x64Multiply(k2, C1);\n x64Xor(h2, k2);\n // fallthrough\n case 8:\n val[1] = key[i + 7];\n x64LeftShift(val, 56);\n x64Xor(k1, val);\n // fallthrough\n case 7:\n val[1] = key[i + 6];\n x64LeftShift(val, 48);\n x64Xor(k1, val);\n // fallthrough\n case 6:\n val[1] = key[i + 5];\n x64LeftShift(val, 40);\n x64Xor(k1, val);\n // fallthrough\n case 5:\n val[1] = key[i + 4];\n x64LeftShift(val, 32);\n x64Xor(k1, val);\n // fallthrough\n case 4:\n val[1] = key[i + 3];\n x64LeftShift(val, 24);\n x64Xor(k1, val);\n // fallthrough\n case 3:\n val[1] = key[i + 2];\n x64LeftShift(val, 16);\n x64Xor(k1, val);\n // fallthrough\n case 2:\n val[1] = key[i + 1];\n x64LeftShift(val, 8);\n x64Xor(k1, val);\n // fallthrough\n case 1:\n val[1] = key[i];\n x64Xor(k1, val);\n x64Multiply(k1, C1);\n x64Rotl(k1, 31);\n x64Multiply(k1, C2);\n x64Xor(h1, k1);\n // fallthrough\n }\n x64Xor(h1, length);\n x64Xor(h2, length);\n x64Add(h1, h2);\n x64Add(h2, h1);\n x64Fmix(h1);\n x64Fmix(h2);\n x64Add(h1, h2);\n x64Add(h2, h1);\n return (('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) +\n ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) +\n ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) +\n ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8));\n}\n\n/**\n * Converts an error object to a plain object that can be used with `JSON.stringify`.\n * If you just run `JSON.stringify(error)`, you'll get `'{}'`.\n */\nfunction errorToObject(error) {\n var _a;\n return __assign({ name: error.name, message: error.message, stack: (_a = error.stack) === null || _a === void 0 ? void 0 : _a.split('\\n') }, error);\n}\nfunction isFunctionNative(func) {\n return /^function\\s.*?\\{\\s*\\[native code]\\s*}$/.test(String(func));\n}\n\nfunction isFinalResultLoaded(loadResult) {\n return typeof loadResult !== 'function';\n}\n/**\n * Loads the given entropy source. Returns a function that gets an entropy component from the source.\n *\n * The result is returned synchronously to prevent `loadSources` from\n * waiting for one source to load before getting the components from the other sources.\n */\nfunction loadSource(source, sourceOptions) {\n var sourceLoadPromise = suppressUnhandledRejectionWarning(new Promise(function (resolveLoad) {\n var loadStartTime = Date.now();\n // `awaitIfAsync` is used instead of just `await` in order to measure the duration of synchronous sources\n // correctly (other microtasks won't affect the duration).\n awaitIfAsync(source.bind(null, sourceOptions), function () {\n var loadArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n loadArgs[_i] = arguments[_i];\n }\n var loadDuration = Date.now() - loadStartTime;\n // Source loading failed\n if (!loadArgs[0]) {\n return resolveLoad(function () { return ({ error: loadArgs[1], duration: loadDuration }); });\n }\n var loadResult = loadArgs[1];\n // Source loaded with the final result\n if (isFinalResultLoaded(loadResult)) {\n return resolveLoad(function () { return ({ value: loadResult, duration: loadDuration }); });\n }\n // Source loaded with \"get\" stage\n resolveLoad(function () {\n return new Promise(function (resolveGet) {\n var getStartTime = Date.now();\n awaitIfAsync(loadResult, function () {\n var getArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n getArgs[_i] = arguments[_i];\n }\n var duration = loadDuration + Date.now() - getStartTime;\n // Source getting failed\n if (!getArgs[0]) {\n return resolveGet({ error: getArgs[1], duration: duration });\n }\n // Source getting succeeded\n resolveGet({ value: getArgs[1], duration: duration });\n });\n });\n });\n });\n }));\n return function getComponent() {\n return sourceLoadPromise.then(function (finalizeSource) { return finalizeSource(); });\n };\n}\n/**\n * Loads the given entropy sources. Returns a function that collects the entropy components.\n *\n * The result is returned synchronously in order to allow start getting the components\n * before the sources are loaded completely.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction loadSources(sources, sourceOptions, excludeSources, loopReleaseInterval) {\n var includedSources = Object.keys(sources).filter(function (sourceKey) { return excludes(excludeSources, sourceKey); });\n // Using `mapWithBreaks` allows asynchronous sources to complete between synchronous sources\n // and measure the duration correctly\n var sourceGettersPromise = suppressUnhandledRejectionWarning(mapWithBreaks(includedSources, function (sourceKey) { return loadSource(sources[sourceKey], sourceOptions); }, loopReleaseInterval));\n return function getComponents() {\n return __awaiter(this, void 0, void 0, function () {\n var sourceGetters, componentPromises, componentArray, components, index;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, sourceGettersPromise];\n case 1:\n sourceGetters = _a.sent();\n return [4 /*yield*/, mapWithBreaks(sourceGetters, function (sourceGetter) { return suppressUnhandledRejectionWarning(sourceGetter()); }, loopReleaseInterval)];\n case 2:\n componentPromises = _a.sent();\n return [4 /*yield*/, Promise.all(componentPromises)\n // Keeping the component keys order the same as the source keys order\n ];\n case 3:\n componentArray = _a.sent();\n components = {};\n for (index = 0; index < includedSources.length; ++index) {\n components[includedSources[index]] = componentArray[index];\n }\n return [2 /*return*/, components];\n }\n });\n });\n };\n}\n/**\n * Modifies an entropy source by transforming its returned value with the given function.\n * Keeps the source properties: sync/async, 1/2 stages.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction transformSource(source, transformValue) {\n var transformLoadResult = function (loadResult) {\n if (isFinalResultLoaded(loadResult)) {\n return transformValue(loadResult);\n }\n return function () {\n var getResult = loadResult();\n if (isPromise(getResult)) {\n return getResult.then(transformValue);\n }\n return transformValue(getResult);\n };\n };\n return function (options) {\n var loadResult = source(options);\n if (isPromise(loadResult)) {\n return loadResult.then(transformLoadResult);\n }\n return transformLoadResult(loadResult);\n };\n}\n\n/*\n * Functions to help with features that vary through browsers\n */\n/**\n * Checks whether the browser is based on Trident (the Internet Explorer engine) without using user-agent.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isTrident() {\n var w = window;\n var n = navigator;\n // The properties are checked to be in IE 10, IE 11 and not to be in other browsers in October 2020\n return (countTruthy([\n 'MSCSSMatrix' in w,\n 'msSetImmediate' in w,\n 'msIndexedDB' in w,\n 'msMaxTouchPoints' in n,\n 'msPointerEnabled' in n,\n ]) >= 4);\n}\n/**\n * Checks whether the browser is based on EdgeHTML (the pre-Chromium Edge engine) without using user-agent.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isEdgeHTML() {\n // Based on research in October 2020\n var w = window;\n var n = navigator;\n return (countTruthy(['msWriteProfilerMark' in w, 'MSStream' in w, 'msLaunchUri' in n, 'msSaveBlob' in n]) >= 3 &&\n !isTrident());\n}\n/**\n * Checks whether the browser is based on Chromium without using user-agent.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isChromium() {\n // Based on research in October 2020. Tested to detect Chromium 42-86.\n var w = window;\n var n = navigator;\n return (countTruthy([\n 'webkitPersistentStorage' in n,\n 'webkitTemporaryStorage' in n,\n n.vendor.indexOf('Google') === 0,\n 'webkitResolveLocalFileSystemURL' in w,\n 'BatteryManager' in w,\n 'webkitMediaStream' in w,\n 'webkitSpeechGrammar' in w,\n ]) >= 5);\n}\n/**\n * Checks whether the browser is based on mobile or desktop Safari without using user-agent.\n * All iOS browsers use WebKit (the Safari engine).\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isWebKit() {\n // Based on research in August 2024\n var w = window;\n var n = navigator;\n return (countTruthy([\n 'ApplePayError' in w,\n 'CSSPrimitiveValue' in w,\n 'Counter' in w,\n n.vendor.indexOf('Apple') === 0,\n 'RGBColor' in w,\n 'WebKitMediaKeys' in w,\n ]) >= 4);\n}\n/**\n * Checks whether this WebKit browser is a desktop browser.\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isDesktopWebKit() {\n // Checked in Safari and DuckDuckGo\n var w = window;\n var HTMLElement = w.HTMLElement, Document = w.Document;\n return (countTruthy([\n 'safari' in w,\n !('ongestureend' in w),\n !('TouchEvent' in w),\n !('orientation' in w),\n HTMLElement && !('autocapitalize' in HTMLElement.prototype),\n Document && 'pointerLockElement' in Document.prototype,\n ]) >= 4);\n}\n/**\n * Checks whether this WebKit browser is Safari.\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\n *\n * Warning! The function works properly only for Safari version 15.4 and newer.\n */\nfunction isSafariWebKit() {\n // Checked in Safari, Chrome, Firefox, Yandex, UC Browser, Opera, Edge and DuckDuckGo.\n // iOS Safari and Chrome were checked on iOS 11-18. DuckDuckGo was checked on iOS 17-18 and macOS 14-15.\n // Desktop Safari versions 12-18 were checked.\n // The other browsers were checked on iOS 17 and 18; there was no chance to check them on the other OS versions.\n var w = window;\n return (\n // Filters-out Chrome, Yandex, DuckDuckGo (macOS and iOS), Edge\n isFunctionNative(w.print) &&\n // Doesn't work in Safari < 15.4\n String(w.browser) === '[object WebPageNamespace]');\n}\n/**\n * Checks whether the browser is based on Gecko (Firefox engine) without using user-agent.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isGecko() {\n var _a, _b;\n var w = window;\n // Based on research in September 2020\n return (countTruthy([\n 'buildID' in navigator,\n 'MozAppearance' in ((_b = (_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : {}),\n 'onmozfullscreenchange' in w,\n 'mozInnerScreenX' in w,\n 'CSSMozDocumentRule' in w,\n 'CanvasCaptureMediaStream' in w,\n ]) >= 4);\n}\n/**\n * Checks whether the browser is based on Chromium version ≥86 without using user-agent.\n * It doesn't check that the browser is based on Chromium, there is a separate function for this.\n */\nfunction isChromium86OrNewer() {\n // Checked in Chrome 85 vs Chrome 86 both on desktop and Android. Checked in macOS Chrome 128, Android Chrome 127.\n var w = window;\n return (countTruthy([\n !('MediaSettingsRange' in w),\n 'RTCEncodedAudioFrame' in w,\n '' + w.Intl === '[object Intl]',\n '' + w.Reflect === '[object Reflect]',\n ]) >= 3);\n}\n/**\n * Checks whether the browser is based on Chromium version ≥122 without using user-agent.\n * It doesn't check that the browser is based on Chromium, there is a separate function for this.\n */\nfunction isChromium122OrNewer() {\n // Checked in Chrome 121 vs Chrome 122 and 129 both on desktop and Android\n var w = window;\n var URLPattern = w.URLPattern;\n return (countTruthy([\n 'union' in Set.prototype,\n 'Iterator' in w,\n URLPattern && 'hasRegExpGroups' in URLPattern.prototype,\n 'RGB8' in WebGLRenderingContext.prototype,\n ]) >= 3);\n}\n/**\n * Checks whether the browser is based on WebKit version ≥606 (Safari ≥12) without using user-agent.\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\n *\n * @see https://en.wikipedia.org/wiki/Safari_version_history#Release_history Safari-WebKit versions map\n */\nfunction isWebKit606OrNewer() {\n // Checked in Safari 9–18\n var w = window;\n return (countTruthy([\n 'DOMRectList' in w,\n 'RTCPeerConnectionIceEvent' in w,\n 'SVGGeometryElement' in w,\n 'ontransitioncancel' in w,\n ]) >= 3);\n}\n/**\n * Checks whether the browser is based on WebKit version ≥616 (Safari ≥17) without using user-agent.\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\n *\n * @see https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes Safari 17 release notes\n * @see https://tauri.app/v1/references/webview-versions/#webkit-versions-in-safari Safari-WebKit versions map\n */\nfunction isWebKit616OrNewer() {\n var w = window;\n var n = navigator;\n var CSS = w.CSS, HTMLButtonElement = w.HTMLButtonElement;\n return (countTruthy([\n !('getStorageUpdates' in n),\n HTMLButtonElement && 'popover' in HTMLButtonElement.prototype,\n 'CSSCounterStyleRule' in w,\n CSS.supports('font-size-adjust: ex-height 0.5'),\n CSS.supports('text-transform: full-width'),\n ]) >= 4);\n}\n/**\n * Checks whether the device is an iPad.\n * It doesn't check that the engine is WebKit and that the WebKit isn't desktop.\n */\nfunction isIPad() {\n // Checked on:\n // Safari on iPadOS (both mobile and desktop modes): 8, 11-18\n // Chrome on iPadOS (both mobile and desktop modes): 11-18\n // Safari on iOS (both mobile and desktop modes): 9-18\n // Chrome on iOS (both mobile and desktop modes): 9-18\n // Before iOS 13. Safari tampers the value in \"request desktop site\" mode since iOS 13.\n if (navigator.platform === 'iPad') {\n return true;\n }\n var s = screen;\n var screenRatio = s.width / s.height;\n return (countTruthy([\n // Since iOS 13. Doesn't work in Chrome on iPadOS <15, but works in desktop mode.\n 'MediaSource' in window,\n // Since iOS 12. Doesn't work in Chrome on iPadOS.\n !!Element.prototype.webkitRequestFullscreen,\n // iPhone 4S that runs iOS 9 matches this, but it is not supported\n // Doesn't work in incognito mode of Safari ≥17 with split screen because of tracking prevention\n screenRatio > 0.65 && screenRatio < 1.53,\n ]) >= 2);\n}\n/**\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getFullscreenElement() {\n var d = document;\n return d.fullscreenElement || d.msFullscreenElement || d.mozFullScreenElement || d.webkitFullscreenElement || null;\n}\nfunction exitFullscreen() {\n var d = document;\n // `call` is required because the function throws an error without a proper \"this\" context\n return (d.exitFullscreen || d.msExitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen).call(d);\n}\n/**\n * Checks whether the device runs on Android without using user-agent.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isAndroid() {\n var isItChromium = isChromium();\n var isItGecko = isGecko();\n var w = window;\n var n = navigator;\n var c = 'connection';\n // Chrome removes all words \"Android\" from `navigator` when desktop version is requested\n // Firefox keeps \"Android\" in `navigator.appVersion` when desktop version is requested\n if (isItChromium) {\n return (countTruthy([\n !('SharedWorker' in w),\n // `typechange` is deprecated, but it's still present on Android (tested on Chrome Mobile 117)\n // Removal proposal https://bugs.chromium.org/p/chromium/issues/detail?id=699892\n // Note: this expression returns true on ChromeOS, so additional detectors are required to avoid false-positives\n n[c] && 'ontypechange' in n[c],\n !('sinkId' in new Audio()),\n ]) >= 2);\n }\n else if (isItGecko) {\n return countTruthy(['onorientationchange' in w, 'orientation' in w, /android/i.test(n.appVersion)]) >= 2;\n }\n else {\n // Only 2 browser engines are presented on Android.\n // Actually, there is also Android 4.1 browser, but it's not worth detecting it at the moment.\n return false;\n }\n}\n/**\n * Checks whether the browser is Samsung Internet without using user-agent.\n * It doesn't check that the browser is based on Chromium, please use `isChromium` before using this function.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction isSamsungInternet() {\n // Checked in Samsung Internet 21, 25 and 27\n var n = navigator;\n var w = window;\n var audioPrototype = Audio.prototype;\n var visualViewport = w.visualViewport;\n return (countTruthy([\n 'srLatency' in audioPrototype,\n 'srChannelCount' in audioPrototype,\n 'devicePosture' in n,\n visualViewport && 'segments' in visualViewport,\n 'getTextInformation' in Image.prototype, // Not available in Samsung Internet 21\n ]) >= 3);\n}\n\n/**\n * A deep description: https://fingerprint.com/blog/audio-fingerprinting/\n * Inspired by and based on https://github.com/cozylife/audio-fingerprint\n *\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\n * Audio signal is noised in private mode of Safari 17, so audio fingerprinting is skipped in Safari 17.\n */\nfunction getAudioFingerprint() {\n if (doesBrowserPerformAntifingerprinting$1()) {\n return -4 /* SpecialFingerprint.KnownForAntifingerprinting */;\n }\n return getUnstableAudioFingerprint();\n}\n/**\n * A version of the entropy source without stabilization.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getUnstableAudioFingerprint() {\n var w = window;\n var AudioContext = w.OfflineAudioContext || w.webkitOfflineAudioContext;\n if (!AudioContext) {\n return -2 /* SpecialFingerprint.NotSupported */;\n }\n // In some browsers, audio context always stays suspended unless the context is started in response to a user action\n // (e.g. a click or a tap). It prevents audio fingerprint from being taken at an arbitrary moment of time.\n // Such browsers are old and unpopular, so the audio fingerprinting is just skipped in them.\n // See a similar case explanation at https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n if (doesBrowserSuspendAudioContext()) {\n return -1 /* SpecialFingerprint.KnownForSuspending */;\n }\n var hashFromIndex = 4500;\n var hashToIndex = 5000;\n var context = new AudioContext(1, hashToIndex, 44100);\n var oscillator = context.createOscillator();\n oscillator.type = 'triangle';\n oscillator.frequency.value = 10000;\n var compressor = context.createDynamicsCompressor();\n compressor.threshold.value = -50;\n compressor.knee.value = 40;\n compressor.ratio.value = 12;\n compressor.attack.value = 0;\n compressor.release.value = 0.25;\n oscillator.connect(compressor);\n compressor.connect(context.destination);\n oscillator.start(0);\n var _a = startRenderingAudio(context), renderPromise = _a[0], finishRendering = _a[1];\n // Suppresses the console error message in case when the fingerprint fails before requested\n var fingerprintPromise = suppressUnhandledRejectionWarning(renderPromise.then(function (buffer) { return getHash(buffer.getChannelData(0).subarray(hashFromIndex)); }, function (error) {\n if (error.name === \"timeout\" /* InnerErrorName.Timeout */ || error.name === \"suspended\" /* InnerErrorName.Suspended */) {\n return -3 /* SpecialFingerprint.Timeout */;\n }\n throw error;\n }));\n return function () {\n finishRendering();\n return fingerprintPromise;\n };\n}\n/**\n * Checks if the current browser is known for always suspending audio context\n */\nfunction doesBrowserSuspendAudioContext() {\n // Mobile Safari 11 and older\n return isWebKit() && !isDesktopWebKit() && !isWebKit606OrNewer();\n}\n/**\n * Checks if the current browser is known for applying anti-fingerprinting measures in all or some critical modes\n */\nfunction doesBrowserPerformAntifingerprinting$1() {\n return (\n // Safari ≥17\n (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) ||\n // Samsung Internet ≥26\n (isChromium() && isSamsungInternet() && isChromium122OrNewer()));\n}\n/**\n * Starts rendering the audio context.\n * When the returned function is called, the render process starts finishing.\n */\nfunction startRenderingAudio(context) {\n var renderTryMaxCount = 3;\n var renderRetryDelay = 500;\n var runningMaxAwaitTime = 500;\n var runningSufficientTime = 5000;\n var finalize = function () { return undefined; };\n var resultPromise = new Promise(function (resolve, reject) {\n var isFinalized = false;\n var renderTryCount = 0;\n var startedRunningAt = 0;\n context.oncomplete = function (event) { return resolve(event.renderedBuffer); };\n var startRunningTimeout = function () {\n setTimeout(function () { return reject(makeInnerError(\"timeout\" /* InnerErrorName.Timeout */)); }, Math.min(runningMaxAwaitTime, startedRunningAt + runningSufficientTime - Date.now()));\n };\n var tryRender = function () {\n try {\n var renderingPromise = context.startRendering();\n // `context.startRendering` has two APIs: Promise and callback, we check that it's really a promise just in case\n if (isPromise(renderingPromise)) {\n // Suppresses all unhandled rejections in case of scheduled redundant retries after successful rendering\n suppressUnhandledRejectionWarning(renderingPromise);\n }\n switch (context.state) {\n case 'running':\n startedRunningAt = Date.now();\n if (isFinalized) {\n startRunningTimeout();\n }\n break;\n // Sometimes the audio context doesn't start after calling `startRendering` (in addition to the cases where\n // audio context doesn't start at all). A known case is starting an audio context when the browser tab is in\n // background on iPhone. Retries usually help in this case.\n case 'suspended':\n // The audio context can reject starting until the tab is in foreground. Long fingerprint duration\n // in background isn't a problem, therefore the retry attempts don't count in background. It can lead to\n // a situation when a fingerprint takes very long time and finishes successfully. FYI, the audio context\n // can be suspended when `document.hidden === false` and start running after a retry.\n if (!document.hidden) {\n renderTryCount++;\n }\n if (isFinalized && renderTryCount >= renderTryMaxCount) {\n reject(makeInnerError(\"suspended\" /* InnerErrorName.Suspended */));\n }\n else {\n setTimeout(tryRender, renderRetryDelay);\n }\n break;\n }\n }\n catch (error) {\n reject(error);\n }\n };\n tryRender();\n finalize = function () {\n if (!isFinalized) {\n isFinalized = true;\n if (startedRunningAt > 0) {\n startRunningTimeout();\n }\n }\n };\n });\n return [resultPromise, finalize];\n}\nfunction getHash(signal) {\n var hash = 0;\n for (var i = 0; i < signal.length; ++i) {\n hash += Math.abs(signal[i]);\n }\n return hash;\n}\nfunction makeInnerError(name) {\n var error = new Error(name);\n error.name = name;\n return error;\n}\n\n/**\n * Creates and keeps an invisible iframe while the given function runs.\n * The given function is called when the iframe is loaded and has a body.\n * The iframe allows to measure DOM sizes inside itself.\n *\n * Notice: passing an initial HTML code doesn't work in IE.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction withIframe(action, initialHtml, domPollInterval) {\n var _a, _b, _c;\n if (domPollInterval === void 0) { domPollInterval = 50; }\n return __awaiter(this, void 0, void 0, function () {\n var d, iframe;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n d = document;\n _d.label = 1;\n case 1:\n if (!!d.body) return [3 /*break*/, 3];\n return [4 /*yield*/, wait(domPollInterval)];\n case 2:\n _d.sent();\n return [3 /*break*/, 1];\n case 3:\n iframe = d.createElement('iframe');\n _d.label = 4;\n case 4:\n _d.trys.push([4, , 10, 11]);\n return [4 /*yield*/, new Promise(function (_resolve, _reject) {\n var isComplete = false;\n var resolve = function () {\n isComplete = true;\n _resolve();\n };\n var reject = function (error) {\n isComplete = true;\n _reject(error);\n };\n iframe.onload = resolve;\n iframe.onerror = reject;\n var style = iframe.style;\n style.setProperty('display', 'block', 'important'); // Required for browsers to calculate the layout\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style.visibility = 'hidden';\n if (initialHtml && 'srcdoc' in iframe) {\n iframe.srcdoc = initialHtml;\n }\n else {\n iframe.src = 'about:blank';\n }\n d.body.appendChild(iframe);\n // WebKit in WeChat doesn't fire the iframe's `onload` for some reason.\n // This code checks for the loading state manually.\n // See https://github.com/fingerprintjs/fingerprintjs/issues/645\n var checkReadyState = function () {\n var _a, _b;\n // The ready state may never become 'complete' in Firefox despite the 'load' event being fired.\n // So an infinite setTimeout loop can happen without this check.\n // See https://github.com/fingerprintjs/fingerprintjs/pull/716#issuecomment-986898796\n if (isComplete) {\n return;\n }\n // Make sure iframe.contentWindow and iframe.contentWindow.document are both loaded\n // The contentWindow.document can miss in JSDOM (https://github.com/jsdom/jsdom).\n if (((_b = (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.document) === null || _b === void 0 ? void 0 : _b.readyState) === 'complete') {\n resolve();\n }\n else {\n setTimeout(checkReadyState, 10);\n }\n };\n checkReadyState();\n })];\n case 5:\n _d.sent();\n _d.label = 6;\n case 6:\n if (!!((_b = (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.document) === null || _b === void 0 ? void 0 : _b.body)) return [3 /*break*/, 8];\n return [4 /*yield*/, wait(domPollInterval)];\n case 7:\n _d.sent();\n return [3 /*break*/, 6];\n case 8: return [4 /*yield*/, action(iframe, iframe.contentWindow)];\n case 9: return [2 /*return*/, _d.sent()];\n case 10:\n (_c = iframe.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(iframe);\n return [7 /*endfinally*/];\n case 11: return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Creates a DOM element that matches the given selector.\n * Only single element selector are supported (without operators like space, +, >, etc).\n */\nfunction selectorToElement(selector) {\n var _a = parseSimpleCssSelector(selector), tag = _a[0], attributes = _a[1];\n var element = document.createElement(tag !== null && tag !== void 0 ? tag : 'div');\n for (var _i = 0, _b = Object.keys(attributes); _i < _b.length; _i++) {\n var name_1 = _b[_i];\n var value = attributes[name_1].join(' ');\n // Changing the `style` attribute can cause a CSP error, therefore we change the `style.cssText` property.\n // https://github.com/fingerprintjs/fingerprintjs/issues/733\n if (name_1 === 'style') {\n addStyleString(element.style, value);\n }\n else {\n element.setAttribute(name_1, value);\n }\n }\n return element;\n}\n/**\n * Adds CSS styles from a string in such a way that doesn't trigger a CSP warning (unsafe-inline or unsafe-eval)\n */\nfunction addStyleString(style, source) {\n // We don't use `style.cssText` because browsers must block it when no `unsafe-eval` CSP is presented: https://csplite.com/csp145/#w3c_note\n // Even though the browsers ignore this standard, we don't use `cssText` just in case.\n for (var _i = 0, _a = source.split(';'); _i < _a.length; _i++) {\n var property = _a[_i];\n var match = /^\\s*([\\w-]+)\\s*:\\s*(.+?)(\\s*!([\\w-]+))?\\s*$/.exec(property);\n if (match) {\n var name_2 = match[1], value = match[2], priority = match[4];\n style.setProperty(name_2, value, priority || ''); // The last argument can't be undefined in IE11\n }\n }\n}\n/**\n * Returns true if the code runs in an iframe, and any parent page's origin doesn't match the current origin\n */\nfunction isAnyParentCrossOrigin() {\n var currentWindow = window;\n for (;;) {\n var parentWindow = currentWindow.parent;\n if (!parentWindow || parentWindow === currentWindow) {\n return false; // The top page is reached\n }\n try {\n if (parentWindow.location.origin !== currentWindow.location.origin) {\n return true;\n }\n }\n catch (error) {\n // The error is thrown when `origin` is accessed on `parentWindow.location` when the parent is cross-origin\n if (error instanceof Error && error.name === 'SecurityError') {\n return true;\n }\n throw error;\n }\n currentWindow = parentWindow;\n }\n}\n\n// We use m or w because these two characters take up the maximum width.\n// And we use a LLi so that the same matching fonts can get separated.\nvar testString = 'mmMwWLliI0O&1';\n// We test using 48px font size, we may use any size. I guess larger the better.\nvar textSize = '48px';\n// A font will be compared against all the three default fonts.\n// And if for any default fonts it doesn't match, then that font is available.\nvar baseFonts = ['monospace', 'sans-serif', 'serif'];\nvar fontList = [\n // This is android-specific font from \"Roboto\" family\n 'sans-serif-thin',\n 'ARNO PRO',\n 'Agency FB',\n 'Arabic Typesetting',\n 'Arial Unicode MS',\n 'AvantGarde Bk BT',\n 'BankGothic Md BT',\n 'Batang',\n 'Bitstream Vera Sans Mono',\n 'Calibri',\n 'Century',\n 'Century Gothic',\n 'Clarendon',\n 'EUROSTILE',\n 'Franklin Gothic',\n 'Futura Bk BT',\n 'Futura Md BT',\n 'GOTHAM',\n 'Gill Sans',\n 'HELV',\n 'Haettenschweiler',\n 'Helvetica Neue',\n 'Humanst521 BT',\n 'Leelawadee',\n 'Letter Gothic',\n 'Levenim MT',\n 'Lucida Bright',\n 'Lucida Sans',\n 'Menlo',\n 'MS Mincho',\n 'MS Outlook',\n 'MS Reference Specialty',\n 'MS UI Gothic',\n 'MT Extra',\n 'MYRIAD PRO',\n 'Marlett',\n 'Meiryo UI',\n 'Microsoft Uighur',\n 'Minion Pro',\n 'Monotype Corsiva',\n 'PMingLiU',\n 'Pristina',\n 'SCRIPTINA',\n 'Segoe UI Light',\n 'Serifa',\n 'SimHei',\n 'Small Fonts',\n 'Staccato222 BT',\n 'TRAJAN PRO',\n 'Univers CE 55 Medium',\n 'Vrinda',\n 'ZWAdobeF',\n];\n// kudos to http://www.lalit.org/lab/javascript-css-font-detect/\nfunction getFonts() {\n var _this = this;\n // Running the script in an iframe makes it not affect the page look and not be affected by the page CSS. See:\n // https://github.com/fingerprintjs/fingerprintjs/issues/592\n // https://github.com/fingerprintjs/fingerprintjs/issues/628\n return withIframe(function (_, _a) {\n var document = _a.document;\n return __awaiter(_this, void 0, void 0, function () {\n var holder, spansContainer, defaultWidth, defaultHeight, createSpan, createSpanWithFonts, initializeBaseFontsSpans, initializeFontsSpans, isFontAvailable, baseFontsSpans, fontsSpans, index;\n return __generator(this, function (_b) {\n holder = document.body;\n holder.style.fontSize = textSize;\n spansContainer = document.createElement('div');\n spansContainer.style.setProperty('visibility', 'hidden', 'important');\n defaultWidth = {};\n defaultHeight = {};\n createSpan = function (fontFamily) {\n var span = document.createElement('span');\n var style = span.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style.fontFamily = fontFamily;\n span.textContent = testString;\n spansContainer.appendChild(span);\n return span;\n };\n createSpanWithFonts = function (fontToDetect, baseFont) {\n return createSpan(\"'\".concat(fontToDetect, \"',\").concat(baseFont));\n };\n initializeBaseFontsSpans = function () {\n return baseFonts.map(createSpan);\n };\n initializeFontsSpans = function () {\n // Stores {fontName : [spans for that font]}\n var spans = {};\n var _loop_1 = function (font) {\n spans[font] = baseFonts.map(function (baseFont) { return createSpanWithFonts(font, baseFont); });\n };\n for (var _i = 0, fontList_1 = fontList; _i < fontList_1.length; _i++) {\n var font = fontList_1[_i];\n _loop_1(font);\n }\n return spans;\n };\n isFontAvailable = function (fontSpans) {\n return baseFonts.some(function (baseFont, baseFontIndex) {\n return fontSpans[baseFontIndex].offsetWidth !== defaultWidth[baseFont] ||\n fontSpans[baseFontIndex].offsetHeight !== defaultHeight[baseFont];\n });\n };\n baseFontsSpans = initializeBaseFontsSpans();\n fontsSpans = initializeFontsSpans();\n // add all the spans to the DOM\n holder.appendChild(spansContainer);\n // get the default width for the three base fonts\n for (index = 0; index < baseFonts.length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth; // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight; // height for the default font\n }\n // check available fonts\n return [2 /*return*/, fontList.filter(function (font) { return isFontAvailable(fontsSpans[font]); })];\n });\n });\n });\n}\n\nfunction getPlugins() {\n var rawPlugins = navigator.plugins;\n if (!rawPlugins) {\n return undefined;\n }\n var plugins = [];\n // Safari 10 doesn't support iterating navigator.plugins with for...of\n for (var i = 0; i < rawPlugins.length; ++i) {\n var plugin = rawPlugins[i];\n if (!plugin) {\n continue;\n }\n var mimeTypes = [];\n for (var j = 0; j < plugin.length; ++j) {\n var mimeType = plugin[j];\n mimeTypes.push({\n type: mimeType.type,\n suffixes: mimeType.suffixes,\n });\n }\n plugins.push({\n name: plugin.name,\n description: plugin.description,\n mimeTypes: mimeTypes,\n });\n }\n return plugins;\n}\n\n/**\n * @see https://www.browserleaks.com/canvas#how-does-it-work\n *\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\n * Canvas image is noised in private mode of Safari 17, so image rendering is skipped in Safari 17.\n */\nfunction getCanvasFingerprint() {\n return getUnstableCanvasFingerprint(doesBrowserPerformAntifingerprinting());\n}\n/**\n * A version of the entropy source without stabilization.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getUnstableCanvasFingerprint(skipImages) {\n var _a;\n var winding = false;\n var geometry;\n var text;\n var _b = makeCanvasContext(), canvas = _b[0], context = _b[1];\n if (!isSupported(canvas, context)) {\n geometry = text = \"unsupported\" /* ImageStatus.Unsupported */;\n }\n else {\n winding = doesSupportWinding(context);\n if (skipImages) {\n geometry = text = \"skipped\" /* ImageStatus.Skipped */;\n }\n else {\n _a = renderImages(canvas, context), geometry = _a[0], text = _a[1];\n }\n }\n return { winding: winding, geometry: geometry, text: text };\n}\nfunction makeCanvasContext() {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n return [canvas, canvas.getContext('2d')];\n}\nfunction isSupported(canvas, context) {\n return !!(context && canvas.toDataURL);\n}\nfunction doesSupportWinding(context) {\n // https://web.archive.org/web/20170825024655/http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n context.rect(0, 0, 10, 10);\n context.rect(2, 2, 6, 6);\n return !context.isPointInPath(5, 5, 'evenodd');\n}\nfunction renderImages(canvas, context) {\n renderTextImage(canvas, context);\n var textImage1 = canvasToString(canvas);\n var textImage2 = canvasToString(canvas); // It's slightly faster to double-encode the text image\n // Some browsers add a noise to the canvas: https://github.com/fingerprintjs/fingerprintjs/issues/791\n // The canvas is excluded from the fingerprint in this case\n if (textImage1 !== textImage2) {\n return [\"unstable\" /* ImageStatus.Unstable */, \"unstable\" /* ImageStatus.Unstable */];\n }\n // Text is unstable:\n // https://github.com/fingerprintjs/fingerprintjs/issues/583\n // https://github.com/fingerprintjs/fingerprintjs/issues/103\n // Therefore it's extracted into a separate image.\n renderGeometryImage(canvas, context);\n var geometryImage = canvasToString(canvas);\n return [geometryImage, textImage1];\n}\nfunction renderTextImage(canvas, context) {\n // Resizing the canvas cleans it\n canvas.width = 240;\n canvas.height = 60;\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#f60';\n context.fillRect(100, 1, 62, 20);\n context.fillStyle = '#069';\n // It's important to use explicit built-in fonts in order to exclude the affect of font preferences\n // (there is a separate entropy source for them).\n context.font = '11pt \"Times New Roman\"';\n // The choice of emojis has a gigantic impact on rendering performance (especially in FF).\n // Some newer emojis cause it to slow down 50-200 times.\n // There must be no text to the right of the emoji, see https://github.com/fingerprintjs/fingerprintjs/issues/574\n // A bare emoji shouldn't be used because the canvas will change depending on the script encoding:\n // https://github.com/fingerprintjs/fingerprintjs/issues/66\n // Escape sequence shouldn't be used too because Terser will turn it into a bare unicode.\n var printedText = \"Cwm fjordbank gly \".concat(String.fromCharCode(55357, 56835) /* 😃 */);\n context.fillText(printedText, 2, 15);\n context.fillStyle = 'rgba(102, 204, 0, 0.2)';\n context.font = '18pt Arial';\n context.fillText(printedText, 4, 45);\n}\nfunction renderGeometryImage(canvas, context) {\n // Resizing the canvas cleans it\n canvas.width = 122;\n canvas.height = 110;\n // Canvas blending\n // https://web.archive.org/web/20170826194121/http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n context.globalCompositeOperation = 'multiply';\n for (var _i = 0, _a = [\n ['#f2f', 40, 40],\n ['#2ff', 80, 40],\n ['#ff2', 60, 80],\n ]; _i < _a.length; _i++) {\n var _b = _a[_i], color = _b[0], x = _b[1], y = _b[2];\n context.fillStyle = color;\n context.beginPath();\n context.arc(x, y, 40, 0, Math.PI * 2, true);\n context.closePath();\n context.fill();\n }\n // Canvas winding\n // https://web.archive.org/web/20130913061632/http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n context.fillStyle = '#f9c';\n context.arc(60, 60, 60, 0, Math.PI * 2, true);\n context.arc(60, 60, 20, 0, Math.PI * 2, true);\n context.fill('evenodd');\n}\nfunction canvasToString(canvas) {\n return canvas.toDataURL();\n}\n/**\n * Checks if the current browser is known for applying anti-fingerprinting measures in all or some critical modes\n */\nfunction doesBrowserPerformAntifingerprinting() {\n // Safari 17\n return isWebKit() && isWebKit616OrNewer() && isSafariWebKit();\n}\n\n/**\n * This is a crude and primitive touch screen detection. It's not possible to currently reliably detect the availability\n * of a touch screen with a JS, without actually subscribing to a touch event.\n *\n * @see http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n * @see https://github.com/Modernizr/Modernizr/issues/548\n */\nfunction getTouchSupport() {\n var n = navigator;\n var maxTouchPoints = 0;\n var touchEvent;\n if (n.maxTouchPoints !== undefined) {\n maxTouchPoints = toInt(n.maxTouchPoints);\n }\n else if (n.msMaxTouchPoints !== undefined) {\n maxTouchPoints = n.msMaxTouchPoints;\n }\n try {\n document.createEvent('TouchEvent');\n touchEvent = true;\n }\n catch (_a) {\n touchEvent = false;\n }\n var touchStart = 'ontouchstart' in window;\n return {\n maxTouchPoints: maxTouchPoints,\n touchEvent: touchEvent,\n touchStart: touchStart,\n };\n}\n\nfunction getOsCpu() {\n return navigator.oscpu;\n}\n\nfunction getLanguages() {\n var n = navigator;\n var result = [];\n var language = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage;\n if (language !== undefined) {\n result.push([language]);\n }\n if (Array.isArray(n.languages)) {\n // Starting from Chromium 86, there is only a single value in `navigator.language` in Incognito mode:\n // the value of `navigator.language`. Therefore the value is ignored in this browser.\n if (!(isChromium() && isChromium86OrNewer())) {\n result.push(n.languages);\n }\n }\n else if (typeof n.languages === 'string') {\n var languages = n.languages;\n if (languages) {\n result.push(languages.split(','));\n }\n }\n return result;\n}\n\nfunction getColorDepth() {\n return window.screen.colorDepth;\n}\n\nfunction getDeviceMemory() {\n // `navigator.deviceMemory` is a string containing a number in some unidentified cases\n return replaceNaN(toFloat(navigator.deviceMemory), undefined);\n}\n\n/**\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\n * The window resolution is always the document size in private mode of Safari 17,\n * so the window resolution is not used in Safari 17.\n */\nfunction getScreenResolution() {\n if (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) {\n return undefined;\n }\n return getUnstableScreenResolution();\n}\n/**\n * A version of the entropy source without stabilization.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getUnstableScreenResolution() {\n var s = screen;\n // Some browsers return screen resolution as strings, e.g. \"1200\", instead of a number, e.g. 1200.\n // I suspect it's done by certain plugins that randomize browser properties to prevent fingerprinting.\n // Some browsers even return screen resolution as not numbers.\n var parseDimension = function (value) { return replaceNaN(toInt(value), null); };\n var dimensions = [parseDimension(s.width), parseDimension(s.height)];\n dimensions.sort().reverse();\n return dimensions;\n}\n\nvar screenFrameCheckInterval = 2500;\nvar roundingPrecision = 10;\n// The type is readonly to protect from unwanted mutations\nvar screenFrameBackup;\nvar screenFrameSizeTimeoutId;\n/**\n * Starts watching the screen frame size. When a non-zero size appears, the size is saved and the watch is stopped.\n * Later, when `getScreenFrame` runs, it will return the saved non-zero size if the current size is null.\n *\n * This trick is required to mitigate the fact that the screen frame turns null in some cases.\n * See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\n */\nfunction watchScreenFrame() {\n if (screenFrameSizeTimeoutId !== undefined) {\n return;\n }\n var checkScreenFrame = function () {\n var frameSize = getCurrentScreenFrame();\n if (isFrameSizeNull(frameSize)) {\n screenFrameSizeTimeoutId = setTimeout(checkScreenFrame, screenFrameCheckInterval);\n }\n else {\n screenFrameBackup = frameSize;\n screenFrameSizeTimeoutId = undefined;\n }\n };\n checkScreenFrame();\n}\n/**\n * A version of the entropy source without stabilization.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getUnstableScreenFrame() {\n var _this = this;\n watchScreenFrame();\n return function () { return __awaiter(_this, void 0, void 0, function () {\n var frameSize;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n frameSize = getCurrentScreenFrame();\n if (!isFrameSizeNull(frameSize)) return [3 /*break*/, 2];\n if (screenFrameBackup) {\n return [2 /*return*/, __spreadArray([], screenFrameBackup, true)];\n }\n if (!getFullscreenElement()) return [3 /*break*/, 2];\n // Some browsers set the screen frame to zero when programmatic fullscreen is on.\n // There is a chance of getting a non-zero frame after exiting the fullscreen.\n // See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\n return [4 /*yield*/, exitFullscreen()];\n case 1:\n // Some browsers set the screen frame to zero when programmatic fullscreen is on.\n // There is a chance of getting a non-zero frame after exiting the fullscreen.\n // See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\n _a.sent();\n frameSize = getCurrentScreenFrame();\n _a.label = 2;\n case 2:\n if (!isFrameSizeNull(frameSize)) {\n screenFrameBackup = frameSize;\n }\n return [2 /*return*/, frameSize];\n }\n });\n }); };\n}\n/**\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\n *\n * Sometimes the available screen resolution changes a bit, e.g. 1900x1440 → 1900x1439. A possible reason: macOS Dock\n * shrinks to fit more icons when there is too little space. The rounding is used to mitigate the difference.\n *\n * The frame width is always 0 in private mode of Safari 17, so the frame is not used in Safari 17.\n */\nfunction getScreenFrame() {\n var _this = this;\n if (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) {\n return function () { return Promise.resolve(undefined); };\n }\n var screenFrameGetter = getUnstableScreenFrame();\n return function () { return __awaiter(_this, void 0, void 0, function () {\n var frameSize, processSize;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, screenFrameGetter()];\n case 1:\n frameSize = _a.sent();\n processSize = function (sideSize) { return (sideSize === null ? null : round(sideSize, roundingPrecision)); };\n // It might look like I don't know about `for` and `map`.\n // In fact, such code is used to avoid TypeScript issues without using `as`.\n return [2 /*return*/, [processSize(frameSize[0]), processSize(frameSize[1]), processSize(frameSize[2]), processSize(frameSize[3])]];\n }\n });\n }); };\n}\nfunction getCurrentScreenFrame() {\n var s = screen;\n // Some browsers return screen resolution as strings, e.g. \"1200\", instead of a number, e.g. 1200.\n // I suspect it's done by certain plugins that randomize browser properties to prevent fingerprinting.\n //\n // Some browsers (IE, Edge ≤18) don't provide `screen.availLeft` and `screen.availTop`. The property values are\n // replaced with 0 in such cases to not lose the entropy from `screen.availWidth` and `screen.availHeight`.\n return [\n replaceNaN(toFloat(s.availTop), null),\n replaceNaN(toFloat(s.width) - toFloat(s.availWidth) - replaceNaN(toFloat(s.availLeft), 0), null),\n replaceNaN(toFloat(s.height) - toFloat(s.availHeight) - replaceNaN(toFloat(s.availTop), 0), null),\n replaceNaN(toFloat(s.availLeft), null),\n ];\n}\nfunction isFrameSizeNull(frameSize) {\n for (var i = 0; i < 4; ++i) {\n if (frameSize[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getHardwareConcurrency() {\n // sometimes hardware concurrency is a string\n return replaceNaN(toInt(navigator.hardwareConcurrency), undefined);\n}\n\nfunction getTimezone() {\n var _a;\n var DateTimeFormat = (_a = window.Intl) === null || _a === void 0 ? void 0 : _a.DateTimeFormat;\n if (DateTimeFormat) {\n var timezone = new DateTimeFormat().resolvedOptions().timeZone;\n if (timezone) {\n return timezone;\n }\n }\n // For browsers that don't support timezone names\n // The minus is intentional because the JS offset is opposite to the real offset\n var offset = -getTimezoneOffset();\n return \"UTC\".concat(offset >= 0 ? '+' : '').concat(offset);\n}\nfunction getTimezoneOffset() {\n var currentYear = new Date().getFullYear();\n // The timezone offset may change over time due to daylight saving time (DST) shifts.\n // The non-DST timezone offset is used as the result timezone offset.\n // Since the DST season differs in the northern and the southern hemispheres,\n // both January and July timezones offsets are considered.\n return Math.max(\n // `getTimezoneOffset` returns a number as a string in some unidentified cases\n toFloat(new Date(currentYear, 0, 1).getTimezoneOffset()), toFloat(new Date(currentYear, 6, 1).getTimezoneOffset()));\n}\n\nfunction getSessionStorage() {\n try {\n return !!window.sessionStorage;\n }\n catch (error) {\n /* SecurityError when referencing it means it exists */\n return true;\n }\n}\n\n// https://bugzilla.mozilla.org/show_bug.cgi?id=781447\nfunction getLocalStorage() {\n try {\n return !!window.localStorage;\n }\n catch (e) {\n /* SecurityError when referencing it means it exists */\n return true;\n }\n}\n\nfunction getIndexedDB() {\n // IE and Edge don't allow accessing indexedDB in private mode, therefore IE and Edge will have different\n // visitor identifier in normal and private modes.\n if (isTrident() || isEdgeHTML()) {\n return undefined;\n }\n try {\n return !!window.indexedDB;\n }\n catch (e) {\n /* SecurityError when referencing it means it exists */\n return true;\n }\n}\n\nfunction getOpenDatabase() {\n return !!window.openDatabase;\n}\n\nfunction getCpuClass() {\n return navigator.cpuClass;\n}\n\nfunction getPlatform() {\n // Android Chrome 86 and 87 and Android Firefox 80 and 84 don't mock the platform value when desktop mode is requested\n var platform = navigator.platform;\n // iOS mocks the platform value when desktop version is requested: https://github.com/fingerprintjs/fingerprintjs/issues/514\n // iPad uses desktop mode by default since iOS 13\n // The value is 'MacIntel' on M1 Macs\n // The value is 'iPhone' on iPod Touch\n if (platform === 'MacIntel') {\n if (isWebKit() && !isDesktopWebKit()) {\n return isIPad() ? 'iPad' : 'iPhone';\n }\n }\n return platform;\n}\n\nfunction getVendor() {\n return navigator.vendor || '';\n}\n\n/**\n * Checks for browser-specific (not engine specific) global variables to tell browsers with the same engine apart.\n * Only somewhat popular browsers are considered.\n */\nfunction getVendorFlavors() {\n var flavors = [];\n for (var _i = 0, _a = [\n // Blink and some browsers on iOS\n 'chrome',\n // Safari on macOS\n 'safari',\n // Chrome on iOS (checked in 85 on 13 and 87 on 14)\n '__crWeb',\n '__gCrWeb',\n // Yandex Browser on iOS, macOS and Android (checked in 21.2 on iOS 14, macOS and Android)\n 'yandex',\n // Yandex Browser on iOS (checked in 21.2 on 14)\n '__yb',\n '__ybro',\n // Firefox on iOS (checked in 32 on 14)\n '__firefox__',\n // Edge on iOS (checked in 46 on 14)\n '__edgeTrackingPreventionStatistics',\n 'webkit',\n // Opera Touch on iOS (checked in 2.6 on 14)\n 'oprt',\n // Samsung Internet on Android (checked in 11.1)\n 'samsungAr',\n // UC Browser on Android (checked in 12.10 and 13.0)\n 'ucweb',\n 'UCShellJava',\n // Puffin on Android (checked in 9.0)\n 'puffinDevice',\n // UC on iOS and Opera on Android have no specific global variables\n // Edge for Android isn't checked\n ]; _i < _a.length; _i++) {\n var key = _a[_i];\n var value = window[key];\n if (value && typeof value === 'object') {\n flavors.push(key);\n }\n }\n return flavors.sort();\n}\n\n/**\n * navigator.cookieEnabled cannot detect custom or nuanced cookie blocking configurations. For example, when blocking\n * cookies via the Advanced Privacy Settings in IE9, it always returns true. And there have been issues in the past with\n * site-specific exceptions. Don't rely on it.\n *\n * @see https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cookies.js Taken from here\n */\nfunction areCookiesEnabled() {\n var d = document;\n // Taken from here: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cookies.js\n // navigator.cookieEnabled cannot detect custom or nuanced cookie blocking configurations. For example, when blocking\n // cookies via the Advanced Privacy Settings in IE9, it always returns true. And there have been issues in the past\n // with site-specific exceptions. Don't rely on it.\n // try..catch because some in situations `document.cookie` is exposed but throws a\n // SecurityError if you try to access it; e.g. documents created from data URIs\n // or in sandboxed iframes (depending on flags/context)\n try {\n // Create cookie\n d.cookie = 'cookietest=1; SameSite=Strict;';\n var result = d.cookie.indexOf('cookietest=') !== -1;\n // Delete cookie\n d.cookie = 'cookietest=1; SameSite=Strict; expires=Thu, 01-Jan-1970 00:00:01 GMT';\n return result;\n }\n catch (e) {\n return false;\n }\n}\n\n/**\n * Only single element selector are supported (no operators like space, +, >, etc).\n * `embed` and `position: fixed;` will be considered as blocked anyway because it always has no offsetParent.\n * Avoid `iframe` and anything with `[src=]` because they produce excess HTTP requests.\n *\n * The \"inappropriate\" selectors are obfuscated. See https://github.com/fingerprintjs/fingerprintjs/issues/734.\n * A function is used instead of a plain object to help tree-shaking.\n *\n * The function code is generated automatically. See docs/content_blockers.md to learn how to make the list.\n */\nfunction getFilters() {\n var fromB64 = atob; // Just for better minification\n return {\n abpIndo: [\n '#Iklan-Melayang',\n '#Kolom-Iklan-728',\n '#SidebarIklan-wrapper',\n '[title=\"ALIENBOLA\" i]',\n fromB64('I0JveC1CYW5uZXItYWRz'),\n ],\n abpvn: ['.quangcao', '#mobileCatfish', fromB64('LmNsb3NlLWFkcw=='), '[id^=\"bn_bottom_fixed_\"]', '#pmadv'],\n adBlockFinland: [\n '.mainostila',\n fromB64('LnNwb25zb3JpdA=='),\n '.ylamainos',\n fromB64('YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd'),\n ],\n adBlockPersian: [\n '#navbar_notice_50',\n '.kadr',\n 'TABLE[width=\"140px\"]',\n '#divAgahi',\n fromB64('YVtocmVmXj0iaHR0cDovL2cxLnYuZndtcm0ubmV0L2FkLyJd'),\n ],\n adBlockWarningRemoval: [\n '#adblock-honeypot',\n '.adblocker-root',\n '.wp_adblock_detect',\n fromB64('LmhlYWRlci1ibG9ja2VkLWFk'),\n fromB64('I2FkX2Jsb2NrZXI='),\n ],\n adGuardAnnoyances: [\n '.hs-sosyal',\n '#cookieconsentdiv',\n 'div[class^=\"app_gdpr\"]',\n '.as-oil',\n '[data-cypress=\"soft-push-notification-modal\"]',\n ],\n adGuardBase: [\n '.BetterJsPopOverlay',\n fromB64('I2FkXzMwMFgyNTA='),\n fromB64('I2Jhbm5lcmZsb2F0MjI='),\n fromB64('I2NhbXBhaWduLWJhbm5lcg=='),\n fromB64('I0FkLUNvbnRlbnQ='),\n ],\n adGuardChinese: [\n fromB64('LlppX2FkX2FfSA=='),\n fromB64('YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd'),\n '#widget-quan',\n fromB64('YVtocmVmKj0iLzg0OTkyMDIwLnh5eiJd'),\n fromB64('YVtocmVmKj0iLjE5NTZobC5jb20vIl0='),\n ],\n adGuardFrench: [\n '#pavePub',\n fromB64('LmFkLWRlc2t0b3AtcmVjdGFuZ2xl'),\n '.mobile_adhesion',\n '.widgetadv',\n fromB64('LmFkc19iYW4='),\n ],\n adGuardGerman: ['aside[data-portal-id=\"leaderboard\"]'],\n adGuardJapanese: [\n '#kauli_yad_1',\n fromB64('YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0='),\n fromB64('Ll9wb3BJbl9pbmZpbml0ZV9hZA=='),\n fromB64('LmFkZ29vZ2xl'),\n fromB64('Ll9faXNib29zdFJldHVybkFk'),\n ],\n adGuardMobile: [\n fromB64('YW1wLWF1dG8tYWRz'),\n fromB64('LmFtcF9hZA=='),\n 'amp-embed[type=\"24smi\"]',\n '#mgid_iframe1',\n fromB64('I2FkX2ludmlld19hcmVh'),\n ],\n adGuardRussian: [\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0='),\n fromB64('LnJlY2xhbWE='),\n 'div[id^=\"smi2adblock\"]',\n fromB64('ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd'),\n '#psyduckpockeball',\n ],\n adGuardSocial: [\n fromB64('YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0='),\n fromB64('YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0='),\n '.etsy-tweet',\n '#inlineShare',\n '.popup-social',\n ],\n adGuardSpanishPortuguese: ['#barraPublicidade', '#Publicidade', '#publiEspecial', '#queTooltip', '.cnt-publi'],\n adGuardTrackingProtection: [\n '#qoo-counter',\n fromB64('YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ=='),\n fromB64('YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0='),\n fromB64('YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ=='),\n '#top100counter',\n ],\n adGuardTurkish: [\n '#backkapat',\n fromB64('I3Jla2xhbWk='),\n fromB64('YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0='),\n fromB64('YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd'),\n fromB64('YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ=='),\n ],\n bulgarian: [fromB64('dGQjZnJlZW5ldF90YWJsZV9hZHM='), '#ea_intext_div', '.lapni-pop-over', '#xenium_hot_offers'],\n easyList: [\n '.yb-floorad',\n fromB64('LndpZGdldF9wb19hZHNfd2lkZ2V0'),\n fromB64('LnRyYWZmaWNqdW5reS1hZA=='),\n '.textad_headline',\n fromB64('LnNwb25zb3JlZC10ZXh0LWxpbmtz'),\n ],\n easyListChina: [\n fromB64('LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ=='),\n fromB64('LmZyb250cGFnZUFkdk0='),\n '#taotaole',\n '#aafoot.top_box',\n '.cfa_popup',\n ],\n easyListCookie: [\n '.ezmob-footer',\n '.cc-CookieWarning',\n '[data-cookie-number]',\n fromB64('LmF3LWNvb2tpZS1iYW5uZXI='),\n '.sygnal24-gdpr-modal-wrap',\n ],\n easyListCzechSlovak: [\n '#onlajny-stickers',\n fromB64('I3Jla2xhbW5pLWJveA=='),\n fromB64('LnJla2xhbWEtbWVnYWJvYXJk'),\n '.sklik',\n fromB64('W2lkXj0ic2tsaWtSZWtsYW1hIl0='),\n ],\n easyListDutch: [\n fromB64('I2FkdmVydGVudGll'),\n fromB64('I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw=='),\n '.adstekst',\n fromB64('YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0='),\n '#semilo-lrectangle',\n ],\n easyListGermany: [\n '#SSpotIMPopSlider',\n fromB64('LnNwb25zb3JsaW5rZ3J1ZW4='),\n fromB64('I3dlcmJ1bmdza3k='),\n fromB64('I3Jla2xhbWUtcmVjaHRzLW1pdHRl'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9iZDc0Mi5jb20vIl0='),\n ],\n easyListItaly: [\n fromB64('LmJveF9hZHZfYW5udW5jaQ=='),\n '.sb-box-pubbliredazionale',\n fromB64('YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ=='),\n ],\n easyListLithuania: [\n fromB64('LnJla2xhbW9zX3RhcnBhcw=='),\n fromB64('LnJla2xhbW9zX251b3JvZG9z'),\n fromB64('aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd'),\n fromB64('aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd'),\n fromB64('aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd'),\n ],\n estonian: [fromB64('QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==')],\n fanboyAnnoyances: ['#ac-lre-player', '.navigate-to-top', '#subscribe_popup', '.newsletter_holder', '#back-top'],\n fanboyAntiFacebook: ['.util-bar-module-firefly-visible'],\n fanboyEnhancedTrackers: [\n '.open.pushModal',\n '#issuem-leaky-paywall-articles-zero-remaining-nag',\n '#sovrn_container',\n 'div[class$=\"-hide\"][zoompage-fontsize][style=\"display: block;\"]',\n '.BlockNag__Card',\n ],\n fanboySocial: ['#FollowUs', '#meteored_share', '#social_follow', '.article-sharer', '.community__social-desc'],\n frellwitSwedish: [\n fromB64('YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ=='),\n fromB64('YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ=='),\n 'article.category-samarbete',\n fromB64('ZGl2LmhvbGlkQWRz'),\n 'ul.adsmodern',\n ],\n greekAdBlock: [\n fromB64('QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd'),\n fromB64('QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ=='),\n fromB64('QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd'),\n 'DIV.agores300',\n 'TABLE.advright',\n ],\n hungarian: [\n '#cemp_doboz',\n '.optimonk-iframe-container',\n fromB64('LmFkX19tYWlu'),\n fromB64('W2NsYXNzKj0iR29vZ2xlQWRzIl0='),\n '#hirdetesek_box',\n ],\n iDontCareAboutCookies: [\n '.alert-info[data-block-track*=\"CookieNotice\"]',\n '.ModuleTemplateCookieIndicator',\n '.o--cookies--container',\n '#cookies-policy-sticky',\n '#stickyCookieBar',\n ],\n icelandicAbp: [fromB64('QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==')],\n latvian: [\n fromB64('YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0O' +\n 'iA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0='),\n fromB64('YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6I' +\n 'DMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ=='),\n ],\n listKr: [\n fromB64('YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0='),\n fromB64('I2xpdmVyZUFkV3JhcHBlcg=='),\n fromB64('YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ=='),\n fromB64('aW5zLmZhc3R2aWV3LWFk'),\n '.revenue_unit_item.dable',\n ],\n listeAr: [\n fromB64('LmdlbWluaUxCMUFk'),\n '.right-and-left-sponsers',\n fromB64('YVtocmVmKj0iLmFmbGFtLmluZm8iXQ=='),\n fromB64('YVtocmVmKj0iYm9vcmFxLm9yZyJd'),\n fromB64('YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd'),\n ],\n listeFr: [\n fromB64('YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ=='),\n fromB64('I2FkY29udGFpbmVyX3JlY2hlcmNoZQ=='),\n fromB64('YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0='),\n '.site-pub-interstitiel',\n 'div[id^=\"crt-\"][data-criteo-id]',\n ],\n officialPolish: [\n '#ceneo-placeholder-ceneo-12',\n fromB64('W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd'),\n fromB64('YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ=='),\n fromB64('YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ=='),\n fromB64('ZGl2I3NrYXBpZWNfYWQ='),\n ],\n ro: [\n fromB64('YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd'),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0='),\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd'),\n 'a[href^=\"/url/\"]',\n ],\n ruAd: [\n fromB64('YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd'),\n fromB64('YVtocmVmKj0iLy91dGltZy5ydS8iXQ=='),\n fromB64('YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0='),\n '#pgeldiz',\n '.yandex-rtb-block',\n ],\n thaiAds: [\n 'a[href*=macau-uta-popup]',\n fromB64('I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA=='),\n fromB64('LmFkczMwMHM='),\n '.bumq',\n '.img-kosana',\n ],\n webAnnoyancesUltralist: [\n '#mod-social-share-2',\n '#social-tools',\n fromB64('LmN0cGwtZnVsbGJhbm5lcg=='),\n '.zergnet-recommend',\n '.yt.btn-link.btn-md.btn',\n ],\n };\n}\n/**\n * The order of the returned array means nothing (it's always sorted alphabetically).\n *\n * Notice that the source is slightly unstable.\n * Safari provides a 2-taps way to disable all content blockers on a page temporarily.\n * Also content blockers can be disabled permanently for a domain, but it requires 4 taps.\n * So empty array shouldn't be treated as \"no blockers\", it should be treated as \"no signal\".\n * If you are a website owner, don't make your visitors want to disable content blockers.\n */\nfunction getDomBlockers(_a) {\n var _b = _a === void 0 ? {} : _a, debug = _b.debug;\n return __awaiter(this, void 0, void 0, function () {\n var filters, filterNames, allSelectors, blockedSelectors, activeBlockers;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!isApplicable()) {\n return [2 /*return*/, undefined];\n }\n filters = getFilters();\n filterNames = Object.keys(filters);\n allSelectors = (_c = []).concat.apply(_c, filterNames.map(function (filterName) { return filters[filterName]; }));\n return [4 /*yield*/, getBlockedSelectors(allSelectors)];\n case 1:\n blockedSelectors = _d.sent();\n if (debug) {\n printDebug(filters, blockedSelectors);\n }\n activeBlockers = filterNames.filter(function (filterName) {\n var selectors = filters[filterName];\n var blockedCount = countTruthy(selectors.map(function (selector) { return blockedSelectors[selector]; }));\n return blockedCount > selectors.length * 0.6;\n });\n activeBlockers.sort();\n return [2 /*return*/, activeBlockers];\n }\n });\n });\n}\nfunction isApplicable() {\n // Safari (desktop and mobile) and all Android browsers keep content blockers in both regular and private mode\n return isWebKit() || isAndroid();\n}\nfunction getBlockedSelectors(selectors) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var d, root, elements, blockedSelectors, i, element, holder, i;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n d = document;\n root = d.createElement('div');\n elements = new Array(selectors.length);\n blockedSelectors = {} // Set() isn't used just in case somebody need older browser support\n ;\n forceShow(root);\n // First create all elements that can be blocked. If the DOM steps below are done in a single cycle,\n // browser will alternate tree modification and layout reading, that is very slow.\n for (i = 0; i < selectors.length; ++i) {\n element = selectorToElement(selectors[i]);\n if (element.tagName === 'DIALOG') {\n element.show();\n }\n holder = d.createElement('div') // Protects from unwanted effects of `+` and `~` selectors of filters\n ;\n forceShow(holder);\n holder.appendChild(element);\n root.appendChild(holder);\n elements[i] = element;\n }\n _b.label = 1;\n case 1:\n if (!!d.body) return [3 /*break*/, 3];\n return [4 /*yield*/, wait(50)];\n case 2:\n _b.sent();\n return [3 /*break*/, 1];\n case 3:\n d.body.appendChild(root);\n try {\n // Then check which of the elements are blocked\n for (i = 0; i < selectors.length; ++i) {\n if (!elements[i].offsetParent) {\n blockedSelectors[selectors[i]] = true;\n }\n }\n }\n finally {\n // Then remove the elements\n (_a = root.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(root);\n }\n return [2 /*return*/, blockedSelectors];\n }\n });\n });\n}\nfunction forceShow(element) {\n element.style.setProperty('visibility', 'hidden', 'important');\n element.style.setProperty('display', 'block', 'important');\n}\nfunction printDebug(filters, blockedSelectors) {\n var message = 'DOM blockers debug:\\n```';\n for (var _i = 0, _a = Object.keys(filters); _i < _a.length; _i++) {\n var filterName = _a[_i];\n message += \"\\n\".concat(filterName, \":\");\n for (var _b = 0, _c = filters[filterName]; _b < _c.length; _b++) {\n var selector = _c[_b];\n message += \"\\n \".concat(blockedSelectors[selector] ? '🚫' : 'âž¡ï¸', \" \").concat(selector);\n }\n }\n // console.log is ok here because it's under a debug clause\n // eslint-disable-next-line no-console\n console.log(\"\".concat(message, \"\\n```\"));\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/color-gamut\n */\nfunction getColorGamut() {\n // rec2020 includes p3 and p3 includes srgb\n for (var _i = 0, _a = ['rec2020', 'p3', 'srgb']; _i < _a.length; _i++) {\n var gamut = _a[_i];\n if (matchMedia(\"(color-gamut: \".concat(gamut, \")\")).matches) {\n return gamut;\n }\n }\n return undefined;\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/inverted-colors\n */\nfunction areColorsInverted() {\n if (doesMatch$5('inverted')) {\n return true;\n }\n if (doesMatch$5('none')) {\n return false;\n }\n return undefined;\n}\nfunction doesMatch$5(value) {\n return matchMedia(\"(inverted-colors: \".concat(value, \")\")).matches;\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/forced-colors\n */\nfunction areColorsForced() {\n if (doesMatch$4('active')) {\n return true;\n }\n if (doesMatch$4('none')) {\n return false;\n }\n return undefined;\n}\nfunction doesMatch$4(value) {\n return matchMedia(\"(forced-colors: \".concat(value, \")\")).matches;\n}\n\nvar maxValueToCheck = 100;\n/**\n * If the display is monochrome (e.g. black&white), the value will be ≥0 and will mean the number of bits per pixel.\n * If the display is not monochrome, the returned value will be 0.\n * If the browser doesn't support this feature, the returned value will be undefined.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/monochrome\n */\nfunction getMonochromeDepth() {\n if (!matchMedia('(min-monochrome: 0)').matches) {\n // The media feature isn't supported by the browser\n return undefined;\n }\n // A variation of binary search algorithm can be used here.\n // But since expected values are very small (≤10), there is no sense in adding the complexity.\n for (var i = 0; i <= maxValueToCheck; ++i) {\n if (matchMedia(\"(max-monochrome: \".concat(i, \")\")).matches) {\n return i;\n }\n }\n throw new Error('Too high value');\n}\n\n/**\n * @see https://www.w3.org/TR/mediaqueries-5/#prefers-contrast\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-contrast\n */\nfunction getContrastPreference() {\n if (doesMatch$3('no-preference')) {\n return 0 /* ContrastPreference.None */;\n }\n // The sources contradict on the keywords. Probably 'high' and 'low' will never be implemented.\n // Need to check it when all browsers implement the feature.\n if (doesMatch$3('high') || doesMatch$3('more')) {\n return 1 /* ContrastPreference.More */;\n }\n if (doesMatch$3('low') || doesMatch$3('less')) {\n return -1 /* ContrastPreference.Less */;\n }\n if (doesMatch$3('forced')) {\n return 10 /* ContrastPreference.ForcedColors */;\n }\n return undefined;\n}\nfunction doesMatch$3(value) {\n return matchMedia(\"(prefers-contrast: \".concat(value, \")\")).matches;\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n */\nfunction isMotionReduced() {\n if (doesMatch$2('reduce')) {\n return true;\n }\n if (doesMatch$2('no-preference')) {\n return false;\n }\n return undefined;\n}\nfunction doesMatch$2(value) {\n return matchMedia(\"(prefers-reduced-motion: \".concat(value, \")\")).matches;\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-transparency\n */\nfunction isTransparencyReduced() {\n if (doesMatch$1('reduce')) {\n return true;\n }\n if (doesMatch$1('no-preference')) {\n return false;\n }\n return undefined;\n}\nfunction doesMatch$1(value) {\n return matchMedia(\"(prefers-reduced-transparency: \".concat(value, \")\")).matches;\n}\n\n/**\n * @see https://www.w3.org/TR/mediaqueries-5/#dynamic-range\n */\nfunction isHDR() {\n if (doesMatch('high')) {\n return true;\n }\n if (doesMatch('standard')) {\n return false;\n }\n return undefined;\n}\nfunction doesMatch(value) {\n return matchMedia(\"(dynamic-range: \".concat(value, \")\")).matches;\n}\n\nvar M = Math; // To reduce the minified code size\nvar fallbackFn = function () { return 0; };\n/**\n * @see https://gitlab.torproject.org/legacy/trac/-/issues/13018\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=531915\n */\nfunction getMathFingerprint() {\n // Native operations\n var acos = M.acos || fallbackFn;\n var acosh = M.acosh || fallbackFn;\n var asin = M.asin || fallbackFn;\n var asinh = M.asinh || fallbackFn;\n var atanh = M.atanh || fallbackFn;\n var atan = M.atan || fallbackFn;\n var sin = M.sin || fallbackFn;\n var sinh = M.sinh || fallbackFn;\n var cos = M.cos || fallbackFn;\n var cosh = M.cosh || fallbackFn;\n var tan = M.tan || fallbackFn;\n var tanh = M.tanh || fallbackFn;\n var exp = M.exp || fallbackFn;\n var expm1 = M.expm1 || fallbackFn;\n var log1p = M.log1p || fallbackFn;\n // Operation polyfills\n var powPI = function (value) { return M.pow(M.PI, value); };\n var acoshPf = function (value) { return M.log(value + M.sqrt(value * value - 1)); };\n var asinhPf = function (value) { return M.log(value + M.sqrt(value * value + 1)); };\n var atanhPf = function (value) { return M.log((1 + value) / (1 - value)) / 2; };\n var sinhPf = function (value) { return M.exp(value) - 1 / M.exp(value) / 2; };\n var coshPf = function (value) { return (M.exp(value) + 1 / M.exp(value)) / 2; };\n var expm1Pf = function (value) { return M.exp(value) - 1; };\n var tanhPf = function (value) { return (M.exp(2 * value) - 1) / (M.exp(2 * value) + 1); };\n var log1pPf = function (value) { return M.log(1 + value); };\n // Note: constant values are empirical\n return {\n acos: acos(0.123124234234234242),\n acosh: acosh(1e308),\n acoshPf: acoshPf(1e154),\n asin: asin(0.123124234234234242),\n asinh: asinh(1),\n asinhPf: asinhPf(1),\n atanh: atanh(0.5),\n atanhPf: atanhPf(0.5),\n atan: atan(0.5),\n sin: sin(-1e300),\n sinh: sinh(1),\n sinhPf: sinhPf(1),\n cos: cos(10.000000000123),\n cosh: cosh(1),\n coshPf: coshPf(1),\n tan: tan(-1e300),\n tanh: tanh(1),\n tanhPf: tanhPf(1),\n exp: exp(1),\n expm1: expm1(1),\n expm1Pf: expm1Pf(1),\n log1p: log1p(10),\n log1pPf: log1pPf(10),\n powPI: powPI(-100),\n };\n}\n\n/**\n * We use m or w because these two characters take up the maximum width.\n * Also there are a couple of ligatures.\n */\nvar defaultText = 'mmMwWLliI0fiflO&1';\n/**\n * Settings of text blocks to measure. The keys are random but persistent words.\n */\nvar presets = {\n /**\n * The default font. User can change it in desktop Chrome, desktop Firefox, IE 11,\n * Android Chrome (but only when the size is ≥ than the default) and Android Firefox.\n */\n default: [],\n /** OS font on macOS. User can change its size and weight. Applies after Safari restart. */\n apple: [{ font: '-apple-system-body' }],\n /** User can change it in desktop Chrome and desktop Firefox. */\n serif: [{ fontFamily: 'serif' }],\n /** User can change it in desktop Chrome and desktop Firefox. */\n sans: [{ fontFamily: 'sans-serif' }],\n /** User can change it in desktop Chrome and desktop Firefox. */\n mono: [{ fontFamily: 'monospace' }],\n /**\n * Check the smallest allowed font size. User can change it in desktop Chrome, desktop Firefox and desktop Safari.\n * The height can be 0 in Chrome on a retina display.\n */\n min: [{ fontSize: '1px' }],\n /** Tells one OS from another in desktop Chrome. */\n system: [{ fontFamily: 'system-ui' }],\n};\n/**\n * The result is a dictionary of the width of the text samples.\n * Heights aren't included because they give no extra entropy and are unstable.\n *\n * The result is very stable in IE 11, Edge 18 and Safari 14.\n * The result changes when the OS pixel density changes in Chromium 87. The real pixel density is required to solve,\n * but seems like it's impossible: https://stackoverflow.com/q/1713771/1118709.\n * The \"min\" and the \"mono\" (only on Windows) value may change when the page is zoomed in Firefox 87.\n */\nfunction getFontPreferences() {\n return withNaturalFonts(function (document, container) {\n var elements = {};\n var sizes = {};\n // First create all elements to measure. If the DOM steps below are done in a single cycle,\n // browser will alternate tree modification and layout reading, that is very slow.\n for (var _i = 0, _a = Object.keys(presets); _i < _a.length; _i++) {\n var key = _a[_i];\n var _b = presets[key], _c = _b[0], style = _c === void 0 ? {} : _c, _d = _b[1], text = _d === void 0 ? defaultText : _d;\n var element = document.createElement('span');\n element.textContent = text;\n element.style.whiteSpace = 'nowrap';\n for (var _e = 0, _f = Object.keys(style); _e < _f.length; _e++) {\n var name_1 = _f[_e];\n var value = style[name_1];\n if (value !== undefined) {\n element.style[name_1] = value;\n }\n }\n elements[key] = element;\n container.append(document.createElement('br'), element);\n }\n // Then measure the created elements\n for (var _g = 0, _h = Object.keys(presets); _g < _h.length; _g++) {\n var key = _h[_g];\n sizes[key] = elements[key].getBoundingClientRect().width;\n }\n return sizes;\n });\n}\n/**\n * Creates a DOM environment that provides the most natural font available, including Android OS font.\n * Measurements of the elements are zoom-independent.\n * Don't put a content to measure inside an absolutely positioned element.\n */\nfunction withNaturalFonts(action, containerWidthPx) {\n if (containerWidthPx === void 0) { containerWidthPx = 4000; }\n /*\n * Requirements for Android Chrome to apply the system font size to a text inside an iframe:\n * - The iframe mustn't have a `display: none;` style;\n * - The text mustn't be positioned absolutely;\n * - The text block must be wide enough.\n * 2560px on some devices in portrait orientation for the biggest font size option (32px);\n * - There must be much enough text to form a few lines (I don't know the exact numbers);\n * - The text must have the `text-size-adjust: none` style. Otherwise the text will scale in \"Desktop site\" mode;\n *\n * Requirements for Android Firefox to apply the system font size to a text inside an iframe:\n * - The iframe document must have a header: `<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />`.\n * The only way to set it is to use the `srcdoc` attribute of the iframe;\n * - The iframe content must get loaded before adding extra content with JavaScript;\n *\n * https://example.com as the iframe target always inherits Android font settings so it can be used as a reference.\n *\n * Observations on how page zoom affects the measurements:\n * - macOS Safari 11.1, 12.1, 13.1, 14.0: zoom reset + offsetWidth = 100% reliable;\n * - macOS Safari 11.1, 12.1, 13.1, 14.0: zoom reset + getBoundingClientRect = 100% reliable;\n * - macOS Safari 14.0: offsetWidth = 5% fluctuation;\n * - macOS Safari 14.0: getBoundingClientRect = 5% fluctuation;\n * - iOS Safari 9, 10, 11.0, 12.0: haven't found a way to zoom a page (pinch doesn't change layout);\n * - iOS Safari 13.1, 14.0: zoom reset + offsetWidth = 100% reliable;\n * - iOS Safari 13.1, 14.0: zoom reset + getBoundingClientRect = 100% reliable;\n * - iOS Safari 14.0: offsetWidth = 100% reliable;\n * - iOS Safari 14.0: getBoundingClientRect = 100% reliable;\n * - Chrome 42, 65, 80, 87: zoom 1/devicePixelRatio + offsetWidth = 1px fluctuation;\n * - Chrome 42, 65, 80, 87: zoom 1/devicePixelRatio + getBoundingClientRect = 100% reliable;\n * - Chrome 87: offsetWidth = 1px fluctuation;\n * - Chrome 87: getBoundingClientRect = 0.7px fluctuation;\n * - Firefox 48, 51: offsetWidth = 10% fluctuation;\n * - Firefox 48, 51: getBoundingClientRect = 10% fluctuation;\n * - Firefox 52, 53, 57, 62, 66, 67, 68, 71, 75, 80, 84: offsetWidth = width 100% reliable, height 10% fluctuation;\n * - Firefox 52, 53, 57, 62, 66, 67, 68, 71, 75, 80, 84: getBoundingClientRect = width 100% reliable, height 10%\n * fluctuation;\n * - Android Chrome 86: haven't found a way to zoom a page (pinch doesn't change layout);\n * - Android Firefox 84: font size in accessibility settings changes all the CSS sizes, but offsetWidth and\n * getBoundingClientRect keep measuring with regular units, so the size reflects the font size setting and doesn't\n * fluctuate;\n * - IE 11, Edge 18: zoom 1/devicePixelRatio + offsetWidth = 100% reliable;\n * - IE 11, Edge 18: zoom 1/devicePixelRatio + getBoundingClientRect = reflects the zoom level;\n * - IE 11, Edge 18: offsetWidth = 100% reliable;\n * - IE 11, Edge 18: getBoundingClientRect = 100% reliable;\n */\n return withIframe(function (_, iframeWindow) {\n var iframeDocument = iframeWindow.document;\n var iframeBody = iframeDocument.body;\n var bodyStyle = iframeBody.style;\n bodyStyle.width = \"\".concat(containerWidthPx, \"px\");\n bodyStyle.webkitTextSizeAdjust = bodyStyle.textSizeAdjust = 'none';\n // See the big comment above\n if (isChromium()) {\n iframeBody.style.zoom = \"\".concat(1 / iframeWindow.devicePixelRatio);\n }\n else if (isWebKit()) {\n iframeBody.style.zoom = 'reset';\n }\n // See the big comment above\n var linesOfText = iframeDocument.createElement('div');\n linesOfText.textContent = __spreadArray([], Array((containerWidthPx / 20) << 0), true).map(function () { return 'word'; }).join(' ');\n iframeBody.appendChild(linesOfText);\n return action(iframeDocument, iframeBody);\n }, '<!doctype html><html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">');\n}\n\nfunction isPdfViewerEnabled() {\n return navigator.pdfViewerEnabled;\n}\n\n/**\n * Unlike most other architectures, on x86/x86-64 when floating-point instructions\n * have no NaN arguments, but produce NaN output, the output NaN has sign bit set.\n * We use it to distinguish x86/x86-64 from other architectures, by doing subtraction\n * of two infinities (must produce NaN per IEEE 754 standard).\n *\n * See https://codebrowser.bddppq.com/pytorch/pytorch/third_party/XNNPACK/src/init.c.html#79\n */\nfunction getArchitecture() {\n var f = new Float32Array(1);\n var u8 = new Uint8Array(f.buffer);\n f[0] = Infinity;\n f[0] = f[0] - f[0];\n return u8[3];\n}\n\n/**\n * The return type is a union instead of the enum, because it's too challenging to embed the const enum into another\n * project. Turning it into a union is a simple and an elegant solution.\n */\nfunction getApplePayState() {\n var ApplePaySession = window.ApplePaySession;\n if (typeof (ApplePaySession === null || ApplePaySession === void 0 ? void 0 : ApplePaySession.canMakePayments) !== 'function') {\n return -1 /* ApplePayState.NoAPI */;\n }\n if (willPrintConsoleError()) {\n return -3 /* ApplePayState.NotAvailableInFrame */;\n }\n try {\n return ApplePaySession.canMakePayments() ? 1 /* ApplePayState.Enabled */ : 0 /* ApplePayState.Disabled */;\n }\n catch (error) {\n return getStateFromError(error);\n }\n}\n/**\n * Starting from Safari 15 calling `ApplePaySession.canMakePayments()` produces this error message when FingerprintJS\n * runs in an iframe with a cross-origin parent page, and the iframe on that page has no allow=\"payment *\" attribute:\n * Feature policy 'Payment' check failed for element with origin 'https://example.com' and allow attribute ''.\n * This function checks whether the error message is expected.\n *\n * We check for cross-origin parents, which is prone to false-positive results. Instead, we should check for allowed\n * feature/permission, but we can't because none of these API works in Safari yet:\n * navigator.permissions.query({ name: ‘payment' })\n * navigator.permissions.query({ name: ‘payment-handler' })\n * document.featurePolicy\n */\nvar willPrintConsoleError = isAnyParentCrossOrigin;\nfunction getStateFromError(error) {\n // See full expected error messages in the test\n if (error instanceof Error && error.name === 'InvalidAccessError' && /\\bfrom\\b.*\\binsecure\\b/i.test(error.message)) {\n return -2 /* ApplePayState.NotAvailableInInsecureContext */;\n }\n throw error;\n}\n\n/**\n * Checks whether the Safari's Privacy Preserving Ad Measurement setting is on.\n * The setting is on when the value is not undefined.\n * A.k.a. private click measurement, privacy-preserving ad attribution.\n *\n * Unfortunately, it doesn't work in mobile Safari.\n * Probably, it will start working in mobile Safari or stop working in desktop Safari later.\n * We've found no way to detect the setting state in mobile Safari. Help wanted.\n *\n * @see https://webkit.org/blog/11529/introducing-private-click-measurement-pcm/\n * @see https://developer.apple.com/videos/play/wwdc2021/10033\n */\nfunction getPrivateClickMeasurement() {\n var _a;\n var link = document.createElement('a');\n var sourceId = (_a = link.attributionSourceId) !== null && _a !== void 0 ? _a : link.attributionsourceid;\n return sourceId === undefined ? undefined : String(sourceId);\n}\n\n/** WebGl context is not available */\nvar STATUS_NO_GL_CONTEXT = -1;\n/** WebGL context `getParameter` method is not a function */\nvar STATUS_GET_PARAMETER_NOT_A_FUNCTION = -2;\nvar validContextParameters = new Set([\n 10752, 2849, 2884, 2885, 2886, 2928, 2929, 2930, 2931, 2932, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968,\n 2978, 3024, 3042, 3088, 3089, 3106, 3107, 32773, 32777, 32777, 32823, 32824, 32936, 32937, 32938, 32939, 32968, 32969,\n 32970, 32971, 3317, 33170, 3333, 3379, 3386, 33901, 33902, 34016, 34024, 34076, 3408, 3410, 3411, 3412, 3413, 3414,\n 3415, 34467, 34816, 34817, 34818, 34819, 34877, 34921, 34930, 35660, 35661, 35724, 35738, 35739, 36003, 36004, 36005,\n 36347, 36348, 36349, 37440, 37441, 37443, 7936, 7937, 7938,\n // SAMPLE_ALPHA_TO_COVERAGE (32926) and SAMPLE_COVERAGE (32928) are excluded because they trigger a console warning\n // in IE, Chrome ≤ 59 and Safari ≤ 13 and give no entropy.\n]);\nvar validExtensionParams = new Set([\n 34047,\n 35723,\n 36063,\n 34852,\n 34853,\n 34854,\n 34229,\n 36392,\n 36795,\n 38449, // MAX_VIEWS_OVR\n]);\nvar shaderTypes = ['FRAGMENT_SHADER', 'VERTEX_SHADER'];\nvar precisionTypes = ['LOW_FLOAT', 'MEDIUM_FLOAT', 'HIGH_FLOAT', 'LOW_INT', 'MEDIUM_INT', 'HIGH_INT'];\nvar rendererInfoExtensionName = 'WEBGL_debug_renderer_info';\nvar polygonModeExtensionName = 'WEBGL_polygon_mode';\n/**\n * Gets the basic and simple WebGL parameters\n */\nfunction getWebGlBasics(_a) {\n var _b, _c, _d, _e, _f, _g;\n var cache = _a.cache;\n var gl = getWebGLContext(cache);\n if (!gl) {\n return STATUS_NO_GL_CONTEXT;\n }\n if (!isValidParameterGetter(gl)) {\n return STATUS_GET_PARAMETER_NOT_A_FUNCTION;\n }\n var debugExtension = shouldAvoidDebugRendererInfo() ? null : gl.getExtension(rendererInfoExtensionName);\n return {\n version: ((_b = gl.getParameter(gl.VERSION)) === null || _b === void 0 ? void 0 : _b.toString()) || '',\n vendor: ((_c = gl.getParameter(gl.VENDOR)) === null || _c === void 0 ? void 0 : _c.toString()) || '',\n vendorUnmasked: debugExtension ? (_d = gl.getParameter(debugExtension.UNMASKED_VENDOR_WEBGL)) === null || _d === void 0 ? void 0 : _d.toString() : '',\n renderer: ((_e = gl.getParameter(gl.RENDERER)) === null || _e === void 0 ? void 0 : _e.toString()) || '',\n rendererUnmasked: debugExtension ? (_f = gl.getParameter(debugExtension.UNMASKED_RENDERER_WEBGL)) === null || _f === void 0 ? void 0 : _f.toString() : '',\n shadingLanguageVersion: ((_g = gl.getParameter(gl.SHADING_LANGUAGE_VERSION)) === null || _g === void 0 ? void 0 : _g.toString()) || '',\n };\n}\n/**\n * Gets the advanced and massive WebGL parameters and extensions\n */\nfunction getWebGlExtensions(_a) {\n var cache = _a.cache;\n var gl = getWebGLContext(cache);\n if (!gl) {\n return STATUS_NO_GL_CONTEXT;\n }\n if (!isValidParameterGetter(gl)) {\n return STATUS_GET_PARAMETER_NOT_A_FUNCTION;\n }\n var extensions = gl.getSupportedExtensions();\n var contextAttributes = gl.getContextAttributes();\n var unsupportedExtensions = [];\n // Features\n var attributes = [];\n var parameters = [];\n var extensionParameters = [];\n var shaderPrecisions = [];\n // Context attributes\n if (contextAttributes) {\n for (var _i = 0, _b = Object.keys(contextAttributes); _i < _b.length; _i++) {\n var attributeName = _b[_i];\n attributes.push(\"\".concat(attributeName, \"=\").concat(contextAttributes[attributeName]));\n }\n }\n // Context parameters\n var constants = getConstantsFromPrototype(gl);\n for (var _c = 0, constants_1 = constants; _c < constants_1.length; _c++) {\n var constant = constants_1[_c];\n var code = gl[constant];\n parameters.push(\"\".concat(constant, \"=\").concat(code).concat(validContextParameters.has(code) ? \"=\".concat(gl.getParameter(code)) : ''));\n }\n // Extension parameters\n if (extensions) {\n for (var _d = 0, extensions_1 = extensions; _d < extensions_1.length; _d++) {\n var name_1 = extensions_1[_d];\n if ((name_1 === rendererInfoExtensionName && shouldAvoidDebugRendererInfo()) ||\n (name_1 === polygonModeExtensionName && shouldAvoidPolygonModeExtensions())) {\n continue;\n }\n var extension = gl.getExtension(name_1);\n if (!extension) {\n unsupportedExtensions.push(name_1);\n continue;\n }\n for (var _e = 0, _f = getConstantsFromPrototype(extension); _e < _f.length; _e++) {\n var constant = _f[_e];\n var code = extension[constant];\n extensionParameters.push(\"\".concat(constant, \"=\").concat(code).concat(validExtensionParams.has(code) ? \"=\".concat(gl.getParameter(code)) : ''));\n }\n }\n }\n // Shader precision\n for (var _g = 0, shaderTypes_1 = shaderTypes; _g < shaderTypes_1.length; _g++) {\n var shaderType = shaderTypes_1[_g];\n for (var _h = 0, precisionTypes_1 = precisionTypes; _h < precisionTypes_1.length; _h++) {\n var precisionType = precisionTypes_1[_h];\n var shaderPrecision = getShaderPrecision(gl, shaderType, precisionType);\n shaderPrecisions.push(\"\".concat(shaderType, \".\").concat(precisionType, \"=\").concat(shaderPrecision.join(',')));\n }\n }\n // Postprocess\n extensionParameters.sort();\n parameters.sort();\n return {\n contextAttributes: attributes,\n parameters: parameters,\n shaderPrecisions: shaderPrecisions,\n extensions: extensions,\n extensionParameters: extensionParameters,\n unsupportedExtensions: unsupportedExtensions,\n };\n}\n/**\n * This function usually takes the most time to execute in all the sources, therefore we cache its result.\n *\n * Warning for package users:\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\n */\nfunction getWebGLContext(cache) {\n if (cache.webgl) {\n return cache.webgl.context;\n }\n var canvas = document.createElement('canvas');\n var context;\n canvas.addEventListener('webglCreateContextError', function () { return (context = undefined); });\n for (var _i = 0, _a = ['webgl', 'experimental-webgl']; _i < _a.length; _i++) {\n var type = _a[_i];\n try {\n context = canvas.getContext(type);\n }\n catch (_b) {\n // Ok, continue\n }\n if (context) {\n break;\n }\n }\n cache.webgl = { context: context };\n return context;\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat\n * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat\n * https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.12\n */\nfunction getShaderPrecision(gl, shaderType, precisionType) {\n var shaderPrecision = gl.getShaderPrecisionFormat(gl[shaderType], gl[precisionType]);\n return shaderPrecision ? [shaderPrecision.rangeMin, shaderPrecision.rangeMax, shaderPrecision.precision] : [];\n}\nfunction getConstantsFromPrototype(obj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(obj.__proto__);\n return keys.filter(isConstantLike);\n}\nfunction isConstantLike(key) {\n return typeof key === 'string' && !key.match(/[^A-Z0-9_x]/);\n}\n/**\n * Some browsers print a console warning when the WEBGL_debug_renderer_info extension is requested.\n * JS Agent aims to avoid printing messages to console, so we avoid this extension in that browsers.\n */\nfunction shouldAvoidDebugRendererInfo() {\n return isGecko();\n}\n/**\n * Some browsers print a console warning when the WEBGL_polygon_mode extension is requested.\n * JS Agent aims to avoid printing messages to console, so we avoid this extension in that browsers.\n */\nfunction shouldAvoidPolygonModeExtensions() {\n return isChromium() || isWebKit();\n}\n/**\n * Some unknown browsers have no `getParameter` method\n */\nfunction isValidParameterGetter(gl) {\n return typeof gl.getParameter === 'function';\n}\n\nfunction getAudioContextBaseLatency() {\n var _a;\n // The signal emits warning in Chrome and Firefox, therefore it is enabled on Safari where it doesn't produce warning\n // and on Android where it's less visible\n var isAllowedPlatform = isAndroid() || isWebKit();\n if (!isAllowedPlatform) {\n return -2 /* SpecialFingerprint.Disabled */;\n }\n if (!window.AudioContext) {\n return -1 /* SpecialFingerprint.NotSupported */;\n }\n return (_a = new AudioContext().baseLatency) !== null && _a !== void 0 ? _a : -1 /* SpecialFingerprint.NotSupported */;\n}\n\n/**\n * The list of entropy sources used to make visitor identifiers.\n *\n * This value isn't restricted by Semantic Versioning, i.e. it may be changed without bumping minor or major version of\n * this package.\n *\n * Note: Rollup and Webpack are smart enough to remove unused properties of this object during tree-shaking, so there is\n * no need to export the sources individually.\n */\nvar sources = {\n // READ FIRST:\n // See https://github.com/fingerprintjs/fingerprintjs/blob/master/contributing.md#how-to-make-an-entropy-source\n // to learn how entropy source works and how to make your own.\n // The sources run in this exact order.\n // The asynchronous sources are at the start to run in parallel with other sources.\n fonts: getFonts,\n domBlockers: getDomBlockers,\n fontPreferences: getFontPreferences,\n audio: getAudioFingerprint,\n screenFrame: getScreenFrame,\n canvas: getCanvasFingerprint,\n osCpu: getOsCpu,\n languages: getLanguages,\n colorDepth: getColorDepth,\n deviceMemory: getDeviceMemory,\n screenResolution: getScreenResolution,\n hardwareConcurrency: getHardwareConcurrency,\n timezone: getTimezone,\n sessionStorage: getSessionStorage,\n localStorage: getLocalStorage,\n indexedDB: getIndexedDB,\n openDatabase: getOpenDatabase,\n cpuClass: getCpuClass,\n platform: getPlatform,\n plugins: getPlugins,\n touchSupport: getTouchSupport,\n vendor: getVendor,\n vendorFlavors: getVendorFlavors,\n cookiesEnabled: areCookiesEnabled,\n colorGamut: getColorGamut,\n invertedColors: areColorsInverted,\n forcedColors: areColorsForced,\n monochrome: getMonochromeDepth,\n contrast: getContrastPreference,\n reducedMotion: isMotionReduced,\n reducedTransparency: isTransparencyReduced,\n hdr: isHDR,\n math: getMathFingerprint,\n pdfViewerEnabled: isPdfViewerEnabled,\n architecture: getArchitecture,\n applePay: getApplePayState,\n privateClickMeasurement: getPrivateClickMeasurement,\n audioBaseLatency: getAudioContextBaseLatency,\n // Some sources can affect other sources (e.g. WebGL can affect canvas), so it's important to run these sources\n // after other sources.\n webGlBasics: getWebGlBasics,\n webGlExtensions: getWebGlExtensions,\n};\n/**\n * Loads the built-in entropy sources.\n * Returns a function that collects the entropy components to make the visitor identifier.\n */\nfunction loadBuiltinSources(options) {\n return loadSources(sources, options, []);\n}\n\nvar commentTemplate = '$ if upgrade to Pro: https://fpjs.dev/pro';\nfunction getConfidence(components) {\n var openConfidenceScore = getOpenConfidenceScore(components);\n var proConfidenceScore = deriveProConfidenceScore(openConfidenceScore);\n return { score: openConfidenceScore, comment: commentTemplate.replace(/\\$/g, \"\".concat(proConfidenceScore)) };\n}\nfunction getOpenConfidenceScore(components) {\n // In order to calculate the true probability of the visitor identifier being correct, we need to know the number of\n // website visitors (the higher the number, the less the probability because the fingerprint entropy is limited).\n // JS agent doesn't know the number of visitors, so we can only do an approximate assessment.\n if (isAndroid()) {\n return 0.4;\n }\n // Safari (mobile and desktop)\n if (isWebKit()) {\n return isDesktopWebKit() && !(isWebKit616OrNewer() && isSafariWebKit()) ? 0.5 : 0.3;\n }\n var platform = 'value' in components.platform ? components.platform.value : '';\n // Windows\n if (/^Win/.test(platform)) {\n // The score is greater than on macOS because of the higher variety of devices running Windows.\n // Chrome provides more entropy than Firefox according too\n // https://netmarketshare.com/browser-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22platform%22%3A%7B%22%24in%22%3A%5B%22Windows%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Trend%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22browser%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22browsersDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-11%22%2C%22dateEnd%22%3A%222020-10%22%2C%22segments%22%3A%22-1000%22%7D\n // So we assign the same score to them.\n return 0.6;\n }\n // macOS\n if (/^Mac/.test(platform)) {\n // Chrome provides more entropy than Safari and Safari provides more entropy than Firefox.\n // Chrome is more popular than Safari and Safari is more popular than Firefox according to\n // https://netmarketshare.com/browser-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22platform%22%3A%7B%22%24in%22%3A%5B%22Mac%20OS%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Trend%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22browser%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22browsersDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-11%22%2C%22dateEnd%22%3A%222020-10%22%2C%22segments%22%3A%22-1000%22%7D\n // So we assign the same score to them.\n return 0.5;\n }\n // Another platform, e.g. a desktop Linux. It's rare, so it should be pretty unique.\n return 0.7;\n}\nfunction deriveProConfidenceScore(openConfidenceScore) {\n return round(0.99 + 0.01 * openConfidenceScore, 0.0001);\n}\n\nfunction componentsToCanonicalString(components) {\n var result = '';\n for (var _i = 0, _a = Object.keys(components).sort(); _i < _a.length; _i++) {\n var componentKey = _a[_i];\n var component = components[componentKey];\n var value = 'error' in component ? 'error' : JSON.stringify(component.value);\n result += \"\".concat(result ? '|' : '').concat(componentKey.replace(/([:|\\\\])/g, '\\\\$1'), \":\").concat(value);\n }\n return result;\n}\nfunction componentsToDebugString(components) {\n return JSON.stringify(components, function (_key, value) {\n if (value instanceof Error) {\n return errorToObject(value);\n }\n return value;\n }, 2);\n}\nfunction hashComponents(components) {\n return x64hash128(componentsToCanonicalString(components));\n}\n/**\n * Makes a GetResult implementation that calculates the visitor id hash on demand.\n * Designed for optimisation.\n */\nfunction makeLazyGetResult(components) {\n var visitorIdCache;\n // This function runs very fast, so there is no need to make it lazy\n var confidence = getConfidence(components);\n // A plain class isn't used because its getters and setters aren't enumerable.\n return {\n get visitorId() {\n if (visitorIdCache === undefined) {\n visitorIdCache = hashComponents(this.components);\n }\n return visitorIdCache;\n },\n set visitorId(visitorId) {\n visitorIdCache = visitorId;\n },\n confidence: confidence,\n components: components,\n version: version,\n };\n}\n/**\n * A delay is required to ensure consistent entropy components.\n * See https://github.com/fingerprintjs/fingerprintjs/issues/254\n * and https://github.com/fingerprintjs/fingerprintjs/issues/307\n * and https://github.com/fingerprintjs/fingerprintjs/commit/945633e7c5f67ae38eb0fea37349712f0e669b18\n */\nfunction prepareForSources(delayFallback) {\n if (delayFallback === void 0) { delayFallback = 50; }\n // A proper deadline is unknown. Let it be twice the fallback timeout so that both cases have the same average time.\n return requestIdleCallbackIfAvailable(delayFallback, delayFallback * 2);\n}\n/**\n * The function isn't exported from the index file to not allow to call it without `load()`.\n * The hiding gives more freedom for future non-breaking updates.\n *\n * A factory function is used instead of a class to shorten the attribute names in the minified code.\n * Native private class fields could've been used, but TypeScript doesn't allow them with `\"target\": \"es5\"`.\n */\nfunction makeAgent(getComponents, debug) {\n var creationTime = Date.now();\n return {\n get: function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, components, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n startTime = Date.now();\n return [4 /*yield*/, getComponents()];\n case 1:\n components = _a.sent();\n result = makeLazyGetResult(components);\n if (debug || (options === null || options === void 0 ? void 0 : options.debug)) {\n // console.log is ok here because it's under a debug clause\n // eslint-disable-next-line no-console\n console.log(\"Copy the text below to get the debug data:\\n\\n```\\nversion: \".concat(result.version, \"\\nuserAgent: \").concat(navigator.userAgent, \"\\ntimeBetweenLoadAndGet: \").concat(startTime - creationTime, \"\\nvisitorId: \").concat(result.visitorId, \"\\ncomponents: \").concat(componentsToDebugString(components), \"\\n```\"));\n }\n return [2 /*return*/, result];\n }\n });\n });\n },\n };\n}\n/**\n * Sends an unpersonalized AJAX request to collect installation statistics\n */\nfunction monitor() {\n // The FingerprintJS CDN (https://github.com/fingerprintjs/cdn) replaces `window.__fpjs_d_m` with `true`\n if (window.__fpjs_d_m || Math.random() >= 0.001) {\n return;\n }\n try {\n var request = new XMLHttpRequest();\n request.open('get', \"https://m1.openfpcdn.io/fingerprintjs/v\".concat(version, \"/npm-monitoring\"), true);\n request.send();\n }\n catch (error) {\n // console.error is ok here because it's an unexpected error handler\n // eslint-disable-next-line no-console\n console.error(error);\n }\n}\n/**\n * Builds an instance of Agent and waits a delay required for a proper operation.\n */\nfunction load(options) {\n var _a;\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var delayFallback, debug, getComponents;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if ((_a = options.monitoring) !== null && _a !== void 0 ? _a : true) {\n monitor();\n }\n delayFallback = options.delayFallback, debug = options.debug;\n return [4 /*yield*/, prepareForSources(delayFallback)];\n case 1:\n _b.sent();\n getComponents = loadBuiltinSources({ cache: {}, debug: debug });\n return [2 /*return*/, makeAgent(getComponents, debug)];\n }\n });\n });\n}\n\n// The default export is a syntax sugar (`import * as FP from '...' → import FP from '...'`).\n// It should contain all the public exported values.\nvar index = { load: load, hashComponents: hashComponents, componentsToDebugString: componentsToDebugString };\n// The exports below are for private usage. They may change unexpectedly. Use them at your own risk.\n/** Not documented, out of Semantic Versioning, usage is at your own risk */\nvar murmurX64Hash128 = x64hash128;\n\nexport { componentsToDebugString, index as default, getFullscreenElement, getUnstableAudioFingerprint, getUnstableCanvasFingerprint, getUnstableScreenFrame, getUnstableScreenResolution, getWebGLContext, hashComponents, isAndroid, isChromium, isDesktopWebKit, isEdgeHTML, isGecko, isSamsungInternet, isTrident, isWebKit, load, loadSources, murmurX64Hash128, prepareForSources, sources, transformSource, withIframe };\n","import { Store } from 'react-notifications-component';\n\nexport const addNotification = (message) => {\n const notification = {\n insert: \"top\",\n container: \"top-right\",\n animationIn: [\"animate__animated\", \"animate__fadeIn\"],\n animationOut: [\"animate__animated\", \"animate__fadeOut\"],\n onRemoval: (id, removedBy) => { },\n dismiss: {\n duration: 5000,\n onScreen: true,\n timingFunction: 'ease-out',\n pauseOnHover: true\n }\n };\n Store.removeAllNotifications();\n return Store.addNotification({\n ...notification,\n title: message.title,\n message: message.message,\n type: message.type\n });\n}","import axios from \"axios\";\nimport FingerprintJS from '@fingerprintjs/fingerprintjs';\nimport CryptoJS from 'crypto-js';\nimport { addNotification } from \"../components/Notification\";\n\nconst BASE_URL = process.env.REACT_APP_API_URL;\nconst SECRET_KEY = process.env.REACT_APP_AUTHENTICATION_SECRET_KEY;\n\nconst getFingerprintID = async () => {\n try {\n const fp = await FingerprintJS.load();\n const result = await fp.get();\n const visitorId = result.visitorId;\n\n const hmac = CryptoJS.HmacSHA256(JSON.stringify(visitorId), SECRET_KEY).toString();\n return { fingerPrintId: visitorId, hmac };\n }\n catch (error) {\n return {}\n };\n};\n\nconst apiCall = async (\n url,\n type,\n formData,\n auth = '',\n isFile = false\n) => {\n return new Promise(async (resolve, reject) => {\n\n let fingerPrintData = await getFingerprintID();\n let headers = {\n 'Content-Type': 'application/json',\n //'Content-Type': 'application/x-www-form-urlencoded'\n \"fingerprintid\": fingerPrintData?.fingerPrintId,\n \"hmac\": fingerPrintData?.hmac,\n }\n\n if (isFile) {\n headers = {\n 'Content-Type': 'multipart/form-data',\n \"fingerprintid\": fingerPrintData?.fingerPrintId,\n \"hmac\": fingerPrintData?.hmac,\n }\n }\n if (auth === \"jwt_token\") {\n headers.Authorization = `${localStorage.getItem(\"jwt_token\")}`\n }\n else if (auth.indexOf('JWT') >= 0) {\n headers.Authorization = `${auth}`\n }\n\n var config = {\n method: type,\n url: `${BASE_URL}/${url}`,\n headers: headers,\n };\n\n if (formData)\n config.data = formData;\n\n\n axios(config)\n .then(function (response) {\n\n resolve(response);\n })\n .catch(function (error) {\n if (error?.response.status === 403 || error?.response.status === 401) {\n\n var refresh_token = getCookie('refresh_token')\n\n let headers = {\n 'Content-Type': 'application/json',\n //'Content-Type': 'application/x-www-form-urlencoded'\n \"fingerprintid\": fingerPrintData?.fingerPrintId,\n \"hmac\": fingerPrintData?.hmac,\n }\n headers.Authorization = refresh_token\n var config_refresh = {\n method: 'POST',\n url: `${BASE_URL}/${'refresh_token'}`,\n headers: headers,\n };\n config_refresh.data = formData;\n return axios(config_refresh)\n .then(async function (response) {\n localStorage.setItem(\"jwt_token\", response.data.data[(response.data.data.length) - 1].jwt_token);\n localStorage.setItem(\"signature\", response.data.data[(response.data.data.length) - 1].signature);\n var result = await requestHandler(url, type, formData, auth, isFile)\n resolve(result);\n\n })\n .catch(function (error) {\n if (error.response.status === 403 || error.response.status === 401) {\n localStorage.clear()\n window.location.href = \"/sign-in\"\n }\n reject(error.response);\n });\n }\n else if (error?.response.status === 429) {\n addNotification({\n title: \"Alert\",\n message: error?.response?.data?.message[0]?.msg,\n type: \"danger\",\n });\n reject(error.response);\n }\n else {\n reject(error.response);\n }\n });\n })\n\n}\n\nconst requestHandler = async (\n url,\n type,\n formData,\n auth,\n isFile) => {\n\n var result = await apiCall(url, type, formData, auth, isFile)\n return result\n}\n\nfunction getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return \"\";\n}\n\nexport default requestHandler;","import { Navigate, Route } from \"react-router\";\nimport requestHandler from \"../actions/httpClient\";\nimport { addNotification } from \"./Notification\";\n\nconst getPostiveNegativeNum = (value) => {\n if (value >= 0) {\n return true;\n } else {\n return false;\n };\n};\n\nconst getDigitsAfterDecimal = (price, digits) => {\n return parseFloat(Math.trunc(price * Math.pow(10, digits)) / Math.pow(10, digits)).toFixed(digits);\n};\n\n\nconst twoDigitsAfterDecimal = (price, coin) => {\n switch (coin?.toLowerCase()) {\n case 'eur':\n case 'usdt':\n return parseFloat(Math.trunc(price * Math.pow(10, 2)) / Math.pow(10, 2)).toFixed(2);\n case 'btc':\n case 'eth':\n case 'ltc':\n return Math.trunc(price * Math.pow(10, 8)) / Math.pow(10, 8);\n case 'trx':\n case 'xrp':\n return Math.trunc(price * Math.pow(10, 5)) / Math.pow(10, 5);\n default:\n return Math.trunc(price * Math.pow(10, 4)) / Math.pow(10, 4);\n }\n}\n\nconst toLocaleStringDateFormat = (value) => {\n return new Date(value).toLocaleString();\n};\n\nconst ProtectedRoutes = ({ children }) => {\n const isAuthenticated = !!localStorage.getItem('signature');\n \n return isAuthenticated ? children : <Navigate to={\"/sign-in\"} />;\n };\n\n\nconst resendOtp = async (email, type) => {\n\n try {\n const data = {\n 'email': email,\n 'type': type,\n }\n\n\n\n const payload = await requestHandler('gen_otp', 'post', data, 'jwt_token', \"file\")\n if (payload.status === 201) {\n addNotification({\n title: 'Success',\n message: \"OTP resend successfully\",\n type: 'success'\n });\n\n }\n\n return payload;\n } catch (error) {\n\n \n return error\n\n }\n\n\n}\n\nconst handleImageError = (e) => {\n e.target.src = \"/images/content/dummyCoinIcon.png\";\n};\n\nconst formatFeeHandler = (amount, decimalPrecision) => {\n let feeCal = amount * (process.env.REACT_APP_MAKER_FEE / 100);\n let formattedFee = getDigitsAfterDecimal(feeCal, 8);\n formattedFee = formattedFee\n .toString()\n .replace(/(\\.\\d*?)0+$/,\"$1\")\n .replace(/\\.$/, \"\");\n return formattedFee;\n };\n\nfunction formatLargeValue(value) {\n try {\n if (value === undefined || value === null) return \"\";\n let num = value?.toString().trim();\n num = parseFloat(num?.replace(/,/g, \"\"));\n let suffix = \"\";\n if (num >= 1e12) {\n num /= 1e12;\n suffix = \"T\";\n } else if (num >= 1e9) {\n num /= 1e9;\n suffix = \"B\";\n } else if (num >= 1e6) {\n num /= 1e6;\n suffix = \"M\";\n }\n return num.toFixed(2) + suffix;\n } catch (error) {\n return \"\";\n }\n}\n\nexport {\n getPostiveNegativeNum,\n getDigitsAfterDecimal,\n twoDigitsAfterDecimal,\n toLocaleStringDateFormat,\n ProtectedRoutes,\n resendOtp,\n handleImageError,\n formatFeeHandler,\n formatLargeValue\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // const getExchangeData = async (slug) => {\n // const formData = {\n // market_slug: slug,\n // signature: localStorage.getItem(\"signature\")\n // }\n\n // try {\n // const payload = await requestHandler('getOpenOrders', 'post', formData, 'jwt_token')\n\n // { ordeerActionResponse.length==0 && setBuy(payload.data.data.buy) }\n // { ordeerActionResponse.length==0 && setSell(payload.data.data.sell) }\n \n // setMarketTrades(payload?.data?.data?.market_trades)\n // setOpenOrder(payload?.data?.data?.open_order)\n // setCurrentMarketDetails(payload?.data?.data?.current_market_details)\n // setExchangeDta(payload)\n // } catch (error) {\n // }\n // }\n\n // const exchangeUpdateSell = (data) => {\n // setSell(data)\n // }\n\n // const exchangeUpdateBuy = (data) => {\n // setBuy(data)\n // }","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","'use client';\nimport React from 'react';\n\n/**\n * @internal\n */\nconst SkeletonThemeContext = React.createContext({});\n\n/* eslint-disable react/no-array-index-key */\nconst defaultEnableAnimation = true;\n// For performance & cleanliness, don't add any inline styles unless we have to\nfunction styleOptionsToCssProperties({ baseColor, highlightColor, width, height, borderRadius, circle, direction, duration, enableAnimation = defaultEnableAnimation, }) {\n const style = {};\n if (direction === 'rtl')\n style['--animation-direction'] = 'reverse';\n if (typeof duration === 'number')\n style['--animation-duration'] = `${duration}s`;\n if (!enableAnimation)\n style['--pseudo-element-display'] = 'none';\n if (typeof width === 'string' || typeof width === 'number')\n style.width = width;\n if (typeof height === 'string' || typeof height === 'number')\n style.height = height;\n if (typeof borderRadius === 'string' || typeof borderRadius === 'number')\n style.borderRadius = borderRadius;\n if (circle)\n style.borderRadius = '50%';\n if (typeof baseColor !== 'undefined')\n style['--base-color'] = baseColor;\n if (typeof highlightColor !== 'undefined')\n style['--highlight-color'] = highlightColor;\n return style;\n}\nfunction Skeleton({ count = 1, wrapper: Wrapper, className: customClassName, containerClassName, containerTestId, circle = false, style: styleProp, ...originalPropsStyleOptions }) {\n var _a, _b, _c;\n const contextStyleOptions = React.useContext(SkeletonThemeContext);\n const propsStyleOptions = { ...originalPropsStyleOptions };\n // DO NOT overwrite style options from the context if `propsStyleOptions`\n // has properties explicity set to undefined\n for (const [key, value] of Object.entries(originalPropsStyleOptions)) {\n if (typeof value === 'undefined') {\n delete propsStyleOptions[key];\n }\n }\n // Props take priority over context\n const styleOptions = {\n ...contextStyleOptions,\n ...propsStyleOptions,\n circle,\n };\n // `styleProp` has the least priority out of everything\n const style = {\n ...styleProp,\n ...styleOptionsToCssProperties(styleOptions),\n };\n let className = 'react-loading-skeleton';\n if (customClassName)\n className += ` ${customClassName}`;\n const inline = (_a = styleOptions.inline) !== null && _a !== void 0 ? _a : false;\n const elements = [];\n const countCeil = Math.ceil(count);\n for (let i = 0; i < countCeil; i++) {\n let thisStyle = style;\n if (countCeil > count && i === countCeil - 1) {\n // count is not an integer and we've reached the last iteration of\n // the loop, so add a \"fractional\" skeleton.\n //\n // For example, if count is 3.5, we've already added 3 full\n // skeletons, so now we add one more skeleton that is 0.5 times the\n // original width.\n const width = (_b = thisStyle.width) !== null && _b !== void 0 ? _b : '100%'; // 100% is the default since that's what's in the CSS\n const fractionalPart = count % 1;\n const fractionalWidth = typeof width === 'number'\n ? width * fractionalPart\n : `calc(${width} * ${fractionalPart})`;\n thisStyle = { ...thisStyle, width: fractionalWidth };\n }\n const skeletonSpan = (React.createElement(\"span\", { className: className, style: thisStyle, key: i }, \"\\u200C\"));\n if (inline) {\n elements.push(skeletonSpan);\n }\n else {\n // Without the <br />, the skeleton lines will all run together if\n // `width` is specified\n elements.push(React.createElement(React.Fragment, { key: i },\n skeletonSpan,\n React.createElement(\"br\", null)));\n }\n }\n return (React.createElement(\"span\", { className: containerClassName, \"data-testid\": containerTestId, \"aria-live\": \"polite\", \"aria-busy\": (_c = styleOptions.enableAnimation) !== null && _c !== void 0 ? _c : defaultEnableAnimation }, Wrapper\n ? elements.map((el, i) => React.createElement(Wrapper, { key: i }, el))\n : elements));\n}\n\nfunction SkeletonTheme({ children, ...styleOptions }) {\n return (React.createElement(SkeletonThemeContext.Provider, { value: styleOptions }, children));\n}\n\nexport { SkeletonTheme, Skeleton as default };\n","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"CardSkeleton_card__24iVz\"};","\nimport React from \"react\";\nimport Skeleton from 'react-loading-skeleton'\nimport 'react-loading-skeleton/dist/skeleton.css'\nimport styles from \"./CardSkeleton.module.sass\";\n\nconst CardSkeleton = ({ count }) => {\n var themeMode = localStorage.getItem('darkMode');\n return (\n Array(count)\n .fill()\n .map((item, index) => (\n <div className={styles.card} key={index}>\n <Skeleton\n height={100}\n width=\"60%\"\n baseColor={themeMode === \"true\" ? process.env.REACT_APP_SKELETON_BASE_DARK : process.env.REACT_APP_SKELETON_BASE_LIGHT}\n highlightColor={themeMode === \"true\" ? process.env.REACT_APP_SKELETON_HIGHLIGHT_DARK : process.env.REACT_APP_SKELETON_HIGHLIGHT_LIGHT}\n />\n </div>\n ))\n );\n};\n\nexport default CardSkeleton;\n\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Cards.module.sass\";\nimport { getDigitsAfterDecimal, getPostiveNegativeNum } from \"../../../../components/helper\";\nimport CardSkeleton from \"../../../../components/Skeleton/CardSkeleton\";\n\nconst Cards = ({\n className,\n loading,\n socketMarketData,\n}) => {\n\n return (\n <div className={cn(className, styles.cards)}>\n {loading ? <CardSkeleton count={5} />\n :\n socketMarketData?.[0]?.[0]?.markets?.slice(0, 5)\n ?.map((x, index) => (\n <Link className={styles.card} key={index} state={x} to={`/coins/${x?.name?.toLowerCase()}`}>\n <div className={styles.icon}>\n <img src={x.icon} alt=\"Currency\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.slug}</div>\n {getPostiveNegativeNum(x.dayChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(x.dayChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(x.dayChange, 2)}%</div>\n }\n </div>\n <div className={styles.price}>{getDigitsAfterDecimal(x.currentMarketPrice, x.priceDecimalPrecision)}</div>\n </div>\n </Link>\n ))}\n </div>\n );\n};\n\nexport default Cards;\n","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"TextInput_label__RBnup\",\"wrap\":\"TextInput_wrap__2G6sn\",\"input\":\"TextInput_input__fs1jn\",\"toggle\":\"TextInput_toggle__l4QUH\",\"preview\":\"TextInput_preview__FxjAt\",\"active\":\"TextInput_active__v1kBi\",\"empty\":\"TextInput_empty__Z3LHl\",\"view\":\"TextInput_view__Te5np\",\"icon\":\"TextInput_icon__MdRtX\",\"note\":\"TextInput_note__S+9Xj\"};","import cn from \"classnames\";\nimport styles from \"./TextInput.module.sass\";\nimport Icon from \"../Icon\";\n\nconst TextInput = ({\n className,\n classLabel,\n classInput,\n label,\n empty,\n view,\n icon,\n note,\n togglePassword,\n classDropdownHead,\n onFocus,\n ...props\n}) => {\n\n return (\n <div\n className={cn(\n styles.field,\n { [styles.empty]: empty },\n { [styles.view]: view },\n { [styles.icon]: icon },\n className\n )}\n >\n {label && <div className={cn(classLabel, styles.label)}>{label}</div>}\n <div className={styles.wrap}>\n <input className={cn(classInput, styles.input)} {...props} onFocus={onFocus}/>\n {view && (\n <button\n type=\"button\"\n onClick={togglePassword} className={styles.toggle}>\n <Icon name=\"eye\" size=\"24\" />\n </button>\n )}\n {icon && (\n <div className={styles.preview}>\n <Icon name={icon} size=\"24\" />\n </div>\n )}\n {note && <div className={styles.note}>{note}</div>}\n </div>\n </div>\n );\n};\n\nexport default TextInput;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { useNavigate } from \"react-router-dom\";\nimport styles from \"./Main.module.sass\";\nimport ScrollButton from \"../../../components/ScrollButton\";\nimport Cards from \"./Cards\";\nimport TextInput from \"../../../components/TextInput\";\n\nconst Main = ({\n scrollToRef,\n loading,\n socketMarketData,\n email,\n setEmail,\n getStartedHandler\n}) => {\n const navigate = useNavigate();\n\n const handleSubmit = () => {\n getStartedHandler(email);\n if (email) {\n const encodedEmail = encodeURIComponent(email);\n navigate(`/sign-up?username=${encodedEmail}`);\n } else {\n navigate('/sign-up');\n }\n };\n\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h2\", styles.title)}>\n Buy & sell <br></br><span>{process.env.REACT_APP_MARKETS_COUNT}</span> Crypto Assets in minutes\n </h1>\n <div className={styles.text}>\n Trade Bitcoin, Ethereum, Cardano, XRP and <span>{process.env.REACT_APP_MARKETS_COUNT} top </span>altcoins at the fast growing Crypto Asset Exchange.\n </div>\n <div className={styles.emailOptions}>\n <div className={styles.email}>\n <TextInput\n placeholder=\"Email\"\n value={email}\n onChange={(e) => { setEmail(e.target.value) }}\n />\n </div>\n <div className={styles.link}>\n <button className={cn(\"button\", styles.button)} onClick={handleSubmit}>\n Start Trading\n </button>\n </div>\n </div>\n <ScrollButton\n onScroll={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n className={styles.scroll}\n />\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/cards@2x.png\"\n src=\"/images/content/cards.png\"\n alt=\"Cards\"\n />\n </div>\n <Cards\n className={styles.cards}\n loading={loading}\n socketMarketData={socketMarketData}\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"section\":\"Learn_section__PW1k5\",\"head\":\"Learn_head__zZbdv\",\"button\":\"Learn_button__rZCi8\",\"wrap\":\"Learn_wrap__d6M4x\",\"title\":\"Learn_title__-aaTj\",\"nav\":\"Learn_nav__U4qgc\",\"link\":\"Learn_link__xzt3M\",\"active\":\"Learn_active__uP+Z9\",\"wrapper\":\"Learn_wrapper__Gj5vZ\",\"item\":\"Learn_item__xBpnq\",\"preview\":\"Learn_preview__wAhcC\",\"subtitle\":\"Learn_subtitle__G2BK6\",\"content\":\"Learn_content__Mq9gI\",\"line\":\"Learn_line__UH3Wh\",\"details\":\"Learn_details__tMf39\",\"date\":\"Learn_date__w9Sak\"};","// extracted by mini-css-extract-plugin\nexport default {\"play\":\"Play_play__Odd77\",\"small\":\"Play_small__YmpBX\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Play.module.sass\";\nimport Icon from \"../Icon\";\n\nconst Play = ({ className, small }) => {\n return (\n <button\n className={cn(className, styles.play, {\n [styles.small]: small,\n })}\n >\n <Icon name=\"play\" size=\"24\" />\n </button>\n );\n};\n\nexport default Play;\n","import cn from \"classnames\";\nimport styles from \"./Learn.module.sass\";\nimport Slider from \"react-slick\";\nimport Icon from \"../../../components/Icon\";\nimport Play from \"../../../components/Play\";\n\nconst items = [\n {\n title: \"Simple and Easy investing and trading\",\n content: \"We want to make simple and easily investing and trading accessible to everyone. Suitable for beginners and advance traders and investors. Take charge of your own financial future.\",\n image: \"/images/content/learn-pic-1.jpg\",\n image2x: \"/images/content/learn-pic-1@2x.jpg\",\n url: \"/\",\n },\n {\n title: \"Low Fees, no complicated Taker or Maker fees\",\n content: \"We aim to apply the lowest trading fee for all traders and investors no matter what your trading volume is. Everyone should benefit from our Low Fees.\",\n //date: \"Jun 1, 2021\",\n image: \"/images/content/learn-pic-2.jpg\",\n image2x: \"/images/content/learn-pic-2@2x.jpg\",\n url: \"/\",\n },\n {\n title: \"Instant Euro Deposits\",\n content: \"Deposit your Euro to buy any available cryptocurrency instantly via iDeal & SEPA.\",\n //date: \"Jun 1, 2021\",\n image: \"/images/content/learn-pic-4.jpg\",\n image2x: \"/images/content/learn-pic-4@2x.jpg\",\n url: \"/\",\n },\n {\n title: \"Buy and Sell cryptocurrencies on the go\",\n content: \"Trade whenever, wherever and always online.\",\n //date: \"Jun 1, 2021\",\n image: \"/images/content/learn-pic-3.jpg\",\n image2x: \"/images/content/learn-pic-3@2x.jpg\",\n url: \"/\",\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Learn = ({\n scrollToRef\n}) => {\n\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 2,\n slidesToScroll: 1,\n adaptiveHeight: true,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"14\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"14\" />\n </SlickArrow>\n ),\n responsive: [\n {\n breakpoint: 100000,\n settings: \"unslick\",\n },\n {\n breakpoint: 1179,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n return (\n <div className={cn(\"section\", styles.section)} ref={scrollToRef}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h3\", styles.title)}>Invest with <span>Low Trading Fees</span></h2>\n </div>\n </div>\n <div className={styles.wrapper}>\n <Slider className={cn(\"learn-slider\", styles.slider)} {...settings}>\n {items.map((x, index) =>\n index < 1 ? (\n <div className={styles.item} key={index}>\n <div className={styles.preview}>\n <img srcSet={`${x.image2x} 2x`} src={x.image} alt=\"Card\" />\n {x.play && <Play small />}\n </div>\n <div className={styles.line}>\n <div className={styles.wrap}>\n <div className={styles.subtitle}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n </div>\n ) : (\n <div className={styles.item} to={x.url} key={index}>\n <div className={styles.preview}>\n <img srcSet={`${x.image2x} 2x`} src={x.image} alt=\"Card\" />\n {x.play && <Play small />}\n </div>\n <div className={styles.details}>\n <div className={styles.subtitle}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n {x.date && <div className={styles.date}>{x.date}</div>}\n </div>\n </div>\n )\n )}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Learn;\n","// extracted by mini-css-extract-plugin\nexport default {\"section\":\"Trend_section__vWIea\",\"line\":\"Trend_line__9fob6\",\"button\":\"Trend_button__Sx46M\",\"nav\":\"Trend_nav__8HNKp\",\"dropdown\":\"Trend_dropdown__808j3\",\"link\":\"Trend_link__WNUWA\",\"active\":\"Trend_active__gWAzS\",\"table\":\"Trend_table__XBKjj\",\"row\":\"Trend_row__5dpsJ\",\"col\":\"Trend_col__L97Nd\",\"item\":\"Trend_item__jIoZa\",\"icon\":\"Trend_icon__k1Hxe\",\"currency\":\"Trend_currency__gkHyA\",\"positive\":\"Trend_positive__nJ3mK\",\"negative\":\"Trend_negative__b6Wym\",\"chart\":\"Trend_chart__pdK+n\"};","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"TradeSkeleton_row__SRNG5\",\"col\":\"TradeSkeleton_col__22eC1\"};","\nimport React from \"react\";\nimport Skeleton from 'react-loading-skeleton'\nimport styles from \"./TradeSkeleton.module.sass\";\nimport 'react-loading-skeleton/dist/skeleton.css'\n\nconst TradeSkeleton = ({ rowCount, colCount }) => {\n var themeMode = localStorage.getItem('darkMode');\n return (\n Array(rowCount)\n .fill()\n .map((item, index) => (\n <div className={styles.row} key={index}>\n {Array(colCount)\n .fill()\n .map((i, x) => (\n <div className={styles.col} key={x}>\n <Skeleton\n height={35}\n baseColor={themeMode === \"true\" ? process.env.REACT_APP_SKELETON_BASE_DARK : process.env.REACT_APP_SKELETON_BASE_LIGHT}\n highlightColor={themeMode === \"true\" ? process.env.REACT_APP_SKELETON_HIGHLIGHT_DARK : process.env.REACT_APP_SKELETON_HIGHLIGHT_LIGHT}\n />\n </div>\n\n ))\n }\n </div>\n ))\n );\n};\n\nexport default TradeSkeleton;\n\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Trend.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport { getDigitsAfterDecimal, getPostiveNegativeNum } from \"../../../components/helper\";\nimport TradeSkeleton from \"../../../components/Skeleton/TradeSkeleton\";\n\nconst Trend = ({\n loading,\n socketMarketData,\n}) => {\n\n return (\n <div className={cn(\"section\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.line}>\n <h2 className={cn(\"h3\", styles.title)}>Popular cryptocurrencies</h2>\n <Link className={cn(\"button-stroke\", styles.button)} to=\"/market\">\n View more\n </Link>\n </div>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>#</div>\n <div className={styles.col}>Name</div>\n <div className={styles.col}>Price(EUR)</div>\n <div className={styles.col}>24h %</div>\n <div className={styles.col}>7d %</div>\n <div className={styles.col}>Trade</div>\n </div>\n {loading ? <TradeSkeleton rowCount={9} colCount={6} />\n :\n socketMarketData?.[0]?.[0]?.markets\n ?.slice(0, 9)\n ?.map((x, index) => (\n <Link className={styles.row} state={x} to={`/coins/${x?.name?.toLowerCase()}`} key={index}>\n <div className={styles.col}>{index + 1}</div>\n <div className={styles.col}>\n <div className={styles.item}>\n <div className={styles.icon}>\n <img src={x.icon} alt=\"Currency\" />\n </div>\n <div className={styles.details}>\n <span className={styles.subtitle}>{x.coin_name}</span>\n <span className={styles.currency}>{x.symbol}</span>\n </div>\n </div>\n </div>\n <div className={styles.col}>{getDigitsAfterDecimal(x.currentMarketPrice, x.priceDecimalPrecision)}</div>\n <div className={styles.col}>\n {getPostiveNegativeNum(x.dayChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(x.dayChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(x.dayChange, 2)}%</div>\n }\n </div>\n <div className={styles.col}>\n {getPostiveNegativeNum(x.weekChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(x.weekChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(x.weekChange, 2)}%</div>\n }\n </div>\n <div className={styles.col}>\n <div className={styles.col}>\n <Link className={cn(\"button-stroke\", styles.button)} to={\"/sign-up\"}>\n Trade Now\n </Link>\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Trend;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Popular_container__yKx0q\",\"head\":\"Popular_head__3O8V1\",\"title\":\"Popular_title__cXFnA\",\"info\":\"Popular_info__EqD5l\",\"wrapper\":\"Popular_wrapper__Y8GRa\",\"btns\":\"Popular_btns__gkjYW\",\"button\":\"Popular_button__WEEY-\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__IiLiC\",\"preview\":\"Card_preview__Htqvu\",\"title\":\"Card_title__uVWUB\",\"content\":\"Card_content__cPbLA\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <div className={cn(className, styles.card)}>\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n </div>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.content}>{item.content}</div>\n <Link\n className={cn(\"button-small\", styles.button)}\n to={item.url}\n >\n {item.button}\n </Link>\n </div>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Popular.module.sass\";\nimport Slider from \"react-slick\";\nimport Icon from \"../Icon\";\nimport Card from \"./Card\";\n\nconst items = [\n {\n title: \"Developing more products and services\",\n content: \"Bitdenex will keep developing more services and products in the near future as per the needs and demands of the traders, and market innovations. \",\n button: \"Start Trading\",\n image: \"/images/content/card-pic-1.png\",\n image2x: \"/images/content/card-pic-1@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n {\n title: \"Dedicated for the people\",\n content: \"We have designed our exchange for the common people. It is simple and easily useable for everyone. We don’t use complicated features. Simple is our standard.\",\n button: \"Start Trading\",\n image: \"/images/content/card-pic-2.png\",\n image2x: \"/images/content/card-pic-2@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n {\n title: \"Add more value to your portfolio\",\n content: `Invest only in high valued cryptocurrencies. We add more value to \n your trading portfolio by making only reliable and valuable coins \n and tokens available on Bitdenex. `,\n button: \"Start Trading\",\n image: \"/images/content/card-pic-3.png\",\n image2x: \"/images/content/card-pic-3@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Popular = ({ classSection }) => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 2,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n infinite: false,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n },\n },\n ],\n };\n\n return (\n <div className={cn(classSection, styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>\n More than just <span>Low Trading Fees</span>\n </h2>\n <div className={styles.info}>\n Reasons why to trade and invest with us.\n </div>\n </div>\n <div className={styles.wrapper}>\n <Slider className=\"popular-slider\" {...settings}>\n {items.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Popular;\n","// extracted by mini-css-extract-plugin\nexport default {\"download\":\"Download_download__SAfly\",\"wrap\":\"Download_wrap__3fMJN\",\"title\":\"Download_title__g8S2O\",\"info\":\"Download_info__7CJsD\",\"list\":\"Download_list__kKjGY\",\"item\":\"Download_item__Qm8C3\",\"icon\":\"Download_icon__3B59K\",\"details\":\"Download_details__YnwJR\",\"subtitle\":\"Download_subtitle__meosW\",\"content\":\"Download_content__ko3cA\",\"bg\":\"Download_bg__SHvBx\",\"qrcode\":\"Download_qrcode__pI+K9\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Download.module.sass\";\n\nconst items = [\n {\n title: \"App Store\",\n content: \"Download from\",\n image: \"/images/content/apple.svg\",\n url: \"https://apps.apple.com/in/app/bitdenex-buy-sell-crypto/id1640819532\",\n qrcode: \"/images/content/qrcode/qrcode-ios.png\",\n },\n {\n title: \"Google Play\",\n content: \"Download from\",\n image: \"/images/content/google-play.svg\",\n url: 'https://play.google.com/store/apps/details?id=com.bitdenex',\n qrcode: \"/images/content/qrcode/qrcode-android.png\",\n }\n];\n\nconst Download = () => {\n return (\n <div className={cn(\"section-mb0\", styles.download)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/download-pic@2x.png 2x\"\n src=\"/images/content/download-pic.png\"\n alt=\"Download\"\n />\n </div>\n <div className={styles.wrap}>\n <h2 className={cn(\"h3\", styles.title)}>Trade anywhere</h2>\n <div className={styles.info}>\n Buy and sell cryptocurrencies On The Go. Trade whenever, wherever and always online. We strive to create a great user experience while trading on our Web-exchange or on our IOS and Android Apps.\n </div>\n <div className={styles.list}>\n {items.map((x, index) => (\n <a href={x.url} target=\"__blank\" className={styles.item} key={index} >\n <div className={styles.icon}>\n <img src={x.image} alt=\"Logo\" />\n </div>\n <div className={styles.details}>\n <div className={styles.content}>{x.content}</div>\n <div className={styles.subtitle}>{x.title}</div>\n </div>\n <div className={styles.qrcode}>\n <img src={x.qrcode} alt=\"qrcode\" />\n </div>\n </a>\n ))}\n {/* <QrCode value={process.env.REACT_APP_MOBILE_REDIRECT_URL} logoPath=\"/images/Qrcode.jpg\" width={40} height={40} /> */}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Download;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"News_container__U9YP1\",\"head\":\"News_head__3wjui\",\"logo\":\"News_logo__T1CEZ\",\"title\":\"News_title__tFVpg\",\"info\":\"News_info__LE0sN\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__BsbQF\",\"preview\":\"Card_preview__NRW4B\",\"wrap\":\"Card_wrap__2VMHE\",\"stage\":\"Card_stage__SzPg7\",\"title\":\"Card_title__mTMiV\",\"content\":\"Card_content__6jnh8\",\"button\":\"Card_button__gp9DE\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <div className={cn(className, styles.card)}>\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n </div>\n <div className={styles.wrap}>\n <div className={cn(\"stage-small\", styles.stage)}>{item.stage}</div>\n\n <div className={styles.title}>{item.title}</div>\n <div className={styles.content}>{item.content}</div>\n <Link\n className={cn(\"button-small\", styles.button)}\n to={item.url}\n >\n {/* Join now */}\n {item.buttonText}\n </Link>\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./News.module.sass\";\nimport Slider from \"react-slick\";\nimport Icon from \"../Icon\";\nimport Card from \"./Card\";\n\nconst items = [\n {\n title: \"Our Valued Partners\",\n content:\n \"Bitdenex collaborates with highly qualified and experienced partners who provide the best solutions to the end-user, means our Customers. We aim to select the best in class providers for example; your Know Your Customer process, Custodian Crypto Wallets, Wallet AML Risk reports, Global Banking, Safe & Secure IT-environment, Secured Back-ups, Legitimate emails, Charting and many more.\",\n stage: \"Partners\",\n image: \"/images/content/partners.png\",\n image2x: \"/images/content/partners@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n buttonText: \"Start Trading\"\n },\n {\n title: \"The Bitdenex Cryptocurrency Exchange\",\n content:\n \"Bitdenex is an exchange and trading platform where you can trade your cryptocurrency like Bitcoin, Ethereum, Litecoin, XRP and many more high valued cryptocurrencies.\",\n stage: \"About Bitdenex\",\n image: \"/images/content/news-pic-1.png\",\n image2x: \"/images/content/news-pic-1@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n buttonText: \"Start Trading\"\n },\n {\n title: \"Listing only reliable and valuable Coins\",\n content:\n \"Only high valued cryptocurrencies. We will only list the most reliable and the most valuable coins and tokens. From time to time, we will poll our user’s need to list special coins or tokens. We will not mis the opportunity to list a high potential coin or token. \",\n stage: \"Listings\",\n image: \"/images/content/lock.png\",\n image2x: \"/images/content/lock@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/market\" : \"/sign-up\",\n buttonText: \"View Coins\"\n },\n {\n title: \"Buy and Sell Cryptocurrencies On The Go\",\n content:\n \"Nowadays people spend more and more time on their mobile devices and tablets. To ensure that visitors who access Bitdenex from mobile devices have a great experience on the device. Apart from optimizing the web view, Bitdenex is soon launching the mobile apps for Android and IOS users to unlock the power of better connection with people.\",\n stage: \"Mobile Apps\",\n image: \"/images/content/card-pic.png\",\n image2x: \"/images/content/card-pic@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/buy-crypto\" : \"/sign-up\",\n buttonText: \"Buy Now\"\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst News = ({ classSection }) => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n adaptiveHeight: true,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n };\n\n return (\n <div className={cn(classSection, styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n {/* <div className={styles.logo}>\n <Image\n className={styles.pic}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"BitCloud\"\n />\n </div> */}\n <h2 className={cn(\"h3\", styles.title)}>\n Stay in the know on crypto with <span>Bitdenex</span>\n </h2>\n <div className={styles.info}>\n A creative exchange that lead and inspire\n </div>\n </div>\n <div className={styles.wrapper}>\n <Slider className=\"news-slider\" {...settings}>\n {items.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default News;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Steps_head__CerQB\",\"title\":\"Steps_title__By8dP\",\"info\":\"Steps_info__BXKrm\",\"list\":\"Steps_list__Q6CYS\",\"item\":\"Steps_item__t+LM1\",\"preview\":\"Steps_preview__mNmeL\",\"number\":\"Steps_number__WEodT\",\"subtitle\":\"Steps_subtitle__BWAsT\",\"content\":\"Steps_content__-dEqt\",\"details\":\"Steps_details__I2jqs\"};","// extracted by mini-css-extract-plugin\nexport default {\"cards\":\"Notice_cards__ZABtP\",\"card\":\"Notice_card__VZtnU\",\"icon\":\"Notice_icon__Hs2I1\",\"details\":\"Notice_details__qYKYH\",\"line\":\"Notice_line__o3zoA\",\"title\":\"Notice_title__TUkjJ\",\"positive\":\"Notice_positive__5x4E4\",\"negative\":\"Notice_negative__1fQjA\",\"price\":\"Notice_price__UkO7j\",\"money\":\"Notice_money__gN+zn\",\"button\":\"Notice_button__cBXQC\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Notice.module.sass\";\n\nconst Notice = ({ className }) => {\n return (\n <>\n <div className={cn(className, styles.cards)}>\n <div className={styles.details}>\n <div className={styles.price}>The risk of investing</div>\n <div className={styles.money}>Bitdenex.com is a website which provides an overview of the trading options and trading\n platform of Bitdenex per region. Each region applies its own local applicable law and\n regulations to the local traders, which shall comply with the applicable law.\n </div>\n {/* <br /> */}\n {/* <div className={styles.money}>Bitdenex International is operated by Coindenex LLC - license no. 922 LLC 2021, which\n is authorized and regulated by the Financial Services Authority of St. Vincent & The\n Grenadines.\n </div> */}\n <br />\n <div className={styles.money}>Bitdenex Europe is operated by Bitdenex B.V. - license no. R179357, which is registered,\n authorized, and regulated as a provider of crypto services by the Dutch Central bank, De\n Nederlandsche Bank N.V. (“DNBâ€). DNB oversees Bitdenex B.V. of the Money Laundering\n and Terrorist Financing Prevention Act and the Sanctions Act 1977. Bitdenex B.V. is not\n subject to prudential supervision by DNB or supervised by the AFM. This means that there is\n no supervision on financial requirements of business risks and there are no specific financial\n consumer protection.\n </div>\n <br />\n {/* <div className={styles.money}>\n Bitdenex Suriname is operated by Bitdenex Suriname N.V., registered under the Chamber of Commerce & Industry no. 92774, incorporated under the laws of Suriname.\n </div> */}\n </div>\n </div>\n </>\n );\n};\n\nexport default Notice;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Steps.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Notice from \"./Notice\";\n\nconst items = [\n {\n title: \"Create Account\",\n image2x: \"/images/content/step-1@2x.png\",\n image: \"/images/content/step-1.png\",\n content:\n \"KYC-checks required.\",\n },\n {\n title: \"Link your bank account\",\n image2x: \"/images/content/step-2@2x.png\",\n image: \"/images/content/step-2.png\",\n content:\n \"Bank account verification.\",\n },\n {\n title: \"Start buying & selling\",\n image2x: \"/images/content/step-3@2x.png\",\n image: \"/images/content/step-3.png\",\n content:\n \"Place your first Order.\",\n },\n {\n title: \"Earn money\",\n image2x: \"/images/content/step-4@2x.png\",\n image: \"/images/content/step-4.png\",\n content:\n \"Become smart trader to earn.\",\n },\n];\n\nconst Steps = ({ scrollToRef }) => {\n return (\n <div className={cn(\"section\", styles.section)} ref={scrollToRef}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>How it works</h2>\n <div className={styles.info}>\n Bitdenex supports a variety of the most popular cryptocurrencies. Get the benefits of our LOW Fees and simple to use Exchange.\n </div>\n </div>\n <div className={styles.list}>\n {items.map((x, index) => (\n <div className={styles.item} key={index}>\n <div className={styles.preview}>\n <img\n srcSet={`${x.image2x} 2x`}\n src={x.image}\n alt={`Step ${index + 1}`}\n />\n </div>\n <div className={styles.number}>Step {index + 1}</div>\n <div className={styles.subtitle}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n ))}\n </div>\n <div className={styles.details}>\n <Link className={cn(\"button\", styles.button)} to={localStorage.getItem('signature') ? 'exchange/BTC-EUR' : 'sign-up'}>\n Start Trading Today\n </Link>\n </div>\n <Notice />\n </div>\n </div>\n );\n};\n\nexport default Steps;\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n // @ts-expect-error\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n // @ts-expect-error\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* READ_PAYLOAD */;\n }\n else if (state === 2 /* READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\nexport function createCookieJar() { }\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, XHR as XMLHttpRequest, } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n if (this.opts.withCredentials) {\n this.cookieJar = createCookieJar();\n }\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n var _a;\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, true);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: Polling,\n};\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n // @ts-ignore\n if (typeof WebTransport !== \"function\") {\n return;\n }\n // @ts-ignore\n this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n this.transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this.transport.ready.then(() => {\n this.transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this.writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this.writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this.writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 2000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { defaultBinaryType } from \"./transports/websocket-constructor.js\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\n \"polling\",\n \"websocket\",\n \"webtransport\",\n ];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n this.resetPingTimeout();\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport, TransportError } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import * as ReactOriginal from 'react'\r\nimport type * as ReactNamespace from 'react'\r\n\r\nexport const React: typeof ReactNamespace =\r\n // prettier-ignore\r\n // @ts-ignore\r\n 'default' in ReactOriginal ? ReactOriginal['default'] : ReactOriginal as any\r\n","import type { Context } from 'react'\nimport { React } from '../utils/react'\nimport type { Action, Store, UnknownAction } from 'redux'\nimport type { Subscription } from '../utils/Subscription'\nimport type { ProviderProps } from './Provider'\n\nexport interface ReactReduxContextValue<\n SS = any,\n A extends Action<string> = UnknownAction,\n> extends Pick<ProviderProps, 'stabilityCheck' | 'identityFunctionCheck'> {\n store: Store<SS, A>\n subscription: Subscription\n getServerState?: () => SS\n}\n\nconst ContextKey = Symbol.for(`react-redux-context`)\nconst gT: {\n [ContextKey]?: Map<\n typeof React.createContext,\n Context<ReactReduxContextValue | null>\n >\n} = (\n typeof globalThis !== 'undefined'\n ? globalThis\n : /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ {}\n) as any\n\nfunction getContext(): Context<ReactReduxContextValue | null> {\n if (!React.createContext) return {} as any\n\n const contextMap = (gT[ContextKey] ??= new Map<\n typeof React.createContext,\n Context<ReactReduxContextValue | null>\n >())\n let realContext = contextMap.get(React.createContext)\n if (!realContext) {\n realContext = React.createContext<ReactReduxContextValue | null>(\n null as any,\n )\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux'\n }\n contextMap.set(React.createContext, realContext)\n }\n return realContext\n}\n\nexport const ReactReduxContext = /*#__PURE__*/ getContext()\n\nexport type ReactReduxContextInstance = typeof ReactReduxContext\n\nexport default ReactReduxContext\n","import type { useSyncExternalStore } from 'use-sync-external-store'\r\nimport type { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector'\r\n\r\nexport const notInitialized = () => {\r\n throw new Error('uSES not initialized!')\r\n}\r\n\r\nexport type uSES = typeof useSyncExternalStore\r\nexport type uSESWS = typeof useSyncExternalStoreWithSelector\r\n","import { React } from '../utils/react'\nimport { ReactReduxContext } from '../components/Context'\nimport type { ReactReduxContextValue } from '../components/Context'\n\n/**\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext(): ReactReduxContextValue {\n const contextValue = React.useContext(context)\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error(\n 'could not find react-redux context value; please ensure the component is wrapped in a <Provider>',\n )\n }\n\n return contextValue!\n }\n}\n\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const { store } = useReduxContext()\n * return <div>{store.getState()}</div>\n * }\n */\nexport const useReduxContext = /*#__PURE__*/ createReduxContextHook()\n","//import * as React from 'react'\nimport { React } from '../utils/react'\n\nimport type { ReactReduxContextValue } from '../components/Context'\nimport { ReactReduxContext } from '../components/Context'\nimport type { EqualityFn, NoInfer } from '../types'\nimport type { uSESWS } from '../utils/useSyncExternalStore'\nimport { notInitialized } from '../utils/useSyncExternalStore'\nimport {\n createReduxContextHook,\n useReduxContext as useDefaultReduxContext,\n} from './useReduxContext'\n\n/**\n * The frequency of development mode checks.\n *\n * @since 8.1.0\n * @internal\n */\nexport type DevModeCheckFrequency = 'never' | 'once' | 'always'\n\n/**\n * Represents the configuration for development mode checks.\n *\n * @since 9.0.0\n * @internal\n */\nexport interface DevModeChecks {\n /**\n * Overrides the global stability check for the selector.\n * - `once` - Run only the first time the selector is called.\n * - `always` - Run every time the selector is called.\n * - `never` - Never run the stability check.\n *\n * @default 'once'\n *\n * @since 8.1.0\n */\n stabilityCheck: DevModeCheckFrequency\n\n /**\n * Overrides the global identity function check for the selector.\n * - `once` - Run only the first time the selector is called.\n * - `always` - Run every time the selector is called.\n * - `never` - Never run the identity function check.\n *\n * **Note**: Previously referred to as `noopCheck`.\n *\n * @default 'once'\n *\n * @since 9.0.0\n */\n identityFunctionCheck: DevModeCheckFrequency\n}\n\nexport interface UseSelectorOptions<Selected = unknown> {\n equalityFn?: EqualityFn<Selected>\n\n /**\n * `useSelector` performs additional checks in development mode to help\n * identify and warn about potential issues in selector behavior. This\n * option allows you to customize the behavior of these checks per selector.\n *\n * @since 9.0.0\n */\n devModeChecks?: Partial<DevModeChecks>\n}\n\n/**\n * Represents a custom hook that allows you to extract data from the\n * Redux store state, using a selector function. The selector function\n * takes the current state as an argument and returns a part of the state\n * or some derived data. The hook also supports an optional equality\n * function or options object to customize its behavior.\n *\n * @template StateType - The specific type of state this hook operates on.\n *\n * @public\n */\nexport interface UseSelector<StateType = unknown> {\n /**\n * A function that takes a selector function as its first argument.\n * The selector function is responsible for selecting a part of\n * the Redux store's state or computing derived data.\n *\n * @param selector - A function that receives the current state and returns a part of the state or some derived data.\n * @param equalityFnOrOptions - An optional equality function or options object for customizing the behavior of the selector.\n * @returns The selected part of the state or derived data.\n *\n * @template TState - The specific type of state this hook operates on.\n * @template Selected - The type of the value that the selector function will return.\n */\n <TState extends StateType = StateType, Selected = unknown>(\n selector: (state: TState) => Selected,\n equalityFnOrOptions?: EqualityFn<Selected> | UseSelectorOptions<Selected>,\n ): Selected\n\n /**\n * Creates a \"pre-typed\" version of {@linkcode useSelector useSelector}\n * where the `state` type is predefined.\n *\n * This allows you to set the `state` type once, eliminating the need to\n * specify it with every {@linkcode useSelector useSelector} call.\n *\n * @returns A pre-typed `useSelector` with the state type already defined.\n *\n * @example\n * ```ts\n * export const useAppSelector = useSelector.withTypes<RootState>()\n * ```\n *\n * @template OverrideStateType - The specific type of state this hook operates on.\n *\n * @since 9.1.0\n */\n withTypes: <\n OverrideStateType extends StateType,\n >() => UseSelector<OverrideStateType>\n}\n\nlet useSyncExternalStoreWithSelector = notInitialized as uSESWS\nexport const initializeUseSelector = (fn: uSESWS) => {\n useSyncExternalStoreWithSelector = fn\n}\n\nconst refEquality: EqualityFn<any> = (a, b) => a === b\n\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\nexport function createSelectorHook(\n context: React.Context<ReactReduxContextValue<\n any,\n any\n > | null> = ReactReduxContext,\n): UseSelector {\n const useReduxContext =\n context === ReactReduxContext\n ? useDefaultReduxContext\n : createReduxContextHook(context)\n\n const useSelector = <TState, Selected extends unknown>(\n selector: (state: TState) => Selected,\n equalityFnOrOptions:\n | EqualityFn<NoInfer<Selected>>\n | UseSelectorOptions<NoInfer<Selected>> = {},\n ): Selected => {\n const { equalityFn = refEquality, devModeChecks = {} } =\n typeof equalityFnOrOptions === 'function'\n ? { equalityFn: equalityFnOrOptions }\n : equalityFnOrOptions\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`)\n }\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`)\n }\n if (typeof equalityFn !== 'function') {\n throw new Error(\n `You must pass a function as an equality function to useSelector`,\n )\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck,\n identityFunctionCheck,\n } = useReduxContext()\n\n const firstRun = React.useRef(true)\n\n const wrappedSelector = React.useCallback<typeof selector>(\n {\n [selector.name](state: TState) {\n const selected = selector(state)\n if (process.env.NODE_ENV !== 'production') {\n const {\n identityFunctionCheck: finalIdentityFunctionCheck,\n stabilityCheck: finalStabilityCheck,\n } = {\n stabilityCheck,\n identityFunctionCheck,\n ...devModeChecks,\n }\n if (\n finalStabilityCheck === 'always' ||\n (finalStabilityCheck === 'once' && firstRun.current)\n ) {\n const toCompare = selector(state)\n if (!equalityFn(selected, toCompare)) {\n let stack: string | undefined = undefined\n try {\n throw new Error()\n } catch (e) {\n // eslint-disable-next-line no-extra-semi\n ;({ stack } = e as Error)\n }\n console.warn(\n 'Selector ' +\n (selector.name || 'unknown') +\n ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' +\n '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization',\n {\n state,\n selected,\n selected2: toCompare,\n stack,\n },\n )\n }\n }\n if (\n finalIdentityFunctionCheck === 'always' ||\n (finalIdentityFunctionCheck === 'once' && firstRun.current)\n ) {\n // @ts-ignore\n if (selected === state) {\n let stack: string | undefined = undefined\n try {\n throw new Error()\n } catch (e) {\n // eslint-disable-next-line no-extra-semi\n ;({ stack } = e as Error)\n }\n console.warn(\n 'Selector ' +\n (selector.name || 'unknown') +\n ' returned the root state when called. This can lead to unnecessary rerenders.' +\n '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.',\n { stack },\n )\n }\n }\n if (firstRun.current) firstRun.current = false\n }\n return selected\n },\n }[selector.name],\n [selector, stabilityCheck, devModeChecks.stabilityCheck],\n )\n\n const selectedState = useSyncExternalStoreWithSelector(\n subscription.addNestedSub,\n store.getState,\n getServerState || store.getState,\n wrappedSelector,\n equalityFn,\n )\n\n React.useDebugValue(selectedState)\n\n return selectedState\n }\n\n Object.assign(useSelector, {\n withTypes: () => useSelector,\n })\n\n return useSelector as UseSelector\n}\n\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return <div>{counter}</div>\n * }\n */\nexport const useSelector = /*#__PURE__*/ createSelectorHook()\n","import type { ElementType, MemoExoticComponent, ReactElement } from 'react'\r\n\r\n// Directly ported from:\r\n// https://unpkg.com/browse/react-is@18.3.0-canary-ee68446ff-20231115/cjs/react-is.production.js\r\n// It's very possible this could change in the future, but given that\r\n// we only use these in `connect`, this is a low priority.\r\n\r\nconst REACT_ELEMENT_TYPE = Symbol.for('react.element')\r\nconst REACT_PORTAL_TYPE = Symbol.for('react.portal')\r\nconst REACT_FRAGMENT_TYPE = Symbol.for('react.fragment')\r\nconst REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode')\r\nconst REACT_PROFILER_TYPE = Symbol.for('react.profiler')\r\nconst REACT_PROVIDER_TYPE = Symbol.for('react.provider')\r\nconst REACT_CONTEXT_TYPE = Symbol.for('react.context')\r\nconst REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context')\r\nconst REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref')\r\nconst REACT_SUSPENSE_TYPE = Symbol.for('react.suspense')\r\nconst REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list')\r\nconst REACT_MEMO_TYPE = Symbol.for('react.memo')\r\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy')\r\nconst REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen')\r\nconst REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference')\r\n\r\nexport const ForwardRef = REACT_FORWARD_REF_TYPE\r\nexport const Memo = REACT_MEMO_TYPE\r\n\r\nexport function isValidElementType(type: any): type is ElementType {\r\n if (typeof type === 'string' || typeof type === 'function') {\r\n return true\r\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\r\n\r\n if (\r\n type === REACT_FRAGMENT_TYPE ||\r\n type === REACT_PROFILER_TYPE ||\r\n type === REACT_STRICT_MODE_TYPE ||\r\n type === REACT_SUSPENSE_TYPE ||\r\n type === REACT_SUSPENSE_LIST_TYPE ||\r\n type === REACT_OFFSCREEN_TYPE\r\n ) {\r\n return true\r\n }\r\n\r\n if (typeof type === 'object' && type !== null) {\r\n if (\r\n type.$$typeof === REACT_LAZY_TYPE ||\r\n type.$$typeof === REACT_MEMO_TYPE ||\r\n type.$$typeof === REACT_PROVIDER_TYPE ||\r\n type.$$typeof === REACT_CONTEXT_TYPE ||\r\n type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\r\n // types supported by any Flight configuration anywhere since\r\n // we don't know which Flight build this will end up being used\r\n // with.\r\n type.$$typeof === REACT_CLIENT_REFERENCE ||\r\n type.getModuleId !== undefined\r\n ) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nfunction typeOf(object: any): symbol | undefined {\r\n if (typeof object === 'object' && object !== null) {\r\n const $$typeof = object.$$typeof\r\n\r\n switch ($$typeof) {\r\n case REACT_ELEMENT_TYPE: {\r\n const type = object.type\r\n\r\n switch (type) {\r\n case REACT_FRAGMENT_TYPE:\r\n case REACT_PROFILER_TYPE:\r\n case REACT_STRICT_MODE_TYPE:\r\n case REACT_SUSPENSE_TYPE:\r\n case REACT_SUSPENSE_LIST_TYPE:\r\n return type\r\n\r\n default: {\r\n const $$typeofType = type && type.$$typeof\r\n\r\n switch ($$typeofType) {\r\n case REACT_SERVER_CONTEXT_TYPE:\r\n case REACT_CONTEXT_TYPE:\r\n case REACT_FORWARD_REF_TYPE:\r\n case REACT_LAZY_TYPE:\r\n case REACT_MEMO_TYPE:\r\n case REACT_PROVIDER_TYPE:\r\n return $$typeofType\r\n\r\n default:\r\n return $$typeof\r\n }\r\n }\r\n }\r\n }\r\n\r\n case REACT_PORTAL_TYPE: {\r\n return $$typeof\r\n }\r\n }\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nexport function isContextConsumer(object: any): object is ReactElement {\r\n return typeOf(object) === REACT_CONTEXT_TYPE\r\n}\r\n\r\nexport function isMemo(object: any): object is MemoExoticComponent<any> {\r\n return typeOf(object) === REACT_MEMO_TYPE\r\n}\r\n","// Default to a dummy \"batch\" implementation that just runs the callback\r\nexport function defaultNoopBatch(callback: () => void) {\r\n callback()\r\n}\r\n","import { defaultNoopBatch as batch } from './batch'\n\n// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\ntype VoidFunc = () => void\n\ntype Listener = {\n callback: VoidFunc\n next: Listener | null\n prev: Listener | null\n}\n\nfunction createListenerCollection() {\n let first: Listener | null = null\n let last: Listener | null = null\n\n return {\n clear() {\n first = null\n last = null\n },\n\n notify() {\n batch(() => {\n let listener = first\n while (listener) {\n listener.callback()\n listener = listener.next\n }\n })\n },\n\n get() {\n const listeners: Listener[] = []\n let listener = first\n while (listener) {\n listeners.push(listener)\n listener = listener.next\n }\n return listeners\n },\n\n subscribe(callback: () => void) {\n let isSubscribed = true\n\n const listener: Listener = (last = {\n callback,\n next: null,\n prev: last,\n })\n\n if (listener.prev) {\n listener.prev.next = listener\n } else {\n first = listener\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return\n isSubscribed = false\n\n if (listener.next) {\n listener.next.prev = listener.prev\n } else {\n last = listener.prev\n }\n if (listener.prev) {\n listener.prev.next = listener.next\n } else {\n first = listener.next\n }\n }\n },\n }\n}\n\ntype ListenerCollection = ReturnType<typeof createListenerCollection>\n\nexport interface Subscription {\n addNestedSub: (listener: VoidFunc) => VoidFunc\n notifyNestedSubs: VoidFunc\n handleChangeWrapper: VoidFunc\n isSubscribed: () => boolean\n onStateChange?: VoidFunc | null\n trySubscribe: VoidFunc\n tryUnsubscribe: VoidFunc\n getListeners: () => ListenerCollection\n}\n\nconst nullListeners = {\n notify() {},\n get: () => [],\n} as unknown as ListenerCollection\n\nexport function createSubscription(store: any, parentSub?: Subscription) {\n let unsubscribe: VoidFunc | undefined\n let listeners: ListenerCollection = nullListeners\n\n // Reasons to keep the subscription active\n let subscriptionsAmount = 0\n\n // Is this specific subscription subscribed (or only nested ones?)\n let selfSubscribed = false\n\n function addNestedSub(listener: () => void) {\n trySubscribe()\n\n const cleanupListener = listeners.subscribe(listener)\n\n // cleanup nested sub\n let removed = false\n return () => {\n if (!removed) {\n removed = true\n cleanupListener()\n tryUnsubscribe()\n }\n }\n }\n\n function notifyNestedSubs() {\n listeners.notify()\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange()\n }\n }\n\n function isSubscribed() {\n return selfSubscribed\n }\n\n function trySubscribe() {\n subscriptionsAmount++\n if (!unsubscribe) {\n unsubscribe = parentSub\n ? parentSub.addNestedSub(handleChangeWrapper)\n : store.subscribe(handleChangeWrapper)\n\n listeners = createListenerCollection()\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe()\n unsubscribe = undefined\n listeners.clear()\n listeners = nullListeners\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true\n trySubscribe()\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false\n tryUnsubscribe()\n }\n }\n\n const subscription: Subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners,\n }\n\n return subscription\n}\n","import { React } from '../utils/react'\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\n// Matches logic in React's `shared/ExecutionEnvironment` file\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n)\n\n// Under React Native, we know that we always want to use useLayoutEffect\n\n/**\n * Checks if the code is running in a React Native environment.\n *\n * @see {@link https://github.com/facebook/react-native/issues/1331 Reference}\n */\nexport const isReactNative =\n typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n\nexport const useIsomorphicLayoutEffect =\n canUseDOM || isReactNative ? React.useLayoutEffect : React.useEffect\n","// Copied directly from:\n// https://github.com/mridgway/hoist-non-react-statics/blob/main/src/index.js\n// https://unpkg.com/browse/@types/hoist-non-react-statics@3.3.1/index.d.ts\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nimport type * as React from 'react'\nimport { ForwardRef, Memo, isMemo } from '../utils/react-is'\n\nconst REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n} as const\n\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n} as const\n\nconst FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n} as const\n\nconst MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true,\n} as const\n\nconst TYPE_STATICS = {\n [ForwardRef]: FORWARD_REF_STATICS,\n [Memo]: MEMO_STATICS,\n} as const\n\nfunction getStatics(component: any) {\n // React v16.11 and below\n if (isMemo(component)) {\n return MEMO_STATICS\n }\n\n // React v16.12 and above\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS\n}\n\nexport type NonReactStatics<\n S extends React.ComponentType<any>,\n C extends {\n [key: string]: true\n } = {},\n> = {\n [key in Exclude<\n keyof S,\n S extends React.MemoExoticComponent<any>\n ? keyof typeof MEMO_STATICS | keyof C\n : S extends React.ForwardRefExoticComponent<any>\n ? keyof typeof FORWARD_REF_STATICS | keyof C\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n >]: S[key]\n}\n\nconst defineProperty = Object.defineProperty\nconst getOwnPropertyNames = Object.getOwnPropertyNames\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor\nconst getPrototypeOf = Object.getPrototypeOf\nconst objectPrototype = Object.prototype\n\nexport default function hoistNonReactStatics<\n T extends React.ComponentType<any>,\n S extends React.ComponentType<any>,\n C extends {\n [key: string]: true\n } = {},\n>(targetComponent: T, sourceComponent: S): T & NonReactStatics<S, C> {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent)\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent)\n }\n }\n\n let keys: (string | symbol)[] = getOwnPropertyNames(sourceComponent)\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent))\n }\n\n const targetStatics = getStatics(targetComponent)\n const sourceStatics = getStatics(sourceComponent)\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i]\n if (\n !KNOWN_STATICS[key as keyof typeof KNOWN_STATICS] &&\n !(sourceStatics && sourceStatics[key as keyof typeof sourceStatics]) &&\n !(targetStatics && targetStatics[key as keyof typeof targetStatics])\n ) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key)\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor!)\n } catch (e) {\n // ignore\n }\n }\n }\n }\n\n return targetComponent as any\n}\n","import type { Context, ReactNode } from 'react'\nimport { React } from '../utils/react'\nimport type { Action, Store, UnknownAction } from 'redux'\nimport type { DevModeCheckFrequency } from '../hooks/useSelector'\nimport { createSubscription } from '../utils/Subscription'\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'\nimport type { ReactReduxContextValue } from './Context'\nimport { ReactReduxContext } from './Context'\n\nexport interface ProviderProps<\n A extends Action<string> = UnknownAction,\n S = unknown,\n> {\n /**\n * The single Redux store in your application.\n */\n store: Store<S, A>\n\n /**\n * An optional server state snapshot. Will be used during initial hydration render if available, to ensure that the UI output is consistent with the HTML generated on the server.\n */\n serverState?: S\n\n /**\n * Optional context to be used internally in react-redux. Use React.createContext() to create a context to be used.\n * If this is used, you'll need to customize `connect` by supplying the same context provided to the Provider.\n * Set the initial value to null, and the hooks will error\n * if this is not overwritten by Provider.\n */\n context?: Context<ReactReduxContextValue<S, A> | null>\n\n /**\n * Determines the frequency of stability checks for all selectors.\n * This setting overrides the global configuration for\n * the `useSelector` stability check, allowing you to specify how often\n * these checks should occur in development mode.\n *\n * @since 8.1.0\n */\n stabilityCheck?: DevModeCheckFrequency\n\n /**\n * Determines the frequency of identity function checks for all selectors.\n * This setting overrides the global configuration for\n * the `useSelector` identity function check, allowing you to specify how often\n * these checks should occur in development mode.\n *\n * **Note**: Previously referred to as `noopCheck`.\n *\n * @since 9.0.0\n */\n identityFunctionCheck?: DevModeCheckFrequency\n\n children: ReactNode\n}\n\nfunction Provider<A extends Action<string> = UnknownAction, S = unknown>({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n identityFunctionCheck = 'once',\n}: ProviderProps<A, S>) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store)\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n identityFunctionCheck,\n }\n }, [store, serverState, stabilityCheck, identityFunctionCheck])\n\n const previousState = React.useMemo(() => store.getState(), [store])\n\n useIsomorphicLayoutEffect(() => {\n const { subscription } = contextValue\n subscription.onStateChange = subscription.notifyNestedSubs\n subscription.trySubscribe()\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs()\n }\n return () => {\n subscription.tryUnsubscribe()\n subscription.onStateChange = undefined\n }\n }, [contextValue, previousState])\n\n const Context = context || ReactReduxContext\n\n // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n return <Context.Provider value={contextValue}>{children}</Context.Provider>\n}\n\nexport default Provider\n","import type { Context } from 'react'\nimport type { Action, Store } from 'redux'\nimport type { ReactReduxContextValue } from '../components/Context'\nimport { ReactReduxContext } from '../components/Context'\nimport {\n createReduxContextHook,\n useReduxContext as useDefaultReduxContext,\n} from './useReduxContext'\n\n/**\n * Represents a type that extracts the action type from a given Redux store.\n *\n * @template StoreType - The specific type of the Redux store.\n *\n * @since 9.1.0\n * @internal\n */\nexport type ExtractStoreActionType<StoreType extends Store> =\n StoreType extends Store<any, infer ActionType> ? ActionType : never\n\n/**\n * Represents a custom hook that provides access to the Redux store.\n *\n * @template StoreType - The specific type of the Redux store that gets returned.\n *\n * @since 9.1.0\n * @public\n */\nexport interface UseStore<StoreType extends Store> {\n /**\n * Returns the Redux store instance.\n *\n * @returns The Redux store instance.\n */\n (): StoreType\n\n /**\n * Returns the Redux store instance with specific state and action types.\n *\n * @returns The Redux store with the specified state and action types.\n *\n * @template StateType - The specific type of the state used in the store.\n * @template ActionType - The specific type of the actions used in the store.\n */\n <\n StateType extends ReturnType<StoreType['getState']> = ReturnType<\n StoreType['getState']\n >,\n ActionType extends Action = ExtractStoreActionType<Store>,\n >(): Store<StateType, ActionType>\n\n /**\n * Creates a \"pre-typed\" version of {@linkcode useStore useStore}\n * where the type of the Redux `store` is predefined.\n *\n * This allows you to set the `store` type once, eliminating the need to\n * specify it with every {@linkcode useStore useStore} call.\n *\n * @returns A pre-typed `useStore` with the store type already defined.\n *\n * @example\n * ```ts\n * export const useAppStore = useStore.withTypes<AppStore>()\n * ```\n *\n * @template OverrideStoreType - The specific type of the Redux store that gets returned.\n *\n * @since 9.1.0\n */\n withTypes: <\n OverrideStoreType extends StoreType,\n >() => UseStore<OverrideStoreType>\n}\n\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\nexport function createStoreHook<\n StateType = unknown,\n ActionType extends Action = Action,\n>(\n // @ts-ignore\n context?: Context<ReactReduxContextValue<\n StateType,\n ActionType\n > | null> = ReactReduxContext,\n) {\n const useReduxContext =\n context === ReactReduxContext\n ? useDefaultReduxContext\n : // @ts-ignore\n createReduxContextHook(context)\n const useStore = () => {\n const { store } = useReduxContext()\n return store\n }\n\n Object.assign(useStore, {\n withTypes: () => useStore,\n })\n\n return useStore as UseStore<Store<StateType, ActionType>>\n}\n\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return <div>{store.getState()}</div>\n * }\n */\nexport const useStore = /*#__PURE__*/ createStoreHook()\n","import type { Context } from 'react'\nimport type { Action, Dispatch, UnknownAction } from 'redux'\n\nimport type { ReactReduxContextValue } from '../components/Context'\nimport { ReactReduxContext } from '../components/Context'\nimport { createStoreHook, useStore as useDefaultStore } from './useStore'\n\n/**\n * Represents a custom hook that provides a dispatch function\n * from the Redux store.\n *\n * @template DispatchType - The specific type of the dispatch function.\n *\n * @since 9.1.0\n * @public\n */\nexport interface UseDispatch<\n DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,\n> {\n /**\n * Returns the dispatch function from the Redux store.\n *\n * @returns The dispatch function from the Redux store.\n *\n * @template AppDispatch - The specific type of the dispatch function.\n */\n <AppDispatch extends DispatchType = DispatchType>(): AppDispatch\n\n /**\n * Creates a \"pre-typed\" version of {@linkcode useDispatch useDispatch}\n * where the type of the `dispatch` function is predefined.\n *\n * This allows you to set the `dispatch` type once, eliminating the need to\n * specify it with every {@linkcode useDispatch useDispatch} call.\n *\n * @returns A pre-typed `useDispatch` with the dispatch type already defined.\n *\n * @example\n * ```ts\n * export const useAppDispatch = useDispatch.withTypes<AppDispatch>()\n * ```\n *\n * @template OverrideDispatchType - The specific type of the dispatch function.\n *\n * @since 9.1.0\n */\n withTypes: <\n OverrideDispatchType extends DispatchType,\n >() => UseDispatch<OverrideDispatchType>\n}\n\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\nexport function createDispatchHook<\n StateType = unknown,\n ActionType extends Action = UnknownAction,\n>(\n // @ts-ignore\n context?: Context<ReactReduxContextValue<\n StateType,\n ActionType\n > | null> = ReactReduxContext,\n) {\n const useStore =\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context)\n\n const useDispatch = () => {\n const store = useStore()\n return store.dispatch\n }\n\n Object.assign(useDispatch, {\n withTypes: () => useDispatch,\n })\n\n return useDispatch as UseDispatch<Dispatch<ActionType>>\n}\n\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n * <div>\n * <span>{value}</span>\n * <button onClick={increaseCounter}>Increase counter</button>\n * </div>\n * )\n * }\n */\nexport const useDispatch = /*#__PURE__*/ createDispatchHook()\n","// The primary entry point assumes we are working with React 18, and thus have\r\n// useSyncExternalStore available. We can import that directly from React itself.\r\n// The useSyncExternalStoreWithSelector has to be imported, but we can use the\r\n// non-shim version. This shaves off the byte size of the shim.\r\n\r\nimport * as React from 'react'\r\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js'\r\n\r\nimport { initializeUseSelector } from './hooks/useSelector'\r\nimport { initializeConnect } from './components/connect'\r\n\r\ninitializeUseSelector(useSyncExternalStoreWithSelector)\r\ninitializeConnect(React.useSyncExternalStore)\r\n\r\nexport * from './exports'\r\n","/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport type { ComponentType } from 'react'\nimport { React } from '../utils/react'\nimport { isValidElementType, isContextConsumer } from '../utils/react-is'\n\nimport type { Store } from 'redux'\n\nimport type {\n ConnectedComponent,\n InferableComponentEnhancer,\n InferableComponentEnhancerWithProps,\n ResolveThunks,\n DispatchProp,\n ConnectPropsMaybeWithoutContext,\n} from '../types'\n\nimport type {\n MapStateToPropsParam,\n MapDispatchToPropsParam,\n MergeProps,\n MapDispatchToPropsNonObject,\n SelectorFactoryOptions,\n} from '../connect/selectorFactory'\nimport defaultSelectorFactory from '../connect/selectorFactory'\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps'\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps'\nimport { mergePropsFactory } from '../connect/mergeProps'\n\nimport type { Subscription } from '../utils/Subscription'\nimport { createSubscription } from '../utils/Subscription'\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'\nimport shallowEqual from '../utils/shallowEqual'\nimport hoistStatics from '../utils/hoistStatics'\nimport warning from '../utils/warning'\n\nimport type {\n ReactReduxContextValue,\n ReactReduxContextInstance,\n} from './Context'\nimport { ReactReduxContext } from './Context'\n\nimport type { uSES } from '../utils/useSyncExternalStore'\nimport { notInitialized } from '../utils/useSyncExternalStore'\n\nlet useSyncExternalStore = notInitialized as uSES\nexport const initializeConnect = (fn: uSES) => {\n useSyncExternalStore = fn\n}\n\n// Define some constant arrays just to avoid re-creating these\nconst EMPTY_ARRAY: [unknown, number] = [null, 0]\nconst NO_SUBSCRIPTION_ARRAY = [null, null]\n\n// Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\nconst stringifyComponent = (Comp: unknown) => {\n try {\n return JSON.stringify(Comp)\n } catch (err) {\n return String(Comp)\n }\n}\n\ntype EffectFunc = (...args: any[]) => void | ReturnType<React.EffectCallback>\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(\n effectFunc: EffectFunc,\n effectArgs: any[],\n dependencies?: React.DependencyList,\n) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies)\n}\n\n// Effect callback, extracted: assign the latest props values to refs for later usage\nfunction captureWrapperProps(\n lastWrapperProps: React.MutableRefObject<unknown>,\n lastChildProps: React.MutableRefObject<unknown>,\n renderIsScheduled: React.MutableRefObject<boolean>,\n wrapperProps: unknown,\n // actualChildProps: unknown,\n childPropsFromStoreUpdate: React.MutableRefObject<unknown>,\n notifyNestedSubs: () => void,\n) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps\n renderIsScheduled.current = false\n\n // If the render was from a store update, clear out that reference and cascade the subscriber update\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null\n notifyNestedSubs()\n }\n}\n\n// Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\nfunction subscribeUpdates(\n shouldHandleStateChanges: boolean,\n store: Store,\n subscription: Subscription,\n childPropsSelector: (state: unknown, props: unknown) => unknown,\n lastWrapperProps: React.MutableRefObject<unknown>,\n lastChildProps: React.MutableRefObject<unknown>,\n renderIsScheduled: React.MutableRefObject<boolean>,\n isMounted: React.MutableRefObject<boolean>,\n childPropsFromStoreUpdate: React.MutableRefObject<unknown>,\n notifyNestedSubs: () => void,\n // forceComponentUpdateDispatch: React.Dispatch<any>,\n additionalSubscribeListener: () => void,\n) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}\n\n // Capture values for checking if and when this component unmounts\n let didUnsubscribe = false\n let lastThrownError: Error | null = null\n\n // We'll run this callback every time a store subscription update propagates to this component\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return\n }\n\n // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n const latestStoreState = store.getState()\n\n let newChildProps, error\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(\n latestStoreState,\n lastWrapperProps.current,\n )\n } catch (e) {\n error = e\n lastThrownError = e as Error | null\n }\n\n if (!error) {\n lastThrownError = null\n }\n\n // If the child props haven't changed, nothing to do here - cascade the subscription update\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs()\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps\n childPropsFromStoreUpdate.current = newChildProps\n renderIsScheduled.current = true\n\n // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n additionalSubscribeListener()\n }\n }\n\n // Actually subscribe to the nearest connected ancestor (or store)\n subscription.onStateChange = checkForUpdates\n subscription.trySubscribe()\n\n // Pull data from the store after first render in case the store has\n // changed since we began.\n checkForUpdates()\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true\n subscription.tryUnsubscribe()\n subscription.onStateChange = null\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError\n }\n }\n\n return unsubscribeWrapper\n}\n\n// Reducer initial state creation for our update reducer\nconst initStateUpdates = () => EMPTY_ARRAY\n\nexport interface ConnectProps {\n /** A custom Context instance that the component can use to access the store from an alternate Provider using that same Context instance */\n context?: ReactReduxContextInstance\n /** A Redux store instance to be used for subscriptions instead of the store from a Provider */\n store?: Store\n}\n\ninterface InternalConnectProps extends ConnectProps {\n reactReduxForwardedRef?: React.ForwardedRef<unknown>\n}\n\nfunction strictEqual(a: unknown, b: unknown) {\n return a === b\n}\n\n/**\n * Infers the type of props that a connector will inject into a component.\n */\nexport type ConnectedProps<TConnector> =\n TConnector extends InferableComponentEnhancerWithProps<\n infer TInjectedProps,\n any\n >\n ? unknown extends TInjectedProps\n ? TConnector extends InferableComponentEnhancer<infer TInjectedProps>\n ? TInjectedProps\n : never\n : TInjectedProps\n : never\n\nexport interface ConnectOptions<\n State = unknown,\n TStateProps = {},\n TOwnProps = {},\n TMergedProps = {},\n> {\n forwardRef?: boolean\n context?: typeof ReactReduxContext\n areStatesEqual?: (\n nextState: State,\n prevState: State,\n nextOwnProps: TOwnProps,\n prevOwnProps: TOwnProps,\n ) => boolean\n\n areOwnPropsEqual?: (\n nextOwnProps: TOwnProps,\n prevOwnProps: TOwnProps,\n ) => boolean\n\n areStatePropsEqual?: (\n nextStateProps: TStateProps,\n prevStateProps: TStateProps,\n ) => boolean\n areMergedPropsEqual?: (\n nextMergedProps: TMergedProps,\n prevMergedProps: TMergedProps,\n ) => boolean\n}\n\n/**\n * Connects a React component to a Redux store.\n *\n * - Without arguments, just wraps the component, without changing the behavior / props\n *\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\n * is to override ownProps (as stated in the docs), so what remains is everything that's\n * not a state or dispatch prop\n *\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\n * should be valid component props, because it depends on mergeProps implementation.\n * As such, it is the user's responsibility to extend ownProps interface from state or\n * dispatch props or both when applicable\n *\n * @param mapStateToProps\n * @param mapDispatchToProps\n * @param mergeProps\n * @param options\n */\nexport interface Connect<DefaultState = unknown> {\n // tslint:disable:no-unnecessary-generics\n (): InferableComponentEnhancer<DispatchProp>\n\n /** mapState only */\n <TStateProps = {}, no_dispatch = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n ): InferableComponentEnhancerWithProps<TStateProps & DispatchProp, TOwnProps>\n\n /** mapDispatch only (as a function) */\n <no_state = {}, TDispatchProps = {}, TOwnProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<TDispatchProps, TOwnProps>\n\n /** mapDispatch only (as an object) */\n <no_state = {}, TDispatchProps = {}, TOwnProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n ResolveThunks<TDispatchProps>,\n TOwnProps\n >\n\n /** mapState and mapDispatch (as a function)*/\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n TStateProps & TDispatchProps,\n TOwnProps\n >\n\n /** mapState and mapDispatch (nullish) */\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: null | undefined,\n ): InferableComponentEnhancerWithProps<TStateProps, TOwnProps>\n\n /** mapState and mapDispatch (as an object) */\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n TStateProps & ResolveThunks<TDispatchProps>,\n TOwnProps\n >\n\n /** mergeProps only */\n <no_state = {}, no_dispatch = {}, TOwnProps = {}, TMergedProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: null | undefined,\n mergeProps: MergeProps<undefined, DispatchProp, TOwnProps, TMergedProps>,\n ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>\n\n /** mapState and mergeProps */\n <\n TStateProps = {},\n no_dispatch = {},\n TOwnProps = {},\n TMergedProps = {},\n State = DefaultState,\n >(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: null | undefined,\n mergeProps: MergeProps<TStateProps, DispatchProp, TOwnProps, TMergedProps>,\n ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>\n\n /** mapDispatch (as a object) and mergeProps */\n <no_state = {}, TDispatchProps = {}, TOwnProps = {}, TMergedProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n mergeProps: MergeProps<undefined, TDispatchProps, TOwnProps, TMergedProps>,\n ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>\n\n /** mapState and options */\n <TStateProps = {}, no_dispatch = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: null | undefined,\n mergeProps: null | undefined,\n options: ConnectOptions<State, TStateProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<DispatchProp & TStateProps, TOwnProps>\n\n /** mapDispatch (as a function) and options */\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,\n mergeProps: null | undefined,\n options: ConnectOptions<{}, TStateProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<TDispatchProps, TOwnProps>\n\n /** mapDispatch (as an object) and options*/\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}>(\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n mergeProps: null | undefined,\n options: ConnectOptions<{}, TStateProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n ResolveThunks<TDispatchProps>,\n TOwnProps\n >\n\n /** mapState, mapDispatch (as a function), and options */\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,\n mergeProps: null | undefined,\n options: ConnectOptions<State, TStateProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n TStateProps & TDispatchProps,\n TOwnProps\n >\n\n /** mapState, mapDispatch (as an object), and options */\n <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultState>(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n mergeProps: null | undefined,\n options: ConnectOptions<State, TStateProps, TOwnProps>,\n ): InferableComponentEnhancerWithProps<\n TStateProps & ResolveThunks<TDispatchProps>,\n TOwnProps\n >\n\n /** mapState, mapDispatch, mergeProps, and options */\n <\n TStateProps = {},\n TDispatchProps = {},\n TOwnProps = {},\n TMergedProps = {},\n State = DefaultState,\n >(\n mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n mergeProps: MergeProps<\n TStateProps,\n TDispatchProps,\n TOwnProps,\n TMergedProps\n >,\n options?: ConnectOptions<State, TStateProps, TOwnProps, TMergedProps>,\n ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>\n // tslint:enable:no-unnecessary-generics\n}\n\nlet hasWarnedAboutDeprecatedPureOption = false\n\n/**\n * Connects a React component to a Redux store.\n *\n * - Without arguments, just wraps the component, without changing the behavior / props\n *\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\n * is to override ownProps (as stated in the docs), so what remains is everything that's\n * not a state or dispatch prop\n *\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\n * should be valid component props, because it depends on mergeProps implementation.\n * As such, it is the user's responsibility to extend ownProps interface from state or\n * dispatch props or both when applicable\n *\n * @param mapStateToProps A function that extracts values from state\n * @param mapDispatchToProps Setup for dispatching actions\n * @param mergeProps Optional callback to merge state and dispatch props together\n * @param options Options for configuring the connection\n *\n */\nfunction connect<\n TStateProps = {},\n TDispatchProps = {},\n TOwnProps = {},\n TMergedProps = {},\n State = unknown,\n>(\n mapStateToProps?: MapStateToPropsParam<TStateProps, TOwnProps, State>,\n mapDispatchToProps?: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,\n mergeProps?: MergeProps<TStateProps, TDispatchProps, TOwnProps, TMergedProps>,\n {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n\n // the context consumer to use\n context = ReactReduxContext,\n }: ConnectOptions<unknown, unknown, unknown, unknown> = {},\n): unknown {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true\n warning(\n 'The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component',\n )\n }\n }\n\n const Context = context\n\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps)\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps)\n const initMergeProps = mergePropsFactory(mergeProps)\n\n const shouldHandleStateChanges = Boolean(mapStateToProps)\n\n const wrapWithConnect = <TProps,>(\n WrappedComponent: ComponentType<TProps>,\n ) => {\n type WrappedComponentProps = TProps &\n ConnectPropsMaybeWithoutContext<TProps>\n\n if (process.env.NODE_ENV !== 'production') {\n const isValid = /*#__PURE__*/ isValidElementType(WrappedComponent)\n if (!isValid)\n throw new Error(\n `You must pass a component to the function returned by connect. Instead received ${stringifyComponent(\n WrappedComponent,\n )}`,\n )\n }\n\n const wrappedComponentName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n const displayName = `Connect(${wrappedComponentName})`\n\n const selectorFactoryOptions: SelectorFactoryOptions<\n any,\n any,\n any,\n any,\n State\n > = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual,\n }\n\n function ConnectFunction<TOwnProps>(\n props: InternalConnectProps & TOwnProps,\n ) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] =\n React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const { reactReduxForwardedRef, ...wrapperProps } = props\n return [props.context, reactReduxForwardedRef, wrapperProps]\n }, [props])\n\n const ContextToUse: ReactReduxContextInstance = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n let ResultContext = Context\n if (propsContext?.Consumer) {\n if (process.env.NODE_ENV !== 'production') {\n const isValid = /*#__PURE__*/ isContextConsumer(\n // @ts-ignore\n <propsContext.Consumer />,\n )\n if (!isValid) {\n throw new Error(\n 'You must pass a valid React context consumer as `props.context`',\n )\n }\n ResultContext = propsContext\n }\n }\n return ResultContext\n }, [propsContext, Context])\n\n // Retrieve the store and ancestor subscription via context, if available\n const contextValue = React.useContext(ContextToUse)\n\n // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n const didStoreComeFromProps =\n Boolean(props.store) &&\n Boolean(props.store!.getState) &&\n Boolean(props.store!.dispatch)\n const didStoreComeFromContext =\n Boolean(contextValue) && Boolean(contextValue!.store)\n\n if (\n process.env.NODE_ENV !== 'production' &&\n !didStoreComeFromProps &&\n !didStoreComeFromContext\n ) {\n throw new Error(\n `Could not find \"store\" in the context of ` +\n `\"${displayName}\". Either wrap the root component in a <Provider>, ` +\n `or pass a custom React context provider to <Provider> and the corresponding ` +\n `React context consumer to ${displayName} in connect options.`,\n )\n }\n\n // Based on the previous check, one of these must be true\n const store: Store = didStoreComeFromProps\n ? props.store!\n : contextValue!.store\n\n const getServerState = didStoreComeFromContext\n ? contextValue!.getServerState\n : store.getState\n\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions)\n }, [store])\n\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n const subscription = createSubscription(\n store,\n didStoreComeFromProps ? undefined : contextValue!.subscription,\n )\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n const notifyNestedSubs =\n subscription.notifyNestedSubs.bind(subscription)\n\n return [subscription, notifyNestedSubs]\n }, [store, didStoreComeFromProps, contextValue])\n\n // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue!\n }\n\n // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n return {\n ...contextValue,\n subscription,\n } as ReactReduxContextValue\n }, [didStoreComeFromProps, contextValue, subscription])\n\n // Set up refs to coordinate values between the subscription effect and the render logic\n const lastChildProps = React.useRef<unknown>(undefined)\n const lastWrapperProps = React.useRef(wrapperProps)\n const childPropsFromStoreUpdate = React.useRef<unknown>(undefined)\n const renderIsScheduled = React.useRef(false)\n const isMounted = React.useRef(false)\n\n // TODO: Change this to `React.useRef<Error>(undefined)` after upgrading to React 19.\n /**\n * @todo Change this to `React.useRef<Error>(undefined)` after upgrading to React 19.\n */\n const latestSubscriptionCallbackError = React.useRef<Error | undefined>(\n undefined,\n )\n\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (\n childPropsFromStoreUpdate.current &&\n wrapperProps === lastWrapperProps.current\n ) {\n return childPropsFromStoreUpdate.current\n }\n\n // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n return childPropsSelector(store.getState(), wrapperProps)\n }\n return selector\n }, [store, wrapperProps])\n\n // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = (reactListener: () => void) => {\n if (!subscription) {\n return () => {}\n }\n\n return subscribeUpdates(\n shouldHandleStateChanges,\n store,\n subscription,\n // @ts-ignore\n childPropsSelector,\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n isMounted,\n childPropsFromStoreUpdate,\n notifyNestedSubs,\n reactListener,\n )\n }\n\n return subscribe\n }, [subscription])\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n wrapperProps,\n childPropsFromStoreUpdate,\n notifyNestedSubs,\n ])\n\n let actualChildProps: Record<string, unknown>\n\n try {\n actualChildProps = useSyncExternalStore(\n // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact,\n // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector,\n getServerState\n ? () => childPropsSelector(getServerState(), wrapperProps)\n : actualChildPropsSelector,\n )\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n // eslint-disable-next-line no-extra-semi\n ;(err as Error).message +=\n `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`\n }\n\n throw err\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined\n childPropsFromStoreUpdate.current = undefined\n lastChildProps.current = actualChildProps\n })\n\n // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n // @ts-ignore\n <WrappedComponent\n {...actualChildProps}\n ref={reactReduxForwardedRef}\n />\n )\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps])\n\n // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return (\n <ContextToUse.Provider value={overriddenContextValue}>\n {renderedWrappedComponent}\n </ContextToUse.Provider>\n )\n }\n\n return renderedWrappedComponent\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue])\n\n return renderedChild\n }\n\n const _Connect = React.memo(ConnectFunction)\n\n type ConnectedWrapperComponent = typeof _Connect & {\n WrappedComponent: typeof WrappedComponent\n }\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect as unknown as ConnectedComponent<\n typeof WrappedComponent,\n WrappedComponentProps\n >\n Connect.WrappedComponent = WrappedComponent\n Connect.displayName = ConnectFunction.displayName = displayName\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(\n function forwardConnectRef(props, ref) {\n // @ts-ignore\n return <Connect {...props} reactReduxForwardedRef={ref} />\n },\n )\n\n const forwarded = _forwarded as ConnectedWrapperComponent\n forwarded.displayName = displayName\n forwarded.WrappedComponent = WrappedComponent\n return /*#__PURE__*/ hoistStatics(forwarded, WrappedComponent)\n }\n\n return /*#__PURE__*/ hoistStatics(Connect, WrappedComponent)\n }\n\n return wrapWithConnect\n}\n\nexport default connect as Connect\n","const SOCKET_DATA_RECEIVED = 'SOCKET_DATA_RECEIVED';\n\nexport {\n SOCKET_DATA_RECEIVED,\n};","import {\n SOCKET_DATA_RECEIVED,\n} from './actionType';\n\nconst socketDataReceived = (data) => ({\n type: SOCKET_DATA_RECEIVED,\n payload: data,\n});\n\nexport { socketDataReceived };","// extracted by mini-css-extract-plugin\nexport default {\"cookieBanner\":\"CookieConsent_cookieBanner__JUZnr\",\"cookieContent\":\"CookieConsent_cookieContent__+GQSn\",\"cookieTitle\":\"CookieConsent_cookieTitle__+jQNU\",\"cookieDescription\":\"CookieConsent_cookieDescription__hH9K0\",\"cookieLink\":\"CookieConsent_cookieLink__3MU4W\",\"cookieActions\":\"CookieConsent_cookieActions__ni8oz\",\"cookieSettings\":\"CookieConsent_cookieSettings__McejT\",\"cookieAccept\":\"CookieConsent_cookieAccept__IaEff\"};","import { useState, useEffect } from \"react\";\nimport styles from \"./CookieConsent.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\n\nconst CookieBanner = () => {\n const [showBanner, setShowBanner] = useState(false);\n\n useEffect(() => {\n const cookieConsent = localStorage.getItem(\"consent\");\n if (!cookieConsent) {\n setShowBanner(true);\n }\n }, []);\n\n const acceptCookies = () => {\n localStorage.setItem(\"consent\", true);\n setShowBanner(false);\n };\n\n const closeBanner = () => {\n setShowBanner(false);\n };\n\n if (!showBanner) return null;\n\n return (\n <div className={styles.cookieBanner}>\n <div className={styles.cookieContent}>\n <div className={cn(\"h3\", styles.cookieTitle)}>This website uses cookies</div>\n <p className={styles.cookieDescription}>\n We use cookies on our website to enhance your experience, analyze our traffic, and for marketing purposes.\n Read our <Link to=\"/cookie-policy\" className={styles.cookieLink}>Cookie Statement</Link> for more information.\n </p>\n </div>\n\n <div className={styles.cookieActions}>\n <button className={styles.cookieSettings} onClick={closeBanner}>Close</button>\n <button className={styles.cookieAccept} onClick={acceptCookies}>Accept all cookies</button>\n </div>\n </div>\n );\n};\n\nexport default CookieBanner;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport Main from \"./Main\";\nimport Learn from \"./Learn\";\nimport Trend from \"./Trend\";\nimport Popular from \"../../components/Popular\";\nimport Download from \"./Download\";\nimport News from \"../../components/News\";\nimport Steps from \"./Steps\";\nimport MaintenaceNotice from \"../../components/MaintenaceNotice\";\n// import { socket } from \"../../socket\";\nimport { io } from \"socket.io-client\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { socketDataReceived } from \"../../actions/markets\";\nimport requestHandler from \"../../actions/httpClient\";\nimport CookieConsent from \"../../components/CookieConsent\";\n\nconst Home = () => {\n const scrollToRef = useRef(null);\n const [loading, setLoading] = useState(true);\n const dispatch = useDispatch();\n const { socketMarketData } = useSelector((state) => state.markets);\n const [email, setEmail] = useState(\"\");\n\n useEffect(() => {\n const socket = io(process.env.REACT_APP_SOCKET_URL, {\n autoConnect: false,\n transports: ['websocket']\n });\n let marketSocket = \"new_all_markets_web\";\n socket.connect();\n const marketData = \"all_markets\";\n socket.on(\"connect\", () => {\n socket.emit(\"markets\", marketData);\n })\n\n socket.on(marketSocket, (markets) => {\n dispatch(socketDataReceived(markets));\n setLoading(false);\n socket.disconnect();\n });\n\n const interval = setInterval(() => {\n socket.connect()\n socket.emit(\"markets\", marketData);\n }, parseInt(process.env.REACT_APP_MARKET_SOCKET_TIME_INTERVAL));\n\n return () => {\n clearInterval(interval);\n socket.disconnect();\n };\n }, []);\n\n const getStartedHandler = async (email) => {\n let data = {\n email: email\n };\n try {\n await requestHandler(\"getStarted\", \"post\", data);\n }\n catch (e) {\n };\n };\n\n return (\n <>\n {process.env.REACT_APP_MAINTENANCE_MODE == 0 && (\n <MaintenaceNotice />\n )}\n <Main\n scrollToRef={scrollToRef}\n loading={socketMarketData?.length <= 0 && loading}\n socketMarketData={socketMarketData}\n email={email}\n setEmail={setEmail}\n getStartedHandler={getStartedHandler}\n />\n <Trend\n socketMarketData={socketMarketData}\n loading={socketMarketData?.length <= 0 && loading}\n />\n <Learn scrollToRef={scrollToRef} />\n <Popular classSection=\"section-bg section-mb0\" />\n <Download />\n <News classSection=\"section-bg\" />\n <Steps />\n <CookieConsent />\n </>\n );\n};\n\n\n\nexport default Home;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__Iqx-H\",\"wrap\":\"Main_wrap__NwTYf\",\"title\":\"Main_title__lpgHl\",\"text\":\"Main_text__nkr9P\",\"bg\":\"Main_bg__2C2No\"};","import React, { memo } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport { formatLargeValue } from \"../../../components/helper\";\n\nconst Main = ({\n usdPrice,\n cmcData,\n selectedRegion\n}) => {\n\n let marketCap = (usdPrice && cmcData?.total_market_cap) ? formatLargeValue(parseFloat(usdPrice) * parseFloat(cmcData?.total_market_cap)) : \"\";\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h2\", styles.title)}>\n Today’s Cryptocurrency prices\n </h1>\n <div className={styles.text}>\n The global crypto market cap is <strong>{selectedRegion?.toLowerCase().includes(\"eu\") ? `€${marketCap}` : `$${formatLargeValue(cmcData?.total_market_cap)}`}</strong>\n </div>\n <div className={styles.text}>\n <strong><span>{process.env.REACT_APP_MARKETS_COUNT}</span> </strong>Crypto Assets available.\n </div>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/market-pic@2x.png 2x\"\n src=\"/images/content/market-pic.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(Main);\n","// extracted by mini-css-extract-plugin\nexport default {\"details\":\"Details_details__5fLt4\",\"container\":\"Details_container__nra6B\"};","// extracted by mini-css-extract-plugin\nexport default {\"panel\":\"Panel_panel__ZH+QE\",\"list\":\"Panel_list__jMgZQ\",\"item\":\"Panel_item__ECtyc\",\"price\":\"Panel_price__S4462\",\"icon\":\"Panel_icon__pZLLs\",\"details\":\"Panel_details__cHmpw\",\"line\":\"Panel_line__pYun-\",\"title\":\"Panel_title__XsD9U\",\"positive\":\"Panel_positive__i4eSg\",\"negative\":\"Panel_negative__U7bks\",\"money\":\"Panel_money__LRXaL\",\"foot\":\"Panel_foot__1kgFe\",\"nav\":\"Panel_nav__brymk\",\"link\":\"Panel_link__Yy7xh\",\"active\":\"Panel_active__khg5b\",\"button\":\"Panel_button__+3BG0\",\"dropdown\":\"Panel_dropdown__cC53g\",\"chart\":\"Panel_chart__UQnxZ\",\"panelContainer\":\"Panel_panelContainer__4i+R4\",\"footerContainer\":\"Panel_footerContainer__nB-ff\",\"navContainer\":\"Panel_navContainer__5lWHp\",\"navLink\":\"Panel_navLink__L6Y96\",\"activeNavLink\":\"Panel_activeNavLink__jNfJC\",\"warning\":\"Panel_warning__M-0-p\",\"warningPanelContainer\":\"Panel_warningPanelContainer__PWzvR\"};","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"Dropdown_label__eVaEB\",\"dropdown\":\"Dropdown_dropdown__rVSBa\",\"active\":\"Dropdown_active__zvMLE\",\"head\":\"Dropdown_head__USTbf\",\"arrow\":\"Dropdown_arrow__ftIws\",\"body\":\"Dropdown_body__OUN20\",\"selection\":\"Dropdown_selection__-J93n\",\"option\":\"Dropdown_option__v1LbW\",\"selectioned\":\"Dropdown_selectioned__pE2Q4\",\"empty\":\"Dropdown_empty__9G5SP\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./Dropdown.module.sass\";\nimport Icon from \"../Icon\";\n\nconst Dropdown = ({\n className,\n classLabel,\n value,\n setValue,\n options,\n label,\n classDropdownHead,\n classDropdownArrow,\n classDropdownBody,\n classDropdownOption,\n setIndex\n}) => {\n const [visible, setVisible] = useState(false);\n\n const handleClick = (value, index) => {\n if (setIndex) {\n setIndex(index)\n }\n setValue(value);\n setVisible(false);\n };\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n {label && <div className={cn(classLabel, styles.label)}>{label}</div>}\n <div\n className={cn(styles.dropdown, className, {\n [styles.active]: visible,\n })}\n >\n <div\n className={cn(classDropdownHead, styles.head)}\n onClick={() => setVisible(!visible)}\n >\n <div className={styles.selection}>{value}</div>\n <div className={cn(styles.arrow, classDropdownArrow)}>\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n </div>\n <div className={cn(classDropdownBody, styles.body)}>\n {options?.map((x, index) => (\n\n <div\n className={cn(classDropdownOption, styles.option, {\n [styles.selectioned]: x === value,\n })}\n onClick={() => handleClick(x, index)}\n key={index}\n >\n {x}\n </div>\n ))}\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Dropdown;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Panel.module.sass\";\nimport Dropdown from \"../../../../components/Dropdown\";\n\nconst Panel = ({\n selectedCurrency,\n regionChangeHandler,\n selectedRegion,\n regions,\n currencies,\n currencyChangeHandler\n}) => {\n\n return (\n <>\n {parseInt(process.env.REACT_APP_WARNING_TEXT_MARKET_PAGE) === 1 &&\n <div className={styles.warningPanelContainer}>\n <div className={styles.warning}>\n The offered data is solely intended for informational reasons. This\n information is provided as is, with no warranties or assurances, and\n some of this is sourced from CoinMarketCap. Be mindful of the risks involved.\n </div>\n </div>\n }\n <div className={styles.panelContainer}>\n <div className={styles.footerContainer}>\n <div className={styles.navContainer}>\n {currencies?.map((currency, index) => (\n <button\n className={cn(styles.navLink, {\n [styles.activeNavLink]: currency.currency === selectedCurrency,\n })}\n onClick={() => { currencyChangeHandler(currency.currency) }}\n key={index}\n >\n {currency.currency}\n </button>\n ))}\n </div>\n {/* {regions?.length > 1 &&\n <div className={styles.dropdown}>\n <Dropdown\n value={selectedRegion}\n setValue={regionChangeHandler}\n options={regions}\n />\n </div>\n } */}\n </div>\n </div>\n </>\n );\n};\nexport default Panel;","// extracted by mini-css-extract-plugin\nexport default {\"panel\":\"Panel_panel__P9Yim\",\"list\":\"Panel_list__7UQXV\",\"item\":\"Panel_item__85+ZE\",\"price\":\"Panel_price__tCWQ3\",\"icon\":\"Panel_icon__y3jjU\",\"details\":\"Panel_details__D7YND\",\"line\":\"Panel_line__W0BVY\",\"title\":\"Panel_title__9dlx0\",\"positive\":\"Panel_positive__bQHln\",\"negative\":\"Panel_negative__hhb2W\",\"money\":\"Panel_money__KDM-t\",\"foot\":\"Panel_foot__yCvnl\",\"nav\":\"Panel_nav__YaZsw\",\"link\":\"Panel_link__x7kln\",\"active\":\"Panel_active__g89fQ\",\"button\":\"Panel_button__Q7gC1\",\"dropdown\":\"Panel_dropdown__NTuTq\",\"chart\":\"Panel_chart__j1ndU\",\"coinMarket\":\"Panel_coinMarket__S6tWH\",\"flexContainer\":\"Panel_flexContainer__8d6vw\",\"coinCard\":\"Panel_coinCard__zojT3\",\"coinCardLink\":\"Panel_coinCardLink__XPpCX\",\"coinTitle\":\"Panel_coinTitle__wfeam\",\"coinMore\":\"Panel_coinMore__RKBj5\",\"coinIcon\":\"Panel_coinIcon__xxHOf\",\"coinList\":\"Panel_coinList__GgaCA\",\"coinItem\":\"Panel_coinItem__7FAxr\",\"coinInfo\":\"Panel_coinInfo__ZRnSW\",\"coinLogo\":\"Panel_coinLogo__jY9S7\",\"coinSymbol\":\"Panel_coinSymbol__FH0cS\",\"coinPrice\":\"Panel_coinPrice__sVDeO\",\"coinChange\":\"Panel_coinChange__j9QFn\"};","// extracted by mini-css-extract-plugin\nexport default {\"coinCard\":\"Card_coinCard__uvSgz\",\"coinCardLink\":\"Card_coinCardLink__IXhgY\",\"coinTitle\":\"Card_coinTitle__NmUCJ\",\"coinMore\":\"Card_coinMore__AXvPC\",\"coinIcon\":\"Card_coinIcon__0Enbb\",\"coinList\":\"Card_coinList__zq-8D\",\"coinItem\":\"Card_coinItem__a7g53\",\"coinInfo\":\"Card_coinInfo__bxl8K\",\"coinLogo\":\"Card_coinLogo__G3NAY\",\"coinSymbol\":\"Card_coinSymbol__O9hiA\",\"coinPrice\":\"Card_coinPrice__V3Nn3\",\"coinChange\":\"Card_coinChange__PDYhj\",\"negative\":\"Card_negative__cGFeF\",\"noData\":\"Card_noData__Yk6KQ\",\"filterIcon\":\"Card_filterIcon__39NW7\",\"icons\":\"Card_icons__K3KpV\",\"positive\":\"Card_positive__AeRSi\",\"active\":\"Card_active__wcBlb\"};","import React, { useState } from 'react'\nimport styles from \"./Card.module.sass\";\nimport cn from \"classnames\";\nimport { getDigitsAfterDecimal, getPostiveNegativeNum, handleImageError } from \"../../../../../components/helper\";\nimport { Link } from 'react-router-dom';\n\nconst Card = ({\n coins,\n title,\n filter,\n topGainers = [],\n topLosers = []\n}) => {\n const [isTopGainers, setIsTopGainers] = useState(true);\n\n const gainerAndLoserChange = (value) => {\n setIsTopGainers(value);\n };\n\n const coinsToRender = isTopGainers ? topGainers : topLosers;\n\n return (\n <div className={styles.coinCard}>\n <div className={styles.coinCardLink}>\n {filter ?\n isTopGainers ?\n <div className={styles.coinTitle}>Top Gainers</div>\n :\n <div className={styles.coinTitle}>Top Losers</div>\n :\n <div className={styles.coinTitle}>{title}</div>\n }\n {filter && <div className={styles.filterIcon}>\n <div className={styles.icons}>\n <span\n className={cn(styles.positive, {\n [styles.active]: isTopGainers\n })}\n onClick={() =>\n gainerAndLoserChange(true)\n }>\n ▲\n </span>\n <span\n className={cn(styles.negative, {\n [styles.active]: !isTopGainers\n })}\n onClick={() => gainerAndLoserChange(false)\n }>\n ▼\n </span>\n </div>\n </div>}\n </div>\n <div className={styles.coinList}>\n {\n filter ?\n coinsToRender?.length > 0 ?\n coinsToRender?.map((coin, coinIndex) => (\n <Link\n className={styles.coinItem}\n key={coinIndex}\n state={coin}\n to={`/coins/${coin?.name?.toLowerCase()}`}\n >\n <div className={styles.coinInfo}>\n <img className={styles.coinLogo} src={coin?.icon} onError={handleImageError} alt=\"Coin\" />\n <div className={styles.coinSymbol}>{coin.symbol}</div>\n </div>\n <div className={styles.coinPrice}>{getDigitsAfterDecimal(coin.currentMarketPrice, coin.priceDecimalPrecision)}</div>\n <div className={styles.coinChange}>\n {getPostiveNegativeNum(coin.dayChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(coin.dayChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(coin.dayChange, 2)}%</div>\n }\n </div>\n </Link>\n ))\n :\n (\n <div className={styles.noData}>No data available</div>\n ) :\n coins?.length > 0 ?\n coins?.map((coin, coinIndex) => (\n <Link\n className={styles.coinItem}\n key={coinIndex}\n state={coin}\n to={`/coins/${coin?.name?.toLowerCase()}`}\n >\n <div className={styles.coinInfo}>\n <img className={styles.coinLogo} src={coin?.icon} onError={handleImageError} alt=\"Coin\" />\n <div className={styles.coinSymbol}>{coin.symbol}</div>\n </div>\n <div className={styles.coinPrice}>{getDigitsAfterDecimal(coin.currentMarketPrice, coin.priceDecimalPrecision)}</div>\n <div className={styles.coinChange}>\n {getPostiveNegativeNum(coin.dayChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(coin.dayChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(coin.dayChange, 2)}%</div>\n }\n </div>\n </Link>\n ))\n :\n (\n <div className={styles.noData}>No data available</div>\n )\n }\n </div>\n </div >\n )\n}\n\nexport default Card\n","// extracted by mini-css-extract-plugin\nexport default {\"coinCard\":\"MulCards_coinCard__CXBub\",\"firstCard\":\"MulCards_firstCard__ii5OP\",\"secondCard\":\"MulCards_secondCard__NsP3z\",\"box\":\"MulCards_box__UUrjw\",\"positive\":\"MulCards_positive__JB816\",\"negative\":\"MulCards_negative__Fp+kp\",\"image\":\"MulCards_image__ojw9w\",\"icon\":\"MulCards_icon__xgVaA\",\"titleText\":\"MulCards_titleText__D4uh3\"};","/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray<T = unknown>(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault<T>(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback<T extends (this: TA, ...restArgs: unknown[]) => R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each<T, TA>(\n loopable: Record<string, T>,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each<T, TA>(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each<T, TA>(\n loopable: T[] | Record<string, T>,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone<T>(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge<T>(target: T, source: [], options?: MergeOptions): T;\nexport function merge<T, S1>(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge<T, S1>(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge<T, S1, S2>(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge<T, S1, S2, S3>(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge<T, S1, S2, S3, S4>(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf<T>(target: T, source: []): T;\nexport function mergeIf<T, S1>(target: T, source: S1): T & S1;\nexport function mergeIf<T, S1>(target: T, source: [S1]): T & S1;\nexport function mergeIf<T, S1, S2>(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf<T, S1, S2, S3>(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf<T, S1, S2, S3, S4>(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge<T>(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = <T>(a: Set<T>, b: Set<T>) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record<string, number>[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup<T>(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record<string, number>[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record<string, number>[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener<T> {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique<T>(items: T[]) {\n const set = new Set<T>(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled<TArgs extends Array<any>>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce<TArgs extends Array<any>>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","\nconst intlCache = new Map<string, Intl.NumberFormat>();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record<string, number>,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record<string, number>, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps<K extends string>(value: number | Record<K, number>, props: K[]): Record<K, number>;\nexport function _readValueToProps<K extends string, T extends string>(value: number | Record<K & T, number>, props: Record<T, K>): Record<T, number>;\nexport function _readValueToProps(value: number | Record<string, number>, props: string[] | Record<string, string>) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial<FontSpec>, fallback?: Partial<FontSpec>) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array<unknown>, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext<T extends object>(parentContext: null, context: T): T;\nexport function createContext<T extends object, P extends T>(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache<T, R> = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy<T, R>;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy<T, R>,\n context: AnyObject,\n subProxy?: ResolverProxy<T, R>,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache<T, R> = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy<T, R>;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set<AnyObject>,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set<AnyObject>();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set<AnyObject>,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set<string>();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType<typeof splineCurve>;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial<Scale> {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n let found = false;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n\n if (!found && !options.all) {\n return 0;\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter<T extends AnyObject = AnyObject> {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter<T>, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter<T>): Record<string, string>;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter<T>, value: unknown, format?: TimeUnit): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter<T>, timestamp: number, format: TimeUnit): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter<T>, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter<T>, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract<T = void>(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override<T extends AnyObject = AnyObject>(\n members: Partial<Omit<DateAdapter<T>, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record<string, string> {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element<T = AnyObject, O = AnyObject> {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record<keyof T, Animation>;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps<P extends (keyof T)[]>(props: P, final?: boolean): Pick<T, P[number]>;\n getProps<P extends string>(props: P[], final?: boolean): Partial<Record<P, unknown>>;\n getProps(props: string[], final?: boolean): Partial<Record<string, unknown>> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record<string, unknown>;\n }\n const ret: Record<string, unknown> = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n\n meta.controller.draw();\n\n if (useClip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, ðœƒ) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element<ArcProps, ArcOptions> {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element<PointProps, PointOptions & PointHoverOptions> {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial<PointOptions & PointHoverOptions>) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record<keyof typeof defaultCallbacks, Function>} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object<Unit, Interval>}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, /** @type {Unit} */ (parser))\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object<number,object>} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types.js';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown,\n>(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) {\n const options = chart.options;\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions);\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown,\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown,\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextDatasets: ChartDataset<TType, TData>[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset<TType, TData>[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record<string, unknown>) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record<string, unknown>) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset<TType, TData>;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown,\n>(data: ChartData<TType, TData, TLabel>, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData<TType, TData, TLabel> = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, BaseChartComponent } from './types.js';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils.js';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown,\n>(\n props: ChartProps<TType, TData, TLabel>,\n ref: ForwardedRef<ChartJS<TType, TData, TLabel>>\n) {\n const {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...canvasProps\n } = props;\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const chartRef = useRef<ChartJS<TType, TData, TLabel> | null>(null);\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n <canvas\n ref={canvasRef}\n role='img'\n height={height}\n width={width}\n {...canvasProps}\n >\n {fallbackContent}\n </canvas>\n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as BaseChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types.js';\nimport { Chart } from './chart.js';\n\nfunction createTypedChart<T extends ChartType>(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef<ChartJSOrUndefined<T>, Omit<ChartProps<T>, 'type'>>(\n (props, ref) => <Chart {...props} ref={ref} type={type} />\n ) as TypedChartComponent<T>;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"semiCircularContainer\":\"SemiPieChart_semiCircularContainer__pM-hO\",\"chartValue\":\"SemiPieChart_chartValue__aSgLA\",\"top\":\"SemiPieChart_top__pFq9E\",\"bottom\":\"SemiPieChart_bottom__rjeYt\"};","import React, { useRef } from \"react\";\nimport { Chart, ArcElement, Tooltip, Legend } from \"chart.js\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport styles from \"./SemiPieChart.module.sass\";\n\nChart.register(ArcElement, Tooltip, Legend);\n\nconst SemiCircularProgress = ({ value }) => {\n const chartRef = useRef(null);\n\n const data = {\n datasets: [\n {\n data: [20, 20, 20, 20, 20],\n backgroundColor: [\"#eb2f44\", \"#e08906\", \"#edd407\", \"#96d702\", \"#43c784\"],\n borderWidth: 2,\n cutout: \"90%\",\n circumference: 180,\n rotation: 270,\n },\n ],\n };\n\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: { display: false },\n tooltip: { enabled: false },\n },\n animation: {\n onComplete: () => {\n drawIndicatorDot();\n },\n },\n };\n\n const drawIndicatorDot = () => {\n const chart = chartRef.current;\n if (!chart) return;\n\n const ctx = chart.ctx;\n const centerX = chart.chartArea.left + chart.chartArea.width / 2;\n const centerY = chart.chartArea.bottom;\n const radius = (chart.chartArea.width / 2) * 0.9 + 4;\n\n const angle = (value?.fgl_latest / 100) * Math.PI;\n const dotX = centerX + radius * Math.cos(angle - Math.PI);\n const dotY = centerY + radius * Math.sin(angle - Math.PI);\n\n ctx.beginPath();\n ctx.arc(dotX, dotY, 4, 0, 2 * Math.PI);\n ctx.fillStyle = \"white\";\n ctx.fill();\n\n ctx.beginPath();\n ctx.arc(dotX, dotY, 4, 2, 5 * Math.PI);\n ctx.fillStyle = \"black\";\n ctx.fill();\n };\n\n return (\n <div className={styles.semiCircularContainer}>\n <Doughnut ref={chartRef} data={data} options={options} />\n\n <div className={`${styles.chartValue} ${styles.top}`}>\n {value?.fgl_latest}\n </div>\n\n <div className={`${styles.chartValue} ${styles.bottom}`}>\n {value?.fgl_char_latest}\n </div>\n </div>\n\n );\n};\n\nexport default SemiCircularProgress;\n","import React, { memo } from \"react\";\nimport styles from \"./MulCards.module.sass\";\nimport SemiPieChart from \"../../../../../components/SemiPieChart\";\nimport { formatLargeValue, getDigitsAfterDecimal } from \"../../../../../components/helper\";\n\nconst DashboardCard = ({\n cmcData,\n usdPrice,\n selectedRegion\n}) => {\n\n let marketCap = (usdPrice && cmcData?.total_market_cap) ? formatLargeValue(parseFloat(usdPrice) * parseFloat(cmcData?.total_market_cap)) : \"\";\n\n return (\n <div className={styles.coinCard}>\n <div className={styles.firstCard}>\n <div>Fear & Greed</div>\n <div>\n <SemiPieChart value={cmcData} />\n </div>\n </div>\n\n <div className={styles.secondCard}>\n <div className={styles.box}>\n <div className={styles.titleText}>Market Cap</div>\n <div>{selectedRegion?.toLowerCase().includes(\"eu\") ? `€${marketCap}` : `$${formatLargeValue(cmcData?.total_market_cap)}`}</div>\n <div>\n {cmcData && (cmcData?.total_market_cap_yesterday_percentage_change > 0 ? <span className={styles.positive}>▲{getDigitsAfterDecimal(cmcData?.total_market_cap_yesterday_percentage_change, 2)}%</span> : <span className={styles.negative}>▼{getDigitsAfterDecimal(cmcData?.total_market_cap_yesterday_percentage_change, 2)}%</span>)}\n </div>\n </div>\n <div className={styles.box}>\n <div className={styles.titleText}>Dominance</div>\n <div className={styles.image}>\n <img src=\"/images/content/btc.png\" alt=\"icon\" className={styles.icon} />\n <div>{cmcData && getDigitsAfterDecimal(cmcData?.btc_dominance, 2)}%</div>\n </div>\n <div className={styles.image}>\n <img src=\"/images/content/eth.png\" alt=\"icon\" className={styles.icon} />\n <div>{cmcData && getDigitsAfterDecimal(cmcData?.eth_dominance, 2)}%</div>\n </div>\n </div>\n </div>\n </div >\n );\n};\n\nexport default memo(DashboardCard);\n\n","import React, { useCallback } from \"react\";\nimport styles from \"./Panel.module.sass\";\nimport Card from \"./Card\";\nimport MulCards from \"./MulCards\";\n\nconst Panel = ({\n recentMarkets,\n topGainers,\n topLosers,\n topVolume,\n cmcData,\n selectedCurrency,\n usdPrice,\n recentAdded,\n selectedRegion\n}) => {\n\n const renderMultiCard = useCallback(() => {\n return <MulCards\n cmcData={cmcData}\n usdPrice={usdPrice}\n selectedCurrency={selectedCurrency}\n selectedRegion={selectedRegion}\n />\n }, [cmcData, selectedRegion, usdPrice]);\n\n return (\n <div className={styles.coinMarket}>\n <div className={styles.flexContainer}>\n <Card coins={recentAdded} title={`Recently Added`} />\n <Card topGainers={topGainers} topLosers={topLosers} title={`Top Gainers`} filter={true} />\n {/* <Card coins={topLosers} title={`Top Losers`} /> */}\n <Card coins={topVolume} title={`Top Volume`} />\n {renderMultiCard()}\n </div>\n </div>\n );\n};\nexport default Panel;","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"Trade_table__tY4Pd\",\"row\":\"Trade_row__PNDei\",\"col\":\"Trade_col__CAjvn\",\"button\":\"Trade_button__rqeGG\",\"chart\":\"Trade_chart__5kN+P\",\"line\":\"Trade_line__5r0uM\",\"favorite\":\"Trade_favorite__jbyXZ\",\"item\":\"Trade_item__5q6cY\",\"icon\":\"Trade_icon__iwk-+\",\"subtitle\":\"Trade_subtitle__qtf6z\",\"currency\":\"Trade_currency__AEtDB\",\"positive\":\"Trade_positive__CPuaM\",\"negative\":\"Trade_negative__AqaGl\",\"label\":\"Trade_label__3FdDp\",\"form\":\"Trade_form__N4Psr\",\"input\":\"Trade_input__CWZXO\",\"result\":\"Trade_result__4M5aY\",\"customButton\":\"Trade_customButton__pVhvV\",\"activeColumn\":\"Trade_activeColumn__Cx99S\",\"pagination\":\"Trade_pagination__EJ6I3\",\"paginationButton\":\"Trade_paginationButton__bWMF4\",\"active\":\"Trade_active__IDA2+\",\"disabled\":\"Trade_disabled__W8VWm\",\"slippage\":\"Trade_slippage__rwyfo\",\"tooltip\":\"Trade_tooltip__p9Bv6\",\"tooltiptext\":\"Trade_tooltiptext__KZdsX\",\"tradeIcon\":\"Trade_tradeIcon__7wi-l\",\"paginationText\":\"Trade_paginationText__waDMY\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Trade.module.sass\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport Icon from \"../../../../components/Icon\";\nimport { formatLargeValue, getDigitsAfterDecimal, getPostiveNegativeNum, handleImageError } from \"../../../../components/helper\";\n\nconst Trade = ({\n search,\n currentPage,\n sortBy,\n searchHandler,\n setSortBy,\n setCurrentPage,\n sortedMarkets,\n indexOfLastMarket,\n paginatedMarkets,\n marketsPerPage,\n pageNumbers,\n handlePageChange,\n totalPages\n}) => {\n const navigate = useNavigate();\n\n return (\n <div className={styles.trade}>\n <form className={styles.form}>\n <input\n value={search}\n className={styles.input}\n type=\"text\"\n onChange={searchHandler}\n name=\"search\"\n placeholder=\"Search coin\"\n required\n />\n <button onClick={(e) => { e.preventDefault(); }} className={styles.result}>\n <Icon name=\"search\" size=\"20\" />\n </button>\n </form>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>#</div>\n <div className={styles.col}>\n <div className={cn(\"sorting\")}\n onClick={() => setSortBy({\n field: \"name\",\n order: sortBy?.field === \"name\" && sortBy?.order === \"asc\" ? \"desc\" : \"asc\"\n })}\n >\n Name {sortBy?.field === \"name\" ? (sortBy.order === \"asc\" ? '↑' : '↓') : \"\"}\n </div>\n </div>\n <div className={styles.col}>\n <div className={cn(\"sorting\")}\n onClick={() => setSortBy({\n field: \"currentMarketPrice\",\n order: sortBy?.field === \"currentMarketPrice\" && sortBy?.order === \"asc\" ? \"desc\" : \"asc\"\n })}\n >\n Price {sortBy?.field === \"currentMarketPrice\" ? (sortBy.order === \"asc\" ? '↑' : '↓') : \"\"}\n </div>\n </div>\n <div className={styles.col}>\n <div className={cn(\"sorting\")}\n onClick={() => setSortBy({\n field: \"dayChange\",\n order: sortBy?.field === \"dayChange\" && sortBy?.order === \"asc\" ? \"desc\" : \"asc\"\n })}\n >\n 24h % {sortBy?.field === \"dayChange\" ? (sortBy.order === \"asc\" ? '↑' : '↓') : \"\"}\n </div>\n </div>\n <div className={styles.col}>\n <div className={cn(\"sorting\")}\n onClick={() => setSortBy({\n field: \"weekChange\",\n order: sortBy?.field === \"weekChange\" && sortBy?.order === \"asc\" ? \"desc\" : \"asc\"\n })}\n >\n 7d % {sortBy?.field === \"weekChange\" ? (sortBy.order === \"asc\" ? '↑' : '↓') : \"\"}\n </div>\n </div>\n <div className={styles.col}>\n Marketcap\n <Icon name=\"coin\" size=\"20\" />\n </div>\n <div className={styles.col}>\n Volume (24h) <Icon name=\"chart\" size=\"20\" />\n </div>\n <div className={styles.col}>Action</div>\n </div>\n\n {paginatedMarkets?.map((i, ind) => {\n return (\n <Link className={styles.row} state={i} key={ind} to={`/coins/${i?.name?.toLowerCase()}`}>\n <div className={styles.col}>\n <div className={styles.line}>{(currentPage - 1) * marketsPerPage + ind + 1}</div>\n </div>\n <div className={styles.col}>\n <div className={styles.item}>\n <div className={styles.icon}>\n <img src={i.icon} onError={handleImageError} alt=\"Coin\" />\n </div>\n <div className={styles.details}>\n <span className={styles.subtitle}>{i.name}</span>\n <span className={styles.currency}>{i.symbol}</span>\n </div>\n </div>\n </div>\n <div className={styles.col}>\n <div className={styles.label}>Price</div>\n {getDigitsAfterDecimal(i.currentMarketPrice, i.priceDecimalPrecision)}\n </div>\n <div className={styles.col}>\n {getPostiveNegativeNum(i.dayChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(i.dayChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(i.dayChange, 2)}%</div>\n }\n </div>\n <div className={styles.col}>\n {getPostiveNegativeNum(i.weekChange) ?\n <div className={styles.positive}>{getDigitsAfterDecimal(i.weekChange, 2)}%</div>\n :\n <div className={styles.negative}>{getDigitsAfterDecimal(i.weekChange, 2)}%</div>\n }\n </div>\n <div className={styles.col}>\n <div className={styles.label}>Marketcap</div>\n {\n (i?.cap !== null && i?.cap !== undefined && i?.cap !== \"\" && i?.cap !== 0 && i?.cap !== \"0\") ?\n formatLargeValue(i?.cap)\n :\n (i?.self_reported_market_cap !== null && i?.self_reported_market_cap !== undefined && i?.self_reported_market_cap !== \"\" && i?.self_reported_market_cap !== 0 && i?.self_reported_market_cap !== \"0\") ?\n <div className={styles.slippage}>\n <span className={styles.tooltip}>\n {formatLargeValue(i?.self_reported_market_cap)}\n <span className={styles.tooltiptext}>The market capitalization for this project has not been verified. The value displayed is self-reported by the project.\n </span> <span className={styles.tradeIcon}>âš ï¸</span>\n </span>\n </div>\n :\n \"N/A\"\n }\n </div>\n <div className={styles.col}>\n <div className={styles.label}>Volume (24h)</div>\n {(i.volume !== null && i.volume !== undefined && i.volume !== \"\") ? i.volume : \"N/A\"}\n </div>\n <div className={styles.col}>\n <div className={cn(\"button-small\", styles.button)} onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n navigate(\"/sign-in\");\n }}>\n Login\n </div>\n </div>\n </Link>\n )\n })}\n </div>\n <div className={styles.pagination}>\n <button\n className={cn(styles.paginationButton, { [styles.disabled]: currentPage === 1 })}\n onClick={() => setCurrentPage(currentPage - 1)}\n disabled={currentPage === 1}\n >\n Prev\n </button>\n\n {pageNumbers.map((number) => (\n <button\n key={number}\n className={cn(styles.paginationButton, {\n [styles.active]: currentPage === number,\n })}\n onClick={() => handlePageChange(number)}\n >\n {number}\n </button>\n ))}\n\n <button\n className={cn(styles.paginationButton, { [styles.disabled]: currentPage === totalPages })}\n onClick={() => setCurrentPage(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n Next\n </button>\n </div>\n </div>\n );\n};\n\nexport default Trade;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Details.module.sass\";\nimport Panel from \"./Panel\";\nimport Cards from \"./Cards\";\nimport Trade from \"./Trade\";\nimport Categories from \"./Categories\";\n\nconst Details = ({\n search,\n selectedCurrency,\n selectedCategory,\n categories,\n currentPage,\n sortBy,\n recentMarkets,\n topGainers,\n topLosers,\n topVolume,\n cmcData,\n usdPrice,\n regionChangeHandler,\n selectedRegion,\n regions,\n currencies,\n currencyChangeHandler,\n categoryChangeHandler,\n searchHandler,\n setSortBy,\n setCurrentPage,\n sortedMarkets,\n indexOfLastMarket,\n paginatedMarkets,\n marketsPerPage,\n recentAdded,\n pageNumbers,\n handlePageChange,\n totalPages\n}) => {\n\n return (\n <div className={cn(\"section\", styles.details)}>\n <div className={styles.container}>\n <Cards\n recentMarkets={recentMarkets}\n topGainers={topGainers}\n topLosers={topLosers}\n topVolume={topVolume}\n cmcData={cmcData}\n selectedCurrency={selectedCurrency}\n usdPrice={usdPrice}\n recentAdded={recentAdded}\n selectedRegion={selectedRegion}\n />\n <Panel\n selectedCurrency={selectedCurrency}\n regionChangeHandler={regionChangeHandler}\n selectedRegion={selectedRegion}\n regions={regions}\n currencies={currencies}\n currencyChangeHandler={currencyChangeHandler}\n />\n {/* <Categories\n selectedCategory={selectedCategory}\n categories={categories}\n categoryChangeHandler={categoryChangeHandler}\n /> */}\n <Trade\n search={search}\n currentPage={currentPage}\n sortBy={sortBy}\n searchHandler={searchHandler}\n setSortBy={setSortBy}\n setCurrentPage={setCurrentPage}\n sortedMarkets={sortedMarkets}\n indexOfLastMarket={indexOfLastMarket}\n paginatedMarkets={paginatedMarkets}\n marketsPerPage={marketsPerPage}\n pageNumbers={pageNumbers}\n handlePageChange={handlePageChange}\n totalPages={totalPages}\n />\n </div>\n </div>\n );\n};\n\nexport default Details;\n","// extracted by mini-css-extract-plugin\nexport default {\"successfully\":\"Loader_successfully__osPB8\",\"title\":\"Loader_title__+bxxr\",\"info\":\"Loader_info__rqNSu\",\"list\":\"Loader_list__IQztd\",\"item\":\"Loader_item__e7pXC\",\"category\":\"Loader_category__34XtS\",\"content\":\"Loader_content__n3kDa\",\"btns\":\"Loader_btns__Ud+eJ\",\"button\":\"Loader_button__zJW4s\",\"loaderContainer\":\"Loader_loaderContainer__Lrssu\",\"spinner\":\"Loader_spinner__6lUoA\",\"rotate\":\"Loader_rotate__2Z-Ct\",\"path\":\"Loader_path__vEA2o\",\"dash\":\"Loader_dash__Zg1BC\"};","\nimport styles from \"./Loader.module.sass\";\n\n\n\nconst LoaderScreen = () => {\n return (\n <div className={styles.loaderContainer}>\n <svg className={styles.spinner} viewBox=\"0 0 50 50\">\n <circle className={styles.path} cx={25} cy={25} r={20} fill={'none'} strokeWidth={5}></circle>\n </svg>\n </div>)\n}\n\n\nexport default LoaderScreen","const CMC_DATA_REQUEST = 'CMC_DATA_REQUEST';\nconst CMC_DATA_SUCCESS = 'CMC_DATA_SUCCESS';\nconst CMC_DATA_FAILED = 'CMC_DATA_FAILED';\n\nexport {\n CMC_DATA_REQUEST,\n CMC_DATA_SUCCESS,\n CMC_DATA_FAILED\n};","import requestHandler from '../httpClient';\nimport {\n CMC_DATA_REQUEST,\n CMC_DATA_SUCCESS,\n CMC_DATA_FAILED,\n} from './actionType';\n\nconst cmcDataRequest = () => {\n return {\n type: CMC_DATA_REQUEST\n };\n};\n\nconst cmcDataSuccess = (payload) => {\n return {\n type: CMC_DATA_SUCCESS,\n payload: payload\n };\n};\n\nconst cmcDataFailed = (error) => {\n return {\n type: CMC_DATA_FAILED,\n error: error,\n }\n};\n\nconst cmcDataCreator = () => {\n return async (dispatch) => {\n dispatch(cmcDataRequest());\n try {\n const payload = await requestHandler('getCmcDataGlobal', 'post');\n dispatch(cmcDataSuccess(payload));\n }\n catch (error) {\n dispatch(cmcDataFailed(error));\n };\n };\n};\n\nexport {\n cmcDataRequest,\n cmcDataSuccess,\n cmcDataFailed,\n cmcDataCreator\n};","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Main from \"./Main\";\nimport Details from \"./Details\";\nimport { io } from \"socket.io-client\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { socketDataReceived } from \"../../actions/markets\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport { cmcDataCreator } from \"../../actions/cmcData\";\n\nconst Market = () => {\n const { socketMarketData } = useSelector((state) => { return state.markets });\n const { cmcData } = useSelector((state) => { return state.cmcData });\n const dispatch = useDispatch();\n const isFirstRender = useRef(true);\n const [usdPrice, setUsdPrice] = useState();\n const [selectedRegion, setSelectedRegion] = useState(\"\");\n const [selectedCurrency, setSelectedCurrency] = useState(\"\");\n const [selectedCategory, setSelectedCategory] = useState(\"All\");\n const [search, setSearch] = useState(\"\");\n const [sortBy, setSortBy] = useState({ field: null, order: \"asc\" });\n const [currentPage, setCurrentPage] = useState(1);\n const marketsPerPage = parseInt(process.env.REACT_APP_MARKET_PAGE_PAGINATION_COUNT);\n\n const regions = [...new Set(socketMarketData?.flat()?.map((item) => item?.region_name))];\n\n const currencies = socketMarketData?.flat()?.filter((item) => item?.region_name === selectedRegion);\n\n const selectedCurrencyData = currencies?.find((item) => item?.currency === selectedCurrency);\n\n const categories = selectedCurrencyData?.category?.length\n ? [\"All\", ...selectedCurrencyData?.category?.map((cat) => cat?.category)]\n : [\"All\"];\n\n const filteredMarkets =\n selectedCategory === \"All\" || !selectedCurrencyData?.category?.length\n ? selectedCurrencyData?.markets || []\n : selectedCurrencyData?.category?.find((cat) => cat?.category === selectedCategory)?.markets || [];\n\n const searchedMarkets = filteredMarkets?.filter((market) =>\n market?.name?.toLowerCase()?.includes(search?.toLowerCase()) ||\n market?.slug?.toLowerCase()?.includes(search?.toLowerCase())\n );\n\n const sortedMarkets = useMemo(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return searchedMarkets;\n }\n\n if (!sortBy || !sortBy?.field) return searchedMarkets;\n\n return [...searchedMarkets]?.sort((a, b) => {\n const fieldKey = sortBy?.field;\n\n if (fieldKey === \"name\") {\n return sortBy.order === \"asc\"\n ? a?.name?.localeCompare(b?.name)\n : b?.name?.localeCompare(a?.name);\n } else {\n const valA = parseFloat(a[fieldKey]);\n const valB = parseFloat(b[fieldKey]);\n\n return sortBy.order === \"asc\" ? valA - valB : valB - valA;\n }\n });\n }, [searchedMarkets, sortBy]);\n\n const indexOfLastMarket = currentPage * marketsPerPage;\n const indexOfFirstMarket = indexOfLastMarket - marketsPerPage;\n const paginatedMarkets = sortedMarkets?.slice(indexOfFirstMarket, indexOfLastMarket);\n\n const totalPages = Math.ceil(sortedMarkets.length / marketsPerPage);\n\n const handlePageChange = (pageNumber) => {\n setCurrentPage(pageNumber);\n };\n\n const pageNumbers = [];\n for (let i = 1; i <= totalPages; i++) {\n pageNumbers.push(i);\n }\n\n useEffect(() => {\n if (!selectedRegion && regions?.length) {\n setSelectedRegion(regions[0]);\n }\n if (selectedRegion?.toLowerCase()?.includes(\"eu\")) {\n let price = socketMarketData?.[0]?.[0]?.markets?.find(x => x.symbol?.toLowerCase() === \"usdc\")?.currentMarketPrice;\n setUsdPrice(price);\n }\n }, [regions, selectedRegion]);\n\n useEffect(() => {\n if (currencies.length) {\n setSelectedCurrency(currencies[0].currency);\n }\n setCurrentPage(1);\n }, [selectedRegion]);\n\n useEffect(() => {\n if (cmcData?.length == 0) {\n dispatch(cmcDataCreator());\n }\n }, [cmcData]);\n\n useEffect(() => {\n\n const socket = io(process.env.REACT_APP_SOCKET_URL, {\n autoConnect: false,\n transports: ['websocket']\n });\n let marketSocket = \"new_all_markets_web\";\n socket.connect();\n const marketData = \"all_markets\";\n socket.on(\"connect\", () => {\n socket.emit(\"markets\", marketData);\n })\n\n socket.on(marketSocket, (markets) => {\n dispatch(socketDataReceived(markets));\n socket.disconnect();\n });\n\n const interval = setInterval(() => {\n socket.connect()\n socket.emit(\"markets\", marketData);\n }, parseInt(process.env.REACT_APP_MARKET_SOCKET_TIME_INTERVAL));\n\n return () => {\n clearInterval(interval);\n socket.disconnect();\n };\n }, []);\n\n const renderMain = useCallback(() => {\n return <Main\n cmcData={cmcData}\n usdPrice={usdPrice}\n selectedRegion={selectedRegion}\n />\n }, [cmcData, selectedRegion, usdPrice]);\n\n const regionChangeHandler = (value) => {\n setSelectedRegion(value);\n setSelectedCurrency(\"\");\n setSelectedCategory(\"All\");\n };\n\n const currencyChangeHandler = (value) => {\n setSelectedCurrency(value);\n setSelectedCategory(\"All\");\n setCurrentPage(1);\n };\n\n const categoryChangeHandler = (value) => {\n setSelectedCategory(value)\n };\n\n const searchHandler = (event) => {\n setSearch(event.target.value);\n };\n\n const topGainers = useMemo(() => {\n return [...filteredMarkets]\n .filter((coin) => coin?.dayChange > 0)\n .sort((a, b) => (parseFloat(b?.dayChange)) - (parseFloat(a?.dayChange)))\n .slice(0, 5);\n }, [filteredMarkets]);\n\n const topLosers = useMemo(() => {\n return [...filteredMarkets]\n .filter((coin) => coin?.dayChange < 0)\n .sort((a, b) => (parseFloat(a?.dayChange)) - (parseFloat(b?.dayChange)))\n .slice(0, 5);\n }, [filteredMarkets]);\n\n const topVolume = useMemo(() => {\n return [...filteredMarkets]\n .sort((a, b) => {\n const volumeA = parseFloat(a?.volume?.replace(/,/g, ''));\n const volumeB = parseFloat(b?.volume?.replace(/,/g, ''));\n return volumeB - volumeA;\n })\n .slice(0, 5);\n }, [filteredMarkets]);\n\n const recentAdded = useMemo(() => {\n return [...filteredMarkets]\n .sort((a, b) => new Date(b?.createdAt) - new Date(a?.createdAt))\n .slice(0, 5);\n }, [filteredMarkets]);\n\n return (\n <>\n {socketMarketData <= 0 && <LoaderScreen />}\n {renderMain()}\n <Details\n regionChangeHandler={regionChangeHandler}\n selectedRegion={selectedRegion}\n regions={regions}\n currencyChangeHandler={currencyChangeHandler}\n currencies={currencies}\n selectedCurrency={selectedCurrency}\n categories={categories}\n categoryChangeHandler={categoryChangeHandler}\n selectedCategory={selectedCategory}\n search={search}\n searchHandler={searchHandler}\n paginatedMarkets={paginatedMarkets}\n sortBy={sortBy}\n setSortBy={setSortBy}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n sortedMarkets={sortedMarkets}\n indexOfLastMarket={indexOfLastMarket}\n marketsPerPage={marketsPerPage}\n topGainers={topGainers}\n topLosers={topLosers}\n topVolume={topVolume}\n recentAdded={recentAdded}\n cmcData={cmcData}\n usdPrice={usdPrice}\n pageNumbers={pageNumbers}\n handlePageChange={handlePageChange}\n totalPages={totalPages}\n />\n </>\n );\n};\n\nexport default Market;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__jU140\",\"head\":\"Main_head__+nvaC\",\"title\":\"Main_title__s5BBa\",\"info\":\"Main_info__pNxh2\",\"btns\":\"Main_btns__nXgYx\",\"button\":\"Main_button__rmiyZ\",\"video\":\"Main_video__Q-8sL\",\"player-wrapper\":\"Main_player-wrapper__3uy6F\",\"react-player\":\"Main_react-player__CRHr+\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n// import Play from \"../../../components/Play\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Blockchain & Crypto</h1>\n <div className={styles.info}>\n A Beginner’s Guide to Blockchain & Crypto\n </div>\n <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n <button\n className={cn(\"button-stroke\", styles.button)}\n onClick={() =>\n scrollToRefCatalog.current.scrollIntoView({\n behavior: \"smooth\",\n })\n }\n >\n Educational Articles\n </button>\n </div>\n </div>\n <div className={styles.video}>\n <img src=\"/images/content/blog/Blockchain-&-Crypto.jpg\" alt=\"Preview\" />\n {/* <Play /> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__6FIG2\",\"stage\":\"Releases_stage__6wROG\",\"wrap\":\"Releases_wrap__HFqRD\",\"title\":\"Releases_title__RR8jn\",\"info\":\"Releases_info__QWxkI\",\"nav\":\"Releases_nav__c-AJ1\",\"link\":\"Releases_link__PS61y\",\"active\":\"Releases_active__JgyK2\",\"dropdown\":\"Releases_dropdown__Brz2i\",\"dropdownHead\":\"Releases_dropdownHead__NOD1x\",\"item\":\"Releases_item__FeG40\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__6Ig3P\",\"arrow\":\"Item_arrow__uyacy\",\"preview\":\"Item_preview__NwmxA\",\"details\":\"Item_details__RZsvR\",\"category\":\"Item_category__k6Ufa\",\"title\":\"Item_title__mJa4X\",\"currency\":\"Item_currency__1881n\",\"content\":\"Item_content__shKjc\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item }) => {\n return (\n <Link\n className={cn(className, styles.item)}\n to={`/learn-crypto-details/${item.slug}`}\n >\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n </div>\n <div className={styles.details}>\n {item.categoryText && (\n <div\n className={cn(\n {\n \"category-red\": item.category === \"red\",\n },\n {\n \"category-green\": item.category === \"green\",\n },\n styles.category\n )}\n >\n {item.categoryText}\n </div>\n )}\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n {/* <div className={styles.arrow}>\n <Icon name=\"arrow-next\" size=\"14\" />\n </div> */}\n </Link>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport Dropdown from \"../../../components/Dropdown\";\n\n// const navigationList = [\"Bitcoin\", \"Blockchain\", \"Tutorials\"];\nconst navigationList = [\"Bitcoin\", \"Coins & Tokens\"];\n\nconst items = [\n {\n id: 1,\n slug: 'how-to-protect-yourself',\n title: \"How to Protect Yourself Against Phishing\",\n currency: \"Phishing\",\n content: `Trezor, a popular Bitcoin (BTC) hardware wallet, has informed that its newsletter has been compromised, alerting users of phishing attacks.\n `,\n category: \"red\",\n categoryText: \"new\",\n image: \"/images/content/blog/How-to-Protect-Yourself-Against-Phishing.jpg\",\n image2x: \"/images/content/blog/How-to-Protect-Yourself-Against-Phishing.jpg\",\n url: \"/learn-crypto-details\",\n },\n {\n id: 2,\n slug: 'what-do-you-mean-by-blockchain',\n title: \"What do you mean by Blockchain Technology\",\n currency: \"Blockchain\",\n content: `Blockchain technology eliminates the requirement for a trusted group to facilitate digital relationships and is the backbone of cryptocurrencies.\n `,\n category: \"green\",\n categoryText: \"beginner\",\n image: \"/images/content/blog/What-do-you-mean-by-Blockchain-Technology.jpg\",\n image2x: \"/images/content/blog/What-do-you-mean-by-Blockchain-Technology.jpg\",\n url: \"/learn-crypto-details\",\n },\n {\n id: 3,\n slug: 'how-to-store-bitcoin',\n title: \"How to Store Your Bitcoin(BTC)?\",\n currency: \"Bitcoin\",\n content: `Bitcoin wallets store the private keys that you need to access a Bitcoin address and expend your funds. But which type suits you best?\n `,\n category: \"red\",\n categoryText: \"new\",\n image: \"/images/content/blog/How-to-Store-Your-Bitcoin.jpg\",\n image2x: \"/images/content/blog/How-to-Store-Your-Bitcoin.jpg\",\n url: \"/learn-crypto-details\",\n },\n];\n\nconst Releases = ({ scrollToRef, activeIndex, setActiveIndex }) => {\n const [navigation, setNavigation] = useState(navigationList[0]);\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={cn(\"stage-small\", styles.stage)}></div>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>Latest Releases</h2>\n <div className={styles.info}> </div>\n <div className={styles.nav}>\n {navigationList.map((x, index) => (\n <button\n className={cn(styles.link, {\n [styles.active]: index === activeIndex,\n })}\n onClick={() => setActiveIndex(index)}\n key={index}\n >\n {x}\n </button>\n ))}\n </div>\n <div className={styles.field}>\n <Dropdown\n className={styles.dropdown}\n classDropdownHead={styles.dropdownHead}\n value={navigation}\n setValue={setNavigation}\n options={navigationList}\n />\n </div>\n </div>\n </div>\n {/* <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div> */}\n {activeIndex === 0 &&\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n }\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","// extracted by mini-css-extract-plugin\nexport default {\"form\":\"Catalog_form__nCU1x\",\"input\":\"Catalog_input__WBu9U\",\"result\":\"Catalog_result__LYwy3\",\"sorting\":\"Catalog_sorting__GxH+D\",\"dropdown\":\"Catalog_dropdown__XCkXU\",\"nav\":\"Catalog_nav__kUmHW\",\"link\":\"Catalog_link__yUx3X\",\"active\":\"Catalog_active__OjtNO\",\"list\":\"Catalog_list__9f23i\",\"card\":\"Catalog_card__oc5yN\",\"btns\":\"Catalog_btns__PLOqe\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__ZeevV\",\"preview\":\"Card_preview__HeOel\",\"category\":\"Card_category__opzeN\",\"body\":\"Card_body__wYBTA\",\"avatar\":\"Card_avatar__TK0Pv\",\"details\":\"Card_details__hhHJs\",\"title\":\"Card_title__BUrVm\",\"author\":\"Card_author__kt-5V\",\"status\":\"Card_status__Y4l9C\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport Play from \"../Play\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <Link className={cn(className, styles.card)} to={`/learn-crypto-details/${item.slug}`}>\n <div className={styles.preview}>\n {item.categoryText && (\n <div\n className={cn(\n \"category\",\n {\n \"category-purple\": item.category === \"purple\",\n },\n {\n \"category-green\": item.category === \"green\",\n },\n {\n \"category-blue\": item.category === \"blue\",\n },\n styles.category\n )}\n >\n {item.categoryText}\n </div>\n )}\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n {item.play && <Play className=\"play\" small />}\n </div>\n <div className={styles.body}>\n <div className={styles.avatar}></div>\n <div className={styles.details}>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.author}>{item.author}</div>\n </div>\n {item.statusText && (\n <div\n className={cn(\n {\n \"category-stroke-green\": item.status === \"green\",\n },\n styles.status\n )}\n >\n {item.statusText}\n </div>\n )}\n </div>\n </Link>\n );\n};\n\nexport default Card;\n","export const articles = [\n {\n id: 1,\n title: ` How to Protect Yourself Against Phishing\n `,\n slug: 'how-to-protect-yourself',\n currency: \"Phishing\",\n content: `Blockchain technology eliminates the requirement for a trusted group to facilitate digital relationships and is the backbone of cryptocurrencies.\n `,\n category: \"green\",\n categoryText: \"beginner\",\n image: \"/images/content/releases-pic-2.jpg\",\n image2x: \"/images/content/releases-pic-2@2x.jpg\",\n imageBlog: \"/images/content/blog/details/phishing1.jpg\",\n imageBlog2: \"/images/content/blog/details/phishing2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/phishing1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/phishing2.jpg\",\n h1: ` Phishing definition\n `,\n P1: `Cyber attackers continue to favor phishing as a weapon of choice. A fraudulent attempt to trick individuals into revealing sensitive information (usernames, passwords, and banking details) by acting as a trusted source, often via email communication.\n\n `,\n h2: `How does it work?\n `,\n P2: `Spear phishing - a tailored approach to phishing - exploits three potential weaknesses in a recipient:\n \n According to the apparent source, the person is trusted and well-known\n It contains information that supports its validity\n There seems to be a logical basis for the request\n \n Phishing emails typically try to lure the recipient into doing one of two things: 1) handing over sensitive or valuable information; or 2) downloading malware. There are several types of phishing, and each has the potential to wreak devastation to an organization.\n \n \n `,\n h3: `How to avoid phishing scams\n\n `,\n P3: `These steps are helpful and crucial when it comes to protecting yourself and your organization from cybercriminals.\n Do not reply to an email that asks you to send personal or account information.\n Never click on links in emails that seem suspicious or ask for this kind of information.\n Whenever you receive an email that looks suspicious, never open any attachments.\n To find out if the email really comes from a company, contact the company's customer service by phone or through the web browser.\n Find out whether the email really comes from the company by contacting its customer service department by phone or online.\n Find out if anyone else has reported this scam by searching for the email subject line followed by the word hoax.\n \n `,\n },\n {\n id: 2,\n title: \"What do you mean by Blockchain Technology\",\n slug: 'what-do-you-mean-by-blockchain',\n currency: \"Blockchain\",\n content: `Blockchain technology eliminates the requirement for a trusted group to facilitate digital relationships and is the backbone of cryptocurrencies.\n `,\n category: \"green\",\n categoryText: \"beginner\",\n image: \"/images/content/releases-pic-2.jpg\",\n image2x: \"/images/content/releases-pic-2@2x.jpg\",\n imageBlog: \"/images/content/blog/details/blockchain1.jpg\",\n imageBlog2: \"/images/content/blog/details/blockchain2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/blockchain1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/blockchain2.jpg\",\n h1: ``,\n P1: `Blockchain technology eliminates the requirement for a trusted group to facilitate digital relationships and is the backbone of cryptocurrencies.\n Blockchain is a type of ledger technology that holds and records data.\n Blockchain is the buzzword that seems to dominate any discussion about the future of technology, from the capacity of cryptocurrencies to new forms of cybersecurity. While the applications for the technology seem unlimited, not multiple people are entirely sure what the Blockchain is.\n In the old days, transactions were tracked in written ledgers and reserved in financial institutions. Conventional ledgers could be audited, but only by those with privileged access. Blockchain took these ideas and democratized them by removing the secrecy around how information– namely transaction data – was handled.\n `,\n h2: `What does a blockchain look like?\n `,\n P2: `A Blockchain can be cracked down into components: The block and the chain.\n A block is a collection of data that is connected to other blocks chronologically in a virtual chain. You can think of a Blockchain as a train consisting of multiple carriages linked in a line, where each carriage contains an amount of data. Just like in a real-life train carriage, blocks can fit a fixed amount of data before they are full.\n Each block also contains a timestamp, and so it’s clear when the data was stored recorded – something that’s vital for things like transaction or supply chain data where knowing exactly when a price or package was processed is important.\n `,\n h3: `How many copies are there?\n `,\n P3: `There is not even one master copy of a Blockchain Rather, every person who operates a computer that contributes to the network – also known as a “node†– maintains their own copy of the blockchain, and regularly checks with other nodes to make sure everyone has the same record of data. By having each individual contributor store their own copy, it means there is no single point of loss. \n `,\n h4: `How is data added to a blockchain?\n `,\n P4: `Beyond being transparent with data, the blockchain is also a safe way to reserve it. Let’s use Bitcoin as an example, here’s how a transaction is added to a new block:\n When a Bitcoin user transmits a transaction, a message is created with both the sender’s and the receiver’s public addresses and the amount being transacted. The sender takes these details, adds their private key to the mix, and then creates a hash of it (turns it into a fixed-length code.) This makes a digital signature to confirm the person who owns the amount of Bitcoin(BTC)intends to send it to the receiver.\n `,\n h5: `Other blockchain technology use cases\n `,\n P5: `The Blockchain removes the requirement for intermediaries like banks. The peer-to-peer (p2p)network cuts out the middleman and allows transactions to be protected, cutting down on prices, and can be checked by anyone.\n Beyond being utilized for finances, Blockchain technology has multiple other functions. Hospitals are integrating the blockchain to help track medical record data and improve their precision. Agricultural firms use it logistically to follow the supply chain of food.\n Smart contracts trust it to keep a record of all agreements and state changes. Once more, it has become a means to sell, trade, and authenticate original digital pieces of art.\n `,\n h6: ``,\n P6: ``,\n },\n {\n id: 3,\n title: \"How to Store Your Bitcoin\",\n currency: \"Bitcoin\",\n slug: 'how-to-store-bitcoin',\n content: `Bitcoin wallets store the private keys that you need to access a Bitcoin address and expend your funds. But which type suits you best?\n `,\n category: \"red\",\n categoryText: \"new\",\n image: \"/images/content/releases-pic-3.jpg\",\n image2x: \"/images/content/releases-pic-3@2x.jpg\",\n imageBlog: \"/images/content/blog/details/storeBitcoin1.jpg\",\n imageBlog2: \"/images/content/blog/details/storeBitcoin2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/storeBitcoin1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/storeBitcoin2.jpg\",\n h1: ``,\n P1: `Simply like with your bank account or physical wallet, you require a place to store your Bitcoin after buying it.\n\n Bitcoin is stored in digital wallets – a type of computer software that attaches to the Bitcoin (BTC)network. Just like bank cards have account numbers, digital wallets feature a special address that can be transferred with others when you make transactions.\n `,\n h2: `Types of Bitcoin wallets\n `,\n P2: `Also, as with bank accounts, there are different classes of wallets for storing your Bitcoin, each proposing its own set of pros and cons. In a broad sense, there are two main types of Bitcoin wallets:\n `,\n h3: ``,\n P3: `Hot wallets: These types of Bitcoin wallets are attached to the internet and are typically available online or on your smartphone.\n `,\n h4: `\n `,\n P4: `Cold wallets: These types of Bitcoin wallets cannot be used through the internet. They often apply physical devices (like a stick USB), where Bitcoin and other cryptocurrencies can be reserved securely offline.`,\n h5: `\n Hot wallets\n `,\n P5: `Although relatively less secure, hot wallets are the most famous in the crypto world because of their convenience. Because hot wallets are already attached to the internet, it means people can access and exchange funds fast– something that’s important if you like to make quick trades when the crypto market is shifting. Some popular examples of this type include mobile wallets (for example, BitPay), web or online wallets (for example, Bitdenex ), and desktop wallets (for example, Bitcoin Core).\n When you recorded on a cryptocurrency trading platform, a web wallet will be automatically created for you to hold your Bitcoin. One of the downsides of utilizing web wallets on exchange platforms is your private keys are being held by a third party. Remember the front door key analogy? Imagine someone else has the key to your house. If they wanted to they could decide to lock you out or if the owner of the key lets the key slip into the wrong hands, then someone could break in without your knowledge.\n \n `,\n h6: `Cold wallets\n `,\n P6: `Cold wallets such as paper wallets or hardware wallets are the securest options when it comes to storing your Bitcoin(BTC). These are totally offline products and cannot be accessed by the internet; meaning someone would have to be in the same physical location as the wallet to steal it. When you utilize an online paper wallet generator, however, it’s important to report some can pose a security risk because you are trusting the website with key generation. Be sure to verify the code has no backdoors (ways for the website developers to see your keys) if you want to use one.\n `,\n },\n\n {\n id: 4,\n slug: 'a-brief-guide-to-crypto-savings',\n title: `\n A Brief Guide to Crypto Savings Accounts\n`,\n author: \"\",\n category: \"purple\",\n // categoryText: \"video tutorial\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n imageBlog: \"/images/content/blog/details/How-crypto-savings-accounts-work.jpg\",\n imageBlog2: \"/images/content/blog/details/How-to-Earn-Interest-in-Crypto.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/How-crypto-savings-accounts-work.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/How-to-Earn-Interest-in-Crypto.jpg\",\n play: false,\n h1: `\n A Brief Guide to Crypto Savings Accounts`,\n P1: `With a crypto-saving account, you can earn interest on your coins if you are a crypto hodler.\n The Blockchain protocol pays no interest to those holding their home currencies, unlike interest paid to shareholders by a traditional saving account or dividend. But there are many companies that will pay you interest on your cryptos to increase the security of a Blockchain, others add liquidity to large crypto pools running decentralized finance (Defi) protocol, some may lend their cryptos to others, and finally, companies may own their invest cryptos. But they all have one thing in common. They use the money they make from these activities to pay you regular interest on your properties.\n \n `,\n h2: `How crypto savings accounts work\n `,\n P2: `How crypto savings accounts work\n Crypto financial savings debts had been created due to the fact interacting with unexpected protocols through yourself may be complicated and complicated. For folks who simply need to earn a few interests on their crypto and now no longer permit it simply take a seat down there, the crypto-financial savings account can be a stylish solution. Just like financial savings account with a traditional bank, the agency in the back of a crypto-financial savings account will lend, make investments or stake your crypto on your behalf, then pay you a reduction of the proceeds as normal hobby payments.\n \n Many exchanges like Bitdenex offer crypto savings accounts, These companies differ vastly in the interest rates they provide for their users and the terms under which interest will be paid out, such as annual returns, lockup periods, and the frequency of interest payments. such as annual returns, lockup periods, and the frequency of interest payments.\n `,\n h3: `Why consider crypto savings accounts?\n `,\n P3: `It is clear that the main benefit of decentralized finance (Defi) is that it enables anyone to access services that, in traditional finance, would only be available to institutional investors.\n There are many Defi protocols that offer better returns than savings accounts offered by large corporations; many offer yields of up to 20%, let you interact with Defi protocols through an app that is just as simple to use as a crypto savings account.\n What's the point of opting for crypto savings account over Defi, if the money will end up there anyway? Why not cut out the middle man?\n These companies handle some of the risks as well as provide convenience. Even though BlockFi, for example, can go bankrupt if it lends its money to dodgy borrowers, it has agreed to pay depositors first if it becomes insolvent.\n \n `,\n h4: `How to Earn Interest in Crypto\n `,\n P4: `A cryptocurrency savings account's interest rate depends on the platform you use and the type of cryptocurrency you deposit. Interest is determined by market requirements and is usually paid out in cryptocurrency.\n It's important to understand the difference between APR and APY returns when it comes to cryptocurrency so you can determine the earning power of a crypto savings account.\n \n `,\n h5: `\n Potential Risks of Crypto Savings Accounts\n `,\n P5: `Crypto savings accounts can significantly increase your rate of return, but they also come with a level of risk that a more traditional savings account may not. If you open a savings account with a bank, credit union, or online financial institution, there are typically more security measures in place to protect your money.\n To decide whether to invest in a crypto-based account, you should consider the unique qualities and risks associated with it.\n \n `,\n h6: ``,\n P6: ``,\n },\n {\n id: 5,\n slug: 'bitcoin-lightning-network',\n title: `Bitcoin’s Lightning Network\n `,\n author: \"\",\n // categoryText: \"popular\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Bitcoin’s-Lightning-Network.jpg\",\n image2x: \"/images/content/blog/Bitcoin’s-Lightning-Network.jpg\",\n imageBlog:\"/images/content/blog/details/bitcoinLightning1.jpg\",\n imageBlog2: \"/images/content/blog/details/bitcoinLightning2.jpg\",\n imageBlogTwoX:\"/images/content/blog/details/bitcoinLightning1.jpg\",\n imageBlog2TwoX:\"/images/content/blog/details/bitcoinLightning2.jpg\",\n h1: `In 2016, Developers Joseph Poon and Thaddeus Dryja offered a protocol called†the lighting network†that would enable cheaper and faster transactions while not having to change the block size.\n\n `,\n P1: `coin’s scalability issues mean that shorter transactions can congest the blockchain. The Lightning Network was developed to fix that.\n Since each block on Bitcoin’s blockchain conducts an average of 10 minutes to process, only a little number of transactions can go through at a time. In 2016, developers Joseph Poon and Thaddeus Dryja offered an idea that could enable cheap and fast transactions on the network without having to change the block size. They called it, the “Lightning Network.â€\n The Lightning Network makes a second layer on top of the Bitcoin(BTC) blockchain that uses user-generated, micropayment channels to complete transactions more efficiently.\n These transactions are much quicker than regular Bitcoin(BTC) transactions because they don’t need to be broadcast to the entire network. And because there are no miners that require incentivizing, transaction fees are low or even non-existent.\n `,\n h2: `How the bitcoin lightning network works\n `,\n P2: `Judge of Bitcoin’s main blockchain as a highway, and the Lightning Network as a series of side streets that decrease the highway’s congestion from shorter transactions.\n First, two groups who hope to transact with each other set up a multi-signature wallet (which needs more than one signature to enact a transaction). The wallet holds some amount of Bitcoin(BTC). \n The wallet address is then reserved for the Bitcoin (BTC) Blockchain, setting up the bidirectional payment channel.\n The two groups can now conduct a total number of transactions without ever touching the details reserved on the Blockchain. With each transaction, both groups sign an updated balance sheet to reflect how much of the Bitcoin(BTC) is reserved in the two wallets.\n Once both groups finish transacting and shut out the channel, the resulting balance is submitted on the blockchain. In the event of a dispute, both groups can use the most recently signed balance sheet to retrieve their share of the funds.\n `,\n h3: `Where is our position with the bitcoin lighting network?\n `,\n P3: `The Lightning Network founded a beta version in 2018 but was far from fully operational. Since then, the number of nodes on the Lightning Network has doubled year over year, pushing the project closer to achieving its goal of making Bitcoin (BTC) a viable currency for day-to-day transactions.\n Once both complete transacting and close out the channel, the resulting balance is submitted on the blockchain. In the event of a dispute, both groups can use the most recently signed balance sheet to retrieve their share of the funds.\n `,\n h4: ``,\n P4: ``,\n h5: ``,\n P5: ``,\n h6: ``,\n P6: ``,\n },\n {\n id: 6,\n slug: 'history-of-bitcoin',\n title: `HISTORY OF BITCOIN (BTC)\n `,\n author: \"\",\n category: \"green\",\n // categoryText: \"new\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/HISTORY-OF-BITCOIN.jpg\",\n image2x: \"/images/content/blog/HISTORY-OF-BITCOIN.jpg\",\n imageBlog: \"/images/content/blog/details/HISTORY-OF-BITCOIN-1.jpg\",\n imageBlog2: \"/images/content/blog/details/HISTORY-OF-BITCOIN-2.jpg\",\n imageBlogTwoX: \"\",\n imageBlog2TwoX: \"\",\n h1: `HISTORY OF BITCOIN (BTC)\n `,\n P1: `Bitcoin(BTC) was originally designed as a medium of exchange, but now it is primarily regarded as a store of value. Cryptography allows Bitcoin to be created and managed without being controlled by central authorities. Bitcoin was created and implemented by Satoshi Nakamoto, who integrated many cryptographic ideas from the cryptography community. Over the course of bitcoin's history, it has experienced rapid growth to become both an online and offline store of value. Some businesses began accepting Bitcoin in addition to traditional currencies by the mid-2010s.\n\n `,\n h2: `Background \n `,\n P2: `A number of digital cash technologies existed prior to the introduction of Bitcoin(BTC), beginning with the issuer-based cash protocols of David Chaum and Stefan Brands,1992. The idea was independently rediscovered by Adam Back, who in 1997 developed Hashcash, a proof-of-work scheme for spam control. The first cryptocurrency proposals based on distributed digital scarcity\n were Wei Dai's b-money and Bit Gold by Nick Szabo. Hal Finney developed a reusable proof of work (RPOW) using hashcash as the proof of work algorithm. Addresses to store and transmit the chained proof-of-work solutions, but were vulnerable to Sybil attacks.\n `,\n h3: `Creation\n `,\n P3: `On January 4, 2008, the domain name Bitcoin(BTC).org was registered. Later that year, on October 31st, a link to an article by Satoshi Nakamoto A Peer to Peer Electronic Cash System was posted on a crypto mailing list. This document describes the procedures for using a peer-to-peer network to create what has been described as \"a system for electronic transactions without a basis of trust\". On January 3, 2009, the Bitcoin(BTC) network was born when Satoshi Nakamoto mined the Genesis block of Bitcoin(BTC) (block number 0), which had a reward of 50 Bitcoins(BTC).\n `,\n h4: `Satoshi Nakamoto\n\n `,\n P4: `Satoshi Nakamoto\" is presumed to be a pseudonym for the qualities or folks that developed the unique Bitcoin(BTC) protocol in 2008 and released the community in 2009. Nakamoto changed into liable for developing the bulk of the legitimate Bitcoin(BTC) software program and changed into energetic in making adjustments and posting technical statistics on the Bitcoin(BTC) forum. There has been lots of hypothesis as to the identification of Satoshi Nakamoto with suspects which include Dai, Szabo, and Finney – and accompanying denials. The opportunity that Satoshi Nakamoto changed into a laptop collective withinside the European monetary zone has additionally been discussed.\n The New Yorker and Fast Company attempted to investigate the true identity of Satoshi Nakamoto. The New Yorker investigation identified at least two possible candidates: Michael Clear and Vili Lehdonvirta. Fast Company's investigation uncovered circumstantial evidence linking a crypto patent application filed by Neal King, Vladimir Oksman, and Charles Bry on August 15, 2008, and the Bitcoin.org domain name registered 72 hours later. The patent filing contained\n Bitcoin-like networking and encryption technologies, and text analysis revealed that the phrase \"revert computing impractical\" appeared in both the patent filing and the Bitcoin white paper. The 3 inventors explicitly denied being Satoshi Nakamoto.\n `,\n h5: ``,\n P5: `In May 2013, Ted Nelson speculated that Japanese mathematician Shinichi Mochizuki was Satoshi Nakamoto. Later in 2013, Israeli researchers Dorit Ron and Adi Shamir pointed to Silk Road-connected Ross William Ulbricht as a possible person behind the cover. The two researchers based their suspicions on an analysis of the Bitcoin(BTC) transaction network. These allegations were contested and Ron and Shamir later retracted their allegation.\n Nakamoto's relationship with Bitcoin does not appear to extend beyond mid-2010.In April 2011, Nakamoto contacted a Bitcoin(BTC) provider and told them he had \"moved on to other things.\"\n Stefan Thomas, a Swiss programmer, and active community member recorded the timestamps of each of the 500+ posts on Nakamoto's Bitcoin(BTC) forum; The resulting chart showed a sharp drop to almost no releases between 5 am and 5 pm. m. and 11 a.m.Greenwich meridian. Since this pattern was valid even on Saturdays and Sundays, it suggested that Nakamoto was asleep at that time and that the 5 a.m. to 11 a.m.GMT is from midnight to 6 am. East Standard Time (North American Eastern Standard Time).\n Other evidence suggested that Nakamoto was British a newspaper headline he encoded into the Genesis block was from the UK-based newspaper The Times, and both his forum posts and comments in Bitcoin(BTC) source code used the spelling. in British English, like \"optimize\". and \"color\"\n A web search by an anonymous blogger for text similar in the script to the Bitcoin white paper suggests that the \"gold\" articles by Nick Szabo have a similar author. Nick denied being Satoshi and offered his official opinion on Satoshi and Bitcoin (BTC)in a May 2011 article.\n `,\n h6: ``,\n P6: `The first physical goods retail transaction was paid for on May 22, 2010, by exchanging 10,000 mined BTC for two pizzas delivered to a local Florida pizza joint, marking May 22 as Bitcoin Pizza Day for cryptocurrency fans. At that time, the value of a transaction was mostly traded in the Bitcoin forum. 2011 Bitcoin Established on Bitcoin's open-source code, other cryptocurrencies started to emerge. In January 2012, Bitcoin was featured as the theme song in a mock trial of CBS legal drama The Good Wife in the Season 3 episode \"Bitcoin for Dummies.\"\n In February 2013, Bitcoin-based payment processor Coinbase reported selling $1 million worth of Bitcoin in a single month at more than $22 per Bitcoin. The Internet Archive announced that it is willing to accept donations in the form of Bitcoins and intends to allow employees to receive part of their salary in Bitcoin currency.\n \n In January 2014, Zynga announced that it was testing Bitcoin to buy in-game assets in seven of its games. That same month, The D Las Vegas Casino Hotel and the Golden Gate Hotel and Casino in downtown Las Vegas announced they would also begin accepting bitcoin, according to a USA Today article. The article also explained that the currency would be accepted at five locations, including reception and certain restaurants.[94] The network rate exceeded 10 petahash/sec. TigerDirect and overstock.com started accepting Bitcoin. In January 2015, Coinbase raised $75 million in a Series C funding round, breaking the previous record for a Bitcoin company. Less than 1 year after Mt. Gox collapsed, UK-based exchange Bitstamp announced that its exchange would be going offline while they investigated an attack leading to the theft of around 19,000 Bitcoins (equivalent to around $5 million at the time). led from his hot wallet. In January 2016, In March 2016, the Japanese cabinet recognized that virtual currencies like Bitcoin perform a function similar to real money. Bidorbuy, South Africa's largest online marketplace, has launched Bitcoin payments for both buyers and sellers. The number of companies accepting Bitcoins continued to increase. In January 2017, NHK reported that the number of online shops accepting bitcoin in Japan increased 4.6 times over the past year.BitPay CEO Stephen Pair stated that the company's transaction rate increased three-fold from January 2016 to February 2017, stating that the use of Bitcoin in payments in the B2B supply chain is increasing. On January 22, 2018, South Korea introduced an ordinance requiring all Bitcoin traders to disclose their identities, banning anonymous Bitcoin trading. On 1 September 2020, the Wiener Börse listed its first 21 titles denominated in cryptocurrencies like Bitcoin(BTC), including the services of real-time citation and securities settlement. From February 2021, the Swiss canton of Zug will allow taxes to be paid in Bitcoin and other cryptocurrencies. In 2022 Global economic factors resulting from the Russian war in Ukraine influenced the price of Bitcoin.`,\n },\n {\n id: 7,\n slug: 'how-does-crypto-onchain-analyses-work',\n title: ` How does Crypto On-Chain Analysis work?\n `,\n author: \" \",\n category: \"purple\",\n // categoryText: \"video tutorial\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Chain-Analysis-work.jpg\",\n image2x: \"/images/content/blog/Chain-Analysis-work.jpg\",\n imageBlog: \"/images/content/blog/details/Chain-Analysis-1.jpg\",\n imageBlog2: \"/images/content/blog/details/Chain-Analysis-2.jpg\",\n imageBlogTwoX: \"\",\n imageBlog2TwoX: \"\",\n play: false,\n h1: `On-chain metrics turn blockchain-based transaction data into useful insights into the crypto market.\n `,\n P1: `The vast majority of cryptocurrencies available on the market today utilize public Blockchains to verify and record data. This means that the data \"on-chain\" can be viewed by anyone at any time and from anywhere in the world. On-chain analysis guides the strategy of using information from a blockchain ledger to determine market sentiment. More specifically, it's about looking at transaction data and crypto wallet balances, two things that are useful when trying to decide whether to make an investment or not, in short, when nobody is trading a token and the predominant Majority of its circulating supply is controlled by a handful of large forks known as whales, so investing is probably not a good idea.\n `,\n h2: `On-chain tools you can use\n `,\n P2: `On-chain tools you can use\n You can use blockchain scanners like EtherScan for Ethereum and SnowTrace for Avalanche to search for smart contracts or wallet addresses. But they don’t collect data or proposal tools to make sense of the wealth of data points that exist.\n\n In response, countless platforms and sources have sprung up offering detailed charts and dashboards to help users better visualize blockchain data and track individual cryptocurrency and wallet movements. Many of these on-chain analytics platforms are free, or at least offer a lot of features. Some of the most popular are:\n\n Glassnode\n Into The Block\n Nansen\n Dune Analytics\n Messari\n But the on-chain analysis doesn’t tell you what to do. It's up to you to devise a technique based on available information. Here is some guidance on how to make the most out of the Blockchain data dump\n `,\n h3: `Bitcoin movements\n `,\n P3: `Bitcoin (BTC) is the world's first viable cryptocurrency and the biggest by market cap. Because of this, price movements can often cause a ripple effect on the rest of the market; This means that when the price of Bitcoin goes up, other crypto-assets go up, and vice versa. As such, many investors often keep a close eye on Bitcoin’s on-chain activity. Glassnode provides highly granular metrics for on-chain Bitcoin data such as Bitcoin whale movements.\n\n `,\n h4: `Smart contracts and the flow of smart money\n `,\n P4: `In the ancient world of finance, \"smart money\" refers to any capital controlled by skilled investors, institutions, and funds. The term has also entered the Defi lexicon, where it refers to institutions such as crypto venture capital funds or whales (those holding amounts of crypto). Nansen is a popular source for tracking where the smart money is going in and out.\n `,\n h5: `NFT insights\n `,\n P5: `The recent hot NFT trend has also spawned a variety of on-chain analysis tools specifically focused on the NFT market.\n CryptoSlam provides NFT sales volume while Icy. Tools allow you to view real-time sales data. Since the price of items in an NFT collection is often determined by their rarity, traders use tools like Rarity.\n Tools and LuckyTrader to understand where the rarity of an individual item in a collection lies based on on-chain data.\n BlockProbe is an example of a platform with a deal spotter feature that lets users know when a specific NFT is selling at a bargain price based on data from a collection.\n `,\n h6: ``,\n P6: ``,\n },\n {\n id: 8,\n slug: 'how-does-ethereum-2.0-staking-work',\n title: ` How does Ethereum 2.0 staking work? `,\n author: \"\",\n category: \"purple\",\n // categoryText: \"video tutorial\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Ethereum-2.0-staking-work.jpg\",\n image2x: \"/images/content/blog/Ethereum-2.0-staking-work.jpg\",\n imageBlog: \"/images/content/blog/details/ethereum1.jpg\",\n imageBlog2: \"/images/content/blog/details/ethereum2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/ethereum1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/ethereum2.jpg\",\n play: false,\n h1: ` How does Ethereum 2.0 staking work? A beginner's guide on how to stake ETH\n `,\n P1: `The Ethereum network is now congested, raising transaction costs to prohibitively expensive levels for many use cases. This is partly due to the success of Defi projects, where consumers are willing to pay high transaction fees due to the huge financial value of the transactions.\n\n Transaction fees are a “petrol†cost in Ethereum because they fund actual applications running on the Ethereum(ETH) Blockchain, not just transactions. Non-financial DApps (decentralized applications built on Ethereum) have a hard time running on Ethereum due to high gas fees. \n \n To address these issues, the Ethereum Foundation has been working on Ethereum 2.0, a network upgrade that attempts to improve the security, speed, efficiency, and scalability of the Ethereum network. The security and scalability of the Ethereum network allow it to process more transactions, remove bottlenecks and handle more use cases, especially outside of finance. \n `,\n h2: `From mining to staking model\n `,\n P2: `Proof of stake is a consensus method that Blockchain networks use to achieve distributed consensus. Staking is a process used by PoS Blockchains to secure the Blockchain and generate new blocks. The process of selecting validators to set up a new block is called staking.\n\n The choice to produce/validate a block is proportional to the number of coins. As a result, anyone with a small number of coins can engage in staking and earn extra coins in proportion to their staking amount.\n \n To become a validator on the network, users must stake their Ether (ETH), the native cryptocurrency of the Ethereum(ETH) Blockchain. Validators, like proof-of-work miners, are responsible for organizing transactions and creating new blocks so that all nodes can agree on the state of the network.\n Validators, sometimes known as \"stakers,\" are trustworthy for processing transactions, storing data, and counting blocks to the Beacon Chain, Ethereum's latest consensus model. Validators accept interest on their staked coins, which are denominated in Ethereum, as a reward for their active participation in the web.\n \n To become a validator on Ethereum(ETH), users must invest 32 Ethereum(ETH). Validators are assigned to create blocks at random and are accountable for double-checking and verifying any blocks they do not make. \n \n The stake of the user is also utilized to incentivize positive validator activity. For example, a user may fail a portion of their share if they go offline (fail to validate) or lose their entire asset if they engage in willful collusion. Furthermore, users may be able to delegate their stake to another user who can perform the tasks of a validator on their behalf, depending on the PoS system.\n `,\n h3: `How does Ethereum staking work?\n\n `,\n P3: `The PoS-based Blockchain, in contrast to the Proof-of-Work or PoW-based Blockchain, aggregates 32 blocks of transactions during each validation round, which takes an average of 6.4 minutes. \"Epochs\" are the names given to these groups of blocks. If the Blockchain adds two more epochs to it, it is considered irreversible.\n\n Beacon Chain divides participants into a “committee†of 128 people and randomly assigns them to a specific shard block. Each committee is assigned a \"room\" and has a set time to propose a new block and validate internal transactions. Each epoch has 32 slots, which requires 32 committee sets to complete the validation process.\n \n Once a committee has been assigned to a block, a random member has exclusive authority to propose a new block of transactions. In contrast, the remaining 127 members vote on the proposal and certify the transactions.\n `,\n h4: `Why stake ETH for Ethereum 2.0?\n `,\n P4: `The primary reason why many someones would want to invest in Ether is to obtain the APR, or annual percentage rate, which can range from 6% to 15%. With the minimum requirement of 32 ETH, you may expect to gain anywhere between 2 and 5 ETH at current prices.\n\n What's the catch, exactly? You must reserve your ETH for years. Some people may be hesitant to accept this option if they don't have 32 ETH to lock up on the fly or prefer to spend ETH for other decentralized applications. `,\n h5: ``,\n P5: ``,\n h6: ``,\n P6: ``,\n },\n\n {\n id: 10,\n slug: 'how-to-diversify-your-crypto-field',\n title: `How to diversify your crypto portfolio `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/crypto-portfolio.jpg\",\n image2x: \"/images/content/blog/crypto-portfolio.jpg\",\n imageBlog: \"/images/content/blog/details/crypto-portfolio-1.jpg\",\n imageBlog2: \"/images/content/blog/details/cryptoPortfolio-2.jpg\",\n imageBlogTwoX: \"\",\n imageBlog2TwoX: \"\",\n h1: `How to diversify your crypto portfolio & why it is important\n `,\n P1: `Bitcoin and altcoins like Ethereum, Solana, and Polkadot are among the top-rated portfolio items in investors' portfolios. It is also worth noting that virtual digital assets were among the top-performing assets in 2021. As more traders and investors enter the cryptocurrency market to take advantage of the growth of these crypto tokens, this crypto space has the potential for mass development and more spacious long-term adoption.\n `,\n h2: `Six best fundamentals of cryptocurrency investing strategy\n `,\n P2: `Now that we have taken a walk down the basics of cryptocurrency investing and how it works, it is very consequential to decide on a fundamental strategy before diving into the new digital asset! \n\n Choose the right mix of storage wallets:- to keep your tokens 100 percent secure, split your tokens between hot wallets and cold wallets.\n \n Liquidate your assets:- As volatile as the cryptocurrency markets are, cryptocurrency experts often mention keeping tabs on the cryptocurrency market to analyze the market trends and liquidate your assets accordingly.\n \n Track Volatility:- As plenty, because the risky marketplace makes methods for liquidating your profits, it additionally acts as a pathway for extra researched buying! The up and down withinside the crypto marketplace is a healthful signal and the ‘dips’ are frequently called the right time to collect high-stop tokens.\n \n Make sure to check if you can afford to lose your investment:- Exploiting the volatility of the cryptocurrency market is smart, but affordability is also crucial for any trader. Not wanting to bear the potential total loss of your investment means you cannot afford the risk of investing the amount you are considering.\n \n Diversification:- While your interest is in investing in the new asset class, it's important to ensure you buy small chunks of a few tokens to avoid throwing your entire budget into one asset.\n \n Dollar-cost averaging:- With this method, you put small portions of your total budget into tokens of your choice, rather than spending your entire budget at once.\n `,\n h3: `How cryptocurrency investing works\n `,\n P3: `If you are new to crypto, the above section will be even easier to understand once you take note of how cryptocurrency investing works. We have set together a list of tips for you!\n\n Select a cryptocurrency investing platform of your choice\n Create an account\n Transfer fiat funds to your cryptocurrency exchange wallet\n Select the crypto assets that you want to add to your portfolio\n Complete your transaction\n Store your crypto in the digital wallet\n \n `,\n h4: `Why should you diversify your crypto portfolio?\n `,\n P4: `The main goal of diversifying one's crypto portfolio remains the same as why one should diversify the portfolio as a whole. While it's all but impossible to draw a preliminary conclusion about the cryptocurrency market, making a wise decision to invest in multiple cryptocurrencies and build a diversified cryptocurrency portfolio has you poised for impact.\n\n The importance of cryptocurrency diversification is evident as it reduces the risk of permanent losses in a scenario where one of the assets within the cryptocurrency portfolio may collapse but the other assets may hold their value or reach an all-time high or gain. . In general, the different assets together make up the portfolio better.\n `,\n h5: `DIVERSIFYING CRYPTO PORTFOLIO WITHIN DIFFERENT BLOCKCHAIN PROTOCOLS\n `,\n P5: `Diversifying a portfolio is basically a big meal with all its protein. While diversification is mentioned, it is important to remember that the total amount you are going to bet should be the amount at which you are comfortable losing. Cryptocurrency portfolio diversification is an act of investing your money in multiple cryptocurrency projects, rather than putting all budgeted amounts into a single asset.\n `,\n h6: ``,\n P6: ``,\n },\n\n {\n id: 11,\n slug: 'how-to-invest-in-crypto',\n title: ` How to Invest in crypto assets as a beginner`,\n imageBlog: \"/images/content/blog/details/Invest-in-crypto-1.jpg\",\n imageBlog2: \"/images/content/blog/details/Invest-in-crypto-2.jpg\",\n imageBlogTwoX: \"\",\n imageBlog2TwoX: \"\",\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Invest-in-crypto-assets-as-a-beginner.jpg\",\n image2x: \"/images/content/blog/Invest-in-crypto-assets-as-a-beginner.jpg\",\n h1: `BEGINNER GUIDE TO STEPPING INTO THE WORLD OF CRYPTO INVESTMENT\n\n `,\n P1: `\n The times are changing and evidently for the better. Consider the evolving dynamics within the economic space – Today, a growing number of millennials are marking adulthood with a sturdy footing in the asset market. The generation is conscious of the importance of increasing their funds. It makes them more confident to establish their financial future and attain managing their money.\n `,\n h2: `HIGHER ADOPTION OF CRYPTOS BY YOUNG PROFESSIONALS\n \n `,\n P2: `Cryptocurrency jargon has become part of the popular lingo among young professionals. \n All youngsters are keenly drawn to this new form of asset. Experts regard this shift in interest to more factors than just one. To begin with, technology has been a huge influence on the youth across the world. Investing in cryptocurrency investments is backed by Blockchain technology and this has led youngsters to give it a deeper look. The investment class also came into being during the past recent years and the generation has closely watched its performance. The decentralized nature of the cryptocurrency investing space is another alluring facet. There is an air of doubt in the traditional banking system and cryptocurrency comes as a relief. Lastly, the younger generation fears skipping out on the potential returns that crypto investments could earn them. \n \n `,\n h3: `A KEY TO FINDING RELIABLE INFORMATION\n `,\n P3: `There is a lot of information available today, but it is also cluttered. There is no wonder that fewer than 50% of Gen Z adults feel confident about their financial knowledge. In order to absorb investment-related information, most people use social media platforms such as YouTube, Instagram, Podcasts, and news articles. This is especially true in the ever-evolving crypto investing space.\n `,\n h4: `HOW TO START INVESTING IN CRYPTO ASSETS\n `,\n P4: `Storage on the Exchange -Crypto assets can be stored on the crypto wallet that is part of the exchange. It is important to note that the protection of your assets is a collective responsibility. The exchange ensures full security, but you must also take the necessary precautions to protect your investments. This could include setting strong passwords and keeping your data confident`,\n h5: `Hot wallets `,\n P5: ` Crypto wallets are stored online and powered by internet-connected devices such as tablets, computers, or phones. Although this form of storage is convenient, it also carries a higher risk due to online exposure. Assets are more susceptible to online fraud and theft. \n\n `,\n h6: `Cold wallets`,\n P6: `A cold crypto wallet is a hardware device that is used to store your assets. These devices include hard drives and USB flash drives. The Internet is not connected to this type of storage, which makes it relatively safe. It is, however, important to maintain certain safety measures by protecting the device from damage and setting up strong passwords to protect access. \n `,\n },\n\n {\n id: 12,\n slug: 'metaverse-and-ethereum',\n title: \"Metaverse And Ethereum \",\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Metaverse-And-Ethereum.jpg\",\n image2x: \"/images/content/blog/Metaverse-And-Ethereum.jpg\",\n imageBlog: \"\",\n imageBlogTwoX: \"\",\n imageBlog2TwoX: \"\",\n imageBlog2: \"\",\n h1: ` Metaverse And Ethereum What’s The Connection?\n `,\n P1: `\n Metaverse and Ethereum are each buzzword in their own right. You might be surprised to locate out that the two are more connected than it seems. Many decentralized applications (DApps) on the Metaverse are coded on Ethereum(ETH) network and accept Ether for transactions in the digital ecosystem. This report will touch on both ideas and delve into samples of this relationship within the Metaverse. If you’re not yet familiar with Either Metaverse or Ethereum(ETH).\n `,\n h2: `Why Metaverse needs Ethereum\n `,\n P2: `As mentioned above, many of the Metaverse DApps exist on the Ethereum(ETH) network. Every smart contract or transaction in these applications is based on the use of Ether (ETH), a currency exclusive to this network. There are many tokens based on Ethereum, including the famous Memcoin. However, this connection between the Metaverse and Ethereum goes beyond simply providing liquidity for transactions; It also allows us to connect our digital ecosystem to its physical counterpart. For example, if you want to register your business on our platform, you will need an e-wallet address. You can also try a hardware wallet.\n `,\n h3: `How Metaverse uses Ethereum\n `,\n P3: `Metaverse is a Blockchain project that connects digital investments, digital identities, and important intermediary services. The Metaverse Blockchain acts as a bridge between digital and real-world investments. As such, it’s better than just a standalone Blockchain network. It’s a component of an interconnected web3 ecosystem that includes different Blockchain projects in finance, gaming, artificial intelligence (AI), security, supply chain management (SCM), medical care, IoT & hardware systems, cloud computing services – essentially anything including large amounts of data. One of these links is with Ethereum(ETH), which utilizes Ether for transactions within its DApps.\n\n Metaverse is its own blockchain platform, but many of its DApps are encoded on the Ethereum network and use Ether for transactions in its digital ecosystems. The Ethereum network provides a platform for hosting DApps that protect users' private information. Ethereum's decentralized smart contracts help regulate transactions and interactions, providing cybersecurity and functionality to the online ecosystem. Ethereum also offers a practical advantage for DApp developers: all DApps created in the\n network are supported. This means new developers can build on what already exists and ensure users can move from one DApp to another without breaking compatibility.\n \n `,\n h4: `Why you should know about this\n `,\n P4: `It’s important to know how much buzz there is about Blockchain technology. Because it’s a new technology, and many of us are still attempting to understand it. Since Metaverse is a growing novelty in our world and online environment, it makes sense that people like to know about it. The Metaverse delivers a new perspective and ecosystem for users of Blockchain products. The Metaverse shows how Blockchain technology does more than host cryptocurrency tokens like Ethereum(ETH). \n\n `,\n h5: ``,\n P5: ``,\n h6: ``,\n P6: ``,\n },\n\n {\n id: 13,\n slug: 'satoshi-nakamoto-founder-of-bitcoin',\n title: `Satoshi Nakamoto, The Founder of Bitcoin\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/satoshiNakamoto.jpg\",\n image2x: \"/images/content/blog/HISTORY-OF-BITCOIN.jpg\",\n imageBlog: \"/images/content/blog/details/satoshiNakamoto1.jpg\",\n imageBlog2: \"/images/content/blog/details/satoshiNakamoto2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/satoshiNakamoto1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/satoshiNakamoto2.jpg\",\n h1: `The Founder of Bitcoin`,\n P1: `\n No one comprehends who Satoshi Nakamoto really was, but we do know he was the inventor of Bitcoin, ushering in the age of cryptocurrency.\n While we may not understand who Satoshi Nakamoto was, we know what he accomplished. Satoshi Nakamoto was the developer of the Bitcoin protocol, publishing a paper via the Cryptography Mailing List in (Nov)2008.\n \n Satoshi Nakamoto then released the first version of the Bitcoin software customer in 2009, participating with others on the task via mailing lists, until he finally began to fade from the community toward the last of 2010.\n \n Nakamoto worked with other people on the open-source team but never took care to reveal anything personal about himself, and the last anyone heard from him was in the jump of 2011. \n \n `,\n h2: `Was Satoshi Nakamoto Japanese?\n `,\n P2: `Don’t judge a book by its cover. Or in fact, maybe we should.\n \"Satoshi\" means \"clear thought, quick-witted; intelligent.\" \"Naka\" can mean \"medium, relationship, or inside.\" \"Moto\" can mean \"foundation\" or \"origin.\"\n `,\n h3: `Does anyone know who Satoshi Nakamoto was?\n `,\n P3: `No, but the operative techniques that people use when imagining are sometimes even more intriguing than the answer. The New Yorker’s Joshua Davis thought that Satoshi Nakamoto was Michael Clear, a graduate cryptography student at Dublin's Trinity College.\n He reached this conclusion by analyzing 80,000 words of Satoshi Nakamoto’s online searching and writing for linguistic clues. He also doubted Finnish economic sociologist and former games developer Vili Lehdonvirta.\n `,\n h4: `So what do we know about Satoshi Nakamoto?`,\n P4: `One thing we know, based on people with interviews that were involved with him at an early stage in the growth of bitcoin, is that he considers the system very thoroughly.\n His coding wasn’t traditional, according to core developer Jeff Garzik, in that he didn’t apply the same strict testing that you would expect from a professional software engineer.\n `,\n h5: `How rich is Satoshi Nakamoto?\n `,\n P5: `Research by Sergio Lerner, an authority on bitcoin and cryptography, suggests \n Satoshi Nakamoto mined many of the earlier blocks in the Bitcoin (BTC)network, and he had built up the luck of around 1 million unspent bitcoins. That stock would be worth $18.4 billion U.S. dollars as of last year.\n `,\n h6: `Did Satoshi Nakamoto work for the government?\n `,\n P6: `There are hearsays, of course. People have to decode his name as meaning \"central intelligence,\" but people will see whatever they like to see. Such is the nature of conspiracy ideas.\n The apparent question would be why one of the three-letter agencies would be interested in developing a cryptocurrency that would subsequently be used as an anonymous trading mechanism, causing the FBI and the senators alike to wring their hands about potential criminal and other terrorism endeavors. It doesn't matter what conspiracy theories people have, everyone has their own theories. In the end, Bitcoin is now much bigger than Satoshi Nakamoto.\n `,\n },\n\n {\n id: 14,\n slug: 'what-are-bips',\n title: `\n what are bips and why do they matter`,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/bips-and-why-do-they-matter.jpg\",\n image2x: \"/images/content/blog/bips-and-why-do-they-matter.jpg\",\n imageBlog: \"/images/content/blog/details/bipsMatter1.jpg\",\n imageBlog2: \"/images/content/blog/details/bipsMatter2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/bipsMatter1.jpg\", \n imageBlog2TwoX: \"/images/content/blog/details/bipsMatter2.jpg\",\n h1: `Since Bitcoin(BTC) doesn't have centralized leadership, Bitcoin Improvement Proposals are necessary in order to determine whether any upgrades need to be approved.\n `,\n P1: `Bitcoin, the oldest and largest Blockchain in the world, has been around since 2011. Still, despite being in existence for more than a decade, not much has changed.\n This is because Bitcoin(BTC) is truly decentralized and the networking community prioritizes the security and predictability of the Blockchain over everything else.\n \n Still, there are updates to how Bitcoin(BTC) works from time to time, sometimes just a small change, sometimes a change as big as Taproot, which took three years and allowed developers to incorporate new features to extend Bitcoin's functionality and improve privacy. Blockchain scalability and security.\n `,\n h2: `what is a BIP?\n `,\n P2: `The Bitcoin Improvement Proposal (BIP) is a standardized way to represent changes to how the Bitcoin blockchain works.\n\n Since the Blockchain is software, think of BIPs as software updates. Their goal is to improve the Bitcoin blockchain and they need to incorporate all the technical details of the change into the Blockchain code in order to implement it.\n \n Because Bitcoin lacks centralized governance, BIPs allow the community to communicate ideas, design and propose technical changes and ultimately vote on whether to accept or reject the proposal.\n `,\n h3: `Who can submit a BIP?\n `,\n P3: `In theory, anyone can propose an update and develop it like a BIP, because Bitcoin is an open-source decentralized network.\n However, it is highly recommended that an idea be raised on community forums and email lists to discuss whether the proposal has enough support among Bitcoin network participants.\n \n `,\n h4: `How a BIP gets approved\n `,\n P4: `First, the idea needs a BIP champion who will draft the proposal. Champions convert the plan into detailed technical documentation according to the Bitcoin improvement proposal (BIP) standards.\n\n The BIP champion then submits the proposal to the BIP editor, who acts as the proposal reviewer and is responsible for its management.\n The editor's responsibilities include editing the language and format in accordance with the standards, checking the technical feasibility of the proposal, and ensuring that he is well prepared to move on to voting. The editor can request revisions from the author or even reject them. When the publisher says the proposal is ready, they are given an official number (e.g. BIP 119) and the champion submits the BIP to the community.\n The Bitcoin improvement proposal(BIP) has to go through different stages before it can be implemented.\n`,\n h5: ``,\n P5: `Draft: The Bitcoin improvement proposal is submitted to the mailing list and GitHub repository of the Bitcoin community.\n\n Proposed: The BIP includes an idea on how to implement the change in the blockchain.\n \n Final: The BIP is received and ready to be implemented.`,\n h6: ``,\n P6: ``,\n },\n\n {\n id: 15,\n slug: 'what-is-crypto-wallet',\n title: `What Is a Crypto Wallet and How to Use It\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Crypto-Wallet-and-How-to-Use-It.jpg\",\n image2x: \"/images/content/blog/bips-and-why-do-they-matter.jpg\",\n imageBlog: \"/images/content/blog/details/cryptoWallet1.jpg\",\n imageBlog2: \"/images/content/blog/details/cryptoWallet2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/cryptoWallet1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/cryptoWallet2.jpg\",\n h1: `Buying cryptocurrency has never been easier, but learning how to store it properly and safely takes a lot more work.\n `,\n P1: `Cryptocurrency wallets are like online bank accounts for your cryptocurrencies, but with a few key differences: cryptocurrency wallets aren't backed by government escrow systems, they only hold cryptocurrencies (no regular money here), and more importantly, you're in control of your means. Time. Noncustodial is the term for cryptocurrency wallets like MetaMask, Rainbow Wallet, or Trust Wallet that are separate from the accounts you may have on cryptocurrency exchanges.\n\n These wallets are key to the decentralized web and serve as the primary way to interact with decentralized financial protocols such as credit protocols, decentralized exchanges, or non-fungible token (NFT) markets. Crypto wallets are so central to decentralized finance that some people on Twitter or Discord refer solely to their crypto wallet addresses — anyone who introduces themselves with a username that begins with “0x†is referring to their Ethereum address.\n `,\n h2: `What is a crypto wallet for?\n `,\n P2: `Unless you’re running a huge company controlling so much cryptocurrency that you require the watchful eye of a specialized custodian – a third party that looks after your crypto for you – you’re looking for a non-custodial wallet. These are, as noted, wallets to which only you control the keys. You may have read the proverb, “not your keys, not your crypto.†This phrase is normally used and stresses the importance of looking after your own crypto.\n `,\n h3: `How to choose a crypto wallet\n `,\n P3: `Different blockchains require different wallets. MetaMask, one of the most famous wallets, helps just a handful of networks, including Ethereum, Polygon (MATIC), and Avalanche (the common denominator is that these chains all support the Ethereum Virtual Machine (EVM)). MetaMask does not support Bitcoin or Solana, however, there are a number of other changes including Trust Wallet that do help Bitcoin.\n `,\n h4: `How to set up a crypto wallet`,\n P4: `download the app on your phone and install the browser extension. Then, MetaMask will ask you to select a password to the app, name your wallet, then write down your secret phrase (and then get you to check that you have done so). And that’s it! You can then utilize your wallet to send or receive funds.\n To find out your address, connect the name of your wallet and MetaMask will copy it to your clipboard. Different wallets have near-identical setup processes.\n `,\n h5: `What about hardware wallets?\n `,\n P5: `The above is a summary of popular web wallets, also known as \"hot wallets\" because you require an internet connection to utilize them. Hardware wallets, known as \"cold wallets,\" are physical devices like thumb drives that you plug into your computer and only link to the internet when docked. This makes them more secure, although they are a bit awkward to use. Popular brands include Trezor and Ledger. Unlike hot wallets, you have to buy these hardware wallets from the official retailer offered. Buying them second-hand or from an unreliable vendor is incredibly risky as the devices may be faulty, tampered with, or contain malware.\n `,\n h6: ``,\n P6: ``,\n },\n\n {\n id: 16,\n slug: 'what-are-ethereum-gas-fees',\n title: ` What Are Ethereum(ETH) Gas Fees?\n `,\n author: \"First name Last name\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Ethereum-Gas.jpg\",\n image2x: \"/images/content/blog/Ethereum-Gas.jpg\",\n imageBlog: \"/images/content/blog/details/ethereumGasFees1.jpg\",\n imageBlog2: \"/images/content/blog/details/ethereumGasFees2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/ethereumGasFees1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/ethereumGasFees2.jpg\",\n h1: `A gas fee is something all users must pay in order to complete any function of the Ethereum(ETH) Blockchain.`,\n P1: `\n\n `,\n h2: `What is Gas?\n `,\n P2: `Gas is the term for the amount of Ether (ETH), Ethereum's native cryptocurrency, required by the network for a user to interact with the web. These fees are utilized to compensate Ethereum (ETH)miners for the energy required to verify a transaction and to deliver a layer of security to the Ethereum(ETH)network by creating it too expensive for malicious users to spam the web.\n Despite being an effective way to encourage miners to keep verifying transactions and maintaining network security, gas fees are still the most hated part of Ethereum among all users. People hate gas tariffs not only because of general contempt but also because they can get expensive when the grid is congested.\n `,\n h3: `How are Gas Fees Calculated?\n `,\n P3: `In order to get an understanding of why gas prices cost so much and how you can save on them, it’s essential to understand how they are calculated.\n\n Because prices on Ethereum(ETH) are usually much lower than 1 ETH (although sometimes it doesn’t feel like it), Ethereum(ETH) employs a metric scheme of denominated branches called “Wei,†where 1 Ethereum(ETH) is equal to 1 quintillion wei. (A quintillion is a number with 18 zeros after it.) One of the most common wei denominations, and the one utilized to represent gas fees, is gigawei (gwei), or 1 billion wei.\n \n Total Fee = Gas unit (limits) * (Base fee + Tip)\n `,\n h4: `Gas units (limits)`,\n P4: ` This refers to the highest amount of gas you are willing to spend on a transaction. Although you can adjust the cost of your transaction, it's important to do so carefully. This is because different types of interactions with the Ethereum blockchain require different amounts of gas to complete.\n `,\n h5: `Base fee`,\n P5: ` This refers to the minimum amount of gas required to enumerate a transaction on the Ethereum(ETH) Blockchain. The amount of gas required for a base rate is determined by the demand for a transaction to be included, regardless of the type of transaction. Tariffs are a demand factor, they dynamically adjust based on the number of users interacting with the network at any given time.\n\n `,\n h6: `Tips`,\n P6: ` Also known as a priority price, tips are an additional cost made to have your transaction completed faster. This fee is better known as a tip because it delivers an economic incentive for Ethereum(ETH) miners to verify your transaction before others. When a miner confirms a transaction with a priority fee connected, they accept that fee as a tip for doing so. Because miners are able to see what transactions include tips, they will prioritize conducting a transaction with the highest tips connected to make the most money they can.\n `,\n h7: `\n Why gas fees prices so much\n `,\n P7: `Why gas fees prices so much\n With an understanding of how total gas costs are calculated, we can get a better opinion of why gas fees cost so much. Mainly, the two largest factors that have caused gas fees to soar recently are:\n \n Gas fees denomination in gwei.\n Ethereum’s variable total fee formula.\n \n Gas fees cost more because ETH prices more\n The first main reason why gas fees cost more is simply that ETH costs more. Keep in mind that gas fees are in Gwei, which is another way of representing an ETH amount. The main catalyst for this growing demand is booming decentralized finance. (DeFi) and NFTs, which continue to attract new users to the Ethereum ecosystem.\n `,\n },\n\n {\n id: 16,\n slug: 'what-is-crypto-custody',\n title: `What Is Crypto Custody?\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Crypto-Custody.jpg\",\n image2x: \"/images/content/blog/Crypto-Custody.jpg\",\n imageBlog: \"/images/content/blog/details/cryptoCustody1.jpg\",\n imageBlog2: \"/images/content/blog/details/cryptoCustody2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/cryptoCustody1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/cryptoCustody2.jpg\",\n h1: `There is no shortage of horror stories about stolen funds, hacks, and lost passwords in the cryptocurrency industry. \n `,\n P1: `Crypto custody is a term used to describe the process of protecting assets from theft. Custodians (third parties who can be hired to look after your crypto for you) act as a safeguard for your money, be it cash, securities, bullion, or virtual assets. \n Crypto custody works a little differently. Digital asset custodians don't technically store any of the \n assets, as all data and transactions exist on a public ledger called the blockchain. Instead, they protect users' private keys, the vital part of a crypto wallet that grants access to the funds within.\n `,\n h2: `How does crypto custody work?\n `,\n P2: `Simply put, crypto custody means securing the personal key that verifies you own the funds held within your cryptocurrency wallet. In traditional banking, all custodians are financial institutions, as needed by law. With cryptocurrencies, however, holders have the chance to become their own custodians. Utilizing gold bars as an analogy, you can either reserve them under your bed to keep them secure yourself or pay a third-party custodian to lock them in a locker protected by security guards.\n `,\n h3: `There are main two types of crypto custody for you to know.\n `,\n P3: `Self-custody:\n As mentioned, self-custody is when you personally hold the private key of your own wallet. This means you are the only one who can verify ownership of your funds and access your holdings. But with great power comes great responsibility. Being your own custodian means being in full control of your wallet, but it also means you bear all the risks too. If you lose access to your physical device (cold wallet) or forget the private key, your crypto is most likely lost forever.\n `,\n h4: ``,\n P4: `Third-party custody:\n Those who don't want to take on the responsibility of managing their own accounts, or who find the technology too intimidating, should consider using a third-party provider. These are registered and regulated financial institutions that have obtained a state or national license to operate. as supervisor.\n This type of crypto custodian securely stores customers’ private keys in their wallets, ensuring the security of their holdings. From a user perspective, it is comparable to a checking account at a bank. register to open an account, you must undergo know-your-client and anti-money laundering checks. If you store cryptocurrency with a third-party custodian, you are expected to perform the same type of verification to ensure your cryptocurrency was not obtained illegally.\n \n `,\n h5: `How much does third-party crypto custody cost?\n `,\n P5: `As with any type of service, providers often charge a variety of fees to protect your money, just like regular banks do if you have a checking or savings account. Depositing and withdrawing cryptocurrencies into your account can also incur fees. These costs usually fall into one of the following three types\n Custody fee: Custodians ask for a certain percentage point based on the value of the investments under custody every year. This is usually less than 1%.\n`,\n h6: ``,\n P6: `Setup fee: A flat rate for opening a custodial account. It’s worth noting some cryptocurrency custodians waive the fee and let users open an account for free`,\n h7: ``,\n P7: `Withdrawal fee: You might pay a fee every time you take cryptocurrencies out of your account. `,\n },\n {\n id: 17,\n slug: 'what-is-ethereum-and-how-does-it-work',\n title: `What Is Ethereum and how does it work?\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Ethereum-and-how-does-it-work.jpg\",\n image2x: \"/images/content/blog/Ethereum-and-how-does-it-work.jpg\",\n imageBlog: \"/images/content/blog/details/ethereumWork1.jpg\",\n imageBlog2: \"/images/content/blog/details/ethereumWork2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/ethereumWork1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/ethereumWork2.jpg\",\n h1: `Ethereum is the world’s second-largest cryptocurrency by market capitalization and was the first to introduce smart contract functionality to the industry.\n `,\n P1: `\n Ethereum is a blockchain-based software platform that is primarily used to support the world’s second-largest crypto project by market capitalization after Bitcoin (BTC). Like other cryptocurrencies, Ethereum can be used for sending and receiving value globally and without a third party stepping or watching in unexpectedly. Value exchange is the main use case of the Ethereum(ETH) blockchain today, often via the blockchain’s native token, Ethereum. But many of the developers are operating on the cryptocurrency because of its long-term potential and the progressive vision of its developers to use Ethereum(ETH) to give users more control of their finances and online data. The ambitious idea – which sometimes leads to Ethereum being guided to as “world computer†– has been met with its share of critics who say it assumably won’t work. But if this evaluation rolls out as planned, it would spawn apps very different from Google and Facebook, which users knowingly or unknowingly trust with their data.\n With the help of blockchain, Ethereum fans aim to give control back to users, it is a technology that decentralizes data so that thousands of people across the world are handed a copy. Developers can use Ethereum to create leaderless applications, it basically means that a user's data cannot be tampered with by the service's creators. Ethereum was first presented in 2013 by developer Vitalik Buterin, who was 19 at the time and was one of the pioneers of the idea of expanding the technology behind Blockchain.\n `,\n h2: `Ethereum and a decentralized internet\n `,\n P2: `This system can be problematic, according to decentralization advocates. It means direct less control for users, and it also opens up chances for censorship, where the intermediary can step in and stop a user from any action, whether buy a certain stock or message a certain post on social media or block them altogether.\n The idea of Ethereum(ETH) is to transform how apps on the internet work today, awarding users more control by replacing intermediaries with smart contracts that execute rules automatically.\n `,\n h3: `How is Ethereum different from Bitcoin?\n `,\n P3: `Ethereum draws inspiration from Bitcoin. They are both cryptocurrencies. Ethereum(ETH) uses the same technology behind Bitcoin(BTC), a Blockchain, which uses a shared, decentralized public ledger to decentralize the network so it’s not under the control of just one commodity.\n But while Bitcoin(BTC) is used primarily as a store of value, the idea behind Ethereum (ETH)is to decentralize other kinds of applications and services, from social media networks to more complicated financial agreements.\n `,\n h4: `How does an Ethereum app work?\n `,\n P4: `Scrolling through a typical app store you’ll see a combination of colorful squares representing everything from fitness to banking to messaging apps. The long-term idea of the Ethereum community is to make apps that look just like these, but that work differently under the hood.\n In short, the goal is for Ethereum apps to return managing of the data in these types of services to their owner.\n The apps built on Ethereum that propose this functionality are known as decentralized apps. \n `,\n h5: `What are the next steps for Ethereum?\n `,\n P5: `It’s worth noting that Ethereum has been met with beneficial skepticism. For one, Ethereum(ETH) is far from scalable, meaning it can’t help many users right now, throwing a wrench in the view of a “world computer†that disrupts Facebook, Google, and other centralized platforms.\n `,\n h6: ``,\n P6: ``,\n },\n\n\n\n\n\n\n {\n id: 18,\n slug: ' what-is-chainlink',\n title: `What Is Chainlink?\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/What-Is-Chainlink.jpg\",\n image2x: \"/images/content/blog/What-Is-Chainlink.jpg\",\n imageBlog: \"/images/content/blog/details/chainLink1.jpg\",\n imageBlog2: \"/images/content/blog/details/chainLink2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/chainLink1.jpg\",\n imageBlog2TwoX: \"/images/content/blog/details/chainLink2.jpg\",\n\n h1: `Chainlink connects smart contracts on blockchains with the real world via a decentralized oracle network.`,\n P1: `\n \n By collecting data from multiple sources and reconciling it into one reliable piece of information, Chainlink can answer smart contract data requests using a system of nodes and operators. \n\nThe Chainlink network is supported by link, its native token, which is used to compensate Chainlink network operators for providing data to smart contracts.\n\n\n `,\n h2: `CHAINLINK (LINK) ESSENTIALS`,\n P2: ` Smart contracts are synchronized with real-world data via a decentralized oracle network.\n Connects smart contracts on the blockchain with real-world data from multiple reliable sources.\n Link is the native token of Chainlink, and it is used to compensate Chainlink network operators. `,\n\n\n h3: `How smart contracts access off-chain data`,\n P3: `For their operation, smart contracts need to access real-world data outside the blockchain. When a smart contract requires data from outside the blockchain, it uses oracles. A blockchain oracle is a piece of software that acts as an intermediary between the blockchain and the real world. The software translates smart contract requests into programming languages understandable outside the blockchain. Therefore, oracles facilitate smart contract communication with reality.`,\n\n h4: `How does Chainlink Work?`,\n P4: `When a smart contract needs off-chain data, it creates a requesting contract, which specifies what data it needs. SLA contracts (Service Level Agreement contracts) are created by the Chainlink network based on this contract. To provide the smart contract with the necessary data, this contract generates further contracts and performs all the operations required to process the request. It checks the reputation of the oracles providing the data, selects the nodes to carry out the task, and translates the request into a programming language that the oracles can understand. An answer is derived from the combined data of multiple sources, aggregation, and reconciliation. A smart contract on the blockchain receives this piece of data.\n `,\n\n h5: `What‘s the role of Link?`,\n P5: `\n Chainlink doesn't just work by itself. In a decentralized network, the task of fulfilling requesting contracts is performed by independent nodes, known as operators. Chainlink operators must be paid in order to perform their duties. Here's where Link comes in. A Chainlink operator will charge a fee in Link for the privilege of accessing data from the Chainlink network. Operators set their prices in advance based on the demand for the data they are providing and the current market for that data.`,\n\n h6: `Staking on Chainlink`,\n P6: `Chainlink supports staking as well, but it operates in a slightly different manner than we've come to expect from staking. Staking is reserved for node operators on Chainlink, who deposit funds with the network as collateral.\n This demonstrates their dedication to the network and qualifies them to perform operator duties and be reimbursed. The size of an operator's stake in the network is an important consideration when selecting one to fulfill a requested contract.\n Those who have a larger stake are more likely to be chosen and, as a result, earn links for their services. The Chainlink network penalizes faulty or dishonest nodes by taxing their stake. `,\n\n\n h7: `How to Buy Chainlink`,\n P7: `You can buy the Chainlink coin on Bitedenex. Sign up for a Bitdenex account and start trading LINK today!\n `,\n },\n\n {\n id: 19,\n slug: 'merge-ethereum-upgrade',\n title: ` Merge Ethereum Upgrade: Everything You Need To Know\n `,\n author: \"\",\n category: \"blue\",\n // categoryText: \"featured\",\n status: \"green\",\n statusText: \"popular\",\n image: \"/images/content/blog/Chain-Analysis-work.jpg\",\n image2x: \"/images/content/blog/Chain-Analysis-work.jpg\",\n imageBlog: \"/images/content/blog/details/mergeEthereum1.jpg\",\n imageBlog2: \"/images/content/blog/details/mergeEthereum2.jpg\",\n imageBlogTwoX: \"/images/content/blog/details/mergeEthereum1.jpg\",\n imageBlog2TwoX:\"/images/content/blog/details/mergeEthereum2.jpg\",\n h1: `\n `,\n P1: `For quite some time now, Ethereum, the most popular and top altcoin by market cap, has been planning a software upgrade. Ethereum would be fundamentally changed by this update and it could have a significant impact on your crypto assets.\n Since it was created, Ethereum has been the largest and most popular smart contract blockchain. As it's more energy-efficient competitors catch up and get closer, Ethereum is switching to less energy-intensive blockchain technology. Ethereum 2.0 was once known as Eth2, but the Ethereum Foundation now calls it the Ethereum Merge.\n \n `,\n h2: `What is the Merge?`,\n P2: `Currently, the Ethereum Mainnet blockchain, which contains all transactions and smart contracts from Ethereum's launch, will merge with the Beacon Chain blockchain, which was created in 2020. Ethereum Mainnet has been secured by a Proof-of-Work consensus system since its inception. A Proof-of-Stake consensus system is used by Beacon Chain. For the last two years, Ethereum Mainnet and Beacon Chain have run separately but in parallel.`,\n\n h3: `Why is Ethereum Merge?`,\n P3: `Ethereum has used a Proof-of-Work consensus mechanism since its launch in 2015. The Proof-of-Work system, however, is infamous for consuming a large amount of energy in order to mine new blocks. Additionally, it's considered inefficient for scaling and has been criticized for its security weaknesses.\n The Ethereum developers have been preparing for the eventual switch to Proof-of-Stake for years, creating the parallel Beacon Chain in 2020 with the goal of merging the two chains.`,\n\n h4: `WHAT ARE THE BENEFITS OF THE MERGE?`,\n P4: `1. Transition from Pow to PoS.\n The Ethereum ecosystem as a whole will benefit from this more efficient consensus mechanism as it uses fewer resources.\n \n `,\n\n h5: ``,\n P5: ` 2. Energy efficiency.\n In addition to reducing energy consumption by 99.95%, PoS also brings about a 99.95% reduction in the blockchain's energy consumption.`,\n\n\n h7: ``,\n P7: `3. Sharding.\n Through sharding, the Ethereum ecosystem is set up for future scaling upgrades that will become necessary as the crypto ecosystem and market growth.`,\n\n\n h8: ``,\n P8: `4.Use-case & investment narrative.\n If the Ethereum Merge is completed successfully, it will also bring about a major change in the fundamental function, opening up many more use cases and driving further investment narrative for the altcoin king.`,\n\n\n\n h9: `HOW WILL THE MERGER AFFECT US?`,\n P9: `After the merge, another process called sharding is started. This is a process that will essentially help prepare the network for Ethereum 2.0 shard chains that will rely entirely on a working PoS network to function. With a network workload of over 64 blockchains, these chains of shards provide more cost-effective additional layers for applications and stacks to store data. They also allow Layer 2 systems to offer low transaction fees while benefiting from the security of the Ethereum mainnet.`,\n\n\n\n h10: `HOW WILL THE ETHEREUM MERGER IMPACT YOUR INVESTMENTS IN CRYPTOCURRENCIES?`,\n P10: `Experts seem to believe that the successful implementation of Merge on the mainnet could lead to a major growth spurt for Ethereum. Because with this launch, Ethereum would now be in direct competition with all other PoS-based ones. Blockchain networks, and already have an advantage in terms of TVL and the number of developers building on top of the blockchain.`,\n\n\n h11: `FREQUENTLY ASKED QUESTIONS ABOUT THE ETHEREUM MERGE`,\n P11: `WILL ETHEREUM MERGE INCREASE ETH PRICE?.\n Ethereum Merge will open up a world of opportunities for those already on the chain and building on top of that and so if you see an increase in participation there will definitely be a price increase but that will take time. Capitalizing on short-term gains like these would be extremely difficult.`,\n\n\n\n h12: `WILL ETHEREUM 2.0 REPLACE ETHEREUM?`,\n P12: `Eventually yes. But for now, both the Ethereum PoW chain and the new PoS chain will coexist to ease the transition from one to the other and give developers some time to migrate effectively.\n `,\n\n h13: `How to Buy Cryptocurrency`,\n P13: `You can buy cryptocurrency on Bitedenex. Sign up for a Bitdenex account and start trading today!`,\n\n\n }\n\n];\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Catalog.module.sass\";\nimport Card from \"../../../components/Card\";\nimport { articles } from \"../../../mocks/articles\";\n\nconst Catalog = ({ scrollToRefCatalog }) => {\n\n const blogs = articles.slice(3);\n\n return (\n <div\n className={cn(\"section-padding section-mb0\", styles.section)}\n ref={scrollToRefCatalog}\n >\n <div className={cn(\"container\", styles.container)}>\n <form className={styles.form} > </form>\n <div className={styles.list}>\n {blogs.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Catalog;\n","// extracted by mini-css-extract-plugin\nexport default {\"form\":\"Catalog_form__9aRtd\",\"input\":\"Catalog_input__H0X9P\",\"result\":\"Catalog_result__xsDKk\",\"sorting\":\"Catalog_sorting__TKddj\",\"dropdown\":\"Catalog_dropdown__ZL6sm\",\"nav\":\"Catalog_nav__fPwaJ\",\"link\":\"Catalog_link__YbGjQ\",\"active\":\"Catalog_active__kgFrF\",\"list\":\"Catalog_list__o5x99\",\"card\":\"Catalog_card__3VvL2\",\"btns\":\"Catalog_btns__1uN0t\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__MVeGz\",\"preview\":\"Card_preview__5Rdlq\",\"body\":\"Card_body__6kP3u\",\"avatar\":\"Card_avatar__MS6To\",\"details\":\"Card_details__5Gzj6\",\"title\":\"Card_title__zop0G\",\"author\":\"Card_author__UFhKF\",\"status\":\"Card_status__F8pxQ\",\"imageContainer\":\"Card_imageContainer__GMhye\",\"logoContainer\":\"Card_logoContainer__NSG+w\",\"image\":\"Card_image__DPOai\",\"nestedImage\":\"Card_nestedImage__98AXu\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Play from \"../../../../components/Play\";\n\nconst Card = ({ className, item, index }) => {\n\n return (\n <Link className={cn(className, styles.card)} to={`/about/${item.symbol}`}>\n <div className={styles.preview}>\n {item.categoryText && (\n <div\n className={cn(\n \"category\",\n {\n \"category-purple\": item.category === \"purple\",\n },\n {\n \"category-green\": item.category === \"green\",\n },\n {\n \"category-blue\": item.category === \"blue\",\n },\n styles.category\n )}\n >\n {item.categoryText}\n </div>\n )}\n <div className={styles.imageContainer}>\n <img\n src=\"/images/content/newBannerWithBG.png\"\n alt=\"Banner\"\n className={styles.image}\n />\n <img\n src={process.env.REACT_APP_IMAGE_URL + \"/\" + item?.icon}\n alt=\"logo\"\n className={styles.nestedImage}\n />\n </div>\n </div>\n <div className={styles.body}>\n <div className={styles.avatar}>\n <img src={process.env.REACT_APP_IMAGE_URL + \"/\" + item?.icon} alt=\"logo\" />\n </div>\n <div className={styles.details}>\n <div className={styles.title}>A Brief Guide to {item?.name?.toUpperCase()}</div>\n <div className={styles.author}>{item?.author}</div>\n </div>\n {item.statusText && (\n <div\n className={cn(\n {\n \"category-stroke-green\": item.status === \"green\",\n },\n styles.status\n )}\n >\n {item.statusText}\n </div>\n )}\n </div>\n </Link>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Catalog.module.sass\";\nimport Card from \"./Card\";\nimport { articles } from \"../../../mocks/articles\";\n\nconst Catalog = ({ scrollToRefCatalog, coinData }) => {\n\n // const blogs = coinData.slice(3);\n\n return (\n <div\n className={cn(\"section-padding section-mb0\", styles.section)}\n ref={scrollToRefCatalog}\n >\n <div className={cn(\"container\", styles.container)}>\n <form className={styles.form} > </form>\n <div className={styles.list}>\n {coinData?.map((x, index) => (\n <Card className={styles.card} item={x} key={index} index={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Catalog;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\nimport Catalog from \"./Catalog\";\nimport CoinsAndTokens from \"./CoinsAndTokens\";\nimport News from \"../../components/News\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport requestHandler from \"../../actions/httpClient\";\n\nconst LearnCrypto = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n const [activeIndex, setActiveIndex] = useState(0);\n const [loading, setLoading] = useState(false);\n const [coinData, setCoinData] = useState([]);\n\n const getCoinDetailsHandler = async () => {\n setLoading(true);\n try {\n const getCoinDetailsPayload = await requestHandler(\"getAllCoinQuestion\", \"post\");\n setLoading(false);\n let filteredData = getCoinDetailsPayload?.data?.data?.filter((x) => {\n if (x?.status === 1) {\n return x;\n }\n })\n // setCoinData(getCoinDetailsPayload?.data?.data);\n setCoinData(filteredData);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n useEffect(() => {\n if (activeIndex === 1) {\n getCoinDetailsHandler();\n }\n }, [activeIndex]);\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases\n activeIndex={activeIndex}\n setActiveIndex={setActiveIndex}\n scrollToRef={scrollToRef}\n getCoinDetailsHandler={getCoinDetailsHandler}\n />\n {/* <Catalog\n activeIndex={activeIndex}\n setActiveIndex={setActiveIndex}\n scrollToRefCatalog={scrollToRefCatalog}\n /> */}\n {activeIndex === 0 ?\n <Catalog\n activeIndex={activeIndex}\n setActiveIndex={setActiveIndex}\n scrollToRefCatalog={scrollToRefCatalog}\n />\n :\n <CoinsAndTokens\n activeIndex={activeIndex}\n setActiveIndex={setActiveIndex}\n scrollToRefCatalog={scrollToRefCatalog}\n coinData={coinData}\n />\n }\n <News classSection=\"section-bg section-mb0\" />\n </>\n );\n};\n\nexport default LearnCrypto;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__oqlls\",\"head\":\"Main_head__ccITK\",\"title\":\"Main_title__TDw7q\",\"breadcrumbs\":\"Main_breadcrumbs__0XXdc\"};","// extracted by mini-css-extract-plugin\nexport default {\"breadcrumbs\":\"Breadcrumbs_breadcrumbs__fWnM6\",\"item\":\"Breadcrumbs_item__5RgS-\",\"link\":\"Breadcrumbs_link__kgrHI\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Breadcrumbs.module.sass\";\n\nconst Breadcrumbs = ({ className, items }) => {\n return (\n <div className={cn(className, styles.breadcrumbs)}>\n {items.map((x, index) => (\n <div className={styles.item} key={index}>\n {x.url ? (\n <Link className={styles.link} to={x.url}>\n {x.title}\n </Link>\n ) : (\n x.title\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport default Breadcrumbs;\n","// extracted by mini-css-extract-plugin\nexport default {\"player\":\"Player_player__TqvEZ\",\"control\":\"Player_control__Mm2Mc\",\"button\":\"Player_button__yRPTn\",\"line\":\"Player_line__H605M\",\"progress\":\"Player_progress__2lZHV\",\"time\":\"Player_time__yFGZP\"};","import cn from \"classnames\";\nimport styles from \"./Player.module.sass\";\n\nconst Player = ({ className, image, image2x }) => {\n return (\n <div className={cn(styles.player, className)}>\n <div className={styles.preview}>\n {/* <img src={image} alt=\"Video preview\" /> */}\n <img srcSet={`${image2x} 2x`} src={image} alt=\"Item\" />\n </div>\n </div>\n );\n};\n\nexport default Player;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Learn crypto\",\n url: \"/learn-crypto\",\n },\n {\n title: \"Trading\",\n url: \"/learn-crypto\",\n }\n];\n\nconst Main = ({ blog }) => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h2\", styles.title)}>{blog ? blog.title : null}</h2>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image={blog?.imageBlog}\n image2x={blog?.imageBlogTwoX}\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__syND5\",\"content\":\"Article_content__p4vqJ\",\"actions\":\"Article_actions__G+ZBx\",\"favorite\":\"Article_favorite__Wsmkj\"};","// extracted by mini-css-extract-plugin\nexport default {\"share\":\"Share_share__aZU6x\",\"button\":\"Share_button__2r-9D\",\"active\":\"Share_active__cSm9R\",\"body\":\"Share_body__Wq7pa\",\"show\":\"Share_show__p4Bpe\",\"openUp\":\"Share_openUp__JKLi-\",\"title\":\"Share_title__yktSp\",\"list\":\"Share_list__+XQhH\",\"link\":\"Share_link__zux4W\",\"darkButton\":\"Share_darkButton__sixvv\"};","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n function AssertionError(message) {\n var _this = _super.call(this, message) || this;\n _this.name = 'AssertionError';\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default function assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n","export default function objectToGetParams(object) {\n var params = Object.entries(object)\n .filter(function (_a) {\n var value = _a[1];\n return value !== undefined && value !== null;\n })\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(String(value)));\n });\n return params.length > 0 ? \"?\".concat(params.join('&')) : '';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (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 (_) 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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { Component } from 'react';\nimport cx from 'classnames';\nvar isPromise = function (obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n};\nvar getBoxPositionOnWindowCenter = function (width, height) { return ({\n left: window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2,\n top: window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2,\n}); };\nvar getBoxPositionOnScreenCenter = function (width, height) { return ({\n top: (window.screen.height - height) / 2,\n left: (window.screen.width - width) / 2,\n}); };\nfunction windowOpen(url, _a, onClose) {\n var height = _a.height, width = _a.width, configRest = __rest(_a, [\"height\", \"width\"]);\n var config = __assign({ height: height, width: width, location: 'no', toolbar: 'no', status: 'no', directories: 'no', menubar: 'no', scrollbars: 'yes', resizable: 'no', centerscreen: 'yes', chrome: 'yes' }, configRest);\n var shareDialog = window.open(url, '', Object.keys(config)\n .map(function (key) { return \"\".concat(key, \"=\").concat(config[key]); })\n .join(', '));\n if (onClose) {\n var interval_1 = window.setInterval(function () {\n try {\n if (shareDialog === null || shareDialog.closed) {\n window.clearInterval(interval_1);\n onClose(shareDialog);\n }\n }\n catch (e) {\n /* eslint-disable no-console */\n console.error(e);\n /* eslint-enable no-console */\n }\n }, 1000);\n }\n return shareDialog;\n}\nvar ShareButton = /** @class */ (function (_super) {\n __extends(ShareButton, _super);\n function ShareButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.openShareDialog = function (link) {\n var _a = _this.props, onShareWindowClose = _a.onShareWindowClose, _b = _a.windowHeight, windowHeight = _b === void 0 ? 400 : _b, _c = _a.windowPosition, windowPosition = _c === void 0 ? 'windowCenter' : _c, _d = _a.windowWidth, windowWidth = _d === void 0 ? 550 : _d;\n var windowConfig = __assign({ height: windowHeight, width: windowWidth }, (windowPosition === 'windowCenter'\n ? getBoxPositionOnWindowCenter(windowWidth, windowHeight)\n : getBoxPositionOnScreenCenter(windowWidth, windowHeight)));\n windowOpen(link, windowConfig, onShareWindowClose);\n };\n _this.handleClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var _a, beforeOnClick, disabled, networkLink, onClick, url, openShareDialogOnClick, opts, link, returnVal;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this.props, beforeOnClick = _a.beforeOnClick, disabled = _a.disabled, networkLink = _a.networkLink, onClick = _a.onClick, url = _a.url, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts;\n link = networkLink(url, opts);\n if (disabled) {\n return [2 /*return*/];\n }\n event.preventDefault();\n if (!beforeOnClick) return [3 /*break*/, 2];\n returnVal = beforeOnClick();\n if (!isPromise(returnVal)) return [3 /*break*/, 2];\n return [4 /*yield*/, returnVal];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n if (openShareDialogOnClick) {\n this.openShareDialog(link);\n }\n if (onClick) {\n onClick(event, link);\n }\n return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n ShareButton.prototype.render = function () {\n var _a = this.props, beforeOnClick = _a.beforeOnClick, children = _a.children, className = _a.className, disabled = _a.disabled, disabledStyle = _a.disabledStyle, forwardedRef = _a.forwardedRef, networkLink = _a.networkLink, networkName = _a.networkName, onShareWindowClose = _a.onShareWindowClose, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts, resetButtonStyle = _a.resetButtonStyle, style = _a.style, url = _a.url, windowHeight = _a.windowHeight, windowPosition = _a.windowPosition, windowWidth = _a.windowWidth, rest = __rest(_a, [\"beforeOnClick\", \"children\", \"className\", \"disabled\", \"disabledStyle\", \"forwardedRef\", \"networkLink\", \"networkName\", \"onShareWindowClose\", \"openShareDialogOnClick\", \"opts\", \"resetButtonStyle\", \"style\", \"url\", \"windowHeight\", \"windowPosition\", \"windowWidth\"]);\n var newClassName = cx('react-share__ShareButton', {\n 'react-share__ShareButton--disabled': !!disabled,\n disabled: !!disabled,\n }, className);\n var newStyle = resetButtonStyle\n ? __assign(__assign({ backgroundColor: 'transparent', border: 'none', padding: 0, font: 'inherit', color: 'inherit', cursor: 'pointer' }, style), (disabled && disabledStyle)) : __assign(__assign({}, style), (disabled && disabledStyle));\n return (React.createElement(\"button\", __assign({}, rest, { \"aria-label\": rest['aria-label'] || networkName, className: newClassName, onClick: this.handleClick, ref: forwardedRef, style: newStyle }), children));\n };\n ShareButton.defaultProps = {\n disabledStyle: { opacity: 0.6 },\n openShareDialogOnClick: true,\n resetButtonStyle: true,\n };\n return ShareButton;\n}(Component));\nexport default ShareButton;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React, { forwardRef } from 'react';\nimport ShareButton from '../ShareButton';\nfunction createShareButton(networkName, link, optsMap, defaultProps) {\n function CreatedButton(props, ref) {\n var opts = optsMap(props);\n var passedProps = __assign({}, props);\n // remove keys from passed props that are passed as opts\n var optsKeys = Object.keys(opts);\n optsKeys.forEach(function (key) {\n delete passedProps[key];\n });\n return (React.createElement(ShareButton, __assign({}, defaultProps, passedProps, { forwardedRef: ref, networkName: networkName, networkLink: link, opts: optsMap(props) })));\n }\n CreatedButton.displayName = \"ShareButton-\".concat(networkName);\n return forwardRef(CreatedButton);\n}\nexport default createShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction twitterLink(url, _a) {\n var title = _a.title, via = _a.via, _b = _a.hashtags, hashtags = _b === void 0 ? [] : _b, _c = _a.related, related = _c === void 0 ? [] : _c;\n assert(url, 'twitter.url');\n assert(Array.isArray(hashtags), 'twitter.hashtags is not an array');\n assert(Array.isArray(related), 'twitter.related is not an array');\n return ('https://twitter.com/share' +\n objectToGetParams({\n url: url,\n text: title,\n via: via,\n hashtags: hashtags.length > 0 ? hashtags.join(',') : undefined,\n related: related.length > 0 ? related.join(',') : undefined,\n }));\n}\nvar TwitterShareButton = createShareButton('twitter', twitterLink, function (props) { return ({\n hashtags: props.hashtags,\n title: props.title,\n via: props.via,\n related: props.related,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default TwitterShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction facebookLink(url, _a) {\n var quote = _a.quote, hashtag = _a.hashtag;\n assert(url, 'facebook.url');\n return ('https://www.facebook.com/sharer/sharer.php' +\n objectToGetParams({\n u: url,\n quote: quote,\n hashtag: hashtag,\n }));\n}\nvar FacebookShareButton = createShareButton('facebook', facebookLink, function (props) { return ({\n quote: props.quote,\n hashtag: props.hashtag,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default FacebookShareButton;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Share.module.sass\";\nimport Icon from \"../Icon\";\nimport { FacebookShareButton, TwitterShareButton } from \"react-share\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\n\nconst shareUrlFacebook = \"https://ui8.net\";\nconst shareUrlTwitter = \"https://ui8.net\";\n\nconst Share = ({ className, openUp, darkButton }) => {\n const [visible, setVisible] = useState(false);\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n <div\n className={cn(\n className,\n styles.share,\n { [styles.openUp]: openUp },\n { [styles.darkButton]: darkButton }\n )}\n >\n <button\n className={cn(\n \"button-circle-stroke button-small\",\n { [styles.active]: visible },\n styles.button\n )}\n onClick={() => setVisible(!visible)}\n >\n <Icon name=\"share\" size=\"24\" />\n </button>\n <div className={cn(styles.body, { [styles.show]: visible })}>\n <div className={styles.title}>Share link to this page</div>\n <div className={styles.list}>\n <TwitterShareButton className={styles.link} url={shareUrlTwitter}>\n <span>\n <Icon name=\"twitter\" size=\"20\" />\n </span>\n </TwitterShareButton>\n <FacebookShareButton className={styles.link} url={shareUrlFacebook}>\n <span>\n <Icon name=\"facebook\" size=\"20\" />\n </span>\n </FacebookShareButton>\n </div>\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\n\nexport default Share;\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"Favorite_button__fIIdk\",\"active\":\"Favorite_active__DsbVt\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Favorite.module.sass\";\nimport Icon from \"../Icon\";\n\nconst Favorite = ({ className }) => {\n const [visible, setVisible] = useState(false);\n return (\n <button\n className={cn(\n \"button-circle-stroke button-small\",\n styles.button,\n {\n [styles.active]: visible,\n },\n className\n )}\n onClick={() => setVisible(!visible)}\n >\n <Icon name=\"heart\" size=\"24\" />\n <Icon name=\"heart-fill\" size=\"24\" />\n </button>\n );\n};\n\nexport default Favorite;\n","import cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport Share from \"../../../components/Share\";\nimport Favorite from \"../../../components/Favorite\";\n\nconst Article = ({ blog }) => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h4>{blog ? blog.h1 : null}</h4>\n <p>{blog ? blog.P1 : null}</p>\n\n {blog && blog.h2 ? <h3> {blog.h2} </h3> : null}\n {blog && blog.P2 ? <p> {blog.P2}</p> : null}\n\n <figure>\n <img srcSet={`${blog?.imageBlog2TwoX} 2x`} src={blog?.imageBlog2} alt=\"Item\" />\n\n </figure>\n {blog && blog.h3 ? <h3> {blog.h3} </h3> : null}\n {blog && blog.P3 ? <p> {blog.P3}</p> : null}\n\n {blog && blog.h4 ? <h3> {blog.h4} </h3> : null}\n {blog && blog.P4 ? <p> {blog.P4}</p> : null}\n\n {blog && blog.h5 ? <h3> {blog.h5} </h3> : null}\n {blog && blog.P5 ? <p> {blog.P5}</p> : null}\n\n {blog && blog.h6 ? <h3> {blog.h6} </h3> : null}\n {blog && blog.P6 ? <p> {blog.P6}</p> : null}\n\n {blog && blog.h7 ? <h3> {blog.h7} </h3> : null}\n {blog && blog.P7 ? <p>{blog.P7}</p> : null}\n\n {blog && blog.h8 ? <h3> {blog.h8} </h3> : null}\n {blog && blog.P8 ? <p>{blog.P8}</p> : null}\n\n {blog && blog.h9 ? <h3> {blog.h9} </h3> : null}\n {blog && blog.P9 ? <p>{blog.P9}</p> : null}\n\n {blog && blog.h10 ? <h3> {blog.h10} </h3> : null}\n {blog && blog.P10 ? <p>{blog.P10}</p> : null}\n\n {blog && blog.h11 ? <h3> {blog.h11} </h3> : null}\n {blog && blog.P11 ? <p>{blog.P11}</p> : null}\n\n {blog && blog.h12 ? <h3> {blog.h12} </h3> : null}\n {blog && blog.P12 ? <p>{blog.P12}</p> : null}\n\n {blog && blog.h13 ? <h3> {blog.h13} </h3> : null}\n {blog && blog.P13 ? <p>{blog.P13}</p> : null}\n\n\n </div>\n <div className={styles.actions}>\n <Share openUp />\n <Favorite className={styles.favorite} />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"Catalog_list__lNKVe\",\"card\":\"Catalog_card__7jA9I\",\"btns\":\"Catalog_btns__HPenB\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Catalog.module.sass\";\n// import Icon from \"../../../components/Icon\";\n// import Dropdown from \"../../../components/Dropdown\";\nimport Card from \"../../../components/Card\";\n\n// data\n//import { articles } from \"../../../mocks/articles\";\n\nconst Catalog = ({articles}) => {\n return (\n <div className={cn(\"section\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {articles.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </div>\n {/* <div className={styles.btns}>\n <button className={cn(\"button-stroke button-small\", styles.button)}>\n <span>Learn more</span>\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n </div> */}\n </div>\n </div>\n );\n};\n\nexport default Catalog;\n","import React, { useEffect, useState } from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\nimport Catalog from \"./Catalog\";\nimport { articles } from \"../../mocks/articles\";\nimport { useParams } from \"react-router-dom\";\n\nconst LearnCrypto = () => {\n\n const { slug } = useParams();\n const [blog, setBlog] = useState(null);\n\n useEffect(() => {\n let result = articles.find((result) => result.slug === slug);\n if (result)\n setBlog(result);\n\n }, []);\n\n return (\n <>\n <Main blog={blog} />\n <Article blog={blog} />\n <Catalog articles={articles} />\n </>\n );\n};\n\nexport default LearnCrypto;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__9kUuv\",\"head\":\"Main_head__ZLfhS\",\"title\":\"Main_title__12SOc\",\"breadcrumbs\":\"Main_breadcrumbs__TMtLl\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"AML Policy\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Fraud prevention policy and Wwft\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/aml/main.jpg\"\n image2x=\"/images/content/aml/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__FEFWo\",\"content\":\"Article_content__Z6U2p\",\"actions\":\"Article_actions__UEVkQ\",\"favorite\":\"Article_favorite__ItsBH\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n <strong>Fraud prevention policy & Anti-Money Laundering and Counter-Terrorism Financing Act</strong>\n </p>\n <p>\n <strong>The Anti-Money Laundering Program (AML)</strong>\n </p>\n <h3>Article 1: General</h3>\n <p>\n <strong>1.</strong> Bitdenex follows the guidelines set for anti-money laundering (AML). <br />\n <strong>2.</strong> To trade Bitcoins, Ethereum, Litecoins and other coins, you are required to register and check all verification processes. The verification of a bank account is also included. <br />\n <strong>3.</strong> Bitdenex will report suspicious and / or fraudulent transactions according to the law Wwft. <br />\n <strong>4.</strong> We are actively monitoring transactions with fraud detection systems. <br />\n <strong>5.</strong> Criminal acts and economic offenses such as money laundering and unauthorized trading of digital coins are prohibited. <br />\n <strong>6.</strong> Any evidence of law violation is Bitdenex authorized to report to the authorities entitled thereto. <br />\n <strong>7.</strong> In case of suspicion of criminal or fraudulent acts, Bitdenex is entitled to block your Bitdenex account. This for the duration of the investigation of abuse. <br />\n <strong>8.</strong> Bitdenex is entitled to suspend existing transactions for the duration of the investigation. If the legitimacy of the user and / or transaction (s) cannot be determined, the right to outstanding credits will expire. <br />\n <strong>9.</strong> When Bitdenex is legally required to provide data, this will always be heard. <br />\n <strong>10.</strong> Bitdenex will not comply with any claim of user data by authorities on an illegal basis or when insufficiently substantiated and unfit for large amounts of data. <br />\n <strong>11.</strong> The judicial order of organizations entitled to it may be confiscated on your money and funds. <br />\n <strong>12.</strong> You authorize Bitdenex to do additional screening in addition to requesting the required documentation. This includes the retrieval of publicly available data as well as the consultation of non-public databases for identification and political data. <br />\n </p>\n\n <figure>\n <img srcSet=\"/images/content/aml/article.jpg\" src=\"/images/content/aml/article.jpg\" alt=\"Content\" />\n </figure>\n\n <h3>Article 2: Safety procedures and measures</h3>\n <p>\n <strong>2.1: Customer Acceptance Policy</strong><br />\n Bitdenex will at all times take care of measures and strict procedures to prevent money laundering and terrorist financing. For this reason, we have taken steps to identify you as a customer. Our verification processes have been adapted to these terms and conditions and all rules are respected. </p>\n <p>\n <strong>2.2: Transaction Monitoring</strong><br />\n All transactions are carefully monitored and kept. The purpose is to identify and prevent suspicious activities. Bitdenex offers no place to customers with wrong intentions. We act hard to detect fraudulent transactions, which could lead to closing your Bitdenex account. </p>\n <p>\n <strong>2.3: Complaint handling and handling incidents</strong><br />\n As a Bitdenex customer, you can file a complaint with Bitdenex Customer Service. If you wish, you can also file an anonymous complaint. Your information is well guaranteed. Incidents are recorded in a correct manner. </p>\n <p>\n <strong>2.4: Notification Unusual Transactions</strong><br />\n Exchanges for digital coins such as Bitcoins, Ethereums, Litecoins and other cryptocurrency are covered by the Anti-Money Laundering and Terrorist Financing Act. This law enumerates which traders and exchanges do fall under it. </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst AmlPolicy = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default AmlPolicy;\n","// extracted by mini-css-extract-plugin\nexport default {\"top\":\"SignIn_top__6yOSd\",\"title\":\"SignIn_title__PkJy2\",\"info\":\"SignIn_info__F-pyH\",\"correct\":\"SignIn_correct__2Vydk\"};","// extracted by mini-css-extract-plugin\nexport default {\"login\":\"Login_login__ZgdS8\",\"col\":\"Login_col__P48xW\",\"logo\":\"Login_logo__iydEn\",\"head\":\"Login_head__SS6xM\",\"link\":\"Login_link__0Ir6I\",\"wrap\":\"Login_wrap__Ehndz\"};","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport styles from \"./Login.module.sass\";\n\nconst Login = ({ className, content, linkText, linkUrl, children }) => {\n return (\n <div className={cn(className, styles.login)}>\n <div\n className={styles.col}\n style={{\n backgroundImage: \"url(/images/content/bg-login.png)\",\n }}\n >\n </div>\n <div className={styles.col}>\n <div className={styles.head}>\n <span>{content}</span>\n <Link className={styles.link} to={linkUrl}>\n {linkText}\n </Link>\n </div>\n <div className={styles.wrap}>{children}</div>\n </div>\n </div>\n );\n};\n\nexport default Login;\n","// extracted by mini-css-extract-plugin\nexport default {\"nav\":\"Form_nav__4xlOf\",\"link\":\"Form_link__ZJB93\",\"active\":\"Form_active__mKAyD\",\"container\":\"Form_container__IVOK2\",\"line\":\"Form_line__y0O5n\",\"field\":\"Form_field__rmKBW\",\"foot\":\"Form_foot__rXvFa\",\"scan\":\"Form_scan__wRFWQ\",\"button\":\"Form_button__A-Qu7\",\"danger\":\"Form_danger__XevXQ\",\"loader\":\"Form_loader__H3DNp\",\"top\":\"Form_top__HN5h9\",\"title\":\"Form_title__PJpBD\",\"info\":\"Form_info__XEOdK\",\"correct\":\"Form_correct__Af34g\"};","// extracted by mini-css-extract-plugin\nexport default {\"loader\":\"Loader_loader__IQiz-\",\"loaderWhite\":\"Loader_loaderWhite__b4QqZ\",\"loader-white\":\"Loader_loader-white__jqqz1\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Loader.module.sass\";\n\nconst Loader = ({ className, color }) => {\n return (\n <div\n className={cn(styles.loader, className, {\n [styles.loaderWhite]: color === \"white\",\n })}\n ></div>\n );\n};\n\nexport default Loader;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport styles from \"./Form.module.sass\";\nimport TextInput from \"../../../components/TextInput\";\nimport Loader from \"../../../components/Loader\";\nimport Icon from \"../../../components/Icon\";\n\nconst Form = ({\n onScan,\n email,\n setEmail,\n password,\n setPassword,\n captcha,\n setCaptcha,\n passwordType,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n togglePasswordHandler,\n captchaData,\n loading,\n loginHandler\n}) => {\n const base64data = btoa(unescape(encodeURIComponent(captchaData?.buffer)));\n\n return (\n <>\n <div className={styles.top}>\n <h3 className={cn(\"h4\", styles.title)}>Sign in to Bitdenex</h3>\n <div className={styles.info}>\n Please ensure you are visiting the correct url.\n </div>\n <div className={styles.correct}>\n <Icon name=\"lock\" size=\"24\" />\n <div className={styles.url}>\n https://<span>bitdenex.com/sign-in</span>\n </div>\n </div>\n </div>\n <form className={styles.form}>\n <div className={styles.container}>\n <TextInput\n className={styles.field}\n label=\"email\"\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(e) => { setEmail(e.target.value) }}\n placeholder=\"Please enter email address\"\n required\n />\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"email\", email, \"required\")}\n </span>\n <div className={styles.container}>\n <TextInput\n className={styles.field}\n label=\"Password\"\n name=\"password\"\n type={passwordType}\n value={password}\n onChange={(e) => { setPassword(e.target.value) }}\n placeholder=\"Please enter password\"\n required\n view\n togglePassword={togglePasswordHandler}\n />\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"password\", password, \"required|min:9\")}\n </span>\n {!loading ? <img className={styles.captcha} src={`data:image/svg+xml;base64,${base64data}`} alt=\"captcha\" /> : <Loader className={styles.loader} />}\n <div className={styles.container}>\n <TextInput\n className={styles.field}\n name=\"captcha\"\n type=\"text\"\n placeholder=\"Please enter captcha\"\n required\n value={captcha}\n onChange={(e) => { setCaptcha(e.target.value) }}\n />\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"captcha\", captcha, \"required\")}\n </span>\n <div className={styles.foot}>\n <button\n type=\"button\"\n className={styles.scan}\n onClick={(e) => {\n e.preventDefault();\n onScan();\n }}>\n Scan to login\n </button>\n <Link className={styles.link} to=\"/forgot-password\">\n Forgot password?\n </Link>\n </div>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n loginHandler(email, password, captcha, captchaData?.captchaId);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}>\n Login\n </button>\n </form>\n </>\n );\n};\n\nexport default Form;\n","// extracted by mini-css-extract-plugin\nexport default {\"box\":\"Scan_box__+HoSM\",\"details\":\"Scan_details__yoaAb\",\"code\":\"Scan_code__wmgWj\",\"button\":\"Scan_button__chB8d\",\"top\":\"Scan_top__M47Xr\",\"title\":\"Scan_title__vL0KZ\",\"info\":\"Scan_info__C0wpo\",\"correct\":\"Scan_correct__Eqr7A\",\"image\":\"Scan_image__6GvrE\",\"hideBarCode\":\"Scan_hideBarCode__Ab1vC\",\"textClass\":\"Scan_textClass__85g90\",\"linkText\":\"Scan_linkText__g3J7b\",\"expiredText\":\"Scan_expiredText__1hbFz\",\"boxContainer\":\"Scan_boxContainer__Zd+qp\",\"checkboxContainer\":\"Scan_checkboxContainer__fUGUI\"};","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"Checkbox_checkbox__VWgMt\",\"input\":\"Checkbox_input__QX96x\",\"inner\":\"Checkbox_inner__HHP-u\",\"tick\":\"Checkbox_tick__avD9P\",\"text\":\"Checkbox_text__MPGo0\",\"note\":\"Checkbox_note__T0B8E\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Checkbox.module.sass\";\n\nconst Checkbox = ({ className, content, note, value, onChange,disabled }) => {\n return (\n <label className={cn(styles.checkbox, className)}>\n <input\n className={styles.input}\n type=\"checkbox\"\n onChange={onChange}\n checked={value}\n disabled={disabled}\n />\n <span className={styles.inner}>\n <span className={styles.tick}></span>\n <span\n className={styles.text}\n dangerouslySetInnerHTML={{ __html: content }}\n ></span>\n {note && <span className={styles.note}>{note}</span>}\n </span>\n </label>\n );\n};\n\nexport default Checkbox;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Scan.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport Checkbox from \"../../../components/Checkbox\";\n\nconst Scan = ({\n setCount,\n showQrCode,\n setShowQrCode,\n setSessionId,\n getQrCodeHandler,\n qrCodeLogin,\n qrCodeData,\n goPrev,\n}) => {\n\n return (\n <div className={styles.login}>\n <div className={styles.top}>\n <h4 className={cn(\"h4\", styles.title)}>Sign in to Bitdenex</h4>\n <div className={styles.info}>\n Please ensure you are visiting the correct url.\n </div>\n <div className={styles.correct}>\n <Icon name=\"lock\" size=\"24\" />\n <div className={styles.url}>\n https://<span>bitdenex.com/sign-in</span>\n </div>\n </div>\n </div>\n <form className={styles.form} onSubmit={(e) => { e.preventDefault() }}>\n <div className={styles.checkboxContainer}>\n <Checkbox\n value={qrCodeLogin}\n content=\"Log in with Email\"\n onChange={() => {\n goPrev();\n setCount(0);\n }}\n />\n </div>\n <img className={showQrCode ? styles.image : styles.hideBarCode} src={qrCodeData} alt=\"icon\" />\n <div className={styles.boxContainer}>\n <div className={styles.textClass}>\n <strong>Step 1.</strong> Download the latest <a href=\"https://bitdenex.com/bitdenex-app\" target=\"_blank\" rel=\"noreferrer\" className={styles.linkText}>Bitdenex app</a>, or update the Bitdenex app with the latest version.\n </div>\n <div className={styles.textClass}>\n <strong>Step 2.</strong> Log in with your Bitdenex login credentials, scan this QR-code and confirm your login.\n </div>\n </div>\n\n {!showQrCode &&\n <>\n <div className={styles.expiredText}>QR code expired</div>\n <button className={cn(\"button-small\", styles.button)}\n onClick={() => {\n setShowQrCode(true);\n setSessionId(\"\");\n setCount(0);\n getQrCodeHandler();\n }}>Refresh QR code</button>\n </>}\n </form>\n </div>\n );\n};\n\nexport default Scan;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Code_title__I8pYD\",\"info\":\"Code_info__B059q\",\"code\":\"Code_code__wWviC\",\"number\":\"Code_number__l6V1A\",\"button\":\"Code_button__UnvP7\",\"danger\":\"Code_danger__HyTav\",\"resendOtpText\":\"Code_resendOtpText__VNstE\"};","import React, { useEffect, useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Code.module.sass\";\nimport { resendOtp } from \"../../../components/helper\";\n\nconst Code = ({\n email,\n securityCode,\n setSecurityCode,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n codeScreenHandler,\n}) => {\n const [timer, setTimer] = useState(30);\n const [isDisabled, setIsDisabled] = useState(true);\n\n useEffect(() => {\n let interval;\n\n if (timer > 0 && isDisabled) {\n interval = setInterval(() => {\n setTimer(prevTimer => prevTimer - 1);\n }, 1000);\n }\n else if (timer === 0) {\n setIsDisabled(false);\n clearInterval(interval);\n }\n\n return () => clearInterval(interval);\n }, [timer, isDisabled]);\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>Enter your security code</h3>\n <div className={styles.info}>We texted your code to {email}</div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n name=\"code\"\n type=\"text\"\n maxLength={6}\n value={securityCode}\n onChange={(e) => { setSecurityCode(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", securityCode, \"required|min:6\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n codeScreenHandler(securityCode);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n {timer >= 1 ? <div className={cn(\"h6\", styles.resendOtpText)}>Resend OTP in {timer} </div> : null}\n {(<button className={cn(\"button\", styles.button)}\n disabled={isDisabled}\n onClick={(e) => {\n e.preventDefault();\n resendOtp(email, 'sign_up');\n setTimer(30);\n setIsDisabled(true);\n }}>\n Resend OTP\n </button>)}\n </form>\n );\n};\n\nexport default Code;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Code_title__y6HcU\",\"info\":\"Code_info__vCkmV\",\"code\":\"Code_code__PSxiF\",\"number\":\"Code_number__zYnYR\",\"button\":\"Code_button__Rm1Ou\",\"danger\":\"Code_danger__osKrR\",\"resendOtpText\":\"Code_resendOtpText__yrsYz\",\"correct\":\"Code_correct__YrdvR\",\"infoText\":\"Code_infoText__+BJIy\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Code.module.sass\";\n\nconst Code = ({\n verifyBarcodeHandler,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n confirmationCode,\n setConfirmationCode,\n}) => {\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>Enter your 2FA code.</h3>\n <div className={styles.info}>\n Help us to secure your account. <br></br>Please complete the verifications below\n </div>\n <div className={styles.info}>\n Enter the six-digit code provided by the Google Authenticator.\n </div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n name=\"code\"\n type=\"text\"\n maxLength={6}\n value={confirmationCode}\n onChange={(e) => { setConfirmationCode(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", confirmationCode, \"required|min:6\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n verifyBarcodeHandler(confirmationCode);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n <div className={styles.infoText}>\n Unable to access your authentication code? <br></br>Please raise ticket at <span className={styles.correct}>support@bitdenex.com</span>\n </div>\n </form>\n );\n};\n\nexport default Code;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Code_title__2Lrq3\",\"info\":\"Code_info__E3XIW\",\"variants\":\"Code_variants__ThuUG\",\"radio\":\"Code_radio__iXoWm\",\"button\":\"Code_button__nbSrO\",\"code\":\"Code_code__YhtrT\",\"number\":\"Code_number__PK67g\",\"danger\":\"Code_danger__gt6Wj\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Code.module.sass\";\nimport Icon from \"../../../components/Icon\";\n\nconst Code = ({\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n signinData,\n verifyBarcodeHandler,\n barcodeSecurityCode,\n setBarcodeSecurityCode,\n}) => {\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h4\", styles.title)}>Enable the two factor authentication.</h3>\n <div className={styles.info}>\n Help us to secure your account.<br></br>In order to use 2FA, scan the QR code below into the Google Authenticator app on your phone, or enter the 16-digit key that appears under the QR code.\n </div>\n <div className={styles.info}>\n <img src={signinData?.data?.data?.[0]?.qr_code} alt=\"icon\" />\n </div>\n <div className={styles.info} >\n <h3 className={cn(\"h6\", styles.title)}> Secret key : {signinData?.data?.data?.[0]?.secret_key} <span title=\"Please save the secret key as it will be used to recover your 2FA in case of loss\"><Icon name=\"calendar\" size=\"24\" /></span></h3>\n </div>\n <div className={styles.info}>\n Please note down the secret key and enter the six-digit code provided by the Google Authenticator.\n </div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n name=\"code\"\n type=\"text\"\n maxLength={6}\n value={barcodeSecurityCode}\n onChange={(e) => { setBarcodeSecurityCode(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", barcodeSecurityCode, \"required|min:6\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n verifyBarcodeHandler(barcodeSecurityCode);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n </form>\n );\n};\n\nexport default Code;\n","// extracted by mini-css-extract-plugin\nexport default {\"customLogo\":\"Logo_customLogo__5mcWl\"};","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Logo.module.sass\";\nimport Image from \"../Image\";\nconst Logo = () => {\n return (\n <Link className={styles.customLogo} to=\"/\">\n <Image\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"Bitdenex\"\n />\n <Image\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"Bitdenex\"\n />\n </Link>\n );\n};\n\nexport default Logo;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./SignIn.module.sass\";\nimport Login from \"../../components/Login\";\nimport Form from \"./Form\";\nimport Scan from \"./Scan\";\nimport Code from \"./Code\";\nimport Confirm from \"./Confirm\";\nimport Barcode from \"./Barcode\";\nimport Logo from \"../../components/Logo\";\nimport SimpleReactValidator from \"simple-react-validator\";\nimport requestHandler from \"../../actions/httpClient\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport { addNotification } from \"../../components/Notification\";\nimport { io } from \"socket.io-client\";\n\nconst SignIn = () => {\n const [scan, setScan] = useState(false);\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [captcha, setCaptcha] = useState(\"\");\n const [passwordType, setPasswordType] = useState(\"password\");\n const [activeIndex, setActiveIndex] = useState(0);\n const simpleValidator = useRef(new SimpleReactValidator());\n const [forceUpdate, setForceUpdate] = useState();\n const [loading, setLoading] = useState(false);\n const [captchaData, setCaptchaData] = useState([]);\n const [securityCode, setSecurityCode] = useState(\"\");\n const [signinData, setSigninData] = useState([]);\n const [barcodeSecurityCode, setBarcodeSecurityCode] = useState(\"\");\n const [confirmationCode, setConfirmationCode] = useState(\"\");\n const [qrCodeData, setQrCodeData] = useState(\"\");\n const [sessionId, setSessionId] = useState(\"\");\n const [qrCodeLogin, setQrCodeLogin] = useState(false);\n const [showQrCode, setShowQrCode] = useState(true);\n const [count, setCount] = useState(0);\n\n // Function to toggle password visibility\n const togglePasswordHandler = (e) => {\n e.preventDefault();\n if (passwordType === \"password\") {\n setPasswordType(\"text\");\n return;\n };\n setPasswordType(\"password\");\n };\n\n const captchaHandler = useCallback(async () => {\n setLoading(true);\n const data = {\n theme: localStorage.getItem('darkMode')\n }\n try {\n const captchPayload = await requestHandler(\"createCaptcha\", 'post', data);\n setCaptchaData(captchPayload?.data)\n setLoading(false);\n }\n catch (e) {\n setLoading(false);\n };\n }, []);\n\n const getQrCodeHandler = useCallback(async () => {\n setLoading(true);\n try {\n const getQrCodePayload = await requestHandler(\"generateQRLogin\", \"post\");\n setLoading(false);\n setQrCodeData(getQrCodePayload?.data?.data?.qrCode);\n setSessionId(getQrCodePayload?.data?.data?.sessionId);\n }\n catch (e) {\n setLoading(false);\n };\n }, []);\n\n const loginHandler = async (email, password, captcha, cId) => {\n setLoading(true);\n let captchaData = {\n id: cId,\n code: captcha\n };\n try {\n const captchaPayload = await requestHandler(\"verifyCaptcha\", 'post', captchaData);\n if (captchaPayload?.status === 200) {\n let data = {\n email: email,\n password: password\n };\n const signinPayload = await requestHandler(\"login\", 'post', data);\n setSigninData(signinPayload);\n if (signinPayload?.status === 200) {\n setLoading(false);\n setActiveIndex(1);\n }\n else if (signinPayload?.status === 201) {\n setLoading(false);\n setActiveIndex(2);\n }\n else if (signinPayload?.status === 202) {\n setLoading(false);\n setActiveIndex(3);\n }\n }\n }\n catch (e) {\n setCaptcha(\"\");\n await captchaHandler();\n setLoading(false);\n addNotification({\n title: \"Error\",\n message: e?.data?.message?.[0]?.msg,\n type: \"danger\",\n });\n };\n };\n\n const verifyBarcodeHandler = async (code) => {\n setLoading(true);\n let data = {\n email: email,\n code: code,\n };\n try {\n const verifyBarcodePayload = await requestHandler(\"verifyLogin\", \"post\", data);\n setLoading(false);\n if ((verifyBarcodePayload.status === 200 && verifyBarcodePayload?.data?.data?.[0]?.role === process.env.REACT_APP_VALID_ROLE) ||\n (verifyBarcodePayload.status === 200 && verifyBarcodePayload?.data?.data?.[0]?.role === process.env.REACT_APP_CORPORATE_ROLE)) {\n if (verifyBarcodePayload?.data?.data?.[0]?.signature) {\n var signature = verifyBarcodePayload?.data?.data[0]?.signature;\n signature = signature.replace('+', '_');\n signature = signature.replace('/', '-');\n window.location.href = verifyBarcodePayload?.data?.data?.[0]?.url + '?sig=' + signature;\n }\n else {\n window.location.href = verifyBarcodePayload?.data?.data?.[0]?.url;\n }\n }\n else {\n addNotification({\n title: 'Error',\n message: `You dont't have valid access`,\n type: 'danger'\n });\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: 'Error',\n message: e.data.message[0].msg,\n type: 'danger'\n });\n };\n };\n\n const codeScreenHandler = async (code) => {\n setLoading(true);\n let data = {\n email_otp: code,\n email: email,\n type: signinData.data.message.type,\n };\n try {\n const codeScreenPayload = await requestHandler(\"verify_otp\", \"post\", data);\n setSigninData(codeScreenPayload);\n setLoading(false);\n if (codeScreenPayload?.status === 200) {\n setActiveIndex(1);\n }\n else if (codeScreenPayload?.status === 202) {\n setActiveIndex(3);\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: 'Error',\n message: e.data.message[0].msg,\n type: 'danger'\n });\n };\n };\n\n useEffect(() => {\n const socket = io(process.env.REACT_APP_SOCKET_URL, {\n autoConnect: false,\n transports: ['websocket']\n });\n setLoading(true);\n socket.connect();\n if (sessionId !== \"\") {\n setLoading(false);\n socket.on(\"connect\", () => {\n });\n\n socket.on('loginWebhook_' + sessionId, function (result) {\n if (result[0].signature) {\n var signature = result[0].signature;\n signature = signature.replace('+', '_');\n signature = signature.replace('/', '-');\n window.location.href = result[0].url + '?sig=' + signature;\n }\n });\n }\n\n return () => {\n socket.disconnect();\n }\n }, [sessionId]);\n\n useEffect(() => {\n if (scan) {\n const refreshInterval = setInterval(() => {\n setCount((prevCount) => prevCount + 1);\n }, 1000);\n\n if (count === 60) {\n clearInterval(refreshInterval);\n setShowQrCode(false);\n }\n return () => clearInterval(refreshInterval);\n }\n }, [count, scan]);\n\n useEffect(() => {\n if (scan) {\n getQrCodeHandler();\n }\n }, [getQrCodeHandler, scan]);\n\n useEffect(() => {\n captchaHandler();\n }, [captchaHandler]);\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Login\n content=\"Don’t have an account?\"\n linkText=\"Sign up for free\"\n linkUrl=\"/sign-up\"\n >\n <Logo />\n <div className={styles.login}>\n {scan ?\n <Scan\n showQrCode={showQrCode}\n getQrCodeHandler={getQrCodeHandler}\n setQrCodeLogin={setQrCodeLogin}\n setCount={setCount}\n setShowQrCode={setShowQrCode}\n setSessionId={setSessionId}\n qrCodeLogin={qrCodeLogin}\n qrCodeData={qrCodeData}\n goPrev={() => { setScan(false) }}\n count={count}\n scan={scan}\n />\n :\n activeIndex === 0 ?\n <Form\n onScan={() => setScan(true)}\n email={email}\n setEmail={setEmail}\n password={password}\n setPassword={setPassword}\n captcha={captcha}\n setCaptcha={setCaptcha}\n passwordType={passwordType}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n togglePasswordHandler={togglePasswordHandler}\n captchaData={captchaData}\n loading={loading}\n loginHandler={loginHandler}\n />\n :\n activeIndex === 1 ?\n <Barcode\n signinData={signinData}\n verifyBarcodeHandler={verifyBarcodeHandler}\n barcodeSecurityCode={barcodeSecurityCode}\n setBarcodeSecurityCode={setBarcodeSecurityCode}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n />\n :\n activeIndex === 2 ?\n <Code\n securityCode={securityCode}\n setSecurityCode={setSecurityCode}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n email={email}\n codeScreenHandler={codeScreenHandler}\n />\n :\n activeIndex === 3 ?\n <Confirm\n verifyBarcodeHandler={verifyBarcodeHandler}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n confirmationCode={confirmationCode}\n setConfirmationCode={setConfirmationCode}\n />\n :\n \"\"\n }\n </div>\n </Login>\n </>\n );\n};\n\nexport default SignIn;\n","// extracted by mini-css-extract-plugin\nexport default {\"top\":\"Form_top__gA9JR\",\"info\":\"Form_info__KY5Zr\",\"title\":\"Form_title__rwPYG\",\"btns\":\"Form_btns__QLg2F\",\"button\":\"Form_button__-JjI8\",\"field\":\"Form_field__xLD-0\",\"form\":\"Form_form__JcJeb\",\"correct\":\"Form_correct__+FeTI\",\"danger\":\"Form_danger__cfiA4\",\"loader\":\"Form_loader__YrqS6\"};","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"Dropdown_label__rRbqq\",\"dropdown\":\"Dropdown_dropdown__Abtmj\",\"active\":\"Dropdown_active__uRYnX\",\"head\":\"Dropdown_head__1tXoc\",\"arrow\":\"Dropdown_arrow__xYAV5\",\"body\":\"Dropdown_body__xeW6r\",\"selection\":\"Dropdown_selection__bJLGC\",\"option\":\"Dropdown_option__wTz1F\",\"selectioned\":\"Dropdown_selectioned__05gJv\",\"empty\":\"Dropdown_empty__x17eN\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport styles from \"./Dropdown.module.sass\";\nimport Icon from \"../Icon\";\nconst CustomDropdown = ({\n className,\n classLabel,\n value,\n setValue,\n text,\n setText,\n options,\n label,\n depositFlag,\n handleSepaClick,\n classDropdownHead,\n classDropdownArrow,\n classDropdownBody,\n classDropdownOption,\n}) => {\n const [visible, setVisible] = useState(false);\n\n const handleClick = (cId, cValue, cGatewayId) => {\n if (depositFlag) {\n handleSepaClick(cId, cValue, cGatewayId)\n }\n setText(cValue)\n setValue(cId);\n setVisible(false);\n };\n return (\n <OutsideClickHandler onOutsideClick={() => setVisible(false)}>\n {label && <div className={cn(classLabel, styles.label)}>{label}</div>}\n <div\n className={cn(styles.dropdown, className, {\n [styles.active]: visible,\n })}\n >\n <div\n className={cn(classDropdownHead, styles.head)}\n onClick={() => setVisible(!visible)}\n >\n <div className={styles.selection}>{text}</div>\n <div className={cn(styles.arrow, classDropdownArrow)}>\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n </div>\n <div className={cn(classDropdownBody, styles.body)}>\n {options?.map((x, index) => (\n <div\n className={cn(classDropdownOption, styles.option, {\n [styles.selectioned]: x.cId === value,\n })}\n onClick={() => {\n handleClick(x.cId, x.cValue, x.cGatewayId)\n }}\n key={index}\n >\n {x.cValue}\n </div>\n ))}\n </div>\n </div>\n </OutsideClickHandler>\n );\n};\nexport default CustomDropdown;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Form.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport Checkbox from \"../../../components/Checkbox\";\nimport TextInput from \"../../../components/TextInput\";\nimport CustomDropdown from \"../../../components/CustomDropdown\";\nimport { addNotification } from \"../../../components/Notification\";\nimport Loader from \"../../../components/Loader\";\n\nconst Form = ({\n email,\n setEmail,\n password,\n setPassword,\n regionText,\n setRegionText,\n regionValue,\n setRegionValue,\n captcha,\n setCaptcha,\n referralCode,\n setReferralCode,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n policy,\n setPolicy,\n regionData,\n captchaData,\n isEmailValid,\n setIsEmailValid,\n togglePasswordHandler,\n passwordType,\n confirmCaptchaHandler,\n loading\n}) => {\n const base64data = btoa(unescape(encodeURIComponent(captchaData?.buffer)));\n\n return (\n <form className={styles.form}>\n <div className={styles.top}>\n <h3 className={cn(\"h4\", styles.title)}>Sign up</h3>\n <div className={styles.info}>Please ensure you are visiting the correct url.</div>\n <div className={styles.correct}>\n <Icon name=\"lock\" size=\"24\" />\n <div className={styles.url}>\n https://<span>bitdenex.com/sign-up</span>\n </div>\n </div>\n </div>\n <div className={styles.fieldset}>\n <TextInput\n className={styles.field}\n label=\"email address\"\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(e) => { setEmail(e.target.value) }}\n placeholder=\"Please enter email address\"\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"email\");\n const newArr = process.env.REACT_APP_DISPOSABLE_EMAIL?.split(\",\");\n for (let index = 0; index < newArr.length; index++) {\n if (email?.split(\"@\")[1]?.split(\".\")[0] === newArr[index]) {\n addNotification({\n title: 'Alert',\n message: \"Disposable email is not allowed.\",\n type: 'danger'\n });\n setIsEmailValid(false);\n break;\n }\n else {\n setIsEmailValid(true);\n }\n }\n }}\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"email\", email, \"required\")}\n </span>\n <TextInput\n className={styles.field}\n label=\"Password\"\n name=\"password\"\n type={passwordType}\n value={password}\n onChange={(e) => { setPassword(e.target.value) }}\n placeholder=\"Please enter password\"\n view\n togglePassword={togglePasswordHandler}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"password\");\n }}\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"password\", password, \"required|min:9\")}\n </span>\n <CustomDropdown\n className={styles.field}\n label=\"Select Region\"\n value={regionValue}\n setValue={setRegionValue}\n text={regionText}\n setText={setRegionText}\n options={regionData}\n />\n {!loading ? <img className={styles.captcha} src={`data:image/svg+xml;base64,${base64data}`} alt=\"captcha\" /> : <Loader className={styles.loader} />}\n <TextInput\n className={styles.field}\n name=\"captcha\"\n type=\"text\"\n value={captcha}\n onChange={(e) => { setCaptcha(e.target.value) }}\n placeholder=\"Please enter captcha\"\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"captcha\");\n }}\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"captcha\", captcha, \"required\")}\n </span>\n <TextInput\n className={styles.field}\n label=\"referral code(optional)\"\n name=\"referral\"\n type=\"text\"\n value={referralCode}\n onChange={(e) => { setReferralCode(e.target.value) }}\n placeholder=\"Please enter referral\"\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"referral\");\n }}\n />\n <Checkbox\n className={styles.field}\n value={policy}\n onChange={() => {\n setPolicy(!policy);\n simpleValidator.current.showMessageFor(\"policy\");\n }}\n content=\"<span>I agree that I’m 18+ years old, and accept the <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer'>Terms & Conditions</a>, <a href='/privacy-policy' target='_blank' rel='noopener noreferrer'>Privacy Policy</a>, <a href='/kyc-policy' target='_blank' rel='noopener noreferrer'>KYC Policy</a>.<span>\"\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"policy\", policy, \"accepted\")}\n </span>\n </div>\n <button\n className={cn(\"button\", styles.button)}\n disabled={!isEmailValid}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n if (regionText?.toLowerCase() !== \"select region\") {\n confirmCaptchaHandler(email, password, regionValue, captcha, referralCode, captchaData?.captchaId, policy);\n }\n else {\n addNotification({\n title: \"Alert\",\n message: \"Please select region\",\n type: \"danger\"\n });\n }\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Sign up\n </button>\n </form>\n );\n};\n\nexport default Form;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Confirm_title__XJKlu\",\"info\":\"Confirm_info__E1IVg\",\"variants\":\"Confirm_variants__z-atF\",\"radio\":\"Confirm_radio__U+kcn\",\"button\":\"Confirm_button__QJUSb\"};","// extracted by mini-css-extract-plugin\nexport default {\"radio\":\"Radio_radio__0Mfds\",\"input\":\"Radio_input__kodpZ\",\"inner\":\"Radio_inner__PDVOz\",\"tick\":\"Radio_tick__zdeCm\",\"text\":\"Radio_text__q1UkF\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Radio.module.sass\";\n\nconst Radio = ({ className, content, name, value, onChange, disabled }) => {\n return (\n <label className={cn(styles.radio, className)}>\n <input\n className={styles.input}\n type=\"radio\"\n name={name}\n onChange={onChange}\n checked={value}\n disabled={disabled}\n />\n <span className={styles.inner}>\n <span className={styles.tick}></span>\n <span\n className={styles.text}\n dangerouslySetInnerHTML={{ __html: content }}\n ></span>\n </span>\n </label>\n );\n};\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Confirm.module.sass\";\nimport Radio from \"../../../components/Radio\";\nimport Icon from \"../../../components/Icon\";\n\nconst Confirm = ({\n email,\n goBack,\n signupHandler\n}) => {\n const [confirm, setConfirm] = useState(true);\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>Let’s confirm it’s really you</h3>\n <div className={styles.info}>\n Help us secure your account. <br></br>Please complete the verifications\n below\n </div>\n <div className={styles.variants}>\n <Radio\n className={styles.radio}\n name=\"confirm\"\n value={confirm}\n onChange={() => setConfirm(true)}\n content={`<span>Get the code by email at <strong>${email}</strong></span>`}\n />\n </div>\n <button\n className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n signupHandler();\n }}\n >\n <span>Continue</span>\n <Icon name=\"arrow-right\" size=\"16\" />\n </button>\n <button className={cn(\"button\", styles.button)} onClick={goBack}>\n <Icon name=\"arrow-left\" size=\"16\" />\n <span>Back</span>\n </button>\n </form>\n );\n};\n\nexport default Confirm;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Code_title__EJ7b6\",\"info\":\"Code_info__IDV-B\",\"code\":\"Code_code__CshBX\",\"number\":\"Code_number__-PhJs\",\"button\":\"Code_button__1xqc5\",\"danger\":\"Code_danger__tMwUy\",\"resendOtpText\":\"Code_resendOtpText__PNsX9\"};","import React, { useEffect, useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Code.module.sass\";\nimport { resendOtp } from \"../../../components/helper\";\n\nconst Code = ({\n email,\n securityCode,\n setSecurityCode,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n codeScreenHandler\n}) => {\n const [timer, setTimer] = useState(30);\n const [isDisabled, setIsDisabled] = useState(true);\n\n useEffect(() => {\n let interval;\n\n if (timer > 0 && isDisabled) {\n interval = setInterval(() => {\n setTimer(prevTimer => prevTimer - 1);\n }, 1000);\n }\n else if (timer === 0) {\n setIsDisabled(false);\n clearInterval(interval);\n }\n\n return () => clearInterval(interval);\n }, [timer, isDisabled]);\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>Enter your security code</h3>\n <div className={styles.info}>We texted your code to {email}</div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n name=\"code\"\n type=\"text\"\n maxLength={6}\n value={securityCode}\n onChange={(e) => { setSecurityCode(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", securityCode, \"required|min:6\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n codeScreenHandler(securityCode);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n {timer >= 1 ? <div className={cn(\"h6\", styles.resendOtpText)}>Resend OTP in {timer} </div> : null}\n {(<button className={cn(\"button\", styles.button)}\n disabled={isDisabled}\n onClick={(e) => {\n e.preventDefault();\n resendOtp(email, 'sign_up');\n setTimer(30);\n setIsDisabled(true);\n }}>\n Resend OTP\n </button>)}\n </form>\n );\n};\n\nexport default Code;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Code_title__zImm2\",\"info\":\"Code_info__2SBij\",\"variants\":\"Code_variants__rERxh\",\"radio\":\"Code_radio__p0eAX\",\"button\":\"Code_button__mRn3c\",\"code\":\"Code_code__UNlb1\",\"number\":\"Code_number__L5Ie-\",\"danger\":\"Code_danger__bkMkD\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Code.module.sass\";\n\nconst Code = ({\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n authenticator,\n setAuthenticator,\n barcodeScreenHandler,\n codeSuccessData\n}) => {\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h4\", styles.title)}>Enable the two factor authentication.</h3>\n <div className={styles.info}>\n Secure your account using 2FA.<br></br>In order to use 2FA, scan the QR code below into the Google Authenticator app on your phone, or enter the 16-digit key that appears under the QR code.\n </div>\n <div className={styles.info}>\n <img src={codeSuccessData?.data?.data?.[0]?.qr_code} alt=\"qrcode\" />\n </div>\n <div className={styles.info}>\n <h3 className={cn(\"h6\", styles.title)}> Secret key : {codeSuccessData?.data?.data?.[0]?.secret_key}</h3>\n </div>\n <div className={styles.info}>\n Please note down the secret key and enter the six-digit code provided by the Google Authenticator.\n </div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n name=\"code\"\n type=\"text\"\n maxLength={6}\n value={authenticator}\n onChange={(e) => { setAuthenticator(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", authenticator, \"required|min:6\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n barcodeScreenHandler(authenticator);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n </form>\n );\n};\n\nexport default Code;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport Login from \"../../components/Login\";\nimport Form from \"./Form\";\nimport Confirm from \"./Confirm\";\nimport Code from \"./Code\";\nimport Barcode from \"./Barcode\";\nimport Logo from \"../../components/Logo\";\nimport SimpleReactValidator from \"simple-react-validator\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport requestHandler from \"../../actions/httpClient\";\nimport { addNotification } from \"../../components/Notification\";\nimport { useLocation } from \"react-router\";\n\nconst SignUp = () => {\n const [activeIndex, setActiveIndex] = useState(0);\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [regionText, setRegionText] = useState(\"Select Region\");\n const [regionValue, setRegionValue] = useState(\"\");\n const [captcha, setCaptcha] = useState(\"\");\n const [referralCode, setReferralCode] = useState(window.location.href.split(\"ref=\")[1]);\n const simpleValidator = useRef(new SimpleReactValidator());\n const [forceUpdate, setForceUpdate] = useState();\n const [policy, setPolicy] = useState(false);\n const [loading, setLoading] = useState(false);\n const [regionData, setRegionData] = useState([]);\n const [captchaData, setCaptchaData] = useState();\n const [isEmailValid, setIsEmailValid] = useState(true);\n const [signupToken, setSignupToken] = useState([]);\n const [passwordType, setPasswordType] = useState(\"password\");\n const [securityCode, setSecurityCode] = useState(\"\");\n const [authenticator, setAuthenticator] = useState(\"\");\n const [userData, setUserData] = useState({});\n const [signupData, setSigupData] = useState([]);\n const [codeSuccessData, setCodeSuccessData] = useState([]);\n const location = useLocation();\n\n // Code to receive the email entered by the user on the home page\n useEffect(() => {\n const queryParams = new URLSearchParams(location.search);\n const emailParam = queryParams.get('username');\n if (emailParam) {\n setEmail(emailParam);\n const disposableDomains = process.env.REACT_APP_DISPOSABLE_EMAIL?.split(\",\");\n let isValid = true;\n const emailDomain = emailParam?.split(\"@\")[1]?.split(\".\")[0];\n for (let i = 0; i < disposableDomains?.length; i++) {\n if (emailDomain === disposableDomains?.[i]?.trim()) {\n addNotification({\n title: 'Alert',\n message: \"Disposable email is not allowed.\",\n type: 'danger'\n });\n setIsEmailValid(false);\n isValid = false;\n break;\n }\n }\n if (isValid) {\n setIsEmailValid(true);\n }\n }\n else {\n setEmail('');\n setIsEmailValid(true);\n }\n }, [location.search]);\n\n // Function to toggle password visibility\n const togglePasswordHandler = (e) => {\n e.preventDefault();\n if (passwordType === \"password\") {\n setPasswordType(\"text\");\n return;\n };\n setPasswordType(\"password\");\n };\n\n // Function to fetch region data\n const getRegionDataHandler = useCallback(async () => {\n setLoading(true);\n try {\n const regionPayload = await requestHandler(\"region\", \"post\");\n setLoading(false);\n let regionData = regionPayload?.data?.data?.map((x) => {\n return { \"cId\": x.id, \"cValue\": x.name }\n });\n setRegionData([...regionData]);\n }\n catch (e) {\n setLoading(false);\n }\n }, []);\n\n // Function to fetch captcha\n const captchaHandler = useCallback(async () => {\n setLoading(true);\n const data = {\n theme: localStorage.getItem('darkMode')\n }\n try {\n const captchPayload = await requestHandler(\"createCaptcha\", 'post', data);\n setCaptchaData(captchPayload?.data)\n setLoading(false);\n }\n catch (e) {\n setLoading(false);\n };\n }, []);\n\n // Function to retrieve signup token\n const getSignupTokenHandler = useCallback(async () => {\n setLoading(true);\n try {\n const signupTokenPayload = await requestHandler(\"signuptoken\");\n setLoading(false);\n setSignupToken(signupTokenPayload?.data?.data);\n }\n catch (e) {\n setLoading(false);\n };\n }, []);\n\n // Function to validate captcha\n const confirmCaptchaHandler = async (email, password, regionValue, captcha, referralCode, captchaId, policy) => {\n setLoading(true);\n let data = {\n id: captchaId,\n code: captcha\n };\n const userData = {};\n userData.policy = policy;\n userData.email = email;\n userData.password = password;\n userData.ciphertext = `${signupToken.value}${signupToken.id}`;\n userData.id = signupToken.id;\n userData.region = regionValue;\n userData.refferal_code = referralCode;\n setUserData(userData);\n try {\n const confirmCaptchaPayload = await requestHandler(\"verifyCaptcha\", \"post\", data,);\n setLoading(false);\n if (confirmCaptchaPayload?.status === 200 && isEmailValid) {\n setActiveIndex(1);\n setCaptcha(\"\");\n await captchaHandler();\n }\n else {\n addNotification({\n title: 'Alert',\n message: \"Disposable email is not allowed.\",\n type: 'danger'\n });\n setCaptcha(\"\");\n await captchaHandler();\n }\n }\n catch (e) {\n addNotification({\n title: 'Error',\n message: e.data.message[0].msg,\n type: 'danger'\n });\n setLoading(false);\n setCaptcha(\"\");\n await captchaHandler();\n };\n };\n\n // Function to validate signup process\n const signupHandler = async () => {\n setLoading(true);\n try {\n const signupPayload = await requestHandler(\"signup\", \"post\", userData);\n setLoading(false);\n setSigupData(signupPayload);\n if (signupPayload?.status === 201) {\n setActiveIndex(2);\n }\n }\n catch (e) {\n addNotification({\n title: 'Error',\n message: e.data.message[0].msg,\n type: 'danger'\n });\n setLoading(false);\n };\n };\n\n // Function to validate code entry process\n const codeScreenHandler = async (code) => {\n setLoading(true);\n let data = {\n email_otp: code,\n email: userData.email,\n type: signupData.data.message.type,\n refferal_code: signupData.data.message.data.refferal_code,\n };\n try {\n const codeScreenPayload = await requestHandler(\"verify_otp\", \"post\", data);\n setCodeSuccessData(codeScreenPayload);\n setLoading(false);\n if (codeScreenPayload.status === 200) {\n setActiveIndex(3);\n }\n else {\n addNotification({\n title: \"Error\",\n message: \"Something went wrong, please try again.\",\n type: \"danger\"\n });\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: \"Error\",\n message: e.data.message[0].msg,\n type: \"danger\"\n });\n };\n };\n\n // Function to validate barcode scanning process\n const barcodeScreenHandler = async (code) => {\n setLoading(true);\n let data = {\n email: userData.email,\n code: code,\n };\n try {\n const barcodeScreenPayload = await requestHandler(\"verifyLogin\", \"post\", data);\n setLoading(false);\n if (barcodeScreenPayload.status === 200) {\n if (barcodeScreenPayload.data.data?.[0]?.signature) {\n var signature = barcodeScreenPayload?.data?.data?.[0]?.signature;\n signature = signature.replace('+', '_');\n signature = signature.replace('/', '-');\n window.location.href = barcodeScreenPayload?.data?.data?.[0]?.url + '?sig=' + signature;\n }\n else {\n window.location.href = barcodeScreenPayload?.data?.data?.[0]?.url;\n }\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: 'Error',\n message: e.data.message[0].msg,\n type: 'danger'\n });\n };\n };\n\n // Code to invoke the region function\n useEffect(() => {\n getRegionDataHandler();\n }, [getRegionDataHandler]);\n\n // Code to invoke the captcha function\n useEffect(() => {\n captchaHandler();\n }, [captchaHandler]);\n\n // Code to invoke the signup token function\n useEffect(() => {\n getSignupTokenHandler();\n }, [getSignupTokenHandler]);\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Login\n content=\"Already have an account?\"\n linkText=\"Login\"\n linkUrl=\"/sign-in\"\n >\n <Logo />\n {activeIndex === 0 && <Form\n email={email}\n setEmail={setEmail}\n password={password}\n setPassword={setPassword}\n regionText={regionText}\n setRegionText={setRegionText}\n regionValue={regionValue}\n setRegionValue={setRegionValue}\n captcha={captcha}\n setCaptcha={setCaptcha}\n referralCode={referralCode}\n setReferralCode={setReferralCode}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n policy={policy}\n setPolicy={setPolicy}\n regionData={regionData}\n captchaData={captchaData}\n isEmailValid={isEmailValid}\n setIsEmailValid={setIsEmailValid}\n togglePasswordHandler={togglePasswordHandler}\n passwordType={passwordType}\n confirmCaptchaHandler={confirmCaptchaHandler}\n loading={loading}\n />}\n {activeIndex === 1 &&\n <Confirm\n goBack={() => {\n setActiveIndex(0);\n setCaptcha(\"\");\n }}\n email={email}\n signupHandler={signupHandler}\n />\n }\n {activeIndex === 2 &&\n <Code\n email={email}\n setSecurityCode={setSecurityCode}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n securityCode={securityCode}\n codeScreenHandler={codeScreenHandler}\n />\n }\n {activeIndex === 3 &&\n <Barcode\n email={email}\n setSecurityCode={setSecurityCode}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n authenticator={authenticator}\n setAuthenticator={setAuthenticator}\n barcodeScreenHandler={barcodeScreenHandler}\n codeSuccessData={codeSuccessData}\n />\n }\n </Login>\n </>\n );\n};\n\nexport default SignUp;\n","// extracted by mini-css-extract-plugin\nexport default {\"top\":\"Form_top__bRNXE\",\"title\":\"Form_title__NtaJz\",\"info\":\"Form_info__wuJ8Q\",\"button\":\"Form_button__+3INS\",\"foot\":\"Form_foot__1UzEm\",\"link\":\"Form_link__8TdO7\",\"danger\":\"Form_danger__AasOw\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Form.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport TextInput from \"../../../components/TextInput\";\n\nconst Form = ({\n email,\n setEmail,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n genOtpHandler\n}) => {\n return (\n <form className={styles.form}>\n <div className={styles.top}>\n <h3 className={cn(\"h3\", styles.title)}>Forgot password</h3>\n <div className={styles.info}>\n For security purposes, no withdrawals are permitted for 24 hours after\n password changed.\n </div>\n </div>\n <div className={styles.fieldset}>\n <TextInput\n className={styles.field}\n label=\"Enter the account email\"\n name=\"email\"\n type=\"email\"\n placeholder=\"Your email\"\n icon=\"email\"\n required\n value={email}\n onChange={(e) => { setEmail(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"email\");\n }}\n />\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"email\", email, \"required\")}\n </span>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n genOtpHandler(email);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n <div className={styles.foot}>\n <Link className={styles.link} to=\"/sign-in\">\n Nevermind, I got it\n </Link>\n </div>\n </form>\n );\n};\n\nexport default Form;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Verification_title__dWYSI\",\"info\":\"Verification_info__WRPQz\",\"text\":\"Verification_text__Aq58j\",\"code\":\"Verification_code__6EEXm\",\"number\":\"Verification_number__nVKIV\",\"button\":\"Verification_button__8j8vJ\",\"resendOtpText\":\"Verification_resendOtpText__DGNky\",\"danger\":\"Verification_danger__lt2Uk\"};","import React, { useEffect, useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Verification.module.sass\";\n\nconst Verification = ({\n email,\n genOtpHandler,\n securityCode,\n setSecurityCode,\n codeScreenHandler,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n}) => {\n const [timer, setTimer] = useState(30);\n const [isDisabled, setIsDisabled] = useState(true);\n\n useEffect(() => {\n let interval;\n\n if (timer > 0 && isDisabled) {\n interval = setInterval(() => {\n setTimer(prevTimer => prevTimer - 1);\n }, 1000);\n }\n else if (timer === 0) {\n setIsDisabled(false);\n clearInterval(interval);\n }\n\n return () => clearInterval(interval);\n }, [timer, isDisabled]);\n\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>Security verification</h3>\n <div className={styles.info}>\n To change your password, please complete the following verification.\n </div>\n <div className={styles.text}>\n Enter the 6 digit code received by <span>{email}</span>\n </div>\n <div className={styles.code}>\n <div className={styles.number}>\n <input\n type=\"text\"\n maxLength={6}\n name=\"code\"\n value={securityCode}\n onChange={(e) => { setSecurityCode(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"code\");\n }}\n />\n </div>\n </div>\n <span className={styles.danger}>\n {simpleValidator.current.message(\"code\", securityCode, \"required|min:6\")}\n </span>\n <div className={styles.btns}>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n codeScreenHandler(securityCode);\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >\n Continue\n </button>\n </div>\n {timer >= 1 ? <div className={cn(\"h6\", styles.resendOtpText)}>Resend OTP in {timer} </div> : null}\n {(<button className={cn(\"button\", styles.button)}\n disabled={isDisabled}\n onClick={(e) => {\n e.preventDefault();\n genOtpHandler(email);\n setTimer(30);\n setIsDisabled(true);\n }}>\n Resend OTP\n </button>)}\n </form>\n );\n};\n\nexport default Verification;\n","// extracted by mini-css-extract-plugin\nexport default {\"top\":\"NewPassword_top__yyHTU\",\"info\":\"NewPassword_info__Nv8h0\",\"title\":\"NewPassword_title__mdJZB\",\"btns\":\"NewPassword_btns__5i62t\",\"button\":\"NewPassword_button__tHjfk\",\"field\":\"NewPassword_field__wM6gx\",\"form\":\"NewPassword_form__CvjqL\",\"danger\":\"NewPassword_danger__GWdtS\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./NewPassword.module.sass\";\nimport TextInput from \"../../../components/TextInput\";\n\nconst NewPassword = ({\n password,\n confirmPassword,\n setPassword,\n setConfirmPassword,\n simpleValidator,\n forceUpdate,\n setForceUpdate,\n togglePasswordHandler,\n passwordType,\n resetPasswordHandler,\n email\n}) => {\n return (\n <form className={styles.form}>\n <h3 className={cn(\"h3\", styles.title)}>New password</h3>\n <div className={styles.fieldset}>\n <TextInput\n className={styles.field}\n label=\"new password\"\n name=\"password\"\n type={passwordType}\n placeholder=\"Password\"\n view\n togglePassword={togglePasswordHandler}\n value={password}\n onChange={(e) => { setPassword(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"password\");\n }}\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"password\", password, \"required|min:9\")}\n </span>\n <TextInput\n className={styles.field}\n label=\"confirm password\"\n name=\"confirm-password\"\n type=\"password\"\n placeholder=\"Password\"\n value={confirmPassword}\n onChange={(e) => { setConfirmPassword(e.target.value) }}\n onBlur={() => {\n simpleValidator.current.showMessageFor(\"confirm-password\");\n }}\n />\n <span className={styles.danger}>\n {simpleValidator.current.message(\"confirm password\", confirmPassword, `required|in:${password}`)}\n </span>\n </div>\n <button className={cn(\"button\", styles.button)}\n onClick={(e) => {\n e.preventDefault();\n if (simpleValidator.current.allValid()) {\n resetPasswordHandler(email, password, confirmPassword)\n }\n else {\n simpleValidator.current.showMessages();\n setForceUpdate(forceUpdate + 1);\n }\n }}\n >Continue</button>\n </form>\n );\n};\n\nexport default NewPassword;\n","import React, { useRef, useState } from \"react\";\nimport Login from \"../../components/Login\";\nimport Form from \"./Form\";\nimport Verification from \"./Verification\";\nimport NewPassword from \"./NewPassword\";\nimport Logo from \"../../components/Logo\";\nimport SimpleReactValidator from \"simple-react-validator\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport requestHandler from \"../../actions/httpClient\";\nimport { addNotification } from \"../../components/Notification\";\nimport { useNavigate } from \"react-router\";\n\nconst ForgotPassword = () => {\n const [acitveIndex, setAcitveIndex] = useState(0);\n const [email, setEmail] = useState(\"\");\n const simpleValidator = useRef(new SimpleReactValidator({\n messages: {\n in: \"New Password and Confirm password should be same!\",\n }\n }));\n const [forceUpdate, setForceUpdate] = useState();\n const [loading, setLoading] = useState(false);\n const [securityCode, setSecurityCode] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [passwordType, setPasswordType] = useState(\"password\");\n const [otp, setOtp] = useState(\"\");\n const navigate = useNavigate();\n\n // Function to generate the OTP\n const genOtpHandler = async (email) => {\n setLoading(true);\n let data = {\n email: email,\n type: \"reset_password\",\n role: \"customer\",\n };\n try {\n const genOtpPayload = await requestHandler(\"gen_otp\", \"post\", data);\n setLoading(false);\n if (genOtpPayload?.status === 201) {\n addNotification({\n title: \"Success\",\n message: \"Otp has been sent.\",\n type: \"sucess\"\n });\n setAcitveIndex(1);\n }\n }\n catch (e) {\n addNotification({\n title: \"Error\",\n message: \"Something went wrong, please try again later.\",\n type: \"danger\",\n });\n setLoading(false);\n };\n };\n\n // Function to send the verification code\n const codeScreenHandler = async (code) => {\n setOtp(code);\n setLoading(true);\n let data = {\n email_otp: code,\n type: \"reset_password\",\n email: email,\n };\n try {\n const codeScreenPayload = await requestHandler(\"verify_otp\", \"post\", data);\n setLoading(false);\n if (codeScreenPayload?.status === 200) {\n setAcitveIndex(2);\n }\n else {\n addNotification({\n title: \"Error\",\n message: \"Something went wrong, please try again later.\",\n type: \"danger\",\n });\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: 'Error',\n message: e?.data?.message[0]?.msg,\n type: 'danger'\n });\n };\n };\n\n // Function to reset the password\n const resetPasswordHandler = async (email, password, confirmPassword) => {\n setLoading(true);\n let data = {\n email: email,\n password: password,\n c_password: confirmPassword,\n email_otp: otp\n };\n try {\n const resetPasswordPayload = await requestHandler(\"reset_password\", \"post\", data);\n setLoading(false);\n if (resetPasswordPayload?.status === 200) {\n addNotification({\n title: 'Success',\n message: resetPasswordPayload?.data?.message[0]?.msg,\n type: 'success'\n });\n navigate(\"/sign-in\");\n }\n else {\n addNotification({\n title: 'Error',\n message: \"Something went wrong, please try again later.\",\n type: 'danger'\n });\n }\n }\n catch (e) {\n setLoading(false);\n addNotification({\n title: 'Error',\n message: e?.data?.message[0]?.msg,\n type: 'danger'\n });\n };\n };\n\n // Function to toggle password visibility\n const togglePasswordHandler = (e) => {\n e.preventDefault();\n if (passwordType === \"password\") {\n setPasswordType(\"text\");\n return;\n };\n setPasswordType(\"password\");\n };\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Login\n content=\"Don’t have an account?\"\n linkText=\"Sign up for free\"\n linkUrl=\"/sign-up\"\n >\n <Logo />\n {acitveIndex === 0 &&\n <Form\n email={email}\n setEmail={setEmail}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n genOtpHandler={genOtpHandler}\n />\n }\n {acitveIndex === 1 && (\n <Verification\n email={email}\n genOtpHandler={genOtpHandler}\n securityCode={securityCode}\n setSecurityCode={setSecurityCode}\n codeScreenHandler={codeScreenHandler}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n />\n )}\n {acitveIndex === 2 &&\n <NewPassword\n password={password}\n confirmPassword={confirmPassword}\n setPassword={setPassword}\n setConfirmPassword={setConfirmPassword}\n simpleValidator={simpleValidator}\n forceUpdate={forceUpdate}\n setForceUpdate={setForceUpdate}\n togglePasswordHandler={togglePasswordHandler}\n passwordType={passwordType}\n resetPasswordHandler={resetPasswordHandler}\n email={email}\n />\n }\n </Login>\n </>\n );\n};\n\nexport default ForgotPassword;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__vBBtV\",\"head\":\"Main_head__a7ZUt\",\"title\":\"Main_title__tK5Cg\",\"breadcrumbs\":\"Main_breadcrumbs__4fJmD\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Terms & Conditions\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Terms and Conditions\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/terms/main.jpg\"\n image2x=\"/images/content/terms/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__gG30H\",\"content\":\"Article_content__aSNKK\",\"actions\":\"Article_actions__hNQDM\",\"favorite\":\"Article_favorite__vppth\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nimport PDF from \"./Documents/GL_Bitdenex_Term_of_Service.pdf\"\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h3>Terms of Service</h3>\n <p>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\">Complete Terms of Service can be downloaded and viewed here</a>\n </p>\n <p>\n The following is a summary of some of our important restrictions.\n </p>\n <p>\n Bitdenex.com is a website which provides an overview of the trading options and trading platform of Bitdenex per region. Each region applies its own local applicable law and regulations to the local traders, which shall comply with the applicable law. </p>\n <p>\n Bitdenex does not onboard or provide services to corporate accounts of entities located in, established in, or a resident of the United States of America, Cuba, Crimea and Sevastopol, Iran, Afghanistan, Syria, Ukraine, Russia or North Korea. Bitdenex also does not onboard any users from Ontario, or non- professional investors from Hong Kong. Our primary jurisdiction is Europe, the European Union. </p>\n <p>\n Bitdenex does not onboard or provide services to personal accounts of current residents of the United States of America, Cuba, Crimea and Sevastopol, Iran, Afghanistan, Syria, Ukraine, Russia, North Korea or future embargoed countries referring to the international applicable embargo country list. Bitdenex also does not onboard any users from Ontario, or non-professional investors from Hong Kong. </p>\n <p>\n There may be partial restrictions in other jurisdictions, potentially including Hong Kong, Thailand, Malaysia, and Canada. </p>\n <p>\n Please feel free to reach out to us with any further questions, and feel free to upload any supplementary documents at support@bitdenex.com </p>\n <p>\n If you deposit funds to the wrong address, Bitdenex is not responsible for any losses. If the funds are recoverable–e.g. sending an ERC20 or TRC20 token to your ETH address or OMNI USDT to your BTC address–we can try to recover the funds. Doing so is not guaranteed and might take up to a week. We also charge a $500 fee for recovery. Similarly, sending ETH or TRX or other coins or tokens via a smart contract to Bitdenex may not be automatically credited, and may take time to recover. </p>\n <p>\n There are no refunds permitted for Credit Card purchases of cryptocurrencies on Bitdenex, if applicable. Bitdenex does not permit self trades executed in order to manipulate markets, reported statistics, or cause liquidations. Doing so is a violation of the Bitdenex terms of service and may result in account closure. </p>\n <p>\n To ensure account security, please set up Two-Factor Authentication (2FA) for your Bitdenex account immediately. Our platform will not be responsible for any losses for accounts whose credentials are breached. </p>\n <p>\n If you are registering to use the Services as an individual, you must be at least 18 years of age, and you must not have been previously been suspended or removed from the Exchange or any other service or product offered by Bitdenex or its affiliate entities, to enter into this Agreement. </p>\n <p>\n If Bitdenex has evidence that an account is violating the terms of service, Bitdenex reserves the right to shut down the account and, except in cases of suspected violations of our anti money laundering (AML) policy or other similar concerns about the source of wealth or malicious market manipulation, return funds to the user after consulting the applicable local legal supervisory authority. </p>\n <p>\n Note that, among other things, Bitdenex does not guarantee the right to trade. While Bitdenex will take all reasonable methods to ensure that accounts do not receive any unwanted fills outside of our standard liquidation procedures, risk engine, and the terms of service, Bitdenex does not as a matter of principle have any obligation to honour people’s desires for trades to have occurred that didn’t. </p>\n <p>\n Note that, while Google and Bitdenex are translated into multiple languages, in cases of inconsistent statements the English language versions will take precedence.\n </p>\n\n <h3>NOTE: Give-aways and Bonus:</h3>\n <p>\n <strong>1.</strong> Bonus and Give-aways given by Bitdenex cannot be withdrawn, you are not allowed to withdraw your received “Give-aways†or “Bonusesâ€, unless you make a first deposit and make a trade. </p>\n <p>\n <strong>2.</strong> Bonus and Give-aways are forfeited upon any asset withdrawal.\n </p>\n <figure>\n <img srcSet=\"/images/content/terms/article.jpg\" src=\"/images/content/terms/article.jpg\" alt=\"Content\" />\n </figure>\n <h3>View Complete Terms of Service</h3>\n <p>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\">Complete Terms of Service can be downloaded and viewed here</a>\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__LojRO\",\"head\":\"Main_head__xPU0s\",\"title\":\"Main_title__CfR+Q\",\"breadcrumbs\":\"Main_breadcrumbs__Q9Pj-\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Privacy Policy\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Privacy Policy\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/privacy/main.jpg\"\n image2x=\"/images/content/privacy/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__59hVK\",\"content\":\"Article_content__wjX53\",\"actions\":\"Article_actions__51yQR\",\"favorite\":\"Article_favorite__tSrVU\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nimport PDF from \"./Documents/GL_Bitdenex_Privacy_Policy.pdf\"\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h3>Privacy Policy</h3>\n <p>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\">Complete Privacy-Policy can be downloaded and viewed here</a>\n </p>\n <p>\n When visiting the Bitdenex website, you automatically agree to the privacy policy. This policy is in compliance with the Privacy Legislation, the General Data Protection Regulation (GDPR) or an equivalent of the local applicable privacy legislation. We think it is very important that you are well-informed about the Privacy Legislation. </p>\n <h3>Article 1: Management</h3>\n <p>\n Bitdenex.com is a website which provides an overview of the trading options and trading platform of Bitdenex per region. Each region applies its own local applicable law and regulations to the local traders, which shall comply with the applicable law.\n </p>\n\n <figure>\n <img srcSet=\"/images/content/privacy/article.jpg\" src=\"/images/content/privacy/article.jpg\" alt=\"Content\" />\n </figure>\n <h3>Article 2: Visitor information</h3>\n <p>\n <strong>2.1</strong> Some information resulting from one or more visits to the website will be saved. All information that is not required for the service of Bitdenex will be made anonymous. Identifiable information required for the services of Bitdenex will be saved if necessary. All laws of the Personal Data Protection Act will be respected in this.\n </p>\n <p>\n <strong>2.2</strong> Bitdenex can use the information provided by the customer for an number of purpose, including the following: <br />\n • Sending one or more mails to determine your identity and verify your account. <br />\n • Sending one or more e-mails such as, but not limited to, an e-mail containing log-in information. <br />\n • To highlight important news regarding Bitdenex services.<br />\n • The deliberate/incidental sending of e-mails if this is necessary for further collaboration between the customer and Bitdenex. <br />\n • The performance of the services requested by the customer as offered on the website of Bitdenex. <br />\n </p>\n <h3>Article 3: Cookies</h3>\n <p>\n <strong>3.1</strong> Bitdenex uses cookies for making the functionality of certain pages of the website possible and optimizing these features.\n </p>\n <p>\n <strong>3.2</strong> Visitors can decide themselves how cookies are handled. You can configure your browser so that it allows, disallows or partially allows cookies. For the last case, it can be configured for which websites cookies are allowed. Be aware that if you do not allow cookies, certain features cannot be performed. In this case, you cannot make full use of our services you are entitled to. </p>\n <p>\n <strong>3.3</strong> Cookies can always be deleted from a computer in the browser options.\n </p>\n <h3>Article 4: Security</h3>\n <p>\n The information provided to Bitdenex by the customer is stored in a secure environment.\n </p>\n <p>\n <strong>4.1</strong> Your personal information is encrypted, stored offline and securely stored. There are only a few employees who have access to this information.\n </p>\n <p>\n <strong>4.2</strong> The information necessary for the performance of customer service is not stored offline and is accessible to our customer service staff. </p>\n\n <h3>Article 5: Sharing of data with third parties</h3>\n <p>\n The information (within the Know Your Customer) provided by Bitdenex by the customer will never be passed on to third parties. However, there are exceptions to this rule: </p>\n <p>\n <strong>5.1</strong> When a court or legal order has been issued to provide data. </p>\n <p>\n <strong>5.2</strong> In case of fraud, scams or other undesirable acts, the information may be provided to the competent authorities.\n </p>\n <h3>Article 6: Changes to customer data</h3>\n <p>\n The customer has at all times the opportunity to change the information provided. Bitdenex can ask the customer in such a case to pass the change in a manner prescribed by Bitdenex and, in some cases, identification may be required.\n </p>\n <p>\n <strong>6.1</strong> Bitdenex is legally obliged to store your personal information in the context of the customer acceptance policy.\n </p>\n <p>\n <strong>6.2</strong> Bitdenex will only store and / or process the collected information if you have explicitly given permission.\n </p>\n <p>\n <strong>6.3</strong> In the event of withdrawal of your consent, we will immediately stop collecting and processing the information. In that case you will be informed of the consequences. This may mean that you cannot use certain services from Bitdenex.\n </p>\n <h3>Article 7: Questions</h3>\n <p>\n Visitors can contact the customer service of Bitdenex with their questions about this privacy policy. The contact details are listed on the website.\n </p>\n <h3>Article 8: Disclaimer</h3>\n <p>\n Bitdenex is entitled to change the content of this privacy policy without notifying the visitor. The implementation of the change on the website is sufficient.\n </p>\n <h3>View Complete Privacy-Policy </h3>\n <p>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\">Complete Privacy-Policy can be downloaded and viewed here</a>\n </p>\n </div>\n\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst PrivacyPolicy = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default PrivacyPolicy;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__5MOEW\",\"head\":\"Main_head__2ZjZp\",\"title\":\"Main_title__bosJu\",\"breadcrumbs\":\"Main_breadcrumbs__GqSGs\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Location Restriction\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Location Restriction\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/location/main.jpg\"\n image2x=\"/images/content/location/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__lzoK+\",\"content\":\"Article_content__Jcoh6\",\"actions\":\"Article_actions__4Xqfe\",\"favorite\":\"Article_favorite__TaaRS\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h3>Various Jurisdictions</h3>\n <p>\n <strong>United States:</strong><br />\n - Bitdenex does not allow residents of the United States of America to trade on its platform. <br />\n - Bitdenex is not offered in the United States of America.\n </p>\n <p>\n <strong>China:</strong><br />\n - Bitdenex does not allow residents of China to trade on its platform. <br />\n - Bitdenex is not offered in China.\n </p>\n\n <figure>\n <img srcSet=\"/images/content/location/article.jpg\" src=\"/images/content/location/article.jpg\" alt=\"Content\" />\n </figure>\n\n <h3>Restricted Jurisdictions</h3>\n <p>\n We does not onboard or provide services to corporate accounts of entities located in, established in, or a resident of the United States of America, Cuba, Crimea and Sevastopol, Iran, Afghanistan, Syria, Ukraine, Russia or North Korea. We also does not onboard any users from Ontario, or non-professional investors from Hong Kong.\n </p>\n <p>\n We does not onboard or provide services to personal accounts of current residents of the United States of America, Cuba, Crimea and Sevastopol, Iran, Afghanistan, Syria, Ukraine, Russia or North Korea. There may be partial restrictions in other jurisdictions, potentially including Hong Kong, Thailand, Malaysia, and Canada. We does not onboard any users from Ontario, or non-professional investors from Hong Kong.\n </p>\n\n <h3>Trading</h3>\n <p>\n - Bitdenex offers a platform for users to match against each other. <br />\n - Bitdenex does not actively trade itself. <br />\n - Bitdenex does not use any other exchanges for trading. <br />\n - Bitdenex maintains backstop funds to prevent losses.\n </p>\n\n <h3>Deposits and Withdrawals</h3>\n <p>\n\n - Bitdenex strives to process all deposits and withdrawals promptly. <br />\n - Bitdenex maintains 24/7 withdrawal availability. <br />\n - Bitdenex has never had an outage of deposit or withdrawal services. <br />\n - Users who deposit to incorrect addresses may lose their funds, though in some cases Bitdenex may be able to recover them for a fee. <br />\n - Bitdenex encourages its customers to make use of the full suite of tools available to protect their accounts, and mandates 2-factor authentication on all active accounts.\n </p>\n\n <p>\n <strong>If you have any questions in this regard, please contact us at support@bitdenex.com</strong>\n </p>\n </div>\n\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst LocationRestriction = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default LocationRestriction;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__57MGQ\",\"head\":\"Main_head__usQJ9\",\"title\":\"Main_title__15e8w\",\"breadcrumbs\":\"Main_breadcrumbs__LFqds\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Terms & Conditions Referral Program\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Terms and Conditions Referral Program\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/referral/main.jpg\"\n image2x=\"/images/content/referral/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__6isXf\",\"content\":\"Article_content__hNmSO\",\"actions\":\"Article_actions__AasG+\",\"favorite\":\"Article_favorite__sTtLM\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h4>Invite your friends and earn up to {process.env.REACT_APP_COMMISSION_RATE}% commission rate.</h4>\n <p>\n 1. Earn lifetime commission with Bitdenex, no cap, no time limit, get higher commission\n as you get more invitees.<br />\n 2. The statistical objects are the users.<br />\n 3. All referral commissions (both those received by inviters and those shared with their\n invited friends) are calculated in the particular coin or fiat and transferred to the\n respective Bitdenex accounts instantly after the trades are completed by your invitee.<br />\n 4. In order for an invited friend to receive a cashback, they must register using the\n corresponding referral link (or referral ID). If they register using an old or not valid ID\n code of the person who invited them, instead of via the link, they will not receive any\n commission or cashback offered to them by their inviter.<br />\n 5. There is no limit to the number of friends a single account can invite.<br />\n 6. Bitdenex does not allow any user to self-invite through multiple accounts. Once such\n activity has been detected, all referrals will be cancelled and all referral commission\n cashbacks for the invitee’s accounts will be cancelled.<br />\n 7. The term to receive your referral commission is undefined.<br />\n 8. In case of an active coupon or a different cashback option is active, no commission\n will be paid out, until the coupon or cashback is fully utilized or not valid anymore.<br />\n 9. Bitdenex does not credit commission for zero-fees trades. No trading fees paid, means\n no commission payout either.<br />\n 10. Any fraud or misuse of the referral program will not be tolerated. In the event of any\n fraud or misuse, Bitdenex will close your account immediately without any notice.\n Your wallets will be freeze upon further notice.<br />\n 11. Bitdenex may adjust the proportion of referrals at any point and reserves the right to\n adjust the Terms and Conditions of the referral program at any time at their sole\n discretion.<br />\n 12. Bitdenex reserves the right to disqualify users from participating in referral & affiliate\n programs and revoke any commissions from users who engage in dishonest or abusive\n activities to earn commissions. This includes bulk-account registrations to obtain\n additional bonuses, using “phishing†websites containing referral links, posting\n referral links as advertisements on search engines, and any other activity concerning\n unlawful, fraudulent, or harmful purposes.<br />\n 13. If you have any questions, please contact support@bitdenex.com.<br /><br />\n Definition of valid invitees:\n The users you directly invite to register, not users invited by sub-affiliates or referees. In case\n and in Bitdenex’s opinion, the invitee is not legitimate or seems not legitimate, this invitee\n will be blocked and excluded from any payouts, either commission, cashback, bonus etc.\n </p>\n <figure>\n <img srcSet=\"/images/content/referral/article.jpg\" src=\"/images/content/referral/article.jpg\" alt=\"Content\" />\n </figure>\n\n <h3>Important Notice:</h3>\n <p>\n Bitdenex reserves the exclusive right to change the Terms and Conditions of the referral program at any time due to changing market conditions, risk of fraud, or any other factors we deem relevant at their sole discretion.\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditionsForReferralProgram = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditionsForReferralProgram;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__OgJJT\",\"head\":\"Main_head__FkHUG\",\"title\":\"Main_title__1PwfF\",\"info\":\"Main_info__ttWgS\",\"btns\":\"Main_btns__JTzMH\",\"button\":\"Main_button__5Zn9z\",\"video\":\"Main_video__E3dwd\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Bitcoin</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__K7HPf\",\"stage\":\"Releases_stage__JseKP\",\"wrap\":\"Releases_wrap__ty1dt\",\"title\":\"Releases_title__uwsYW\",\"info\":\"Releases_info__gJUqq\",\"nav\":\"Releases_nav__BqXc5\",\"link\":\"Releases_link__6VNyD\",\"active\":\"Releases_active__oh-di\",\"dropdown\":\"Releases_dropdown__eNZj9\",\"dropdownHead\":\"Releases_dropdownHead__EOnpE\",\"item\":\"Releases_item__Kr2BP\",\"widgetList\":\"Releases_widgetList__xanUD\",\"linkText\":\"Releases_linkText__MYxvl\",\"copyright\":\"Releases_copyright__gKka0\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__HDDl8\",\"arrow\":\"Item_arrow__cJfMR\",\"preview\":\"Item_preview__ZGePo\",\"details\":\"Item_details__W767w\",\"category\":\"Item_category__-Kyk-\",\"title\":\"Item_title__tcuVc\",\"currency\":\"Item_currency__A1pH3\",\"content\":\"Item_content__U176b\",\"previewOdd\":\"Item_previewOdd__ccVyg\",\"detailsOdd\":\"Item_detailsOdd__NG+n0\",\"imgSetting\":\"Item_imgSetting__4xdSp\",\"button\":\"Item_button__NMJ88\"};","import cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","// extracted by mini-css-extract-plugin\nexport default {\"VersionHeader\":\"TVChartContainer_VersionHeader__sXjVp\",\"TVChartContainer\":\"TVChartContainer_TVChartContainer__mwg-z\"};","/* eslint-disable */\nfunction t(e,n){const i={...e};for(const o in n)\"object\"!=typeof e[o]||null===e[o]||Array.isArray(e[o])?void 0!==n[o]&&(i[o]=n[o]):i[o]=t(e[o],n[o]);return i}const e={width:800,height:500,interval:\"1D\",timezone:\"Etc/UTC\",container:\"\",library_path:\"\",locale:\"en\",widgetbar:{details:!1,watchlist:!1,news:!1,datawindow:!1,watchlist_settings:{default_symbols:[]}},overrides:{\"mainSeriesProperties.showCountdown\":!1},studies_overrides:{},trading_customization:{position:{},order:{}},brokerConfig:{configFlags:{}},fullscreen:!1,autosize:!1,disabled_features:[],enabled_features:[],debug:!1,logo:{},time_frames:[{text:\"5y\",resolution:\"1W\"},{text:\"1y\",resolution:\"1W\"},{text:\"6m\",resolution:\"120\"},{text:\"3m\",resolution:\"60\"},{text:\"1m\",resolution:\"30\"},{text:\"5d\",resolution:\"5\"},{text:\"1d\",resolution:\"1\"}],client_id:\"0\",user_id:\"0\",charts_storage_api_version:\"1.0\",favorites:{intervals:[],chartTypes:[],indicators:[],drawingTools:[]}},n=JSON.parse('[{\"iso\":\"ar\",\"dir\":\"rtl\",\"language\":\"ar\"},{\"iso\":\"pt\",\"dir\":\"ltr\",\"language\":\"pt\"},{\"iso\":\"ca\",\"dir\":\"ltr\",\"language\":\"ca_ES\"},{\"iso\":\"cs\",\"dir\":\"ltr\",\"language\":\"cs\"},{\"iso\":\"de\",\"dir\":\"ltr\",\"language\":\"de\"},{\"iso\":\"en\",\"dir\":\"ltr\",\"language\":\"en\"},{\"iso\":\"es\",\"dir\":\"ltr\",\"language\":\"es\"},{\"iso\":\"fa\",\"dir\":\"rtl\",\"language\":\"fa\"},{\"iso\":\"fr\",\"dir\":\"ltr\",\"language\":\"fr\"},{\"iso\":\"he\",\"dir\":\"rtl\",\"language\":\"he_IL\"},{\"iso\":\"hu\",\"dir\":\"ltr\",\"language\":\"hu_HU\"},{\"iso\":\"id\",\"dir\":\"ltr\",\"language\":\"id_ID\"},{\"iso\":\"en\",\"dir\":\"ltr\",\"language\":\"en\"},{\"iso\":\"it\",\"dir\":\"ltr\",\"language\":\"it\"},{\"iso\":\"ja\",\"dir\":\"ltr\",\"language\":\"ja\"},{\"iso\":\"ko\",\"dir\":\"ltr\",\"language\":\"ko\"},{\"iso\":\"ms\",\"dir\":\"ltr\",\"language\":\"ms_MY\"},{\"iso\":\"pl\",\"dir\":\"ltr\",\"language\":\"pl\"},{\"iso\":\"ru\",\"dir\":\"ltr\",\"language\":\"ru\"},{\"iso\":\"sv\",\"dir\":\"ltr\",\"language\":\"sv\"},{\"iso\":\"th\",\"dir\":\"ltr\",\"language\":\"th\"},{\"iso\":\"tr\",\"dir\":\"ltr\",\"language\":\"tr\"},{\"iso\":\"vi\",\"dir\":\"ltr\",\"language\":\"vi\"},{\"iso\":\"zh-Hans\",\"dir\":\"ltr\",\"language\":\"zh\"},{\"iso\":\"zh-Hant\",\"dir\":\"ltr\",\"language\":\"zh_TW\"},{\"iso\":\"el\",\"dir\":\"ltr\",\"language\":\"el\"},{\"iso\":\"nl\",\"dir\":\"ltr\",\"language\":\"nl_NL\"},{\"iso\":\"ro\",\"dir\":\"ltr\",\"language\":\"ro\"}]');let i=!1;function o(t){var e;const n=/\\.woff(\\d*)/.exec(t);return`<link rel=\"preload\" href=\"${t}\" as=\"font\" type=\"font/woff${null!==(e=null==n?void 0:n[1])&&void 0!==e?e:\"2\"}\" crossorigin=\"anonymous\"/>`}function s(t,e){var i;const s=new URL(`${t||\"\"}`,location.href).href,r=JSON.parse('[\"bundles/runtime.9e6a94224bc7334ac8fa.js\",\"bundles/__LANG__.7076.5055b5f097e7204685ed.js\",\"bundles/7717.8f75bd75d4b6ed45f3ff.css\",\"bundles/7717.8f75bd75d4b6ed45f3ff.rtl.css\",\"bundles/4618.e46ad0a894862e22afb5.js\",\"bundles/library.4350c821a355451bc08e.js\",\"bundles/EuclidCircular.be8f862db48c2976009f.woff2\"]'),a=encodeURIComponent(e),d=null!==(i=n.find((t=>t.language===a)))&&void 0!==i?i:{iso:\"en\",dir:\"ltr\"},l=`lang=\"${d.iso}\" dir=\"${d.dir}\"`,h=`\\n${function(t,e,n){if(void 0===t)return\"\";const i=[],s=[],r=[],a=/\\.css$/i,d=/\\.rtl\\.css$/i;for(const l of t)l.endsWith(\".js\")?s.push(`<script defer crossorigin=\"anonymous\" src=\"${l.replace(\"__LANG__\",n)}\"><\\/script>`):a.test(l)&&e===d.test(l)?r.push(`<link type=\"text/css\" href=\"${l}\" rel=\"stylesheet\"/>`):/\\.woff\\d*/.test(l)&&i.push(o(l));return[...i,...s,...r].join(\"\\n\")}(r,\"rtl\"===d.dir,a)}\\n`;return`<!DOCTYPE html><html ${(c={bundles:h,localeLanguage:a,htmlAttrs:l,libraryPath:s}).htmlAttrs}><head><base href=\"${c.libraryPath}\"><meta charset=\"utf-8\"><script>window===window.parent&&(location.href=\"about:blank\")<\\/script> ${c.bundles} </head><body class=\"chart-page unselectable on-widget\"><div class=\"loading-indicator\" id=\"loading-indicator\"></div><script>var JSServer={},__initialEnabledFeaturesets=[\"charting_library\"]<\\/script><script>(function() {\\n\\t\\twindow.urlParams = (function () {\\n\\t\\t\\tvar match,\\n\\t\\t\\t\\tpl\\t = /\\\\+/g, // Regex for replacing addition symbol with a space\\n\\t\\t\\t\\tsearch = /([^&=]+)=?([^&]*)/g,\\n\\t\\t\\t\\tdecode = function (s) { return decodeURIComponent(s.replace(pl, ' ')).replace(/<\\\\/?[^>]+(>|$)/g, ''); },\\n\\t\\t\\t\\tquery = function() {\\n\\t\\t\\t\\t\\t// We don't use hash on the url because: safari 13 throws an error if you attempt this\\n\\t\\t\\t\\t\\t// on a blob, and safari 14 will strip hash from blob urls.\\n\\t\\t\\t\\t\\tif (frameElement && frameElement.dataset.widgetOptions) {\\n\\t\\t\\t\\t\\t\\treturn frameElement.dataset.widgetOptions;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tthrow \"Unexpected use of this page\";\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}(),\\n\\t\\t\\t\\tresult = {};\\n\\n\\t\\t\\twhile (match = search.exec(query)) {\\n\\t\\t\\t\\tresult[decode(match[1])] = decode(match[2]);\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar additionalSettingsObject = window.parent[result.uid];\\n\\n\\t\\t\\tvar customObjectNames = ['datafeed', 'customFormatters', 'brokerFactory', 'save_load_adapter', 'customTranslateFunction', 'contextMenu'];\\n\\n\\t\\t\\tfor (var p in additionalSettingsObject) {\\n\\t\\t\\t\\tif (customObjectNames.indexOf(p) === -1) {\\n\\t\\t\\t\\t\\tresult[p] = JSON.stringify(additionalSettingsObject[p]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\t\\t})();\\n\\n\\t\\twindow.locale = urlParams.locale;\\n\\t\\twindow.language = urlParams.locale; // a very big attention needed here\\n\\t\\twindow.customTranslateFunction = window.parent[urlParams.uid].customTranslateFunction;\\n\\n\\t\\twindow.addCustomCSSFile = function(href) {\\n\\t\\t\\tvar link = document.createElement('link');\\n\\t\\t\\tlink.setAttribute('type', 'text/css');\\n\\t\\t\\tlink.setAttribute('rel', 'stylesheet');\\n\\t\\t\\tlink.setAttribute('href', href);\\n\\t\\t\\tlink.setAttribute('cross-origin', 'anonymous');\\n\\n\\t\\t\\twindow.loadedCustomCss = new Promise((resolve) => {\\n\\t\\t\\t\\tlink.onload = resolve;\\n\\t\\t\\t\\tlink.onerror = resolve;\\n\\t\\t\\t});\\n\\t\\t\\tdocument.body.appendChild(link);\\n\\t\\t};\\n\\n\\t\\twindow.loadedCustomCss = Promise.resolve();\\n\\t\\tif (!!urlParams.customCSS) {\\n\\t\\t\\twindow.addCustomCSSFile(urlParams.customCSS);\\n\\t\\t}\\n\\n\\t\\tvar loadingScreenParams = {};\\n\\n\\t\\tif (typeof urlParams.loading_screen === 'string') {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tloadingScreenParams = JSON.parse(urlParams.loading_screen);\\n\\t\\t\\t} catch(e) {}\\n\\t\\t}\\n\\n\\t\\tvar loadingIndicatorElement = document.getElementById('loading-indicator');\\n\\n\\t\\tif (loadingScreenParams.backgroundColor) {\\n\\t\\t\\tloadingIndicatorElement.style = 'background-color: ' + loadingScreenParams.backgroundColor;\\n\\t\\t}\\n\\n\\t\\t!function(){\"use strict\";!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&\"undefined\"!=typeof document){var o=document.head||document.getElementsByTagName(\"head\")[0],i=document.createElement(\"style\");i.type=\"text/css\",\"top\"===n&&o.firstChild?o.insertBefore(i,o.firstChild):o.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))}}(\":global(.tv-spinner) {display: none;position: absolute;width: 1em;height: 1em;top: calc(50% - 0.5em);left: calc(50% - 0.5em);margin: 0 auto;border: 4px solid rgba(135, 151, 165, 0.2);border-radius: 50%;border-top-color: var(--tv-spinner-color, #2962FF);border-left-color: var(--tv-spinner-color, #2962FF);animation: tv-spinner__container-rotate 0.9s linear infinite;}:global(.tv-spinner)--shown {display: block;}:global(.tv-spinner)--size_xsmall {font-size: 14px;border-width: 2px;}:global(.tv-spinner)--size_small {font-size: 20px;border-width: 2px;}:global(.tv-spinner)--size_medium {font-size: 28px;border-width: 3px;}:global(.tv-spinner)--size_large {font-size: 56px;border-width: 4px;} @keyframes tv-spinner__container-rotate {to {transform: rotate(360deg);}}\");var t,e=new WeakMap;!function(t){t[t.Element=1]=\"Element\",t[t.Document=9]=\"Document\"}(t||(t={}));var n={mini:\"xsmall\",xsmall:\"xsmall\",small:\"small\",medium:\"medium\",large:\"large\"};var o,i,r,s,l,a=(void 0===l&&(l=\"\"),o='<div class=\"tv-spinner '.concat(l,'\" role=\"progressbar\"></div>'),r=function(n,o){var i,r;return i=null==o?document.documentElement:o.nodeType===t.Document?o.documentElement:o,e&&(r=e.get(i)),r||((r=i.ownerDocument.createRange()).selectNodeContents(i),e&&e.set(i,r)),r.createContextualFragment(n)}(o,i),null!==(s=r.firstElementChild)&&r.removeChild(s),s),c=function(){function t(t){this._shown=!1,this._el=a.cloneNode(!0),this.setSize(n[t||\"large\"])}return t.prototype.spin=function(t){return this._el.classList.add(\"tv-spinner--shown\"),void 0===this._container&&(this._container=t,void 0!==t&&t.appendChild(this._el)),this._shown=!0,this},t.prototype.stop=function(t){return t&&void 0!==this._container&&this._container.removeChild(this._el),this._el.classList.remove(\"tv-spinner--shown\"),this._shown=!1,this},t.prototype.setStyle=function(t){var e=this;return Object.keys(t).forEach((function(n){var o=t[n];void 0!==o&&e._el.style.setProperty(n,o)})),this},t.prototype.style=function(){return this._el.style},t.prototype.setSize=function(t){var e=void 0!==t?\"tv-spinner--size_\".concat(t):\"\";return this._el.className=\"tv-spinner \".concat(e,\" \").concat(this._shown?\"tv-spinner--shown\":\"\"),this},t.prototype.getEl=function(){return this._el},t.prototype.destroy=function(){this.stop(),delete this._el,delete this._container},t}();window.Spinner=c}();\\n\\n\\n\\t\\tvar spinnerColor = (loadingScreenParams.foregroundColor) ? loadingScreenParams.foregroundColor : undefined;\\n\\n\\t\\tvar loadingSpinner = new Spinner('large').setStyle({\\n\\t\\t\\t'--tv-spinner-color': spinnerColor,\\n\\t\\t\\tzIndex: String(2e9),\\n\\t\\t});\\n\\t\\tloadingSpinner.getEl().classList.add('spinner');\\n\\t\\tloadingSpinner.spin(loadingIndicatorElement);\\n\\t})();<\\/script></body></html>`;var c}function r(){return\"CL v24.004 (internal id 8ab257ed @ 2023-04-24T19:22:25.354Z)\"}const a=class{constructor(n){var o;if(this._id=`tradingview_${(1048576*(1+Math.random())|0).toString(16).substring(1)}`,this._ready=!1,this._readyHandlers=[],this._onWindowResize=this._autoResizeChart.bind(this),!n.datafeed)throw new Error(\"Datafeed is not defined\");(null===(o=n.overrides)||void 0===o?void 0:o[\"mainSeriesProperties.priceAxisProperties.lockScale\"])&&(console.warn(\"mainSeriesProperties.priceAxisProperties.lockScale can not be set to true within the widget constructor\"),delete n.overrides[\"mainSeriesProperties.priceAxisProperties.lockScale\"]),this._options=t(e,n),\"Dark\"===this._options.theme&&void 0===this._options.loading_screen&&(this._options.loading_screen={backgroundColor:\"#131722\"}),this._options.debug&&(i||(i=!0,console.log(\"Using CL v24.004 (internal id 8ab257ed @ 2023-04-24T19:22:25.354Z)\"))),this._create()}setDebugMode(t){this._innerAPI().setDebugMode(t)}onChartReady(t){this._ready?t.call(this):this._readyHandlers.push(t)}headerReady(){return this._innerWindowLoaded.then((()=>this._innerWindow().headerReady()))}onGrayedObjectClicked(t){this._doWhenInnerApiLoaded((e=>{e.onGrayedObjectClicked(t)}))}onShortcut(t,e){this._doWhenInnerWindowLoaded((n=>{n.createShortcutAction(t,e)}))}subscribe(t,e){this._doWhenInnerApiLoaded((n=>{n.subscribe(t,e)}))}unsubscribe(t,e){this._doWhenInnerApiLoaded((n=>{n.unsubscribe(t,e)}))}chart(t){return this._innerAPI().chart(t)}getLanguage(){return this._options.locale}setSymbol(t,e,n){this._innerAPI().changeSymbol(t,e,n)}remove(){window.removeEventListener(\"resize\",this._onWindowResize),this._readyHandlers.splice(0,this._readyHandlers.length),delete window[this._id],this._iFrame.parentNode&&this._iFrame.parentNode.removeChild(this._iFrame)}closePopupsAndDialogs(){this._doWhenInnerApiLoaded((t=>{t.closePopupsAndDialogs()}))}selectLineTool(t,e){this._innerAPI().selectLineTool(t,e)}selectedLineTool(){return this._innerAPI().selectedLineTool()}save(t){this._innerAPI().saveChart(t)}load(t,e){this._innerAPI().loadChart({json:t,extendedData:e})}getSavedCharts(t){this._innerAPI().getSavedCharts(t)}loadChartFromServer(t){this._innerAPI().loadChartFromServer(t)}saveChartToServer(t,e,n){this._innerAPI().saveChartToServer(t,e,n)}removeChartFromServer(t,e){this._innerAPI().removeChartFromServer(t,e)}onContextMenu(t){this._doWhenInnerApiLoaded((e=>{e.onContextMenu(t)}))}createButton(t){return this._innerWindow().createButton(t)}createDropdown(t){return this._innerWindow().createDropdown(t)}showNoticeDialog(t){this._doWhenInnerApiLoaded((e=>{e.showNoticeDialog(t)}))}showConfirmDialog(t){this._doWhenInnerApiLoaded((e=>{e.showConfirmDialog(t)}))}showLoadChartDialog(){this._innerAPI().showLoadChartDialog()}showSaveAsChartDialog(){this._innerAPI().showSaveAsChartDialog()}symbolInterval(){return this._innerAPI().getSymbolInterval()}mainSeriesPriceFormatter(){return this._innerAPI().mainSeriesPriceFormatter()}getIntervals(){return this._innerAPI().getIntervals()}getStudiesList(){return this._innerAPI().getStudiesList()}getStudyInputs(t){return this._innerAPI().getStudyInputs(t)}getStudyStyles(t){return this._innerAPI().getStudyStyles(t)}addCustomCSSFile(t){this._innerWindow().addCustomCSSFile(t)}applyOverrides(e){this._options=t(this._options,{overrides:e}),this._doWhenInnerWindowLoaded((t=>{t.applyOverrides(e)}))}applyStudiesOverrides(t){this._doWhenInnerWindowLoaded((e=>{e.applyStudiesOverrides(t)}))}watchList(){return this._innerAPI().watchlist()}news(){return this._innerAPI().news()}widgetbar(){return this._innerAPI().widgetbar()}activeChart(){return this._innerAPI().activeChart()}chartsCount(){return this._innerAPI().chartsCount()}layout(){return this._innerAPI().layout()}setLayout(t){this._innerAPI().setLayout(t)}layoutName(){return this._innerAPI().layoutName()}changeTheme(t,e){return this._innerWindow().changeTheme(t,e)}getTheme(){return this._innerWindow().getTheme()}takeScreenshot(){this._doWhenInnerApiLoaded((t=>{t.takeScreenshot()}))}lockAllDrawingTools(){return this._innerAPI().lockAllDrawingTools()}hideAllDrawingTools(){return this._innerAPI().hideAllDrawingTools()}drawOnAllCharts(t){this._innerAPI().drawOnAllCharts(t)}magnetEnabled(){return this._innerAPI().magnetEnabled()}magnetMode(){return this._innerAPI().magnetMode()}undoRedoState(){return this._innerAPI().undoRedoState()}setIntervalLinkingEnabled(t){this._innerAPI().setIntervalLinkingEnabled(t)}setTimeFrame(t){this._innerAPI().setTimeFrame(t)}symbolSync(){return this._innerAPI().symbolSync()}intervalSync(){return this._innerAPI().intervalSync()}crosshairSync(){return this._innerAPI().crosshairSync()}timeSync(){return this._innerAPI().timeSync()}dateRangeSync(){return this._innerAPI().dateRangeSync()}setFeatureEnabled(t,e){this._innerAPI().setFeatureEnabled(t,e)}getAllFeatures(){return this._innerWindow().getAllFeatures()}clearUndoHistory(){return this._innerAPI().clearUndoHistory()}undo(){return this._innerAPI().undo()}redo(){return this._innerAPI().redo()}startFullscreen(){this._innerAPI().startFullscreen()}exitFullscreen(){this._innerAPI().exitFullscreen()}takeClientScreenshot(t){return this._innerAPI().takeClientScreenshot(t)}navigationButtonsVisibility(){return this._innerWindow().getNavigationButtonsVisibility()}paneButtonsVisibility(){return this._innerWindow().getPaneButtonsVisibility()}dateFormat(){return this._innerWindow().getDateFormat()}timeHoursFormat(){return this._innerWindow().getTimeHoursFormat()}currencyAndUnitVisibility(){return this._innerWindow().getCurrencyAndUnitVisibility()}supportedChartTypes(){return this._innerAPI().supportedChartTypes()}_innerAPI(){return this._innerWindow().tradingViewApi}_innerWindow(){return this._iFrame.contentWindow}_doWhenInnerWindowLoaded(t){this._ready?t(this._innerWindow()):this._innerWindowLoaded.then((()=>{t(this._innerWindow())}))}_doWhenInnerApiLoaded(t){this._doWhenInnerWindowLoaded((e=>{e.doWhenApiIsReady((()=>t(this._innerAPI())))}))}_autoResizeChart(){this._options.fullscreen&&(this._iFrame.style.height=window.innerHeight+\"px\",d&&setTimeout((()=>{this._iFrame.style.height=window.innerHeight+\"px\"}),30))}_create(){var t,e;const n=null!==(e=null===(t=this._options.enabled_features)||void 0===t?void 0:t.includes(\"iframe_loading_compatibility_mode\"))&&void 0!==e&&e,[i,o]=this._render(!n);this._options.container_id&&console.warn(\"`container_id` is now deprecated. Please use `container` instead to either still pass a string or an `HTMLElement`.\");const s=this._options.container_id||this._options.container,r=\"string\"==typeof s?document.getElementById(s):s;if(null===r)throw new Error(`There is no such element - #${this._options.container}`);r.innerHTML=i,this._iFrame=r.querySelector(`#${this._id}`);const a=this._iFrame;n&&(a.contentWindow?(a.contentWindow.document.open(),a.contentWindow.document.write(o),a.contentWindow.document.close()):console.warn(\"Unable to locate contentWindow for the created iframe. Please try disabling the `iframe_loading_compatibility_mode` featureset.\")),(this._options.autosize||this._options.fullscreen)&&(a.style.width=\"100%\",this._options.fullscreen||(a.style.height=\"100%\")),window.addEventListener(\"resize\",this._onWindowResize),this._onWindowResize(),this._innerWindowLoaded=new Promise((t=>{const e=()=>{a.removeEventListener(\"load\",e,!1),t()};a.addEventListener(\"load\",e,!1)})),this._innerWindowLoaded.then((()=>{this._innerWindow().widgetReady((()=>{this._ready=!0;for(const t of this._readyHandlers)try{t.call(this)}catch(t){console.error(t)}this._innerWindow().initializationFinished()}))}))}_render(t){const e=window;if(e[this._id]={datafeed:this._options.datafeed,customFormatters:this._options.custom_formatters||this._options.customFormatters,brokerFactory:this._options.broker_factory||this._options.brokerFactory,overrides:this._options.overrides,studiesOverrides:this._options.studies_overrides,tradingCustomization:this._options.trading_customization,disabledFeatures:this._options.disabled_features,enabledFeatures:this._options.enabled_features,brokerConfig:this._options.broker_config||this._options.brokerConfig,restConfig:this._options.restConfig,favorites:this._options.favorites,logo:this._options.logo,numeric_formatting:this._options.numeric_formatting,rss_news_feed:this._options.rss_news_feed,newsProvider:this._options.news_provider,loadLastChart:this._options.load_last_chart,saveLoadAdapter:this._options.save_load_adapter,loading_screen:this._options.loading_screen,settingsAdapter:this._options.settings_adapter,getCustomIndicators:this._options.custom_indicators_getter,additionalSymbolInfoFields:this._options.additional_symbol_info_fields,headerWidgetButtonsMode:this._options.header_widget_buttons_mode,customTranslateFunction:this._options.custom_translate_function,symbolSearchComplete:this._options.symbol_search_complete,contextMenu:this._options.context_menu,settingsOverrides:this._options.settings_overrides,timeframe:this._options.timeframe,customTimezones:this._options.custom_timezones},this._options.saved_data)e[this._id].chartContent={json:this._options.saved_data},this._options.saved_data_meta_info&&(e[this._id].chartContentExtendedData=this._options.saved_data_meta_info);else if(!this._options.load_last_chart&&!this._options.symbol)throw new Error(\"Symbol is not defined: either 'symbol' or 'load_last_chart' option must be set\");if(this._options.library_path&&!this._options.library_path.endsWith(\"/\")&&console.warn(\"library_path option should contain a trailing forward slash\"),this._options.locale){const t=encodeURIComponent(this._options.locale);n.findIndex((e=>e.language===t))>=0||(console.warn(\"locale isn't supported. Using default of `en`.\"),this._options.locale=\"en\")}const i=s(this._options.library_path||\"\",this._options.locale);let o=new URL(\"about:blank\");if(t){const t=new Blob([i],{type:\"text/html\"}),e=URL.createObjectURL(t);o=new URL(e)}const r=\"symbol=\"+encodeURIComponent(this._options.symbol||\"\")+\"&interval=\"+encodeURIComponent(this._options.interval)+(this._options.toolbar_bg?\"&toolbarbg=\"+encodeURIComponent(this._options.toolbar_bg.replace(\"#\",\"\")):\"\")+(this._options.studies_access?\"&studiesAccess=\"+encodeURIComponent(JSON.stringify(this._options.studies_access)):\"\")+\"&widgetbar=\"+encodeURIComponent(JSON.stringify(this._options.widgetbar))+(this._options.drawings_access?\"&drawingsAccess=\"+encodeURIComponent(JSON.stringify(this._options.drawings_access)):\"\")+\"&timeFrames=\"+encodeURIComponent(JSON.stringify(this._options.time_frames))+\"&locale=\"+encodeURIComponent(this._options.locale)+\"&uid=\"+encodeURIComponent(this._id)+\"&clientId=\"+encodeURIComponent(String(this._options.client_id))+\"&userId=\"+encodeURIComponent(String(this._options.user_id))+(this._options.charts_storage_url?\"&chartsStorageUrl=\"+encodeURIComponent(this._options.charts_storage_url):\"\")+(this._options.charts_storage_api_version?\"&chartsStorageVer=\"+encodeURIComponent(this._options.charts_storage_api_version):\"\")+(this._options.custom_css_url?\"&customCSS=\"+encodeURIComponent(this._options.custom_css_url):\"\")+(this._options.custom_font_family?\"&customFontFamily=\"+encodeURIComponent(this._options.custom_font_family):\"\")+(this._options.auto_save_delay?\"&autoSaveDelay=\"+encodeURIComponent(String(this._options.auto_save_delay)):\"\")+\"&debug=\"+encodeURIComponent(String(this._options.debug))+(this._options.snapshot_url?\"&snapshotUrl=\"+encodeURIComponent(this._options.snapshot_url):\"\")+(this._options.timezone?\"&timezone=\"+encodeURIComponent(this._options.timezone):\"\")+(this._options.study_count_limit?\"&studyCountLimit=\"+encodeURIComponent(String(this._options.study_count_limit)):\"\")+(this._options.symbol_search_request_delay?\"&ssreqdelay=\"+encodeURIComponent(String(this._options.symbol_search_request_delay)):\"\")+(this._options.compare_symbols?\"&compareSymbols=\"+encodeURIComponent(JSON.stringify(this._options.compare_symbols)):\"\")+(this._options.theme?\"&theme=\"+encodeURIComponent(String(this._options.theme)):\"\")+(this._options.header_widget_buttons_mode?\"&header_widget_buttons_mode=\"+encodeURIComponent(String(this._options.header_widget_buttons_mode)):\"\")+(this._options.time_scale?\"&time_scale=\"+encodeURIComponent(JSON.stringify(this._options.time_scale)):\"\");return[`<iframe\\n\\t\\tid=\"${this._id}\" name=\"${this._id}\" src=\"${o.href}\" data-widget-options=\"${r}\"\\n\\t\\t${this._options.autosize||this._options.fullscreen?\"\":`width=\"${this._options.width}\" height=\"${this._options.height}\"`} title=\"Financial Chart\" frameborder=\"0\" allowTransparency=\"true\" scrolling=\"no\" allowfullscreen style=\"display:block;\">\\n\\t</iframe>`,i]}};\"undefined\"!=typeof window&&(window.TradingView=window.TradingView||{},window.TradingView.version=r);const d=!(\"undefined\"==typeof window||!window.navigator||!window.navigator.userAgent)&&window.navigator.userAgent.includes(\"CriOS\");export{r as version,a as widget};\n","import historyProvider from \"./historyProvider\";\r\n\r\nlet _subs = [];\r\nconst _unsubs = [];\r\n\r\nexport default {\r\n async subscribeBars(symbolInfo, resolution, updateCb, uid, resetCache) {\r\n const channelString = createChannelString(symbolInfo);\r\n\r\n // Add the new subscription to _subs\r\n const newSub = {\r\n channelString,\r\n uid,\r\n resolution,\r\n symbolInfo,\r\n lastBar: historyProvider.history[symbolInfo.name]?.lastBar || null,\r\n listener: updateCb,\r\n };\r\n _subs.push(newSub);\r\n\r\n // Fetch socket data and subscribe to the new symbol\r\n var data = await historyProvider.socketFunction();\r\n var socket = data.socket;\r\n const channel = symbolInfo.name.replace(/-/g, '_');\r\n\r\n\r\n socket.send(JSON.stringify({\r\n action: 'subscribe',\r\n channel: channel,\r\n resolution: resolution,\r\n endTime: null\r\n }));\r\n },\r\n\r\n async unsubscribeBars(uid) {\r\n _subs = [];\r\n var data = await historyProvider.socketFunction();\r\n var socket = data.socket;\r\n var channel = data.subChannel;\r\n socket.send(JSON.stringify({\r\n action: 'unsubscribe',\r\n channel: channel[0].symbol_name,\r\n resolution: channel[0].resolution,\r\n endTime: null\r\n }));\r\n },\r\n};\r\n\r\nexport function updateChart(e) {\r\n const data = {\r\n ts: e.ts,\r\n price: parseFloat(e.price),\r\n total: e.total,\r\n open: e.open,\r\n high: e.high,\r\n low: e.low,\r\n close: e.close\r\n };\r\n\r\n _subs.forEach(sub => {\r\n const updatedBar = updateBar(data, sub);\r\n if (updatedBar) {\r\n sub.listener(updatedBar); // Update the chart with the new bar\r\n sub.lastBar = updatedBar; // Store the last updated bar\r\n }\r\n });\r\n}\r\n\r\nfunction updateBar(data, sub) {\r\n const lastBar = sub.lastBar || {};\r\n let updatedBar;\r\n let roundedTime = data.ts * 1000;\r\n\r\n // Skip out-of-order bars\r\n if (roundedTime < (lastBar.time || 0)) {\r\n return null; // Skip this bar if it's out of order\r\n }\r\n updatedBar = {\r\n time: roundedTime,\r\n // open: lastBar.close || data.open,\r\n open: data.open,\r\n high: data.high,\r\n low: data.low,\r\n close: data.close,\r\n volume: parseFloat(data.total),\r\n };\r\n\r\n return updatedBar;\r\n}\r\n\r\nfunction createChannelString(symbolInfo) {\r\n const [exchange, symbol] = symbolInfo.full_name.split(\":\")[1].split(\"-\");\r\n return `${exchange}~${symbol}`;\r\n}\r\n\r\nexport function last(array) {\r\n return array[array.length - 1];\r\n}\r\n\r\nexport { _unsubs, _subs }","import { _subs, updateChart } from \"./stream\";\r\nconst socket = new WebSocket(process.env.REACT_APP_API_URL_CHARTS);\r\n// const socket = new WebSocket(\"wss://chart.bitdenex.com/\");\r\nlet history = {};\r\nvar _subChannel = [];\r\n\r\nexport default {\r\n history: history,\r\n\r\n async getBars(symbolInfo, resolution, endTime, first) {\r\n try {\r\n const symbolName = symbolInfo.name.replace(/-/g, '_');\r\n\r\n // if (symbolName?.length > 0) {\r\n socket.onopen = () => {\r\n _subChannel[0] = {\r\n \"symbol_name\": symbolName,\r\n \"resolution\": resolution\r\n }\r\n socket.send(JSON.stringify({\r\n action: 'subscribe',\r\n channel: symbolName,\r\n 'resolution': resolution,\r\n 'endTime': endTime\r\n }));\r\n };\r\n socket.onclose = () => {\r\n socket.send(JSON.stringify({\r\n action: 'unsubscribe',\r\n channel: _subChannel[0].symbol_name + '_' + _subChannel[0].resolution\r\n }));\r\n };\r\n\r\n socket.onerror = (error) => {\r\n socket.send(JSON.stringify({\r\n action: 'unsubscribe',\r\n channel: _subChannel[0].symbol_name + '_' + _subChannel[0].resolution\r\n }));\r\n };\r\n\r\n if (socket.readyState === WebSocket.OPEN) {\r\n if (_subChannel.length > 0) {\r\n socket.send(JSON.stringify({\r\n action: 'unsubscribe',\r\n channel: _subChannel[0].symbol_name + '_' + _subChannel[0].resolution\r\n }));\r\n }\r\n _subChannel[0] = {\r\n \"symbol_name\": symbolName,\r\n \"resolution\": resolution\r\n }\r\n socket.send(JSON.stringify({\r\n action: 'subscribe',\r\n channel: symbolName,\r\n 'resolution': resolution,\r\n 'endTime': endTime\r\n }));\r\n }\r\n\r\n // Return a Promise that resolves with the bars\r\n return new Promise((resolve, reject) => {\r\n socket.onmessage = (event) => {\r\n const barsData = JSON.parse(event.data)\r\n if (barsData.message.type == 'live') {\r\n try {\r\n if (_subs[0]?.symbolInfo?.name?.toLowerCase() == barsData?.message?.slug?.toLowerCase()) {\r\n var data = {\r\n ts: barsData.message.data.time,\r\n price: barsData.message.data.close,\r\n total: barsData.message.data.volume,\r\n low: parseFloat(barsData.message.data.low),\r\n high: parseFloat(barsData.message.data.high),\r\n open: parseFloat(barsData.message.data.open),\r\n close: barsData.message.data.close,\r\n }\r\n updateChart(data);\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n // const data = JSON.parse(event.data);\r\n if (barsData && barsData.message.s === 'no_data') {\r\n resolve([]); // No data, resolve with an empty array\r\n return;\r\n }\r\n if (barsData.message.data.length) {\r\n const myBars = barsData.message.data;\r\n let bars = myBars.map((el) => ({\r\n time: el.time * 1000,\r\n low: parseFloat(el.low),\r\n high: parseFloat(el.high),\r\n open: parseFloat(el.open),\r\n close: parseFloat(el.close),\r\n volume: parseFloat(el.volume),\r\n }));\r\n\r\n if (first) {\r\n const lastBar = bars[bars.length - 1];\r\n history[symbolInfo.name] = { lastBar };\r\n }\r\n resolve(bars);\r\n }\r\n\r\n };\r\n\r\n });\r\n // }\r\n } catch (error) {\r\n return ([]);\r\n }\r\n },\r\n async socketFunction() {\r\n return {\r\n \"socket\": socket,\r\n \"subChannel\": _subChannel\r\n }\r\n }\r\n};","import historyProvider from \"./historyProvider\";\r\nimport stream from \"./stream\";\r\nimport { store } from \"../../index.js\";\r\n\r\nconst supportedResolutions = [\r\n \"1\",\r\n \"3\",\r\n \"5\",\r\n \"15\",\r\n \"30\",\r\n \"60\",\r\n \"120\",\r\n \"240\",\r\n \"360\",\r\n \"D\",\r\n \"W\",\r\n \"M\",\r\n];\r\n\r\nconst config = {\r\n supported_resolutions: supportedResolutions\r\n};\r\n\r\nexport default {\r\n onReady: function (cb) {\r\n cb(config);\r\n },\r\n\r\n resolveSymbol: function (\r\n symbolName,\r\n onSymbolResolvedCallback,\r\n onResolveErrorCallback\r\n ) {\r\n // Expects a symbolInfo object in response\r\n var split_data = symbolName?.split(/[:/]/);\r\n let marketEntry = store?.getState()?.markets?.socketMarketData\r\n ?.flatMap(group => group?.find(x => x?.currency?.toLowerCase() === split_data?.[1]?.split(\"-\")?.[1]?.toLowerCase())?.markets)\r\n ?.find(entry => entry?.slug?.toLowerCase() === split_data?.[1]?.toLowerCase());\r\n var symbol_stub = {\r\n name: split_data[1],\r\n description: \"\",\r\n type: \"crypto\",\r\n session: \"24x7\",\r\n timezone: \"Etc/UTC\",\r\n ticker: symbolName,\r\n exchange: split_data[0],\r\n minmov: 1,\r\n pricescale: marketEntry ? 10 ** marketEntry?.priceDecimalPrecision : 10 ** 8,\r\n // pricescale: 10 ** 8,\r\n has_intraday: true,\r\n supported_resolutions: supportedResolutions,\r\n intraday_multipliers: [\"1\", \"5\", \"15\", \"30\", \"120\", \"240\"],\r\n data_status: \"streaming\",\r\n };\r\n\r\n setTimeout(function () {\r\n onSymbolResolvedCallback(symbol_stub);\r\n }, 0);\r\n },\r\n\r\n getBars: function (\r\n symbolInfo,\r\n resolution,\r\n periodParams,\r\n onHistoryCallback,\r\n onError,\r\n interval\r\n ) {\r\n //send curruntTime instead of from and to \r\n //modify backend according to that\r\n const { to } = periodParams;\r\n const countBack = periodParams.countBack;\r\n const countForward = periodParams.countForward;\r\n\r\n historyProvider\r\n .getBars(\r\n symbolInfo,\r\n resolution,\r\n to * 1000,\r\n countBack,\r\n onHistoryCallback\r\n )\r\n .then(function (bars) {\r\n if (bars.length) {\r\n // Calculate the Moving Average (MA)\r\n const maPeriod = 100; // Adjust this value as needed\r\n const maValues = calculateMovingAverage(bars, maPeriod);\r\n\r\n // Add MA values to each bar\r\n const barsWithMA = bars.map(function (bar, index) {\r\n return {\r\n ...bar,\r\n ma: maValues[index],\r\n };\r\n });\r\n\r\n onHistoryCallback(barsWithMA, { noData: false });\r\n } else {\r\n onHistoryCallback(bars, { noData: true });\r\n }\r\n })\r\n .catch(function (err) {\r\n onError(err);\r\n });\r\n },\r\n subscribeBars: function (\r\n symbolInfo,\r\n resolution,\r\n onRealtimeCallback,\r\n subscribeUID,\r\n onResetCacheNeededCallback\r\n ) {\r\n stream.subscribeBars(\r\n symbolInfo,\r\n resolution,\r\n onRealtimeCallback,\r\n subscribeUID,\r\n onResetCacheNeededCallback\r\n );\r\n },\r\n\r\n unsubscribeBars: function (subscriberUID) {\r\n stream.unsubscribeBars(subscriberUID);\r\n },\r\n\r\n calculateHistoryDepth: function (\r\n resolution,\r\n resolutionBack,\r\n intervalBack\r\n ) {\r\n // Optional\r\n // While optional, this makes sure we request 24 hours of minute data at a time\r\n // CryptoCompare's minute data endpoint will throw an error if we request data beyond 7 days in the past, and return no data\r\n return resolution < 60\r\n ? { resolutionBack: \"D\", intervalBack: \"1\" }\r\n : undefined;\r\n },\r\n\r\n getMarks: function (\r\n symbolInfo,\r\n startDate,\r\n endDate,\r\n onDataCallback,\r\n resolution\r\n ) {\r\n // Optional\r\n },\r\n\r\n getTimeScaleMarks: function (\r\n symbolInfo,\r\n startDate,\r\n endDate,\r\n onDataCallback,\r\n resolution\r\n ) {\r\n // Optional\r\n },\r\n\r\n getServerTime: function (cb) { },\r\n};\r\n\r\nfunction calculateMovingAverage(bars, period) {\r\n const maValues = [];\r\n\r\n for (let i = period - 1; i < bars.length; i++) {\r\n const closePrices = bars\r\n .slice(i - period + 1, i + 1)\r\n .map(function (bar) { return bar.close; });\r\n const sum = closePrices.reduce(function (total, price) { return total + price; }, 0);\r\n const ma = sum / period;\r\n maValues.push(ma);\r\n }\r\n\r\n return maValues;\r\n}\r\n","export function getChartOverrides(theme) {\r\n return {};\r\n}\r\n\r\nexport const ENABLED_FEATURES = [\r\n // \"dont_show_boolean_study_arguments\",\r\n // \"hide_last_na_study_output\",\r\n \"save_chart_properties_to_local_storage\",\r\n \"use_localstorage_for_settings\",\r\n \"study_templates\",\r\n \"save_all_chart_properties_to_local_storage\",\r\n];\r\n\r\nexport const DISABLED_FEATURES = [\r\n // \"header_symbol_search\",\r\n \"header_widget\",\r\n \"symbol_info\",\r\n \"header_compare\",\r\n // \"header_chart_type\",\r\n // \"display_market_status\",\r\n // \"symbol_search_hot_key\",\r\n \"volume_force_overlay\",\r\n // \"compare_symbol\",\r\n // \"border_around_the_chart\",\r\n // \"remove_library_container_border\",\r\n // \"header_interval_dialog_button\",\r\n \"show_interval_dialog_on_key_press\",\r\n // \"header_saveload\",\r\n // \"header_symbol_search_hot_key\",\r\n // \"header_interval_dropdown\",\r\n // \"header_undo_redo\",\r\n // \"header_screenshot\",\r\n // \"header_settings\",\r\n // \"header_fullscreen_button\",\r\n // \"header_indicators\",\r\n // \"header_interval_dialog_button\",\r\n];\r\n\r\nexport const INTERVAL = {\r\n MINUTES_5: \"5\",\r\n MINUTES_15: \"15\",\r\n MINUTES_30: \"30\",\r\n HOURS_2: \"120\",\r\n HOURS_4: \"240\",\r\n DAY: \"D\",\r\n};\r\n\r\nexport const TIME_FRAMES = [\r\n // { text: \"5m\", resolution: INTERVAL.MINUTES_5 },\r\n { text: \"15m\", resolution: INTERVAL.MINUTES_15 },\r\n { text: \"30m\", resolution: INTERVAL.MINUTES_30 },\r\n { text: \"2h\", resolution: INTERVAL.HOURS_2 },\r\n { text: \"4h\", resolution: INTERVAL.HOURS_4 },\r\n { text: \"1d\", resolution: INTERVAL.DAY },\r\n];\r\n","import React, { useRef, useEffect } from \"react\";\nimport styles from \"./index.module.sass\";\nimport { widget } from \"../../charting_library/charting_library.esm\";\nimport Datafeed from \"./dataFeed\";\n\nimport {\n\tDISABLED_FEATURES,\n\tENABLED_FEATURES,\n\tTIME_FRAMES,\n} from \"./chartConfig\";\nimport { _unsubs } from \"./stream\";\n\nfunction getLanguageFromURL() {\n\tconst regex = new RegExp(\"[\\\\?&]lang=([^&#]*)\");\n\tconst results = regex.exec(window.location.search);\n\treturn results === null\n\t\t? null\n\t\t: decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n}\n\nconst TVChartContainer = ({ symbol, currentMarketDetails, theme }) => {\n\tconst chartContainerRef = useRef(null);\n\tconst tvWidgetRef = useRef(null);\n\n\tconst getStoredInterval = () => {\n\t\tconst savedInterval = localStorage.getItem(\"tradingview.chart.lastUsedTimeBasedResolution\");\n\t\treturn savedInterval || process.env.REACT_APP_DEFAULT_INTERVAL_VALUE;\n\t};\n\n\tuseEffect(() => {\n\t\t// Initialize the widget only if it doesn't exist\n\t\tsetTimeout(() => {\n\t\t\tif (!tvWidgetRef.current) {\n\t\t\t\tconst widgetOptions = {\n\t\t\t\t\tsymbol: `BITDENEX:${symbol?.toUpperCase()}`,\n\t\t\t\t\tdatafeed: Datafeed,\n\t\t\t\t\tcontainer: chartContainerRef.current,\n\t\t\t\t\ttheme: theme,\n\t\t\t\t\tlibrary_path: \"/charting_library/\",\n\t\t\t\t\tlocale: getLanguageFromURL() || \"en\",\n\t\t\t\t\tfillBackground: true,\n\t\t\t\t\tinterval: getStoredInterval(),\n\t\t\t\t\tfullscreen: false,\n\t\t\t\t\tautosize: true,\n\t\t\t\t\ttime_frames: TIME_FRAMES,\n\t\t\t\t\tenabled_features: ENABLED_FEATURES,\n\t\t\t\t\tdisabled_features: DISABLED_FEATURES,\n\t\t\t\t\ttoolbar: false,\n\t\t\t\t};\n\n\t\t\t\ttvWidgetRef.current = new widget(widgetOptions);\n\n\t\t\t\ttvWidgetRef.current.onChartReady(() => {\n\t\t\t\t\ttvWidgetRef.current\n\t\t\t\t\t\t.activeChart()\n\t\t\t\t\t\t.createStudy(\"Moving Average\", false, false, { length: 10 }, { \"plot.color.0\": \"#9b59b6\", \"showLabelsOnPriceScale\": false });\n\t\t\t\t\ttvWidgetRef.current\n\t\t\t\t\t\t.activeChart()\n\t\t\t\t\t\t.createStudy(\"Moving Average\", false, false, { length: 30 }, { \"plot.color.0\": \"#d35400\", \"showLabelsOnPriceScale\": false });\n\t\t\t\t\ttvWidgetRef.current\n\t\t\t\t\t\t.activeChart()\n\t\t\t\t\t\t.createStudy(\"Moving Average\", false, false, { length: 99 }, { \"plot.color.0\": \"#00cec9\", \"showLabelsOnPriceScale\": false });\n\n\t\t\t\t\t//Remove \"Volume\" study if it exists\n\t\t\t\t\tconst studies = tvWidgetRef.current.activeChart().getAllStudies();\n\t\t\t\t\tfor (let i = 0; i < studies.length; i++) {\n\t\t\t\t\t\tconst study = studies[i];\n\t\t\t\t\t\tif (study.name === 'Volume') {\n\t\t\t\t\t\t\ttvWidgetRef.current.activeChart().removeEntity(study.id);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, 1000);\n\t\treturn () => {\n\t\t\tif (tvWidgetRef.current !== null) {\n\t\t\t\ttvWidgetRef.current.remove();\n\t\t\t\ttvWidgetRef.current = null;\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\t// Apply theme changes dynamically\n\t\tif (tvWidgetRef.current) {\n\t\t\ttvWidgetRef.current.applyOverrides({\n\t\t\t\t\"paneProperties.background\": theme === \"dark\" ? \"#131722\" : \"#FFFFFF\",\n\t\t\t\t\"scalesProperties.textColor\": theme === \"dark\" ? \"#FFFFFF\" : \"#000000\",\n\t\t\t});\n\t\t}\n\t}, [theme]);\n\n\tuseEffect(() => {\n\t\tif (tvWidgetRef.current) {\n\t\t\tlet previousSymbol = tvWidgetRef.current.activeChart().symbol();\n\t\t\tlet previousResolution = tvWidgetRef.current.activeChart().resolution();\n\t\t\tlocalStorage.setItem(\"tradingview.chart.lastUsedTimeBasedResolution\", previousResolution);\n\t\t\tpreviousSymbol = previousSymbol.toUpperCase()\n\t\t\tvar unsubscribeUid = previousSymbol + '_#_' + previousResolution\n\t\t\tDatafeed.unsubscribeBars(unsubscribeUid)\n\t\t\ttvWidgetRef.current.activeChart().setSymbol(`BITDENEX:${symbol?.toUpperCase()}`, () => { });\n\n\t\t\ttvWidgetRef.current.activeChart().setResolution(localStorage.getItem(\"tradingview.chart.lastUsedTimeBasedResolution\"), () => { });\n\t\t}\n\t}, [symbol]);\n\n\treturn (\n\t\t<>\n\t\t\t<header className={styles.VersionHeader}></header>\n\t\t\t<div ref={chartContainerRef} className={styles.TVChartContainer} />\n\t\t</>\n\t);\n};\n\nexport default TVChartContainer;","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Bitcoin\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/btc-eur\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Bitcoin\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"Verify your Bitdenex Account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Bitcoin\",\n currency: \"Bitcoin\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"Start Trading Bitcoin\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n url: \"/exchange/btc-eur\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n // const [activeIndex, setActiveIndex] = useState(0);\n // const [navigation, setNavigation] = useState(navigationList[0]);\n\n return (\n <div className={cn(\"section-bg section-mb0\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"btc-eur\"}\n priceDecimalPrecision={2}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={styles.list}>\n {items.map((x, index) =>\n (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellBitcoin = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellBitcoin;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__2IW8R\",\"head\":\"Main_head__lT-eM\",\"title\":\"Main_title__Q28rN\",\"info\":\"Main_info__3erP0\",\"btns\":\"Main_btns__NO9rJ\",\"button\":\"Main_button__Q7752\",\"video\":\"Main_video__4gBrE\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Tron</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__58vtp\",\"stage\":\"Releases_stage__1aBB9\",\"wrap\":\"Releases_wrap__BUiGO\",\"title\":\"Releases_title__ZyEtK\",\"info\":\"Releases_info__GS8X0\",\"nav\":\"Releases_nav__RhZy2\",\"link\":\"Releases_link__ayqtF\",\"active\":\"Releases_active__miOV-\",\"dropdown\":\"Releases_dropdown__jQ+wf\",\"dropdownHead\":\"Releases_dropdownHead__8+2V9\",\"item\":\"Releases_item__VEzBC\",\"widgetList\":\"Releases_widgetList__psfsL\",\"linkText\":\"Releases_linkText__dQyPp\",\"copyright\":\"Releases_copyright__pEdOe\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__CgQG-\",\"arrow\":\"Item_arrow__H2azA\",\"preview\":\"Item_preview__MTSSW\",\"details\":\"Item_details__9z-R-\",\"category\":\"Item_category__LphxI\",\"title\":\"Item_title__zsnAY\",\"currency\":\"Item_currency__pti3p\",\"content\":\"Item_content__I33x0\",\"previewOdd\":\"Item_previewOdd__MxH1E\",\"detailsOdd\":\"Item_detailsOdd__0iu15\",\"imgSetting\":\"Item_imgSetting__khkq2\",\"button\":\"Item_button__ANN33\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport NewTVCharts from \"../../../components/NewTVCharts\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Tron\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/TRX-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Tron\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"verify your bitdenex account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Tron\",\n currency: \"Tron\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"start trading tron\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-tron.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-tron.jpg\",\n url: \"/exchange/TRX-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"trx-eur\"}\n priceDecimalPrecision={4}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellTron = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellTron;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__HSx8W\",\"head\":\"Main_head__y2ukz\",\"title\":\"Main_title__uzlXl\",\"info\":\"Main_info__TLSwf\",\"btns\":\"Main_btns__9RgAQ\",\"button\":\"Main_button__QfHo9\",\"video\":\"Main_video__JXcbH\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Ethereum</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__Kk7Bd\",\"stage\":\"Releases_stage__-oPHU\",\"wrap\":\"Releases_wrap__YcREq\",\"title\":\"Releases_title__NihLZ\",\"info\":\"Releases_info__9Kn1n\",\"nav\":\"Releases_nav__R+HGz\",\"link\":\"Releases_link__ie1Rg\",\"active\":\"Releases_active__QqCGz\",\"dropdown\":\"Releases_dropdown__nPQ+3\",\"dropdownHead\":\"Releases_dropdownHead__Ubs-F\",\"item\":\"Releases_item__xjsQm\",\"widgetList\":\"Releases_widgetList__wB0qj\",\"linkText\":\"Releases_linkText__6c+Cf\",\"copyright\":\"Releases_copyright__fSnt9\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__nAXDN\",\"arrow\":\"Item_arrow__pbIRr\",\"preview\":\"Item_preview__tCmFs\",\"details\":\"Item_details__ziamv\",\"category\":\"Item_category__NOaxB\",\"title\":\"Item_title__JlLUE\",\"currency\":\"Item_currency__yAGNt\",\"content\":\"Item_content__o0COB\",\"previewOdd\":\"Item_previewOdd__thNj1\",\"detailsOdd\":\"Item_detailsOdd__pmUCS\",\"imgSetting\":\"Item_imgSetting__PwNTJ\",\"button\":\"Item_button__SisUd\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Ethereum\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/ETH-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Ethereum\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"Verify Your Bitdenex Account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Ethereum\",\n currency: \"Ethereum\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"Start Trading Ethereum\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-ethereum.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-ethereum.jpg\",\n url: \"/exchange/ETH-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"eth-eur\"}\n priceDecimalPrecision={2}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellEthereum = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellEthereum;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__WeEV6\",\"head\":\"Main_head__xgLeD\",\"title\":\"Main_title__bL+cE\",\"info\":\"Main_info__ERix4\",\"btns\":\"Main_btns__mQtOP\",\"button\":\"Main_button__rzUmT\",\"video\":\"Main_video__Wf2bi\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Litecoin</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__rk4xZ\",\"stage\":\"Releases_stage__PBW5K\",\"wrap\":\"Releases_wrap__P6sLO\",\"title\":\"Releases_title__9Lpbr\",\"info\":\"Releases_info__OXd--\",\"nav\":\"Releases_nav__A4Xqp\",\"link\":\"Releases_link__-wAUu\",\"active\":\"Releases_active__Orfvh\",\"dropdown\":\"Releases_dropdown__s-vWn\",\"dropdownHead\":\"Releases_dropdownHead__gyHRj\",\"item\":\"Releases_item__lA7XL\",\"widgetList\":\"Releases_widgetList__qtlWa\",\"linkText\":\"Releases_linkText__pozI7\",\"copyright\":\"Releases_copyright__VOHfM\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__qna5y\",\"arrow\":\"Item_arrow__qWrVw\",\"preview\":\"Item_preview__IW5Cl\",\"details\":\"Item_details__R56IZ\",\"category\":\"Item_category__OnkkA\",\"title\":\"Item_title__EAmWE\",\"currency\":\"Item_currency__LKj1M\",\"content\":\"Item_content__lD987\",\"previewOdd\":\"Item_previewOdd__uvD-Q\",\"detailsOdd\":\"Item_detailsOdd__RG1eV\",\"imgSetting\":\"Item_imgSetting__QowbW\",\"button\":\"Item_button__SsfqW\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport NewTVCharts from \"../../../components/NewTVCharts\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Litecoin\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/LTC-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Litecoin\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"verify your bitdenex account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Litecoin\",\n currency: \"Litecoin\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"start trading litecoin\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-lite-coin.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-lite-coin.jpg\",\n url: \"/exchange/LTC-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"ltc-eur\"}\n priceDecimalPrecision={2}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellLitecoin = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellLitecoin;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__bNqz1\",\"head\":\"Main_head__c70bm\",\"title\":\"Main_title__7HQKd\",\"info\":\"Main_info__4AiF3\",\"btns\":\"Main_btns__v1EnB\",\"button\":\"Main_button__ZvcSa\",\"video\":\"Main_video__SIGNY\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Ripple/XRP</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__CgaEE\",\"stage\":\"Releases_stage__1XSO6\",\"wrap\":\"Releases_wrap__c9raj\",\"title\":\"Releases_title__o8hgl\",\"info\":\"Releases_info__KW4pV\",\"nav\":\"Releases_nav__5N-NB\",\"link\":\"Releases_link__ewmoW\",\"active\":\"Releases_active__whL+X\",\"dropdown\":\"Releases_dropdown__tmhl-\",\"dropdownHead\":\"Releases_dropdownHead__ZBGUB\",\"item\":\"Releases_item__Ciix2\",\"widgetList\":\"Releases_widgetList__FSop3\",\"linkText\":\"Releases_linkText__zDlun\",\"copyright\":\"Releases_copyright__V0pdA\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__1B26v\",\"arrow\":\"Item_arrow__cQWbm\",\"preview\":\"Item_preview__zHA0k\",\"details\":\"Item_details__XV-K3\",\"category\":\"Item_category__NCoyt\",\"title\":\"Item_title__TjgPU\",\"currency\":\"Item_currency__JFe8x\",\"content\":\"Item_content__fcJeR\",\"previewOdd\":\"Item_previewOdd__4QuD0\",\"detailsOdd\":\"Item_detailsOdd__iVgTM\",\"imgSetting\":\"Item_imgSetting__G0c3S\",\"button\":\"Item_button__o2+Td\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Ripple\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/XRP-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Ripple\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"verify your bitdenex account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Ripple\",\n currency: \"Ripple\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"start trading XRP\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-ripple-xrp.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-ripple-xrp.jpg\",\n url: \"/exchange/XRP-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"xrp-eur\"}\n priceDecimalPrecision={4}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellRipple = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellRipple;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__hTZGh\",\"head\":\"Main_head__xEUTt\",\"title\":\"Main_title__7ge8m\",\"info\":\"Main_info__eOlfx\",\"btns\":\"Main_btns__4ccFq\",\"button\":\"Main_button__6Nfj-\",\"video\":\"Main_video__+r96C\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Stellar</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__cYx0R\",\"stage\":\"Releases_stage__0j0bi\",\"wrap\":\"Releases_wrap__FDQUq\",\"title\":\"Releases_title__Z4mIT\",\"info\":\"Releases_info__pVrkk\",\"nav\":\"Releases_nav__LDRim\",\"link\":\"Releases_link__Gcdfn\",\"active\":\"Releases_active__3uQHu\",\"dropdown\":\"Releases_dropdown__ph0gy\",\"dropdownHead\":\"Releases_dropdownHead__LHjEX\",\"item\":\"Releases_item__hXc9N\",\"widgetList\":\"Releases_widgetList__JBpwi\",\"linkText\":\"Releases_linkText__vmnzn\",\"copyright\":\"Releases_copyright__QRqRX\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__R4NQD\",\"arrow\":\"Item_arrow__NsDy6\",\"preview\":\"Item_preview__7mBUb\",\"details\":\"Item_details__ziRQS\",\"category\":\"Item_category__jTC6u\",\"title\":\"Item_title__EM49n\",\"currency\":\"Item_currency__QIijI\",\"content\":\"Item_content__eb+cA\",\"previewOdd\":\"Item_previewOdd__v6dFQ\",\"detailsOdd\":\"Item_detailsOdd__tzMQY\",\"imgSetting\":\"Item_imgSetting__SIuiY\",\"button\":\"Item_button__9AGn1\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport NewTVCharts from \"../../../components/NewTVCharts\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Stellar\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/XLM-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Stellar\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"verify your bitdenex account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Stellar\",\n currency: \"Stellar\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"start trading Stellar\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-stellar.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-stellar.jpg\",\n url: \"/exchange/XLM-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n symbol={\"xlm-eur\"}\n priceDecimalPrecision={4}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellSteller = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellSteller;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__0kgjo\",\"wrap\":\"Main_wrap__XSI+6\",\"title\":\"Main_title__I6kc2\",\"text\":\"Main_text__7QC91\",\"bg\":\"Main_bg__Qrhv2\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h1\", styles.title)}>\n Start Trading Today\n </h1>\n <div className={styles.text}>\n Invest with incredibly <strong>low trading fees</strong>\n </div>\n <p>We don’t charge complicated taker or maker fees. Our fees are simple, transparent and lowest in the Netherlands. We are aiming to apply the lowest trading fees in Europe and eventually in the full crypto space.</p>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/market-pic@2x.png 2x\"\n src=\"/images/content/market-pic.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"details\":\"Details_details__TxHk3\"};","// extracted by mini-css-extract-plugin\nexport default {\"panel\":\"Panel_panel__DtKDE\",\"list\":\"Panel_list__VTyFn\",\"item\":\"Panel_item__geSoG\",\"price\":\"Panel_price__hvqzV\",\"icon\":\"Panel_icon__Uizgj\",\"details\":\"Panel_details__go3GN\",\"line\":\"Panel_line__6-tE7\",\"title\":\"Panel_title__B+E-a\",\"positive\":\"Panel_positive__pN8Mz\",\"negative\":\"Panel_negative__fAXaU\",\"money\":\"Panel_money__39gna\",\"foot\":\"Panel_foot__fl5Sw\",\"nav\":\"Panel_nav__s0xOG\",\"link\":\"Panel_link__5WrWZ\",\"active\":\"Panel_active__xTcWP\",\"button\":\"Panel_button__4wN57\",\"buttonNew\":\"Panel_buttonNew__VVonu\",\"dropdown\":\"Panel_dropdown__jI8-u\",\"chart\":\"Panel_chart__H-+lj\"};","import cn from \"classnames\";\nimport styles from \"./Panel.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst currency = [\n {\n title: \"Every trade – Buy or Sell\",\n heading: \"Fast And Secure\",\n p1: \"- Your personal online account\",\n p2: \"- Secure backup of all your data\",\n p3: \"- 24/7 Live prices\",\n p4: \"- Free News and Blogs\",\n image: \"/images/logo.svg\",\n url: \"/sign-up\",\n buttonText: \"Register Now\"\n },\n {\n title: \"Every trade – Buy or Sell\",\n heading: \"Low (0.50%) Fees\",\n p1: \"- Great trading platform\",\n p2: \"- Flexibility\",\n p3: \"- Instant buy and sell\",\n p4: \"- Security\",\n image: \"/images/logo.svg\",\n url: \"/sign-in\",\n buttonText: \"Start Trading\",\n },\n];\n\nconst Panel = () => {\n\n return (\n <div className={styles.panel}>\n <div className={styles.body}>\n <div className={styles.list}>\n {currency.map((x, index) => (\n <div className={styles.item} key={index} to={x.url}>\n <div className={styles.icon}>\n <img src={x.image} alt=\"Currency\" />\n </div>\n <div className={styles.details}>\n <div className={styles.line}>\n <div className={styles.title}>{x.title}</div>\n </div>\n <div className={styles.price}>{x.heading}</div>\n <div className={styles.currency}>{x.p1}</div>\n <div className={styles.currency}>{x.p2}</div>\n <div className={styles.currency}>{x.p3}</div>\n <div className={styles.currency}>{x.p4}</div>\n <div className={styles.currency}>\n <Link className={cn(\"button-small\", styles.buttonNew)} to=\"/sign-up\" >{x.buttonText}</Link>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div >\n );\n};\n\nexport default Panel;\n","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"Trade_table__5q8PS\",\"row\":\"Trade_row__vw3iC\",\"col\":\"Trade_col__okgOF\",\"button\":\"Trade_button__NvAR6\",\"chart\":\"Trade_chart__1Rrtq\",\"line\":\"Trade_line__rS+kZ\",\"favorite\":\"Trade_favorite__4Yz+d\",\"item\":\"Trade_item__yZt-A\",\"bdxicon\":\"Trade_bdxicon__SGv4H\",\"icon\":\"Trade_icon__bmgAz\",\"subtitle\":\"Trade_subtitle__WUMkb\",\"currency\":\"Trade_currency__avFGA\",\"positive\":\"Trade_positive__qWb1F\",\"negative\":\"Trade_negative__yEbTP\",\"label\":\"Trade_label__3Dw-b\",\"feeText\":\"Trade_feeText__+ZJR9\",\"feeTable\":\"Trade_feeTable__Ef7CJ\"};","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"Trade_table__9cGps\",\"row\":\"Trade_row__5B-id\",\"col\":\"Trade_col__XcGpj\",\"button\":\"Trade_button__V5vXE\",\"chartInner\":\"Trade_chartInner__vHjGZ\",\"line\":\"Trade_line__OH6oV\",\"favorite\":\"Trade_favorite__HBsK0\",\"item\":\"Trade_item__c4lpz\",\"icon\":\"Trade_icon__LB0UT\",\"subtitle\":\"Trade_subtitle__prYLb\",\"currency\":\"Trade_currency__U43uP\",\"positive\":\"Trade_positive__kjTjk\",\"negative\":\"Trade_negative__trVbJ\",\"chart\":\"Trade_chart__nO3DI\",\"label\":\"Trade_label__At3J9\"};","import React from \"react\";\nimport styles from \"./Trade.module.sass\";\nimport { getDigitsAfterDecimal } from \"../../../../../components/helper\";\n\nconst Trade = ({\n coinFee\n}) => {\n\n const sortedCoinFee = coinFee?.sort((a, b) => {\n const symbolA = a.symbol?.toUpperCase() || '';\n const symbolB = b.symbol?.toUpperCase() || '';\n\n if (symbolA < symbolB) return -1;\n if (symbolA > symbolB) return 1;\n return 0;\n });\n\n return (\n <div className={styles.trade}>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Coin</div>\n <div className={styles.col}>Network</div>\n <div className={styles.col}>Withdrawal Fee</div>\n </div>\n {sortedCoinFee?.map((x, index) => (\n <div className={styles.row} key={index}>\n <div className={styles.col}>\n {`${x.name?.toUpperCase()}(${x.symbol?.toUpperCase()})`}\n </div>\n <div className={styles.col}>\n {/* {x.network_slug === null ? `${x.name}` : `${x.network_slug} - ${x.name}`} */}\n {x.network_slug === null ? `${x.name}` : `${x.network_slug}`}\n </div>\n <div className={styles.col}>\n {getDigitsAfterDecimal(x.maxfee, x.decimalPrecision)}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default Trade;\n","import React from \"react\";\nimport styles from \"./Trade.module.sass\";\nimport CryptoFee from \"./CryptoFee\";\n\nconst depositFees = [\n {\n name: \"SEPA\",\n aFee: `${process.env.REACT_APP_SEPA_FEE} `,\n rfee: `${process.env.REACT_APP_SEPA_R_FEE}`,\n image: \"/images/content/fees-sepa.png\",\n mAmount: `${process.env.REACT_APP_SEPA_MAX_AMOUNT}`,\n nAmount: `${process.env.REACT_APP_SEPA_MIN_AMOUNT}`\n },\n {\n name: \"Ideal\",\n aFee: `${process.env.REACT_APP_IDEAL_FEE} `,\n rfee: `${process.env.REACT_APP_IDEAL_R_FEE}`,\n image: \"/images/content/ideal.svg\",\n mAmount: `${process.env.REACT_APP_IDEAL_MAX_AMOUNT}`,\n nAmount: `${process.env.REACT_APP_IDEAL_MIN_AMOUNT}`\n },\n // {\n // name: \"Online Banking\",\n // aFee: `${process.env.REACT_APP_OTHER_BANK_FEE} `,\n // rfee: `${process.env.REACT_APP_OTHER_BANK_R_FEE}`,\n // image: \"/images/content/online-banking.png\",\n // mAmount: `${process.env.REACT_APP_OTHER_BANK_MAX_AMOUNT}`,\n // nAmount: `${process.env.REACT_APP_OTHER_BANK_MIN_AMOUNT}`\n // },\n // {\n // name: \"GiroPay\",\n // aFee: process.env.REACT_APP_GIROPAY_ABSOLUTE_FEE,\n // rfee: process.env.REACT_APP_GIROPAY_RELATIVE_FEE,\n // image: \"/images/content/giropay.png\",\n // mAmount: process.env.REACT_APP_GIROPAY_MAX_AMOUNT,\n // nAmount: process.env.REACT_APP_GIROPAY_MIN_AMOUNT\n // },\n // {\n // name: \"Sofort Banking\",\n // aFee: process.env.REACT_APP_SOFORT_BANKING_ABSOLUTE_FEE,\n // rfee: process.env.REACT_APP_SOFORT_BANKING_RELATIVE_FEE,\n // image: \"/images/content/Sofort-Banking.png\",\n // mAmount: process.env.REACT_APP_SOFORT_BANKING_MAX_AMOUNT,\n // nAmount: process.env.REACT_APP_SOFORT_BANKING_MIN_AMOUNT\n // },\n {\n name: \"Bancontact\",\n aFee: process.env.REACT_APP_BANCONTACT_ABSOLUTE_FEE,\n rfee: process.env.REACT_APP_BANCONTACT_RELATIVE_FEE,\n image: \"/images/content/Bancontact.png\",\n mAmount: process.env.REACT_APP_BANCONTACT_MAX_AMOUNT,\n nAmount: process.env.REACT_APP_BANCONTACT_MIN_AMOUNT\n },\n // {\n // name: \"PayPal\",\n // aFee: process.env.REACT_APP_PAYPAL_ABSOLUTE_FEE,\n // rfee: process.env.REACT_APP_PAYPAL_RELATIVE_FEE,\n // image: \"/images/content/PayPal.png\",\n // mAmount: process.env.REACT_APP_PAYPAL_MAX_AMOUNT,\n // nAmount: process.env.REACT_APP_PAYPAL_MIN_AMOUNT\n // },\n {\n name: \"Przelewy24\",\n aFee: process.env.REACT_APP_PRZELEWY24_ABSOLUTE_FEE,\n rfee: process.env.REACT_APP_PRZELEWY24_RELATIVE_FEE,\n image: \"/images/content/Przelewy24.png\",\n mAmount: process.env.REACT_APP_PRZELEWY24_MAX_AMOUNT,\n nAmount: process.env.REACT_APP_PRZELEWY24_MIN_AMOUNT\n },\n {\n name: \"Online Uberweisen\",\n aFee: process.env.REACT_APP_ONLINE_UBERWEISEN_ABSOLUTE_FEE,\n rfee: process.env.REACT_APP_ONLINE_UBERWEISEN_RELATIVE_FEE,\n image: \"/images/content/Online-Uberweisen.png\",\n mAmount: process.env.REACT_APP_ONLINE_UBERWEISEN_MAX_AMOUNT,\n nAmount: process.env.REACT_APP_ONLINE_UBERWEISEN_MIN_AMOUNT\n },\n];\n\nconst bank = [\n {\n name: \"Bank deposit\",\n aFee: `${process.env.REACT_APP_BANK_WITHDRAWL_FEE} `,\n rfee: `${process.env.REACT_APP_BANK_WITHDRAWL_R_FEE}`,\n image: \"/images/content/bank.png\",\n mAmount: `${process.env.REACT_APP_BANK_WITHDRAWL_MAX_AMOUNT}`,\n nAmount: `${process.env.REACT_APP_BANK_WITHDRAWL_MIN_AMOUNT}`\n },\n];\n\nconst Trade = ({\n coinFee\n}) => {\n return (\n <div className={styles.trade}>\n <div className={styles.feeText}>Fiat Deposit fees</div>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Name</div>\n <div className={styles.col}>Absolute Fees</div>\n <div className={styles.col}>Relative Fees</div>\n <div className={styles.col}>Max amount</div>\n <div className={styles.col}>Min amount</div>\n </div>\n {depositFees.map((x, index) => (\n <div className={styles.row} key={index}>\n <div className={styles.col}>\n <div className={styles.item}>\n <div className={styles.icon}>\n <img src={x.image} alt=\"Online\" />\n </div>\n <div className={styles.label}>Name</div>\n {x.name}\n </div>\n </div>\n <div className={styles.col}>\n {x.aFee}\n </div>\n <div className={styles.col}>\n {x.rfee}\n </div>\n <div className={styles.col}>\n {x.mAmount}\n </div>\n <div className={styles.col}>\n {x.nAmount}\n </div>\n </div>\n ))}\n <div className={styles.feeText}>Fiat Withdraw fees</div>\n {bank.map((x, index) => (\n <div className={styles.row} key={index}>\n <div className={styles.col}>\n <div className={styles.item}>\n <div className={styles.icon}>\n <img src={x.image} alt=\"Coin\" />\n </div>\n {x.name}\n </div>\n </div>\n <div className={styles.col}>\n {x.aFee}\n </div>\n <div className={styles.col}>\n {x.rfee}\n </div>\n <div className={styles.col}>\n {x.mAmount}\n </div>\n <div className={styles.col}>\n {x.nAmount}\n </div>\n </div>\n ))}\n </div>\n {\n parseInt(process.env.REACT_APP_SHOW_FEE_TABLE) === 1 &&\n <>\n {/* <div className={styles.feeText}>Crypto Deposit Fee: Free</div> */}\n <div className={styles.feeText}>Crypto Withdraw Fee</div>\n <div className={styles.feeTable}>\n <CryptoFee coinFee={coinFee} />\n </div>\n </>\n }\n </div>\n );\n};\n\nexport default Trade;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Details.module.sass\";\nimport Panel from \"./Panel\";\nimport Trade from \"./Trade\";\n\nconst Details = ({\n coinFee,\n}) => {\n return (\n <div className={cn(\"section\", styles.details)}>\n <div className={cn(\"container\", styles.container)}>\n <Panel />\n <Trade\n coinFee={coinFee}\n />\n </div>\n </div>\n );\n};\n\nexport default Details;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Faq_title__xkomU\",\"nav\":\"Faq_nav__vgx3J\",\"btn\":\"Faq_btn__40UVu\",\"active\":\"Faq_active__a9fZw\",\"dropdown\":\"Faq_dropdown__GpapH\",\"list\":\"Faq_list__NBehf\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__wHLOK\",\"head\":\"Item_head__p4tdD\",\"number\":\"Item_number__9guil\",\"active\":\"Item_active__zXJO9\",\"arrow\":\"Item_arrow__Io8yn\",\"title\":\"Item_title__Ailtd\",\"body\":\"Item_body__4xf0g\",\"visible\":\"Item_visible__i6oKc\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item, index }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <div className={cn(className, styles.item)}>\n <div\n className={cn(styles.head, { [styles.active]: visible })}\n onClick={() => setVisible(!visible)}\n >\n <div className={styles.number}>\n {index < 9 && \"0\"}\n {index + 1}\n </div>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.arrow}>\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n </div>\n <div className={cn(styles.body, { [styles.visible]: visible })}>\n {item.content}\n </div>\n </div>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Faq.module.sass\";\nimport Item from \"./Item\";\n\nconst items = [\n {\n title: \"General\",\n items: [\n {\n title: \"Do you issue refunds?\",\n content:\n 'Yes, we issue refunds of fiat, when applicable. We don’t issue refund of crypto coins. Once the trade is successful, no refund can be issued.',\n },\n {\n title: \"Can I close my account any time?\",\n content:\n 'Yes, you can close your Bitdenex account anytime. You will get the chance to withdraw your cryptocurrency before closing the account.',\n },\n {\n title: \"What payment methods do you accept?\",\n content:\n 'We accept the post used method in your country at this stage. See our available methods, depends on your residence. ',\n },\n {\n title: \"Does it matter where I am from?\",\n content:\n 'Yes, All residence from an Embargoed country and the U.S.A. will not be accepted.',\n },\n {\n title: \"Is there any limit of referrals?\",\n content:\n 'No, there is no limit on the amount of referrals. See the applicable terms and conditions of the Referral Program.',\n },\n {\n title: \"Can you have more then one referral account?\",\n content:\n 'No, it is not allow to have multiple account for referrals. Any misuse of the Referral Program will be seen as a breach of the term of use.',\n },\n ],\n },\n];\n\nconst Faq = () => {\n const options = [];\n items.map((x) => options.push(x.title));\n\n const [category, setCategory] = useState(options[0]);\n\n return (\n <div className={cn(\"section-bg\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.top}>\n <h2 className={cn(\"h2\", styles.title)}>Frequently asked questions</h2>\n </div>\n <div className={styles.list}>\n {items\n .find((x) => x.title === category)\n .items.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n index={index}\n key={index}\n />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Faq;\n","import React, { useEffect, useState } from \"react\";\nimport Main from \"./Main\";\nimport Details from \"./Details\";\nimport Faq from \"./Faq\";\nimport MarginDetails from \"./MarginDetails\";\nimport requestHandler from \"../../actions/httpClient\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\n\nconst Fees = () => {\n const [loading, setLoading] = useState(false);\n const [leverageData, setLeverageData] = useState([]);\n const [coinFee, setCoinFee] = useState([]);\n\n // useEffect(() => {\n // getLeverageDataHandler();\n // }, []);\n\n // const getLeverageDataHandler = async () => {\n // setLoading(true);\n // try {\n // const getLeverageDataPayload = await requestHandler(\"marginDetails\", \"post\");\n // setLoading(false);\n // setLeverageData(getLeverageDataPayload?.data?.data);\n // }\n // catch (e) {\n // setLoading(false);\n // };\n // };\n\n useEffect(() => {\n getFeeHandler();\n }, []);\n\n const getFeeHandler = async () => {\n setLoading(true);\n try {\n const getFeePayload = await requestHandler(\"getFeeStructure\", \"post\");\n setLoading(false);\n setCoinFee(getFeePayload?.data?.data);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Main />\n <Details\n coinFee={coinFee}\n />\n {/* <MarginDetails\n leverageData={leverageData}\n /> */}\n <Faq />\n </>\n );\n};\n\nexport default Fees;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Education_container__e7EwZ\",\"info\":\"Education_info__NEFVp\",\"item\":\"Education_item__AfgfL\",\"preview\":\"Education_preview__B3Eo0\",\"category\":\"Education_category__0-70L\",\"body\":\"Education_body__+ORRU\",\"title\":\"Education_title__IrlQw\",\"content\":\"Education_content__9Pezv\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Education.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Slider from \"react-slick\";\nimport Icon from \"../../../components/Icon\";\n\nconst itemsOne = [\n {\n title: \"Bitdenex Terms of Service\",\n content: \"The Terms of Service applies to anyone who visits the Bitdenex website or uses the services offered by Bitdenex\",\n category: \"purple\",\n categoryText: \"terms\",\n image: \"/images/content/legal/education-pic-1.png\",\n image2x: \"/images/content/legal/education-pic-1@2x.png\",\n url: \"/terms-and-conditions\",\n },\n {\n title: \"Privacy Policy\",\n content: \"The privacy policy applies to anyone who visits the Bitdenex website or uses the services offered by Bitdenex\",\n category: \"red\",\n categoryText: \"policy\",\n image: \"/images/content/legal/education-pic-2.png\",\n image2x: \"/images/content/legal/education-pic-2@2x.png\",\n url: \"/privacy-policy\",\n },\n {\n title: \"Fraud prevention policy and Wwft\",\n content: \"The anti-fraud policy, anti-money laundering and terrorist financing act applies to all the customers\",\n category: \"green\",\n categoryText: \"policy\",\n image: \"/images/content/legal/education-pic-3.png\",\n image2x: \"/images/content/legal/education-pic-3@2x.png\",\n url: \"/aml-policy\",\n },\n];\n\nconst itemsTwo = [\n {\n title: \"Know your customer policy\",\n content: \"Bitdenex meets all the Know Your Customer policy and applies to anyone who joins the Exchange of Bitdenex\",\n category: \"purple\",\n categoryText: \"policy\",\n image: \"/images/content/legal/education-pic-4.png\",\n image2x: \"/images/content/legal/education-pic-4@2x.png\",\n url: \"/kyc-policy\",\n },\n {\n title: \"Location restriction\",\n content: \"List of restricted countries where we do not provide our services\",\n category: \"purple\",\n categoryText: \"others\",\n image: \"/images/content/legal/education-pic-5.png\",\n image2x: \"/images/content/legal/education-pic-5@2x.png\",\n url: \"/location-restriction\",\n },\n {\n title: \"Terms for referral program\",\n content: \"Applicable terms of conditions for our referral program\",\n category: \"red\",\n categoryText: \"terms\",\n image: \"/images/content/legal/education-pic-6.png\",\n image2x: \"/images/content/legal/education-pic-6@2x.png\",\n url: \"/terms-and-conditions-referral-program\",\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Education = () => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 3,\n slidesToScroll: 1,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"14\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"14\" />\n </SlickArrow>\n ),\n responsive: [\n {\n breakpoint: 1179,\n settings: {\n slidesToShow: 3,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n return (\n <div className={cn(\"section\", styles.education)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.info}>\n Below you can find all important information about our services\n </div>\n <div className={styles.wrapper}>\n <Slider\n className={cn(\"education-slider\", styles.slider)}\n {...settings}\n >\n {itemsOne.map((x, index) => (\n <Link className={styles.item} to={x.url} key={index}>\n <div className={cn(\"education-preview\", styles.preview)}>\n <div\n className={cn(\n \"category\",\n {\n \"category-purple\": x.category === \"purple\",\n },\n {\n \"category-green\": x.category === \"green\",\n },\n {\n \"category-red\": x.category === \"red\",\n },\n styles.category\n )}\n >\n {x.categoryText}\n </div>\n <img\n srcSet={x.image}\n src={x.image}\n alt=\"Education\"\n />\n </div>\n <div className={styles.body}>\n <div className={styles.title}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ))}\n </Slider>\n <Slider\n className={cn(\"education-slider\", styles.slider)}\n {...settings}\n >\n {itemsTwo.map((x, index) => (\n <Link className={styles.item} to={x.url} key={index}>\n <div className={cn(\"education-preview\", styles.preview)}>\n <div\n className={cn(\n \"category\",\n {\n \"category-purple\": x.category === \"purple\",\n },\n {\n \"category-green\": x.category === \"green\",\n },\n {\n \"category-red\": x.category === \"red\",\n },\n styles.category\n )}\n >\n {x.categoryText}\n </div>\n <img\n srcSet={x.image}\n src={x.image}\n alt=\"Education\"\n />\n </div>\n <div className={styles.body}>\n <div className={styles.title}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </Link>\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Education;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__Qq5n-\",\"container\":\"Main_container__K7bMC\",\"wrap\":\"Main_wrap__2KT+a\",\"stage\":\"Main_stage__Z8zc7\",\"title\":\"Main_title__CfoFL\",\"text\":\"Main_text__xQsAK\",\"form\":\"Main_form__SwRa1\",\"bg\":\"Main_bg__HZLRF\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <div className={cn(\"stage\", styles.stage)}>\n Legal Center\n </div>\n <h1 className={cn(\"h1\", styles.title)}>Information about our service</h1>\n <div className={styles.text}>\n Here you can find all the important information about using our service. The terms and conditions and the privacy policy apply to anyone who visits the website of Bitdenex or otherwise makes use of the services offered by Bitdenex.\n </div>\n <div className={styles.text}>\n <span>Important Legal Note: </span> Bitdenex B.V. is officially registered. Bitdenex B.V., operator of Bitdenex.com and Bitdenex.nl, is registered with the Dutch Central Bank, De Nederlandsche Bank. You can find us in the open public crypto service provider register on their website.\n </div>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/legal/legal-main@2x.png 2x\"\n src=\"/images/content/legal/legal-main.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","import React from \"react\";\nimport Education from \"../Contact/Education\";\nimport Main from \"./Main\";\n\nconst LegalCenter = () => {\n return (\n <>\n <Main />\n <Education />\n </>\n );\n};\n\nexport default LegalCenter;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__2otNY\",\"container\":\"Main_container__5QCh8\",\"wrap\":\"Main_wrap__2y5Za\",\"stage\":\"Main_stage__4iqMY\",\"title\":\"Main_title__FH4cb\",\"text\":\"Main_text__4eDWA\",\"form\":\"Main_form__UwEtg\",\"bg\":\"Main_bg__fu5UJ\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n {/* <div className={cn(\"stage\", styles.stage)}>\n Save your time with Stacks\n </div> */}\n <h1 className={cn(\"h1\", styles.title)}>Help Center</h1>\n <div className={styles.text}>\n Frequently Asked Questions\n </div>\n {/* <Form\n className={styles.form}\n value={search}\n setValue={setSearch}\n onSubmit={() => handleSubmit()}\n placeholder=\"Search anything\"\n type=\"text\"\n name=\"search\"\n icon=\"arrow-next\"\n /> */}\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/help-center@2x.png 2x\"\n src=\"/images/content/help-center.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Faq_title__npmFE\",\"nav\":\"Faq_nav__ZN4M0\",\"btn\":\"Faq_btn__oKkSY\",\"active\":\"Faq_active__PGIu6\",\"dropdown\":\"Faq_dropdown__mxYRA\",\"list\":\"Faq_list__c6FEf\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__IV94n\",\"head\":\"Item_head__Ii7xc\",\"number\":\"Item_number__dTjck\",\"active\":\"Item_active__4kpoi\",\"arrow\":\"Item_arrow__u+V1W\",\"title\":\"Item_title__eHuZg\",\"body\":\"Item_body__Pktbn\",\"visible\":\"Item_visible__m62kJ\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item, index }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <div className={cn(className, styles.item)}>\n <div\n className={cn(styles.head, { [styles.active]: visible })}\n onClick={() => setVisible(!visible)}\n >\n <div className={styles.number}>\n {index < 9 && \"0\"}\n {index + 1}\n </div>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.arrow}>\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n </div>\n <div className={cn(styles.body, { [styles.visible]: visible })}>\n {item.content}\n </div>\n </div>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Faq.module.sass\";\nimport Item from \"./Item\";\nimport Dropdown from \"../../../components/Dropdown\";\n\nconst items = [\n {\n title: \"General\",\n items: [\n {\n title: \"What is Bitdenex? \",\n content:\n 'Bitdenex is a European Cryptocurrency Exchange, also known as a trading platform, based in the Netherlands. At Bitdenex you can buy and sell coins such as Bitcoin, Ethereum, Litecoin and other coins quickly, safely and easily. In the exchange you can easily exchange coins with other available coins. ',\n },\n {\n title: \"Why Bitdenex? \",\n content:\n 'Buy and sell cryptocurrency or digital coins can be difficult, especially if you have not previously bought a coin. It can sometimes take a long time to investigate how you can actually buy a coin. Unfortunately, not all exchanges offer all coins. You can view per cryptocurrency you want to buy at which exchange that cryptocurrency is available. With Bitdenex Exchange you can buy and sell coins easily and quickly. You can choose from the payment methods such as (very popular) iDeal. Once the payment is successful, you will immediately receive the purchased coins in your Bitdenex account. ',\n },\n {\n title: \" What do you offer? \",\n content:\n 'Bitdenex provide opportunity to interested people to find interesting projects in cryptocurrency. On the other hand, individuals may find the right trading platform to fulfill their investment dreams. Bitdenex don’t give advice to anyone. We only create the opportunity for the people to buy and sell cryptocurrency easily. ',\n },\n {\n title: \"Does Bitdenex require a licence from the authorities ? \",\n content:\n 'NO. Bitdenex is a trading platform for cryptocurrencies. In this capacity Bitdenex does not require a license from both Dutch Central Bank (DNB) and Authorities Financiele Markets (AFM). Bitdenex don’t offer financial products to our customers where we need financial data from individual customers. Bitdenex only offers the possibility to buy and sell a cryptocurrency at your own risk. When a license is required, Bitdenex will apply to the authorities to get a license. ',\n },\n {\n title: \"Does it matter where I am from? \",\n content:\n 'Yes. Bitdenex offer our service in Europe. As a non-European citizen, you can’t get access to the trading platform. ',\n },\n\n {\n title: \"Do I need skills to use the service? \",\n content:\n 'No. Bitdenex trading platform is made user-friendly so it is simple and easy to trade. Moreover, Bitdenex team will provide you any support you need! ',\n },\n\n {\n title: \"Why should I join Bitdenex? \",\n content:\n 'By joining Bitdenex you will have a chance to contribute to the fair market and decentralized eco-system.',\n },\n\n {\n title: \" Why do I have to create an Bitdenex account? \",\n content:\n 'To prevent fraud and scam, it is necessary to create an account. Your account must be verified so that we can be sure that you are the right person. Through these identification and verification obligations we try to prevent fraud and scam as much as possible. You also need to validate a bank account once in your Bitdenex account. After all identification and verification obligations you can start trading digital coins. ',\n },\n\n {\n title: \" Can I withdraw my Give-aways or Bonuses received by Bitdenex? \",\n content:\n 'No, Bonuses and Give-aways given by Bitdenex cannot be withdrawn, you are not allowed to withdraw your received “Give-aways†or “Bonusesâ€, unless you make a first deposit and make a trade. Bonuses and Give-aways are forfeited upon any asset withdrawal. ',\n },\n ],\n },\n {\n title: \"Account Verification\",\n items: [\n {\n title: \"Why do I need to verify my account? \",\n content:\n 'The verification process is related to the obligations imposed by Dutch legislation and regulations to prevent fraud and scam. Based on the laws and regulations, Bitdenex are required to verify a number of details of our customers. ',\n },\n {\n title: \"How can I verify my Bitdenex account? \",\n content:\n 'You must complete the verification process when you sign up. During the process, you must provide documentation so that we can verify and validate your account. If you are not sure whether Bitdenex is the trading platform where you want to trade, create an account for free and take a look at the trading platform. ',\n },\n {\n title: \"How long does the verification takes? \",\n content:\n 'We aim to process your request within one working day after you have uploaded all the necessary documentation and completed the verification process. You will receive a confirmation immediately by e-mail after your account has been approved. If we require additional or replacement documentation, we will notify you by e-mail. You will have enough time and space to restore your account and provide the correct documentation. ',\n },\n {\n title: \"Which documents are required ? \",\n content: 'Documents required for verification are Copy of identity card, Proof of location / address / residence and Bank statement, photo of your bank card or screenshot of your online banking (payments may be hidden). Bitdenex reserves the right to request additional documentation at any time that the Dutch laws and regulations prescribe.'\n\n\n\n },\n ],\n },\n {\n title: \" Security\",\n items: [\n {\n title: \" Where can I change my data? \",\n content:\n 'You can change your data under the “My Account†button. Here you can change your account details, adjust settings for notifications and make changes to the security of your account. ',\n },\n {\n title: \"What to do when “password forgotten†or “create new passwordâ€? \",\n content:\n 'If you have forgotten your password, you must go through the process of “forgotten password†to create a new password. To create a new password you must first login and under the button “My Account†you can create a new password under “Securityâ€. ',\n },\n {\n title: \" Issue with Google Authenticator? \",\n content:\n 'You can restore your Two Factor Authentication (Google Authenticator) using your 16-Digit key. You should keep your 16-Digit key properly when using a 2FA. For other questions you can always email us. ',\n },\n ],\n },\n {\n title: \"Trading\",\n items: [\n {\n title: \" How long does a order take? \",\n content:\n ' All transactions are processed instantaneously. That means that your buy and sell order will be visible in your account within seconds. If you want to transfer coins to another Wallet (digital wallet), we depend on the Blockchain system and speed, which can cause some delays.',\n },\n {\n title: \"How do I trade digital coins? \",\n content:\n 'On the trading platform you can trade all available coins using a market or limit order. If you opt for a market order, we will fulfill your order directly based on the bid or late order of that moment. If you opt for a limit order, we will fulfill your order once the selected currency has reached your indicated purchase or sale price. When exchanging digital coins, the coins will immediately be exchanged on the basis of market order. Unfortunately, you can not indicate at what price you want to exchange certain coins. ',\n },\n {\n title: \"Cancellation of order? \",\n content:\n 'You can cancel your order in the trading platform until the moment of fulfillment. Market orders are instantaneously fulfilled, that means, your order is immediately fulfilled. If possible, you can change your limit order and cancel it until it is fulfilled. A completed transaction can no longer be canceled. ',\n },\n\n ],\n },\n\n {\n title: \"Deposit and withdraw\",\n items: [\n {\n title: \" How long does it take before deposits are visible? \",\n content:\n 'The speed of your deposit depends on your payment method. Bitcoin: With Bitcoins deposits we are dependent on the Blockchain network. Usually within 30-60 minutes, after 3 network confirmations your Bitcoins will be credited or debited from your account. Sometimes it can take longer because the network is too busy. ',\n },\n {\n title: \" Wallets changes, is that possible? \",\n content:\n 'NO. Unfortunately, you can not change your Bitcoin landfill address, Ethereum landfill address or other landfill addresses. You can, however, create new pouring addresses. In addition, you can continue to use your old addresses. You may create as many addresses as you think you need. ',\n },\n\n ],\n },\n\n\n\n];\n\nconst Faq = () => {\n const options = [];\n items.map((x) => options.push(x.title));\n\n const [category, setCategory] = useState(options[0]);\n\n return (\n <div className={cn(\"section\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.top}>\n <h2 className={cn(\"h2\", styles.title)}>Frequently asked questions</h2>\n <div className={styles.nav}>\n {items.map((x, index) => (\n <button\n className={cn(styles.btn, {\n [styles.active]: x.title === category,\n })}\n onClick={() => setCategory(x.title)}\n key={index}\n >\n {x.title}\n </button>\n ))}\n </div>\n <Dropdown\n className={styles.dropdown}\n value={category}\n setValue={setCategory}\n options={options}\n />\n </div>\n <div className={styles.list}>\n {items\n .find((x) => x.title === category)\n .items.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n index={index}\n key={index}\n />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Faq;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Faq from \"./Faq\";\n\nconst HelpCenter = () => {\n return (\n <>\n <Main />\n <Faq />\n </>\n );\n};\n\nexport default HelpCenter;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__DGgIR\",\"head\":\"Main_head__xctxc\",\"title\":\"Main_title__LKVVr\",\"breadcrumbs\":\"Main_breadcrumbs__nxXGR\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"KYC Policy\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>\n Know your customer policy\n </h1>\n <Breadcrumbs className={styles.breadcrumbs} items={breadcrumbs} />\n </div>\n <Player\n className={styles.player}\n image=\"/images/content/kyc/main.jpg\"\n image2x=\"/images/content/kyc/main.jpg\"\n />\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__x7Sw9\",\"content\":\"Article_content__MQ4HZ\",\"actions\":\"Article_actions__LZ-eg\",\"favorite\":\"Article_favorite__8Kj9r\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h3>General</h3>\n <p>\n Although there are no regulations regarding Bitcoin and other digital coins, also called cryptocurrency, Bitdenex follows European financial legislation as much as possible. This includes, among other things, the Know Your Customer policy and measures to prevent money laundering (AML).\n </p>\n <p>\n Regulations on financial services require Bitdenex to take measures against abuse. This regulation always has two sides. On the one hand protecting customers and on the other hand preventing financial violations (such as fraud and money laundering) through our services, including trading on the Exchange. In order to use our services, the customer must verify his / her identity at all times.\n </p>\n <p>\n The KYC policy consists of an extensive account verification process and a cooling down period for large transactions. </p>\n <h3>Account Verification</h3>\n <p>\n All coin/token providers and trading platforms must comply with the know your customer regulations.\n </p>\n <h3>Step 1: Identity verification</h3>\n <p>\n As a new customer, you must verify your account before we can trade and/or send/receive Bitcoins, Ethereums, Litecoins and other cryptocurrency. This process is a one-time process and it takes only a few minutes. Through our contracted third party service, you can easily go through the identity verification process, including AML/sanction watchlists and adverse media checks, and upload a valid ID-card.\n </p>\n <h3>Step 2: Bank verification</h3>\n <p>\n After your identity verification (step 1), you can immediately make a payment/deposit through the available payment method and verify your bank account. We will receive this transfer immediately, if not within a few minutes, depending on your bank.\n </p>\n <p>\n With a bank account verification, we want to prevent any abuse of our services. We take and will take all measures in the future to prevent fraud and abuse. Unfortunately, this market is attractive to cybercriminals, and they are very creative to provide unsuspecting innocent people with their bank account information (phishing), inform people or hack their computer and rob bank accounts.\n </p>\n <h3>Step 3: Residence verification</h3>\n <p>\n After the bank verification (Step 2), you can verify your residence, by providing a proof of your address.\n </p>\n <h3>\n Cooling down\n </h3>\n <p>\n If you do a major (Bitcoin, Ethereum, Litecoin or other cryptocurrency) transaction, a cooling down period applies.\n </p>\n <p>\n What does this period mean?\n <br />\n It means we hold these digital coins for a certain period of time. This period depends on the size of the transaction. In the light of fraud and fraud, the bank or payment provider will be given the opportunity to detect any fraud and report to us.\n <br />\n Almost all transactions are performed automatically. This also means that almost all transactions are through automated fraud detection. Some are suspiciously marked because of their specific feature. This transaction is executed manually after some control elements or in case of fraud, appropriate measures will be taken.\n </p>\n {/* <figure>\n <img srcSet=\"/images/content/kyc/article.jpg\" src=\"/images/content/kyc/article.jpg\" alt=\"Content\" />\n </figure>\n <h3>Cooling down Period </h3>\n <p>\n <strong>What does this period mean?</strong> <br />\n It means we hold these digital coins for a certain period of time. This period depends on the size of the transaction. In the light of fraud and fraud, the bank or payment provider will be given the opportunity to detect any fraud and report to us.\n </p>\n <p>\n Almost all transactions are performed automatically. This also means that almost all transactions are through automated fraud detection. Some are suspiciously marked because of their specific feature. This transaction is executed manually after some control elements or in case of fraud, appropriate measures have been taken.\n </p> */}\n </div>\n\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst KycPolicy = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default KycPolicy;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__1VtqU\",\"head\":\"Main_head__fb7eb\",\"title\":\"Main_title__Z7S0J\",\"info\":\"Main_info__C5EQx\",\"btns\":\"Main_btns__YABTN\",\"button\":\"Main_button__XJDoV\",\"video\":\"Main_video__8gQFR\",\"player-wrapper\":\"Main_player-wrapper__L1Wm+\",\"react-player\":\"Main_react-player__R-jty\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport ReactPlayer from 'react-player'\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Blockchain & Crypto</h1>\n <div className={styles.info}>\n A Beginner’s Guide to Blockchain & Crypto\n </div>\n <div className={styles.btns}>\n <button\n className={cn(\"button-stroke\", styles.button)}\n onClick={() =>\n scrollToRefCatalog.current.scrollIntoView({\n behavior: \"smooth\",\n })\n }\n >\n Video tutorial\n </button>\n </div>\n </div>\n <div className={styles.container}>\n <ReactPlayer url='https://www.youtube.com/watch?v=rIF3xmJDQPM'\n className={styles.main}\n width='1120px'\n height='655px'\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"form\":\"Catalog_form__1FwC2\",\"input\":\"Catalog_input__Wf7km\",\"result\":\"Catalog_result__1FKgn\",\"sorting\":\"Catalog_sorting__sdD85\",\"dropdown\":\"Catalog_dropdown__O-1nk\",\"nav\":\"Catalog_nav__flPjA\",\"link\":\"Catalog_link__qAh3G\",\"active\":\"Catalog_active__1-+dz\",\"list\":\"Catalog_list__JUotY\",\"card\":\"Catalog_card__MI8s0\",\"btns\":\"Catalog_btns__Fpe4m\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__4yn7C\",\"preview\":\"Card_preview__HD0v0\",\"category\":\"Card_category__uf8Jk\",\"head\":\"Card_head__7w3Mq\",\"body\":\"Card_body__s9fU3\",\"avatar\":\"Card_avatar__Gbe2h\",\"details\":\"Card_details__iBkkX\",\"title\":\"Card_title__gCoay\",\"author\":\"Card_author__7o7hs\",\"status\":\"Card_status__zwib9\"};","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"Modal_modal__i4E2C\",\"showModal\":\"Modal_showModal__gxPA3\",\"outer\":\"Modal_outer__uHz36\",\"close\":\"Modal_close__FQ27x\"};","import React, { useCallback, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { disableBodyScroll, clearAllBodyScrollLocks } from \"body-scroll-lock\";\nimport OutsideClickHandler from \"react-outside-click-handler\";\nimport cn from \"classnames\";\nimport styles from \"./Modal.module.sass\";\nimport Icon from \"../../../components/Icon\";\n\nconst Modal = ({ outerClassName, visible, onClose, children, title }) => {\n const escFunction = useCallback(\n (e) => {\n if (e.keyCode === 27) {\n onClose();\n }\n },\n [onClose]\n );\n\n useEffect(() => {\n document.addEventListener(\"keydown\", escFunction, false);\n return () => {\n document.removeEventListener(\"keydown\", escFunction, false);\n };\n }, [escFunction]);\n\n useEffect(() => {\n if (visible) {\n const target = document.querySelector(\"#modal\");\n disableBodyScroll(target);\n } else {\n clearAllBodyScrollLocks();\n }\n }, [visible]);\n\n return createPortal(\n visible && (\n <div id=\"modal\" className={styles.modal}>\n <div className={cn(styles.outer, outerClassName)}>\n <OutsideClickHandler onOutsideClick={onClose}>\n {title && (\n <div className={cn(\"h4\", styles.title)}>\n <Icon name=\"arrow-left\" size=\"32\" />\n {title}\n </div>\n )}\n {children}\n <button className={styles.close} onClick={onClose}>\n <Icon name=\"close\" size=\"24\" />\n </button>\n </OutsideClickHandler>\n </div>\n </div>\n ),\n document.body\n );\n};\n\nexport default Modal;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Play from \"../../../components/Play\";\nimport ReactPlayer from \"react-player\";\nimport Modal from \"../Modal\"\n\nconst Card = ({ className, item }) => {\n\n const [visibleModal, setVisibleModal] = useState(false);\n\n return (\n <>\n <div className={cn(className, styles.card)} onClick={() => { setVisibleModal(true); }}>\n <div className={styles.preview}>\n {item.categoryText && (\n <div\n className={cn(\n \"category\",\n {\n \"category-purple\": item.category === \"purple\",\n },\n {\n \"category-green\": item.category === \"green\",\n },\n {\n \"category-blue\": item.category === \"blue\",\n },\n styles.category\n )}\n >\n {item.categoryText}\n </div>\n )}\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n {item.play && <Play className=\"play\" small />}\n </div>\n <div className={styles.body}>\n <div className={styles.avatar}></div>\n <div className={styles.details}>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.author}>{item.author}</div>\n </div>\n {item.statusText && (\n <div\n className={cn(\n {\n \"category-stroke-green\": item.status === \"green\",\n },\n styles.status\n )}\n >\n {item.statusText}\n </div>\n )}\n </div>\n </div>\n {visibleModal && (\n <Modal\n visible={visibleModal}\n onClose={() => setVisibleModal(false)}\n >\n <ReactPlayer\n url={item.url}\n className={styles.main}\n width='1060px'\n height='655px'\n />\n </Modal>\n )}\n </>\n );\n};\n\nexport default Card;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Catalog.module.sass\";\nimport Dropdown from \"../../../components/Dropdown\";\nimport Card from \"../Card\";\n// import { articles } from \"../../../mocks/articles\";\nconst dateOptions = [\"Recently added\", \"Long added\"];\nconst sortingOptions = [\"Tutorial\", \"Usecase\", \"Trading\", \"Wallet\"];\n\nconst articles = [\n {\n id: 1,\n title: `How to switch from the regional Bitdenex exchange to Bitdenex International via the Bitdenex App?`,\n url: \"https://www.youtube.com/watch?v=sjKKkfLN9Yc\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n {\n id: 2,\n title: `How to buy and sell crypto with Limit Order via the Bitdenex App?`,\n url: \"https://www.youtube.com/watch?v=dgE4RrsqWLI\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n {\n id: 3,\n title: `How to buy and sell crypto instantly via the Bitdenex App?`,\n url: \"https://www.youtube.com/watch?v=3DnkYIt_B9A\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n {\n id: 4,\n title: `How to withdraw Crypto via the Bitdenex App?`,\n url: \"https://www.youtube.com/watch?v=5bH68cmAEKQ\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n {\n id: 6,\n title: `How to register on bitdenex app?`,\n url: \"https://www.youtube.com/watch?v=0p6hNFVW5sU\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n {\n id: 7,\n title: `How to deposit Fiat via Bitdenex app?`,\n url: \"https://www.youtube.com/watch?v=9VTseuxy9lI\",\n image: \"/images/content/blog/crypto-saving-account.jpg\",\n image2x: \"/images/content/blog/crypto-saving-account.jpg\",\n\n },\n]\n\nconst Catalog = ({ scrollToRefCatalog }) => {\n const [date, setDate] = useState(dateOptions[0]);\n const [sorting, setSorting] = useState(sortingOptions[0]);\n const [activeIndex, setActiveIndex] = useState(0);\n // const blogs = articles.slice(3);\n const handleSubmit = (e) => {\n alert();\n };\n\n return (\n <div\n className={cn(\"section-padding section-mb0\", styles.section)}\n ref={scrollToRefCatalog}\n >\n <div className={cn(\"container\", styles.container)}>\n <form className={styles.form} action=\"\" onSubmit={() => handleSubmit()}>\n {/* <input\n className={styles.input}\n type=\"text\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n name=\"search\"\n placeholder=\"Search anything about crypto\"\n required\n />\n <button className={cn(\"button-circle\", styles.result)}>\n <Icon name=\"search\" size=\"24\" />\n </button> */}\n </form>\n {/* <div className={styles.sorting}>\n <div className={styles.dropdown}>\n <Dropdown\n className={styles.dropdown}\n value={date}\n setValue={setDate}\n options={dateOptions}\n />\n </div>\n <div className={styles.nav}>\n {sortingOptions.map((x, index) => (\n <button\n className={cn(styles.link, {\n [styles.active]: index === activeIndex,\n })}\n onClick={() => setActiveIndex(index)}\n key={index}\n >\n {x}\n </button>\n ))}\n </div>\n <div className={cn(\"tablet-show\", styles.dropdown)}>\n <Dropdown\n className={styles.dropdown}\n value={sorting}\n setValue={setSorting}\n options={sortingOptions}\n />\n </div>\n </div> */}\n <div className={styles.list}>\n {articles.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </div>\n {/* <div className={styles.btns}>\n <button className={cn(\"button-stroke button-small\", styles.button)}>\n <span>Learn more</span>\n <Icon name=\"arrow-down\" size=\"16\" />\n </button>\n </div> */}\n </div>\n </div>\n );\n};\n\nexport default Catalog;\n","import React, { useRef } from \"react\";\nimport Main from \"./Main\";\nimport Catalog from \"./Catalog\";\nimport News from \"../../components/News\";\n\nconst LearnCrypto = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Catalog scrollToRefCatalog={scrollToRefCatalog} />\n </>\n );\n};\n\nexport default LearnCrypto;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Pay_container__evuSe\",\"head\":\"Pay_head__0zl9i\",\"logo\":\"Pay_logo__xLzEP\",\"title\":\"Pay_title__zTjhA\",\"info\":\"Pay_info__iSj4Y\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__RYCTD\",\"preview\":\"Card_preview__TT3DP\",\"wrap\":\"Card_wrap__FGCKl\",\"stage\":\"Card_stage__CklMs\",\"title\":\"Card_title__QS4g8\",\"content\":\"Card_content__yqrKE\",\"button\":\"Card_button__yKTAV\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <div className={cn(className, styles.card)}>\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n </div>\n <div className={styles.wrap}>\n <div className={cn(\"stage-small\", styles.stage)}>{item.stage}</div>\n\n <div className={styles.title}>{item.title}</div>\n <div className={styles.content}>{item.content}</div>\n {/* <Link\n className={cn(\"button-small\", styles.button)}\n to={item.url}\n >\n {item.buttonText}\n </Link> */}\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Pay.module.sass\";\nimport Slider from \"react-slick\";\nimport Image from \"../Image\";\nimport Icon from \"../Icon\";\nimport Card from \"./Card\";\n\nconst items = [\n {\n title: \"Send and spend crypto at ZERO fees\",\n content: \"Say goodbye to unfair fees and charges. Pay, send and receive crypto—all with zero fees.\",\n stage: \"Zero fees\",\n image: \"/images/content/zero-fee.png\",\n image2x: \"/images/content/zero-fee@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n buttonText: \"Start Trading\"\n },\n {\n title: \"Shop and pay with crypto\",\n content: \"Spend crypto at stores and businesses that support Bitdenex Pay.\",\n stage: \"Shop with crypto\",\n image: \"/images/content/shop.png\",\n image2x: \"/images/content/shop@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/market\" : \"/sign-up\",\n buttonText: \"View Coins\"\n },\n {\n title: \"Send crypto to friends and family\",\n content:\"Bitdenex Pay is a fast and safe way to send crypto to your friends and family, all with a single tap.\",\n stage: \"Send crypto\",\n image: \"/images/content/send-crypto.png\",\n image2x: \"/images/content/send-crypto@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/buy-crypto\" : \"/sign-up\",\n buttonText: \"Buy Now\"\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Pay = ({ classSection }) => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n adaptiveHeight: true,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n };\n\n return (\n <div className={cn(classSection, styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n {/* <div className={styles.logo}>\n <Image\n className={styles.pic}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"BitCloud\"\n />\n </div> */}\n <h2 className={cn(\"h3\", styles.title)}>\n Introducing <span> Bitdenex Pay </span> \n </h2>\n {/* <div className={styles.info}>\n A creative exchange that lead and inspire\n </div> */}\n </div>\n <div className={styles.wrapper}>\n <Slider className=\"news-slider\" {...settings}>\n {items.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pay;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__pgxlK\",\"container\":\"Main_container__9XiNM\",\"wrap\":\"Main_wrap__hSrZ5\",\"stage\":\"Main_stage__ZMlyr\",\"title\":\"Main_title__3B4Yo\",\"text\":\"Main_text__yI2Vm\",\"form\":\"Main_form__jRyRA\",\"bg\":\"Main_bg__5iaw6\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Main = () => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <div className={cn(\"stage\", styles.stage)}>\n Pay and get paid with crypto\n </div>\n <h3 className={cn(\"h3\", styles.title)}> Welcome to <span> Bitdenex Pay </span> </h3>\n <div className={styles.text}>\n Bitdenex Pay is a contactless, borderless and secure cryptocurrency payment technology designed by Bitdenex. Shop with crypto or send crypto to friends and family worldwide.\n </div>\n <Link className={cn(\"button\", styles.button)} to= \"/\" >\n Download Now\n </Link>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/bitdenex-pay@2x.png\"\n src=\"/images/content/bitdenex-pay.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Merchant_head__2hSJt\",\"stage\":\"Merchant_stage__+wK4R\",\"wrap\":\"Merchant_wrap__qv-M5\",\"title\":\"Merchant_title__ux9rW\",\"info\":\"Merchant_info__plmQz\",\"nav\":\"Merchant_nav__dnFl1\",\"link\":\"Merchant_link__oLNp-\",\"active\":\"Merchant_active__FCd+e\",\"dropdown\":\"Merchant_dropdown__ThcSx\",\"dropdownHead\":\"Merchant_dropdownHead__VZkPI\",\"item\":\"Merchant_item__CsWcR\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__Xhmr0\",\"arrow\":\"Item_arrow__tsXSP\",\"preview\":\"Item_preview__0VXW7\",\"details\":\"Item_details__z4v3L\",\"category\":\"Item_category__ywBoz\",\"title\":\"Item_title__sVIWj\",\"currency\":\"Item_currency__kmMo5\",\"content\":\"Item_content__iDsOX\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item }) => {\n return (\n <Link\n className={cn(className, styles.item)}\n to={item.url}\n >\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n\n </Link>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Merchant.module.sass\";\nimport Item from \"./Item\";\n\n\nconst items = [\n {\n id: 1,\n slug: 'get-bitdenex-pay-for-your-business',\n title: \"Get Bitdenex Pay for your business\",\n currency: \"Bitdenex Pay For Business\",\n content: `Accept cryptocurrency payments and tap into our growing Pay users.`,\n category: \"red\",\n categoryText: \"new\",\n image: \"/images/content/pay/pay-merchant.jpg\",\n image2x: \"/images/content/pay/pay-merchant@2x.jpg\",\n url: \"/bitdenex-partners\",\n }\n];\n\nconst Merchant = ({ scrollToRef }) => {\n const [activeIndex, setActiveIndex] = useState(0);\n \n return (\n <div className={cn(\"section\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={cn(\"stage-small\", styles.stage)}></div>\n <div className={styles.wrap}>\n <h3 className={cn(\"h3\", styles.title)}> Become a Merchant </h3>\n </div>\n </div>\n <div className={styles.list}>\n {items.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Merchant;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__JDgZI\",\"stage\":\"Releases_stage__1bSqS\",\"wrap\":\"Releases_wrap__+NB5x\",\"title\":\"Releases_title__CPX4J\",\"info\":\"Releases_info__bJlVY\",\"nav\":\"Releases_nav__yk99p\",\"link\":\"Releases_link__CkCKB\",\"active\":\"Releases_active__FZF5W\",\"dropdown\":\"Releases_dropdown__wiUnR\",\"dropdownHead\":\"Releases_dropdownHead__4Sb+G\",\"item\":\"Releases_item__J7RWy\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__fRZEX\",\"arrow\":\"Item_arrow__wjcQE\",\"preview\":\"Item_preview__qY1V-\",\"details\":\"Item_details__2lovQ\",\"category\":\"Item_category__K7Ip8\",\"title\":\"Item_title__hQkBh\",\"currency\":\"Item_currency__Dz5dX\",\"content\":\"Item_content__e97aR\",\"previewOdd\":\"Item_previewOdd__300Co\",\"detailsOdd\":\"Item_detailsOdd__-MrsH\",\"imgSetting\":\"Item_imgSetting__F9EgV\",\"button\":\"Item_button__IDbVg\"};","import cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n {/* <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button> */}\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n {/* <div className={styles.currency}>{item.currency}</div> */}\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n {/* <div className={styles.currency}>{item.currency}</div> */}\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n {/* <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button> */}\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\n\n\nconst items = [\n {\n id: '0',\n title: \"Pay with Bitdenex Customer ID\",\n currency: \"Bitcoin\",\n content: \"To pay instantly, simply type or paste your recipient’s Customer ID.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/pay/pay-customer-id.jpg\",\n image2x: \"/images/content/pay/pay-customer-id@2x.jpg\",\n url: \"#\",\n preUrl: \"#\",\n },\n {\n id: '1',\n title: \"Scan to pay\",\n currency: \"Bitcoin\",\n content: \"With Bitdenex Pay, to pay someone via QR code, simply scan their Bitdenex Pay QR code with your Bitdenex app.\",\n category: \"green\",\n categoryText: \"Verify your Bitdenex Account\",\n image: \"/images/content/pay/pay-scan.jpg\",\n image2x: \"/images/content/pay/pay-scan@2x.jpg\",\n url: \"#\",\n preUrl: \"#\",\n },\n {\n id: '2',\n title: \"Share QR Code to receive\",\n currency: \"Bitcoin\",\n content: \"With Bitdenex Pay, to receive crypto, simply share your Bitdenex Pay QR code within your Bitdenex app.\",\n category: \"green\",\n categoryText: \"Start Trading Bitcoin\",\n image: \"/images/content/pay/pay-receive.jpg\",\n image2x: \"/images/content/pay/pay-receive@2x.jpg\",\n url: \"#\",\n preUrl: \"#\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n return (\n <div className={cn(\"section-bg section-mb0\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n {/* <div className={styles.wrap}>\n <div className={cn(\"stage\", styles.stage)}>\n <h3 className={cn(\"h3\", styles.title)}> Introducing <span> Bitdenex Pay </span> </h3>\n </div>\n </div> */}\n\n <div className={styles.list}>\n {items.map((x, index) =>\n (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Steps_head__HsISj\",\"title\":\"Steps_title__cWDeb\",\"info\":\"Steps_info__pvY36\",\"list\":\"Steps_list__v7uGs\",\"item\":\"Steps_item__C9ONy\",\"preview\":\"Steps_preview__dTCOq\",\"number\":\"Steps_number__wLd2M\",\"subtitle\":\"Steps_subtitle__v5ouh\",\"content\":\"Steps_content__jBTtH\",\"details\":\"Steps_details__pKDj6\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Steps.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst items = [\n {\n title: \"Set your payment preferences\",\n image2x: \"/images/content/pay/pay-step-1@2x.png\",\n image: \"/images/content/pay/pay-step-1.png\",\n content: \"Payment Priority Order lets you choose which cryptocurrencies you want to spend, in the order you prefer.\",\n },\n {\n title: \"Lightning fast payments\",\n image2x: \"/images/content/pay/pay-step-2@2x.png\",\n image: \"/images/content/pay/pay-step-2.png\",\n content: \"Instantly send crypto to your friends and family worldwide.\",\n },\n {\n title: \"50+ cryptocurrencies to choose from\",\n image2x: \"/images/content/pay/pay-step-3@2x.png\",\n image: \"/images/content/pay/pay-step-3.png\",\n content: \"Send and spend your favourite cryptocurrencies with Bitdenex Pay.\",\n },\n {\n title: \"Earn money\",\n image2x: \"/images/content/pay/pay-step-4@2x.png\",\n image: \"/images/content/pay/pay-step-4.png\",\n content: \"Become smart trader to earn.\",\n },\n];\n\nconst Steps = ({ scrollToRef }) => {\n return (\n <div className={cn(\"section\", styles.section)} ref={scrollToRef}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>Freedom to choose how you pay</h2>\n <div className={styles.info}>\n Bitdenex supports a variety of the most popular cryptocurrencies. Get the benefits of Bitdenex Pay and simple to use Exchange.\n </div>\n </div>\n <div className={styles.list}>\n {items.map((x, index) => (\n <div className={styles.item} key={index}>\n <div className={styles.preview}>\n <img\n srcSet={`${x.image2x} 2x`}\n src={x.image}\n alt={`Step ${index + 1}`}\n />\n </div>\n <div className={styles.number}>Step {index + 1}</div>\n <div className={styles.subtitle}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n ))}\n </div>\n {/* <div className={styles.details}>\n <Link className={cn(\"button\", styles.button)} to={localStorage.getItem('signature') ? 'exchange/BTC-EUR' : 'sign-up'}>\n Start Earning Today\n </Link>\n </div> */}\n </div>\n </div>\n );\n};\n\nexport default Steps;\n","import React, { useRef } from \"react\";\nimport Pay from \"../../components/Pay\";\nimport Main from \"./Main\";\nimport Merchant from \"./Merchant\";\nimport Releases from \"./Releases\";\nimport Steps from \"./Steps\";\n\nconst BitdenexPay = () => {\n const scrollToRef = useRef(null);\n return (\n <>\n <Main />\n <Pay classSection=\"section-bg\" />\n <Steps />\n <Releases scrollToRef={scrollToRef} />\n <Merchant scrollToRef={scrollToRef} />\n\n\n </>\n );\n};\n\nexport default BitdenexPay;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__OH6xN\",\"container\":\"Main_container__7nRMq\",\"wrap\":\"Main_wrap__lnNas\",\"stage\":\"Main_stage__sh9tc\",\"title\":\"Main_title__CAQ3f\",\"text\":\"Main_text__r0Fnq\",\"form\":\"Main_form__pZUzi\",\"bg\":\"Main_bg__ZdYqj\"};","import cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <div className={cn(\"stage\", styles.stage)}>\n Crypto payments for your business\n </div>\n <h1 className={cn(\"h1\", styles.title)}> Bitdenex Partners </h1>\n <div className={styles.text}>\n Bitdenex Pay is a contactless, borderless, and secure cryptocurrency payment system designed by Bitdenex. Make your business crypto-friendly and start accepting Bitcoin and other popular cryptocurrencies for sales made online and offline.\n </div>\n \n <a className={cn(\"button\", styles.button)} href=\"https://docs.google.com/forms/d/e/1FAIpQLSe5lK_JhdFKbnMO8f0pa2MSHlLxiKguokMDVvuhrFfFzJZN0g/viewform?usp=sf_link\" target=\"_blank\">\n Become a Merchant\n </a>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/partners/main-partner@2x.png 2x\"\n src=\"/images/content/partners/main-partner.png\"\n alt=\"Cards\"\n />\n </div>\n\n </div>\n\n </div>\n );\n}; \n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Pay_container__ZOtxF\",\"head\":\"Pay_head__JJ5VJ\",\"logo\":\"Pay_logo__ceTJc\",\"title\":\"Pay_title__hIGRE\",\"info\":\"Pay_info__gGCry\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__eSvXx\",\"preview\":\"Card_preview__Qr+iC\",\"wrap\":\"Card_wrap__rfLnq\",\"stage\":\"Card_stage__ok1iZ\",\"title\":\"Card_title__z4g+Y\",\"content\":\"Card_content__ka9v0\",\"button\":\"Card_button__WpYLX\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <div className={cn(className, styles.card)}>\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n </div>\n <div className={styles.wrap}>\n <div className={cn(\"stage-small\", styles.stage)}>{item.stage}</div>\n\n <div className={styles.title}>{item.title}</div>\n <div className={styles.content}>{item.content}</div>\n <Link\n className={cn(\"button-small\", styles.button)}\n to={item.url}\n >\n {item.buttonText}\n </Link>\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Pay.module.sass\";\nimport Slider from \"react-slick\";\nimport Image from \"../Image\";\nimport Icon from \"../Icon\";\nimport Card from \"./Card\";\n\nconst items = [\n {\n title: \"Direct Merchant\",\n content: `Physical or online store owners who wish to sell products and services and \n receive payments in preferred Crypto using Bitdenex Pay.`,\n // stage: \"Zero fees\",\n image: \"/images/content/zero-fee.png\",\n image2x: \"/images/content/zero-fee@2x.png\",\n url: '#',\n buttonText: \"Start Trading\"\n },\n // {\n // title: \"Shop and pay with crypto\",\n // content: \"Spend crypto at stores and businesses that support Bitdenex Pay.\",\n // stage: \"Shop with crypto\",\n // image: \"/images/content/shop.png\",\n // image2x: \"/images/content/shop@2x.png\",\n // url: localStorage.getItem(\"signature\") ? \"/market\" : \"/sign-up\",\n // buttonText: \"View Coins\"\n // },\n // {\n // title: \"Send crypto to friends and family\",\n // content:\"Bitdenex Pay is a fast and safe way to send crypto to your friends and family, all with a single tap.\",\n // stage: \"Send crypto\",\n // image: \"/images/content/send-crypto.png\",\n // image2x: \"/images/content/send-crypto@2x.png\",\n // url: localStorage.getItem(\"signature\") ? \"/buy-crypto\" : \"/sign-up\",\n // buttonText: \"Buy Now\"\n // },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Pay = ({ classSection }) => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n adaptiveHeight: true,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n };\n\n return (\n <div className={cn(classSection, styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n {/* <div className={styles.logo}>\n <Image\n className={styles.pic}\n src=\"/images/logo-light.svg\"\n srcdark=\"/images/logo-dark.svg\"\n alt=\"BitCloud\"\n />\n </div> */}\n <h2 className={cn(\"h3\", styles.title)}>\n Introducing <span> Direct merchant </span>\n </h2>\n {/* <div className={styles.info}>\n A creative exchange that lead and inspire\n </div> */}\n </div>\n <div className={styles.wrapper}>\n <Slider className=\"news-slider\" {...settings}>\n {items.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pay;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Popular_container__EWCTH\",\"head\":\"Popular_head__Nh75W\",\"title\":\"Popular_title__YAPSp\",\"info\":\"Popular_info__A8aci\",\"wrapper\":\"Popular_wrapper__cx0Lc\",\"btns\":\"Popular_btns__b0In5\",\"button\":\"Popular_button__fkxTU\"};","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"Card_card__8wZKq\",\"preview\":\"Card_preview__qxOwK\",\"title\":\"Card_title__Zp0iD\",\"content\":\"Card_content__R2NpP\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Card.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Card = ({ className, item }) => {\n return (\n <div className={cn(className, styles.card)}>\n <div className={styles.preview}>\n <img srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Card\" />\n </div>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.content}>{item.content}</div>\n {/* <Link\n className={cn(\"button-small\", styles.button)}\n to={item.url}\n >\n {item.button}\n </Link> */}\n </div>\n );\n};\n\nexport default Card;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Popular.module.sass\";\nimport Slider from \"react-slick\";\nimport Icon from \"../../../components/Icon\";\nimport Card from \"./Card\";\n\nconst items = [\n {\n title: \"Sell with low trading fee\",\n content: \"To pay instantly, simply type or paste your recipient’s Customer ID.\",\n button: \"Start Trading\",\n image: \"/images/content/partners/card-pic-1.png\",\n image2x: \"/images/content/partners/card-pic-1@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n {\n title: \"Crypto customers for your business\",\n content: \"With Bitdenex Pay, to pay someone via QR code, simply scan their Bitdenex Pay QR code with your Bitdenex app.\",\n button: \"Start Trading\",\n image: \"/images/content/partners/card-pic-2.png\",\n image2x: \"/images/content/partners/card-pic-2@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n {\n title: \"Get paid in your preferred cryptocurrency\",\n content: \"With Bitdenex Pay, to receive crypto, simply share your Bitdenex Pay QR code within your Bitdenex app.\",\n button: \"Start Trading\",\n image: \"/images/content/partners/card-pic-3.png\",\n image2x: \"/images/content/partners/card-pic-3@2x.png\",\n url: localStorage.getItem(\"signature\") ? \"/exchange/BTC-EUR\" : \"/sign-up\",\n },\n];\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Popular = ({ classSection }) => {\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 2,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n infinite: false,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"18\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"18\" />\n </SlickArrow>\n ),\n },\n },\n ],\n };\n\n return (\n <div className={cn(\"section-bg section-mb0\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>\n Why Bitdenex Pay?\n </h2>\n {/* <div className={styles.info}>\n Reasons why to trade and invest with us.\n </div> */}\n </div>\n <div className={styles.wrapper}>\n <Slider className=\"popular-slider\" {...settings}>\n {items.map((x, index) => (\n <Card className={styles.card} item={x} key={index} />\n ))}\n </Slider>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Popular;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Partners from '../../components/Partners'\nimport Popular from './Popular'\nconst BitdenexPartners = () => {\n return (\n <>\n <Main />\n <Popular/>\n <Partners/>\n </>\n );\n};\n\nexport default BitdenexPartners;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__eHG3S\",\"container\":\"Main_container__+h5Eq\",\"wrap\":\"Main_wrap__kFXUf\",\"stage\":\"Main_stage__6Mr41\",\"title\":\"Main_title__onbz0\",\"text\":\"Main_text__Z3r9z\",\"form\":\"Main_form__BlO8k\",\"bg\":\"Main_bg__ZrdLe\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport QrCode from \"../../../components/QrCode\";\n\nconst Main = () => {\n let url2 = 'http://173.16.1.143:3000/user-redirect'\n\n const linkHandler = () => {\n if (navigator.userAgent.match(/Android/)) {\n window.location.assign(\"https://play.google.com/store/apps/details?id=com.bitdenex\")\n\n } else if (navigator.userAgent.match(/iPhone|iPad|iPod/)) {\n\n window.location.assign(\"https://apps.apple.com/in/app/bitdenex-buy-sell-crypto/id1640819532\", '_blank');\n\n } else {\n\n }\n }\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <div className={cn(\"stage\", styles.stage)}>\n Download the app\n </div>\n <h3 className={cn(\"h3\", styles.title)}> Trade. <span> Anywhere.</span> </h3>\n <div className={styles.text}>\n All the power of Bitdenex cryptocurrency exchange, in the palm of your hand. Download the Bitdenex mobile crypto trading app today.\n </div>\n <div>\n <QrCode value={process.env.REACT_APP_MOBILE_REDIRECT_URL} logoPath=\"/images/Qrcode.jpg\" width={40} height={40} />\n </div>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/bitdenex-pay@2x.png\"\n src=\"/images/content/bitdenex-pay.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","import React from \"react\";\nimport Main from \"./Main\";\n\n\nconst BitdenexApp = () => {\n if (navigator.userAgent.match(/Android/)) {\n window.location.assign(process.env.REACT_APP_ANDROID_APP_URL)\n } else if (navigator.userAgent.match(/iPhone|iPad|iPod/)) {\n window.location.assign(process.env.REACT_APP_IOS_APP_URL, '_blank');\n }\n\n return (\n <Main />\n );\n};\n\nexport default BitdenexApp;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__37b1q\",\"head\":\"Main_head__Ap63e\",\"title\":\"Main_title__UQTxh\",\"breadcrumbs\":\"Main_breadcrumbs__3tLC-\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Breadcrumbs from \"../../../components/Breadcrumbs\";\nimport Player from \"../../../components/Player\";\n\nconst breadcrumbs = [\n {\n title: \"Legal Center\",\n url: \"/legal-center\",\n },\n {\n title: \"Terms & Conditions\",\n },\n];\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h2\", styles.title)}>\n Application: Token/Coin Listing on Bitdenex\n </h2>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__4SZJ4\",\"content\":\"Article_content__SzavR\",\"actions\":\"Article_actions__FPh23\",\"favorite\":\"Article_favorite__aipfV\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport PDF from \"./Documents/Listing_and_Delisting_Policy.pdf\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\">Complete Asset Listing & Policy can be downloaded and viewed here</a>\n </p>\n <h4>Token/Coin Listing on Bitdenex</h4>\n <p>\n As we continue to expand, we aim to make the best efforts to select top-quality tokens/coins, and allow traders easy access to their preferred crypto assets!\n </p>\n <h4>How to get my project token/coin listed on Bitdenex?</h4>\n <p>The process is straightforward — simply submit your application via this <a href=\"https://docs.google.com/forms/d/e/1FAIpQLSf9M8EDfqxl_Hje0Rjf4Z-og35psXsL9CzZ445Kyf2tRyqaAw/viewform?usp=share_link\" target=\"_blank\">Google form! </a>Our spot team will reach back out if you pass the initial review.</p>\n <h3>What to expect during the review process?</h3>\n <p>We may require additional information. However, this does not guarantee that your\n project token/coin will be listed on Bitdenex. If your project passes our initial review, a\n dedicated Business Development (BD) manager will contact you via email.</p>\n\n <h3>What to expect after my project token/coin gets listed successfully?</h3>\n <p>Please update the dedicated BD manager on your project progress regularly (i.e. each week or every month), and provide Bitdenex with promotional resources.</p>\n\n <p>Thank you for your support!</p>\n\n <h3>NOTE: </h3>\n <p>\n 1. Bitdenex mandates a strict and one-way non-disclosure agreement (NDA) at the first point\n of contact\n </p>\n <p>\n 2. Bitdenex may, at its sole discretion,won’t charge any listing fees, when applicable.\n </p>\n {/* <figure>\n <img src=\"/images/content/terms/article.jpg\" alt=\"Content\" />\n </figure> */}\n\n <p>\n <a href=\"https://docs.google.com/forms/d/e/1FAIpQLSf9M8EDfqxl_Hje0Rjf4Z-og35psXsL9CzZ445Kyf2tRyqaAw/viewform?usp=share_link\" target=\"_blank\">Click here to Start Trading</a>\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__Anx9N\",\"container\":\"Main_container__lrv8Q\",\"wrap\":\"Main_wrap__g1WMx\",\"title\":\"Main_title__9n4VF\",\"bg\":\"Main_bg__HaLL1\"};","import cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>Page Not Found!\n </h2>\n <Link className={cn(\"button\", styles.button)} to=\"/\">\n Go to Home page.\n </Link>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/page-not-found@2x.png 2x\"\n src=\"/images/content/page-not-found.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","import React from \"react\";\nimport Main from \"./Main\";\n\nconst HelpCenter = () => {\n return (\n <>\n <Main />\n </>\n );\n};\n\nexport default HelpCenter;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Education_container__J2JlX\",\"info\":\"Education_info__QITnX\",\"item\":\"Education_item__QOn8A\",\"preview\":\"Education_preview__qJ4ZG\",\"category\":\"Education_category__0Sd4N\",\"body\":\"Education_body__RwrZG\",\"title\":\"Education_title__VVpOQ\",\"content\":\"Education_content__nrHe8\",\"infoNew\":\"Education_infoNew__GFr2g\",\"buttonClass\":\"Education_buttonClass__aLzyW\",\"newContainer\":\"Education_newContainer__FlbCz\",\"previewNew\":\"Education_previewNew__xlReU\",\"categoryNew\":\"Education_categoryNew__d3ZKh\",\"firstImage\":\"Education_firstImage__3LTYp\",\"bannerText\":\"Education_bannerText__Cc6IR\",\"secondImage\":\"Education_secondImage__PlE5b\"};","// extracted by mini-css-extract-plugin\nexport default {\"wrap\":\"Funds_wrap__wj1l8\",\"line\":\"Funds_line__ioGTZ\",\"form\":\"Funds_form__D4cg8\",\"input\":\"Funds_input__V4-of\",\"result\":\"Funds_result__qTkdi\",\"link\":\"Funds_link__OcjQQ\",\"row\":\"Funds_row__4qOet\",\"col\":\"Funds_col__xA0Qj\",\"btns\":\"Funds_btns__63PY8\",\"customImage\":\"Funds_customImage__FWSUG\",\"customButton\":\"Funds_customButton__MJtnG\",\"title\":\"Funds_title__IQoPd\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__bCN82\",\"active\":\"Item_active__ML77r\",\"btns\":\"Item_btns__PYU+g\",\"row\":\"Item_row__SFylV\",\"col\":\"Item_col__Shlbk\",\"currency\":\"Item_currency__+DtDg\",\"text\":\"Item_text__2Xqb1\",\"icon\":\"Item_icon__xz00M\",\"info\":\"Item_info__O+ESp\",\"btnClass\":\"Item_btnClass__5eLib\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\n\nconst Item = ({ item }) => {\n const [visible, setVisible] = useState(false);\n\n function formatNumberWithCommas(number) {\n return number.toLocaleString('en-US');\n }\n\n return (\n <>\n <div className={cn(styles.item, { [styles.active]: visible })}>\n <div className={styles.row} >\n <div className={styles.col}>\n {item?.name}\n </div>\n <div className={styles.col}>\n {item?.percentage}%\n </div>\n <div className={styles.col}>\n {item?.min_invites}\n </div>\n {/* <div className={styles.col}>\n {item?.max_invites}\n </div> */}\n <div className={styles.col}>\n {item?.min_volume === 0 ? \"Not required\" : formatNumberWithCommas(item?.min_volume)}\n </div>\n {/* <div className={styles.col}>\n {item?.max_volume === 0 ? \"Not required\" : item?.max_volume}\n </div> */}\n <div className={styles.col}>\n {item?.assesment}\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Funds.module.sass\";\nimport Item from \"./Item\";\n\nconst Funds = ({ levelData }) => {\n\n return (\n <div className={styles.wrap}>\n <h1 className={cn(\"h2\", styles.title)}>\n Commission Criteria\n </h1>\n <div className={styles.list}>\n <div className={styles.row}>\n <div className={styles.col}>Level</div>\n <div className={styles.col}>Commission Rate</div>\n <div className={styles.col}>Min Invitees</div>\n {/* <div className={styles.col}>Max Invitees</div> */}\n <div className={styles.col}>Min Volume(Fiat)</div>\n <div className={styles.col}>Assessment</div>\n {/* <div className={styles.col}>Max Volume(Fiat)</div> */}\n </div>\n {levelData?.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n key={index}\n index={index}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default Funds;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrap\":\"Funds_wrap__zC22C\",\"line\":\"Funds_line__31Zy3\",\"form\":\"Funds_form__FQAfy\",\"input\":\"Funds_input__B3cj9\",\"result\":\"Funds_result__MVwHE\",\"link\":\"Funds_link__OYioh\",\"row\":\"Funds_row__fFhq8\",\"col\":\"Funds_col__UyjVz\",\"btns\":\"Funds_btns__mJ1jF\",\"customImage\":\"Funds_customImage__MbYd2\",\"customButton\":\"Funds_customButton__zfo5w\",\"title\":\"Funds_title__jKOyp\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__obFYq\",\"active\":\"Item_active__Y1grW\",\"btns\":\"Item_btns__+bPI8\",\"row\":\"Item_row__3zKgc\",\"col\":\"Item_col__caR07\",\"currency\":\"Item_currency__GsZEj\",\"text\":\"Item_text__dQFM+\",\"icon\":\"Item_icon__EOjGe\",\"info\":\"Item_info__ILwAV\",\"btnClass\":\"Item_btnClass__0LcA1\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\n\nconst Item = ({ item }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n <>\n <div className={cn(styles.item, { [styles.active]: visible })}>\n <div className={styles.row} >\n <div className={styles.col}>\n {item?.amount}\n </div>\n <div className={styles.col}>\n {item?.min_deposit}\n </div>\n <div className={styles.col}>\n {item?.validity_after_activate}\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Item;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Funds.module.sass\";\nimport Item from \"./Item\";\n\nconst Funds = ({ cashbackData }) => {\n\n return (\n <div className={styles.wrap}>\n <h1 className={cn(\"h2\", styles.title)}>\n Cashback Criteria\n </h1>\n <div className={styles.list}>\n <div className={styles.row}>\n <div className={styles.col}>Amount(Fiat)</div>\n <div className={styles.col}>Min Deposit(Fiat)</div>\n <div className={styles.col}>Validity(After activation)</div>\n </div>\n {cashbackData?.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n key={index}\n index={index}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default Funds;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Education.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Slider from \"react-slick\";\nimport Icon from \"../../../components/Icon\";\nimport Levels from \"../CommisionTable\";\nimport CashbackTable from \"../CashbackTable\";\n\nconst SlickArrow = ({ currentSlide, slideCount, children, ...props }) => (\n <button {...props}>{children}</button>\n);\n\nconst Education = ({ levelData, cashbackData }) => {\n\n const itemsOne = [\n {\n title: \"Share your referral link with your friends\",\n category: \"purple\",\n image: \"/images/content/referral/referral-pic-1.png\",\n image2x: \"/images/content/referral/referral-pic-1@2x.png\",\n },\n {\n title: \"Invite your friends to sign up\",\n category: \"red\",\n image: \"/images/content/referral/referral-pic-2.png\",\n image2x: \"/images/content/referral/referral-pic-2@2x.png\",\n },\n {\n title: `Earn up to ${levelData[levelData?.length - 1]?.percentage}% commission`,\n category: \"green\",\n image: \"/images/content/referral/referral-pic-3.png\",\n image2x: \"/images/content/referral/referral-pic-3@2x.png\",\n },\n ];\n\n const settings = {\n infinite: true,\n speed: 500,\n slidesToShow: 3,\n slidesToScroll: 1,\n nextArrow: (\n <SlickArrow>\n <Icon name=\"arrow-next\" size=\"14\" />\n </SlickArrow>\n ),\n prevArrow: (\n <SlickArrow>\n <Icon name=\"arrow-prev\" size=\"14\" />\n </SlickArrow>\n ),\n responsive: [\n {\n breakpoint: 1179,\n settings: {\n slidesToShow: 3,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n return (\n <div className={cn(\"section\", styles.education)}>\n <div className={cn(\"container\", styles.container)}>\n <h3 className={styles.info}>\n <Link to=\"/terms-and-conditions-referral-program\">Terms For Referral Program can be viewed here</Link>\n </h3>\n <h1 className={styles.info}>\n How To Refer Your Friends?\n </h1>\n\n <div className={cn(\"education-preview\", styles.previewNew)}>\n <div className={styles.firstImage}>\n <h2 className={styles.bannerText}>Earn up to {levelData[levelData?.length - 1]?.percentage}% commission.</h2>\n {/* <p className={styles.info}>Refer friends to top up your holding and redeem 100 USDT!</p> */}\n </div>\n <div className={styles.secondImage}>\n <img\n srcSet={`/images/content/referral/referral-pic-4@2x.png 2x`}\n src={\"/images/content/referral/referral-pic-4.png\"}\n alt=\"refer\"\n />\n </div>\n </div>\n <div className={styles.wrapper}>\n <Slider\n className={cn(\"education-slider\", styles.slider)}\n {...settings}\n >\n {itemsOne.map((x, index) => (\n <div className={styles.item} key={index}>\n <div className={cn(\"education-preview\", styles.preview)}>\n <img\n srcSet={`${x.image2x} 2x`}\n src={x.image}\n alt=\"refer\"\n />\n </div>\n <div className={styles.body}>\n <div className={styles.title}>{x.title}</div>\n <div className={styles.content}>{x.content}</div>\n </div>\n </div>\n ))}\n </Slider>\n </div>\n </div>\n <div className={cn(\"container\", styles.newContainer)}>\n <Levels\n levelData={levelData} />\n </div>\n\n <div className={cn(\"container\", styles.newContainer)}>\n <CashbackTable\n cashbackData={cashbackData} />\n </div>\n\n <div className={cn(\"container\", styles.newContainer)}>\n <h2 className={styles.infoNew}>\n Start Earning Today!\n </h2>\n <div className={styles.buttonClass}>\n <Link className={cn(\"button\", styles.button)} to={localStorage.getItem('signature') ? 'exchange/BTC-EUR' : 'sign-up'}>\n Start Trading Now!\n </Link>\n </div>\n </div>\n <h3 className={styles.info}>\n <Link to=\"/terms-and-conditions-referral-program\">Terms For Referral Program can be viewed here</Link>\n </h3>\n </div>\n );\n};\n\nexport default Education;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__gOzSy\",\"container\":\"Main_container__zPeEz\",\"wrap\":\"Main_wrap__0y-Kv\",\"stage\":\"Main_stage__QqfqL\",\"title\":\"Main_title__Kr5ft\",\"text\":\"Main_text__W27-D\",\"form\":\"Main_form__Gzhrg\",\"bg\":\"Main_bg__l1nbt\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ levelData }) => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h2\", styles.title)}>\n Refer Your Friends & Earn Crypto Together.\n </h1>\n <div className={cn(\"stage\", styles.stage)}>\n <h5 className={cn(\"h5\", styles.title)}>\n You're just steps away from receiving your crypto commission rewards.\n </h5>\n Share your referral link with your friends, invite friends to sign up and earn up to {levelData[levelData?.length - 1]?.percentage}%\n commission on every Bitdenex Spot trade.\n </div>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/referral/referral-main@2x.png 2x\"\n src=\"/images/content/referral/referral-main.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","import React, { useEffect, useState } from \"react\";\nimport Education from \"./Education\";\nimport Main from \"./Main\";\nimport requestHandler from \"../../actions/httpClient\";\n\nconst LegalCenter = () => {\n const [loading, setLoading] = useState(false);\n const [levelData, setLevelData] = useState([]);\n const [cashbackData, setCashbackkData] = useState([]);\n\n useEffect(() => {\n getLevelDataHandler();\n }, []);\n\n const getLevelDataHandler = async () => {\n setLoading(true);\n try {\n const getLevelPayload = await requestHandler(\"rewardsInfo\", \"post\", \"\", \"\", \"\", \"global\");\n setLoading(false);\n setLevelData(getLevelPayload?.data?.data?.level_info);\n setCashbackkData(getLevelPayload?.data?.data?.referral_cashback);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n return (\n <>\n <Main\n levelData={levelData}\n />\n <Education\n loading={loading}\n levelData={levelData}\n cashbackData={cashbackData}\n />\n </>\n );\n};\n\nexport default LegalCenter;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__vl9QR\",\"container\":\"Main_container__Uz3LH\",\"wrap\":\"Main_wrap__wIqUU\",\"stage\":\"Main_stage__Kzisb\",\"title\":\"Main_title__gkKze\",\"text\":\"Main_text__HjP4B\",\"form\":\"Main_form__pS1EB\",\"bg\":\"Main_bg__r191n\"};","import cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ param, questionDetails }) => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h1\", styles.title)}>{param?.slug?.toUpperCase()} Details</h1>\n <div className={styles.text}>\n {questionDetails?.description}\n </div>\n </div>\n <div className={styles.bg}>\n <img\n srcSet=\"/images/content/help-center@2x.png 2x\"\n src={`${process.env.REACT_APP_IMAGE_URL}/${questionDetails?.banner}`}\n // src={\"/images/content/png-banner.png\"}\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"Faq_title__+1EsT\",\"nav\":\"Faq_nav__+25-T\",\"btn\":\"Faq_btn__DdnLH\",\"active\":\"Faq_active__4mHPB\",\"dropdown\":\"Faq_dropdown__LXZIn\",\"list\":\"Faq_list__dcBdB\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__C8GbS\",\"head\":\"Item_head__Yh0Dz\",\"number\":\"Item_number__G4kKA\",\"active\":\"Item_active__p+-h4\",\"arrow\":\"Item_arrow__2FqB+\",\"title\":\"Item_title__TDE3A\",\"body\":\"Item_body__QO8Ka\",\"visible\":\"Item_visible__+HIi+\",\"text\":\"Item_text__MfaEY\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item, index }) => {\n const [visible, setVisible] = useState(false);\n\n // const renderParagraphs = () => {\n // return item?.content?.split('\\n')?.map((paragraph, index) => (\n // <p key={index}>{paragraph}</p>\n // ));\n // };\n\n const renderParagraphs = () => {\n const content = item?.content;\n if (!content) return null;\n\n return content.split('\\n').map((paragraph, index) => {\n const parts = paragraph.split(/(\\bbitdenex\\b)/i);\n\n return (\n <p key={index}>\n {parts.map((part, i) => {\n if (part.toLowerCase() === 'bitdenex') {\n return (\n <a key={i} href=\"https://bitdenex.com/market\" target=\"_blank\" rel=\"noreferrer\">\n {part}\n </a>\n );\n } else {\n return <>{part}</>\n }\n })}\n </p>\n );\n });\n };\n\n return (\n <div className={cn(className, styles.item)}>\n <div\n className={cn(styles.head, { [styles.active]: visible })}\n onClick={() => setVisible(!visible)}\n >\n <div className={styles.number}>\n {index < 9 && \"0\"}\n {index + 1}\n </div>\n <div className={styles.title}>{item.title}</div>\n <div className={styles.arrow}>\n <Icon name=\"arrow-down\" size=\"24\" />\n </div>\n </div>\n <div className={cn(styles.body, { [styles.visible]: visible })}>\n {/* <p>{item?.content?.replace(/\\n/g, '<br />')}</p> */}\n {/* {item?.content?.split(/\\n+/)?.map((paragraph, index) => (\n <p key={index}>{paragraph}</p>\n ))} */}\n {/* <div style={{ whiteSpace: 'pre-line' }}>\n {item?.content?.split('\\n')?.map((paragraph, index) => (\n <p key={index} dangerouslySetInnerHTML={{ __html: paragraph }} />\n ))}\n </div> */}\n {renderParagraphs()}\n </div>\n {/* <p dangerouslySetInnerHTML={{ __html: {} }} /> */}\n\n </div>\n );\n};\n\nexport default Item;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Faq.module.sass\";\nimport Item from \"./Item\";\n\nconst Faq = ({ questionData, param }) => {\n const newOptions = [];\n\n questionData?.map((x) => {\n newOptions?.push({\n title: x.title,\n content: x.description,\n })\n });\n\n return (\n <div className={cn(\"section\", styles.section)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.top}>\n <h2 className={cn(\"h2\", styles.title)}>Frequently asked questions about {param.slug}</h2>\n </div>\n <div className={styles.list}>\n {newOptions?.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n index={index}\n key={index}\n />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Faq;\n","import React, { useEffect, useState } from \"react\";\nimport Main from \"./Main\";\nimport Faq from \"./Faq\";\nimport requestHandler from \"../../actions/httpClient\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport { useParams } from \"react-router\";\n\nconst HelpCenter = () => {\n\n const param = useParams();\n const [loading, setLoading] = useState(false);\n const [questionData, setQuestionData] = useState([]);\n const [questionDetails, setQuestionDetails] = useState([]);\n\n useEffect(() => {\n questionCoinHandler();\n }, []);\n\n const questionCoinHandler = async () => {\n setLoading(true);\n let data = {\n symbol: param.slug,\n };\n try {\n const questionCoinPayload = await requestHandler(\"getCoinQuestion\", \"post\", data);\n setLoading(false);\n setQuestionData(questionCoinPayload?.data?.data?.questions);\n setQuestionDetails(questionCoinPayload?.data?.data);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Main param={param} questionDetails={questionDetails} />\n <Faq questionData={questionData} param={param} />\n </>\n );\n};\n\nexport default HelpCenter;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__GemAQ\",\"container\":\"Main_container__SOrVC\",\"wrap\":\"Main_wrap__6yFfo\",\"stage\":\"Main_stage__XHqO1\",\"title\":\"Main_title__-uV4w\",\"text\":\"Main_text__BpRiw\",\"form\":\"Main_form__sQoa+\",\"bg\":\"Main_bg__ax-bG\",\"button\":\"Main_button__i9pX0\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Main.module.sass\";\nimport PDF from \"./BDNX_WHITEPAPER.pdf\";\n\nconst Main = ({ }) => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>Bitdenex Token (BDNX)</h2>\n <h4 className={cn(\"h4\", styles.title)}>The key to unlock various benefits.</h4>\n <div className={styles.text}>\n Connecting your digital assets and NFT's to unlock Web3 opportunities.\n </div>\n <div className={styles.text}>\n <Link className={cn(\"button\", styles.button)} to={localStorage.getItem(\"signature\") ? \"/market\" : \"/sign-in\"}>\n Get BDNX\n </Link>\n <a href={PDF} target=\"_blank\" rel=\"noreferrer\" className={cn(\"button\", styles.button)}>\n BDNX whitepaper\n </a>\n </div>\n </div>\n <div className={styles.bg}>\n <img\n // srcSet=\"/images/content/legal/legal-main@2x.png 2x\"\n src=\"/images/content/token.png\"\n alt=\"Cards\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__0mUwW\",\"stage\":\"Releases_stage__c8c6-\",\"wrap\":\"Releases_wrap__63FeM\",\"title\":\"Releases_title__Vo3YP\",\"info\":\"Releases_info__LJnfY\",\"nav\":\"Releases_nav__P6d1N\",\"link\":\"Releases_link__0ULIK\",\"active\":\"Releases_active__Ho7on\",\"dropdown\":\"Releases_dropdown__s7oLi\",\"dropdownHead\":\"Releases_dropdownHead__00hss\",\"item\":\"Releases_item__Bpxz9\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__nO8xI\",\"arrow\":\"Item_arrow__FAn5Z\",\"preview\":\"Item_preview__1lpad\",\"details\":\"Item_details__Q3qVJ\",\"category\":\"Item_category__MiREg\",\"title\":\"Item_title__X7wUi\",\"currency\":\"Item_currency__78MZG\",\"content\":\"Item_content__sZXgP\",\"card\":\"Item_card__CwqyE\",\"cardContent\":\"Item_cardContent__AchH9\",\"text\":\"Item_text__hpvG6\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Item = ({ className, item }) => {\n return (\n <div className={styles.card}>\n <div className={styles.cardContent}>\n <h3 className={styles.title}>{item?.title}</h3>\n <p className={styles.text}>{item?.content}</p>\n </div>\n </div>\n );\n};\n\nexport default Item;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\n\nconst newItems = [\n {\n title: \"What is BDNX?\",\n content: \"BDNX is our own platform token and driven by our believe to create a crypto ecosystem which should be simple, secure and accessible to everyone around the world. As a platform token, the top priority for BDNX is to provide a diverse range of exclusive benefits to holders, so that we can benefit together from Bitdenex’s growth.\",\n },\n {\n title: \"Technology\",\n content: \"Our self-developed high-performance in-memory matching engine can handle up to 10,000+ queries per second (QPS), enabling seamless and secure trading even under extreme market conditions. With outstanding market depth within the industry, we never experienced downtime and security incidents under extreme market conditions.\",\n },\n {\n title: \"Operations\",\n content:\n \"Bitdenex operates from its headquarter in Almere, the Netherlands (Europe), and from its local offices in Paramaribo, Suriname and Chandigarh, India. With this approach, we aim to provide 24/7/365 support to our customers.\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>About BDNX</h2>\n </div>\n </div>\n <div className={styles.list}>\n {newItems.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__savZi\",\"stage\":\"Releases_stage__Uymtp\",\"wrap\":\"Releases_wrap__tcWpO\",\"title\":\"Releases_title__pxvr6\",\"info\":\"Releases_info__xOBuY\",\"nav\":\"Releases_nav__Ycldp\",\"link\":\"Releases_link__v68WQ\",\"active\":\"Releases_active__jdjoJ\",\"dropdown\":\"Releases_dropdown__pJFhD\",\"dropdownHead\":\"Releases_dropdownHead__N9GBS\",\"item\":\"Releases_item__kDLmm\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__xZKNg\",\"arrow\":\"Item_arrow__lPjHW\",\"preview\":\"Item_preview__ES2T5\",\"details\":\"Item_details__iVTnq\",\"category\":\"Item_category__fEblG\",\"currency\":\"Item_currency__jVJk6\",\"content\":\"Item_content__F6b68\",\"cardContent\":\"Item_cardContent__2GdEZ\",\"text\":\"Item_text__yrXa+\",\"card\":\"Item_card__ZuSWY\",\"leftcolumn\":\"Item_leftcolumn__XqB5Y\",\"icon\":\"Item_icon__nHJoM\",\"title\":\"Item_title__mot9q\",\"middlecolumn\":\"Item_middlecolumn__gW1UI\",\"rightcolumn\":\"Item_rightcolumn__vEUob\",\"iconcontainer\":\"Item_iconcontainer__f0S4h\",\"dark\":\"Item_dark__j6-el\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\n\nconst Item = ({ item }) => {\n\n return (\n <div className={styles.card}>\n <div className={styles.leftcolumn}>\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 27 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={styles.icon}>\n <g clip-path=\"url(#SmallExchange_svg__a)\">\n <path d=\"M22.985 9.609V.932H.931v23.544h22.053V13.674\" stroke=\"currentColor\" stroke-width=\"1.865\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.716 9.104H6.89a.622.622 0 0 0-.621.622v.621c0 .344.278.622.621.622h9.712c.554 0 .831-.67.44-1.061l-2.266-2.266a.622.622 0 0 0-1.061.44v1.022ZM9.726 15.655h6.513a.621.621 0 0 0 .622-.621v-.622a.621.621 0 0 0-.622-.622H6.838a.622.622 0 0 0-.44 1.061l2.267 2.266a.622.622 0 0 0 1.06-.44v-1.022Z\" fill=\"#1DA2B4\"></path>\n </g>\n <defs>\n <clipPath id=\"SmallExchange_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h26.751v25.57H0z\"></path>\n </clipPath>\n </defs>\n </svg>\n <strong className={styles.title}>{item.title}</strong>\n </div>\n <div className={styles.middlecolumn}>\n <p className={styles.description}>{item.content}</p>\n </div>\n </div>\n );\n};\n\nexport default Item;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\n\nconst newItems = [\n {\n title: \"Spot Trading\",\n content: \"Buy BDNX with EUR, USDT and USDC.\",\n },\n {\n title: \"Buy with fiat\",\n content: \"Buy BDNX with fiat through Quick Buy.\",\n },\n // {\n // title: \"Convert small balances\",\n // content:\n // 'Users can convert assets worth less than 5 USDT in their account for BDNX at a 2% exchange fee. Select \"Convert small balances to BDNX\" on the Spot section of Assets page on the website or the app.',\n // },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>Get BDNX</h2>\n </div>\n </div>\n <div className={styles.list}>\n {newItems.map((x, index) => (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__X3-6N\",\"stage\":\"Releases_stage__auNnb\",\"wrap\":\"Releases_wrap__OoiYu\",\"title\":\"Releases_title__l2jbJ\",\"info\":\"Releases_info__w+36f\",\"nav\":\"Releases_nav__CZBca\",\"link\":\"Releases_link__4tOAH\",\"active\":\"Releases_active__0iIar\",\"dropdown\":\"Releases_dropdown__NqHGd\",\"dropdownHead\":\"Releases_dropdownHead__w2XCr\",\"item\":\"Releases_item__IvTHL\",\"customtable\":\"Releases_customtable__LCHyG\",\"rowlight\":\"Releases_rowlight__rEi25\",\"rowdark\":\"Releases_rowdark__1eRcJ\",\"text\":\"Releases_text__kkemx\",\"thirdcontainer\":\"Releases_thirdcontainer__S0B7r\",\"leftcolumn\":\"Releases_leftcolumn__NTggE\",\"middlecolumn\":\"Releases_middlecolumn__td+G5\",\"rightcolumn\":\"Releases_rightcolumn__8rmJT\",\"card\":\"Releases_card__biUiK\",\"cardcontent\":\"Releases_cardcontent__URpxl\",\"cardcontentsmall\":\"Releases_cardcontentsmall__wdxSp\",\"bigcard\":\"Releases_bigcard__0s2dW\",\"smallcard\":\"Releases_smallcard__FzNGU\",\"bigcardcard\":\"Releases_bigcardcard__Msda4\",\"smallcardcard\":\"Releases_smallcardcard__SxgbH\",\"titleHeading\":\"Releases_titleHeading__x4Nh3\",\"secondcardcontent\":\"Releases_secondcardcontent__7jk7f\",\"details\":\"Releases_details__RNZ19\",\"note\":\"Releases_note__1dcfq\",\"cardimage\":\"Releases_cardimage__Y6kbO\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"./Releases.module.sass\";\n\nconst Releases = ({ scrollToRef }) => {\n\n return (\n <div\n className={cn(\"section-bg section-mb0\", styles.releases)}\n ref={scrollToRef}\n >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={styles.wrap}>\n <h2 className={cn(\"h2\", styles.title)}>BDNX release information</h2>\n {/* <p className={styles.text}>Secure, convenient, and connecting crypto enthusiasts worldwide</p> */}\n </div>\n </div>\n <table className={styles.customtable}>\n <tbody>\n <tr className={styles.rowlight}>\n <th>Token name</th>\n <td>{process.env.REACT_APP_TOKEN_NAME}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Token symbol</th>\n <td>{process.env.REACT_APP_TOKEN_SYMBOL}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Blockchain</th>\n <td>{process.env.REACT_APP_TOKEN_CHAIN}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Contract address</th>\n <td>{process.env.REACT_APP_TOKEN_CONTRACT_ADDRESS}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Issue price</th>\n <td>{process.env.REACT_APP_TOKEN_ISSUE_PRICE}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Circulating supply</th>\n <td>{process.env.REACT_APP_TOKEN_CIRCULATING_SUPPLY}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Total supply</th>\n <td>{process.env.REACT_APP_TOKEN_TOTAL_SUPPLY}</td>\n </tr>\n <tr className={styles.rowlight}>\n <th>Launch date</th>\n <td>{process.env.REACT_APP_TOKEN_LAUNCH_DATE}</td>\n </tr>\n </tbody>\n </table>\n\n <div className={styles.thirdcontainer}>\n <div className={styles.leftcolumn}>\n <div className={styles.card}>\n <div className={styles.cardcontent}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>Team incentive</h2>\n <p>4% Release rate per year.</p>\n </div>\n <div className={styles.secondcardcontent}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>20%</h2>\n <p>Being released.</p>\n </div>\n <div className={styles.cardimage}>\n <img src=\"/images/content/incentive.png\" alt=\"image\" />\n </div>\n </div>\n </div>\n <div className={styles.middlecolumn}>\n <div className={styles.card}>\n <div className={styles.cardcontentsmall}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>Branding</h2>\n <p>35% Being released.</p>\n <p>5% Release rate per year.</p>\n </div>\n </div>\n <div className={styles.card}>\n <div className={styles.cardcontentsmall}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>Referrals</h2>\n <p>10% Being released.</p>\n <p>2% Release rate per year.</p>\n </div>\n </div>\n <div className={styles.card}>\n <div className={styles.cardcontentsmall}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>BDNX ecosystem</h2>\n <p>15% Released to the investment fund.</p>\n </div>\n </div>\n </div>\n <div className={styles.rightcolumn}>\n <div className={styles.bigcardcard}>\n <div className={styles.cardcontent}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>User input</h2>\n <p>5% Release rate per year.</p>\n </div>\n <div className={styles.secondcardcontent}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>10%</h2>\n <p>Being released.</p>\n </div>\n </div>\n <div className={styles.smallcardcard}>\n <div className={styles.cardcontentsmall}>\n <h2 className={cn(\"h4\", styles.titleHeading)}>Protection fund</h2>\n <p>10% Released to compensate for unforeseen incidents.</p>\n </div>\n </div>\n </div>\n </div>\n <div className={styles.details}>\n <Link className={cn(\"button\", styles.button)} to='/sign-in'>\n Get BDNX\n </Link>\n <p className={styles.note}>Let's build a safe, reliable and secure Bitdenex ecosystem and contribute to the development of the Crypto world. </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\nimport GetToken from \"./GetToken\";\nimport TokenInfo from \"./TokenInfo\";\n\nconst BitdenexToken = () => {\n const scrollToRef = useRef(null);\n\n return (\n <>\n <Main />\n <Releases scrollToRef={scrollToRef} />\n <GetToken />\n <TokenInfo />\n </>\n );\n};\n\nexport default BitdenexToken;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__iZ2dY\",\"head\":\"Main_head__fpmFw\",\"title\":\"Main_title__HRmea\",\"info\":\"Main_info__0SYgX\",\"btns\":\"Main_btns__8Q6SN\",\"button\":\"Main_button__dFYMO\",\"video\":\"Main_video__h2+p3\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Bitdenex Token</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__Uxgw+\",\"stage\":\"Releases_stage__rSaXj\",\"wrap\":\"Releases_wrap__nM6uk\",\"title\":\"Releases_title__1AQJq\",\"info\":\"Releases_info__h2BW5\",\"nav\":\"Releases_nav__YgXwg\",\"link\":\"Releases_link__RtZeQ\",\"active\":\"Releases_active__xlR+N\",\"dropdown\":\"Releases_dropdown__Aifti\",\"dropdownHead\":\"Releases_dropdownHead__PdJaT\",\"item\":\"Releases_item__s7PD9\",\"widgetList\":\"Releases_widgetList__nacrU\",\"linkText\":\"Releases_linkText__RodFg\",\"copyright\":\"Releases_copyright__l5Xx0\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__qRXap\",\"arrow\":\"Item_arrow__aX6ko\",\"preview\":\"Item_preview__6dE33\",\"details\":\"Item_details__Jtk+m\",\"category\":\"Item_category__vo3GA\",\"title\":\"Item_title__rz7Pt\",\"currency\":\"Item_currency__4wRJM\",\"content\":\"Item_content__0AvEx\",\"previewOdd\":\"Item_previewOdd__Ef47g\",\"detailsOdd\":\"Item_detailsOdd__rmKmp\",\"imgSetting\":\"Item_imgSetting__f6kgi\",\"button\":\"Item_button__9tv36\"};","import cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Bitdenex Token\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/BDNX-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Bitdenex Token\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"Verify your Bitdenex Account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Bitdenex Token\",\n currency: \"Bitdenex Token\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"Start Trading Bitdenex Token\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n url: \"/exchange/BDNX-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n const currentMarketDetails = [{ priceDecimalPrecision: 5 }];\n\n return (\n <div className={cn(\"section-bg section-mb0\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n currentMarketDetails={currentMarketDetails}\n symbol={\"bdnx-eur\"}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) =>\n (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellBitdenex = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellBitdenex;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__Rm8jG\",\"head\":\"Main_head__BoyH+\",\"title\":\"Main_title__8TYIa\",\"info\":\"Main_info__QN79i\",\"btns\":\"Main_btns__JmaU1\",\"button\":\"Main_button__1tEjx\",\"video\":\"Main_video__kzffn\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Cardano</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__3+EIY\",\"stage\":\"Releases_stage__hGC0s\",\"wrap\":\"Releases_wrap__A-vZW\",\"title\":\"Releases_title__O5Txn\",\"info\":\"Releases_info__cFOfd\",\"nav\":\"Releases_nav__TiTqN\",\"link\":\"Releases_link__gnzcW\",\"active\":\"Releases_active__Y52XL\",\"dropdown\":\"Releases_dropdown__EsTAV\",\"dropdownHead\":\"Releases_dropdownHead__m2lBq\",\"item\":\"Releases_item__H6Cdx\",\"widgetList\":\"Releases_widgetList__cP7Is\",\"linkText\":\"Releases_linkText__B0iB9\",\"copyright\":\"Releases_copyright__ozgxL\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__Coi7K\",\"arrow\":\"Item_arrow__jJfhd\",\"preview\":\"Item_preview__lrS6+\",\"details\":\"Item_details__2dC-B\",\"category\":\"Item_category__OV68E\",\"title\":\"Item_title__NrZBj\",\"currency\":\"Item_currency__ZrTst\",\"content\":\"Item_content__t42IL\",\"previewOdd\":\"Item_previewOdd__W77Kp\",\"detailsOdd\":\"Item_detailsOdd__3LiJI\",\"imgSetting\":\"Item_imgSetting__34JOD\",\"button\":\"Item_button__UX8-i\"};","import cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Cardano\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/ada-EUR\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Cardano\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"Verify your Bitdenex Account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Cardano\",\n currency: \"Cardano\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"Start Trading Cardano\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n url: \"/exchange/ada-EUR\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n const currentMarketDetails = [{ priceDecimalPrecision: 5 }];\n\n return (\n <div className={cn(\"section-bg section-mb0\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n currentMarketDetails={currentMarketDetails}\n symbol={\"ada-eur\"}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) =>\n (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellBitdenex = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellBitdenex;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__OzBJM\",\"head\":\"Main_head__JRubU\",\"title\":\"Main_title__GmdHW\",\"info\":\"Main_info__nN9-L\",\"btns\":\"Main_btns__CGxh5\",\"button\":\"Main_button__DDyKl\",\"video\":\"Main_video__E0CF4\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ scrollToRef, scrollToRefCatalog }) => {\n return (\n <div className={cn(\"buySection\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h1 className={cn(\"h1\", styles.title)}>Buy & Sell Solana</h1>\n <div className={styles.info}>Cryptocurrencies are changing the world.</div>\n {/* <div className={styles.btns}>\n <button\n className={cn(\"button\", styles.button)}\n onClick={() =>\n scrollToRef.current.scrollIntoView({ behavior: \"smooth\" })\n }\n >\n Learn now\n </button>\n </div> */}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Releases_head__LkXzq\",\"stage\":\"Releases_stage__rJWTt\",\"wrap\":\"Releases_wrap__UiRX8\",\"title\":\"Releases_title__UrflC\",\"info\":\"Releases_info__puGSb\",\"nav\":\"Releases_nav__ARDOf\",\"link\":\"Releases_link__VMmDN\",\"active\":\"Releases_active__QAjhJ\",\"dropdown\":\"Releases_dropdown__Xjkp9\",\"dropdownHead\":\"Releases_dropdownHead__nFGuV\",\"item\":\"Releases_item__7ZA7c\",\"widgetList\":\"Releases_widgetList__DPOpm\",\"linkText\":\"Releases_linkText__Kj795\",\"copyright\":\"Releases_copyright__dLMnI\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"Item_item__rVrtL\",\"arrow\":\"Item_arrow__FHTQf\",\"preview\":\"Item_preview__gMNAL\",\"details\":\"Item_details__XoS1Y\",\"category\":\"Item_category__RSvyr\",\"title\":\"Item_title__c9bsN\",\"currency\":\"Item_currency__T7uMa\",\"content\":\"Item_content__oS9GQ\",\"previewOdd\":\"Item_previewOdd__3QrSa\",\"detailsOdd\":\"Item_detailsOdd__4Q0Uz\",\"imgSetting\":\"Item_imgSetting__8Qf8y\",\"button\":\"Item_button__3uWlq\"};","import cn from \"classnames\";\nimport styles from \"./Item.module.sass\";\nimport { Link } from \"react-router-dom\";\n\nconst Item = ({ className, item, key }) => {\n return (\n < Link className={cn(className, styles.item)} to={localStorage.getItem('signature') ? item.url : item.preUrl} >\n {item && item.id % 2 === 0 ?\n <>\n <div className={styles.preview}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n <div className={styles.details}>\n\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n </>\n :\n <>\n <div className={styles.detailsOdd}>\n <h4 className={cn(\"h4\", styles.title)}>{item.title}</h4>\n <div className={styles.currency}>{item.currency}</div>\n <div className={styles.content}>{item.content}</div>\n </div>\n <div className={styles.previewOdd}>\n <img className={styles.imgSetting} srcSet={`${item.image2x} 2x`} src={item.image} alt=\"Item\" />\n <button className={cn(\"button\", styles.button)} >\n {item.categoryText}\n </button>\n </div>\n\n </>\n }\n </Link >\n );\n};\n\nexport default Item;\n","import cn from \"classnames\";\nimport styles from \"./Releases.module.sass\";\nimport Item from \"./Item\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\n\nconst items = [\n {\n id: '0',\n title: \"Sign up for Bitdenex\",\n currency: \"Solana\",\n content: \"First of all, you need to sign up for an Bitdenex account. Your Bitdenex account is a secure place to store your Bitcoins. Unfortunately, you can’t exchange your local currency into bitcoin without registered account. Based on the current laws and regulations, you must have a registered account to be able to trade cryptocurrency The KYC and AML policy does not allow to trade anonymously. That’s the main reason why you have to sign up for an account, unless you only want to try the FREE account. For the free account, you only need an email address.\",\n category: \"green\",\n categoryText: \"Start Trading\",\n image: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Sign-up-for-Bitdenex.jpg\",\n url: \"/exchange/sol-eur\",\n preUrl: \"/sign-up\",\n },\n {\n id: '1',\n title: \"Verify your Bitdenex Account\",\n currency: \"Solana\",\n content: \"You need to verify your Bitdenex account, after you sign up. In order to verify your Bitdenex account, you need to provide some documentation. When all the details are correct, your Bitdenex account will be open to trade. Once the verification steps are complete, you can start trading. \",\n category: \"green\",\n categoryText: \"Verify your Bitdenex Account\",\n image: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Verify-your-Bitdenex-Account.jpg\",\n url: \"/user-kyc-verification\",\n // url: \"/kyc-policy\",\n preUrl: \"/sign-up\",\n },\n {\n id: '2',\n title: \"Buy & Sell Solana\",\n currency: \"Solana\",\n content: \"To complete your account, you need to do some verification steps before you can fully use your registered Bitdenex account. Go through the verification steps and add the necessary documents. After you add the documents, we will check those and complete the verification after all documents are correct. We always show you the current exchange rate before you trade. Bitdenex don’t determine the prices. The traders determine the prices, so make sure you check the rate before you place your order or limit order. \",\n category: \"green\",\n categoryText: \"Start Trading Solana\",\n image: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n image2x: \"/images/content/BuyAndSellPages/Buy-&-Sell-Bitcoin.jpg\",\n url: \"/exchange/sol-eur\",\n preUrl: \"/sign-up\",\n },\n];\n\nconst Releases = ({ scrollToRef }) => {\n\n const currentMarketDetails = [{ priceDecimalPrecision: 3 }];\n\n return (\n <div className={cn(\"section-bg section-mb0\", styles.releases)} ref={scrollToRef} >\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.widgetList}>\n <TVChartContainer\n currentMarketDetails={currentMarketDetails}\n symbol={\"sol-eur\"}\n />\n </div>\n <div className={styles.copyright}>\n <a href=\"https://www.tradingview.com/\" rel=\"noopener nofollow\" target=\"_blank\"><span className=\"blue-text\">Track all markets on TradingView</span></a>\n </div>\n </div>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.list}>\n {items.map((x, index) =>\n (\n <Item className={styles.item} item={x} key={index} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Releases;\n","import React, { useRef } from \"react\";\nimport Download from \"../Home/Download\";\nimport Main from \"./Main\";\nimport Releases from \"./Releases\";\n\nconst BuyAndSellBitdenex = () => {\n const scrollToRef = useRef(null);\n const scrollToRefCatalog = useRef(null);\n\n return (\n <>\n <Main scrollToRef={scrollToRef} scrollToRefCatalog={scrollToRefCatalog} />\n <Releases scrollToRef={scrollToRef} />\n <Download />\n </>\n );\n};\n\nexport default BuyAndSellBitdenex;\n","// extracted by mini-css-extract-plugin\nexport default {\"details\":\"Details_details__k4RL6\",\"container\":\"Details_container__diKbh\",\"leftContainer\":\"Details_leftContainer__qRS5r\",\"price\":\"Details_price__QZmQu\",\"rightContainer\":\"Details_rightContainer__y5X+B\",\"header\":\"Details_header__JS1Ak\",\"historicalPrice\":\"Details_historicalPrice__2qxaM\",\"priceItem\":\"Details_priceItem__VQErb\",\"key\":\"Details_key__gTzf2\",\"value\":\"Details_value__sChwc\",\"information\":\"Details_information__hwUjh\",\"buttonContainer\":\"Details_buttonContainer__1QG2A\",\"button\":\"Details_button__hDHGl\",\"tradeButton\":\"Details_tradeButton__VlCCo\",\"chartContainer\":\"Details_chartContainer__dpquU\",\"timeIntervalContainer\":\"Details_timeIntervalContainer__YnEF7\",\"timeIntervalTable\":\"Details_timeIntervalTable__0ag+i\",\"tableHeader\":\"Details_tableHeader__W4xoQ\",\"headerCell\":\"Details_headerCell__kc6y5\",\"tableBody\":\"Details_tableBody__Ns1Tq\",\"tableRow\":\"Details_tableRow__N9J1v\",\"tableCell\":\"Details_tableCell__wCIOu\",\"geckoUp\":\"Details_geckoUp__NZWbF\",\"geckoDown\":\"Details_geckoDown__tWRyP\",\"questions\":\"Details_questions__RpWz6\",\"description\":\"Details_description__7ij2Z\",\"name\":\"Details_name__1kiuK\",\"slug\":\"Details_slug__G-q75\",\"aboutLine\":\"Details_aboutLine__03i2I\",\"infoHeading\":\"Details_infoHeading__PioUP\",\"tooltipContainer\":\"Details_tooltipContainer__7aL42\",\"tooltipIcon\":\"Details_tooltipIcon__FitUg\",\"tooltipText\":\"Details_tooltipText__xTs0G\",\"card\":\"Details_card__9qFB7\",\"cardContent\":\"Details_cardContent__+euK+\"};","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"LightWeightChart_buttonContainer__vi5Me\",\"button\":\"LightWeightChart_button__Vwx6x\",\"selected\":\"LightWeightChart_selected__6j31V\"};","import React, { useEffect, useState } from 'react';\nimport { Line } from 'react-chartjs-2';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n LineElement,\n Title,\n Tooltip,\n Legend,\n PointElement\n} from 'chart.js';\nimport styles from \"./LightWeightChart.module.sass\";\nimport { getDigitsAfterDecimal } from \"../../components/helper\";\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n LineElement,\n Title,\n Tooltip,\n Legend,\n PointElement\n);\n\nconst LightWeightChart = ({\n state\n}) => {\n const [data, setData] = useState([]);\n const [filteredData, setFilteredData] = useState([]);\n const [selectedPeriod, setSelectedPeriod] = useState('7D');\n\n useEffect(() => {\n const socket = new WebSocket(process.env.REACT_APP_API_URL_CHARTS);\n const endtime = Math.floor(Date.now() / 1000);\n\n socket.onopen = () => {\n socket.send(\n JSON.stringify({\n action: 'subscribe',\n channel: state?.slug?.toLowerCase().replace(\"-\", \"_\"),\n resolution: '1D',\n endTime: endtime\n })\n );\n };\n\n socket.onmessage = (event) => {\n const message = JSON.parse(event.data);\n if (message && message.message.data) {\n const newData = message.message.data.map((item) => ({\n time: item.time * 1000,\n open: item.open,\n high: item.high,\n low: item.low,\n close: item.close,\n }));\n\n setData(newData);\n filterData('7D', newData);\n socket.close();\n }\n };\n\n socket.onerror = (error) => {\n };\n\n socket.onclose = () => {\n };\n\n return () => {\n socket.close();\n };\n }, []);\n\n const filterData = (period, data) => {\n let filtered;\n const now = Date.now();\n const oneDay = 24 * 60 * 60 * 1000;\n const sevenDays = 7 * oneDay;\n const fourteenDays = 14 * oneDay;\n const twentyOneDays = 21 * oneDay;\n const twentyEightDays = 28 * oneDay;\n\n switch (period) {\n case '1D':\n filtered = data.filter(item => (now - item.time) <= oneDay);\n break;\n case '7D':\n filtered = data.filter(item => (now - item.time) <= sevenDays);\n break;\n case '14D':\n filtered = data.filter(item => (now - item.time) <= fourteenDays);\n break;\n case '21D':\n filtered = data.filter(item => (now - item.time) <= twentyOneDays);\n break;\n case '28D':\n filtered = data.filter(item => (now - item.time) <= twentyEightDays);\n break;\n default:\n filtered = data.filter(item => (now - item.time) <= sevenDays);\n }\n setFilteredData(filtered);\n };\n\n const chartOptions = {\n responsive: true,\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n callbacks: {\n label: function (context) {\n return `Close Price: ${getDigitsAfterDecimal(context.raw, state?.priceDecimalPrecision)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n autoSkip: true,\n maxTicksLimit: 10,\n },\n },\n y: {\n position: 'right',\n beginAtZero: false,\n suggestedMin: Math.min(...filteredData.map(item => item.low)),\n suggestedMax: Math.max(...filteredData.map(item => item.high)),\n },\n },\n };\n\n const chartData = {\n labels: filteredData.map(item => {\n const date = new Date(item.time);\n return date.toLocaleDateString('en-US', {\n // year: 'numeric',\n month: 'short',\n day: 'numeric'\n });\n }),\n\n datasets: [\n {\n label: 'Open Price',\n data: filteredData.map(item => item.open),\n borderColor: 'rgba(75,192,192,1)',\n borderWidth: 1,\n fill: 'origin',\n backgroundColor: 'rgba(75,192,192,0.2)',\n pointRadius: 5,\n },\n ],\n };\n\n return (\n <>\n <div className={styles.buttonContainer}>\n <button\n className={`${styles.button} ${selectedPeriod === '7D' ? styles.selected : ''}`}\n onClick={() => {\n setSelectedPeriod('7D');\n filterData('7D', data);\n }}\n >\n 1w\n </button>\n <button\n className={`${styles.button} ${selectedPeriod === '14D' ? styles.selected : ''}`}\n onClick={() => {\n setSelectedPeriod('14D');\n filterData('14D', data);\n }}\n >\n 2w\n </button>\n <button\n className={`${styles.button} ${selectedPeriod === '21D' ? styles.selected : ''}`}\n onClick={() => {\n setSelectedPeriod('21D');\n filterData('21D', data);\n }}\n >\n 3w\n </button>\n <button\n className={`${styles.button} ${selectedPeriod === '28D' ? styles.selected : ''}`}\n onClick={() => {\n setSelectedPeriod('28D');\n filterData('28D', data);\n }}\n >\n 4w\n </button>\n </div>\n <Line data={chartData} options={chartOptions} />\n </>\n );\n};\n\nexport default LightWeightChart;","import React, { useEffect, useState } from \"react\";\nimport styles from \"./Details.module.sass\";\nimport cn from \"classnames\";\nimport Item from \"./Item\";\nimport LightWeightChart from \"../../../components/LightWeightChart\";\nimport { formatLargeValue, getDigitsAfterDecimal } from \"../../../components/helper\";\nimport { Link } from \"react-router-dom\";\n\nconst Details = ({\n state,\n items\n}) => {\n const [filteredData, setFilteredData] = useState(null);\n\n const isValid = (value) => {\n return value !== null && value !== undefined && value !== '' && value != 0;\n };\n\n useEffect(() => {\n fetch('/coinsData.json')\n .then(response => response.json())\n .then(data => {\n const initialFilteredData = data?.filter(item => item?.symbol?.toLowerCase() === state?.symbol?.toLowerCase())?.map(x => x?.about)[0];\n setFilteredData(initialFilteredData);\n })\n }, []);\n\n return (\n <>\n <div className={styles.container}>\n <div className={styles.leftContainer}>\n <div className={cn(\"h5\")}>{`${state?.name}(${state?.symbol})`} Price</div>\n <div className={styles.price}>{state?.regionSymbol}{state?.currentMarketPrice}</div>\n <div className={styles.historicalPrice}>\n {\n (state?.cap !== null && state?.cap !== undefined && state?.cap !== \"\" && state?.cap !== 0 && state?.cap !== \"0\") ? (\n <div className={styles.priceItem}>\n <div className={styles.key}>Marketcap</div>\n <div className={styles.value}>{state?.regionSymbol}{formatLargeValue(state?.cap)}</div>\n </div>\n ) : (state?.self_reported_market_cap !== null && state?.self_reported_market_cap !== undefined && state?.self_reported_market_cap !== \"\" && state?.self_reported_market_cap !== 0 && state?.self_reported_market_cap !== \"0\") ? (\n <div className={styles.priceItem}>\n <div className={styles.key}>Marketcap</div>\n <div className={styles.value}>\n {state?.regionSymbol}{formatLargeValue(state?.self_reported_market_cap)}\n <span className={styles.tooltipContainer}>\n <span className={styles.tooltipIcon}>âš ï¸</span>\n <span className={styles.tooltipText}>\n The market capitalization for this project has not been verified. The value displayed is self-reported by the project.\n </span>\n </span>\n </div>\n </div>\n ) : null\n }\n\n {isValid(state?.fully_diluted_market_cap) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Fully Diluted Valuation</div>\n <div className={styles.value}>{state?.regionSymbol}{state?.fully_diluted_market_cap.toLocaleString()}</div>\n </div>\n )}\n\n {isValid(state?.market_cap_dominance) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Market Dominance</div>\n <div className={styles.value}>{getDigitsAfterDecimal(state?.market_cap_dominance, 2)}%</div>\n </div>\n )}\n\n {/* {isValid(state?.volume_change_24h) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>24 Hour Trading Vol</div>\n <div className={styles.value}>${state?.volume_change_24h}</div>\n </div>\n )} */}\n\n {isValid(state?.circulating_supply) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Circulating Supply</div>\n <div className={styles.value}>{state?.circulating_supply?.toLocaleString()}<span className={styles.symbol}> {state?.symbol}</span></div>\n </div>\n )}\n\n {isValid(state?.max_supply) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Max Supply</div>\n <div className={styles.value}>{state?.max_supply?.toLocaleString()}<span className={styles.symbol}> {state?.symbol}</span></div>\n </div>\n )}\n\n {isValid(state?.total_supply) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Total Supply</div>\n <div className={styles.value}>{state?.total_supply?.toLocaleString()}<span className={styles.symbol}> {state?.symbol}</span></div>\n </div>\n )}\n\n {isValid(state?.assetName) && (\n <div className={styles.priceItem}>\n <div className={styles.key}>Assest Type</div>\n <div className={styles.value}>{state?.assetName}</div>\n </div>\n )}\n <div className={styles.priceItem}>\n <div className={styles.key}>ESG Reporting Publication Date</div>\n <div className={styles.value}>Feb 24, 2025 <br /><span>Last updated-April 1, 2025</span></div>\n </div>\n </div>\n {\n (\n state?.github_url || state?.official_urls || state?.white_paper_urls || state?.mica_paper_urls) && (\n <div className={styles.historicalPrice}>\n <div className={styles.information}>\n <div className={styles.header}>Info</div>\n <div className={styles.buttonContainer}>\n {state?.official_urls && (\n <a href={state.official_urls} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className={styles.button}>\n <span>Website</span>\n </button>\n </a>\n )}\n {state?.white_paper_urls && (\n <a href={state.white_paper_urls} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className={styles.button}>\n <span>Whitepaper</span>\n </button>\n </a>\n )}\n {state?.mica_paper_urls && (\n <a href={state.mica_paper_urls} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className={styles.button}>\n <span>MiCA Whitepaper</span>\n </button>\n </a>\n )}\n {state?.esg_report_url !== null && state?.esg_report_url !== undefined ? (\n <a href={state.esg_report_url} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className={styles.button}>\n <span>ESG reporting</span>\n </button>\n </a>\n ) :\n <button className={styles.button}>\n <span>ESG reporting</span>\n </button>\n }\n {state?.github_url && (\n <a href={state.github_url} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className={styles.button}>\n <span>Github</span>\n </button>\n </a>\n )}\n </div>\n </div>\n </div>\n )\n }\n {\n parseInt(process.env.REACT_APP_COIN_DETAILS_SHOW_TRADE_BUTTON) === 1 &&\n <div className={styles.historicalPrice}>\n <div className={styles.information}>\n <div className={styles.header}>Trade</div>\n <div className={styles.buttonContainer}>\n <Link to={\"/sign-up\"}>\n <button className={styles.tradeButton}>\n <span>Buy/Sell {state?.slug}</span>\n </button>\n </Link>\n </div>\n </div>\n </div>\n }\n\n {/* <div className={styles.historicalPrice}>\n <div className={styles.information}>BTC Historical Price</div>\n <div className={styles.priceItem}>\n <div className={styles.key}>24h Range</div>\n <div className={styles.value}>${state?.cap}</div>\n </div>\n <div className={styles.priceItem}>\n <div className={styles.key}>7d Range</div>\n <div className={styles.value}>${state?.volume}</div>\n </div>\n <div className={styles.priceItem}>\n <div className={styles.key}>All-Time High</div>\n <div className={styles.value}>${state?.volume}</div>\n </div>\n <div className={styles.priceItem}>\n <div className={styles.key}>All-Time Low</div>\n <div className={styles.value}>${state?.volume}</div>\n </div>\n </div> */}\n </div>\n <div className={styles.rightContainer}>\n <div className={styles.chartContainer}>\n <LightWeightChart\n state={state}\n />\n </div>\n <div className={styles.timeIntervalContainer}>\n <table className={styles.timeIntervalTable}>\n <thead>\n <tr className={styles.tableHeader}>\n <th className={styles.headerCell}>1h</th>\n <th className={styles.headerCell}>24h</th>\n <th className={styles.headerCell}>7d</th>\n <th className={styles.headerCell}>30d</th>\n <th className={styles.headerCell}>60d</th>\n <th className={styles.headerCell}>90d</th>\n </tr>\n </thead>\n <tbody className={styles.tableBody}>\n <tr className={styles.tableRow}>\n <td className={styles.tableCell}>\n {state?.percent_change_1h > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.percent_change_1h, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.percent_change_1h, 2)}%</span>\n }\n </td>\n <td className={styles.tableCell}>\n {state?.dayChange > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.dayChange, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.dayChange, 2)}%</span>\n }\n </td>\n <td className={styles.tableCell}>\n {state?.weekChange > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.weekChange, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.weekChange, 2)}%</span>\n }\n </td>\n <td className={styles.tableCell}>\n {state?.percent_change_30d > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.percent_change_30d, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.percent_change_30d, 2)}%</span>\n }\n </td>\n <td className={styles.tableCell}>\n {state?.percent_change_60d > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.percent_change_60d, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.percent_change_60d, 2)}%</span>\n }\n </td>\n <td className={styles.tableCell}>\n {state?.percent_change_90d > 0 ?\n <span className={styles.geckoUp}>{getDigitsAfterDecimal(state?.percent_change_90d, 2)}%</span>\n :\n <span className={styles.geckoDown}>{getDigitsAfterDecimal(state?.percent_change_90d, 2)}%</span>\n }\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n {\n filteredData &&\n <>\n <div className={cn(\"h5\", styles.infoHeading)}>\n What is {state?.name} ({state?.symbol})?\n </div>\n <div className={styles.aboutLine}>\n {filteredData?.split('\\n')?.map((line, index) => {\n return <div key={index}>{line}</div>\n })}\n </div>\n </>\n }\n\n {/* <div className={cn(\"h4\", styles.questions)}>People Also Ask: Other Questions About Bitcoin</div>\n <div className={styles.about}>\n {items.map((x, index) => (\n <Item\n className={styles.item}\n item={x}\n index={index}\n key={index}\n />\n ))}\n </div> */}\n </div>\n </div>\n <div className={styles.card}>\n <div className={styles.cardContent}>\n <p>The offered data is solely intended for informational reasons. This information is provided as is, with no warranties or assurances, and some of this is sourced from CoinMarketCap. Be mindful of the risks involved.</p>\n </div>\n </div>\n </>\n );\n};\n\nexport default Details;\n","import React from \"react\";\nimport Details from \"./Details\";\nimport { useLocation } from \"react-router\";\n\nconst Market = () => {\n const { state } = useLocation();\n\n const items = [\n {\n title: \" How long does it take before deposits are visible? \",\n content:\n 'The speed of your deposit depends on your payment method. Bitcoin: With Bitcoins deposits we are dependent on the Blockchain network. Usually within 30-60 minutes, after 3 network confirmations your Bitcoins will be credited or debited from your account. Sometimes it can take longer because the network is too busy. ',\n },\n {\n title: \" Wallets changes, is that possible? \",\n content:\n 'NO. Unfortunately, you can not change your Bitcoin landfill address, Ethereum landfill address or other landfill addresses. You can, however, create new pouring addresses. In addition, you can continue to use your old addresses. You may create as many addresses as you think you need. ',\n },\n\n {\n title: \"What is Bitdenex? \",\n content:\n 'Bitdenex is a European Cryptocurrency Exchange, also known as a trading platform, based in the Netherlands. At Bitdenex you can buy and sell coins such as Bitcoin, Ethereum, Litecoin and other coins quickly, safely and easily. In the exchange you can easily exchange coins with other available coins. ',\n },\n {\n title: \"Why Bitdenex? \",\n content:\n 'Buy and sell cryptocurrency or digital coins can be difficult, especially if you have not previously bought a coin. It can sometimes take a long time to investigate how you can actually buy a coin. Unfortunately, not all exchanges offer all coins. You can view per cryptocurrency you want to buy at which exchange that cryptocurrency is available. With Bitdenex Exchange you can buy and sell coins easily and quickly. You can choose from the payment methods such as (very popular) iDeal. Once the payment is successful, you will immediately receive the purchased coins in your Bitdenex account. ',\n },\n {\n title: \" What do you offer? \",\n content:\n 'Bitdenex provide opportunity to interested people to find interesting projects in cryptocurrency. On the other hand, individuals may find the right trading platform to fulfill their investment dreams. Bitdenex don’t give advice to anyone. We only create the opportunity for the people to buy and sell cryptocurrency easily. ',\n },\n // {\n // title: \"Does Bitdenex require a licence from the authorities ? \",\n // content:\n // 'NO. Bitdenex is a trading platform for cryptocurrencies. In this capacity Bitdenex does not require a license from both Dutch Central Bank (DNB) and Authorities Financiele Markets (AFM). Bitdenex don’t offer financial products to our customers where we need financial data from individual customers. Bitdenex only offers the possibility to buy and sell a cryptocurrency at your own risk. When a license is required, Bitdenex will apply to the authorities to get a license. ',\n // },\n // {\n // title: \"Does it matter where I am from? \",\n // content:\n // 'Yes. Bitdenex offer our service in Europe. As a non-European citizen, you can’t get access to the trading platform. ',\n // },\n\n // {\n // title: \"Do I need skills to use the service? \",\n // content:\n // 'No. Bitdenex trading platform is made user-friendly so it is simple and easy to trade. Moreover, Bitdenex team will provide you any support you need! ',\n // },\n\n // {\n // title: \"Why should I join Bitdenex? \",\n // content:\n // 'By joining Bitdenex you will have a chance to contribute to the fair market and decentralized eco-system.',\n // },\n\n // {\n // title: \" Why do I have to create an Bitdenex account? \",\n // content:\n // 'To prevent fraud and scam, it is necessary to create an account. Your account must be verified so that we can be sure that you are the right person. Through these identification and verification obligations we try to prevent fraud and scam as much as possible. You also need to validate a bank account once in your Bitdenex account. After all identification and verification obligations you can start trading digital coins. ',\n // },\n // {\n // title: \" Why do I have to create an Bitdenex account? \",\n // content:\n // 'To prevent fraud and scam, it is necessary to create an account. Your account must be verified so that we can be sure that you are the right person. Through these identification and verification obligations we try to prevent fraud and scam as much as possible. You also need to validate a bank account once in your Bitdenex account. After all identification and verification obligations you can start trading digital coins. ',\n // },\n ];\n\n return (\n <>\n <Details\n state={state}\n items={items}\n />\n </>\n );\n};\n\nexport default Market;\n","// extracted by mini-css-extract-plugin\nexport default {\"exchange\":\"Exchange_exchange__llZQs\",\"nav\":\"Exchange_nav__Ryx0V\",\"link\":\"Exchange_link__B4c1P\",\"active\":\"Exchange_active__D0IAJ\",\"row\":\"Exchange_row__26Zjm\",\"col\":\"Exchange_col__ZP72J\",\"colMarket\":\"Exchange_colMarket__VHn0m\",\"marketScroll\":\"Exchange_marketScroll__kSULt\"};","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__9d+io\",\"details\":\"Main_details__tOveZ\",\"box\":\"Main_box__X99o+\",\"content\":\"Main_content__xpAjr\",\"line\":\"Main_line__RS5NN\",\"info\":\"Main_info__K0e51\",\"category\":\"Main_category__IB3jE\",\"price\":\"Main_price__tHKly\",\"list\":\"Main_list__apYW6\",\"item\":\"Main_item__cO70N\",\"subtitle\":\"Main_subtitle__Wmg5N\",\"statistics\":\"Main_statistics__9U3qD\",\"positive\":\"Main_positive__BOqMz\",\"currency\":\"Main_currency__5QYc1\",\"negative\":\"Main_negative__jGIcY\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport { getDigitsAfterDecimal } from \"../../../components/helper\";\n\nconst Main = ({\n selectedMarket,\n currentMarketPrice,\n priceColor,\n orderData\n}) => {\n\n return (\n <div className={styles.main}>\n <div className={styles.details}>\n <div className={styles.box}>\n <div className={styles.line}>\n <div className={styles.info}>\n {Object.keys(selectedMarket).length ? selectedMarket?.slug?.toUpperCase() : \"...\"}\n </div>\n <div className={cn(\"category-green\", styles.category)}></div>\n </div>\n <div className={styles.content}>{Object.keys(selectedMarket).length ? selectedMarket?.name?.toUpperCase() : \"...\"}</div>\n </div>\n <div className={styles.box}>\n <div className={cn(styles.statistics, priceColor === \"bottom\" ? styles.negative : styles.positive)}>\n <div className={styles.currency}>\n {\n currentMarketPrice === null || currentMarketPrice === undefined || currentMarketPrice === \"\"\n ?\n orderData?.length === 0 || orderData === null || orderData === undefined ? \"---\" :\n getDigitsAfterDecimal(orderData?.current_market_details?.[0]?.currentMarketPrice, orderData?.current_market_details?.[0]?.priceDecimalPrecision)\n :\n getDigitsAfterDecimal(currentMarketPrice, orderData?.current_market_details?.[0]?.priceDecimalPrecision)\n }\n </div>\n </div>\n </div>\n </div>\n <div className={styles.list}>\n <div className={styles.item}>\n <div className={styles.subtitle}>\n <Icon name=\"clock\" size=\"16\" />\n 24h change\n </div>\n <div className={styles.content} style={{ color: parseFloat(selectedMarket?.dayChange) > 0 ? '#00C076' : '#FF6838' }} >\n {Object.keys(selectedMarket).length ? getDigitsAfterDecimal(selectedMarket.dayChange, selectedMarket?.priceDecimalPrecision) : \"...\"}%\n </div>\n </div>\n <div className={styles.item}>\n <div className={styles.subtitle}>\n <Icon name=\"clock\" size=\"16\" />\n Week Change\n </div>\n <div className={styles.content} style={{ color: parseFloat(selectedMarket?.weekChange) > 0 ? '#00C076' : '#FF6838' }}>\n {Object.keys(selectedMarket).length ? getDigitsAfterDecimal(selectedMarket?.weekChange, selectedMarket?.priceDecimalPrecision) : \"...\"}%\n </div>\n </div>\n <div className={styles.item}>\n <div className={styles.subtitle}>\n <Icon name=\"chart\" size=\"16\" />\n Volume\n </div>\n <div className={styles.content}>\n {Object.keys(selectedMarket).length ? selectedMarket?.volume : \"\"}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;","// extracted by mini-css-extract-plugin\nexport default {\"balance\":\"Balance_balance__Mor5y\",\"head\":\"Balance_head__o85kL\",\"sorting\":\"Balance_sorting__KycPn\",\"direction\":\"Balance_direction__Mib6n\",\"active\":\"Balance_active__Rh64+\",\"dropdownHead\":\"Balance_dropdownHead__rEnQj\",\"dropdownArrow\":\"Balance_dropdownArrow__UmsDE\",\"dropdownBody\":\"Balance_dropdownBody__yq8s5\",\"dropdownOption\":\"Balance_dropdownOption__Lpnam\",\"top\":\"Balance_top__Nmcho\",\"item\":\"Balance_item__Ftax+\",\"negative\":\"Balance_negative__Fj3ZE\",\"line\":\"Balance_line__Nb-AD\",\"price\":\"Balance_price__aTalo\",\"positive\":\"Balance_positive__fh2g2\",\"amount\":\"Balance_amount__hI+5w\",\"total\":\"Balance_total__ghGdt\",\"statistics\":\"Balance_statistics__cqxuS\",\"currency\":\"Balance_currency__GCFZx\",\"money\":\"Balance_money__dd4ci\",\"progressAsk\":\"Balance_progressAsk__juXsB\",\"progressBid\":\"Balance_progressBid__5sXLv\",\"topNew\":\"Balance_topNew__tsc5j\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Balance.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport { getDigitsAfterDecimal } from \"../../../components/helper\";\n\nconst sorting = [\n {\n color1: \"#FF6838\",\n color2: \"#B1B5C3\",\n color3: \"#58BD7D\",\n },\n {\n color1: \"#B1B5C3\",\n color2: \"#B1B5C3\",\n color3: \"#58BD7D\",\n },\n {\n color1: \"#FF6838\",\n color2: \"#B1B5C3\",\n color3: \"#B1B5C3\",\n },\n];\n\nconst Balance = ({\n buy,\n sell,\n orderData,\n currentMarketPrice,\n priceColor\n}) => {\n const [showOption, setshowOption] = useState(0);\n const [limitOption, setLimitOption] = useState(15);\n\n const topBtnHandler = (index) => {\n setshowOption(index)\n if (index === 1 || index === 2) {\n setLimitOption(30);\n }\n else {\n setLimitOption(15);\n }\n };\n\n return (\n <div className={styles.balance}>\n <div className={styles.head}>\n <div className={styles.sorting}>\n {sorting.map((x, index) => (\n <button\n className={cn(styles.direction, { [styles.active]: index === showOption })}\n key={index} onClick={() => topBtnHandler(index)}\n >\n <span style={{ backgroundColor: x.color1 }}></span>\n <span style={{ backgroundColor: x.color2 }}></span>\n <span style={{ backgroundColor: x.color3 }}></span>\n </button>\n ))}\n </div>\n </div>\n <div className={styles.top}>\n <div className={styles.price}>Price({orderData?.current_market_details?.[0]?.currency?.toUpperCase()})</div>\n <div className={styles.amount}>Amount({orderData?.current_market_details?.[0]?.coin?.toUpperCase()})</div>\n <div className={styles.total}>Total({orderData?.current_market_details?.[0]?.currency?.toUpperCase()}) </div>\n </div>\n <div className={styles.list}>\n {(showOption === 0 || showOption === 2) && (\n sell?.slice(0, limitOption).sort((a, b) => parseFloat(a.fiatPrice) < parseFloat(b.fiatPrice) ? 1 : -1).map((x, index) =>\n <div className={cn(styles.item, { [styles.negative]: true })} key={index}>\n <div className={styles.price}>{getDigitsAfterDecimal(x.fiatPrice, x.priceDecimalPrecision)} </div>\n <div className={styles.amount}> {getDigitsAfterDecimal(x.remcrypto, x.amountDecimalPrecision)}</div>\n <div className={styles.total}>{getDigitsAfterDecimal(x.remfiat, 2)} </div>\n {/* <div className={styles.progressAsk} style={{ transform: \"translateX(-\" + getTranslateValue(x.remfiat) + \"%)\", left: \"100%\" }}></div> */}\n <div\n className={styles.line}\n style={{ width: `${x.normalizedVolume * 100}%` }}\n ></div>\n </div>\n )\n )}\n <div className={cn(styles.statistics, priceColor === \"bottom\" ? styles.negative : styles.positive)}>\n <div className={styles.currency}>\n {\n currentMarketPrice === null || currentMarketPrice === undefined || currentMarketPrice === \"\"\n ?\n orderData?.length === 0 || orderData === null || orderData === undefined ? \"---\" :\n getDigitsAfterDecimal(orderData?.current_market_details?.[0]?.currentMarketPrice, orderData?.current_market_details?.[0]?.priceDecimalPrecision)\n :\n getDigitsAfterDecimal(currentMarketPrice, orderData?.current_market_details?.[0]?.priceDecimalPrecision)\n }\n </div>\n <Icon fill={priceColor === \"bottom\" ? styles.negative : styles.positive} name={`arrow-${priceColor}`} size=\"16\" />\n </div>\n\n {(showOption === 0 || showOption === 1) && (\n buy?.slice(0, limitOption)?.sort((a, b) => parseFloat(a.fiatPrice) < parseFloat(b.fiatPrice) ? 1 : -1)?.map((x, index) =>\n <div className={cn(styles.item, { [styles.positive]: true })} key={index} >\n <div className={styles.price}>{getDigitsAfterDecimal(x.fiatPrice, x.priceDecimalPrecision)}</div>\n <div className={styles.amount}>{getDigitsAfterDecimal(x.remcrypto, x.amountDecimalPrecision)}</div>\n <div className={styles.total}>{getDigitsAfterDecimal(x.remfiat, 2)}</div>\n {/* <div className={styles.progressBid} style={{ transform: \"translateX(-\" + getTranslateValue(x.remfiat) + \"%)\", left: \"100%\" }}></div> */}\n <div\n className={styles.line}\n style={{ width: `${x.normalizedVolume * 100}%` }}\n ></div>\n </div>\n )\n )}\n </div>\n </div>\n );\n};\n\nexport default Balance;\n","// extracted by mini-css-extract-plugin\nexport default {\"nav\":\"Currency_nav__CqgjS\",\"form\":\"Currency_form__kW1FP\",\"link\":\"Currency_link__Xe+Kc\",\"active\":\"Currency_active__r2mnv\",\"input\":\"Currency_input__qs3+0\",\"result\":\"Currency_result__32cUp\",\"currency\":\"Currency_currency__krw8r\",\"table\":\"Currency_table__N3UUX\",\"row\":\"Currency_row__WfeGm\",\"col\":\"Currency_col__lhmET\",\"line\":\"Currency_line__M+4zk\",\"favorite\":\"Currency_favorite__QJAbQ\",\"info\":\"Currency_info__Vy1fz\",\"positive\":\"Currency_positive__R-4yB\",\"negative\":\"Currency_negative__XdcQv\",\"market\":\"Currency_market__0I+Is\",\"stickyHeaderNav\":\"Currency_stickyHeaderNav__lzNw7\",\"stickySearchBar\":\"Currency_stickySearchBar__YttmR\",\"rowOne\":\"Currency_rowOne__THD9v\",\"customRow\":\"Currency_customRow__zgL1R\",\"customCol\":\"Currency_customCol__EGI1T\",\"activeColumn\":\"Currency_activeColumn__TpPQe\",\"foot\":\"Currency_foot__adqqG\",\"favoriteLine\":\"Currency_favoriteLine__12Cg6\"};","import React, { useMemo } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Currency.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport { getDigitsAfterDecimal } from \"../../../components/helper\";\nimport { Link } from \"react-router-dom\";\n\nconst Currency = ({\n marketSearch,\n setMarketSearch,\n handleSort,\n activeColumn,\n setCurrentMarketPrice,\n order,\n regions,\n currencies,\n selectedRegion,\n regionChangeHandler,\n selectedCurrency,\n currencyChangeHandler,\n selectedCurrencyData,\n}) => {\n const searchLower = marketSearch.toLowerCase();\n\n const handleSorting = (columnName, data, order) => {\n if (!data?.length) return [];\n\n const sortingMap = {\n name: (a, b) => a?.name?.localeCompare(b.name),\n price: (a, b) => a?.currentMarketPrice - b?.currentMarketPrice,\n dayChange: (a, b) => a?.dayChange - b?.dayChange,\n };\n\n return [...data].sort((a, b) =>\n order === \"ASC\" ? sortingMap[columnName](a, b) : sortingMap[columnName](b, a)\n );\n };\n\n const sortedMarkets = useMemo(() => {\n if (!selectedCurrencyData?.markets) return [];\n\n let data = [...selectedCurrencyData.markets]?.sort((a, b) => a?.market_position - b?.market_position);\n\n return activeColumn?.key ? handleSorting(activeColumn.key, data, order) : data;\n }, [activeColumn, order, selectedCurrencyData]);\n\n const filteredMarkets = useMemo(() => {\n if (!marketSearch) return sortedMarkets;\n\n return sortedMarkets?.filter((x) =>\n x?.slug?.replace(\"-\", \"/\")?.toLowerCase()?.includes(searchLower) ||\n x?.name?.toLowerCase()?.includes(searchLower)\n );\n }, [marketSearch, sortedMarkets]);\n\n return (\n <div className={styles.currency}>\n {/* {\n regions?.length > 1 &&\n <div className={styles.nav}>\n {regions?.map((region, index) => (\n <button\n key={index}\n className={cn(styles.link, { [styles.active]: region === selectedRegion })}\n onClick={() => regionChangeHandler(region)}\n >\n {region}\n </button>\n ))}\n </div>\n } */}\n\n <div className={styles.nav}>\n {currencies?.map((currency, index) => (\n <button\n key={index}\n className={cn(styles.link, { [styles.active]: currency.currency === selectedCurrency })}\n onClick={() => currencyChangeHandler(currency)}\n >\n {currency.currency}\n </button>\n ))}\n </div>\n\n <form className={styles.form} onSubmit={(e) => e.preventDefault()}>\n <input\n className={styles.input}\n type=\"text\"\n value={marketSearch}\n onChange={(e) => setMarketSearch(e.target.value)}\n placeholder=\"Search\"\n required\n />\n <button className={styles.result}>\n <Icon name=\"search\" size=\"20\" />\n </button>\n </form>\n\n <div className={styles.table}>\n <div className={styles.row}>\n {[\"name\", \"price\", \"dayChange\"].map((col, index) => (\n <div key={index} className={styles.col}>\n <div\n className={cn(\"sorting\", { [styles.activeColumn]: activeColumn.key === col })}\n onClick={() => handleSort(col)}\n >\n {col === \"name\" ? \"Pair\" : col === \"price\" ? \"Price\" : \"Change\"}\n </div>\n </div>\n ))}\n </div>\n\n {filteredMarkets?.map((x, index) => (\n <Link className={styles.row} key={index} to={`/exchange/${x.slug}`}>\n <div className={styles.col} onClick={() => setCurrentMarketPrice(\"\")}>\n <div className={styles.line}>\n <div className={styles.info}>\n <span>{x?.slug?.replace(\"-\", \"/\")?.toUpperCase()}</span>\n </div>\n </div>\n </div>\n <div className={styles.col}>\n {getDigitsAfterDecimal(x?.currentMarketPrice, x?.priceDecimalPrecision)}\n </div>\n <div className={styles.col}>\n <div className={x?.dayChange < 0 ? styles.negative : styles.positive}>\n {x?.dayChange < 0 ? \"\" : \"+\"}\n {parseFloat(x?.dayChange)?.toFixed(2)}%\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n );\n};\n\nexport default Currency;\n","// extracted by mini-css-extract-plugin\nexport default {\"inner\":\"Table_inner__KQsnc\",\"dropdown\":\"Table_dropdown__Gfcbo\",\"nav\":\"Table_nav__7JDou\",\"link\":\"Table_link__ZPL0K\",\"active\":\"Table_active__VzWhe\",\"table\":\"Table_table__dc+Wy\",\"row\":\"Table_row__xt4Xv\",\"col\":\"Table_col__-b-Ep\",\"positive\":\"Table_positive__SCpzf\",\"negative\":\"Table_negative__0bb6I\",\"button\":\"Table_button__77lU7\",\"textCenter\":\"Table_textCenter__NYO3Y\"};","import React, { useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Table.module.sass\";\nimport Dropdown from \"../../../components/Dropdown\";\nimport { Link } from \"react-router-dom\";\n\nconst navigation = [\"My Open orders\", \"Market trades\"];\n\nconst Table = ({ }) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const [sorting, setSorting] = useState(navigation[0]);\n\n return (\n <div className={styles.inner}>\n <Dropdown\n className={styles.dropdown}\n value={sorting}\n setValue={setSorting}\n options={navigation}\n />\n <div className={styles.nav}>\n {navigation.map((x, index) => (\n <button\n className={cn(styles.link, {\n [styles.active]: index === activeIndex,\n })}\n onClick={() => setActiveIndex(index)}\n key={index}\n >\n {x}\n </button>\n ))}\n </div>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Time</div>\n <div className={styles.col}>Type</div>\n <div className={styles.col}>Order ID</div>\n <div className={styles.col}>Market</div>\n <div className={styles.col}>Price</div>\n <div className={styles.col}>Amount</div>\n <div className={styles.col}>Total</div>\n {activeIndex === 0 &&\n <>\n <div className={styles.col}>Fee</div>\n <div className={styles.col}>Action</div>\n </>\n }\n {activeIndex === 1 &&\n <div className={styles.col}>Status</div>\n }\n </div>\n </div>\n <div className={styles.textCenter}>\n <Link to=\"/sign-in\">Log in</Link>or<Link to=\"/sign-up\">Sign up</Link> to start trading\n </div>\n </div>\n );\n};\n\nexport default Table;\n","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"Actions_actions__oIZ-Z\",\"head\":\"Actions_head__B9HA9\",\"info\":\"Actions_info__5LD+d\",\"nav\":\"Actions_nav__bybeT\",\"link\":\"Actions_link__U2mQm\",\"active\":\"Actions_active__kukjX\",\"wrapper\":\"Actions_wrapper__AQ+am\",\"show\":\"Actions_show__jz5LP\",\"btns\":\"Actions_btns__2r4h+\",\"button\":\"Actions_button__mSL5n\"};","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Form_head__VR51a\",\"title\":\"Form_title__qJJWK\",\"close\":\"Form_close__RKC5k\",\"row\":\"Form_row__gjnH8\",\"col\":\"Form_col__PZCNk\"};","// extracted by mini-css-extract-plugin\nexport default {\"head\":\"Action_head__m4A38\",\"title\":\"Action_title__LwQdd\",\"counter\":\"Action_counter__joXPW\",\"field\":\"Action_field__7dDFp\",\"input\":\"Action_input__v0q2n\",\"label\":\"Action_label__SD456\",\"currency\":\"Action_currency__jY-dU\",\"button\":\"Action_button__VqBpQ\",\"warning\":\"Action_warning__g6DHn\",\"errorContainer\":\"Action_errorContainer__Hr+--\",\"errorMessage\":\"Action_errorMessage__neDBc\",\"hideClass\":\"Action_hideClass__BBhVu\",\"danger\":\"Action_danger__HrY1s\",\"estFee\":\"Action_estFee__5MwL0\",\"slippage\":\"Action_slippage__i9315\",\"tooltip\":\"Action_tooltip__y2HiG\",\"tooltiptext\":\"Action_tooltiptext__rxG2O\"};","import React, { useEffect, useState } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Action.module.sass\";\nimport { formatFeeHandler, getDigitsAfterDecimal } from \"../../../../../components/helper\";\nimport { Link } from \"react-router-dom\";\n\nconst takerFee = parseFloat(process.env.REACT_APP_TAKER_FEE);\nconst makerFee = parseFloat(process.env.REACT_APP_MAKER_FEE);\nconst spread = parseFloat(process.env.REACT_APP_ORDER_SPREAD);\n\nconst Action = ({\n title,\n limit,\n classButton,\n orderType,\n orderData,\n slug,\n currentMarketPrice,\n}) => {\n const [buyLimitPrice, setBuyLimitPrice] = useState(\"\");\n const [sellLimitPrice, setSellLimitPrice] = useState(\"\");\n const [buyAmount, setBuyAmount] = useState(\"\");\n const [sellAmount, setSellAmount] = useState(\"\");\n const [buyWarning, setBuyWarning] = useState(\"\");\n const [sellWarning, setSellWarning] = useState(\"\");\n const [buyTotal, setBuyTotal] = useState(\"\");\n const [sellTotal, setSellTotal] = useState(\"\");\n const [flag, setFlag] = useState(true);\n\n useEffect(() => {\n setBuyAmount(\"\");\n setSellAmount(\"\");\n setBuyWarning(\"\");\n setSellWarning(\"\");\n setBuyTotal(\"\");\n setSellTotal(\"\");\n }, [slug, orderData]);\n\n useEffect(() => {\n setFlag(true);\n }, [slug]);\n\n useEffect(() => {\n if (flag && currentMarketPrice) {\n setBuyLimitPrice(currentMarketPrice);\n setSellLimitPrice(currentMarketPrice);\n setFlag(false);\n }\n }, [flag, currentMarketPrice]);\n\n const handleBuyAmountChange = (value) => {\n const regex = /^\\d*\\.?\\d*$/;\n if (regex.test(value) || value === \"\") {\n setBuyAmount(value);\n\n if (value === \"\") {\n setBuyWarning(\"\");\n setBuyTotal(\"\");\n }\n else if (parseFloat(value) < parseFloat(process.env.REACT_APP_MINIMUM_ORDER_AMOUNT)) {\n setBuyWarning(`Amount should be greater than or equal to ${process.env.REACT_APP_MINIMUM_ORDER_AMOUNT} ${slug?.split(\"-\")?.[1]?.toUpperCase()}.`)\n }\n else if (parseFloat(value) <= 0) {\n setBuyWarning(\"Amount must be greater than 0\");\n }\n else if (parseFloat(value) > parseFloat(orderData?.currencyBalance)) {\n setBuyWarning(\"Insufficient balance\");\n setBuyTotal(\"0.00\");\n }\n else if (parseFloat(value) < parseFloat(process.env.REACT_APP_MINIMUM_ORDER_AMOUNT)) {\n setBuyWarning(`Minimum amount should be more than or equal to ${parseFloat(process.env.REACT_APP_MINIMUM_ORDER_AMOUNT)} ${slug.split(\"-\")[1]}.`);\n setBuyTotal(\"\");\n }\n else {\n setBuyWarning(\"\");\n\n let fiatAmount = (1 - (takerFee / 100)) * parseFloat(value);\n let fiatSpreadCalculation = (1 - (spread / 100)) * parseFloat(fiatAmount);\n let fiatSpread = parseFloat(fiatAmount) - parseFloat(fiatSpreadCalculation);\n\n let cryptoSpread = parseFloat(fiatSpread) / parseFloat(buyLimitPrice);\n let appCryptoTotal = parseFloat(fiatAmount) / parseFloat(buyLimitPrice);\n let customerCryptoTotal = (parseFloat(appCryptoTotal) - parseFloat(cryptoSpread));\n setBuyTotal(customerCryptoTotal ? getDigitsAfterDecimal(customerCryptoTotal, orderData?.current_market_details?.[0]?.amountDecimalPrecision) : \"\");\n }\n }\n };\n\n const handleSellAmountChange = (value) => {\n const regex = /^\\d*\\.?\\d*$/;\n if (regex.test(value) || value === \"\") {\n setSellAmount(value);\n\n if (value === \"\") {\n setSellWarning(\"\");\n setSellTotal(\"\");\n }\n else if (parseFloat(value) <= 0) {\n setSellWarning(\"Amount must be greater than 0\");\n }\n else if (parseFloat(value) > parseFloat(orderData?.coinBalance)) {\n setSellWarning(\"Insufficient balance\");\n setSellTotal(\"0.00\");\n }\n else if ((parseFloat(value) * parseFloat(sellLimitPrice)) < parseFloat(process.env.REACT_APP_MINIMUM_ORDER_AMOUNT)) {\n setSellWarning(`Minimum amount to sell should be more than or equal to ${parseFloat(process.env.REACT_APP_MINIMUM_ORDER_AMOUNT)} ${slug.split(\"-\")[1]}.`);\n setSellTotal(\"\");\n }\n else {\n setSellWarning(\"\");\n\n let fiatSpreadCalculation = (1 - (spread / 100)) * parseFloat(sellLimitPrice);\n let fiatSpread = parseFloat(sellLimitPrice) - parseFloat(fiatSpreadCalculation);\n let cryptoAmount = (1 - (makerFee / 100)) * parseFloat(value);\n let appFiatTotal = parseFloat(sellLimitPrice) * parseFloat(cryptoAmount);\n let customerFiatTotal = parseFloat(appFiatTotal) - parseFloat(fiatSpread);\n\n setSellTotal(customerFiatTotal ? getDigitsAfterDecimal(customerFiatTotal, orderData?.current_market_details?.[0]?.priceDecimalPrecision) : \"\");\n }\n }\n };\n\n const handleBuyLimitPriceChange = (value) => {\n const regex = /^\\d*\\.?\\d*$/;\n if (regex.test(value) || value === \"\") {\n setBuyLimitPrice(value);\n\n if (value === \"\") {\n setBuyWarning(\"\");\n setBuyTotal(\"\");\n }\n else if (parseFloat(value) <= 0) {\n setBuyWarning(\"Limit Price must be greater than 0\");\n }\n else {\n setBuyWarning(\"\");\n\n let fiatAmount = (1 - (takerFee / 100)) * parseFloat(buyAmount);\n let fiatSpreadCalculation = (1 - (spread / 100)) * parseFloat(fiatAmount);\n let fiatSpread = parseFloat(fiatAmount) - parseFloat(fiatSpreadCalculation);\n\n let cryptoSpread = parseFloat(fiatSpread) / parseFloat(value);\n let appCryptoTotal = parseFloat(fiatAmount) / parseFloat(value);\n let customerCryptoTotal = (parseFloat(appCryptoTotal) - parseFloat(cryptoSpread));\n setBuyTotal(customerCryptoTotal ? getDigitsAfterDecimal(customerCryptoTotal, orderData?.current_market_details?.[0]?.amountDecimalPrecision) : \"\");\n }\n }\n };\n\n const handleSellLimitPriceChange = (value) => {\n const regex = /^\\d*\\.?\\d*$/;\n if (regex.test(value) || value === \"\") {\n setSellLimitPrice(value);\n\n if (value === \"\") {\n setSellWarning(\"\");\n setSellTotal(\"\");\n }\n else if (parseFloat(value) <= 0) {\n setSellWarning(\"Limit Price must be greater than 0\");\n }\n else {\n setSellWarning(\"\");\n\n let fiatSpreadCalculation = (1 - (spread / 100)) * parseFloat(value);\n let fiatSpread = parseFloat(value) - parseFloat(fiatSpreadCalculation);\n let cryptoAmount = (1 - (makerFee / 100)) * parseFloat(sellAmount);\n let appFiatTotal = parseFloat(value) * parseFloat(cryptoAmount);\n let customerFiatTotal = parseFloat(appFiatTotal) - parseFloat(fiatSpread);\n\n setSellTotal(customerFiatTotal ? getDigitsAfterDecimal(customerFiatTotal, orderData?.current_market_details?.[0]?.priceDecimalPrecision) : \"\");\n }\n }\n };\n\n return (\n <>\n <div className={styles.head}>\n <div className={styles.title}>{title}</div>\n </div>\n {limit ? (\n orderType?.toLowerCase() === \"buy\" ? (\n <>\n <label className={styles.field}>\n <div className={styles.label}>Limit Price</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"price\"\n required\n value={buyLimitPrice}\n placeholder=\"0.00\"\n onChange={(e) => handleBuyLimitPriceChange(e.target.value)}\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[1]?.toUpperCase()}</div>\n </label>\n <label className={styles.field}>\n <div className={styles.label}>Amount</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"amount\"\n required\n value={buyAmount}\n placeholder=\"0.00\"\n onChange={(e) => handleBuyAmountChange(e.target.value)}\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[1]?.toUpperCase()}</div>\n </label>\n <div className={styles.errorContainer}>\n <span className={styles.errorMessage}>{buyWarning}</span>\n </div>\n <label className={styles.field}>\n <div className={styles.label}>Total</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n disabled={true}\n defaultValue={buyTotal}\n placeholder=\"0.00\"\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[0]?.toUpperCase()}</div>\n </label>\n <div className={styles.estFee}>\n <div className={styles.titleFeeText}>Est. Fee(≈)</div>\n <div className={styles.titleFee}>0.00 <small>{orderData?.current_market_details?.[0]?.currency?.toUpperCase()}</small></div>\n </div>\n </>\n ) : (\n <>\n <label className={styles.field}>\n <div className={styles.label}>Limit Price</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"price\"\n required\n value={sellLimitPrice}\n placeholder=\"0.00\"\n onChange={(e) => handleSellLimitPriceChange(e.target.value)}\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[1]?.toUpperCase()}</div>\n </label>\n <label className={styles.field}>\n <div className={styles.label}>Amount</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"amount\"\n required\n value={sellAmount}\n placeholder=\"0.00\"\n onChange={(e) => handleSellAmountChange(e.target.value)}\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[0]?.toUpperCase()}</div>\n </label>\n <div className={styles.errorContainer}>\n <span className={styles.errorMessage}>{sellWarning}</span>\n </div>\n <label className={styles.field}>\n <div className={styles.label}>Total</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n disabled={true}\n defaultValue={sellTotal}\n placeholder=\"0.00\"\n />\n <div className={styles.currency}>{slug?.split(\"-\")?.[1]?.toUpperCase()}</div>\n </label>\n <div className={styles.estFee}>\n <div className={styles.titleFeeText}>Est. Fee(≈)</div>\n <div className={styles.titleFee}>0.00 <small>{orderData?.current_market_details?.[0]?.coin?.toUpperCase()}</small></div>\n </div>\n </>\n )\n ) : (\n <>\n {orderType?.toLowerCase() === \"buy\" ? (\n <>\n <label className={styles.field}>\n <div className={styles.label}>Price</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"amount\"\n defaultValue={\"MarketPrice\"}\n disabled={true}\n />\n <div className={styles.currency}>{orderData?.current_market_details?.[0]?.currency?.toUpperCase()}</div>\n </label>\n <label className={styles.field}>\n <div className={styles.label}>Amount</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n value={buyAmount}\n onChange={(e) => handleBuyAmountChange(e.target.value)}\n placeholder=\"0.00\"\n />\n <div className={styles.currency}>{orderData?.current_market_details?.[0]?.currency?.toUpperCase()}</div>\n </label>\n <div className={styles.errorContainer}>\n <span className={styles.errorMessage}>{buyWarning}</span>\n </div>\n <label className={styles.hideClass}>\n <div className={styles.label}>Total</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n disabled={true}\n readOnly\n placeholder=\"0.00\"\n />\n </label>\n <div className={styles.estFee}>\n <div className={styles.titleFeeText}>Est. Fee(≈)</div>\n <div className={styles.titleFee}>0.00 <small>{orderData?.current_market_details?.[0]?.currency?.toUpperCase()}</small></div>\n </div>\n </>\n ) : (\n <>\n <label className={styles.field}>\n <div className={styles.label}>Price</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"amount\"\n defaultValue={\"MarketPrice\"}\n disabled={true}\n />\n <div className={styles.currency}>{orderData?.current_market_details?.[0]?.currency?.toUpperCase()}</div>\n </label>\n <label className={styles.field}>\n <div className={styles.label}>Amount</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n value={sellAmount}\n onChange={(e) => handleSellAmountChange(e.target.value)}\n placeholder=\"0.00\"\n />\n <div className={styles.currency}>{orderData?.current_market_details?.[0]?.coin?.toUpperCase()}</div>\n </label>\n <div className={styles.errorContainer}>\n <span className={styles.errorMessage}>{sellWarning}</span>\n </div>\n <label className={styles.hideClass}>\n <div className={styles.label}>Total</div>\n <input\n className={styles.input}\n type=\"text\"\n name=\"total\"\n required\n disabled={true}\n readOnly\n />\n </label>\n <div className={styles.estFee}>\n <div className={styles.titleFeeText}>Est. Fee(≈)</div>\n <div className={styles.titleFee}>0.00 <small>{orderData?.current_market_details?.[0]?.coin?.toUpperCase()}</small></div>\n </div>\n </>\n )}\n </>\n )}\n <Link\n className={cn(classButton, styles.button)}\n to={\"/sign-in\"}\n >\n Login\n </Link>\n </>\n );\n};\n\nexport default Action;\n","import React from \"react\";\nimport styles from \"./Form.module.sass\";\nimport Action from \"./Action\";\nimport { useMediaQuery } from \"react-responsive\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Form = ({\n limit,\n visible,\n setValue,\n orderData,\n slug,\n currentMarketPrice,\n}) => {\n const isTablet = useMediaQuery({ query: \"(max-width: 1023px)\" });\n\n return (\n <div className={styles.form}>\n {isTablet ? (\n <>\n {visible ? (\n <>\n <div className={styles.head}>\n <div className={styles.title}>Place order</div>\n <button\n className={styles.close}\n onClick={() => setValue(false)}\n >\n <Icon name=\"close-circle\" size=\"24\" />\n </button>\n </div>\n <Action\n title={`Buy ${slug?.split(\"-\")?.[0]?.toUpperCase()}`}\n limit={limit}\n classButton=\"button-green\"\n orderType={\"buy\"}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n </>\n ) : (\n <>\n <div className={styles.head}>\n <div className={styles.title}>Place order</div>\n <button\n className={styles.close}\n onClick={() => setValue(false)}\n >\n <Icon name=\"close-circle\" size=\"24\" />\n </button>\n </div>\n <Action\n title={`Sell ${slug?.split(\"-\")?.[0]?.toUpperCase()}`}\n limit={limit}\n classButton=\"button-red\"\n orderType={\"sell\"}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n </>\n )}\n </>\n ) : (\n <div className={styles.row}>\n <div className={styles.col}>\n <Action\n title={`Buy ${slug?.split(\"-\")?.[0]?.toUpperCase()}`}\n limit={limit}\n classButton=\"button-green\"\n orderType={\"buy\"}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n </div>\n <div className={styles.col}>\n <Action\n title={`Sell ${slug?.split(\"-\")?.[0]?.toUpperCase()}`}\n limit={limit}\n classButton=\"button-red\"\n orderType={\"sell\"}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Form;\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport cn from \"classnames\";\nimport styles from \"./Actions.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport Form from \"./Form\";\n\nconst Actions = ({\n OrderTypeNavigation,\n orderData,\n slug,\n currentMarketPrice,\n}) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const [visibleAction, setVisibleAction] = useState(false);\n const [visible, setVisible] = useState(false);\n\n const handleClickBuy = () => {\n setVisibleAction(true);\n setVisible(true);\n };\n\n const handleClickSell = () => {\n setVisibleAction(false);\n setVisible(true);\n };\n\n return (\n <div className={styles.actions}>\n <div className={styles.head}>\n <div className={styles.nav}>\n {OrderTypeNavigation?.map((x, index) => (\n <button\n className={cn(styles.link, {\n [styles.active]: index === activeIndex,\n })}\n onClick={() => {\n setActiveIndex(index)\n }}\n key={index}\n >\n {x}\n </button>\n ))}\n </div>\n <div className={styles.info}>\n Crypto trading tutorial\n <Link to=\"/learn-crypto\">\n Learn now <Icon name=\"arrow-right\" size=\"20\" />\n </Link>\n </div>\n </div>\n <div className={cn(styles.wrapper, { [styles.show]: visible })}>\n {activeIndex === 0 && (\n <Form\n visible={visibleAction}\n setValue={setVisible}\n limit\n slug={slug}\n orderData={orderData}\n currentMarketPrice={currentMarketPrice}\n />\n )}\n {activeIndex === 1 && (\n <Form\n visible={visibleAction}\n setValue={setVisible}\n slug={slug}\n orderData={orderData}\n currentMarketPrice={currentMarketPrice}\n />\n )}\n </div>\n <div className={styles.btns}>\n <button\n className={cn(\"button-green button-small\", styles.button)}\n onClick={() => handleClickBuy()}\n >\n Buy\n </button>\n <button\n className={cn(\"button-red button-small\", styles.button)}\n onClick={() => handleClickSell()}\n >\n Sell\n </button>\n </div>\n </div>\n );\n};\n\nexport default Actions;\n","// extracted by mini-css-extract-plugin\nexport default {\"charts\":\"Charts_charts__H0nOi\",\"head\":\"Charts_head__S5SNW\",\"nav\":\"Charts_nav__C1iXJ\",\"group\":\"Charts_group__5uzJe\",\"dropdown\":\"Charts_dropdown__9LiNE\",\"dropdownHead\":\"Charts_dropdownHead__0bic5\",\"link\":\"Charts_link__rXJzo\",\"active\":\"Charts_active__7kmgl\",\"inner\":\"Charts_inner__p6yPT\",\"iframe\":\"Charts_iframe__5uke8\",\"chart\":\"Charts_chart__ep-gz\"};","import React, { memo } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Charts.module.sass\";\nimport TVChartContainer from \"../../../components/TVChartContainer\";\nimport useDarkMode from \"use-dark-mode\";\n\nconst Actions = memo((\n slug,\n orderData\n) => {\n\n const darkMode = useDarkMode(false);\n\n return (\n <div className={styles.charts}>\n <div className={styles.inner}>\n <div className={styles.iframe}>\n <TVChartContainer\n symbol={slug?.slug}\n currentMarketDetails={orderData}\n theme={darkMode.value ? 'dark' : 'light'}\n />\n\n </div>\n </div>\n </div>\n );\n});\n\nexport default Actions;\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Exchange.module.sass\";\nimport Main from \"./Main\";\nimport Balance from \"./Balance\";\nimport Currency from \"./Currency\";\nimport Table from \"./Table\";\nimport Actions from \"./Actions\";\nimport Charts from \"./Charts\";\nimport { useMediaQuery } from \"react-responsive\";\nimport requestHandler from \"../../actions/httpClient\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { socketDataReceived } from \"../../actions/markets/index\";\nimport { useParams } from \"react-router\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport { io } from \"socket.io-client\";\n\nconst navigation = [\"Chart\", \"Order books\", \"Trades\"];\nconst OrderTypeNavigation = [\"Limit\", \"Market\"];\n\nconst Exchange = () => {\n const { slug } = useParams();\n const [activeIndex, setActiveIndex] = useState(0);\n const isTablet = useMediaQuery({ query: \"(max-width: 1023px)\" });\n const [loading, setLoading] = useState(false);\n const [orderData, setOrderData] = useState([]);\n const { socketMarketData } = useSelector((state) => state.markets);\n const dispatch = useDispatch();\n const [selectedMarket, setSelectedMarket] = useState([]);\n const [filteredMarkets, setFilteredMarkets] = useState([]);\n const [marketSearch, setMarketSearch] = useState(\"\");\n const [marketActiveIndex, setMarketActiveIndex] = useState(1);\n const [activeColumn, setActiveColumn] = useState({ key: \"\", value: false });\n const [buyOrdersData, setBuyOrdersData] = useState([]);\n const [sellOrdersData, setSellOrdersData] = useState([]);\n const [order, setOrder] = useState(\"ASC\");\n const [currentMarketPrice, setCurrentMarketPrice] = useState(\"\");\n const [previousPrice, setPreviousPrice] = useState(null);\n const [priceTrend, setPriceTrend] = useState(null);\n const priceColor = priceTrend === 'up' ? 'top' : priceTrend === 'down' ? 'bottom' : \"top\";\n const [selectedRegion, setSelectedRegion] = useState(\"\");\n const [selectedCurrency, setSelectedCurrency] = useState(\"\");\n\n const regions = [...new Set(socketMarketData?.flat()?.map((item) => item?.region_name))];\n\n const currencies = socketMarketData?.flat()?.filter((item) => item?.region_name === selectedRegion);\n\n const selectedCurrencyData = currencies?.find((item) => item?.currency === selectedCurrency);\n\n const regionChangeHandler = (value) => {\n setSelectedRegion(value);\n setSelectedCurrency(\"\");\n };\n\n const currencyChangeHandler = (value) => {\n setSelectedCurrency(value?.currency);\n };\n\n useEffect(() => {\n if (currencies.length) {\n setSelectedCurrency(currencies[0]?.currency);\n }\n }, [selectedRegion]);\n\n useEffect(() => {\n if (!selectedRegion && regions?.length) {\n setSelectedRegion(regions[0]);\n }\n }, [regions, selectedRegion]);\n\n // useEffect for sockets data (Market socket, Order Book)\n useEffect(() => {\n if (slug) {\n let timeoutId = null;\n const socket = io(process.env.REACT_APP_SOCKET_URL, {\n autoConnect: false,\n transports: ['websocket']\n });\n let marketSocket = \"new_all_markets_web\"\n let orderBook = `new_orderBook_${slug.toLowerCase()}`\n let orderBookPrice = `new_orderBookPrice_${slug.toLowerCase()}`\n const marketData = \"all_markets\";\n socket.connect();\n\n socket.on('connect', () => {\n socket.emit(\"markets\", marketData);\n socket.emit(\"subscribe\", slug?.toLowerCase());\n });\n\n socket.on(marketSocket, (data) => {\n dispatch(socketDataReceived(data));\n });\n\n socket.on(orderBook, function (order) {\n let buyMaxVol = calculateMaxVolumeOfOrderBook(order, \"buy\");\n let sellMaxVol = calculateMaxVolumeOfOrderBook(order, \"sell\");\n setBuyOrdersData(createOrderbook(order?.buy, buyMaxVol));\n setSellOrdersData(createOrderbook(order?.sell, sellMaxVol));\n });\n\n socket.on(orderBookPrice, function (order) {\n const newPrice = parseFloat(order?.currentMarketPrice);\n\n if (parseFloat(previousPrice) !== null) {\n if (parseFloat(newPrice) >= parseFloat(previousPrice)) {\n setPriceTrend('up');\n } else if (parseFloat(newPrice) < parseFloat(previousPrice)) {\n setPriceTrend('down');\n }\n }\n\n setPreviousPrice(newPrice);\n setCurrentMarketPrice(newPrice);\n timeoutId = setTimeout(() => {\n socket.emit(\"markets\", marketData);\n socket.emit(\"subscribe\", slug?.toLowerCase());\n }, parseInt(process.env.REACT_APP_ORDERBOOK_EMIT_TIME_INERTVAL));\n });\n\n return (() => {\n clearTimeout(timeoutId);\n socket.disconnect();\n });\n }\n }, [slug]);\n\n // useEffect to call the openOrder function\n useEffect(() => {\n getOpenOrders(slug);\n }, [slug]);\n\n // useEffect to set the selected market data\n useEffect(() => {\n if (slug && selectedCurrencyData) {\n const marketDetails = selectedCurrencyData?.markets?.find((market) => market?.slug === slug);\n if (marketDetails && marketDetails?.slug !== selectedMarket?.slug) {\n setSelectedMarket(marketDetails);\n }\n }\n }, [slug, selectedCurrencyData]);\n\n // getOpenOrder api\n const getOpenOrders = async (slug) => {\n setLoading(true);\n let data = {\n market_slug: slug,\n };\n try {\n const getOpenOrderPayload = await requestHandler(\"getOpenOrdersWithoutSignature\", \"post\", data, \"jwt_token\");\n setLoading(false);\n setOrderData(getOpenOrderPayload?.data?.data);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n // callback to render the charts component for once and if the slug changes\n const renderCharts = useCallback(() => {\n return <Charts\n slug={slug}\n orderData={orderData}\n />\n }, [slug]);\n\n const createOrderbook = (orders, maxVol) => {\n let createOrders = [];\n let tempData = [];\n for (let order of orders) {\n if (maxVol) {\n let newNormalizedVolume = Number(order?.remfiat) / Number(maxVol);\n order.normalizedVolume = newNormalizedVolume;\n }\n if (tempData.indexOf(parseFloat(order.fiatPrice)) < 0) {\n createOrders.push(order)\n tempData.push(parseFloat(order.fiatPrice));\n } else {\n let index = tempData.indexOf(parseFloat(order.fiatPrice));\n createOrders[index].remcrypto = parseFloat(order.remcrypto) + parseFloat(createOrders[index].remcrypto);\n createOrders[index].remfiat = parseFloat(order.remfiat) + parseFloat(createOrders[index].remfiat);\n }\n }\n return createOrders;\n };\n\n const handleSort = (columnName, filteredData) => {\n const sortingType = order === \"ASC\" ? \"DSC\" : \"ASC\";\n setOrder(sortingType);\n setActiveColumn({ key: columnName, value: true });\n\n // let newSortedData = filteredData\n // if (columnName === '') return newSortedData\n // if (columnName === \"name\") {\n // const sorted =\n // order && order === \"ASC\"\n // ? filteredData.sort((a, b) =>\n // a[\"name\"].toLowerCase() > b[\"name\"].toLowerCase() ? 1 : -1\n // )\n // : filteredData.sort((a, b) =>\n // a[\"name\"].toLowerCase() < b[\"name\"].toLowerCase() ? 1 : -1\n // );\n // newSortedData = sorted;\n // }\n // else if (columnName === \"price\") {\n // const sorted =\n // order && order === \"ASC\"\n // ? filteredData.sort((a, b) =>\n // a[\"currentMarketPrice\"] > b[\"currentMarketPrice\"] ? 1 : -1\n // )\n // : filteredData.sort((a, b) =>\n // a[\"currentMarketPrice\"] < b[\"currentMarketPrice\"] ? 1 : -1\n // );\n // newSortedData = sorted;\n // }\n // else if (columnName === \"dayChange\") {\n // const sorted =\n // order && order === \"ASC\"\n // ? filteredData.sort((a, b) =>\n // a[\"dayChange\"] > b[\"dayChange\"] ? 1 : -1\n // )\n // : filteredData.sort((a, b) =>\n // a[\"dayChange\"] < b[\"dayChange\"] ? 1 : -1\n // );\n // newSortedData = sorted;\n // }\n // setFilteredMarkets(newSortedData);\n };\n\n function calculateMaxVolumeOfOrderBook(orderBook, orderBookType) {\n try {\n const { buy, sell } = orderBook;\n if (orderBookType?.toLowerCase() === \"buy\") {\n const bidVolumes = buy.map(bid => bid.remfiat);\n const maxBidVolume = Math.max(...bidVolumes);\n return maxBidVolume;\n } else {\n const askVolumes = sell.map(ask => ask.remfiat);\n const maxAskVolume = Math.max(...askVolumes);\n return maxAskVolume;\n }\n } catch (error) {\n return 0;\n };\n };\n\n return (\n <>\n <div className={styles.exchange}>\n {loading && <LoaderScreen />}\n <Main\n selectedMarket={selectedMarket}\n currentMarketPrice={currentMarketPrice}\n priceColor={priceColor}\n orderData={orderData}\n />\n <div className={styles.nav}>\n {navigation.map((x, index) => (\n <button\n className={cn(styles.link, {\n [styles.active]: index === activeIndex,\n })}\n onClick={() => setActiveIndex(index)}\n key={index}\n >\n {x}\n </button>\n ))}\n </div>\n {isTablet ? (\n <>\n <Actions\n OrderTypeNavigation={OrderTypeNavigation}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n {activeIndex === 0 && (\n <div className={styles.box}>\n {renderCharts()}\n </div>\n )}\n {activeIndex === 1 && (\n <div className={styles.box}>\n <Balance\n buy={buyOrdersData}\n sell={sellOrdersData}\n orderData={orderData}\n currentMarketPrice={currentMarketPrice}\n priceColor={priceColor}\n />\n </div>\n )}\n {activeIndex === 2 && (\n <div className={styles.box}>\n <Currency\n marketSearch={marketSearch}\n setMarketSearch={setMarketSearch}\n setMarketActiveIndex={setMarketActiveIndex}\n marketActiveIndex={marketActiveIndex}\n filteredMarkets={filteredMarkets}\n handleSort={handleSort}\n activeColumn={activeColumn}\n setCurrentMarketPrice={setCurrentMarketPrice}\n socketMarketData={socketMarketData}\n order={order}\n regions={regions}\n currencies={currencies}\n selectedRegion={selectedRegion}\n regionChangeHandler={regionChangeHandler}\n selectedCurrency={selectedCurrency}\n currencyChangeHandler={currencyChangeHandler}\n selectedCurrencyData={selectedCurrencyData}\n />\n </div>\n )}\n </>\n ) : (\n <>\n <div className={styles.row}>\n <div className={styles.col}>\n <Balance\n buy={buyOrdersData}\n sell={sellOrdersData}\n orderData={orderData}\n currentMarketPrice={currentMarketPrice}\n priceColor={priceColor}\n />\n </div>\n <div className={styles.col}>\n {renderCharts()}\n <Actions\n OrderTypeNavigation={OrderTypeNavigation}\n orderData={orderData}\n slug={slug}\n currentMarketPrice={currentMarketPrice}\n />\n </div>\n <div className={styles.col}>\n <Currency\n marketSearch={marketSearch}\n setMarketSearch={setMarketSearch}\n setMarketActiveIndex={setMarketActiveIndex}\n marketActiveIndex={marketActiveIndex}\n filteredMarkets={filteredMarkets}\n handleSort={handleSort}\n activeColumn={activeColumn}\n setCurrentMarketPrice={setCurrentMarketPrice}\n socketMarketData={socketMarketData}\n order={order}\n regions={regions}\n currencies={currencies}\n selectedRegion={selectedRegion}\n regionChangeHandler={regionChangeHandler}\n selectedCurrency={selectedCurrency}\n currencyChangeHandler={currencyChangeHandler}\n selectedCurrencyData={selectedCurrencyData}\n />\n </div>\n </div>\n <Table />\n </>\n )}\n </div>\n </>\n );\n};\n\nexport default Exchange;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__7r-RI\",\"head\":\"Main_head__FJFwZ\",\"title\":\"Main_title__e1gEB\",\"breadcrumbs\":\"Main_breadcrumbs__-VCDH\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>\n Bitdenex Trading Rules\n </h2>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__yRLx9\",\"content\":\"Article_content__tVkHS\",\"actions\":\"Article_actions__7NBw2\",\"favorite\":\"Article_favorite__0qrsx\",\"link\":\"Article_link__s74mB\",\"text\":\"Article_text__ZY-o-\",\"titleText\":\"Article_titleText__zV6L2\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport PDF from \"./Documents/Bitdenex_Trading_Rules.pdf\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n The trading rules govern and ensure a safe and fair trading platform for all eligible Users.\n </p>\n <p>\n <a className={styles.link} href={PDF} target=\"_blank\" rel=\"noreferrer\">View and download the Bitdenex Trading Rules</a>\n </p>\n <p>\n These rules apply to all markets listed on the trading platform of Bitdenex. Bitdenex\n operates a central limit order book trading platform, where crypto assets can be\n exchanged for fiat or crypto assets and vice versa. This document describes the rules\n for trading on the Bitdenex Europe platform.\n </p>\n <h4>Trading engine and market mechanics</h4>\n <p>\n The Bitdenex trading engine matches Market Orders with Open Limit Orders within the\n Order Book for each market, listed crypto-asset. A User can only place orders in the\n Order Book if the User’s account has sufficient balance in the particular market.\n </p>\n\n <h4>Available Order Options</h4>\n <p>\n Order options available on the Bitdenex trading platform are:\n </p>\n\n <p>\n • Market Order: Market Orders are executed almost instantly and are matched with\n the best-priced and oldest Limit Orders in the Order Book at the time of the\n request to place an Order. Although is it a Market Order, there is no guarantee\n that a Market Order will fill at the Market Price indicated. Market Orders are filled\n with a number of different prices, and different Limit Orders based on the\n quantity of the Market Order and the quantities of the existing Limit Orders in the\n Order Book at the moment of execution.\n </p>\n <p>\n • Limit Order: Limit Orders are Orders to buy or sell at a fixed price set by the User\n itself. Limit Orders will be executed when the Market Price of the particular\n crypto-asset reaches the limit price set by the User.\n </p>\n <p>\n Bitdenex will add additional advanced order options on the trading platform in the near\n future.\n </p>\n\n <h4>Order Parameters</h4>\n <p>\n All Orders, either Limit or Market, have at least the following parameters:\n </p>\n <p>\n Market: Name of the crypto-asset.\n </p>\n <p>\n Side: Buy or Sell.\n </p>\n <p>\n Order Type: limit or market.\n </p>\n <p>\n Amount: The amount of the crypto-asset or base currency to be bought/sold.\n </p>\n <p>\n Price: The price for base asset, required for limit orders.\n </p>\n <h4>Trading Engine and Order Matching</h4>\n <div className={styles.titleText}>Listed Markets</div>\n <p>\n All Orders are matched by the self-developed and design Trading Engine of Bitdenex.\n </p>\n <p>\n • Market Orders are matched immediately with Limit Orders in the Order Book. Limit\n Orders are not matched immediately and are placed in the Order Book according to\n the set price.\n </p>\n <p>\n • Market Orders are matched based on price-time priority. This means that Market\n orders are matched with the Limit orders with the best available price. If several\n orders have the same price, the oldest Limit order is matched. This process\n continues until the order is filled, placed in the Order Book, or cancelled by User.\n </p>\n <p>\n • Orders may be settled nearly instantly or after a period of time.\n </p>\n <p>\n • Trading with oneself is not allowed. Users Order cannot match with each other.\n </p>\n <div className={styles.titleText}>Halted Markets</div>\n <p>\n In case a Market is halted, the following rules applies:\n </p>\n <p>\n • Orders cannot be placed, modified or cancelled.\n </p>\n <p>\n • No order matching occurs, Order Book will be stopped, and charts will not be\n available.\n </p>\n <p>\n • Bitdenex may, in its sole discretion, temporarily halt trading in a market to preserve\n market integrity and/or to conduct regular scheduled maintenance.\n </p>\n <h4>\n Market Protections\n </h4>\n <div className={styles.titleText}>Order Minimums</div>\n <p>\n All Market Orders and Limit Orders placed on the Bitdenex platform are subject to\n minimum order Amount requirements per market.\n </p>\n <div className={styles.titleText}>\n Spread Price Protection\n </div>\n <p>\n Market Orders are subject to a Spread Price Protection. Market Orders will fill at prices\n up to the Spread Protection Threshold from the mid-point price between the best bid\n and best offer on the Order Book at the time the Market Order is placed. If a Market\n Order would fill against Orders beyond the Spread Protection Threshold, the Order will\n partially fill up to the Spread Protection Threshold level and all the remaining quantity of\n the Order will be cancelled.\n </p>\n <div className={styles.titleText}>\n Trading Fee Structure\n </div>\n <p>\n The Bitdenex platform has a simple Trading Fee structure. A fixed percentage in trading\n fee for all executed Orders, applicable to all Users.\n </p>\n <div className={styles.titleText}>\n Market Integrity\n </div>\n <p>\n 1. Bitdenex uses an advanced system to detect certain User’s behaviour. In case of\n proved manipulation, the User will be banned from the Bitdenex trading platform\n and User’s account will be closed.\n </p>\n <p>\n Users are prohibited from engaging in market manipulation which includes, but is\n not limited to, the following activities:\n </p>\n <p className={styles.text}>\n • Pump and dumps: artificially inflating the price of a crypto-asset through\n false and misleading positive statements, in order to sell the cheaply\n purchased crypto-asset at a higher price.\n </p>\n <p className={styles.text}>\n • Wash trading: Simultaneously buying and selling the same financial\n instruments to create false trading volume and artificially inflate market\n activity\n </p>\n <p className={styles.text}>\n • Front-running: Trading in advance of a large client order to take advantage of\n anticipated price movements resulting from the execution of that order. Front\n running involves using confidential information about pending transactions\n to profit at the expense of other market Participants.\n </p>\n <p className={styles.text}>\n • Insider trading: trading in crypto-assets based on non-public, material\n information that could affect the price of those crypto-assets.\n </p>\n <p className={styles.text}>\n • Information-based Market Abuse: spreading false or misleading information\n about crypto companies, crypto projects, crypto-assets, or market\n conditions to influence prices or trading activity. Includes disseminating\n rumours, false news, or deceptive market commentary to manipulate market\n participants perceptions.\n </p>\n <p>\n 2. Bitdenex will inform the competent authority when any cases of market abuse or\n attempted market abuse occurring on or through the Bitdenex trading systems are\n identified.\n </p>\n <p>\n 3. All Users must promptly report any suspicious activity to Bitdenex that can relate to\n illicit activities that undermine the integrity and fairness of crypto markets and could\n be identified as one of the market manipulations listed above.\n </p>\n <p>\n 4. Bitdenex may cancel Open Orders for any reason, at its own discretion, including,\n but not limited to, the following circumstances:\n </p>\n <p className={styles.text}>\n • Orders placed by Users who, in Bitdenex's sole discretion, have engaged in\n abusive use of the platform, for example, Market Manipulation, or using the\n Bitdenex Services in a manner which unreasonably burdens the platform or\n Apps.\n </p>\n <p className={styles.text}>\n • Orders which involve an error with respect to price, quantity, or other\n parameters.\n </p>\n <p className={styles.text}>\n • If required by any applicable law or regulation.\n </p>\n <p className={styles.text}>\n • If required for technical reasons.\n </p>\n <p>\n 5. All Users have full and equal real-time access to market data. Market data is made\n available through the web interfaces and the Bitdenex app.\n </p>\n <div className={styles.titleText}>\n Scheduled downtime\n </div>\n <p>\n Bitdenex may temporarily suspend trading in any certain market for maintenance or for\n other reasons, by providing a notification thought the website, trading platform or\n Bitdenex App beforehand. Bitdenex may suspend any Bitdenex Service at any time in\n case of unexpected and urgent circumstances, without prior notice.\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__LUWN+\",\"head\":\"Main_head__+M6CT\",\"title\":\"Main_title__3GBuX\",\"breadcrumbs\":\"Main_breadcrumbs__u1y4o\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>\n Risk Disclosure Policy\n </h2>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__PZcPR\",\"content\":\"Article_content__9iezO\",\"actions\":\"Article_actions__g22Jg\",\"favorite\":\"Article_favorite__aMrp7\",\"link\":\"Article_link__jX89c\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport PDF from \"./Documents/Risk_Disclosure_Policy.pdf\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n This risk disclosure policy outlines various risks associated with trading crypto-assets.\n </p>\n <p>\n <a className={styles.link} href={PDF} target=\"_blank\" rel=\"noreferrer\">View and download the Risk Disclosure.</a>\n </p>\n <p>\n This risk disclosure policy is part of the Terms of Service, the Bitdenex User Agreement.\n The definitions used but not defined herein are defined in the User Agreement.\n User uses the Bitdenex Services entirely at their own risk. By accepting the Terms of\n Services, including the User Agreement, User also accepts and consents to the risks as\n included in this Risk Disclosure Policy. This Risk Disclosure Policy includes some of the\n most principal risks of using the Services, but it cannot and does not include all risks\n involved in using the Services.\n </p>\n <p>\n Trading with crypto-assets has its risks and through it, you can lose all or part of your\n investment. Always do your own research and choose whether to invest and how to\n invest yourself. Crypto-assets can be very volatile and the past performance is not\n indicative of future results.\n </p>\n\n <h4>Specific risks include:</h4>\n <p>\n • Counterparty Risk: Transactions in crypto-asset markets carry exposure to\n counterparties, such as exchanges, brokers, and other trading entities. There is a\n risk that counterparties may fail to fulfill their obligations, encounter financial\n difficulties, or face regulatory actions, potentially resulting in loss of assets or\n interrupted trading operations.\n </p>\n <p>\n • Market Liquidity and Depth: Large size trades may encounter liquidity\n challenges, especially in volatile or less liquid crypto markets. Sudden liquidity\n shortages or market shifts can lead to unfavorable pricing or execution delays,\n impacting trade efficiency.\n </p>\n\n <p>\n • Regulatory and Compliance Risk: Regulatory environments for crypto-assets\n vary significantly across jurisdictions and are subject to change. New regulations\n or changes to existing laws may affect market access, compliance costs, and\n reporting obligations. This evolving landscape can influence trading strategies\n and asset classifications.\n </p>\n <p>\n • Technology and Infrastructure Dependence: Reliable access to advanced\n technology is essential for trade execution and monitoring. Trading platforms,\n blockchain networks, and other infrastructure components may be vulnerable to\n outages, technical failures, or latency, which could delay transaction processing\n and affect operational reliability.\n </p>\n <p>\n • Price risk: Crypto-assets are highly volatile, with prices subject to sudden and\n significant fluctuations. Factors such as market sentiment, supply and demand\n dynamics, macroeconomic conditions and regulatory developments can drive\n rapid changes in crypto-asset prices. This volatility can lead to substantial\n financial losses, particularly for investors who are not familiar with the inherent\n risks of crypto-asset markets. Price risks are exacerbated during periods of\n market uncertainty, low liquidity, or high leverage, where small changes in\n market conditions can lead to larger price implications. Investors in cryptoassets may lose some or all of their original investment.\n </p>\n\n <h4>Volatility</h4>\n <p>\n Crypto-assets has a volatile nature and a User can incur a substantial and even a full\n loss of Funds by buying and trading crypto- assets. Before trading crypto-assets, a User\n should define its User’s risk tolerance and its financial position, and should not trade\n with Funds which cannot be lost in its entirety.\n </p>\n <p>\n User should always take into account that any execution price of a Market Order may\n differ significantly from the indicated price. Due to the (high) volatile nature of cryptoassets, this may change in the price between the time of the Order being initiated by\n User and the execution of the Order (i.e. 'slippage'). Execution of Orders during periods\n of high volume, illiquidity, fast movement or volatility, can be affected and may be\n executed at a different rate than indicated via the Services at the time of Users Order.\n User should be aware of the involved high risk while trading and placing Order for\n crypto-assets during these high volatility periods.\n </p>\n <p>\n Each market or Orderbook of a particular crypto-asset has its own degrees of liquidity.\n Many crypto-assets are having enough liquidity while others may not have enough\n liquidity. This means that not many User are willing to trade in that particular cryptoasset, which may cause low or not enough liquidity in the market. In case of low\n liquidity in a certain market, may have potential increased risk of loss because they can\n experience high volatility of prices and in such markets market participants may find it\n impossible to liquidate market positions except at very unfavorable prices. There is no\n guarantee that the markets for any crypto-asset allow you to establish or liquidate\n positions at favorable prices or will be even active and liquid when desired.\n </p>\n <h4>Account Security</h4>\n <p>\n Crypto Asset Service Providers and their clients’ accounts are targeted frequently by\n hackers and individuals seeking unauthorized access to User Funds, which may lead to\n User Funds being irretrievably lost. It is User’s sole responsibility to safeguard its account, with a strong password and activates two factor authentication (\"2FA\"). The\n 2FA is required for Users account at Bitdenex.\n </p>\n <h4>Human Errors</h4>\n <p>\n It is User’s sole responsibility to ensure any transactions are performed to the correct\n crypto wallets while transferring and depositing crypto-assets. Due to the nature of the\n protocols underlying Services, and the blockchains, transactions cannot be reverted in\n any situation.\n </p>\n <h4>Functioning of the Platform</h4>\n <p>\n The trading platform and/or the trading app, may be degraded during periods of high\n volume and high volatility, which may result in limitations on access to User’s Account\n and any of the Services, including the inability to initiate or complete transactions. This\n may also lead to support response time delays.\n </p>\n <h4>Information errors</h4>\n <p>\n All information, data, (marketing) materials provided on the Website, blog website, the\n Trading Platform or otherwise by Bitdenex are purely for informational purposes and\n may change without notice. In case of any information may be misleading, incomplete\n or erroneous, User can contact the Customer support team of Bitdenex to verify its\n legitimacy. User should always take responsibility for assessing the relevance,\n accuracy, adequacy, and reliability of any information provided and double check with\n other relevant information sources.\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__lhnpx\",\"head\":\"Main_head__tBp6e\",\"title\":\"Main_title__qImE-\",\"breadcrumbs\":\"Main_breadcrumbs__fuYtv\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <h2 className={cn(\"h3\", styles.title)}>\n Cookie Statement\n </h2>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__ftps1\",\"content\":\"Article_content__7L+R2\",\"actions\":\"Article_actions__rvAD-\",\"favorite\":\"Article_favorite__MLjoa\",\"link\":\"Article_link__dJKE-\",\"table\":\"Article_table__017LV\",\"row\":\"Article_row__kXjw5\",\"col\":\"Article_col__r8DaT\",\"button\":\"Article_button__92kfD\",\"chart\":\"Article_chart__HAFvR\",\"strongText\":\"Article_strongText__PPfnL\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport PDF from \"./Documents/Risk_Disclosure_Policy.pdf\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n The cookie statement explains how Bitdenex uses cookies to secure and enhance its services.\n </p>\n {/* <p>\n <a className={styles.link} href={PDF} target=\"_blank\" rel=\"noreferrer\">View and download the Risk Disclosure.</a>\n </p> */}\n <h4>1. Introduction</h4>\n <p>When you visit www.bitdenex.com, use any related website, or use the Bitdenex app, Bitdenex may use cookies and similar technologies to collect information about you. As Bitdenex values your privacy and prioritizes the careful handling of your (personal) data, this “Cookie Statement†explains what these technologies are, why we use them, and your rights to control our use of them.</p>\n <p>We are responsible for the use of cookies on our websites and applications. To get in touch with Bitdenex regarding our use of cookies, please refer to the contact details provided at the bottom of this Cookie Statement.</p>\n <p>This Cookie Statement is part of, and incorporates certain terms defined in the User Agreement.</p>\n <h4>2. What are cookies?</h4>\n <p>Cookies are small text files that websites place on your device while you are browsing. These files are processed and stored by your web browser. A cookie allows data (which may include personal data) to be stored on your device and retrieved when needed.</p>\n <p>On their own, cookies are harmless and are commonly used to ensure the proper functioning of a website, improve its efficiency, and provide valuable insights to website owners. Additionally, cookies can typically be easily viewed and deleted.</p>\n <div className={cn(\"h5\")}>2.1 Duration</div>\n <p>The duration for which a cookie stays on your browsing device depends on whether it is a persistent cookie or a session cookie, as explained below:</p>\n <p><span className={styles.strongText}>i. Session cookies:</span> These cookies are temporary and expire as soon as you close your browser or when your session ends.</p>\n <p><span className={styles.strongText}>ii. Persistent cookies:</span> These cookies remain on your hard drive until you delete them or your browser does, depending on the specific retention period set for the cookie (as outlined in section 3).</p>\n <div className={cn(\"h5\")}>2.2 Source of the cookies</div>\n <p>Cookies may be placed by several parties, as explained below:</p>\n <p><span className={styles.strongText}>i. First-party cookies:</span> These cookies are placed on your device directly by the website you are visiting.</p>\n <p><span className={styles.strongText}>ii. Third-party cookies:</span> These cookies are placed on your device by a party other than the website you are visiting, such as an advertiser or an analytics system.</p>\n <p>Please note that, although we may use some of the information collected by third-party cookies, we do not control the types of information that are collected and stored by these cookies. For more details on how third parties use cookies, please visit the third party’s website.</p>\n <h4>3. What types of cookies do we currently use and why?</h4>\n <p>Bitdenex uses cookies for functional, analytical, and marketing purposes.</p>\n <p>Some cookies used for analytical or marketing purposes allow the storage and retrieval of personal data on your device. For example, cookies may be used to display advertisements and other relevant content based on your interests, conduct campaign analysis, and target specific audiences. We will request your consent before using these types of cookies.</p>\n <p>Below is a list of the cookies we currently use, categorized by type. This includes the provider of each cookie, the purposes for which we use them, their lifespan, and the legal basis for processing personal data through these cookies.</p>\n <div className={cn(\"h5\")}>3.1 Functional cookies</div>\n <p>Some of the cookies we place are essential to ensure the proper technical functioning of our website. Other cookies are used to provide additional functionalities, such as saving or remembering your preferred settings.</p>\n <p>We process the following functional cookies:</p>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Name</div>\n <div className={styles.col}>Source</div>\n <div className={styles.col}>Purpose</div>\n <div className={styles.col}>Expiration</div>\n <div className={styles.col}>Legal ground</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>__Secure-1PAPISID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>This cookie is used by Google to secure user sessions and for tracking the performance of advertisements on Google’s network. It stores information for enhancing ad targeting and authentication on Google services.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>__Secure-1PSID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>Used to store authentication information and improve the security of user accounts.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>__Secure-3PAPISID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>This cookie is used for advertising and user session management.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>__Secure-3PSID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>This cookie is used to manage user login sessions and improve security for Google accounts.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>receive-cookie-deprecation</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>This cookie could be used to track whether the user has accepted the change in cookie policies or cookie deprecation (e.g., blocking certain cookies due to privacy regulations).</div>\n <div className={styles.col}>15 months</div>\n <div className={styles.col}>Consent</div>\n </div>\n </div>\n\n <div className={cn(\"h5\")}>3.2 Analytical cookies</div>\n <p>We use analytical cookies to gather information about how you use our website. The data collected by these cookies helps us assess the quality and effectiveness of our website. This information may include the most visited pages, the amount of time spent on specific pages, or any error messages you encounter while browsing.</p>\n <p>We process the following analytical cookies:</p>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Name</div>\n <div className={styles.col}>Source</div>\n <div className={styles.col}>Purpose</div>\n <div className={styles.col}>Expiration</div>\n <div className={styles.col}>Legal ground</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>_ga</div>\n <div className={styles.col}>Google Analytics</div>\n <div className={styles.col}>This cookie is used to distinguish users for analytical purposes. It helps track user interactions with the website for statistical analysis. It’s critical for measuring website performance and understanding how users navigate the site.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>_ga_74V5VTT2N5</div>\n <div className={styles.col}>Google Analytics</div>\n <div className={styles.col}>This cookie is used to store a unique ID for tracking users and their behavior across sessions.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>_ga_HRCK7KCPZH</div>\n <div className={styles.col}>Google Analytics</div>\n <div className={styles.col}>This cookie is used to track user activity and session information across different visits.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n </div>\n <div className={cn(\"h5\")}>3.3 Marketing cookies</div>\n <p>We use various cookies for advertising, commercial, and promotional purposes. The personal data collected by these cookies are analyzed and used to develop campaigns and target audiences with the most relevant information and personalized communications on the website or app.</p>\n <p>We process the following marketing cookies:</p>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>Name</div>\n <div className={styles.col}>Source</div>\n <div className={styles.col}>Purpose</div>\n <div className={styles.col}>Expiration</div>\n <div className={styles.col}>Legal ground</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>NID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>Used by Google to store user preferences (like language or region) and other personalization settings.</div>\n <div className={styles.col}>6 months</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>SAPISID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>This cookie is part of the Google authentication system and helps identify users in Google services. It may also help in serving personalized ads based on the user’s interaction with Google.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>SSID</div>\n <div className={styles.col}>Google</div>\n <div className={styles.col}>Used by Google to identify a particular user's session and for maintaining login information.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>XANDR_PANID</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>This cookie registers data on the visitor. The information is used to optimize advertisement relevance.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>anj</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>Registers a unique ID that identifies a returning user's device. The ID is used for targeted ads.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>icu</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>May store information on user preferences or settings related to content display.</div>\n <div className={styles.col}>Unknown</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>uids</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>This cookie is used to track a user across multiple websites, acting as a way to identify and target them for advertising purposes.</div>\n <div className={styles.col}>Unknown</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>usersync</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>Used to synchronize users across different advertising platforms or networks. This cookie ensures that a user is recognized across various networks that share data for ad targeting.</div>\n <div className={styles.col}>1 year</div>\n <div className={styles.col}>Consent</div>\n </div>\n <div className={styles.row}>\n <div className={styles.col}>uuid2</div>\n <div className={styles.col}>HTTP Cookie</div>\n <div className={styles.col}>Registers a unique ID that identifies a returning user's device. The ID is used for targeted ads.</div>\n <div className={styles.col}>3 months</div>\n <div className={styles.col}>Consent</div>\n </div>\n </div>\n <h4>4. Change your cookie settings</h4>\n <p>On your first visit to our website, you made a choice regarding whether or not to accept cookies. You can always change this preference through the cookie settings on our website. If you wish to disable cookies, receive a notification when a cookie is placed on your device, or delete all stored cookies, you can do so through your browser settings (usually found under \"Help\" or \"Internet options\"). Below, you will find links to the relevant instructions for your selected browser:</p>\n <p><a href=\"https://support.google.com/chrome/answer/95647?co=GENIE.Platform%3DDesktop&hl=en&vid=0-1298829099063-1526993459868v\" target=\"_blank\">-Chrome</a></p>\n <p><a href=\"https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop?redirectlocale=en-US&redirectslug=enable-and-disable-cookies-website-preferences\" target=\"_blank\">-Firefox</a></p>\n <p><a href=\"https://support.microsoft.com/en-gb/windows/manage-cookies-in-microsoft-edge-view-allow-block-delete-and-use-168dab11-0753-043d-7c16-ede5947fc64d\" target=\"_blank\">-Internet Explorer</a></p>\n <p><a href=\"https://support.apple.com/en-gb/guide/safari/sfri11471/mac\" target=\"_blank\">-Safari</a></p>\n <h4>5. Updating the Cookie Statement</h4>\n <p>If Bitdenex changes the cookies used on the website, we will update this Cookie Statement accordingly. Any updates to the Cookie Statement will take effect once the update is announced on the website or through any other official communication channel.</p>\n <h4>6. Contact and questions about this Cookie Statement?</h4>\n <p>If you have any questions or would like to learn more about Bitdenex's Cookie Statement, please email us at support@bitdenex.com or contact our Data Protection Officer directly at support@bitdenex.com. We will respond to your request as quickly as possible.</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__YjU02\",\"content\":\"Article_content__-NK-n\",\"actions\":\"Article_actions__HmEQR\",\"favorite\":\"Article_favorite__Mk81p\",\"link\":\"Article_link__RxgFl\",\"text\":\"Article_text__NNrCF\",\"spanText\":\"Article_spanText__20X9K\",\"supportButton\":\"Article_supportButton__c1Fjd\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <h4>\n Secure Submission Guidelines\n </h4>\n <h4>\n For Whistleblowers\n </h4>\n <p>\n To ensure your security and anonymity when submitting sensitive information, please follow these guidelines:\n </p>\n <p>\n Accessing the Platform Securely\n </p>\n <p>\n 1. Download and install the Tor Browser from <a href=\"https://www.torproject.org/download/\" target=\"_blank\" rel=\"noopener noreferrer\"><button className={styles.supportButton}>Link</button></a>\n </p>\n <p>\n 2. Access our secure submission platform ONLY through Tor Browser at:\n </p>\n <p>\n <a href=\"http://mpjldaml5w63ndngygosxecho7fyhl3fxpk3izhzb5hm7zlur2n54mid.onion/embed/98fe2b4c-27cc-42ee-8999-5819954bc870\" target=\"_blank\" rel=\"noopener noreferrer\"><button className={styles.supportButton}>Link</button></a>\n </p>\n <p>\n 3. Before making your submission:\n </p>\n <p className={styles.text}>\n •\n Set Tor Browser's Security Level to \"Safest\"\n </p>\n <p className={styles.text}>\n •\n Disable JavaScript using the shield icon in the toolbar\n </p>\n <p className={styles.text}>\n •\n Use a secure internet connection, preferably not your home or work network\n </p>\n <h4>\n Important Security Notes\n </h4>\n <p>\n •\n ONLY make submissions through Tor Browser using our .onion address\n </p>\n\n <p>\n •\n <a href=\"https://bitdenex-ethics.yokai.network/embed/98fe2b4c-27cc-42ee-8999-5819954bc870\" target=\"_blank\" rel=\"noopener noreferrer\"><button className={styles.supportButton}>Link</button></a>\n </p>\n <p>\n •\n Never use regular browsers or the <a href=\"https://bitdenex-ethics.yokai.network/embed/98fe2b4c-27cc-42ee-8999-5819954bc870\" target=\"_blank\" rel=\"noopener noreferrer\"><button className={styles.supportButton}>Link</button></a> for sensitive submissions\n </p>\n <p>\n •\n Consider using a public Wi-Fi network and maintaining physical distance from the submission location\n </p>\n <p>\n • Do not access this platform from your work computer or network\n </p>\n <p>\n • Avoid discussing your submissions through email or other traceable communications\n </p>\n <p>\n • Never share your codename or any details about your submission via insecure channels\n </p>\n <h4>\n Best Practices\n </h4>\n <p>\n • Keep your codename safe and confidential\n </p>\n <p>\n • Clear your Tor Browser session after each submission by clicking the \"New Identity\" button\n </p>\n <p>\n • For large files over 100MB, please first submit a message to request alternative transfer methods\n </p>\n <p>\n • If you need to make multiple submissions, use the same codename to maintain conversation continuity\n </p>\n <h4>\n After Submission\n </h4>\n <p>\n • Regularly check for responses using your codename\n </p>\n <p>\n • Always use Tor Browser for all communications\n </p>\n <p>\n • Never reveal your identity or submission details on other platforms\n </p>\n <p>\n For regular access to the platform (non-whistleblowers), please use our standard website at <a href=\"https://bitdenex-ethics.yokai.network/embed/98fe2b4c-27cc-42ee-8999-5819954bc870\" target=\"_blank\" rel=\"noopener noreferrer\"><button className={styles.supportButton}>Link</button></a>\n </p>\n <p>\n <span className={styles.spanText}>Note:</span> This platform is designed to protect your identity when accessed through Tor Browser. However, please be aware that no system can guarantee 100% security. Exercise caution and good judgment when submitting sensitive information.\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Article;","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n {/* <Main /> */}\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n {/* <Main />\n <Article /> */}\n </>\n );\n};\n\nexport default TermsAndConditions;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__u8DNk\",\"wrap\":\"Main_wrap__5rQhf\",\"title\":\"Main_title__mK1rf\",\"text\":\"Main_text__SaCTf\"};","import React, { memo } from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = ({ }) => {\n\n return (\n <div className={cn(\"section-mb0\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.wrap}>\n <h1 className={cn(\"h4\", styles.title)}>\n Welcome to Bitdenex Status Page\n </h1>\n <div className={styles.text}>\n We use this page to communicate any issues with our platform, including both planned maintenance and unplanned outages. Stay updated on the current status of our services and any disruptions that may impact your experience.\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(Main);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Details_container__IBkjb\"};","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"Trade_table__U-VIM\",\"form\":\"Trade_form__EuFq0\",\"input\":\"Trade_input__1e3-F\",\"result\":\"Trade_result__fVFt4\",\"row\":\"Trade_row__Rw-To\",\"col\":\"Trade_col__vYzNm\",\"button\":\"Trade_button__1a3TD\",\"chart\":\"Trade_chart__9G7g7\",\"supportButton\":\"Trade_supportButton__o+D6y\",\"disabledButton\":\"Trade_disabledButton__FMuFq\",\"checkMark\":\"Trade_checkMark__uCEZA\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Trade.module.sass\";\nimport Icon from \"../../../../components/Icon\";\n\nconst Trade = ({\n coinFee,\n search,\n handleSearch\n}) => {\n\n return (\n <div className={styles.trade}>\n <form className={styles.form}>\n <input\n value={search}\n className={styles.input}\n type=\"text\"\n onChange={handleSearch}\n name=\"search\"\n placeholder=\"Search coin\"\n required\n />\n <button onClick={(e) => { e.preventDefault(); }} className={styles.result}>\n <Icon name=\"search\" size=\"20\" />\n </button>\n </form>\n <div className={styles.table}>\n <div className={styles.row}>\n <div className={styles.col}>#</div>\n <div className={styles.col}>\n COIN\n </div>\n <div className={styles.col}>\n NETWORK\n </div>\n <div className={styles.col}>\n DEPOSITS\n </div>\n <div className={styles.col}>\n WITHDRAWS\n </div>\n <div className={styles.col}>\n TRADE\n </div>\n </div>\n {coinFee?.filter((x) => {\n const searchText = `${x?.name?.toUpperCase()} ${x?.symbol?.toUpperCase()} ${x?.network_name?.toUpperCase()}`;\n return searchText?.includes(search?.toUpperCase());\n }).map((i, ind) => {\n return (\n <div className={styles.row} key={ind}>\n <div className={styles.col}>\n <div className={styles.line}>{ind + 1}</div>\n </div>\n <div className={styles.col}>\n {`${i.name?.toUpperCase()}(${i.symbol?.toUpperCase()})`}\n </div>\n <div className={styles.col}>\n {i.network_name === null ? `${i.name?.toUpperCase()}` : `${i.network_name}`}\n </div>\n <div className={styles.col}>\n {i?.enable_deposit === parseInt(process.env.REACT_APP_DEPOSIT_ENABLE) ?\n <button className={styles.supportButton}>\n Enabled\n </button>\n :\n <button className={styles.disabledButton}>\n Disabled\n </button>\n }\n </div>\n <div className={styles.col}>\n {i?.enable_withdraw === parseInt(process.env.REACT_APP_WITHDRAW_ENABLE) ?\n <button className={styles.supportButton}>\n Enabled\n </button>\n :\n <button className={styles.disabledButton}>\n Disabled\n </button>\n }\n </div>\n <div className={styles.col}>\n <span className={styles.checkMark}>\n ✓\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Trade;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Details.module.sass\";\nimport Trade from \"./Trade\";\n\nconst Details = ({\n coinFee,\n search,\n handleSearch,\n}) => {\n\n return (\n <div className={cn(\"section\", styles.details)}>\n <div className={cn(\"container\", styles.container)}>\n <Trade\n coinFee={coinFee}\n search={search}\n handleSearch={handleSearch}\n />\n </div>\n </div>\n );\n};\n\nexport default Details;","import React, { useEffect, useState } from \"react\";\nimport Main from \"./Main\";\nimport Details from \"./Details\";\nimport LoaderScreen from \"../../components/LoaderScreen\";\nimport requestHandler from \"../../actions/httpClient\";\n\nconst Market = () => {\n const [loading, setLoading] = useState();\n const [coinFee, setCoinFee] = useState([]);\n const [search, setSearch] = useState(\"\");\n\n useEffect(() => {\n getFeeHandler();\n }, []);\n\n const getFeeHandler = async () => {\n setLoading(true);\n try {\n const getFeePayload = await requestHandler(\"getCoinStructure\", \"post\");\n setLoading(false);\n setCoinFee(getFeePayload?.data?.data);\n }\n catch (e) {\n setLoading(false);\n };\n };\n\n const handleSearch = (event) => {\n setSearch(event.target.value);\n };\n\n return (\n <>\n {loading && <LoaderScreen />}\n <Main />\n <Details\n coinFee={coinFee}\n search={search}\n handleSearch={handleSearch}\n />\n </>\n );\n};\n\nexport default Market;\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"Main_main__x8RCH\",\"head\":\"Main_head__FW1s4\",\"title\":\"Main_title__nRo6b\",\"breadcrumbs\":\"Main_breadcrumbs__3qlgV\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Main.module.sass\";\n\nconst Main = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.head}>\n <div className={cn(\"h3\", styles.title)}>\n Whistleblower Procedure\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Main;","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Article_container__IfT8J\",\"content\":\"Article_content__l96Uz\",\"actions\":\"Article_actions__fMtck\",\"favorite\":\"Article_favorite__E4YOK\",\"link\":\"Article_link__nPEB2\",\"text\":\"Article_text__3cMNq\",\"spanText\":\"Article_spanText__MsdVY\",\"supportButton\":\"Article_supportButton__GObLt\"};","import React from \"react\";\nimport cn from \"classnames\";\nimport styles from \"./Article.module.sass\";\nimport Icon from \"../../../components/Icon\";\nimport { Link } from \"react-router-dom\";\n\nconst Article = () => {\n return (\n <div className={cn(\"section\", styles.main)}>\n <div className={cn(\"container\", styles.container)}>\n <div className={styles.content}>\n <p>\n Do you believe that Bitdenex is not complying with the law, or that Bitdenex is involved in an act or omission which could harm the public interest? In that case, we would like to receive your input so that we can take appropriate measures.\n </p>\n <h4>\n What is a whistleblower?\n </h4>\n <p>\n A whistleblower is someone who raises the alarm within an organization by reporting a concerning situation. For a whistleblower, for example a (former) employee, the reporting could be a big step. He or she may fear that the report could negatively impact their relationship with the employer or colleagues. Concerns about dismissal, workplace bullying, or reassignment may arise.\n </p>\n <p>\n To safeguard the whistleblower's best interests, Bitdenex has set up a whistleblower procedure.\n </p>\n <h4>\n What does the policy include?\n </h4>\n <p className={styles.text}>\n -\n Protection of the whistleblower\n </p>\n <p className={styles.text}>\n -\n Careful investigation of the report\n </p>\n <p className={styles.text}>\n -\n Clear procedures and guidelines\n </p>\n <p className={styles.text}>\n -\n Safety and confidentiality\n </p>\n <p className={styles.text}>\n -\n Option for external reporting\n </p>\n <h4>\n Who can file a report?\n </h4>\n <p>\n Anyone who has or had a work-related relationship with Bitdenex can file a report. This includes employees, former employees, volunteers, trainees, applicants, shareholders, directors, contractors, subcontractors, suppliers and anyone who works or has worked under the supervision of Bitdenex.\n </p>\n <h4>\n Reporting\n </h4>\n <p>\n Do you want to file a report regarding a breach or misconducted that is related to Bitdenex? Please follow this link.\n </p>\n </div>\n <div><Link className={styles.supportButton} to={\"/whistleblower\"}><span className={styles.icon}></span>Click here</Link></div>\n </div>\n </div>\n );\n};\n\nexport default Article;","import React from \"react\";\nimport Main from \"./Main\";\nimport Article from \"./Article\";\n\nconst TermsAndConditions = () => {\n return (\n <>\n <Main />\n <Article />\n </>\n );\n};\n\nexport default TermsAndConditions;\n","import { BrowserRouter as Router, Route, Routes } from \"react-router-dom\";\nimport \"./styles/app.sass\";\nimport Page from \"./components/Page\";\nimport Home from \"./screens/Home\";\nimport Market from \"./screens/Market\";\nimport LearnCrypto from \"./screens/LearnCrypto\";\nimport LearnCryptoDetails from \"./screens/LearnCryptoDetails\";\nimport AmlPolicy from \"./screens/AmlPolicy\";\nimport SignIn from \"./screens/SignIn\";\nimport SignUp from \"./screens/SignUp\";\nimport ForgotPassword from \"./screens/ForgotPassword\";\nimport TermsAndConditions from \"./screens/TermsAndConditions\";\nimport PrivacyPolicy from \"./screens/PrivacyPolicy\";\nimport LocationRestriction from \"./screens/LocationRestriction\";\nimport TermsAndConditionsForReferralProgram from \"./screens/TermsAndConditionsForReferralProgram\";\nimport BuyAndSellBitcoin from \"./screens/BuyAndSellBitcoin\";\nimport BuyAndSellTron from \"./screens/BuyAndSellTron\";\nimport BuyAndSellEthereum from \"./screens/BuyAndSellEthereum\";\nimport BuyAndSellLitecoin from \"./screens/BuyAndSellLitecoin\";\nimport BuyAndSellRipple from \"./screens/BuyAndSellRipple\";\nimport BuyAndSellSteller from \"./screens/BuyAndSellStellar\";\nimport Fees from \"./screens/Fees\";\nimport LegalCenter from \"./screens/LegalCenter\";\nimport HelpCenter from \"./screens/HelpCenter\";\nimport KycPolicy from \"./screens/KycPolicy\";\nimport Videos from \"./screens/Videos\"\nimport BitdenexPay from './screens/BitdenexPay'\nimport BitdenexPartners from './screens/BitdenexPartners'\nimport BitdenexApp from \"./screens/BitdenexApp\";\nimport CoinListing from './screens/CoinListing'\nimport PageNotFound from './screens/PageNotFound'\nimport ReferralProgram from './screens/ReferralProgram'\nimport AboutCoin from './screens/AboutCoin'\nimport BitdenexToken from './screens/BitdenexToken';\nimport Staking from './screens/Staking';\nimport BuyAndSellBitdenex from \"./screens/BuyAndSellBitdenex\";\nimport BuyAndSellCardano from \"./screens/BuyAndSellCardano\";\nimport BuyAndSellSolana from \"./screens/BuyAndSellSolana\";\nimport CoinDetail from \"./screens/CoinDetail\";\nimport Exchange from \"./screens/Exchange\";\nimport TradingRules from \"./screens/TradingRules\";\nimport RiskDisclosure from \"./screens/RiskDisclosure\";\nimport CookieStatement from \"./screens/CookieStatement\";\nimport Whistleblower from \"./screens/Whistleblower\";\nimport ConflictOfInterest from \"./screens/ConflictOfInterest\";\nimport CoinStatus from \"./screens/CoinStatus\";\nimport WhistleblowerProcedure from \"./screens/WhistleblowerProcedure\";\n\nimport { useEffect } from \"react\";\n\nfunction App() {\n useEffect(() => {\n if (localStorage.getItem('signature') && localStorage.getItem('signature') !== \"\"\n || localStorage.getItem('jwt_token') && localStorage.getItem('jwt_token') !== \"\"\n || localStorage.getItem('switch_exchange') && localStorage.getItem('switch_exchange') !== \"\") {\n\n deleteAllCookies();\n localStorage.removeItem('signature')\n localStorage.removeItem('jwt_token')\n localStorage.removeItem('switch_exchange')\n }\n }, []);\n\n return (\n <Router>\n <Routes>\n <Route\n exact\n path=\"/\"\n element={\n <Page>\n <Home />\n </Page>}\n />\n <Route\n exact\n path=\"/about/:slug\"\n element={\n <Page>\n <AboutCoin />\n </Page>\n }\n />\n <Route\n exact\n path=\"/market\"\n element={\n <Page>\n <Market />\n </Page>\n }\n />\n <Route\n exact\n path=\"/learn-crypto\"\n element={\n <Page>\n <LearnCrypto />\n </Page>\n }\n />\n <Route\n exact\n path=\"/video-tutorials\"\n element={\n <Page>\n <Videos />\n </Page>\n }\n />\n <Route\n exact\n path=\"/learn-crypto-details/:slug\"\n element={\n <Page>\n <LearnCryptoDetails />\n </Page>\n }\n />\n <Route\n exact\n path=\"/sign-in\"\n element={\n <Page headerHide footerHide>\n <SignIn />\n </Page>\n }\n />\n <Route\n exact\n path=\"/sign-up\"\n element={\n <Page headerHide footerHide>\n <SignUp />\n </Page>\n }\n />\n <Route\n exact\n path=\"/forgot-password\"\n element={\n <Page headerHide footerHide>\n <ForgotPassword />\n </Page>\n }\n />\n <Route\n exact\n path=\"/terms-and-conditions\"\n element={\n <Page>\n <TermsAndConditions />\n </Page>\n }\n />\n <Route\n exact\n path=\"/coin-listing\"\n element={\n <Page>\n <CoinListing />\n </Page>\n }\n />\n <Route\n exact\n path=\"/referral-and-affiliate\"\n element={\n <Page>\n <ReferralProgram />\n </Page>\n }\n />\n <Route\n exact\n path=\"/terms-and-conditions-referral-program\"\n element={\n <Page>\n <TermsAndConditionsForReferralProgram />\n </Page>\n }\n />\n <Route\n exact\n path=\"/privacy-policy\"\n element={\n <Page>\n <PrivacyPolicy />\n </Page>\n }\n />\n <Route\n exact\n path=\"/kyc-policy\"\n element={\n <Page>\n <KycPolicy />\n </Page>\n }\n />\n <Route\n exact\n path=\"/aml-policy\"\n element={\n <Page>\n <AmlPolicy />\n </Page>\n }\n />\n <Route\n exact\n path=\"/location-restriction\"\n element={\n <Page>\n <LocationRestriction />\n </Page>\n }\n />\n <Route\n exact\n path=\"/terms-and-conditions-for-referral-program\"\n element={\n <Page>\n <TermsAndConditionsForReferralProgram />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-bitcoin\"\n element={\n <Page>\n <BuyAndSellBitcoin />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-bitdenex-token\"\n element={\n <Page>\n <BuyAndSellBitdenex />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-cardano\"\n element={\n <Page>\n <BuyAndSellCardano />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-solana\"\n element={\n <Page>\n <BuyAndSellSolana />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-tron\"\n element={\n <Page>\n <BuyAndSellTron />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-ethereum\"\n element={\n <Page>\n <BuyAndSellEthereum />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-litecoin\"\n element={\n <Page>\n <BuyAndSellLitecoin />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-ripple\"\n element={\n <Page>\n <BuyAndSellRipple />\n </Page>\n }\n />\n <Route\n exact\n path=\"/buy-steller\"\n element={\n <Page>\n <BuyAndSellSteller />\n </Page>\n }\n />\n <Route\n exact\n path=\"/fees\"\n element={\n <Page>\n <Fees />\n </Page>\n }\n />\n <Route\n exact\n path=\"/help-center\"\n element={\n <Page>\n <HelpCenter />\n </Page>\n }\n />\n <Route\n exact\n path=\"/legal-center\"\n element={\n <Page>\n <LegalCenter />\n </Page>\n }\n />\n <Route\n exact\n path=\"/bitdenex-pay\"\n element={\n <Page>\n <BitdenexPay />\n </Page>\n }\n />\n <Route\n exact\n path=\"/bitdenex-partners\"\n element={\n <Page>\n <BitdenexPartners />\n </Page>\n }\n />\n <Route\n exact\n path=\"/learn-crypto\"\n element={\n <Page>\n <LearnCrypto />\n </Page>\n }\n />\n <Route\n exact\n path=\"/bitdenex-app\"\n element={\n <Page>\n <BitdenexApp />\n </Page>\n }\n />\n <Route\n exact\n path=\"/bitdenex-token\"\n element={\n <Page>\n <BitdenexToken />\n </Page>\n }\n />\n {/* <Route\n exact\n path=\"/staking\"\n element={\n <Page>\n <Staking />\n </Page>\n }\n /> */}\n <Route\n exact\n path=\"/coins/:slug\"\n element={\n <Page>\n <CoinDetail />\n </Page>\n }\n />\n <Route\n exact\n path=\"/exchange/:slug\"\n element={\n <Page headerWide footerHide>\n <Exchange />\n </Page>\n }\n />\n <Route\n exact\n path=\"/risk-disclosure\"\n element={\n <Page>\n <RiskDisclosure />\n </Page>\n }\n />\n <Route\n exact\n path=\"/trading-rules\"\n element={\n <Page>\n <TradingRules />\n </Page>\n }\n />\n <Route\n exact\n path=\"/cookie-policy\"\n element={\n <Page>\n <CookieStatement />\n </Page>\n }\n />\n <Route\n exact\n path=\"/whistleblower\"\n element={\n <Page>\n <Whistleblower />\n </Page>\n }\n />\n <Route\n exact\n path=\"/conflict-of-interest\"\n element={\n <Page>\n <ConflictOfInterest />\n </Page>\n }\n />\n <Route\n exact\n path=\"/coin-status\"\n element={\n <Page>\n <CoinStatus />\n </Page>\n }\n />\n <Route\n exact\n path=\"/whistleblower-procedure\"\n element={\n <Page>\n <WhistleblowerProcedure />\n </Page>\n }\n />\n <Route\n exact\n path=\"*\"\n element={\n <PageNotFound />\n }\n />\n </Routes>\n </Router>\n );\n}\n\nfunction deleteAllCookies() {\n const cookies = document.cookie.split(\";\");\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i];\n const eqPos = cookie.indexOf(\"=\");\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n}\n\n\nexport default App;\n","import { ReactNotifications } from 'react-notifications-component'\nimport 'react-notifications-component/dist/theme.css'\n\nexport default function Notification() {\n return <ReactNotifications />\n}","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import {\n SOCKET_DATA_RECEIVED,\n} from '../actions/markets/actionType';\n\nconst initialState = {\n socketMarketData: [],\n connected: false,\n loading: true,\n};\n\nconst MarketReducer = (state = initialState, action) => {\n switch (action.type) {\n case SOCKET_DATA_RECEIVED:\n return {\n ...state,\n loading: false,\n socketMarketData: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default MarketReducer;","import {\n CMC_DATA_REQUEST,\n CMC_DATA_SUCCESS,\n CMC_DATA_FAILED,\n} from '../actions/cmcData/actionType'\n\nconst initialState = {\n loading: false,\n cmcData: [],\n error: '',\n};\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case CMC_DATA_REQUEST:\n return {\n ...state,\n loading: true\n }\n case CMC_DATA_SUCCESS:\n return {\n ...state,\n loading: false,\n cmcData: action?.payload?.data?.data?.[0],\n }\n case CMC_DATA_FAILED:\n return {\n ...state,\n loading: false,\n error: action.error\n }\n default:\n return state;\n };\n};\n\nexport default reducer;","import { combineReducers } from 'redux';\nimport marketsReducer from './marketsReducer';\nimport cmcDataReducer from './cmcDataReducer';\n\nconst rootReducer = combineReducers({\n markets: marketsReducer,\n cmcData: cmcDataReducer,\n});\n\nexport default rootReducer;","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\nimport Notification from \"./components/Notification/notification\";\nimport thunk from \"redux-thunk\";\nimport { Provider } from \"react-redux\";\nimport { createStore, applyMiddleware } from \"redux\";\nimport reducers from \"./reducers\";\n\nconst store = createStore(reducers, applyMiddleware(thunk));\n\nReactDOM.createRoot(document.getElementById(\"root\")).render(\n // <React.StrictMode>\n <Provider store={store}>\n <Notification />\n <App />\n </Provider>\n // </React.StrictMode>\n);\n\nexport { store };\n"],"names":["noop","noopThunk","isRequired","module","exports","and","between","booleanSome","childrenHavePropXorChildren","childrenOf","childrenOfType","childrenSequenceOf","componentWithName","disallowedIf","elementType","empty","explicitNull","forbidExtraProps","Object","integer","keysOf","mutuallyExclusiveProps","mutuallyExclusiveTrueProps","nChildren","nonNegativeInteger","nonNegativeNumber","numericString","object","or","predicate","range","ref","requiredBy","restrictedProp","sequenceOf","shape","stringEndsWith","stringStartsWith","uniqueArray","uniqueArrayOf","valuesOf","withShape","require","GetIntrinsic","callBind","$indexOf","name","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","call","$defineProperty","$max","originalFunction","func","arguments","length","applyBind","value","apply","CAN_USE_DOM","window","document","createElement","memoized","canUsePassiveEventListeners","undefined","addEventListener","removeEventListener","defineProperty","supportsPassiveOption","opts","get","e","testPassiveEventListeners","ensureCanMutateNextEventHandlers","eventHandlers","handlers","nextHandlers","slice","TargetEventHandlers","target","this","events","prototype","getEventHandlers","eventName","options","normalizedEventOptions","key","String","capture","passive","once","handleEvent","event","forEach","handler","add","listener","_this","push","isSubscribed","index","indexOf","splice","EVENT_HANDLERS_KEY","eventOptions","normalizeEventOptions","root","factory","undef","CryptoJS","C","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","d","i","x","xi","sx","x2","x4","x8","t","RCON","AES","extend","_doReset","_nRounds","_keyPriorReset","_key","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","offset","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","round","t0","t1","t2","t3","_createHelper","N","ORIG_P","ORIG_S","BLOWFISH_CTX","pbox","sbox","F","ctx","a","b","c","y","BlowFish_Encrypt","left","right","temp","Xl","Xr","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","res","j","Blowfish","blockSize","ivSize","Cipher","C_lib","Base","WordArray","BufferedBlockAlgorithm","C_enc","enc","Base64","Utf8","EvpKDF","cfg","createEncryptor","create","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","init","xformMode","_xformMode","reset","process","dataUpdate","_append","_process","finalize","_doFinalize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","message","decrypt","ciphertext","C_mode","StreamCipher","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","block","_prevBlock","processBlock","thisBlock","Pkcs7","pad","data","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","concat","unpad","CipherParams","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","toString","formatter","stringify","OpenSSLFormatter","format","OpenSSL","salt","parse","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","password","hasher","random","compute","derivedParams","Math","crypto","self","globalThis","msCrypto","global","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","Error","obj","subtype","overrides","hasOwnProperty","$super","instance","properties","propertyName","clone","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","nBytes","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","max","nBytesReady","min","Hasher","update","messageUpdate","_createHmacHelper","HMAC","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","map","_map","base64Chars","triplet","charAt","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","MD5","iterations","derivedKey","derivedKeyWords","input","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","T","abs","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","hash","H_i","s","n","HmacMD5","CFB","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA256","PBKDF2","hmac","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","S","C_","G","RabbitLegacy","K","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_i","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","el","ar","br","cr","dr","er","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","z","HmacRIPEMD160","W","SHA1","HmacSHA1","SHA224","HmacSHA224","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","f","g","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","state","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","deepmerge","val","Array","isArray","defaultArrayMerge","source","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","property","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","reduce","prev","next","deepmerge_1","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","hasSymbols","toStr","defineDataProperty","supportsDescriptors","fn","defineProperties","predicates","props","other","TypeError","node","parentNode","define","implementation","getPolyfill","polyfill","boundContains","shim","contains","body","Element","QueryHandler","each","MediaQuery","query","isUnconditional","mql","matchMedia","currentTarget","assess","addListener","constuctor","addHandler","qh","matches","on","removeHandler","equals","destroy","clear","removeListener","action","Util","isFunction","MediaQueryDispatch","queries","browserIsIncapable","constructor","register","q","shouldDegrade","match","unregister","deferSetup","setup","initialised","off","unmatch","collection","EvalError","RangeError","ReferenceError","SyntaxError","URIError","concatty","arr","that","bound","args","arrLike","slicy","boundLength","boundArgs","Function","joiner","str","joiny","result","Empty","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasProto","getProto","getPrototypeOf","__proto__","needsEval","TypedArray","INTRINSICS","AggregateError","iterator","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","encodeURI","eval","FinalizationRegistry","isFinite","isNaN","JSON","Map","Number","parseFloat","Promise","Proxy","Reflect","RegExp","Set","SharedArrayBuffer","WeakMap","WeakRef","WeakSet","error","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","parts","string","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasPropertyDescriptors","hasArrayLengthDefineBug","test","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","descriptor","$hasOwn","camel2hyphen","obj2mq","mq","features","feature","isDimension","stdOnEnd","script","cb","onload","onerror","src","ieOnEnd","onreadystatechange","readyState","head","getElementsByTagName","type","charset","async","attrs","attr","setAttribute","setAttributes","text","appendChild","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","now","isObject","toNumber","isObjectLike","isSymbol","valueOf","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","leadingEdge","cancel","clearTimeout","flush","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","mapToArray","size","setToArray","set","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","uid","IE_PROTO","nativeObjectToString","reIsNative","Buffer","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","entry","ListCache","MapCache","SetCache","values","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","tag","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseKeys","Ctor","proto","isPrototype","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","isKeyable","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","resolve","ctorString","isLength","baseUnary","safeIsNaN","areInputsEqual","newInputs","lastInputs","second","resultFn","isEqual","lastResult","calledOnce","newArgs","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","k","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","callee","RequireObjectCoercible","callBound","$isEnumerable","$push","O","vals","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","location","propFullName","secret","getShim","ReactPropTypes","bigint","bool","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","makeImpl","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","pos","QRUtil","getPatternPosition","bits","getBCHTypeNumber","mod","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","id","mr","rect","qrSvg","scalable","escapeXml","trim","createDataURL","createImgTag","img","escaped","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","count","b0","v","unknownChar","QRMode","L","Q","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","digit","errorCorrectLength","multiply","QRMath","gexp","sameCount","darkCount","EXP_TABLE","LOG_TABLE","num","shift","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","len","_str","_pos","_buflen","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","byteOut","bitOut","_out","_bitLength","_bitBuffer","bitOutputStream","dataIndex","toByteArray","_size","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","split","toLowerCase","ra","sa","toUpperCase","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","A","assign","Ma","Na","Oa","prepareStackTrace","construct","l","displayName","includes","Pa","render","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","tb","menuitem","area","base","embed","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","search","tel","url","week","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","D","of","pf","qf","rf","sf","J","u","w","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","_currentValue","childLanes","dependencies","firstContext","lanes","memoizedValue","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","payload","callback","nh","oh","ph","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","hi","ii","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","defaultProps","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Li","console","Mi","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","U","Kj","V","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","cache","pendingSuspenseBoundaries","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","form","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","equal","it","warn","__esModule","default","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TOP_LEFT","TOP_RIGHT","TOP_CENTER","CENTER","TOP_FULL","BOTTOM_FULL","TOP","BOTTOM","SUCCESS","DANGER","INFO","DEFAULT","WARNING","TIMEOUT","CLICK","TOUCH","MANUAL","content","userDefinedTypes","find","htmlClasses","duration","timingFunction","delay","insert","container","animationIn","animationOut","slidingEnter","slidingExit","touchRevert","touchSlidingExit","dismiss","onRemoval","click","touch","onScreen","pauseOnHover","waitForAnimation","showIcon","swipe","fade","remaining","resume","notification","removeNotification","onTouchStart","setState","parentStyle","startX","currentX","position","onTouchMove","toggleRemoval","rootElementRef","offsetWidth","innerWidth","touchEnabled","onTransitionEnd","onTouchEnd","onMouseEnter","timer","pause","animationPlayState","onMouseLeave","createRef","defaultNotificationWidth","isMobile","htmlClassList","notificationsCount","scrollHeight","requestAnimationFrame","hasBeenRemoved","endsWith","onAnimationEnd","animationDuration","animationTimingFunction","animationFillMode","animationDelay","className","isValidElement","notificationConfig","renderTimer","renderCustomContent","renderNotification","Component","incrementCounter","getCounter","types","addNotification","removeAllNotifications","handleResize","windowWidth","notifications","findIndex","remove","breakpoint","bottom","renderNotifications","topFull","bottomFull","topLeft","topRight","topCenter","bottomLeft","bottomRight","bottomCenter","center","renderMobileNotifications","renderScreenNotifications","_createClass","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_airbnbPropTypes","_consolidatedEvents","_object2","_document2","DISPLAY","BLOCK","FLEX","INLINE","INLINE_BLOCK","CONTENTS","propTypes","onOutsideClick","useCapture","OutsideClickHandler","_React$Component","_ref","_classCallCheck","_len","_possibleConstructorReturn","onMouseDown","onMouseUp","setChildNodeRef","subClass","superClass","setPrototypeOf","_inherits","_props","addMouseDownEventListener","_ref2","prevDisabled","_props2","removeEventListeners","childNode","removeMouseUp","isDescendantOfRoot","removeMouseDown","_props3","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__copyProps","to","from","except","__toESM","isNodeMode","__publicField","__defNormalProp","Player_exports","__export","Player","import_react","import_react_fast_compare","import_props","import_utils","super","player","load","progress","isReady","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","getDuration","played","loaded","prevPlayed","prevLoaded","onProgress","progressTimeout","progressFrequency","progressInterval","mounted","isLoading","onReady","playing","volume","muted","setVolume","loadOnReady","play","handleDurationCheck","isPlaying","onStart","onPlay","playbackRate","startOnPlay","setPlaybackRate","seekOnPlay","seekTo","onPause","activePlayer","loop","onEnded","loopOnEnded","durationCheckTimeout","onDurationCalled","onDuration","stopOnUnmount","stop","disablePIP","prevProps","pip","disableDeferredLoading","forceLoad","isMediaStream","enablePIP","mute","unmute","setLoop","amount","keepPlaying","Player2","_objectSpread","onMount","handlePlayerMount","handleReady","handlePlay","handlePause","handleEnded","onLoaded","handleLoaded","handleError","ReactPlayer_exports","createReactPlayer","import_deepmerge","import_memoize_one","import_Player","Preview","lazy","IS_BROWSER","IS_GLOBAL","SUPPORTED_PROPS","UniversalSuspense","Suspense","customPlayers","players","_a","showPreview","light","wrapper","onClickPreview","getInternalPlayer","fraction","canPlay","config","omit","getActivePlayer","getConfig","references","lazyPlayer","nextProps","renderPreview","playIcon","previewTabIndex","oEmbedUrl","previewAriaLabel","handleClickPreview","fallback2","Wrapper","attributes","getAttributes","wrapperRef","renderActivePlayer","canEnablePIP","src_exports","src_default","import_players","import_ReactPlayer","patterns_exports","AUDIO_EXTENSIONS","DASH_EXTENSIONS","FLV_EXTENSIONS","HLS_EXTENSIONS","MATCH_URL_DAILYMOTION","MATCH_URL_FACEBOOK","MATCH_URL_FACEBOOK_WATCH","MATCH_URL_KALTURA","MATCH_URL_MIXCLOUD","MATCH_URL_MUX","MATCH_URL_SOUNDCLOUD","MATCH_URL_STREAMABLE","MATCH_URL_TWITCH_CHANNEL","MATCH_URL_TWITCH_VIDEO","MATCH_URL_VIDYARD","MATCH_URL_VIMEO","MATCH_URL_WISTIA","MATCH_URL_YOUTUBE","VIDEO_EXTENSIONS","canPlayFile","item","isBlobUrl","youtube","every","soundcloud","vimeo","mux","facebook","streamable","wistia","twitch","dailymotion","mixcloud","vidyard","kaltura","file","players_exports","players_default","import_patterns","pictureInPictureEnabled","supportsWebKitPresentationMode","props_exports","import_prop_types","controls","playsinline","playerVars","embedOptions","onUnstarted","appId","playerId","params","playerOptions","tracks","forceVideo","forceAudio","forceHLS","forceSafariHLS","forceDisableHls","forceDASH","forceFLV","hlsOptions","hlsVersion","dashVersion","flvVersion","customControls","onBuffer","onBufferEnd","onSeek","onPlaybackRateChange","onPlaybackQualityChange","onEnablePIP","onDisablePIP","visual","buying","liking","download","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","api","autopause","byline","portrait","hide_cover","utils_exports","callPlayer","getSDK","parseEndTime","parseStartTime","queryString","randomString","import_load_script","componentImportFn","MATCH_START_QUERY","MATCH_END_QUERY","MATCH_START_STAMP","MATCH_NUMERIC","parseTimeParam","stamp","seconds","period","parseTimeString","getGlobal","requests","enableStubOn","sdkGlobal","sdkReady","isLoaded","fetchScript","existingGlobal","reject","sdk","request","previousOnReady","arrays","omitKeys","output","method","_len2","_key2","MediaStream","video","notMobile","navigator","userAgent","webkitSupportsPresentationMode","webkitSetPresentationMode","__extends","extendStatics","__","__assign","QRCode","qrGenerator","React","_super","canvasRef","fileType","fileName","mimeType","toDataURL","utf16to8","drawRoundedSquare","lineWidth","radii","fill","strokeStyle","rTopLeft","rTopRight","rBottomRight","rBottomLeft","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","stroke","drawPositioningPattern","radiiOuter","radiiInner","colorOuter","colorInner","outer","inner","isInPositioninZone","zones","some","zone","transformPixelLengthIntoNumberOfCells","pixelLength","isCoordinateInImage","dWidthLogo","dHeightLogo","dxLogo","dyLogo","logoImage","firstRowOfLogo","firstColumnOfLogo","logoWidthInCells","logoHeightInCells","ecLevel","enableCORS","bgColor","fgColor","logoOpacity","logoOnLoad","removeQrCodeBehindLogo","qrStyle","eyeRadius","eyeColor","logoPaddingStyle","quietZone","logoWidth","logoHeight","logoPadding","qrCode","canvas","getContext","canvasSize","scale","devicePixelRatio","positioningZones","radius","arc","PI","roundedCorners","_c","image_1","Image","crossOrigin","save","dWidthLogoPadding","dHeightLogoPadding","dxLogoPadding","dyLogoPadding","dxCenterLogoPadding","dyCenterLogoPadding","ellipse","globalAlpha","drawImage","restore","qrSize","__WEBPACK_EXTERNAL_MODULE_react__","mediaQuery","parseQuery","inverse","typeMatch","expressionsMatch","expressions","expression","modifier","expValue","toPx","toDpi","toDecimal","RE_MEDIA_QUERY","RE_MQ_EXPRESSION","RE_MQ_FEATURE","RE_LENGTH_UNIT","RE_RESOLUTION_UNIT","captures","parsed","numbers","decimal","resolution","uppercasePattern","msPattern","toHyphenLower","__WEBPACK_DEFAULT_EXPORT__","hName","staticMatch","__webpack_require__","dynamicMatch","Mql","forceStatic","media","evt","dispose","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","toObject","printWarning","loggedTypeFailures","typeSpecs","getStack","typeSpecName","ex","ReactIs","emptyFunctionThatReturnsNull","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ANONYMOUS","createPrimitiveTypeChecker","createChainableTypeChecker","typeChecker","PropTypeError","propValue","getPropType","isValidElementType","expectedClass","expectedClassName","isNode","propType","expectedValues","valuesString","getPreciseType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shapeTypes","invalidValidatorError","allKeys","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","cacheKey","chainedCheckType","iteratorFn","maybeIterable","getIteratorFn","step","isElement","hasSymbol","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","shallowEqualObjects","objA","objB","aKeys","bKeys","shallowEqualArrays","arrA","arrB","useMediaQuery_1","__importDefault","device","onChange","settings","__rest","Context","createContext","useMediaQuery","Component_1","toQuery_1","toQuery","Context_1","prop_types_1","stringOrNumber","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","matchers","orientation","scan","deviceAspectRatio","deviceHeight","deviceWidth","colorIndex","monochrome","featureMatchers","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minWidth","maxWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","hyphenate_style_name_1","mediaQuery_1","rules","realKey","keyVal","react_1","matchmediaquery_1","shallow_equal_1","hyphenateKeys","useIsUpdate","useQuery","getQuery","makeQuery","setQuery","newQuery","deviceSettings","deviceFromProps","deviceFromContext","getDevice","setDevice","newDevice","useDevice","getMatchMedia","setMq","isUpdate","newMq_1","useMatchMedia","setMatches","updateMatches","ev","useMatches","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","definition","prop","_typeof","PrevArrow","NextArrow","_react","_classnames","_innerSliderUtils","_extends","ownKeys","enumerableOnly","_defineProperty","getOwnPropertyDescriptors","_defineProperties","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","_React$PureComponent","clickHandler","prevClasses","prevHandler","infinite","currentSlide","slideCount","slidesToShow","prevArrowProps","customProps","prevArrow","cloneElement","PureComponent","_React$PureComponent2","_super2","nextClasses","nextHandler","canGoNext","nextArrowProps","nextArrow","_default","accessibility","adaptiveHeight","afterChange","appendDots","dots","arrows","autoplay","autoplaySpeed","beforeChange","centerMode","centerPadding","cssEase","customPaging","dotsClass","draggable","easing","edgeFriction","focusOnSelect","initialSlide","lazyLoad","onEdge","onInit","onLazyLoadError","onReInit","pauseOnDotsHover","pauseOnFocus","responsive","rows","rtl","slide","slidesPerRow","slidesToScroll","speed","swipeEvent","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","waitForAnimate","Dots","spec","_this$props","onMouseOver","dotCount","mouseEvents","_rightBound","rightBound","_leftBound","leftBound","dotOptions","animating","autoplaying","currentDirection","currentLeft","direction","dragging","edgeDragged","initialized","lazyLoadedList","listHeight","listWidth","scrolling","slideHeight","slideWidth","swipeLeft","swiped","swiping","touchObject","startY","curX","curY","trackStyle","trackWidth","targetSlide","InnerSlider","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","elem","querySelector","getHeight","slidesToLoad","getOnDemandLazySlides","prevState","onLazyLoad","listRef","trackRef","updateState","adaptHeight","autoPlay","lazyLoadTimer","setInterval","progressiveLazyLoad","ro","onWindowResized","callbackTimers","observe","onfocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","clearInterval","autoplayTimer","disconnect","checkImagesLoad","setTrackStyle","didPropsChange","Children","changeSlide","debouncedResize","resizeWindow","updatedState","initializedState","slideIndex","targetLeft","getTrackLeft","getTrackCSS","_trackWidth","_trackLeft","childrenWidths","preClones","getPreClones","postClones","getPostClones","_i2","_trackStyle","currentWidth","childrenCount","trackLeft","images","imagesCount","loadedCount","image","prevClickHandler","_index","dontAnimate","asNavFor","_slideHandler","slideHandler","asNavForIndex","innerSlider","firstBatch","nodes","clickable","dir","keyHandler","ontouchmove","verticalSwiping","disableBodyScroll","swipeStart","swipeMove","swipeEnd","triggerSlideHandler","enableBodyScroll","nextIndex","playType","pauseType","trackProps","extractObject","onTrackOver","onTrackLeave","selectHandler","dotProps","onDotsLeave","onDotsOver","arrowProps","verticalHeightStyle","centerPaddingStyle","listStyle","listProps","onMouseMove","touchEnd","onTouchCancel","onKeyDown","innerSliderProps","unslick","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","_innerSlider","_json2mq","_defaultProps","enquire","canUseDOM","Slider","slickPrev","slickNext","slickGoTo","_responsiveMediaHandlers","_this2","breakpoints","breakpt","sort","bQuery","newProps","_this3","resp","toArray","newChildren","newSlide","tabIndex","innerSliderRefHandler","getSlideClasses","slickActive","slickCenter","slickCloned","centerOffset","getKey","fallbackKey","renderSlides","slides","preCloneSlides","postCloneSlides","startIndex","lazyStartIndex","endIndex","lazyEndIndex","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","reverse","handleRef","checkSpecKeys","checkNavigable","slidesOnRight","slidesOnLeft","siblingDirection","safePreventDefault","lazySlidesOnRight","lazySlidesOnLeft","getWidth","getTrackAnimateCSS","getTotalSlides","getSwipeDirection","getSlideCount","getRequiredLazySlides","getNavigableIndexes","lowerBound","upperBound","onDemandSlides","requiredSlides","offsetHeight","xDist","yDist","swipeAngle","atan2","canGo","newObject","listNode","trackNode","centerPaddingAdj","finalSlide","animationLeft","finalLeft","animationSlide","indexOffset","previousInt","slideOffset","previousTargetSlide","curLeft","swipeLength","verticalSwipeLength","positionOffset","swipeDirection","touchSwipeLength","onSwipe","minSwipe","activeSlide","indexes","navigables","prevNavigable","swipedSlide","slickList","offsetTop","offsetLeft","currentIndex","keysArray","trackHeight","trackChildren","WebkitTransition","WebkitTransform","msTransform","marginTop","marginLeft","slidesToOffset","targetSlideIndex","trackElem","childNodes","__self","__source","jsx","jsxs","forceUpdate","_status","_result","only","act","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","forwardRef","memo","startTransition","unstable_act","MapShim","getIndex","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","visibleFields","helpers","forceUpdateIfNeeded","parent","passes","isBlank","rule","required","testRegex","normalizeValues","valueOrEmptyString","getValidation","getOptions","toSentence","autoForceUpdate","messages","humanizeFieldName","momentInstalled","moment","sizeText","fields","errorMessages","messagesShown","accepted","after","isMoment","isAfter","messageReplace","after_or_equal","isSameOrAfter","alpha","alpha_space","alpha_num","alpha_num_space","alpha_num_dash","alpha_num_dash_space","before","isBefore","before_or_equal","isSameOrBefore","boolean","card_exp","card_num","currency","date_equals","isSame","in","not_in","not_regex","numeric","phone","regex","typeof","validators","locales","product","fieldValid","en","useSyncExternalStoreWithSelector","hasValue","toPropertyKey","toPrimitive","classNames","classes","appendClass","parseValue","newClass","getter","leafPrototypes","ns","def","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","getAttribute","timeout","nc","onScriptComplete","doneFns","nmd","paths","installedChunks","installedChunkData","promise","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","Action","PopStateEventType","invariant","warning","cond","getHistoryState","usr","idx","createLocation","pathname","parsePath","createPath","path","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","handlePop","delta","createURL","origin","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","rest","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","matcher","paramNames","regexpSource","paramName","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","checkIfSnapshotChanged","inst","latestGetSnapshot","prevValue","nextValue","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useNavigate","routePathnamesJson","UNSAFE_getPathContributingMatches","activeRef","navigate","relative","useParams","routeMatch","useResolvedPath","_temp2","DefaultErrorComponent","_state$errors","useDataRouterState","DataRouterStateHook","UseRouteError","routeId","useCurrentRouteId","errors","useRouteError","lightgrey","preStyles","backgroundColor","fontStyle","RenderErrorBoundary","errorInfo","routeContext","component","RenderedRoute","dataRouterContext","static","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_renderMatches","parentMatches","dataRouterState","renderedMatches","errorIndex","reduceRight","getChildren","DataRouterHook","hookName","useRouteContext","thisRoute","Route","Router","_ref4","basenameProp","locationProp","navigationType","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref5","dataRouterStateContext","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","useRoutes","router","createRoutesFromChildren","AwaitRenderStatus","treePath","loader","hasErrorBoundary","shouldRevalidate","handle","BrowserRouter","historyRef","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","_excluded","UNSAFE_NavigationContext","isExternal","currentUrl","targetUrl","protocol","_temp","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","ariaCurrentProp","classNameProp","styleProp","_excluded2","routerState","UNSAFE_DataRouterStateContext","nextLocationPathname","navigation","isPending","ariaCurrent","hasPassiveEvents","passiveTestOptions","isIosDevice","platform","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPosition","previousBodyPaddingRight","allowTouchMove","lock","rawEvent","restoreOverflowSetting","paddingRight","restorePositionSetting","scrollTo","targetElement","arr2","_toConsumableArray","_window","scrollY","scrollX","innerHeight","bottomBarHeight","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","computedBodyPaddingRight","getPropertyValue","setOverflowHidden","ontouchstart","isTargetElementTotallyScrolled","handleScroll","clearAllBodyScrollLocks","callbacks","deregister","emit","localStorage","getItem","setItem","newValue","classList","usePersistedDarkModeState","getDefaultOnChange","mediaQueryEventTarget","getInitialValue","classNameDark","classNameLight","storageKey","storageProvider","enable","disable","toggle","srcdark","srcSet","srcSetDark","darkMode","useDarkMode","_jsx","icons","user","lightning","bell","share","exit","cog","instagram","twitter","dribbble","behance","linkedin","coin","star","chart","heart","wallet","candlesticks","eye","google","apple","calendar","keyboard","barcode","laptop","plus","close","sell","copy","cloud","clock","unHide","cn","viewBox","visible","setVisible","_jsxs","Icon","dropdown","activeClassName","icon","language","flag","logoPath","QrCode","small","items","separator","active","menu","details","Theme","theme","cs","soon","new","postLoginNavigation","preLoginNavigation","headerWide","visibleNav","setVisibleNav","header","wide","logo","picDesktop","picMobile","wrap","nav","Finance","Trade","Dropdown","_Fragment","BuyCrypto","btns","Settings","control","User","Download","burger","menuLegal","menu2","socials","Footer","_menu$filter","legal","setLegal","popular","setPopular","activeclassname","getFullYear","headerHide","footerHide","Header","onScroll","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isNumber","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","ret","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isFormData","kind","FormData","append","isArrayBufferView","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","lastIndex","forEachEntry","pair","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","p1","p2","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","response","captureStackTrace","utils","toJSON","description","lineNumber","columnNumber","axiosError","cause","isVisitable","removeBrackets","renderKey","token","formData","metaTokens","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","use","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","_objectSpread2","URLSearchParams","protocols","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parseHeaders","tokens","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","timestamp","threshold","force","isDownloadStream","bytesNotified","_speedometer","speedometer","total","lengthComputable","progressBytes","rate","estimated","msie","urlParsingNode","originURL","resolveURL","host","hostname","port","requestURL","expires","domain","secure","cookie","toGMTString","buildFullPath","baseURL","requestedURL","isAbsoluteURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","username","isURLSameOrigin","xsrfValue","cookies","XMLHttpRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","unsubscribe","signal","onloadend","responseHeaders","getAllResponseHeaders","responseText","open","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","progressEventReducer","upload","abort","subscribe","aborted","parseProtocol","send","composeSignals","signals","AbortController","reason","_OverloadYield","AsyncGenerator","_invoke","_awaitAsyncGenerator","_asyncGeneratorDelegate","pump","_asyncIterator","asyncIterator","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","streamChunk","chunk","chunkSize","readBytes","_wrapAsyncGenerator","iterable","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_x","_x2","_x3","trackStream","stream","onFinish","ReadableStream","pull","enqueue","highWaterMark","fetchProgressDecorator","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","getBodyLength","fetchOptions","finished","composedSignal","stopTimeout","requestContentLength","contentTypeHeader","_request","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","deprecatedWarnings","validator","formatMessage","opt","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","Cancel","spread","isAxiosError","formToJSON","getAdapter","__awaiter","_arguments","generator","adopt","__generator","label","sent","trys","ops","Iterator","verb","op","__spreadArray","pack","SuppressedError","durationMs","resolveWith","isPromise","awaitIfAsync","returnedValue","mapWithBreaks","loopReleaseInterval","results","lastLoopReleaseTime","channel","suppressUnhandledRejectionWarning","toInt","replaceNaN","replacement","countTruthy","sum","counterBase","x64Add","m0","m1","m2","m3","n0","n1","n2","o0","o1","o2","o3","x64Multiply","n3","x64Rotl","x64LeftShift","x64Xor","F1","F2","x64Fmix","shifted","C1","C2","M$1","N1","N2","x64hash128","seed","getUTF8Bytes","remainder","h1","h2","k1","k2","isFinalResultLoaded","loadResult","loadSources","sources","sourceOptions","excludeSources","includedSources","sourceKey","haystack","needle","sourceGettersPromise","sourceLoadPromise","resolveLoad","loadStartTime","loadArgs","loadDuration","resolveGet","getStartTime","getArgs","finalizeSource","loadSource","componentPromises","componentArray","components","sourceGetter","isTrident","isChromium","vendor","isWebKit","isDesktopWebKit","HTMLElement","Document","isSafariWebKit","browser","isGecko","isWebKit616OrNewer","CSS","HTMLButtonElement","supports","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","isAndroid","isItChromium","isItGecko","Audio","appVersion","makeInnerError","withIframe","initialHtml","domPollInterval","iframe","_d","_reject","isComplete","visibility","srcdoc","checkReadyState","selectorToElement","selector","errorMessage","tagMatch","partsRegex","addAttribute","attributeMatch","parseSimpleCssSelector","name_1","addStyleString","name_2","baseFonts","fontList","canvasToString","screenFrameBackup","screenFrameSizeTimeoutId","screenFrameCheckInterval","getUnstableScreenFrame","checkScreenFrame","frameSize","getCurrentScreenFrame","isFrameSizeNull","watchScreenFrame","fullscreenElement","msFullscreenElement","mozFullScreenElement","webkitFullscreenElement","getFullscreenElement","availTop","availWidth","availLeft","availHeight","getBlockedSelectors","selectors","elements","blockedSelectors","holder","forceShow","show","offsetParent","doesMatch$5","doesMatch$4","doesMatch$3","doesMatch$2","doesMatch$1","doesMatch","fallbackFn","presets","font","serif","fontFamily","sans","mono","fontSize","system","willPrintConsoleError","currentWindow","validContextParameters","validExtensionParams","shaderTypes","precisionTypes","rendererInfoExtensionName","getWebGLContext","webgl","getShaderPrecision","shaderType","precisionType","shaderPrecision","getShaderPrecisionFormat","rangeMin","rangeMax","precision","getConstantsFromPrototype","isConstantLike","shouldAvoidDebugRendererInfo","isValidParameterGetter","getParameter","fonts","spansContainer","defaultWidth","defaultHeight","createSpan","createSpanWithFonts","initializeFontsSpans","isFontAvailable","baseFontsSpans","fontsSpans","span","fontToDetect","baseFont","spans","_loop_1","fontList_1","fontSpans","baseFontIndex","initializeBaseFontsSpans","domBlockers","debug","filters","filterNames","activeBlockers","fromB64","atob","abpIndo","abpvn","adBlockFinland","adBlockPersian","adBlockWarningRemoval","adGuardAnnoyances","adGuardBase","adGuardChinese","adGuardFrench","adGuardGerman","adGuardJapanese","adGuardMobile","adGuardRussian","adGuardSocial","adGuardSpanishPortuguese","adGuardTrackingProtection","adGuardTurkish","bulgarian","easyList","easyListChina","easyListCookie","easyListCzechSlovak","easyListDutch","easyListGermany","easyListItaly","easyListLithuania","estonian","fanboyAnnoyances","fanboyAntiFacebook","fanboyEnhancedTrackers","fanboySocial","frellwitSwedish","greekAdBlock","hungarian","iDontCareAboutCookies","icelandicAbp","latvian","listKr","listeAr","listeFr","officialPolish","ruAd","thaiAds","webAnnoyancesUltralist","getFilters","filterName","printDebug","fontPreferences","containerWidthPx","iframeWindow","iframeDocument","iframeBody","bodyStyle","webkitTextSizeAdjust","textSizeAdjust","linesOfText","withNaturalFonts","sizes","whiteSpace","_e","_f","_g","_h","getBoundingClientRect","audio","audioPrototype","visualViewport","isSamsungInternet","URLPattern","WebGLRenderingContext","isChromium122OrNewer","AudioContext","OfflineAudioContext","webkitOfflineAudioContext","isWebKit606OrNewer","hashFromIndex","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","knee","attack","release","connect","renderTryMaxCount","renderRetryDelay","runningMaxAwaitTime","runningSufficientTime","resultPromise","isFinalized","renderTryCount","startedRunningAt","oncomplete","renderedBuffer","startRunningTimeout","tryRender","renderingPromise","startRendering","hidden","startRenderingAudio","renderPromise","finishRendering","fingerprintPromise","getHash","getChannelData","subarray","getUnstableAudioFingerprint","screenFrame","screenFrameGetter","processSize","sideSize","skipImages","geometry","winding","makeCanvasContext","isSupported","isPointInPath","doesSupportWinding","textBaseline","printedText","fillText","renderTextImage","textImage1","textImage2","globalCompositeOperation","renderGeometryImage","geometryImage","renderImages","getUnstableCanvasFingerprint","osCpu","oscpu","languages","userLanguage","browserLanguage","systemLanguage","Intl","isChromium86OrNewer","colorDepth","deviceMemory","screenResolution","parseDimension","dimensions","getUnstableScreenResolution","hardwareConcurrency","timezone","DateTimeFormat","resolvedOptions","timeZone","currentYear","getTimezoneOffset","sessionStorage","indexedDB","isEdgeHTML","openDatabase","cpuClass","screenRatio","webkitRequestFullscreen","isIPad","plugins","rawPlugins","plugin","mimeTypes","suffixes","touchSupport","touchEvent","msMaxTouchPoints","createEvent","touchStart","vendorFlavors","flavors","cookiesEnabled","colorGamut","gamut","invertedColors","forcedColors","contrast","reducedMotion","reducedTransparency","hdr","math","acos","acosh","asin","asinh","atanh","atan","sinh","cos","cosh","tan","tanh","exp","expm1","log1p","acoshPf","asinhPf","atanhPf","sinhPf","coshPf","tanhPf","expm1Pf","log1pPf","powPI","pdfViewerEnabled","architecture","u8","applePay","ApplePaySession","canMakePayments","getStateFromError","privateClickMeasurement","sourceId","attributionSourceId","attributionsourceid","audioBaseLatency","baseLatency","webGlBasics","debugExtension","getExtension","VENDOR","vendorUnmasked","UNMASKED_VENDOR_WEBGL","renderer","RENDERER","rendererUnmasked","UNMASKED_RENDERER_WEBGL","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","webGlExtensions","extensions","getSupportedExtensions","contextAttributes","getContextAttributes","unsupportedExtensions","parameters","extensionParameters","shaderPrecisions","constants_1","constant","extensions_1","extension","shaderTypes_1","precisionTypes_1","commentTemplate","getConfidence","openConfidenceScore","getOpenConfidenceScore","proConfidenceScore","deriveProConfidenceScore","comment","componentsToDebugString","errorToObject","hashComponents","componentKey","componentsToCanonicalString","prepareForSources","delayFallback","fallbackTimeout","deadlineTimeout","requestIdleCallback","requestIdleCallbackIfAvailable","makeAgent","getComponents","creationTime","visitorIdCache","confidence","visitorId","makeLazyGetResult","monitoring","__fpjs_d_m","monitor","loadBuiltinSources","Store","removedBy","BASE_URL","apiCall","fingerPrintData","fp","FingerprintJS","fingerPrintId","getFingerprintID","Authorization","refresh_token","cname","getCookie","config_refresh","jwt_token","signature","requestHandler","_error$response","_error$response$data","_error$response$data$","msg","getPostiveNegativeNum","getDigitsAfterDecimal","price","digits","trunc","toFixed","resendOtp","handleImageError","formatLargeValue","suffix","SkeletonThemeContext","defaultEnableAnimation","Skeleton","customClassName","containerClassName","containerTestId","circle","originalPropsStyleOptions","contextStyleOptions","propsStyleOptions","styleOptions","baseColor","highlightColor","borderRadius","enableAnimation","styleOptionsToCssProperties","inline","countCeil","thisStyle","fractionalPart","fractionalWidth","skeletonSpan","themeMode","_socketMarketData$","_socketMarketData$$","_socketMarketData$$$m","_socketMarketData$$$m2","loading","socketMarketData","CardSkeleton","markets","_x$name","slug","dayChange","currentMarketPrice","priceDecimalPrecision","classLabel","classInput","note","togglePassword","classDropdownHead","onFocus","preview","scrollToRef","setEmail","getStartedHandler","main","emailOptions","TextInput","placeholder","handleSubmit","encodedEmail","ScrollButton","scrollIntoView","behavior","scroll","Cards","cards","image2x","SlickArrow","section","slider","Play","subtitle","rowCount","colCount","TradeSkeleton","coin_name","positive","negative","weekChange","card","classSection","info","Card","stage","buttonText","Notice","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","FileReader","readAsDataURL","TEXT_ENCODER","chars","lookup","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","SEPARATOR","createPacketEncoderStream","TransformStream","packet","encoded","encodePacketToBinary","payloadLength","setUint8","setUint16","setBigUint64","TEXT_DECODER","totalLength","chunks","acc","concatChunks","Emitter","mixin","_callbacks","removeAllListeners","emitReserved","hasListeners","globalThisShim","pick","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","useNativeTimers","setTimeoutFn","clearTimeoutFn","TransportError","Transport","socket","doOpen","doClose","onClose","packets","onOpen","onData","onPacket","createUri","_hostname","_port","_query","encodedQuery","yeast","hasCORS","XHR","xdomain","hasXHR2","uri","extraHeaders","setDisableHeaderCheck","cookieJar","addCookies","requestTimeout","parseCookies","onLoad","requestsCount","cleanup","fromError","unloadHandler","nextTick","WebSocket","MozWebSocket","isReactNative","transports","websocket","forceBase64","check","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","lastPacket","timestampRequests","timestampParam","b64","webtransport","WebTransport","transportOptions","closed","ready","createBidirectionalStream","decoderStream","maxPayload","TextDecoder","expectedLength","headerArray","getUint16","getUint32","createPacketDecoderStream","reader","readable","pipeThrough","getReader","encoderStream","pipeTo","writer","getWriter","sid","polling","isSSL","createCookieJar","poll","doPoll","decodePayload","encodedPayload","encodedPackets","decodedPacket","encodePayload","doWrite","req","xhrStatus","pollXhr","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","closeOnBeforeunload","qs","qry","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","setTransport","onDrain","probe","failed","onTransportOpen","upgrading","freezeTransport","onTransportClose","onupgrade","resetPingTimeout","onHandshake","sendPacket","filterUpgrades","getWritablePackets","payloadSize","utf8Length","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","withNativeFile","File","hasBinary","deconstructPacket","buffers","packetData","_deconstructPacket","attachments","_placeholder","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","deconstruction","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","buf","tryParse","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","finishedReconstruction","reconPack","binData","freeze","connect_error","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","_opts","_autoConnect","disconnected","subEvents","subs","onpacket","_readyState","retries","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","isTransportWritable","engine","notifyOutgoingListeners","ackTimeout","_len3","_key3","withError","emitWithAck","_len4","_key4","tryCount","_len5","responseArgs","_key5","_drainQueue","_packet","_sendConnectPacket","_pid","pid","_lastOffset","_clearAcks","onconnect","onevent","onack","ondisconnect","emitEvent","_anyListeners","_len6","_key6","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","ms","jitter","attempts","rand","deviation","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","decoder","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","onreconnect","attempt","loc","sameNamespace","forceNew","multiplex","ReactOriginal","ContextKey","gT","_gT$ContextKey","contextMap","realContext","ReactReduxContext","notInitialized","createReduxContextHook","useReduxContext","refEquality","createSelectorHook","useReduxContext2","useSelector2","equalityFnOrOptions","equalityFn","devModeChecks","store","subscription","getServerState","stabilityCheck","identityFunctionCheck","wrappedSelector","selectedState","addNestedSub","getState","withTypes","useSelector","defaultNoopBatch","nullListeners","notify","createSubscription","parentSub","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","Provider_default","serverState","contextValue","previousState","createStoreHook","useStore2","useStore","createDispatchHook","useDispatch2","useDispatch","useSyncExternalStoreWithSelector2","initializeConnect","React2","SOCKET_DATA_RECEIVED","socketDataReceived","CookieBanner","showBanner","setShowBanner","closeBanner","acceptCookies","Home","setLoading","marketData","interval","Main","Trend","Learn","Popular","News","Steps","CookieConsent","usdPrice","cmcData","selectedRegion","marketCap","total_market_cap","classDropdownArrow","classDropdownBody","classDropdownOption","setIndex","handleClick","selectedCurrency","regionChangeHandler","regions","currencies","currencyChangeHandler","coins","topGainers","topLosers","isTopGainers","setIsTopGainers","gainerAndLoserChange","coinsToRender","coinIndex","_coin$name","_coin$name2","lim","p2b","n2b","b2n","n2p","map$1","hex","hexString","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","unpack","transparent","RGB_RE","modHSL","tmp","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","valid","rgbString","hslString","mix","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","roundedRange","niceRange","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","cmp","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","colors","intlCache","formatNumber","NumberFormat","getNumberFormat","formatters","tickValue","ticks","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","getScope$1","scope","Defaults","_descriptors","_appliers","borderColor","datasets","getDevicePixelRatio","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","scales","showLine","drawActiveElementsOnTop","describe","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","appliers","_scriptable","_indexable","_fallback","resize","animations","hide","autoPadding","beginAtZero","bounds","clip","grace","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","jlen","nestedThing","gcLen","_alignPixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","rad","translate","SQRT1_2","borderWidth","_isPointInArea","point","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","drawBackdrop","oldColor","renderText","lines","strokeColor","translation","textAlign","setRenderOpts","backdrop","strokeText","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","parentContext","_createResolver","scopes","prefixes","getTarget","finalRootScopes","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","prefix","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","rootScopes","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","borders","box","offsetX","offsetY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","normalizeSegment","_boundSegment","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_charts","_running","_lastDate","_notify","anims","numSteps","initial","currentStep","_refresh","_update","running","draw","_active","_total","tick","_getAnims","charts","complete","cur","_duration","animator","interpolators","c0","Animation","currentValue","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","rej","resolved","Animations","_properties","configure","animationOptions","animatedProps","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","found","isStacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_cachedDataOpts","getMeta","_type","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_dataCheck","iAxisKey","vAxisKey","adata","convertObjectDataToArray","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","raw","createDataContext","createDatasetContext","_resolveElementOptions","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","numMeta","numData","_insertElements","_removeElements","move","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","updateMinAndPrev","getPixelForTick","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","currentParsed","iScaleValue","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","BubbleController","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","toPercentage","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","fontColor","legendItem","toggleDataVisibility","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","abstract","DateAdapterBase","members","formats","diff","startOf","endOf","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","trigger","addedNodes","removedNodes","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","tooltipPosition","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","_int16Range","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","y2","positionAxisID","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","defaultRoutes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","_len7","_key7","removeElements","_len8","_key8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","hook","_createDescriptors","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","_ref3","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","determineAxis","_len11","scaleOptions","_key11","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","getSizeForArea","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","parseBorderRadius$1","angleDelta","toRadiusCorners","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","lineJoin","angleMargin","clipArc","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","onLeave","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","_element","_args","afterEvent","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","positioners","average","xSet","xAverage","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","_eventPosition","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","_ref6","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref7","LinearScaleBase","_endValue","handleTickRangeOptions","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref8","minExp","startExp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","itemOpts","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","minute","hour","day","quarter","year","UNITS","sorter","_adapter","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","redraw","fallbackContent","updateMode","canvasProps","chartRef","renderChart","Chart$1","destroyChart","nextOptions","setOptions","role","createTypedChart","registerables","Line","Doughnut","drawIndicatorDot","fgl_latest","dotX","dotY","fgl_char_latest","DashboardCard","SemiPieChart","total_market_cap_yesterday_percentage_change","btc_dominance","eth_dominance","recentMarkets","topVolume","recentAdded","renderMultiCard","MulCards","currentPage","sortBy","searchHandler","setSortBy","setCurrentPage","sortedMarkets","indexOfLastMarket","paginatedMarkets","marketsPerPage","pageNumbers","handlePageChange","totalPages","trade","ind","_i$name","cap","self_reported_market_cap","slippage","tooltiptext","tradeIcon","pagination","paginationButton","selectedCategory","categories","categoryChangeHandler","Panel","LoaderScreen","cx","cy","CMC_DATA_REQUEST","CMC_DATA_SUCCESS","CMC_DATA_FAILED","cmcDataCreator","cmcDataSuccess","cmcDataFailed","Market","_socketMarketData$fla","_socketMarketData$fla2","_selectedCurrencyData","_selectedCurrencyData2","_selectedCurrencyData3","_selectedCurrencyData4","_selectedCurrencyData5","isFirstRender","setUsdPrice","setSelectedRegion","setSelectedCurrency","setSelectedCategory","setSearch","flat","region_name","selectedCurrencyData","category","cat","filteredMarkets","searchedMarkets","market","_market$name","_market$name$toLowerC","_market$slug","_market$slug$toLowerC","fieldKey","_a$name","_b$name","localeCompare","valA","valB","indexOfFirstMarket","_selectedRegion$toLow","_x$symbol","renderMain","_a$volume","_b$volume","volumeA","createdAt","Details","pageNumber","scrollToRefCatalog","categoryText","navigationList","activeIndex","setActiveIndex","setNavigation","releases","dropdownHead","Item","author","articles","imageBlog","imageBlog2","imageBlogTwoX","imageBlog2TwoX","P1","P2","h3","P3","h4","P4","h5","P5","h6","P6","h7","P7","h8","P8","h9","P9","h10","P10","h11","P11","h12","P12","h13","P13","blogs","_item$name","imageContainer","nestedImage","avatar","coinData","LearnCrypto","setCoinData","getCoinDetailsHandler","_getCoinDetailsPayloa","_getCoinDetailsPayloa2","getCoinDetailsPayload","filteredData","Releases","Catalog","CoinsAndTokens","breadcrumbs","blog","Breadcrumbs","AssertionError","assert","objectToGetParams","ShareButton","openShareDialog","onShareWindowClose","windowHeight","windowPosition","configRest","toolbar","directories","menubar","scrollbars","resizable","centerscreen","chrome","shareDialog","interval_1","windowOpen","screenLeft","screenTop","getBoxPositionOnScreenCenter","beforeOnClick","networkLink","openShareDialogOnClick","returnVal","disabledStyle","forwardedRef","networkName","resetButtonStyle","newClassName","newStyle","optsMap","CreatedButton","passedProps","TwitterShareButton","createShareButton","via","hashtags","related","FacebookShareButton","hashtag","openUp","darkButton","actions","Share","Favorite","favorite","setBlog","Article","AmlPolicy","linkText","linkUrl","backgroundImage","onScan","setPassword","captcha","setCaptcha","passwordType","simpleValidator","setForceUpdate","togglePasswordHandler","captchaData","loginHandler","base64data","correct","danger","Loader","foot","allValid","captchaId","showMessages","setCount","showQrCode","setShowQrCode","setSessionId","getQrCodeHandler","qrCodeLogin","qrCodeData","goPrev","login","onSubmit","checkboxContainer","Checkbox","hideBarCode","boxContainer","textClass","expiredText","securityCode","setSecurityCode","codeScreenHandler","setTimer","setIsDisabled","prevTimer","maxLength","onBlur","showMessageFor","resendOtpText","verifyBarcodeHandler","confirmationCode","setConfirmationCode","infoText","_signinData$data","_signinData$data$data","_signinData$data$data2","_signinData$data2","_signinData$data2$dat","_signinData$data2$dat2","signinData","barcodeSecurityCode","setBarcodeSecurityCode","qr_code","secret_key","Logo","SignIn","setScan","setPasswordType","SimpleReactValidator","setCaptchaData","setSigninData","setQrCodeData","sessionId","setQrCodeLogin","captchaHandler","captchPayload","_getQrCodePayload$dat","_getQrCodePayload$dat2","_getQrCodePayload$dat3","_getQrCodePayload$dat4","getQrCodePayload","_verifyBarcodePayload","_verifyBarcodePayload2","_verifyBarcodePayload3","_verifyBarcodePayload4","_verifyBarcodePayload5","_verifyBarcodePayload6","verifyBarcodePayload","_verifyBarcodePayload7","_verifyBarcodePayload8","_verifyBarcodePayload9","_verifyBarcodePayload10","_verifyBarcodePayload11","_verifyBarcodePayload12","_verifyBarcodePayload13","_verifyBarcodePayload14","_verifyBarcodePayload15","_verifyBarcodePayload16","_verifyBarcodePayload17","refreshInterval","prevCount","Login","Scan","Form","cId","captchaPayload","signinPayload","_e$data","_e$data$message","_e$data$message$","Barcode","Code","email_otp","codeScreenPayload","Confirm","setText","depositFlag","handleSepaClick","cValue","cGatewayId","regionText","setRegionText","regionValue","setRegionValue","referralCode","setReferralCode","policy","setPolicy","regionData","isEmailValid","setIsEmailValid","confirmCaptchaHandler","fieldset","_process$env$REACT_AP","newArr","_email$split$","CustomDropdown","goBack","signupHandler","confirm","setConfirm","variants","Radio","radio","_codeSuccessData$data","_codeSuccessData$data2","_codeSuccessData$data3","_codeSuccessData$data4","_codeSuccessData$data5","_codeSuccessData$data6","authenticator","setAuthenticator","barcodeScreenHandler","codeSuccessData","SignUp","setRegionData","signupToken","setSignupToken","userData","setUserData","signupData","setSigupData","setCodeSuccessData","emailParam","_emailParam$split$","disposableDomains","isValid","emailDomain","_disposableDomains$i","getRegionDataHandler","_regionPayload$data","_regionPayload$data$d","regionPayload","getSignupTokenHandler","_signupTokenPayload$d","signupTokenPayload","region","refferal_code","confirmCaptchaPayload","signupPayload","barcodeScreenPayload","_barcodeScreenPayload","_barcodeScreenPayload2","_barcodeScreenPayload3","_barcodeScreenPayload4","_barcodeScreenPayload5","_barcodeScreenPayload6","_barcodeScreenPayload7","_barcodeScreenPayload8","_barcodeScreenPayload9","_barcodeScreenPayload10","_barcodeScreenPayload11","genOtpHandler","confirmPassword","setConfirmPassword","resetPasswordHandler","ForgotPassword","acitveIndex","setAcitveIndex","otp","setOtp","genOtpPayload","Verification","NewPassword","c_password","resetPasswordPayload","_resetPasswordPayload","_resetPasswordPayload2","_e$data2","_e$data2$message$","PDF","TermsAndConditions","PrivacyPolicy","LocationRestriction","TermsAndConditionsForReferralProgram","preUrl","library_path","widgetbar","watchlist","news","datawindow","watchlist_settings","default_symbols","studies_overrides","trading_customization","brokerConfig","configFlags","fullscreen","autosize","disabled_features","enabled_features","time_frames","client_id","user_id","charts_storage_api_version","favorites","intervals","chartTypes","indicators","drawingTools","iso","bundles","localeLanguage","htmlAttrs","libraryPath","_id","_ready","_readyHandlers","_onWindowResize","_autoResizeChart","datafeed","loading_screen","_create","setDebugMode","_innerAPI","onChartReady","headerReady","_innerWindowLoaded","_innerWindow","onGrayedObjectClicked","_doWhenInnerApiLoaded","onShortcut","_doWhenInnerWindowLoaded","createShortcutAction","getLanguage","setSymbol","changeSymbol","_iFrame","closePopupsAndDialogs","selectLineTool","selectedLineTool","saveChart","loadChart","json","extendedData","getSavedCharts","loadChartFromServer","saveChartToServer","removeChartFromServer","onContextMenu","createButton","createDropdown","showNoticeDialog","showConfirmDialog","showLoadChartDialog","showSaveAsChartDialog","symbolInterval","getSymbolInterval","mainSeriesPriceFormatter","getIntervals","getStudiesList","getStudyInputs","getStudyStyles","addCustomCSSFile","applyOverrides","applyStudiesOverrides","watchList","activeChart","chartsCount","setLayout","layoutName","changeTheme","getTheme","takeScreenshot","lockAllDrawingTools","hideAllDrawingTools","drawOnAllCharts","magnetEnabled","magnetMode","undoRedoState","setIntervalLinkingEnabled","setTimeFrame","symbolSync","intervalSync","crosshairSync","timeSync","dateRangeSync","setFeatureEnabled","getAllFeatures","clearUndoHistory","undo","redo","startFullscreen","takeClientScreenshot","navigationButtonsVisibility","getNavigationButtonsVisibility","paneButtonsVisibility","getPaneButtonsVisibility","dateFormat","getDateFormat","timeHoursFormat","getTimeHoursFormat","currencyAndUnitVisibility","getCurrencyAndUnitVisibility","supportedChartTypes","tradingViewApi","doWhenApiIsReady","_render","container_id","widgetReady","initializationFinished","customFormatters","custom_formatters","brokerFactory","broker_factory","studiesOverrides","tradingCustomization","disabledFeatures","enabledFeatures","broker_config","restConfig","numeric_formatting","rss_news_feed","newsProvider","news_provider","loadLastChart","load_last_chart","saveLoadAdapter","save_load_adapter","settingsAdapter","settings_adapter","getCustomIndicators","custom_indicators_getter","additionalSymbolInfoFields","additional_symbol_info_fields","headerWidgetButtonsMode","header_widget_buttons_mode","customTranslateFunction","custom_translate_function","symbolSearchComplete","symbol_search_complete","contextMenu","context_menu","settingsOverrides","settings_overrides","timeframe","customTimezones","custom_timezones","saved_data","chartContent","saved_data_meta_info","chartContentExtendedData","createObjectURL","toolbar_bg","studies_access","drawings_access","charts_storage_url","custom_css_url","custom_font_family","auto_save_delay","snapshot_url","study_count_limit","symbol_search_request_delay","compare_symbols","time_scale","TradingView","_subs","subscribeBars","symbolInfo","updateCb","_historyProvider$hist","channelString","exchange","full_name","createChannelString","newSub","lastBar","historyProvider","socketFunction","endTime","unsubscribeBars","subChannel","symbol_name","updateChart","ts","updatedBar","roundedTime","updateBar","_subChannel","getBars","symbolName","OPEN","barsData","_subs$","_subs$$symbolInfo","_subs$$symbolInfo$nam","_barsData$message","_barsData$message$slu","supportedResolutions","supported_resolutions","resolveSymbol","onSymbolResolvedCallback","onResolveErrorCallback","_store$getState","_store$getState$marke","_store$getState$marke2","_store$getState$marke3","split_data","marketEntry","flatMap","group","_group$find","_x$currency","_split_data$","_split_data$$split","_split_data$$split$","_entry$slug","_split_data$2","symbol_stub","session","ticker","minmov","pricescale","has_intraday","intraday_multipliers","data_status","periodParams","onHistoryCallback","countBack","countForward","maValues","calculateMovingAverage","barsWithMA","noData","onRealtimeCallback","subscribeUID","onResetCacheNeededCallback","subscriberUID","calculateHistoryDepth","resolutionBack","intervalBack","getMarks","startDate","endDate","onDataCallback","getTimeScaleMarks","getServerTime","ENABLED_FEATURES","DISABLED_FEATURES","TIME_FRAMES","getLanguageFromURL","currentMarketDetails","chartContainerRef","tvWidgetRef","widgetOptions","Datafeed","fillBackground","widget","createStudy","studies","getAllStudies","study","removeEntity","previousSymbol","previousResolution","setResolution","widgetList","TVChartContainer","copyright","BuyAndSellBitcoin","BuyAndSellTron","BuyAndSellEthereum","BuyAndSellLitecoin","BuyAndSellRipple","BuyAndSellSteller","heading","p3","panel","buttonNew","coinFee","sortedCoinFee","_a$symbol","_b$symbol","symbolA","symbolB","network_slug","maxfee","decimalPrecision","depositFees","aFee","rfee","mAmount","nAmount","bank","feeText","feeTable","CryptoFee","Faq","setCategory","Fees","leverageData","setLeverageData","setCoinFee","getFeeHandler","_getFeePayload$data","getFeePayload","itemsOne","itemsTwo","Education","education","LegalCenter","btn","HelpCenter","KycPolicy","ReactPlayer","outerClassName","escFunction","modal","visibleModal","setVisibleModal","Modal","dateOptions","sortingOptions","setDate","sorting","setSorting","alert","BitdenexPay","Pay","Merchant","BitdenexPartners","Partners","BitdenexApp","percentage","min_invites","min_volume","toLocaleString","assesment","levelData","min_deposit","validity_after_activate","cashbackData","_levelData","_levelData2","previewNew","firstImage","bannerText","secondImage","newContainer","Levels","CashbackTable","infoNew","buttonClass","setLevelData","setCashbackkData","getLevelDataHandler","_getLevelPayload$data","_getLevelPayload$data2","_getLevelPayload$data3","_getLevelPayload$data4","getLevelPayload","level_info","referral_cashback","_param$slug","questionDetails","banner","renderParagraphs","paragraph","questionData","setQuestionData","setQuestionDetails","questionCoinHandler","_questionCoinPayload$","_questionCoinPayload$2","_questionCoinPayload$3","questionCoinPayload","questions","newItems","leftcolumn","xmlns","middlecolumn","customtable","rowlight","thirdcontainer","cardcontent","titleHeading","secondcardcontent","cardimage","cardcontentsmall","rightcolumn","bigcardcard","smallcardcard","BitdenexToken","GetToken","TokenInfo","BuyAndSellBitdenex","ChartJS","setData","setFilteredData","selectedPeriod","setSelectedPeriod","endtime","_state$slug","filterData","filtered","oneDay","sevenDays","fourteenDays","twentyOneDays","twentyEightDays","chartOptions","chartData","toLocaleDateString","pointRadius","_state$circulating_su","_state$max_supply","_state$total_supply","_filteredData$split","_data$filter","initialFilteredData","_item$symbol","_state$symbol","about","leftContainer","regionSymbol","historicalPrice","priceItem","tooltipContainer","tooltipIcon","tooltipText","fully_diluted_market_cap","market_cap_dominance","circulating_supply","max_supply","total_supply","assetName","github_url","official_urls","white_paper_urls","mica_paper_urls","information","buttonContainer","esg_report_url","tradeButton","rightContainer","chartContainer","LightWeightChart","timeIntervalContainer","timeIntervalTable","tableHeader","headerCell","tableBody","tableRow","tableCell","percent_change_1h","geckoUp","geckoDown","percent_change_30d","percent_change_60d","percent_change_90d","infoHeading","aboutLine","cardContent","_selectedMarket$slug","_selectedMarket$name","_orderData$current_ma","_orderData$current_ma2","_orderData$current_ma3","_orderData$current_ma4","_orderData$current_ma5","_orderData$current_ma6","selectedMarket","priceColor","orderData","current_market_details","color1","color2","color3","_orderData$current_ma7","_orderData$current_ma8","_orderData$current_ma9","_orderData$current_ma10","_orderData$current_ma11","_orderData$current_ma12","_orderData$current_ma13","_orderData$current_ma14","_orderData$current_ma15","_buy$slice","_buy$slice$sort","buy","showOption","setshowOption","limitOption","setLimitOption","balance","topBtnHandler","fiatPrice","remcrypto","amountDecimalPrecision","remfiat","normalizedVolume","statistics","marketSearch","setMarketSearch","handleSort","activeColumn","setCurrentMarketPrice","searchLower","market_position","handleSorting","columnName","sortingMap","_x$slug","_x$slug$replace","_x$slug$replace$toLow","_x$name$toLowerCase","_x$slug2","_x$slug2$replace","_parseFloat","takerFee","makerFee","_slug$split2","_slug$split2$","_slug$split3","_slug$split3$","_slug$split4","_slug$split4$","_slug$split5","_slug$split5$","_slug$split6","_slug$split6$","_slug$split7","_slug$split7$","_orderData$current_ma16","_orderData$current_ma17","_orderData$current_ma18","_orderData$current_ma19","_orderData$current_ma20","_orderData$current_ma21","_orderData$current_ma22","_orderData$current_ma23","_orderData$current_ma24","_orderData$current_ma25","_orderData$current_ma26","_orderData$current_ma27","_orderData$current_ma28","_orderData$current_ma29","_orderData$current_ma30","_orderData$current_ma31","_orderData$current_ma32","classButton","orderType","buyLimitPrice","setBuyLimitPrice","sellLimitPrice","setSellLimitPrice","buyAmount","setBuyAmount","sellAmount","setSellAmount","buyWarning","setBuyWarning","sellWarning","setSellWarning","buyTotal","setBuyTotal","sellTotal","setSellTotal","setFlag","handleBuyAmountChange","REACT_APP_MINIMUM_ORDER_AMOUNT","_slug$split","_slug$split$","currencyBalance","fiatAmount","fiatSpreadCalculation","fiatSpread","cryptoSpread","appCryptoTotal","customerCryptoTotal","handleSellAmountChange","coinBalance","cryptoAmount","appFiatTotal","customerFiatTotal","handleBuyLimitPriceChange","errorContainer","estFee","titleFeeText","titleFee","handleSellLimitPriceChange","hideClass","readOnly","isTablet","OrderTypeNavigation","visibleAction","setVisibleAction","Exchange","setOrderData","setSelectedMarket","setFilteredMarkets","marketActiveIndex","setMarketActiveIndex","setActiveColumn","buyOrdersData","setBuyOrdersData","sellOrdersData","setSellOrdersData","setOrder","previousPrice","setPreviousPrice","priceTrend","setPriceTrend","_currencies$","timeoutId","marketSocket","orderBook","orderBookPrice","buyMaxVol","calculateMaxVolumeOfOrderBook","sellMaxVol","createOrderbook","newPrice","getOpenOrders","marketDetails","market_slug","_getOpenOrderPayload$","getOpenOrderPayload","renderCharts","Charts","orders","maxVol","createOrders","tempData","newNormalizedVolume","orderBookType","bidVolumes","bid","askVolumes","ask","Actions","Balance","Currency","Table","titleText","strongText","supportButton","spanText","handleSearch","_x$network_name","searchText","network_name","_i$symbol","_i$name2","enable_deposit","disabledButton","enable_withdraw","checkMark","eqPos","deleteAllCookies","removeItem","Page","AboutCoin","Videos","LearnCryptoDetails","CoinListing","ReferralProgram","BuyAndSellCardano","BuyAndSellSolana","CoinDetail","RiskDisclosure","TradingRules","CookieStatement","Whistleblower","ConflictOfInterest","CoinStatus","WhistleblowerProcedure","PageNotFound","Notification","ReactNotifications","createThunkMiddleware","extraArgument","thunk","withExtraArgument","formatProdErrorMessage","$$observable","observable","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","compose","funcs","initialState","rootReducer","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","combineReducers","_action$payload","_action$payload$data","_action$payload$data$","middlewares","_dispatch","middlewareAPI","middleware","applyMiddleware","ReactDOM","App"],"sourceRoot":""}