{"version":3,"file":"js/977-181c18d577ac00ffe97a.chunk.js","mappings":"mIAsBA,IAjBiB,SAAAA,GACf,OACEC,EAAAA,cAAA,OAAKC,UAAWC,IAAW,WAAYH,EAAME,YAC3CD,EAAAA,cAAA,SAAOC,UAAU,mBACfD,EAAAA,cAAA,SACEG,KAAK,WACLC,SAAUL,EAAMK,SAChBC,QAASN,EAAMM,QACfC,eAAgBP,EAAMO,eACtBC,SAAUR,EAAMQ,WAEjBR,EAAMS,UAIf,C,kFCjBMC,EAAS,CACbC,MAAO,WACPC,sBAAuB,EACvBC,sBAAuB,GAGV,SAASC,EAAed,GACrC,IAAQe,EAAqBf,EAArBe,SAAUC,EAAWhB,EAAXgB,OAClB,OAAQD,GACN,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACH,OACEd,EAAAA,cAAA,QAAMU,MAAO,CAAEM,cAAe,SAC3B,IACDhB,EAAAA,cAACiB,EAAAA,GAAeC,OAAAC,OAAA,GAAKV,EAAM,CAAEC,MAAM,UAAUU,MAAOrB,EAAMgB,WAGhE,IAAK,MACH,OACEf,EAAAA,cAAA,QAAMU,MAAO,CAAEM,cAAe,SAC5BhB,EAAAA,cAACiB,EAAAA,GAAeC,OAAAC,OAAA,GAAKV,EAAM,CAAEC,MAAM,UAAUU,MAAOrB,EAAMgB,UACzD,UAGP,QACE,OAAOf,EAAAA,cAACiB,EAAAA,GAAeC,OAAAC,OAAA,GAAKV,EAAM,CAAEK,SAAUA,EAAUM,MAAOL,KAErE,C,kDChCA,aAAehB,GACb,OAAIA,EAAMsB,WACDrB,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,aAAaC,eAAe,kBAGnDxB,EAAAA,cAAA,YAAOD,EAAMS,SACrB,C,g7CCPmC,IAEfiB,EAAU,SAAAC,I,sRAAAC,CAAAF,EAAAC,GAAA,I,MAAAE,EAAAC,EAAAJ,GAC7B,SAAAA,EAAY1B,GAAQ,IAAD+B,EAIf,O,4FAJeC,CAAA,KAAAN,IACjBK,EAAAF,EAAAI,KAAA,KAAMjC,IAmBRQ,SAAW,SAAA0B,GACLH,EAAK/B,MAAMQ,UACbuB,EAAK/B,MAAMQ,SAAS0B,EAAEC,cAAcd,MAExC,EAACU,EAEDK,QAAU,WACRL,EAAKM,KAAKC,MAAMC,QAChBR,EAAKS,SAAS,CAAEC,SAAS,GAC3B,EAACV,EAEDW,OAAS,kBAAMX,EAAKS,SAAS,CAAEC,SAAS,GAAS,EA7B/CV,EAAKY,MAAQ,CACXF,SAAS,GACTV,CACJ,CA8DC,O,EA9DAL,G,EAAA,EAAAkB,IAAA,WAAAvB,MAWD,WACE,OAAOwB,KAAK7C,MAAM8C,YAAcD,KAAK7C,MAAM+C,YAC7C,GAAC,CAAAH,IAAA,SAAAvB,MAeD,WACE,IAAMnB,EAAYC,IAAW,oBAAqB0C,KAAK7C,MAAME,WACvD8C,EAAiB7C,IAAW,CAChC,4BAA4B,EAC5B,mCACI0C,KAAK7C,MAAMqB,QAAUwB,KAAKF,MAAMF,QACpC,mCAAoCI,KAAKF,MAAMF,QAC/C,YAAaI,KAAKC,aAEdG,EAAiB9C,IAAW,2BAA4B,CAC5D,YAAa0C,KAAKC,aAGpB,OACE7C,EAAAA,cAAA,OAAKC,UAAWA,GACdD,EAAAA,cAAA,SAAOC,UAAW8C,EAAgBE,QAASL,KAAKT,SAC7CS,KAAK7C,MAAMmD,OAEdlD,EAAAA,cAAA,SACEmD,IAAI,QACJ/B,MAAOwB,KAAK7C,MAAMqB,OAAS,GAC3BgC,KAAMR,KAAK7C,MAAMqD,KACjBjD,KAAMyC,KAAK7C,MAAMI,KACjBkD,SAAUT,KAAK7C,MAAMsD,SACrB9C,SAAUqC,KAAKrC,SACf4B,QAASS,KAAKT,QACdM,OAAQG,KAAKH,OACbxC,UAAW+C,IAEZJ,KAAK7C,MAAM+C,cACV9C,EAAAA,cAAA,QAAMC,UAAU,aAAa2C,KAAK7C,MAAM+C,cAIhD,M,8EAACrB,CAAA,CApE4B,CAAS6B,EAAAA,WAAnB7B,EAQZ8B,aAAe,CACpBnC,MAAO,GACPgC,KAAM,GACNF,MAAO,GACP/C,KAAM,OACN2C,aAAc,GACdD,UAAU,E,iHCXP,SAASW,EAAYzD,GAE1B,IAAI0D,EAAAA,EAAAA,SAAQ1D,KAAWA,EAAM2D,OAAQ,OAAO,KAC5C,IAAM5C,EAAWf,EAAMe,SACjB6C,EAAO5D,EAAM6D,MAAM9C,GAGnB+C,GAAYC,EAAAA,EAAAA,KAAI,CACpB/D,EAAMgE,gBAAgBjD,GACtBf,EAAM6D,MAAM9C,KAGRkD,EAAaC,KAAKC,MAAOL,EAAYF,EAAQ,KAEnD,OAAa,IAATA,EAAmB,KAGrB3D,EAAAA,cAAA,OAAKC,UAAU,eACbD,EAAAA,cAAA,OAAKC,UAAU,qBACbD,EAAAA,cAAA,OAAKC,UAAU,sBACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfrB,UAAU,0BACVsB,GAAG,gCACHC,eAAe,WAEjBxB,EAAAA,cAAA,WACAA,EAAAA,cAAA,QAAMC,UAAU,UACdD,EAAAA,cAACa,EAAAA,EAAc,CAACE,OAAQ8C,EAAW/C,SAAUA,MAGjDd,EAAAA,cAAA,OAAKC,UAAU,oBACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfrB,UAAU,0BACVsB,GAAG,8BACHC,eAAe,SAEjBxB,EAAAA,cAAA,WACAA,EAAAA,cAAA,QAAMC,UAAU,UACdD,EAAAA,cAACa,EAAAA,EAAc,CAACE,OAAQ4C,EAAM7C,SAAUA,OAI9Cd,EAAAA,cAAA,OAAKC,UAAU,kBACbD,EAAAA,cAAA,OACEC,UAAU,sBACVS,MAAO,CAAEyD,MAAM,GAADC,OAAKJ,EAAU,SAKvC,CAgBA,KAAeK,EAAAA,EAAAA,KAdS,SAAA3B,GACtB,IAAM4B,EAAO5B,EAAM6B,qBACbzD,EAAW4B,EAAM8B,WAAW1D,SAClC,OAAI2C,EAAAA,EAAAA,SAAQa,GAAc,CAAC,EACpB,CACLZ,OAAQY,EAAKZ,OACb5C,SAAAA,EACAiD,gBAAiBO,EAAKG,eACtBb,MAAOU,EAAKV,MACZc,OAAQJ,EAAKI,OACbC,MAAOL,EAAKK,MAEhB,GAEA,CAAwCnB,E,kFCpDzB,SAASoB,EAAc7E,GACpC,OAAKA,EAAM8E,SAAY9E,EAAM8E,OAAOzB,MAASrD,EAAM8E,OAAOC,OAGxD9E,EAAAA,cAAA,OAAKC,UAAU,iBACbD,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,KAAGC,UAAU,2CACbD,EAAAA,cAAA,YAAOD,EAAM8E,OAAOzB,MAAQrD,EAAM8E,OAAOC,QAE3C9E,EAAAA,cAAA,KAAGC,UAAU,sBAAsBgD,QAASlD,EAAMgF,aAChD/E,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,uBAT8C,IAa3E,C,glDClCoC,IAEfyD,EAAW,SAAAtD,I,sRAAAC,CAAAqD,EAAAtD,GAAA,I,MAAAE,EAAAC,EAAAmD,GAAA,SAAAA,IAAA,O,4FAAAjD,CAAA,KAAAiD,GAAApD,EAAAqD,MAAA,KAAAC,UAAA,CAQ7B,O,EAR6BF,G,EAAA,EAAArC,IAAA,SAAAvB,MAC9B,WACE,IAAA+D,EAA8BvC,KAAK7C,MAA3BS,EAAQ2E,EAAR3E,SAAU4E,EAAOD,EAAPC,QACZnF,EAAYC,IAAW,CAC3B8E,aAAa,EACb,sBAAuBI,IAEzB,OAAOpF,EAAAA,cAAA,OAAKC,UAAWA,GAAYoF,EAAAA,SAASC,KAAK9E,GACnD,M,8EAACwE,CAAA,CAR6B,CAAS1B,EAAAA,W,q1CCCpB,IAEAiC,EAAI,SAAA7D,I,sRAAAC,CAAA4D,EAAA7D,GAAA,I,MAAAE,EAAAC,EAAA0D,GAAA,SAAAA,IAAA,O,4FAAAxD,CAAA,KAAAwD,GAAA3D,EAAAqD,MAAA,KAAAC,UAAA,CAoBtB,O,EApBsBK,G,EAAA,EAAA5C,IAAA,SAAAvB,MACvB,WACE,IAAA+D,EAA2CvC,KAAK7C,MAAxC2D,EAAMyB,EAANzB,OAAQ8B,EAAQL,EAARK,SAAUC,EAAKN,EAALM,MAAOvC,EAAKiC,EAALjC,MAC3BwC,EAAcxF,IAAW,CAC7BqF,MAAM,EACN,eAAgB7B,EAChB,iBAAkB8B,IAGpB,OACExF,EAAAA,cAAA,OAAKC,UAAWyF,EAAazC,QAASL,KAAK7C,MAAMkD,SAC/CjD,EAAAA,cAAA,OAAKC,UAAU,gBACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAE,mCAAA6C,OAAqCqB,EAAQ,GAC/CjE,eAAc,GAAA4C,OAAKqB,EAAQ,MAG/BzF,EAAAA,cAAA,OAAKC,UAAU,eAAeiD,GAGpC,M,8EAACqC,CAAA,CApBsB,CAASjC,EAAAA,W,q1CCJR,IAELqC,EAAO,SAAAjE,I,sRAAAC,CAAAgE,EAAAjE,GAAA,I,MAAAE,EAAAC,EAAA8D,GAAA,SAAAA,IAAA,O,4FAAA5D,CAAA,KAAA4D,GAAA/D,EAAAqD,MAAA,KAAAC,UAAA,CAmCzB,O,EAnCyBS,G,EAAA,EAAAhD,IAAA,aAAAvB,MAC1B,SAAWqE,GACL7C,KAAK7C,MAAM6F,YAAcH,GAC3B7C,KAAK7C,MAAM8F,WAAWJ,EAE1B,GAAC,CAAA9C,IAAA,aAAAvB,MAED,SAAW0E,EAAML,GAAQ,IAAD3D,EAAA,KACd8D,EAAgBhD,KAAK7C,MAArB6F,YACR,OACE5F,EAAAA,cAACuF,EAAI,CACH5C,IAAK8C,EACLA,MAAOA,EACPvC,MAAO4C,EACPpC,OAAQkC,IAAgBH,EACxBD,SAAUI,EAAcH,EACxBxC,QAAS,kBAAMnB,EAAK+D,WAAWJ,EAAM,GAG3C,GAAC,CAAA9C,IAAA,SAAAvB,MAED,WAAU,IAAD2E,EAAA,KACP,OACE/F,EAAAA,cAAA,OAAKC,UAAU,+BACbD,EAAAA,cAAA,MAAIC,UAAU,mBAAmB2C,KAAK7C,MAAM4E,OAC5C3E,EAAAA,cAAA,OAAKC,UAAU,kBACbD,EAAAA,cAAA,MAAIC,UAAU,kBACdD,EAAAA,cAAA,OAAKC,UAAU,iBACZ2C,KAAK7C,MAAMiG,MAAMC,KAAI,SAACH,EAAML,GAAK,OAChCM,EAAKG,WAAWJ,EAAML,EAAM,MAMxC,M,8EAACE,CAAA,CAnCyB,CAASrC,EAAAA,WCIrC,WAAevD,GACb,IAAMW,EAAQ,CAAC,EACXT,EAAY,kBAEhB,OAAKF,EAAMS,UAENT,EAAMoG,YACTzF,EAAM0F,QAAU,OAChBnG,EAAY,kBAIZD,EAAAA,cAAA,OAAKU,MAAOA,EAAOT,UAAW,UAAYA,GACvCF,EAAMS,WATiB,IAY7B,E,ihECnBuB,IAEH6F,EAAW,SAAA3E,I,sRAAAC,CAAA0E,EAAA3E,GAAA,I,MAAAE,EAAAC,EAAAwE,GAC9B,SAAAA,EAAYtG,GAAQ,IAAD+B,EAIf,O,4FAJeC,CAAA,KAAAsE,IACjBvE,EAAAF,EAAAI,KAAA,KAAMjC,IACD2C,MAAQ,CACXsD,MAAO,IACPlE,CACJ,CAuDC,O,EAvDAuE,G,EAAA,EAAA1D,IAAA,YAAAvB,MAED,WACE,IAAQZ,EAAaoC,KAAK7C,MAAlBS,SACR,OAAKA,EACE6E,EAAAA,SAASY,IAAIK,IAAAA,QAAU9F,IAAW,SAAA+F,GAAK,OAAIA,EAAMxG,MAAM4E,KAAK,IAD7C,EAExB,GAAC,CAAAhC,IAAA,yBAAAvB,MAED,SAAuBZ,GAAW,IAADuF,EAAA,KAC/B,OAAOV,EAAAA,SAASY,IAAIK,IAAAA,QAAU9F,IAAW,SAAC+F,EAAOd,GAAK,OACpDe,EAAAA,EAAAA,cAAaD,EAAO,CAAEnB,QAASK,IAAUM,EAAKhG,MAAM6F,aAAc,GAEtE,GAAC,CAAAjD,IAAA,cAAAvB,MAED,WACE,IAAMqF,EAAYC,EAAAA,EAAA,GACb9D,KAAK7C,OAAK,IACbiG,MAAOpD,KAAK+D,cAEd,OACE3G,EAAAA,cAAA,OAAKC,UAAU,oBACbD,EAAAA,cAAA,OAAKC,UAAU,6BACbD,EAAAA,cAAA,KAAGC,UAAU,gCAA+B,WAE9CD,EAAAA,cAAC2F,EAAYc,GACbzG,EAAAA,cAAA,OAAKC,UAAU,wBACZ2C,KAAKgE,uBAAuBhE,KAAK7C,MAAMS,WAIhD,GAAC,CAAAmC,IAAA,kBAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,OAAKC,UAAU,2BACbD,EAAAA,cAAA,MAAIC,UAAU,kCACZD,EAAAA,cAAA,KAAGC,UAAU,sBACbD,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,qBAEvBvB,EAAAA,cAAA,UACEA,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,uBAI7B,GAAC,CAAAoB,IAAA,SAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,WACEA,EAAAA,cAAC6G,EAAM,CAACV,WAAYvD,KAAK7C,MAAM+G,YAAalE,KAAKmE,eACjD/G,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAK7C,MAAM+G,YAC3BlE,KAAKoE,mBAId,M,8EAACX,CAAA,CA7D6B,CAAS/C,EAAAA,W,sBCD1B,SAAS2D,EAAmBlH,GACzC,IAAME,EAAYC,IAAW,CAC3B+G,oBAAoB,EACpB,gCAAiClH,EAAMmH,iBAAmBnH,EAAMgB,OAChE,8BACIhB,EAAMmH,gBAAkBnH,EAAMmH,iBAAmBnH,EAAMgB,SAG7D,OACEf,EAAAA,cAACmH,EAAAA,EAAM,CACLlH,UAAWA,EACXgD,QAASlD,EAAMkD,QACfG,KAAMrD,EAAMqD,KACZ7B,GAAIxB,EAAMwB,IAEVvB,EAAAA,cAACa,EAAAA,EAAc,CAACC,SAAUf,EAAMe,SAAUC,OAAQhB,EAAMgB,SAG9D,C,m2CCjBO,IAAMqG,GAAa,SAAA1F,I,uRAAAC,CAAAyF,EAAA1F,GAAA,I,MAAAE,EAAAC,GAAAuF,GACxB,SAAAA,EAAYrH,GAAQ,IAAD+B,EAKf,O,4FALeC,CAAA,KAAAqF,IACjBtF,EAAAF,EAAAI,KAAA,KAAMjC,IAED2C,MAAQ,CACX2E,aAActH,EAAMsH,cACpBvF,CACJ,CA8DC,O,EA9DAsF,E,EAAA,EAAAzE,IAAA,kBAAAvB,MAED,SAAgBa,GAAgB,IAAblB,EAAMmE,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAG,EAC1BjD,EAAEuF,iBACF5E,KAAK7C,MAAM0H,wBAAwBxF,EAAEyF,QACrC9E,KAAKL,SAAS,CAAE8E,kBAAcE,IAC9B3E,KAAK7C,MAAM4H,aAAa5G,GACxB6B,KAAK7C,MAAM6H,SACb,GAAC,CAAAjF,IAAA,iBAAAvB,MAED,SAAeA,GAEb,IAAMyG,EAASzG,EAAM0G,QAAQ,MAAO,IAC9B/G,EAAS8G,EAASE,WAAWF,QAAUN,EAC7C3E,KAAKL,SAAS,CAAE8E,aAActG,IAC9B6B,KAAK7C,MAAMiI,mBAAkB,EAAMjH,GAC/B6B,KAAK7C,MAAMkI,mBACbrF,KAAK7C,MAAMkI,mBAAmBlH,GAE9B6B,KAAK7C,MAAM4H,aAAa5G,EAE5B,GAAC,CAAA4B,IAAA,qBAAAvB,MAED,WACE,OAAKwB,KAAKF,MAAM2E,aACTzE,KAAK7C,MAAMmI,KAAKC,aAAavF,KAAKF,MAAM2E,aAAc,CAC3DvG,SAAU8B,KAAK7C,MAAMe,SACrBJ,MAAO,WACPC,sBAAuB,EACvBC,sBAAuB,IALY,EAOvC,GAAC,CAAA+B,IAAA,SAAAvB,MAED,WAAU,IAAD2E,EAAA,KACCqC,EAAYxF,KAAK7C,MAAjBqI,QACR,OACEpI,EAAAA,cAAA,OAAKC,UAAU,2BACZmI,EAAQnC,KAAI,SAAClF,EAAQsH,GAAC,OACrBrI,EAAAA,cAACiH,EAAkB,CACjBtE,IAAK0F,EACLjF,KAAMiF,EAAI,EACV9G,GAAE,iBAAA6C,OAAmBiE,EAAI,GACzBtH,OAAQA,EACRmG,eAAgBnB,EAAKhG,MAAMmH,eAC3BpG,SAAUiF,EAAKhG,MAAMe,SACrBmC,QAAS,SAAAqF,GAAK,OAAIvC,EAAKwC,gBAAgBD,EAAOvH,EAAO,GACrD,IAEJf,EAAAA,cAAA,SACEG,KAAK,MACLgD,IAAI,eACJ5B,GAAG,8BACHtB,UAAU,uBACVuI,YAAa5F,KAAK7C,MAAMmI,KAAKO,cAAc,CACzClH,GAAI,4BAENmH,QAAS,WACTtH,MAAOwB,KAAK+F,qBACZpI,SAAU,SAAA0B,GAAC,OAAI8D,EAAK6C,eAAe3G,EAAEC,cAAcd,MAAM,IAIjE,I,iFAACgG,CAAA,CArEuB,CAAS9D,EAAAA,WAwEnC,IAAeuF,EAAAA,EAAAA,IAAWzB,I,23CCxEmC,IAExC0B,GAAe,SAAAC,I,uRAAApH,CAAAmH,EAAAC,GAAA,I,MAAAnH,EAAAC,GAAAiH,GAUlC,SAAAA,EAAY/I,GAAQ,IAAD+B,EAMf,O,4FANeC,CAAA,KAAA+G,IACjBhH,EAAAF,EAAAI,KAAA,KAAMjC,IAED2C,MAAQ,CACX2E,aAAc,KACd2B,sBAAsB,GACtBlH,CACJ,CATC,O,EASAgH,E,EAuGA,EAAAnG,IAAA,QAAAvB,MAvHD,SAAaL,EAAQD,GACnB,OAAc,MAAVC,EAEAf,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,oBAAoBC,eAAe,WAGrDxB,EAAAA,cAACa,EAAAA,EAAc,CAACE,OAAQA,EAAQD,SAAUA,GACnD,K,EASC,EAAA6B,IAAA,qBAAAvB,MAED,WACE6H,GAAAA,EAAGC,KAAK,wBACV,GAAC,CAAAvG,IAAA,sBAAAvB,MAED,WACEwB,KAAKL,SAAS,CACZyG,sBAAuBpG,KAAKF,MAAMsG,sBAEtC,GAAC,CAAArG,IAAA,mBAAAvB,MAED,SAAiBN,GACf,IAAMoC,EAAQN,KAAK7C,MAAMe,SAAQ,QAAAsD,OACrBxB,KAAK7C,MAAMe,SAAQ,QAAAsD,OAAOtD,GAClCA,EACJmI,GAAAA,EAAGC,KAAK,kBAAmBhG,GAC3BN,KAAK7C,MAAMoJ,eAAerI,EAC5B,GAAC,CAAA6B,IAAA,uBAAAvB,MAED,WACMwB,KAAK7C,MAAMqJ,yBACbxG,KAAK7C,MAAM4H,aAAa/E,KAAK7C,MAAMqJ,wBACnCxG,KAAK7C,MAAM6H,UAEf,GAAC,CAAAjF,IAAA,UAAAvB,MAED,YACOwB,KAAK7C,MAAMsJ,gBAAkBzG,KAAK7C,MAAMqJ,wBAC3CxG,KAAK7C,MAAM4H,aAAa/E,KAAK7C,MAAMqJ,wBAGrCxG,KAAK7C,MAAM6H,SACb,GAAC,CAAAjF,IAAA,SAAAvB,MAED,WAAU,IAAD2E,EAAA,KACP,OACE/F,EAAAA,cAAA,OAAKC,UAAU,qCACbD,EAAAA,cAACwD,GAAAA,EAAW,MACZxD,EAAAA,cAACoH,GAAa,CACZjE,IAAI,gBACJiF,QAASxF,KAAK7C,MAAMuJ,cAAc1G,KAAK7C,MAAMe,UAC7CA,SAAU8B,KAAK7C,MAAMe,SACrB8G,QAAShF,KAAK7C,MAAM6H,QACpBV,eAAgBtE,KAAK7C,MAAMqJ,uBAC3BzB,aAAc/E,KAAK7C,MAAM4H,aACzBM,mBAAoBrF,KAAK7C,MAAMkI,mBAC/BR,wBAAyB7E,KAAK7C,MAAM0H,wBACpCO,kBAAmBpF,KAAK7C,MAAMiI,oBAEhChI,EAAAA,cAAA,SACEA,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,yBACHC,eAAe,8BACf+H,OAAQ,CAAEzI,SAAU8B,KAAK7C,MAAMe,YAC/B,QAEFd,EAAAA,cAAA,KACEiD,QAASL,KAAK4G,oBAAoBC,KAAK7G,MACvC3C,UAAU,oCAEVD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,6BACHC,eAAe,sBAIpBoB,KAAKF,MAAMsG,sBACVhJ,EAAAA,cAAA,UACEoB,MAAOwB,KAAK7C,MAAMe,SAClBb,UAAU,qCACVM,SAAU,SAAA0B,GAAC,OAAI8D,EAAK2D,iBAAiBzH,EAAEC,cAAcd,MAAM,GAE1DF,OAAOyI,KAAK/G,KAAK7C,MAAMuJ,eAAerD,KAAI,SAAAnF,GACzC,OACEd,EAAAA,cAAA,UAAQ2C,IAAK7B,EAAUM,MAAON,GAC3BA,EAGP,MAIF8B,KAAK7C,MAAMsJ,gBAAkBzG,KAAK7C,MAAMqJ,yBACxCpJ,EAAAA,cAACmH,EAAAA,EAAM,CACLlH,UAAU,sCACVgD,QAAS,kBAAM8C,EAAK6B,SAAS,EAC7BxH,WACIwC,KAAK7C,MAAMsJ,gBAAkBzG,KAAK7C,MAAMqJ,yBAG3CxG,KAAK7C,MAAM6J,cACVhH,KAAK7C,MAAM6J,cAEX5J,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,gCACHC,eAAe,wBAO7B,M,gFAhHCsH,CAAA,CARiC,CAAS9I,EAAAA,W,o5CCJD,IAEvB6J,GAAU,SAAAnI,I,uRAAAC,CAAAkI,EAAAnI,GAAA,I,MAAAE,EAAAC,GAAAgI,GAAA,SAAAA,IAAA,O,4FAAA9H,CAAA,KAAA8H,GAAAjI,EAAAqD,MAAA,KAAAC,UAAA,CAsI5B,O,EAtI4B2E,G,EAAA,EAAAlH,IAAA,iBAAAvB,MAC7B,SAAekH,GACb,IAAMjI,EAAUiI,EAAMpG,cAAc7B,QACpCuC,KAAK7C,MAAMQ,UAAYqC,KAAK7C,MAAMQ,SAASF,EAAU,IAAM,IAC7D,GAAC,CAAAsC,IAAA,aAAAvB,MAED,WACE,IAAA+D,EAAyBvC,KAAK7C,MAAtB+J,EAAK3E,EAAL2E,MAAO1I,EAAK+D,EAAL/D,MACf,MAAO,CACLgC,KAAM0G,EAAM1G,KACZF,MAAO4G,EAAM5G,MACb9C,SAAU0J,EAAM1J,SAChBiD,SAAUyG,EAAMzG,SAChBjC,MAAOA,EACP0B,aAAcF,KAAK7C,MAAM+C,aACzBvC,SAAUqC,KAAK7C,MAAMQ,SAEzB,GAAC,CAAAoC,IAAA,eAAAvB,MAED,SAAa2I,GACX,GAAIA,EAAWjH,aACb,OAAO9C,EAAAA,cAAA,QAAMC,UAAU,aAAa8J,EAAWjH,aACnD,GAAC,CAAAH,IAAA,kBAAAvB,MAED,SAAgB2I,GACd,OACE/J,EAAAA,cAAA,WACEA,EAAAA,cAAA,YACEoD,KAAM2G,EAAW3G,KACjBhC,MAAO2I,EAAW3I,MAClBoH,YAAauB,EAAW7G,MACxB3C,SAAU,SAAA0B,GAAC,OACT8H,EAAWxJ,UAAYwJ,EAAWxJ,SAAS0B,EAAEC,cAAcd,MAAM,EAEnEnB,UAAW8J,EAAWjH,aAAe,YAAc,GACnDkH,UAAU,SAEXpH,KAAKE,aAAaiH,GAGzB,GAAC,CAAApH,IAAA,iBAAAvB,MAED,SAAe2I,GACbA,EAAW3I,OAAS2I,EAAW3I,OAAS,KAAK6I,WAC7C,IAAM5J,EACiB,MAArB0J,EAAW3I,OACU,YAArB2I,EAAW3I,OACU,SAArB2I,EAAW3I,MACb,OACEpB,EAAAA,cAAA,WACEA,EAAAA,cAACkK,GAAAA,EAAQ,CAAC7J,QAASA,EAASE,SAAUqC,KAAKuH,eAAeV,KAAK7G,OAC5DmH,EAAW7G,OAEbN,KAAKE,aAAaiH,GAGzB,GAAC,CAAApH,IAAA,eAAAvB,MAED,SAAa2I,GAAa,IAADjI,EAAA,KACfgI,EAAUlH,KAAK7C,MAAf+J,MACR,OACE9J,EAAAA,cAAA,OAAKC,UAAU,mBACbD,EAAAA,cAAA,OAAKC,UAAU,qBAAqB8J,EAAW7G,OAC9C4G,EAAMM,SACLN,EAAMM,QAAQnE,KAAI,SAAAoE,GAAM,OACtBrK,EAAAA,cAAA,SAAO2C,IAAK0H,EAAO9I,GAAI+I,QAASD,EAAO9I,IACrCvB,EAAAA,cAAA,SACEuB,GAAI8I,EAAO9I,GACX6B,KAAM2G,EAAW3G,KACjBjD,KAAK,QACLiB,MAAOiJ,EAAOjJ,MACdf,QAASgK,EAAOjJ,QAAU2I,EAAW3I,MACrCb,SAAU,SAAA+H,GAAK,OACbxG,EAAK/B,MAAMQ,UACXuB,EAAK/B,MAAMQ,SAAS+H,EAAMpG,cAAcd,MAAM,IAGjDiJ,EAAOnH,MACF,IAEXN,KAAKE,aAAaiH,GAGzB,GAAC,CAAApH,IAAA,cAAAvB,MAED,SAAYjB,GACV,IAAM4J,EAAanH,KAAKmH,aACxBQ,EAEI3H,KAAK7C,MADP+J,MAASU,EAAaD,EAAbC,cAAepH,EAAImH,EAAJnH,KAAMgH,EAAOG,EAAPH,QAGhC,OAAQjK,GACN,IAAK,QACH,OAAOH,EAAAA,cAACyB,GAAAA,EAAUP,OAAAC,OAAA,CAAChB,KAAK,SAAY4J,IACtC,IAAK,QACL,IAAK,UACH,OAAO/J,EAAAA,cAACyB,GAAAA,EAAUP,OAAAC,OAAA,CAAChB,KAAK,OAAU4J,IACpC,IAAK,UACH,OAAO/J,EAAAA,cAACyK,GAAAA,GAAkBV,GAC5B,IAAK,WACL,IAAK,SACH,OACE/J,EAAAA,cAAC0K,GAAAA,EAAWxJ,OAAAC,OAAA,GACN4I,EAAU,CACdY,SAAS1E,EAAAA,EAAAA,KAAImE,GAAS,SAAAQ,GAAC,OAAIC,EAAAA,EAAAA,MAAKD,EAAG,QAAS,QAAQ,OAG1D,IAAK,SACH,OAAO5K,EAAAA,cAAA,SAAOG,KAAK,SAASiD,KAAMA,EAAMhC,MAAOoJ,IACjD,IAAK,WACH,OAAO5H,KAAKkI,eAAef,GAC7B,IAAK,SACH,OAAOnH,KAAKmI,aAAahB,GAC3B,IAAK,cACH,OAAO/J,EAAAA,cAAA,OAAKC,UAAU,qBAAqB8J,EAAW7G,OACxD,IAAK,YACH,OAAON,KAAKoI,gBAAgBjB,GAG9B,QACE,OAAO/J,EAAAA,cAACyB,GAAAA,EAAUP,OAAAC,OAAA,CAAChB,KAAK,QAAW4J,IAEzC,GAAC,CAAApH,IAAA,SAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,OACE2C,IAAKC,KAAK7C,MAAM+J,MAAM1G,KACtBnD,UAAS,oEAAAmE,OAAsExB,KAC5E7C,MAAME,WAAa,KAErB2C,KAAKqI,YAAYrI,KAAK7C,MAAM+J,MAAMoB,WAGzC,M,gFAACrB,CAAA,CAtI4B,CAASvG,EAAAA,W,8sHCGjC,IAAM6H,GAAiB,SAAAzJ,I,uRAAAC,CAAAwJ,EAAAzJ,GAAA,I,MAAAE,EAAAC,GAAAsJ,GAY5B,SAAAA,EAAYpL,GAAQ,IAAD+B,EAMf,O,4FANeC,CAAA,KAAAoJ,IACjBrJ,EAAAF,EAAAI,KAAA,KAAMjC,IAVRqL,cAAgB,CACd,SACA,OACA,cACA,MACA,SACA,kBACDtJ,EAoFDuJ,SAAW,WACTvJ,EAAKS,SAAS,CAAE+I,SAAS,IAGzBC,MAAM,cAADnH,OAAetC,EAAK/B,MAAMyL,OAAM,qBAAqB,CACxDC,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChBC,OAAQ,oBAEVC,KAAMC,KAAKC,UAASpF,GAAAA,GAAC,CAAC,EAAI5E,EAAK/B,MAAMgM,MAAI,IAAEC,QAASlK,EAAK/B,MAAMkM,YAC9DC,MACD,SAAAC,GAEE,OADArK,EAAKS,SAAS,CAAE+I,SAAS,IACrBa,EAASC,GACJD,EAASE,OAAOH,KAAKpK,EAAKwK,cAAc7C,KAAI8C,GAAAzK,KAE9CqK,EAASE,OAAOH,KAAKpK,EAAK0K,cAAc/C,KAAI8C,GAAAzK,IACrD,IACA,SAAA2K,GACE3K,EAAKS,SAAS,CAAE+I,SAAS,GAC3B,GAEJ,EAACxJ,EAwBD4K,SAAW,SAAAzK,GACTA,EAAEuF,iBACF1F,EAAKuJ,UACP,EAjIEvJ,EAAKY,MAAQ,CACXiK,OAAQ,CAAC,EACTrB,SAAS,GACTxJ,CACJ,CAyJC,O,EAzJAqJ,G,EAAA,EAAAxI,IAAA,oBAAAvB,MAED,WACEwB,KAAKgK,UACLhK,KAAKiK,kBACP,GAAC,CAAAlK,IAAA,mBAAAvB,MAED,WACE6H,GAAAA,EAAG6D,GAAG,mCAAoClK,KAAKyI,SACjD,GAAC,CAAA1I,IAAA,UAAAvB,MAED,WACE,IACqC2L,EAD/BzI,EAAO,CAAC,EAAE0I,EAAAC,GACIrK,KAAK7C,MAAMmN,QAAM,IAArC,IAAAF,EAAAG,MAAAJ,EAAAC,EAAAI,KAAAC,MAAuC,CAAC,IAA7BvD,EAAKiD,EAAA3L,MACdkD,EAAKwF,EAAM1G,MAAQR,KAAK7C,MAAMuN,WAAWxD,EAAM1G,MAC3CR,KAAK7C,MAAMuN,WAAWxD,EAAM1G,MAC5B0G,EAAMU,aACZ,CAAC,OAAA+C,GAAAP,EAAA/K,EAAAsL,EAAA,SAAAP,EAAAQ,GAAA,KAEoCC,EAFpCC,EAAAT,GAEkBrK,KAAKwI,eAAa,IAArC,IAAAsC,EAAAP,MAAAM,EAAAC,EAAAN,KAAAC,MAAuC,CAAC,IAA7BjK,EAAIqK,EAAArM,MACTwB,KAAK7C,MAAMuN,WAAWlK,KACxBkB,EAAKlB,GAAQR,KAAK7C,MAAMuN,WAAWlK,GAEvC,CAAC,OAAAmK,GAAAG,EAAAzL,EAAAsL,EAAA,SAAAG,EAAAF,GAAA,CACD5K,KAAK7C,MAAM4N,WAAUjH,GAAAA,GAAC,CAAC,EAAI9D,KAAK7C,MAAMgM,MAASzH,GACjD,GAAC,CAAA3B,IAAA,gBAAAvB,MAED,SAAc0I,GACZ,IAAM8D,EAAQhL,KAAKF,MAAMiK,OAAO7C,GAChC,OAAK8D,EACE5N,EAAAA,cAACsB,EAAAA,GAAqBsM,GADV,IAErB,GAAC,CAAAjL,IAAA,aAAAvB,MAED,WACE,OAAIwB,KAAKF,MAAM4I,QAEXtL,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,kBAAkBC,eAAe,kBAE/CoB,KAAK7C,MAAM8N,WACbjL,KAAK7C,MAAM8N,WAEX7N,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,cAAcC,eAAe,UAE7D,GAAC,CAAAmB,IAAA,gBAAAvB,MAED,WAAiB,IAAD2E,EAAA,KACdkD,GAAAA,EAAGC,KAAK,2BACRtG,KAAKL,SAAS,CAAEoK,OAAQ,CAAC,IAAK,WACxB5G,EAAKhG,MAAM6H,SACb7B,EAAKhG,MAAM6H,SAEf,GACF,GAAC,CAAAjF,IAAA,gBAAAvB,MAED,SAAc+K,GACZlD,GAAAA,EAAGC,KAAK,wBAAyBiD,GACjC,IAAMQ,EAASrG,IAAAA,UAAY6F,EAASQ,QAAQ,SAAAmB,GAC1C,MAAO,CACLvM,GAAI,iCACJC,eAAgB,uBAChB+H,OAAQ,CAAEwE,QAJ6CC,GAAAF,EAAA,GAAN,IAMrD,IAEAlL,KAAKL,SAAS,CAAEoK,OAAAA,GAClB,GAAC,CAAAhK,IAAA,cAAAvB,MAED,SAAYuB,EAAKvB,GACfwB,KAAKF,MAAMiK,OAAOhK,GAAO,KACzBC,KAAK7C,MAAM4N,WAAUjH,GAAAA,GAAC,CAAC,EAClB9D,KAAK7C,MAAMgM,MAAI,GAAAkC,GAAA,GACjBtL,EAAMvB,IAEX,GAAC,CAAAuB,IAAA,kBAAAvB,MA2BD,WAAmB,IAAD8M,EAAA,KAChB,OAAOtL,KAAK7C,MAAMmN,OAAOiB,QAAO,SAAArE,GAC9B,OAAQA,EAAMsE,cACZ,IAAK,cACH,OAAO,EACT,IAAK,0BACH,OAAOF,EAAKG,0BACd,IAAK,mBACH,OAAQH,EAAKG,0BACf,QAIE,OAHAC,QAAQC,IAAI,yBAADnK,OACgB0F,EAAMsE,aAAY,iBAAAhK,OAAgB0F,EAAM1G,KAAI,OAEhE,EAEb,GACF,GAAC,CAAAT,IAAA,0BAAAvB,MAED,WACE,QAASwB,KAAK7C,MAAMuN,WAAWxI,KACjC,GAAC,CAAAnC,IAAA,SAAAvB,MAOD,WAAU,IAADoN,EAAA,KACClD,EAAY1I,KAAKF,MAAjB4I,QAER,OACEtL,EAAAA,cAAA,OAAKC,UAAU,0BACbD,EAAAA,cAAA,QAAM0M,SAAU9J,KAAK8J,SAAUzM,UAAU,yBACtC2C,KAAK6L,kBAAkBxI,KAAI,SAAA6D,GAAK,OAC/B9J,EAAAA,cAAC6J,GAAU,CACTlH,IAAKmH,EAAM1G,KACXN,aAAc0L,EAAKE,cAAc5E,EAAM1G,MACvC7C,SAAU,SAAAa,GAAK,OAAIoN,EAAKG,YAAY7E,EAAM1G,KAAMhC,EAAM,EACtDA,MAAOoN,EAAKzO,MAAMgM,KAAKjC,EAAM1G,MAC7B0G,MAAOA,GACP,IAGJ9J,EAAAA,cAACmH,EAAAA,EAAM,CACLhH,KAAK,SACLC,SAAUkL,EACVrL,UAAU,8BAET2C,KAAKiL,eAKhB,M,gFAAC1C,CAAA,CA5K2B,CAAS7H,EAAAA,WAA1B6H,GACJxG,MAAQ3E,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,UAAUC,eAAe,YA8K/D,IASA,IAAe6C,EAAAA,EAAAA,KATS,SAAA3B,GAAK,MAAK,CAChCuJ,OAAQvJ,EAAM8B,WAAWyH,OACzBF,KAAMrJ,EAAM8B,WAAWuH,KACxB,IAE0B,SAAA6C,GAAQ,MAAK,CACtCjB,WAAY,SAAA5B,GAAI,OAAI6C,GAASjB,EAAAA,EAAAA,IAAW5B,GAAM,EAC/C,GAED,CAGEZ,I,qNCnMF,IAYM0D,GAAW,SAAClE,GAChB,OAAO,IAAImE,SAAQ,SAACC,EAASC,GAC3BC,OAAOC,WAAWC,WAAWC,OAAM,WACjCH,OAAOC,WAAWC,WACfE,QAAQJ,OAAOK,UAAUC,cAAcC,WAAWC,QAAS9E,GAC3DuB,MAAK,SAACwD,GACLX,EAAQW,EACV,IAAE,OACK,SAAC9B,GACNoB,EAAOpB,EACT,GACJ,GACF,GACF,EAEayB,GAAO,e,EAAAvB,G,EAAA6B,IAAAA,MAAG,SAAAC,EAAOjF,GAAwB,IAAA+E,EAAA,OAAAC,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAE9BlB,GAASlE,GAAS,KAAD,EACP,OADxB+E,EAAKG,EAAAG,KACX1B,QAAQC,IAAI,kBAAkBsB,EAAAI,OAAA,SACvBP,GAAK,cAAAG,EAAAC,KAAA,EAAAD,EAAAK,GAAAL,EAAA,SAAAA,EAAAI,OAAA,SAEL,IAAInB,SAAQ,SAACC,EAASC,GAC3B,IAAImB,EAAU,EACRC,EAAWC,aAAY,WACvBF,GApCQ,IAqCVG,cAAcF,GACdpB,EAAMa,EAAAK,KAERrB,GAASlE,GACNuB,MAAK,SAACwD,GACLY,cAAcF,GACdrB,EAAQW,EACV,IAAE,OACK,WACLS,GACF,GACJ,GAAG,IACL,KAAE,yBAAAN,EAAAU,OAAA,GAAAX,EAAA,iB,iLAEL,gBAxBmBY,GAAA,OAAA1C,EAAA7I,MAAA,KAAAC,UAAA,KA0BpB,IACEmK,QAAAA,I,23CCvDwC,IAErBoB,GAAM,SAAA/O,I,uRAAAC,CAAA8O,EAAA/O,GAAA,I,MAAAE,EAAAC,GAAA4O,GACzB,SAAAA,EAAY1Q,GAAQ,IAAD+B,EAKf,O,4FALeC,CAAA,KAAA0O,IACjB3O,EAAAF,EAAAI,KAAA,KAAMjC,IACD2C,MAAQ,CACXgO,eAAgB,KAChBtQ,UAAU,GACV0B,CACJ,CAyGC,O,EAzGA2O,E,EAAA,EAAA9N,IAAA,oBAAAvB,MAED,WACMwB,KAAK7C,MAAM4Q,QACb/N,KAAKgO,qBAAqBhO,KAAK7C,MAAM4Q,OAEzC,GAAC,CAAAhO,IAAA,4BAAAvB,MAED,SAA0ByP,GACpBA,EAASF,SAAW/N,KAAK7C,MAAM4Q,QACjC/N,KAAKgO,qBAAqBC,EAASF,OAEvC,GAAC,CAAAhO,IAAA,uBAAAvB,MAED,SAAqBuP,GACdA,GACLG,KAAAA,OAAc,CAAEH,OAAAA,GAAU/N,KAAKmO,eAAetH,KAAK7G,MACrD,GAAC,CAAAD,IAAA,iBAAAvB,MAED,SAAewM,EAAO8C,GAAiB,IAAD3K,EAAA,KAChC6H,EACEqB,OAAO+B,QACT/B,OAAO+B,OAAOC,iBAAiBrD,GAKnChL,KAAKL,SAAS,CAAEmO,eAAAA,EAAgBtQ,UAAU,IAAS,WAC7C2F,EAAKhG,MAAMmR,QACbnL,EAAKhG,MAAMmR,QAEf,GACF,GAAC,CAAAvO,IAAA,OAAAvB,MAED,WACE,OAAIwB,KAAK7C,MAAMoR,MAAc,QACtB,UACT,GAAC,CAAAxO,IAAA,kBAAAvB,MAED,WACE,IAAA+D,EAAoCvC,KAAK7C,MAAjCgB,EAAMoE,EAANpE,OAAQD,EAAQqE,EAARrE,SAChB,OAD+BqE,EAALgM,MAEjB,CAAEC,KAAM,SAEV,CAAEA,KAAM,WAAYrQ,OAAAA,EAAQD,SAAAA,EACrC,GAAC,CAAA6B,IAAA,SAAAvB,MAED,WAAU,IAAD8M,EAAA,KACDmD,EAAgB,2BAEhBC,EAA2B,+BAE3BC,EAAe,SAAC3D,EAAOG,GACvBkB,OAAO+B,SACLpD,EACFqB,OAAO+B,OAAOC,iBAAiBrD,GAE/BqB,OAAO+B,OAAOQ,eAAezD,GAGnC,EAEA,IACE,IAAM2C,EAAiB9N,KAAKF,MAAMgO,eAE9Be,GAAa,EAEXC,EAAgB,IAAI5C,SAAQ,SAACC,EAASC,GAC1C,IAAK0B,EAEH,OADAa,EAAa,KAAMD,GACZtC,EAAOsC,GAGhBZ,EAAeiB,SAASzD,EAAK0D,mBAAmB,SAAChE,EAAOiE,GACtD,IAAIJ,EAOJ,OAAI7D,GACF2D,EAAa3D,GACNoB,EAAOpB,SAEhBmB,EAAQ8C,GAVNN,EACE3D,EAAM,GAADxJ,OACFiN,EAAa,sDAStB,GACF,IAEMS,EAAiB,IAAIhD,SAAQ,SAACxI,EAAG0I,GACrC+C,YAAW,WACTN,GAAa,EACbzC,EAAOqC,EACT,GAAG,KACL,IAEA,OAAOvC,QAAQkD,KAAK,CAACN,EAAeI,GACtC,CAAE,MAAOG,GAEP,OADAV,EAAaU,GACNnD,QAAQE,OAlDO,4BAmDxB,CACF,GAAC,CAAArM,IAAA,SAAAvB,MAED,WACE,OAAO,IACT,I,mFAACqP,CAAA,CAhHwB,CAASnN,EAAAA,W,ylGCGE,IAEhC4O,GAAmB,SAAAxQ,I,uRAAAC,CAAAuQ,EAAAxQ,GAAA,I,MAAAE,EAAAC,GAAAqQ,GACvB,SAAAA,EAAYnS,GAAQ,IAAD+B,G,4FAAAC,CAAA,KAAAmQ,IACjBpQ,EAAAF,EAAAI,KAAA,KAAMjC,IAkDRoS,sBAAwB,WAAkB,IAAjBC,EAAMlN,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjCpD,EAAKS,SACH,CACE8P,OAAQD,EAAOC,QAAUvQ,EAAKY,MAAM2P,OACpCnF,OAAQkF,EAAOlF,QAAUpL,EAAKY,MAAMwK,SAEtC,WACE,OAAIpL,EAAKY,MAAM4P,aACNxQ,EAAKyQ,WAGVzQ,EAAK/B,MAAM4Q,OACN7O,EAAK0Q,mBAAmB1Q,EAAK/B,MAAM4Q,aAD5C,CAGF,GAEJ,EAjEE,IAAM8B,EAAOxD,OAAOK,UAAUoD,KAAKC,cA0CjC,OAzCF7Q,EAAKY,MAAQ,CACX4P,aAAc,KACd3F,OAAQ,CACN9E,QAAQ,EACR+K,gBAAgB,EAChBC,KAAK,GAEPR,OAAQ,CACNhQ,MAAKqE,GAAA,CACHoM,MAAO,OACP,YAAa,QACA,OAATL,GAAiB,CACnB,aAAc,UAGlB,SAAU,CAAEK,MAAO,QACnB,SAAU,CAAEA,MAAO,SAErB5F,OAAQ,CACNrF,OAAQ3G,OAAO6R,OAAO,CACpBC,SAAU,yBACVxK,YAAa1G,EAAK/B,MAAMmI,KAAKO,cAAc,CACzClH,GAAI,2BACJC,eAAgB,kBAGpBqR,IAAK3R,OAAO6R,OAAO,CACjBC,SAAU,iBACVxK,YAAa1G,EAAK/B,MAAMmI,KAAKO,cAAc,CACzClH,GAAI,wBACJC,eAAgB,UAGpBoR,eAAgB1R,OAAO6R,OAAO,CAC5BC,SAAU,6BACVxK,YAAa1G,EAAK/B,MAAMmI,KAAKO,cAAc,CACzClH,GAAI,sCACJC,eAAgB,cAItBM,CACJ,CAuQC,O,EAvQAoQ,E,EAAA,EAAAvP,IAAA,mBAAAvB,MAED,WACE6H,GAAAA,EAAG6D,GAAG,qCAAsClK,KAAKuP,sBACnD,GAAC,CAAAxP,IAAA,oBAAAvB,MAoBD,WACMwB,KAAK7C,MAAM4Q,QACb/N,KAAK4P,mBAAmB5P,KAAK7C,MAAM4Q,QAErC/N,KAAKiK,kBACP,GAAC,CAAAlK,IAAA,4BAAAvB,MAED,SAA0ByP,GACpBA,EAASF,SAAW/N,KAAK7C,MAAM4Q,QAAUE,EAASF,QACpD/N,KAAK4P,mBAAmB3B,EAASF,OAErC,GAAC,CAAAhO,IAAA,uBAAAvB,MAED,WACMwB,KAAKF,MAAM4P,cACb1P,KAAKF,MAAM4P,aAAaC,UAE5B,GAAC,CAAA5P,IAAA,qBAAAvB,MAED,SAAmBuP,GAAS,IAAD5K,EAAA,KACzB+I,QAAQmE,IAAI,CACVC,KAAAA,aAAuBC,OACrB,CACExC,OAAQA,EACRyC,QAAS,IAEX,SAAC7F,EAAK8F,GACA9F,EACE0B,OAAO+B,QACT/B,OAAO+B,OAAOC,iBAAiB1D,GAKnCxH,EAAKxD,SAAS,CAAE+Q,QAASD,GAC3B,IAEFf,KAAAA,OACE,CACE3B,OAAAA,EACA0B,OAAQzP,KAAKF,MAAM2P,OACnBnF,OAAQtK,KAAKF,MAAMwK,SAErB,SAACK,EAAKgG,GACJ,GAAIhG,EAKF,OAJI0B,OAAO+B,QACT/B,OAAO+B,OAAOC,iBAAiB1D,QAEjCtE,GAAAA,EAAGC,KAAK,2CAA4CqE,GAGtDtE,GAAAA,EAAGC,KACD,6CACAqK,GAGFxN,EAAKxD,SAAS,CAAE+P,aAAciB,IAAwB,WAChDxN,EAAKhG,MAAMmR,QACbnL,EAAKhG,MAAMmR,QAEf,IAEAqC,EAAqBzG,GAAG,kBAAkB,SAAAxE,GACxC,IAAMwB,EAAQxB,EAAM4E,OAAO5E,EAAMkL,WAC3BC,EAAY,CAAC,EACnBA,EAAUnL,EAAMkL,YAAc1J,EAAM4J,mBACpC3N,EAAKxD,SAAS,CACZoK,OAAQzL,OAAOC,OAAO,CAAC,EAAG4E,EAAKrD,MAAMiK,OAAQ8G,IAEjD,IAEAF,EAAqBzG,GAAG,kBAAkB,SAAAxE,GACb,IAAvBA,EAAMqL,MAAMrM,OACdvB,EAAKxD,SAAS,CAAEqR,SAAUtL,EAAMqL,MAAM,GAAGxT,OAEzC4F,EAAKxD,SAAS,CAAEqR,SAAU,IAE9B,GACF,KAGN,GAAC,CAAAjR,IAAA,WAAAvB,MAED,WAAY,IAAD8M,EAAA,KACT,IAAKtL,KAAKF,MAAM4P,aAAc,OAAO,KACrC1P,KAAKF,MAAM4P,aAAaC,UAAS,kBAC/BrE,EAAKsE,mBAAmBtE,EAAKnO,MAAM4Q,OAAO,GAE9C,GAAC,CAAAhO,IAAA,SAAAvB,MAED,SAAOkH,GAAQ,IAADkG,EAAA,KACRlG,GAAOA,EAAMd,iBACjB,IAAM6B,EAAiBzG,KAAK7C,MAAMgB,OAGlC,OAFA6B,KAAKiR,cAEE,IAAI/E,SAAQ,SAACC,EAASC,GAC3B,IAAKR,EAAK9L,MAAM4P,aAAc,OAAOtD,IAErCR,EAAK9L,MAAM4P,aAAaX,SACtB,CACER,MAAO3C,EAAKzO,MAAM+T,YAEpB,SAAClG,EAAOtJ,GACN,GAAIsJ,EAEF,OADAY,EAAKuF,sBAAsBnG,GACpBoB,EAAOpB,GAEZY,EAAK9L,MAAM4Q,QACb9E,EAAK9L,MAAM4Q,QACRU,WAAW,CACVC,iBAAkB,SAAS3P,EAAMyL,GAC/BA,GACF,EACAmE,MAAO5P,EAAK4P,MACZC,IAAK7P,EAAK8P,QAAQD,IAClBpT,OAAQsI,EACRgL,oBAAoB,IAErBnI,MAAK,SAASC,IAEVA,EAASmI,kBACVnI,EAASoI,wBAGTvF,EADc,CAAEwF,KAAM,QAIxBzF,EAAQ5C,EACV,IAAE,OACK,SAASoB,GACde,QAAQC,IAAIhB,GACZyB,EAAOzB,EACT,KAEFwB,EAAQzK,GACRkK,EAAK+D,WAET,GAEJ,GACF,GAAC,CAAA5P,IAAA,cAAAvB,MAED,WACE,IAAMqS,EAAY,CAAC,EACnBvS,OAAOyI,KAAK/G,KAAKF,MAAMiK,QAAQ8H,SAAQ,SAAA9R,GACrC8Q,EAAU9Q,IAAO,CACnB,IACAC,KAAKL,SAAS,CAAEoK,OAAQ8G,GAC1B,GAAC,CAAA9Q,IAAA,wBAAAvB,MAED,SAAsBwM,GACpB,GAAmB,iCAAfA,EAAM4G,KAAyC,CACjD,IACgDzH,EAD1CJ,EAASzL,OAAOC,OAAO,CAAC,EAAGyB,KAAKF,MAAMiK,QAAQK,EAAAC,GAClCW,EAAMwG,QAAQM,kBAAgB,IAAhD,IAAA1H,EAAAG,MAAAJ,EAAAC,EAAAI,KAAAC,MACEV,EADYI,EAAA3L,QACE,CACf,OAAAmM,GAAAP,EAAA/K,EAAAsL,EAAA,SAAAP,EAAAQ,GAAA,CACD5K,KAAKL,SAAS,CAAEoK,OAAQA,GAC1B,CACF,GAAC,CAAAhK,IAAA,mBAAAvB,MAED,WAWE,MAVc,CACZ,cAAe,oBACfuT,IAAK,YACL,mBAAoB,aACpBC,SAAU,iBACV,cAAe,mBACfC,KAAM,aACN,oBAAqB,qBARA3P,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAG,oBAY5B,GAAC,CAAAvC,IAAA,SAAAvB,MAED,WAAU,IAAD0T,EACDC,EAAS,sBACTC,EAAa9U,KAAU+N,GAAA6G,EAAA,GAC1BC,GAAS,GAAI9G,GAAA6G,EAAC,GAAD1Q,OACV2Q,EAAM,YAAanS,KAAK7C,MAAMkV,UAAQH,IAE5C,OACE9U,EAAAA,cAAA,OAAKC,UAAW+U,GACdhV,EAAAA,cAAA,QACEuB,GAAG,+BACHtB,UAAU,4BACVwL,OAAO,OACPiB,SAAU9J,KAAKsS,QAEflV,EAAAA,cAAA,OACEuB,GAAG,wBACHtB,UAAU,sEAET,KAEHD,EAAAA,cAAA,QACEmD,IAAI,YACJlD,UACE,4CACA2C,KAAKuS,iBAAiBvS,KAAKF,MAAMkR,YAGpChR,KAAKF,MAAMiK,OAAO9E,QAAUjF,KAAKwS,YAAY,UAC9CpV,EAAAA,cAAA,OAAKC,UAAU,qCACbD,EAAAA,cAAA,OACEuB,GAAG,gBACHtB,UAAU,+DAEZD,EAAAA,cAAA,OACEuB,GAAG,4BACHtB,UAAU,4EAGb2C,KAAKF,MAAMiK,OAAOkG,KACjBjQ,KAAKwS,YAAY,MAAO,4CACzBxS,KAAKF,MAAMiK,OAAOiG,gBACjBhQ,KAAKwS,YACH,aACA,8CAGNpV,EAAAA,cAAA,OAAKC,UAAU,YAAW,KAGhC,GAAC,CAAA0C,IAAA,cAAAvB,MAED,SAAY0I,GAAwB,IAAjB7J,EAASiF,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAG,GAC7B,OACElF,EAAAA,cAAA,OAAKC,UAAS,4CAAAmE,OAA8CnE,IAC1DD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAE,0BAAA6C,OAA4B0F,GAC9BtI,eAAc,GAAA4C,OAAK0F,EAAK,uBACxB,OAEF9J,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,0BACHC,eAAe,wCAIvB,I,mFAAC0Q,CAAA,CArTsB,CAAS5O,EAAAA,WAwTlC,IAAeuF,EAAAA,EAAAA,IAAWqJ,GAAqB,CAAEmD,SAAS,IC9T3C,SAASC,GAAqBvV,GAC3C,OACEC,EAAAA,cAAA,OAAKC,UAAU,wBACbD,EAAAA,cAAA,KAAGC,UAAU,iDACZF,EAAMS,SAGb,C,o2CCFO,IAAM+U,GAAoB,SAAAC,I,uRAAA7T,CAAA4T,EAAAC,GAAA,I,MAAA5T,EAAAC,GAAA0T,GAAA,SAAAA,IAAA,O,4FAAAxT,CAAA,KAAAwT,GAAA3T,EAAAqD,MAAA,KAAAC,UAAA,CA2D9B,O,EA3D8BqQ,G,EAAA,EAAA5S,IAAA,oBAAAvB,MAC/B,WACE,SAAIwB,KAAK7C,MAAM0V,iBAAoB7S,KAAK7C,MAAM2V,mBAC1C9S,KAAK7C,MAAM0V,eAEjB,GAAC,CAAA9S,IAAA,SAAAvB,MAED,WACE,IAAA+D,EAOIvC,KAAK7C,MANPK,EAAQ+E,EAAR/E,SACAuV,EAAkBxQ,EAAlBwQ,mBACApV,EAAQ4E,EAAR5E,SACAO,EAAQqE,EAARrE,SACA8U,EAAYzQ,EAAZyQ,aACAC,EAAiB1Q,EAAjB0Q,kBAGIC,EAAuBF,EAAazH,QAAO,SAAA4H,GAC/C,OAAQA,GACN,IAAK,SACH,QAAsB,QAAbjV,GACX,IAAK,QACH,OAAO+U,EAAkBG,SAAS,SACpC,QACE,OAAO,EAEb,IAEA,OACEhW,EAAAA,cAAA,OAAKC,UAAU,yCACbD,EAAAA,cAACsV,GAAoB,KACnBtV,EAAAA,cAAA,QAAMC,UAAU,gCACdD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,iCACHC,eAAe,oBAIlBsU,EAAqB7P,KAAI,SAAC8P,EAAa1N,GACtC,OACErI,EAAAA,cAAA,OAAKC,UAAWC,IAAW,gBAAiB6V,GAAcpT,IAAK0F,GAC7DrI,EAAAA,cAAA,aACEA,EAAAA,cAAA,SACEI,SAAUA,EACVD,KAAK,QACLE,QAASsV,IAAuBI,EAChCxV,SAAU,SAAA0B,GAAC,OAAI1B,EAASwV,EAAY,IAEtC/V,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAE,8BAAA6C,OAAgC2R,GAClCvU,eAAe,4BAKzB,KAIR,M,gFAAC+T,CAAA,CA3D8B,CAASU,EAAAA,eA6E1C,IAAe5R,EAAAA,EAAAA,KAfS,SAAA3B,GAAK,MAAK,CAChC+S,gBAAiB/S,EAAM8B,WAAWiR,gBAClCG,aAAclT,EAAM8B,WAAWoR,aAC/BC,kBAAmBnT,EAAM8B,WAAWqR,kBACpC/B,UAAWpR,EAAM8B,WAAWsP,UAC5B4B,gBAAiBhT,EAAM8B,WAAWkR,gBAClCQ,UAAWxT,EAAM8B,WAAW0R,UAC5BP,mBAAoBjT,EAAM8B,WAAWiR,gBACjC,aACA/S,EAAM8B,WAAWmR,mBACrB7U,SAAU4B,EAAM8B,WAAW1D,SAC5B,IAEmB,SAAA8N,GAAQ,MAAK,CAAC,CAAC,GAEnC,CAAqD2G,ICpF9C,SAASY,GAAaC,GAC3B,IAAKA,EAAU,MAAO,IACtB,IAAIC,EAAgBD,EAASE,MAAM,KACnC,OAA6B,IAAzBD,EAAc/O,OAAqB8O,EACV,IAAzBC,EAAc/O,OACT+O,EAAc,GAEdA,EACJE,MAAM,EAAGtS,KAAKuS,MAAMH,EAAc/O,OAAS,IAC3CmP,KAAK,IAEZ,CAEO,SAASC,GAAYN,GAC1B,IAAKA,GAA2C,IAA/BA,EAASE,MAAM,KAAKhP,OAAc,MAAO,IAE1D,IAAI+O,EAAgBD,EAASE,MAAM,KAEnC,OAA6B,IAAzBD,EAAc/O,OACT+O,EAAc,GAEdA,EACJE,MAAMtS,KAAKuS,MAAMH,EAAc/O,OAAS,GAAI+O,EAAc/O,QAC1DmP,KAAK,IAEZ,C,0HCvBO,IAAME,GAAmB,e,EAAAC,G,EAAAjH,IAAAA,MAAG,SAAAC,EAAA9B,GAAA,IAAA+I,EAAAC,EAAAC,EAAAC,EAAAxL,EAAAlH,EAAAyR,EAAAkB,EAAAlW,EAAAD,EAAAsC,EAAA8T,EAAAC,EAAAC,EAAA,OAAAzH,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OA2ChC,OA1CDiH,EAAoBlJ,EAApBkJ,qBACAxL,EAAMsC,EAANtC,OACAlH,EAAIwJ,EAAJxJ,KACAyR,EAAWjI,EAAXiI,YAEQkB,EAA2B3S,EAA3B2S,KAAMlW,EAAqBuD,EAArBvD,OAAQD,EAAawD,EAAbxD,SACdsC,EAAkB6T,EAAlB7T,KAAM8T,EAAYD,EAAZC,QAERC,EAAO,CACXpB,YAAAA,EACAhV,OAAQA,EAAOsW,QAAQ,GACvBC,SAAU,CAERC,KACQ,QAANV,EAAA5H,cAAM,IAAA4H,GAAW,QAAXC,EAAND,EAAQvH,iBAAS,IAAAwH,GAAM,QAANC,EAAjBD,EAAmBpE,YAAI,IAAAqE,OAAjB,EAANA,EAAyBS,gBAAa,GAAApT,OACnC6K,OAAOwI,SAASC,KAAI,cACzB7J,WAAY,oBAEd8J,aAAc7W,EACd8W,YAAaV,EACbW,uBAAwBX,EACxBY,UAAW3B,GAAa/S,GACxB2U,QAASrB,GAAYtT,GACrB4U,QAAS,CACPJ,YAAaV,GAEfe,eAAgB,SAASC,EAAWC,GAClC,IACMtG,EAAU,CACduG,UAFoBF,EAAdE,UAGN9T,KAAAA,GAGF+T,EAAEC,KAAK,gCAADlU,OAC4BoH,EAAM,8BACtCqG,GACA3F,MAAK,SAAAkL,GACL9I,QAAQC,IAAI,qBACd,IAEA4J,GACF,GACDtI,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAGoBiH,EAAqBuB,aAAapB,GAAM,KAAD,EAAhD,OAAJC,EAAIvH,EAAAG,KAAAH,EAAAI,OAAA,SACHmH,EAAKlD,OAAK,QAAArE,EAAAC,KAAA,GAAAD,EAAAK,GAAAL,EAAA,SAEbZ,OAAO+B,QACT/B,OAAO+B,OAAOC,iBAAgBpB,EAAAK,IAEhC5B,QAAQC,IAAI,qBAAoBsB,EAAAK,IAAK,yBAAAL,EAAAU,OAAA,GAAAX,EAAA,kB,iLAExC,gBAtD+BY,GAAA,OAAAoG,EAAA3R,MAAA,KAAAC,UAAA,K,wBCKhC,YAAenF,GACb,IAAIyY,EAAW,2BACX3K,EAAa,4BAgBjB,OAfI9N,EAAM+T,WAA2B,aAAd/T,EAAMqD,QACvBrD,EAAM0Y,QACRD,EAAW,6BACX3K,EAAa,2BAEb2K,EAAW,gCACX3K,EAAa,4BAIb9N,EAAM2Y,iBACRF,EAAW,2BACX3K,EAAa,mBAIb7N,EAAAA,cAACmH,EAAAA,EAAM,CACLlH,UAAU,eACVmD,KAAMrD,EAAMqD,KACZ7B,GAAIxB,EAAMqD,KACVH,QAASlD,EAAMkD,QACf7C,SAAUL,EAAMK,SAChBuY,MAAO5Y,EAAM4Y,OAEb3Y,EAAAA,cAAC4Y,GAAAA,EAAc,CAACvX,WAAYtB,EAAM+G,aAAc,GAC7B,cAAhB/G,EAAM4Y,OACL3Y,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,QAAMC,UAAU,eAChBD,EAAAA,cAAAA,EAAAA,SAAA,KAAE,SAGNA,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAIiX,EACJhX,eAAgBqM,EAChBtE,OAAQ,CACNxI,OACEf,EAAAA,cAACa,EAAAA,EAAc,CACbE,OAAQhB,EAAMgB,QAAU,EACxBD,SAAUf,EAAMe,eAQ/B,ECxCD,GAb0B,SAAAf,GACxB,IAAME,EAAYF,EAAME,WAAa,oBAErC,OACED,EAAAA,cAAA,KAAGC,UAAWA,GACZD,EAAAA,cAAC6Y,EAAAA,GAAoB,CACnBtX,GAAG,0BACHC,eAAe,kGAIvB,E,uBCEA,GAbgC,SAAAzB,GAC9B,IAAME,EAAYF,EAAME,WAAa,oBAErC,OACED,EAAAA,cAAA,KAAGC,UAAWA,GACZD,EAAAA,cAAC6Y,EAAAA,GAAoB,CACnBtX,GAAG,uCACHC,eAAe,wIAIvB,ECXA,YAAesM,GAAA,IAAGgL,EAAahL,EAAbgL,cAAezY,EAAOyN,EAAPzN,QAASE,EAAQuN,EAARvN,SAAQ,OAChDP,EAAAA,cAAA,OAAKuB,GAAE,iBAAA6C,OAAmB0U,EAAcvX,IAAMtB,UAAU,iBACtDD,EAAAA,cAAA,aACGO,GACCP,EAAAA,cAAA,SACEG,KAAK,QACLE,QAASA,EACTE,SAAU,SAAA0B,GACJA,EAAEyF,OAAOrH,SAA+B,oBAAbE,GAC7BA,EAASuY,EAEb,IAGJ9Y,EAAAA,cAACsB,EAAAA,GAKP,SAA2BwX,GACzB,IAAM3Y,EAAO2Y,EAAcC,gBAC3B,GAAa,gBAAT5Y,EACF,MAAO,CACLoB,GAAI,iDACJC,eAAgB,2CAChB+H,OAAQ,CACNyP,UAAWF,EAAcE,UACzBC,iBAAkBH,EAAcI,SAKtC,GAAa,mBAAT/Y,EACF,MAAO,CACLoB,GAAI,4CACJC,eAAgB,mBAChB+H,OAAQ,CAAEzE,MAAOgU,EAAchU,QAInC,MAAO,CACLvD,GAAI,qCACJC,eAAgB,iBAEpB,CA9B4B2X,CAAkBL,KAG7C,E,gBCjBM,SAASM,GAAgB5E,GAC9B,IAAI7H,EAAS,GACb,OAAQ6H,GACN,IAAK,GACL,UAAKjN,EACH,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACHoF,EAAS,CAAC3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,oCAC/B,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACHoL,EAAS,CAAC3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,qCAC/B,MACF,IAAK,OACHoL,EAAS,CACP3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,kCACrBvB,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,0BAEvB,MACF,IAAK,OACHoL,EAAS,CACP3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,4BACrBvB,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,0BAEvB,MACF,IAAK,OACHoL,EAAS,CACP3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,4CAEvB,MACF,QACEoL,EAAS,CAAC3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,8BAInC,OAAOoL,CACT,C,u2ECxBA,IAAMjM,GAAQ,CACZyD,MAAO,OACPkV,QAAS,IAGEC,GAAe,SAAA5X,I,uRAAAC,CAAA2X,EAAA5X,GAAA,I,MA2FzB6X,EAxCAC,EAnDyB5X,EAAAC,GAAAyX,GAC1B,SAAAA,EAAYvZ,GAAQ,IAAD+B,EAkBf,O,4FAlBeC,CAAA,KAAAuX,IACjBxX,EAAAF,EAAAI,KAAA,KAAMjC,IAED2C,MAAQ,CACX+W,qBAAsB1Z,EAAM2Z,eACxB3Z,EAAM2Z,eAAe,GACrB,KACJ5S,YAAY,EACZ6S,WAAW,EACXjB,gBAAgB,EAChBkB,iBAAkB,KAClBC,eAAe,EACfC,KAAM,KACNC,OAAQ,KACRC,kBAAkB,EAClBC,cAAe,GACfC,YAAa,GACbvN,OAAQ,IACR7K,CACJ,CAyUC,O,EAzUAwX,E,EAAA,EAAA3W,IAAA,gBAAAvB,MAED,SAAcyD,EAAQyI,GACpB,OAAIzI,EACI,GAANT,OAAUS,EAAOuR,SAAQ,KAChB9I,GAAcA,EAAWzI,OAC5B,GAANT,OAAUkJ,EAAWzI,OAAOzB,KAAI,KAEzB,IAEX,GAAC,CAAAT,IAAA,eAAAvB,MAED,WACE,OAAKwB,KAAKF,MAAM+W,qBAET,CACLU,QAAS,CACPrZ,SAAU8B,KAAK7C,MAAMyE,WAAW1D,SAChCC,OAAQ6B,KAAK7C,MAAMqa,uBACnBtG,UAAWlR,KAAK7C,MAAMyE,WAAWsP,UACjCuG,kBAAmBzX,KAAKF,MAAM+W,qBAAqBlY,IAErD0V,KAAIvQ,GAAAA,GAAA,CACFsF,QAASpJ,KAAK7C,MAAMyE,WAAWyH,QAE5BrJ,KAAK7C,MAAMyE,WAAW8I,YAEtB1K,KAAK7C,MAAMyE,WAAWuH,MAE3BuO,gBAAiB1X,KAAKF,MAAMsX,kBAhBe,IAkB/C,GAAC,CAAArX,IAAA,YAAAvB,OAAAoY,EAAAe,GAAA5K,IAAAA,MAED,SAAAC,EAAgBtL,GAAI,IAAAkW,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA7X,EAAAoF,EAAAwF,EAAAkN,EAAAC,EAAAC,EAAAnV,EAAA,YAAA4J,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAmCjB,OAlCK+K,EAAelY,KAAKkY,eAC1B7R,GAAAA,EAAGC,KACD,gCAA+BxC,GAAAA,GAAA,GAEd,OAAZoU,QAAY,IAAZA,OAAY,EAAZA,EAAcX,SAAO,IACxBgB,iBAAiD,QAAjCX,EAAE5X,KAAKF,MAAM+W,4BAAoB,IAAAe,OAAA,EAA/BA,EAAiCzB,kBAErDnW,KAAK7C,MAAMqb,UAEbnS,GAAAA,EAAGC,KAAK,iCAAkC5E,EAAM1B,KAAK7C,MAAMqb,UAGzDL,EADEnY,KAAK7C,MAAMyE,WAAWsP,UACTlR,KAAK7C,MAAM0Y,OAAS,SAAW,UAE/B,WAGXvV,EAAK,cAAAkB,OAAiB2W,EAAY,uBAClCzS,EAAK,cAAAlE,OAAiB2W,EAAY,0BAExC9R,GAAAA,EAAGC,KAAKZ,EAAOpF,GAAO4K,GAGI,QAAxB2M,EAAAxL,OAAOK,UAAU+L,eAAO,IAAAZ,GAAY,QAAZC,EAAxBD,EAA0BjW,kBAAU,IAAAkW,GAAS,QAATC,EAApCD,EAAA,eAA6C,IAAAC,GAAQ,QAARC,EAA7CD,EAA+CvI,cAAM,IAAAwI,GAAY,QAAZC,EAArDD,EAAuDpW,kBAAU,IAAAqW,OAAzC,EAAxBA,EACIS,qBAAsB,CAAC,EAFrBN,EAAQlN,EAARkN,SAAUC,EAAMnN,EAANmN,OAGZC,EAA0B,WAC9BjS,GAAAA,EAAGC,KAAK,GAAD9E,OAAIkE,EAAK,kBAAkB,CAChCpF,MAAM,GAADkB,QAAKmX,EAAAA,EAAAA,WAAUP,GAAS,mCAC7Bja,OAAQgF,EAAKhG,MAAMyE,WAAW6E,gBAElC,GAEe,IAAX4R,GACFC,IACDrL,EAAAI,OAAA,SAEM3L,GAAI,yBAAAuL,EAAAU,OAAA,GAAAX,EAAA,UACZ,SAAAY,GAAA,OAAAgJ,EAAAvU,MAAA,KAAAC,UAAA,KAAAvC,IAAA,YAAAvB,OAAAmY,EAAAgB,GAAA5K,IAAAA,MAED,SAAA6L,EAAgBC,GAAM,OAAA9L,IAAAA,MAAA,SAAA+L,GAAA,cAAAA,EAAA5L,KAAA4L,EAAA3L,MAAA,OAeiD,OAdrEnN,KAAKL,SAAS,CACZuE,YAAY,EACZ6S,YAAW8B,EAAOE,cACdF,EAAOE,aAAaC,qBAExB3B,cAAewB,EAAOE,aAAa5N,QACnCmM,YAAauB,EAAOE,aAAaE,UACjClP,OAAQyM,GAAgBqC,EAAOE,aAAaE,WAC5C7B,oBACEyB,EAAOE,eAAgBF,EAAOE,aAAaC,uBACvCH,EAAOE,aAAaC,uBAG5BhZ,KAAK7C,MAAM+b,eAAc,GACzB7S,GAAAA,EAAGC,KAAK,+BAAgCuS,EAAQ7Y,KAAK7C,MAAMqb,UAAUM,EAAAzL,OAAA,SAC9DwL,GAAM,wBAAAC,EAAAnL,OAAA,GAAAiL,EAAA,UACd,SAAAO,GAAA,OAAAxC,EAAAtU,MAAA,KAAAC,UAAA,KAAAvC,IAAA,sBAAAvB,MAED,WACE6H,GAAAA,EAAG+S,eAAe,8BAA+BpZ,KAAKsS,OAAQtS,KAChE,GAAC,CAAAD,IAAA,gBAAAvB,MAED,SAAca,GACZ,IAAMga,EAAuC,cAAzBha,EAAEC,cAAckB,KACpCR,KAAK7C,MAAMmc,aAAaD,GACxBhT,GAAAA,EAAG6D,GAAG,8BAA+BlK,KAAKsS,OAAQtS,KACpD,GAAC,CAAAD,IAAA,SAAAvB,MAED,WACE,IAAMkD,EAAO1B,KAAKkY,eAEdxW,IAC0B,GAAxBA,EAAKgW,wBAAiChW,EAAKgW,gBAC/CrR,GAAAA,EAAGC,KACD,mCACA5E,EAAK6V,QACLvX,KAAK7C,MAAMqb,UAEbxY,KAAKL,SAAS,CAAEuE,YAAY,IAC5BlE,KAAK7C,MAAM+b,eAAc,GACzBzD,KAAAA,KAAO,gCAADjU,OAC4BxB,KAAK7C,MAAM2S,KAAKnR,GAAE,cAClD+C,GACA4H,KAAKtJ,KAAKuZ,UAAU1S,KAAK7G,MAAOA,KAAKwZ,UAAU3S,KAAK7G,QAExDA,KAAKyZ,qBACP,GAAC,CAAA1Z,IAAA,sBAAAvB,MAED,SAAoB0X,GAClBlW,KAAKL,SAAS,CAAEkX,qBAAsBX,GACxC,GAAC,CAAAnW,IAAA,2BAAAvB,MAED,SAAyB0X,GAAgB,IAAD5K,EAAA,KACtC,OACElO,EAAAA,cAAA,OAAKC,UAAU,yCACbD,EAAAA,cAAA,SACEG,KAAK,QACLE,QAASuC,KAAKF,MAAM+W,uBAAyBX,EAC7CvY,SAAU,kBAAM2N,EAAKoO,oBAAoBxD,EAAc,IAEzD9Y,EAAAA,cAACuc,GAAiB,CAACzD,cAAeA,IAGxC,GAAC,CAAAnW,IAAA,eAAAvB,MAED,WACE,IAAMob,EAAO5Z,KAAKF,MAAM+W,qBACxB,OAAK+C,EAEHxc,EAAAA,cAACsV,GAAoB,KACnBtV,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAACuc,GAAiB,CAACzD,cAAe0D,MAJtB,IAQpB,GAAC,CAAA7Z,IAAA,gBAAAvB,MAED,WAAiB,IAADoN,EAAA,KACd,OACExO,EAAAA,cAACsV,GAAoB,KACnBtV,EAAAA,cAAA,QAAMC,UAAU,2BACdD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,qCACHC,eAAe,mCAIlBoB,KAAK7C,MAAM2Z,eAAezT,KAAI,SAAA6S,GAAa,OAC1C9Y,EAAAA,cAACuc,GAAiB,CAChB5Z,IAAKmW,EAAcvX,GACnBuX,cAAeA,EACfzY,QAASmO,EAAK9L,MAAM+W,uBAAyBX,EAC7CvY,SAAU,kBAAMiO,EAAK8N,oBAAoBxD,EAAc,GACvD,IAIV,GAAC,CAAAnW,IAAA,oBAAAvB,MAED,WACEwB,KAAKL,SAAS,CACZuX,KAAMlX,KAAK7C,MAAMuE,KAAKwV,KACtBC,OAAQnX,KAAK7C,MAAMuE,KAAKyV,OACxBH,iBAAkBhX,KAAK7C,MAAMuE,KAAKsV,iBAClCC,cAAejX,KAAK7C,MAAMuE,KAAKuV,cAC/BnB,eAAgB9V,KAAK7C,MAAMuE,KAAKoU,gBAEpC,GAAC,CAAA/V,IAAA,SAAAvB,MAED,WAAU,IAADqb,EAAA,KACP,OAAK7Z,KAAK7C,MAAM2Z,eAAepS,QAAU1E,KAAK7C,MAAM2c,OAAe,KAGjE1c,EAAAA,cAAA,OAAKC,UAAU,mBACbD,EAAAA,cAAC6G,EAAM,CAACV,YAAY1C,EAAAA,EAAAA,SAAQb,KAAKF,MAAMiK,SACrC3M,EAAAA,cAAA,OAAKC,UAAU,0BACbD,EAAAA,cAAA,OAAKC,UAAU,+BACbD,EAAAA,cAAA,QAAMC,UAAU,+BAChBD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,yBACHC,eAAe,iCAGlBoB,KAAKF,MAAMiK,OAAO1G,KAAI,SAAChE,EAAGoG,GACzB,OACErI,EAAAA,cAAA,OAAK2C,IAAK0F,EAAGpI,UAAU,gCACpBgC,EAGP,MAGJjC,EAAAA,cAAA,OAAKC,UAAU,oCACyB,IAArC2C,KAAK7C,MAAM2Z,eAAepS,OACvB1E,KAAK+Z,eACL/Z,KAAKga,gBACT5c,EAAAA,cAAA,KACEC,UAAU,0BACVgD,QAAS,kBAAMwZ,EAAK1c,MAAM8c,QAAQ,GAElC7c,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,yCACHC,eAAe,0BAKpB,EAgCDxB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAK7C,MAAM+c,kBAC5B9c,EAAAA,cAAC+c,GAAY,CACXjc,SAAU8B,KAAK7C,MAAMyE,WAAW1D,SAChCC,OAAQ6B,KAAK7C,MAAMyE,WAAW6E,gBAAkB,EAChDjG,KAAK,WACL0Q,WAAW,EACXhN,WAAYlE,KAAKF,MAAMoE,WACvB4R,eAAgB9V,KAAKF,MAAMgW,eAC3BtY,UACGwC,KAAKF,MAAM+W,sBAAwB7W,KAAKF,MAAMoE,WAEjD7D,QAAS,SAAAhB,GAAC,OAAIwa,EAAKO,cAAc/a,EAAE,EACnC0W,MAAM,aAGV3Y,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAK7C,MAAMkd,mBAC5Bjd,EAAAA,cAAC+c,GAAY,CACXjc,SAAU8B,KAAK7C,MAAMyE,WAAW1D,SAChCC,OAAQ6B,KAAK7C,MAAMyE,WAAW6E,gBAAkB,EAChDyK,WAAW,EACX1Q,KAAK,YACLsV,eAAgB9V,KAAKF,MAAMgW,eAC3BD,OAAQ7V,KAAK7C,MAAM0Y,OACnB3R,WAAYlE,KAAKF,MAAMoE,WACvB1G,UACGwC,KAAKF,MAAM+W,sBAAwB7W,KAAKF,MAAMoE,WAEjD7D,QAAS,SAAAhB,GAAC,OAAIwa,EAAKO,cAAc/a,EAAE,EACnC0W,MAAO,cAKb3Y,EAAAA,cAACkd,GAAAA,EAAK,CACJC,KAAMva,KAAKF,MAAMiX,UACjByD,sBAAoB,EACpBC,aAAc3c,GACd4c,QAAS,WACPb,EAAKla,SAAS,CACZyX,kBAAkB,EAClBL,WAAW,GAEf,GAEA3Z,EAAAA,cAAA,OAAKC,UAAU,kCACbD,EAAAA,cAAA,OAAKC,UAAU,0CACZ2C,KAAKF,MAAMuX,eAEdja,EAAAA,cAACmH,EAAAA,EAAM,CACLlH,UAAU,yCACVgD,QAAS,kBAAMwZ,EAAKvH,QAAQ,GAE5BlV,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,0BACHC,eAAe,SAGnBxB,EAAAA,cAACmH,EAAAA,EAAM,CACLlH,UAAU,0CACVgD,QAAS,WACPwZ,EAAKla,SAAS,CACZyX,kBAAkB,EAClBL,WAAW,GAEf,GAEA3Z,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,2BACHC,eAAe,qBAO7B,I,mFAAC8X,CAAA,CA7VyB,CAAShW,EAAAA,WAiXrC,IAAee,EAAAA,EAAAA,KAjBS,SAAA3B,GAAK,MAAK,CAChCgX,eAAgBhX,EAAMgX,eACtBlV,WAAY9B,EAAM8B,WAClBkO,KAAMhQ,EAAMgQ,KACZ0I,SAAU,CACRmC,aAAc7a,EAAM8B,WAAW+Y,aAC/B1Y,OAAM6B,GAAAA,GAAA,GACDhE,EAAM8B,WAAW8I,YACjB5K,EAAM8B,WAAWuH,OAGzB,IAE0B,SAAA6C,GAAQ,MAAK,CACtCsN,aAAc,SAAA9a,GAAK,OAAIwN,GAASsN,EAAAA,EAAAA,IAAa9a,GAAO,EACrD,GAED,CAA4DkY,I,6qEClW5D,IAGMkE,GAA0B,CAAC,SAEpBC,GAAO,SAAA/b,I,uRAAAC,CAAA8b,EAAA/b,GAAA,I,MAAAE,EAAAC,GAAA4b,GAGlB,SAAAA,EAAY1d,GAAQ,IAAD2d,EAAA5b,EAwBf,O,4FAxBeC,CAAA,KAAA0b,IACjB3b,EAAAF,EAAAI,KAAA,KAAMjC,IAoDR4d,sBAAwB,WACtB,IAAMC,EAAU3O,OAAOK,UAAUuO,gBAAgBC,UAC3C5G,EAAUpV,EAAK/B,MAAMyE,WAAWuH,KAAKmL,QACrCxB,GAAkBqI,EAAAA,GAAAA,GAAuB,CAAE7G,QAASA,IACpDzE,EAAOxD,OAAOK,UAAUoD,KAAKC,cAEnC,GAAIiL,EAAQ9D,MAAQhY,EAAK/B,MAAMyE,WAAWsP,WAAqB,MAARrB,EACrD,GAAIiD,EACF5T,EAAKkc,kBAAkB,kBAClB,CAEL,IAAMjI,EAAsC,QAAxBjU,EAAK/B,MAAMe,SAAqB,OAAS,SAC7DgB,EAAKkc,kBAAkBjI,EACzB,CAEJ,EAACjU,EAEDmc,kBAAoB,WAClB5F,KAAAA,IA9EF6F,qFA+EuB,sBAAA9Z,OAAyBtC,EAAK/B,MAAMoe,oBAEtD9Q,MAAK,SAAA/I,GACJ8Z,KAAAA,OACE,CAAEC,cAAe/Z,EAAKoL,QACtB,SAAC9B,EAAO+C,GACNuC,KAAAA,aAAuBC,OACrB,CACExC,OAAQA,EACRwN,kBAAmBrc,EAAK/B,MAAMoe,oBAEhC,SAACG,EAAiBtH,GAChBlV,EAAKS,SAAS,CACZyU,qBAAAA,GAEJ,IAGFuH,KAAAA,OACE,CACE5N,OAAAA,EACA6N,OAAO,EACP1N,QAAQ,IAEV,SAACvD,EAAKkR,GACJ,GAAIlR,EACF,OAAOzL,EAAKS,SAAS,CAAEoO,OAAAA,EAAQrF,SAAS,IAG1C,IAAMoT,EAAaD,EAAcC,WACjC5c,EAAKS,SAAS,CACZoO,OAAAA,EACA+N,WAAY7S,KAAK8S,MAAMD,GACvBpT,SAAS,GAEb,GAEJ,GAEJ,IACCsT,MAAK,SAAAnS,GACJ6B,QAAQuQ,KAAK,kCACf,GACJ,EAAC/c,EA6FDsY,uBAAyB,WACvB,QACItY,EAAKY,MAAMgW,gBAAkB5W,EAAK/B,MAAM0Y,OACC,EAAvC3W,EAAK/B,MAAMyE,WAAW6E,eACtBvH,EAAK/B,MAAMyE,WAAW6E,iBAAmB,CAEjD,EAACvH,EAiGDgd,YAAc,SAAAxW,GACZ,GAAsC,eAAlCxG,EAAK/B,MAAM4V,mBAAf,CAIA,IAAMoJ,EAAWjd,EAAKid,WACtBjd,EAAK/B,MAAM+b,eAAc,GACrBiD,GAAYA,EAAS7J,OACvB6J,EAAS7J,SAAShJ,MAChB,SAAA8S,GAAO,OAAIld,EAAKoT,OAAO8J,EAAQ,IAC/B,SAAAvD,GAAM,OAAI3Z,EAAKmd,QAAQxD,EAAO,IAGhC3Z,EAAKoT,SAEPpT,EAAKod,iCAXL,MAFEpd,EAAKqd,kBAcT,EAACrd,EAEDoT,OAAM,e,EAAApH,G,EAAA6B,IAAAA,MAAG,SAAAC,EAAMtL,GAAI,IAAA8a,EAAAlL,EAAAmL,EAAAC,EAAAzN,EAAA,OAAAlC,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAGf,IAFmByN,GAAwBxH,SAC3ClU,EAAK/B,MAAM4V,oBAGI,CAAD9F,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACM4G,GAAoB,CACtCK,qBAAsBlV,EAAKY,MAAMsU,qBACjC1S,KAAMxC,EAAKyd,eACX/T,OAAQ1J,EAAK/B,MAAM2S,KAAKnR,GACxBwU,YAAajU,EAAK/B,MAAM4V,qBACvB,KAAD,EALIzB,EAAKrE,EAAAG,KAMX1L,EAAO,CAAE4P,MAAAA,GAAQ,OAGkC,OAA/CmL,EAAgB,UAAAjb,OAAatC,EAAK/B,MAAM2S,KAAKnR,IAAEsO,EAAAE,KAAA,EACvByP,GAAAA,QAAgB,CAAEC,OAAQJ,IAAoB,KAAD,EAArEC,EAAezP,EAAAG,KAEf6B,EAAOnL,GAAAA,GAAA,GACR5E,EAAKyd,gBAAc,IACtBG,qBAAsBpb,EAAK4P,MAC3ByL,YAAa7d,EAAKY,MAAMgc,WACxB3E,OAAQ9K,OAAOK,UAAUuO,gBAAgBC,UAAU/D,OACnDuF,gBAAAA,EACAD,iBAAAA,IACyB,QAArBD,EAAA9a,EAAKsb,wBAAgB,IAAAR,OAAA,EAArBA,EAAuBS,+BAA4BnZ,GAAA,CACrDoZ,iBAAkBxb,EAAKsb,iBAAiBC,8BACJ,oBAAhCvb,EAAKsb,iBAAiBG,QACxBzb,EAAKsb,iBAAiBrL,yBACc,QAAnCzS,EAAK/B,MAAMyE,WAAW1D,UACc,QAAnCgB,EAAK/B,MAAMyE,WAAW1D,UACa,QAAnCgB,EAAK/B,MAAMyE,WAAW1D,WAAuB,CAC7Ckf,gBAAgB,KAKxBle,EAAKme,2BAEL5H,KAAAA,KAAO,gCAADjU,OAC4BtC,EAAK/B,MAAM2S,KAAKnR,GAAE,gBAClDsQ,GACA3F,KAAKpK,EAAKqa,UAAWra,EAAKoe,kBAAkB,yBAAArQ,EAAAU,OAAA,GAAAX,EAAA,I,iLAC/C,gBAAAY,GAAA,OAAA1C,EAAA7I,MAAA,KAAAC,UAAA,EA3CK,GA2CLpD,EAEDqa,UAAY,SAAA7X,GAAS,IAADmW,EAAAC,EAAAC,EAAAC,EAAAC,EAwBdE,EAvBJ,GAA0B,oBAAf9L,OAAOkR,IAAoB,CACpC,IAAMC,EACJnR,OAAOK,UAAUuO,gBAAgBhZ,OAAOtD,IAAM8e,KAAAA,IAAW,UAC3DpR,OAAOkR,IACL,QACA,SACA,CACEG,QAASF,EACTG,QAASze,EAAK/B,MAAM2S,KAAKnR,GACzBH,MAAOU,EAAK/B,MAAMyE,WAAW6E,eAC7BvI,SAAUgB,EAAK/B,MAAMyE,WAAW1D,SAChC0f,aAAc1e,EAAK/B,MAAM2S,KAAK/N,MAC9B8b,YAAa,CAAC3e,EAAK/B,MAAM2S,KAAKnR,IAC9Bmf,aAAc,UACdC,mBAAoB,gBACpBC,cAAe9e,EAAK/B,MAAMyE,WAAWsP,UACjC,YACA,iBAEN,CAAE+M,QAAS5R,OAAOK,UAAUuO,gBAAgBiD,WAEhD,CAIE/F,EADEjZ,EAAK/B,MAAMyE,WAAWsP,UACThS,EAAK/B,MAAM0Y,OAAS,SAAW,UAE/B,WAGjB,IAAMvV,EAAK,cAAAkB,OAAiB2W,EAAY,uBAClCzS,EAAK,cAAAlE,OAAiB2W,EAAY,0BAExC9R,GAAAA,EAAGC,KAAKZ,EAAOpF,GAEf,IAkBA0T,GAC0B,QAAxB6D,EAAAxL,OAAOK,UAAU+L,eAAO,IAAAZ,GAAY,QAAZC,EAAxBD,EAA0BjW,kBAAU,IAAAkW,GAAS,QAATC,EAApCD,EAAA,eAA6C,IAAAC,GAAQ,QAARC,EAA7CD,EAA+CvI,cAAM,IAAAwI,GAAY,QAAZC,EAArDD,EAAuDpW,kBAAU,IAAAqW,OAAzC,EAAxBA,EACIS,qBAAsB,CAAC,EAFrBN,EAAQpE,EAARoE,SAAUC,EAAMrE,EAANqE,QAlBa,WAAO,IAAD8F,EAC7BX,GACmC,QAAvCW,EAAA9R,OAAOK,UAAUuO,gBAAgBhZ,cAAM,IAAAkc,OAAA,EAAvCA,EAAyCxf,KAAM8e,KAAAA,IAAW,UAC5DpX,GAAAA,EAAGC,KAAK,iCAAkC5E,EAAMxC,EAAK/B,MAAMqb,UAC3DnS,GAAAA,EAAGC,KACD,gCACA,CACEoX,QAASF,EACTG,QAASze,EAAK/B,MAAM2S,KAAKnR,GACzBH,MAAOU,EAAK/B,MAAMyE,WAAW6E,eAC7BvI,SAAUgB,EAAK/B,MAAMyE,WAAW1D,SAChCqa,iBAAkBrZ,EAAK/B,MAAM4V,mBAC7B7B,UAAWhS,EAAK/B,MAAMyE,WAAWsP,WAEnChS,EAAK/B,MAAMqb,SAEf,CAYA4F,IAEe,IAAX/F,GARFhS,GAAAA,EAAGC,KAAK,GAAD9E,OAAIkE,EAAK,kBAAkB,CAChCpF,MAAM,GAADkB,QAAKmX,EAAAA,EAAAA,WAAUP,GAAS,mCAC7Bja,OAAQe,EAAK/B,MAAMyE,WAAW6E,iBAUlCvH,EAAKS,SAAS,CAAEoK,OAAQ,IAC1B,EAAC7K,EAEDmf,YAAc,SAAAC,GACZ,IACErV,KAAK8S,MAAMuC,EACb,CAAE,MAAAC,GACA,OAAO,CACT,CACA,OAAO,CACT,EAACrf,EAEDmd,QAAU,SAAAxD,GACR,IACEnN,QAAQC,IACN,qBACAzM,EAAK/B,MAAMyE,WAAW1D,SACtBgB,EAAK/B,MAAMoe,mBAEb,IAAMiD,EACJ3F,GACAA,EAAO4F,cACPvf,EAAKmf,YAAYxF,EAAO4F,eACxBxV,KAAK8S,MAAMlD,EAAO4F,cACdC,EAAgBC,SAASC,uBAC7B,2BACA,GAUF,IARGJ,IAAuC,IAAxBA,EAAYpC,WAC3Bvb,EAAAA,EAAAA,SAAQ3B,EAAKY,MAAMiK,UAEpBoF,YAAW,WACTuP,EAAcG,SAAS,EAAG,EAC5B,GAAG,KAELxY,GAAAA,EAAGC,KAAK,+BAAgCuS,EAAQ3Z,EAAK/B,MAAMqb,UACrC,kBAAXK,GAAuBA,EAAOiG,QAAQ,WAAa,EAAG,CAC/D,IAAM/U,EAAS,CACb3M,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,4BACHC,eAAe,0HAGnBM,EAAKS,SAAS,CAAEoK,OAAAA,GAClB,MAAO,GAAqB,yBAAX,OAAN8O,QAAM,IAANA,OAAM,EAANA,EAAQjH,MAAgC,CACjD,IAAM7H,EAAS,CAAC3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,8BACrCO,EAAKS,SAAS,CAAEoK,OAAAA,GAClB,CACA7K,EAAK/B,MAAM+b,eAAc,EAC3B,CAAE,MAAO7J,GACHhD,OAAO+B,QACT/B,OAAO+B,OAAOC,iBAAiBgB,GAEjC,IAAMtF,EAAS,CAAC3M,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,8BACrCO,EAAKS,SAAS,CAAEoK,OAAAA,IAChB7K,EAAK/B,MAAM+b,eAAc,EAC3B,CACF,EAACha,EAEDoe,iBAAmB,SAAA/T,GACjB,IAAIQ,EAMFA,EAJoB,MAApBR,EAAS4T,QACT5T,EAASwP,cACTxP,EAASwP,aAAahP,OAEbR,EAASwP,aAAahP,OAAO1G,KAAI,SAAS2H,GACjD,OAAIA,EAAM4G,KACD4E,GAAgBxL,EAAM4G,MAEtB5G,EAAMG,OAEjB,IAES,CAAC/N,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,8BAEjCO,EAAKS,SAAS,CAAEoK,OAAQA,IACxB7K,EAAKmd,QAAQ9S,EACf,EAxgBErK,EAAKY,MAAQ,CACXiO,OAAQ,KACRqG,qBAAsB,KACtB0H,WAAY,CAAC,EACbpT,SAAS,EACTxE,YAAY,EACZ6a,eAAe,EACfjJ,gBAAgB,EAChBkB,iBAAkB,KAClBgI,YAAa,KACb/H,eAAe,EACfC,KAAM,KACNC,OAAQ,KACR8H,aAAc,CACZC,YAAY,EACZhR,QAAQ,EACRiR,MAAM,GAERpV,OAA0C,QAAlC+Q,EAAAzO,OAAOK,UAAU0S,yBAAiB,IAAAtE,GAAlCA,EAAoCpW,OACxC8R,GAAgBnK,OAAOK,UAAU0S,mBACjC,GACJC,sBAAsB,GACtBngB,CACJ,CAkuBC,O,EAluBA2b,G,EAAA,EAAA9a,IAAA,oBAAAvB,MAED,WAAqB,IAAD8gB,EAAAC,EAAAC,EACZxE,EAAU3O,OAAOK,UAAUuO,gBAAgBC,UAC3CuE,EAAsD,QAA1CH,EAAGjT,OAAOK,UAAUuO,gBAAgBhZ,cAAM,IAAAqd,OAAA,EAAvCA,EAAyCG,aACxDT,EAC+B,QADpBO,EACflT,OAAOK,UAAU+L,QAAQ7W,kBAAU,IAAA2d,GAAS,QAATC,EAAnCD,EAAA,eAA4C,IAAAC,OAAT,EAAnCA,EAA8ChQ,OAAOkQ,kBACjDC,EAA6B3E,EAAQ0E,mBAAqBV,EAEhEhf,KAAKL,SAAS,CACZmW,eAAiC,oBAAjB2J,EAChBvI,KAAM8D,EAAQ9D,KACdC,OAAQ6D,EAAQ7D,OAChBF,cAA8C,mBAA/B0I,EACf3I,iBAAkB2I,EAClBX,YAAAA,IAGEhf,KAAK7C,MAAM8V,kBAAkBvO,OAAS,GACxC1E,KAAK7C,MAAMyiB,eAAe5f,KAAK7C,MAAM8V,kBAAkB,IACzDjT,KAAKqb,oBACLrb,KAAKiK,mBAELjK,KAAK+a,uBACP,GAAC,CAAAhb,IAAA,mBAAAvB,MAoED,WACE6H,GAAAA,EAAG6D,GAAG,kCAAmClK,KAAKkc,aAE9C7V,GAAAA,EAAG6D,GAAG,0BAA2BlK,KAAK+a,sBACxC,GAAC,CAAAhb,IAAA,qBAAAvB,MAED,SAAmBqhB,GACb7f,KAAK7C,MAAMoe,oBAAsBsE,EAAUtE,mBAC7Cvb,KAAKqb,oBAGmB,QAAxBrb,KAAK7C,MAAMe,UACuB,WAAlC8B,KAAK7C,MAAM4V,oBAEX/S,KAAKob,kBAAkB,QAEzB/U,GAAAA,EAAGC,KAAK,wBACV,GAAC,CAAAvG,IAAA,oBAAAvB,MAED,SAAkB2U,GACZ9G,OAAOyT,OAAOC,OAAS,KACbpB,SAASC,uBAAuB,2BAA2B,GACnEC,SAAS,EAAG,KAElB7e,KAAK7C,MAAMyiB,eAAezM,EAC5B,GAAC,CAAApT,IAAA,cAAAvB,MAED,WACEwB,KAAK7C,MAAMgF,aACb,GAAC,CAAApC,IAAA,qBAAAvB,MAED,SAAmBgC,GACjBR,KAAKL,SAAS,CACZsf,aAAYnb,GAAAA,GAAA,GAAO9D,KAAKF,MAAMmf,cAAY,GAAA5T,GAAA,GAAG7K,GAAO,KAExD,GAAC,CAAAT,IAAA,UAAAvB,MAED,SAAQ2U,GACN,IAAMzK,EAAU1I,KAAKF,MAAM4I,QAC3B,OAAIyK,EACKzK,GAAW1I,KAAKF,MAAMmf,aAAa9L,GAEnCzK,CAEX,GAAC,CAAA3I,IAAA,gBAAAvB,MAED,WACE,OACEwB,KAAK0I,QAAQ1I,KAAK7C,MAAM4V,sBACvB/S,KAAK7C,MAAM4V,qBACX/S,KAAK7C,MAAMyE,WAAW6E,cAE3B,GAAC,CAAA1G,IAAA,gBAAAvB,MAED,SAAcyD,EAAQyI,GACpB,OAAIzI,EACI,GAANT,OAAUS,EAAOuR,SAAQ,KAChB9I,GAAcA,EAAWzI,OAC5B,GAANT,OAAUkJ,EAAWzI,OAAOzB,KAAI,KAEzB,IAEX,GAAC,CAAAT,IAAA,kCAAAvB,MAED,WACE6H,GAAAA,EAAG+S,eAAe,8BAA+BpZ,KAAKkc,YAAalc,KACrE,GAAC,CAAAD,IAAA,gBAAAvB,MAED,SAAca,GACZ,IAGI8Y,EAHEkB,EAAuC,cAAzBha,EAAEC,cAAckB,KACpCR,KAAK7C,MAAMmc,aAAaD,GAItBlB,EADEkB,EACarZ,KAAK7C,MAAM0Y,OAAS,SAAW,UAE/B,WAEjB,IAAMvV,EAAK,eAAAkB,OAAkB2W,EAAY,oBACnCzS,EAAK,kBAAAlE,OAAqB2W,GAGhC9R,GAAAA,EAAGC,KAAKZ,EAAOpF,GAEf+F,GAAAA,EAAGC,KAAK,0BAA2B,CACjC3H,GAAIU,EAAEyF,OAAOnG,GACbqhB,KAAM3gB,EAAEyF,OAAOmb,YAEjB5Z,GAAAA,EAAG6D,GAAG,8BAA+BlK,KAAKkc,YAAalc,KACzD,GAAC,CAAAD,IAAA,eAAAvB,MAWD,WACE,IAAA+D,EAUIvC,KAAK7C,MAAK+iB,EAAA3d,EATZX,WAEE1D,GADcgiB,EAAdzZ,eACQyZ,EAARhiB,UACAgT,EAASgP,EAAThP,UACAyJ,EAAYuF,EAAZvF,aACAxR,EAAI+W,EAAJ/W,KACAuB,EAAUwV,EAAVxV,WAEFyV,EAAiB5d,EAAjB4d,kBAGF,MAAO,CACLhiB,OAAQ6B,KAAKwX,yBACbtZ,SAAUA,EACVgT,UAAWA,EACXkP,eAAgBzF,EAChBtG,KAAIvQ,GAAAA,GAAA,GACC4G,GACAvB,GAELkX,oBAAqBF,EAEzB,GAAC,CAAApgB,IAAA,WAAAvB,MAED,WACE,IAAM2d,EAAWnc,KAAKR,KAAKQ,KAAK7C,MAAM4V,oBAEtC,OAAIoJ,GAAYA,EAAS7J,OAChB6J,EACEA,GAAYA,EAASmE,qBAAqBhO,OAC5C6J,EAASmE,qBAGX,IACT,GAAC,CAAAvgB,IAAA,mBAAAvB,MAED,WACE,IAAMyQ,EAAOnL,GAAAA,GAAA,GACR9D,KAAK2c,gBAAc,IACtBI,YAAa/c,KAAKF,MAAMgc,WACxByE,SAAU,KACVpJ,OAAQ9K,OAAOK,UAAUuO,gBAAgBC,UAAU/D,SAE/CxC,EAAG,0BAAAnT,OACPxB,KAAK7C,MAAM2S,KAAKnR,GAAE,gBAAA6C,OACLiU,KAAAA,MAAQxG,IACvB5C,OAAOkO,KAAK5F,GAEZ3U,KAAKqd,2BAEArd,KAAKF,MAAMuf,uBACdhT,OAAOmU,iBAAiB,UAAWxgB,KAAKygB,kBAAkB5Z,KAAK7G,OAC/DA,KAAKL,SAAS,CAAE0f,sBAAsB,IAE1C,GAAC,CAAAtf,IAAA,oBAAAvB,MAED,SAAkBkH,GAChB,GAA0B,kBAAfA,EAAMhE,KACf,GAAyB,qBAArBgE,EAAMhE,KAAKgE,MACbA,EAAMyR,OAAOuJ,QACbra,GAAAA,EAAGC,KAAK,wBACRtG,KAAKuZ,UAAU,CAAC,QACX,GAAyB,mBAArB7T,EAAMhE,KAAKgE,MAA4B,CAChD,IAAMib,EAAWjb,EAAMhE,KAAKqI,OAAO1G,KAAI,SAAAud,GAAU,OAAAA,EAAPzV,OAAqB,IAC/DnL,KAAKqc,QAAQsE,GACbjb,EAAMyR,OAAOuJ,OACf,CAEJ,GAAC,CAAA3gB,IAAA,2BAAAvB,MAED,WACE,IAEMqiB,EAAe,CACnBnD,QAFArR,OAAOK,UAAUuO,gBAAgBhZ,OAAOtD,IAAM8e,KAAAA,IAAW,UAGzDE,QAAS3d,KAAK7C,MAAM2S,KAAKnR,GACzBH,MAAOwB,KAAK7C,MAAMyE,WAAW6E,eAC7BvI,SAAU8B,KAAK7C,MAAMyE,WAAW1D,SAChCqa,iBAAkBvY,KAAK7C,MAAM4V,mBAC7B7B,UAAWlR,KAAK7C,MAAMyE,WAAWsP,WAET,oBAAf7E,OAAOkR,KAChBlR,OAAOkR,IAAI,QAAS,iBAAkBsD,GAGxCxa,GAAAA,EAAGC,KACD,mCACAua,EACA7gB,KAAK7C,MAAMqb,SAEf,GAAC,CAAAzY,IAAA,kBAAAvB,MAuND,WACE,OAAOwB,KAAKF,MAAMif,eAAiB/e,KAAK7C,MAAM2jB,oBAChD,GAUA,CAAA/gB,IAAA,oBAAAvB,MAEA,WACE,OACEwB,KAAKF,MAAMgW,iBACX8E,GAAwBxH,SAASpT,KAAK7C,MAAM4V,qBAIR,iBAAhC/S,KAAKF,MAAMkX,gBAKnB,GAAC,CAAAjX,IAAA,mBAAAvB,MAED,WACE,QAAIwB,KAAKF,MAAMgW,gBAGuB,iBAAhC9V,KAAKF,MAAMkX,kBAIqB,mBAAhChX,KAAKF,MAAMkX,gBAKnB,GAAC,CAAAjX,IAAA,SAAAvB,MAED,WAAU,IAAD2E,EAAA,KACP4d,EAYI/gB,KAAK7C,MAXP8E,EAAM8e,EAAN9e,OAGQ+e,GAFKD,EAAb9J,cACc8J,EAAdjL,eACQiL,EAARvI,SAAQuI,EACRnf,YACE1D,EAAQ8iB,EAAR9iB,SACAuI,EAAcua,EAAdva,eACAsM,EAAkBiO,EAAlBjO,mBACA7B,EAAS8P,EAAT9P,UACAyJ,EAAYqG,EAAZrG,aAGJ,OACEvd,EAAAA,cAAA,OAAKC,UAAU,mBACbD,EAAAA,cAAC6G,EAAM,CAACV,YAAY1C,EAAAA,EAAAA,SAAQb,KAAKF,MAAMiK,SACrC3M,EAAAA,cAAA,OAAKC,UAAU,0BACbD,EAAAA,cAAA,OAAKC,UAAU,+BACbD,EAAAA,cAAA,QAAMC,UAAU,+BAChBD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,yBACHC,eAAe,iCAGlBoB,KAAKF,MAAMiK,OAAO1G,KAAI,SAAChE,EAAGoG,GACzB,OACErI,EAAAA,cAAA,OAAK2C,IAAK0F,EAAGpI,UAAU,gCACpBgC,EAGP,OAGFW,KAAK7C,MAAM8jB,mBACX7jB,EAAAA,cAAC4E,GAAAA,EAAa,CACZC,OAAQA,EACRE,YAAa,kBAAMgB,EAAKhB,aAAa,IAIzC/E,EAAAA,cAACsZ,GAAe,CACdwC,cAAe,SAAA3O,GAAC,OAAIpH,EAAKhG,MAAM+b,cAAc3O,EAAE,EAC/CuP,OAAQ9Z,KAAKkhB,kBACbhH,iBAAkBla,KAAKka,mBACvBG,kBAAmBra,KAAKqa,oBACxB7C,uBAAwBxX,KAAKwX,yBAC7B3B,OAAQ7V,KAAK7C,MAAM0Y,OACnBnU,KAAM,CACJyf,IAAKnhB,KAAKF,MAAMqhB,IAChBjK,KAAMlX,KAAKF,MAAMoX,KACjBF,iBAAkBhX,KAAKF,MAAMkX,iBAC7BC,cAAejX,KAAKF,MAAMmX,cAC1BnB,eAAgB9V,KAAKF,MAAMgW,gBAE7BmE,OAAQ,kBAAM9W,EAAKxD,SAAS,CAAEof,eAAe,GAAO,IAGtD3hB,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAKkhB,mBACtB9jB,EAAAA,cAACuV,GAAoB,CACnBnV,SAAUwC,KAAKF,MAAM4I,QACrB/K,SAAU,SAAAyjB,GAAC,OAAIje,EAAKiY,kBAAkBgG,EAAE,IAE1ChkB,EAAAA,cAACyQ,GAAM,CACLtN,IAAI,SACJpC,OAAQsI,EACRvI,SAAUA,EACV6P,OAAQ/N,KAAKF,MAAMiO,OACnBQ,MAAO2C,GAAayJ,EACpBrM,OAAQ,kBAAMnL,EAAKke,mBAAmB,SAAS,IAGjDjkB,EAAAA,cAACkS,GAAmB,CAClB/O,IAAI,OACJwN,OAAQ/N,KAAKF,MAAMiO,OACnBmD,UAAWA,EACXmB,SAAiC,SAAvBU,EACVzE,OAAQ,kBAAMnL,EAAKke,mBAAmB,OAAO,EAC7CljB,OAAQ6B,KAAKwX,2BAGS,eAAvBzE,GACC3V,EAAAA,cAAA,OAAKC,UAAU,2BACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAI,sDAIRic,GAAwBxH,SAASpT,KAAK7C,MAAM4V,qBAC5C3V,EAAAA,cAACkK,GAAAA,EAAQ,CACPjK,UAAU,kBACVI,QAASkd,EACThd,SAAU,SAAA0B,GAAC,OACT8D,EAAKhG,MAAMmkB,gBAAgBjiB,EAAEC,cAAc7B,QAAQ,GAGrDL,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,4BACHC,eAAe,4CAKpB,EA+BuB,WAAvBmU,GACC3V,EAAAA,cAAA,OAAKC,UAAU,2BACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAI,iDAKVvB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAKka,oBACtB9c,EAAAA,cAAC+c,GAAY,CACXjc,SAAUA,EACVC,OAAQsI,GAAkB,EAC1BvC,WAAYlE,KAAKF,MAAMoE,WACvB1D,KAAK,WACL0Q,WAAW,EACX4E,eAAgB9V,KAAKF,MAAMgW,eAC3BtY,SAAUwC,KAAKuhB,gBACflhB,QAAS,SAAAhB,GAAC,OAAI8D,EAAKiX,cAAc/a,EAAE,EACnC0W,MAAM,aAGV3Y,EAAAA,cAAC6G,EAAM,CAACV,UAAWvD,KAAKqa,qBACtBjd,EAAAA,cAAC+c,GAAY,CACXjc,SAAUA,EACVC,OAAQsI,GAAkB,EAC1BvC,WAAYlE,KAAKF,MAAMoE,WACvB1D,KAAK,YACL0Q,WAAW,EACX4E,eAAgB9V,KAAKF,MAAMgW,eAC3BD,OAAQ7V,KAAK7C,MAAM0Y,OACnBrY,SAAUwC,KAAKuhB,gBACflhB,QAAS,SAAAhB,GAAC,OAAI8D,EAAKiX,cAAc/a,EAAE,EACnC0W,MAAO,eAMf3Y,EAAAA,cAAA,OAAKC,UAAU,uBACZ2C,KAAK7C,MAAM0Y,QAAU7V,KAAKqa,qBACzBjd,EAAAA,cAACokB,GAAuB,CAACnkB,UAAU,4BAErCD,EAAAA,cAAC6Y,EAAAA,GAAoB,CACnB5Y,UAAU,sBACVsB,GAAG,wBACHC,eAAc,4QAMhBxB,EAAAA,cAACqkB,GAAiB,OAGnBzhB,KAAK7C,MAAM2V,iBACV1V,EAAAA,cAAA,OAAKC,UAAU,8BACbD,EAAAA,cAAA,OAAK+jB,IAAKO,EAAQ,OAA4BC,IAAI,kBAK5D,M,gFAAC9G,CAAA,CA9vBiB,CAASna,EAAAA,WAAhBma,GACJ9Y,MAAS3E,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,UAAUC,eAAe,YAgwBhE,IAmCA,IAAe6C,EAAAA,EAAAA,KAnCS,SAAA3B,GAAK,MAAK,CAChC+V,OACuD,QAArDxJ,OAAOK,UAAUuO,gBAAgBC,UAAUrF,OAC7CiL,qBACEhhB,EAAM8B,WAAWkf,sBAAwD,IAAhChhB,EAAMgX,eAAepS,OAChEkd,mBAAoB9hB,EAAM8B,WAAWiR,gBAAkB,aAAe,OACtEC,gBAAiBhT,EAAM8B,WAAWkR,gBAClCG,kBAAmBnT,EAAM8B,WAAWqR,kBACpCF,mBAAoBjT,EAAM8B,WAAWiR,gBACjC,aACA/S,EAAM8B,WAAWmR,mBACrBnR,WAAY9B,EAAM8B,WAClBkV,eAAgBhX,EAAMgX,eACtB7U,OAAQnC,EAAMmC,OACdgV,cAAqD,mBAAtCnX,EAAM8B,WAAWoV,iBAChCwB,SAAU,CACRmC,aAAc7a,EAAM8B,WAAW+Y,aAC/B1Y,OAAM6B,GAAAA,GAAA,GACDhE,EAAM8B,WAAW8I,YACjB5K,EAAM8B,WAAWuH,OAGxBgX,kBAAmBrgB,EAAMqgB,kBACzBjiB,SAAU4B,EAAM8B,WAAW1D,SAC3Bqd,kBAAmBzb,EAAM8B,WAAW2Z,kBACrC,IAE0B,SAAAvP,GAAQ,MAAK,CACtC7J,YAAa,kBAAM6J,GAAS7J,EAAAA,EAAAA,MAAc,EAC1Cc,WAAY,SAAAC,GAAI,OAAI8I,GAAS/I,EAAAA,EAAAA,IAAWC,GAAM,EAC9CoW,aAAc,SAAA9a,GAAK,OAAIwN,GAASsN,EAAAA,EAAAA,IAAa9a,GAAO,EACpD8iB,gBAAiB,SAAA9iB,GAAK,OAAIwN,GAASsV,EAAAA,EAAAA,IAAgB9iB,GAAO,EAC1DohB,eAAgB,SAAAphB,GAAK,OAAIwN,GAAS4T,EAAAA,EAAAA,IAAephB,GAAO,EACzD,GAED,CAA4Dqc,I,o2CC30BI,IAE1DgH,GAAgB,SAAA/iB,I,uRAAAC,CAAA8iB,EAAA/iB,GAAA,I,MAAAE,EAAAC,GAAA4iB,GACpB,SAAAA,EAAY1kB,GAAQ,IAAD+B,EAIf,O,4FAJeC,CAAA,KAAA0iB,IACjB3iB,EAAAF,EAAAI,KAAA,KAAMjC,IACD2C,MAAQ,CACXsG,sBAAsB,GACtBlH,CACJ,CAqDC,O,EArDA2iB,G,EAAA,EAAA9hB,IAAA,sBAAAvB,MAED,WACEwB,KAAKL,SAAS,CACZyG,sBAAuBpG,KAAKF,MAAMsG,sBAEtC,GAAC,CAAArG,IAAA,mBAAAvB,MAED,SAAiBN,GACf8B,KAAK7C,MAAMoJ,eAAerI,EAC5B,GAAC,CAAA6B,IAAA,gBAAAvB,MAED,WAAiB,IAAD2E,EAAA,KACd,OACEnD,KAAKF,MAAMsG,sBACThJ,EAAAA,cAAA,UACEoB,MAAOwB,KAAK7C,MAAMe,SAClBb,UAAU,qCACVM,SAAU,SAAA0B,GAAC,OAAI8D,EAAK2D,iBAAiBzH,EAAEC,cAAcd,MAAM,GAE1DF,OAAOyI,KAAK/G,KAAK7C,MAAMuJ,eAAerD,KAAI,SAAAnF,GACzC,OACEd,EAAAA,cAAA,UAAQ2C,IAAK7B,EAAUM,MAAON,GAC3BA,EAGP,IAIR,GAAC,CAAA6B,IAAA,SAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,SACEA,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,yBACHC,eAAe,8BACf+H,OAAQ,CAAEzI,SAAU8B,KAAK7C,MAAMe,YAC/B,QAEFd,EAAAA,cAAA,KACEiD,QAASL,KAAK4G,oBAAoBC,KAAK7G,MACvC3C,UAAU,oCAEVD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,6BACHC,eAAe,qBAGlBoB,KAAK8hB,gBAGZ,M,gFAACD,CAAA,CA3DmB,CAASnhB,EAAAA,WAuE/B,IAAee,EAAAA,EAAAA,KATE,SAAA3B,GAAK,MAAK,CACzB5B,SAAU4B,EAAM8B,WAAW1D,SAC3BwI,cAAe5G,EAAM8B,WAAW8E,cACjC,IAEmB,SAAAsF,GAAQ,MAAK,CAC/BzF,eAAgB,SAAArI,GAAQ,OAAI8N,GAASzF,EAAAA,EAAAA,IAAerI,GAAU,EAC/D,GAED,CAGE2jB,I,42ECnEsC,IAElCE,GAAQ,SAAAjjB,I,uRAAAC,CAAAgjB,EAAAjjB,GAAA,I,MAwDX8X,EArBAD,EAvBAqL,EALAC,EAPWjjB,EAAAC,GAAA8iB,GACZ,SAAAA,EAAY5kB,GAAQ,IAAD+B,EAKf,O,4FALeC,CAAA,KAAA4iB,IACjB7iB,EAAAF,EAAAI,KAAA,KAAMjC,IAmCRmV,OAAS,WACP,IAAM5Q,EAAOxC,EAAKgZ,eACdxW,IACFxC,EAAK/B,MAAM+b,eAAc,GAEzBzD,EAAEC,KAAK,gCAADlU,OAC4BtC,EAAK/B,MAAM2S,KAAKnR,GAAE,cAClD+C,GACA4H,KAAKpK,EAAKqa,UAAU1S,KAAI8C,GAAAzK,IAAQA,EAAKsa,UAAU3S,KAAI8C,GAAAzK,KAEzD,EA5CEA,EAAKY,MAAQ,CACXoiB,4BAA4B,EAC5Bhe,YAAY,GACZhF,CACJ,CAsJC,O,EAtJA6iB,E,EAAA,EAAAhiB,IAAA,uBAAAvB,OAAAyjB,EAAAtK,GAAA5K,IAAAA,MAED,SAAAC,EAA2B7O,GAAM,OAAA4O,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACzBnN,KAAK7C,MAAM4H,aAAa5G,GAAQ,KAAD,EACrC6B,KAAKL,SAAS,CAAEuiB,4BAA4B,IAAQ,wBAAAjV,EAAAU,OAAA,GAAAX,EAAA,UACrD,SAAAY,GAAA,OAAAqU,EAAA5f,MAAA,KAAAC,UAAA,KAAAvC,IAAA,eAAAvB,OAAAwjB,EAAArK,GAAA5K,IAAAA,MAED,SAAA6L,EAAmBza,GAAM,OAAA4O,IAAAA,MAAA,SAAA+L,GAAA,cAAAA,EAAA5L,KAAA4L,EAAA3L,MAAA,OACvBnN,KAAK7C,MAAM4H,aAAa5G,GACxB6B,KAAKsS,SAAS,wBAAAwG,EAAAnL,OAAA,GAAAiL,EAAA,UACf,SAAAO,GAAA,OAAA6I,EAAA3f,MAAA,KAAAC,UAAA,KAAAvC,IAAA,eAAAvB,MAED,WACE,MAAO,CACL+Y,QAAS,CACPrZ,SAAU8B,KAAK7C,MAAMe,SACrBC,OAAQ6B,KAAK7C,MAAMsJ,eACnByK,WAAW,EACXuG,kBAAmBzX,KAAK7C,MAAM2Z,eAAe,GAAGnY,IAElD0V,KAAIvQ,GAAAA,GAAA,CACFsF,QAASpJ,KAAK7C,MAAMkM,QAEjBrJ,KAAK7C,MAAMuN,YAEX1K,KAAK7C,MAAMgM,MAGpB,GAAC,CAAApJ,IAAA,YAAAvB,OAAAmY,EAAAgB,GAAA5K,IAAAA,MAcD,SAAAoV,EAAgBtJ,GAAM,OAAA9L,IAAAA,MAAA,SAAAqV,GAAA,cAAAA,EAAAlV,KAAAkV,EAAAjV,MAAA,OAKiD,OAJrEnN,KAAKL,SAAS,CAAEuE,YAAY,IAC5BlE,KAAK7C,MAAM+b,eAAc,GACzBlZ,KAAK7C,MAAMklB,iBAEXhc,GAAAA,EAAGC,KAAK,+BAAgCuS,EAAQ7Y,KAAKkY,gBAAgBkK,EAAA/U,OAAA,SAC9DwL,GAAM,wBAAAuJ,EAAAzU,OAAA,GAAAwU,EAAA,UACd,SAAAG,GAAA,OAAA3L,EAAAtU,MAAA,KAAAC,UAAA,KAAAvC,IAAA,YAAAvB,OAAAoY,EAAAe,GAAA5K,IAAAA,MAED,SAAAwV,EAAgB7gB,GAAI,IAAAmW,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAxS,EAAAwF,EAAAkN,EAAAC,EAAAC,EAAAnV,EAAA,YAAA4J,IAAAA,MAAA,SAAAyV,GAAA,cAAAA,EAAAtV,KAAAsV,EAAArV,MAAA,OAyBjB,OAxBK+K,EAAelY,KAAKkY,eAC1B7R,GAAAA,EAAGC,KACD,gCACY,OAAZ4R,QAAY,IAAZA,OAAY,EAAZA,EAAcX,QACdvX,KAAK7C,MAAMuN,YAEbrE,GAAAA,EAAGC,KAAK,iCAAkC5E,EAAMwW,GAE1CxS,EAAQ,4CAEdW,GAAAA,EAAGC,KAAKZ,EAHM,0CAGQwF,GAGI,QAAxB2M,EAAAxL,OAAOK,UAAU+L,eAAO,IAAAZ,GAAY,QAAZC,EAAxBD,EAA0BjW,kBAAU,IAAAkW,GAAS,QAATC,EAApCD,EAAA,eAA6C,IAAAC,GAAQ,QAARC,EAA7CD,EAA+CvI,cAAM,IAAAwI,GAAY,QAAZC,EAArDD,EAAuDpW,kBAAU,IAAAqW,OAAzC,EAAxBA,EACIS,qBAAsB,CAAC,EAFrBN,EAAQlN,EAARkN,SAAUC,EAAMnN,EAANmN,OAGZC,EAA0B,WAC9BjS,GAAAA,EAAGC,KAAK,GAAD9E,OAAIkE,EAAK,kBAAkB,CAChCpF,MAAM,GAADkB,QAAKmX,EAAAA,EAAAA,WAAUP,GAAS,mCAC7Bja,OAAQgF,EAAKhG,MAAMsJ,gBAEvB,GAEe,IAAX4R,GACFC,IACDkK,EAAAnV,OAAA,SAEM3L,GAAI,yBAAA8gB,EAAA7U,OAAA,GAAA4U,EAAA,UACZ,SAAAE,GAAA,OAAA7L,EAAAvU,MAAA,KAAAC,UAAA,KAAAvC,IAAA,eAAAvB,MAED,WAAgB,IAAD8M,EAAA,KACb,OAAKtL,KAAKF,MAAMoiB,4BACXliB,KAAK7C,MAAMsJ,eAGdrJ,EAAAA,cAAC+c,GAAY,CACXjc,SAAU8B,KAAK7C,MAAMe,SACrBC,OAAQ6B,KAAK7C,MAAMsJ,gBAAkB,EACrCyK,WAAW,EACXhN,WAAYlE,KAAKF,MAAMoE,WACvB1G,SAAUwC,KAAKF,MAAMoE,WACrB7D,QAAS,kBAAMiL,EAAKgH,QAAQ,IAVmB,IAarD,GAAC,CAAAvS,IAAA,gBAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,OAAKC,UAAU,2BACbD,EAAAA,cAAA,MAAIC,UAAU,kCACZD,EAAAA,cAAA,KAAGC,UAAU,sBACbD,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,qBAEvBvB,EAAAA,cAAA,UACEA,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,uBAI7B,GAAC,CAAAoB,IAAA,qBAAAvB,MAED,WACE,OACEpB,EAAAA,cAAA,OAAKC,UAAU,YACbD,EAAAA,cAAA,OAAKC,UAAU,oBACbD,EAAAA,cAAA,OAAKC,UAAU,6BACbD,EAAAA,cAAA,KAAGC,UAAU,gCAA+B,WAE9CD,EAAAA,cAAA,OAAKC,UAAU,+BACbD,EAAAA,cAAA,MAAIC,UAAU,mBAAmB2C,KAAK7C,MAAM4E,QAE9C3E,EAAAA,cAAA,OAAKC,UAAU,wBACbD,EAAAA,cAAA,SACEA,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,+BACHC,eAAe,kDAInBxB,EAAAA,cAACoH,GAAa,CACZgB,QAASxF,KAAK7C,MAAMuJ,cAAc1G,KAAK7C,MAAMe,UAC7CA,SAAU8B,KAAK7C,MAAMe,SACrBoG,eAAgBtE,KAAK7C,MAAMqJ,uBAC3BxB,QAAS,WAAO,EAChBD,aAAc/E,KAAK+E,aAAa8B,KAAK7G,MACrCqF,mBAAoBrF,KAAK0iB,qBAAqB7b,KAAK7G,QAGpDA,KAAK2iB,eACNvlB,EAAAA,cAACykB,GAAgB,QAK3B,GAAC,CAAA9hB,IAAA,SAAAvB,MAED,WACE,OAAOwB,KAAK7C,MAAM+G,WACdlE,KAAK4iB,gBACL5iB,KAAK6iB,oBACX,I,mFAACd,CAAA,CA7JW,CAASrhB,EAAAA,WAqLvB,IAAee,EAAAA,EAAAA,KArBE,SAAA3B,GAAK,MAAK,CACzB5B,SAAU4B,EAAM8B,WAAW1D,SAC3BuI,eAAgB3G,EAAM8B,WAAW6E,eACjCC,cAAe5G,EAAM8B,WAAW8E,cAChCwK,UAAWpR,EAAM8B,WAAWsP,UAC5B4F,eAAgBhX,EAAMgX,eACtBzN,OAAQvJ,EAAM8B,WAAWyH,OACzBqB,WAAY5K,EAAM8B,WAAW8I,WAC7BvB,KAAMrJ,EAAM8B,WAAWuH,KACvB2G,KAAMhQ,EAAMgQ,KACZ5L,WAAYpE,EAAM8B,WAAWsC,WAC7BnC,MAAOjC,EAAM8B,WAAWG,MACxByE,uBAAwB1G,EAAM8B,WAAW4E,uBAC1C,IAEmB,SAAAwF,GAAQ,MAAK,CAC/BjH,aAAc,SAAA5G,GAAM,OAAI6N,GAAS8W,EAAAA,EAAAA,IAAa3kB,GAAQ,EACtD+a,cAAe,SAAAhV,GAAU,OAAI8H,GAASkN,EAAAA,EAAAA,IAAchV,GAAY,EAChEme,eAAgB,kBAAMrW,GAASqW,EAAAA,EAAAA,MAAiB,EACjD,GAED,CAA8CN,I,YChMjCgB,GAAiB,SAACrhB,EAAMsK,GACnC,IAAMgX,EAASC,GAAAA,MAASpO,SAASmO,OAAQ,CACvCE,YAAa,YAEflX,EAAS,CACPzO,KAAM,wBACN0R,QAASvN,EACTyhB,UAAU,IAEZnX,EAAS,CACPzO,KAAM,qBACN0R,QAASvN,EAAKgF,cACdyc,UAAU,IAGZnX,EAAS,CACPzO,KAAM,kBACN0R,QAAS+T,EAAO9kB,UAAYwD,EAAKxD,SACjCilB,UAAU,IAIZnX,EAAS,CAAEzO,KAAM,gBAAiB0R,QADnBmU,SAASJ,EAAO7kB,OAAkB,UAAOwG,EACLwe,UAAU,IAG7DnX,EAAS,CACPzO,KAAM,mBACN0R,QAHqC,MAArB+T,EAAOK,WAAqB3hB,EAAK4hB,gBAIjDH,UAAU,IAIZnX,EAAS,CACPzO,KAAM,yBACN0R,QAHe+T,EAAOtD,mBAAqBhe,EAAKsV,iBAIhDmM,UAAU,IAGZnX,EAAS,CACPzO,KAAM,wBACN0R,QAA4B,MAAnB+T,EAAOO,QAChBJ,UAAU,IAGZnX,EAAS,CACPzO,KAAM,0BACN0R,QAAS+T,EACTG,UAAU,GAEd,EAEaK,GAAiB,SAAChU,GAC7B,IAAA2O,EAQI9R,OAAOK,UAAUuO,gBAPnBhZ,EAAMkc,EAANlc,OACA4S,EAAQsJ,EAARtJ,SACAiC,EAAcqH,EAAdrH,eACApQ,EAAayX,EAAbzX,cACA+c,EAAiBtF,EAAjBsF,kBACA/Y,EAAUyT,EAAVzT,WACAgZ,EAAWvF,EAAXuF,YAGF,MAAO,CACL9a,OAAQyD,OAAOK,UAAUoD,KAAKnR,GAC9BT,SAAU2W,EAAS3W,SACnB+D,OAAAA,EACA6U,eAAAA,EACApQ,cAAAA,EACA+c,kBAAAA,EACApa,OAAQmG,EAAOpG,QACfsB,WAAAA,EACAgZ,YAAAA,EAEA3hB,MAAOyN,EAAOzN,MACduhB,gBAAiB9T,EAAOmU,iBACxBrZ,OAAQkF,EAAOlF,OACf0M,iBAAkBxH,EAAOkQ,kBAI7B,EAIakE,GAAkB,CAC7BC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OCpGN,GACgB,yBADhB,GAGmB,oB,0+CCwBZ,IAAMC,GAAc,SAAA3lB,I,uRAAAC,CAAA0lB,EAAA3lB,GAAA,I,QAOxB4lB,EAPwB1lB,EAAAC,GAAAwlB,GACzB,SAAAA,EAAYtnB,GAAQ,IAAD+B,EAKf,O,4FALeC,CAAA,KAAAslB,IACjBvlB,EAAAF,EAAAI,KAAA,KAAMjC,IAED2C,MAAQ,CACX6kB,UAAU,GACVzlB,CACJ,CAmPC,O,EAnPAulB,E,EAAA,EAAA1kB,IAAA,oBAAAvB,O,EAAAuO,IAAAA,MAED,SAAAC,IAAA,IAAAvG,EAAAtD,EAAA,YAAA4J,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WACMd,OAAOuY,UAAU,CAAD3X,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACZd,OAAOuY,UAAUC,KAAK,CAC1Bnf,MAAOof,KACN,KAAD,EAEJ9kB,KAAK+kB,WAAatX,aAAY,WAC5B,QAA+B9I,IAA3B0H,OAAO2Y,gBAA+B,CACxC,IAAMC,EAAU5Y,OAAO2Y,gBAAgBE,IACrCJ,IAGEG,GACF9hB,EAAKhG,MAAMgoB,qBAAqB,CAC9BF,QAAAA,EACAG,aAAcN,KAGlBpX,cAAcvK,EAAK4hB,YACnB5hB,EAAKxD,SAAS,CACZglB,UAAU,GAEd,MACExhB,EAAKxD,SAAS,CACZglB,UAAU,GAGhB,GAAG,KAEKle,EAAmBzG,KAAK7C,MAAMyE,WAA9B6E,eACRzG,KAAK7C,MAAMkoB,0BAA0BrlB,KAAKslB,0BACtC7e,GAAkBA,EAAiB,IACrCzG,KAAK7C,MAAM4H,aAAa0B,IACO,IAA3BzG,KAAKulB,mBACPvlB,KAAK7C,MAAM8F,WAAW,IAEzB,wBAAAgK,EAAAU,OAAA,GAAAX,EAAA,SAtCF0X,E,gLAuCA,kBAAAA,EAAAriB,MAAA,KAAAC,UAAA,KAAAvC,IAAA,qBAAAvB,MAED,SAAmBqhB,GACjB,GACkC,GAAhCA,EAAU2F,YAAY9gB,QACtB1E,KAAK7C,MAAMqoB,YAAY9gB,OAAS,EAChC,CACA,IAAQugB,GACNjlB,KAAK7C,MAAMqoB,YAAYC,MACrB,SAAApmB,GAAC,OAAKA,EAAE+lB,aAAeN,EAA0C,KAC9D,CAAC,GAHAG,QAKR,GAAIA,GAAuB,MAAZA,GAAmBjlB,KAAK7C,MAAMuoB,WAAY,CACvD,IAAQjf,EAAmBzG,KAAK7C,MAAMyE,WAA9B6E,eACRzG,KAAK7C,MAAMgF,cACPsE,GAAkBA,EAAiB,GACrCzG,KAAK7C,MAAM4H,aAAa0B,GACxBzG,KAAK7C,MAAM8F,WAAW,IAEtBjD,KAAK7C,MAAM8F,WAAW,EAE1B,CACF,CACF,GAAC,CAAAlD,IAAA,eAAAvB,MAED,SAAaL,GACX6B,KAAK7C,MAAM4H,aAAa5G,GACxB,IAAMqf,EACJnR,OAAOK,UAAUuO,gBAAgBhZ,OAAOtD,IAAM8e,KAAAA,IAAW,UACjC,oBAAfpR,OAAOkR,KAChBlR,OAAOkR,IAAI,QAAS,mBAAoB,CACtC/e,MAAOL,EACPD,SAAU8B,KAAK7C,MAAMyE,WAAW1D,SAChC0f,aAAc5d,KAAK7C,MAAM2S,KAAK/N,MAC9B8b,YAAa,CAAC7d,KAAK7C,MAAM2S,KAAKnR,IAC9Bmf,aAAc,UACdJ,QAASF,EACTO,mBAAoB,gBACpBJ,QAAS3d,KAAK7C,MAAM2S,KAAKnR,IAG/B,GAAC,CAAAoB,IAAA,yBAAAvB,MAED,WACE,IAAM8V,EAAUjI,OAAOK,UAAUuO,gBAAgBhZ,OAAOqS,QAGxD,OAAKhW,OAAOyI,KAAK6c,IAAiBxQ,SAASkB,IACpCsP,GAAgBtP,KAAatU,KAAK7C,MAAMyE,WAAW1D,QAC5D,GAAC,CAAA6B,IAAA,UAAAvB,MAED,WACEwB,KAAK7C,MAAM8F,WAAWjD,KAAK7C,MAAMyE,WAAWoB,YAAc,EAC5D,GAAC,CAAAjD,IAAA,cAAAvB,MAED,WACE,IAAQilB,EAAsBzjB,KAAK7C,MAAMyE,WAAjC6hB,kBACR,OAAQA,GAAkD,IAA7BA,EAAkB/e,MACjD,GAAC,CAAA3E,IAAA,kBAAAvB,MAED,WACE,IAAQkI,EAAkB1G,KAAK7C,MAAMyE,WAA7B8E,cACFif,EAAsBrnB,OAAOyI,KAAKL,GAGlCkf,EADY,IAAIC,gBAAgBxZ,OAAOwI,SAASmO,QACpBkC,IAAI,YACtC,IAAKU,EAAiB,OAAO,EAC7B,IAAME,EACJH,EAAoBF,MAAK,SAAAzd,GAAC,OAAIA,IAAM4d,CAAe,KACnDD,EAAoB,GAItB,QAFwB,QAAtBG,GAA+BA,IAAsBF,EAGzD,GAAC,CAAA7lB,IAAA,SAAAvB,MAED,WAAU,IAAD8M,EAAA,KACP4U,EAeIlgB,KAAK7C,MAdPyE,WACEyH,EAAM6W,EAAN7W,OACAiB,EAAM4V,EAAN5V,OACAI,EAAUwV,EAAVxV,WACAhE,EAAawZ,EAAbxZ,cACAD,EAAcyZ,EAAdzZ,eACAD,EAAsB0Z,EAAtB1Z,uBACAtI,EAAQgiB,EAARhiB,SACA8E,EAAWkd,EAAXld,YACAygB,EAAiBvD,EAAjBuD,kBACAvf,EAAUgc,EAAVhc,WACA6hB,EAAa7F,EAAb6F,cACAT,EAAsBpF,EAAtBoF,uBAKEU,EAAuBtiB,IAAAA,QAAUgH,GACrCtN,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,gCACHC,eAAe,iCAGjBxB,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,gCACHC,eAAe,iCAIbwT,EAAa9U,IAAW,CAC5B,4BAA4B,EAC5B,aAAa,IAGT2oB,EAAuBF,EAC3B3oB,EAAAA,cAAA,OAAKC,UAAU,0BACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,8BACHC,eAAe,gGAGjB,KAEEsnB,EAA+BZ,EAOjC,KANFloB,EAAAA,cAAA,OAAKC,UAAU,sCACbD,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,iCACHC,eAAe,2UAKrB,OAAIoB,KAAK7C,MAAMgpB,eAEX/oB,EAAAA,cAAA,OAAKuB,GAAG,kBAAkBtB,UAAW+U,GACnChV,EAAAA,cAAC2kB,GAAQ,OAMb3kB,EAAAA,cAACgpB,EAAAA,SAAQ,KACNpmB,KAAKF,MAAM6kB,SACVvnB,EAAAA,cAAA,OAAKuB,GAAG,kBAAkBtB,UAAW+U,GACnChV,EAAAA,cAACqG,EAAW,CACV1B,MAAO/B,KAAK7C,MAAMyE,WAAWG,MAC7BmC,WAAYA,EACZlB,YAAaA,EACbC,WAAYjD,KAAK7C,MAAM8F,YAEvB7F,EAAAA,cAACgF,EAAW,CACVL,MAAOmE,GAAgBnE,MAAM0E,EAAgBvI,IAE7Cd,EAAAA,cAAA,WACG6oB,EACAC,EACD9oB,EAAAA,cAAC8I,GAAe,CACdO,eAAgBA,EAChBvI,SAAUA,EACVwI,cAAeA,EACfF,uBAAwBA,EACxBQ,cAAegf,EACfzf,eAAgBvG,KAAK7C,MAAMkpB,eAAexf,KAAK7G,MAC/C+E,aAAc,SAAA5G,GAAM,OAAImN,EAAKvG,aAAa5G,EAAO,EACjD0G,wBAAyB7E,KAAK7C,MAAM0H,wBAAwBgC,KAC1D7G,MAEFgF,QAAShF,KAAKgF,QAAQ6B,KAAK7G,MAC3BoF,kBAAmBpF,KAAK7C,MAAMiI,kBAAkByB,KAAK7G,UAK1DA,KAAKsmB,eACJlpB,EAAAA,cAACgF,EAAW,CACVL,MAAO3E,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,wBAE5BvB,EAAAA,cAACmL,GAAiB,CAChB0C,WACE7N,EAAAA,cAACsB,EAAAA,GAAgB,CACfC,GAAG,gCACHC,eAAe,uBAGnB0L,OAAQA,EACRmZ,kBAAmBA,EACnB/Y,WAAYA,EACZrB,OAAQA,EACRT,OAAQ5I,KAAK7C,MAAM2S,KAAKnR,GACxBqG,QAAShF,KAAKgF,QAAQ6B,KAAK7G,SAKjC5C,EAAAA,cAACgF,EAAW,CAACL,MAAO3E,EAAAA,cAACsB,EAAAA,GAAgB,CAACC,GAAG,wBACvCvB,EAAAA,cAACyd,GAAO,CACN/K,KAAM9P,KAAK7C,MAAM2S,KACjBmR,kBAAmBjhB,KAAKsmB,cACxBpN,cAAe,SAAA3O,GAAC,OAAIe,EAAKnO,MAAM+b,cAAc3O,EAAE,OAKrD,KAGV,I,mFAACka,CAAA,CA1PwB,CAAS/jB,EAAAA,WA4RpC,IAAee,EAAAA,EAAAA,KA/BgB,SAAA3B,GAAK,MAAK,CACvCgX,eAAgBhX,EAAMgX,eACtByP,SAAUzmB,EAAMymB,SAChB3kB,WAAY9B,EAAM8B,WAClBK,OAAQnC,EAAMmC,OACd6N,KAAMhQ,EAAMgQ,KACZiW,cAAejmB,EAAM8B,WAAWmkB,cAChCI,eACErmB,EAAM8B,WAAW4kB,UACjB1mB,EAAMgX,eAAepS,OAAS,IAC7B5E,EAAM8B,WAAWkf,qBACpBwE,uBAAwBxlB,EAAM8B,WAAW0jB,uBACzCE,YAAa1lB,EAAM2mB,QAAQjB,YAC3BE,WAAY5lB,EAAM8B,WAAW8hB,YAC9B,IAEiC,SAAA1X,GAAQ,MAAK,CAC7C7J,YAAa,kBAAM6J,GAAS7J,EAAAA,EAAAA,MAAc,EAC1Cc,WAAY,SAAAC,GAAI,OAAI8I,GAAS/I,EAAAA,EAAAA,IAAWC,GAAM,EAC9C6B,aAAc,SAAA5G,GAAM,OAAI6N,GAAS8W,EAAAA,EAAAA,IAAa3kB,GAAQ,EACtD0G,wBAAyB,SAAA6hB,GAAc,OACrC1a,GAASnH,EAAAA,EAAAA,IAAwB6hB,GAAgB,EACnDL,eAAgB,SAAAnoB,GAAQ,OAAI8N,GAASzF,EAAAA,EAAAA,IAAerI,GAAU,EAC9Dgb,cAAe,SAAAhV,GAAU,OAAI8H,GAASkN,EAAAA,EAAAA,IAAchV,GAAY,EAChEmhB,0BAA2B,SAAA7mB,GAAK,OAC9BwN,GAASqZ,EAAAA,EAAAA,IAA0B7mB,GAAO,EAC5C2mB,qBAAsB,SAAA3mB,GAAK,OAAIwN,GAASmZ,EAAAA,GAAAA,IAAqB3mB,GAAO,EACpE4G,kBAAmB,SAACuhB,EAAgBxoB,GAAM,OACxC6N,GAAS5G,EAAAA,EAAAA,IAAkBuhB,EAAgBxoB,GAAQ,EACtD,GAED,CAA4DsmB,I,uiECnSrD,SAASmC,GAAK7e,GAQnB,OAPKA,EAAQ8e,KAEX9e,EAAQ8e,GAAKlI,SAASmI,eAAe,yBAGvC/D,GAAeS,GAAezb,EAAQyH,QAASzH,EAAQgf,MAAM/a,UAEtD,IAAIgb,GAAUljB,GAAAA,GAAC,CAAC,EAClBiE,GAAO,IACVkf,UAAW,eAEf,CAEO,IAAMD,GAAU,SAAAE,I,uRAAAnoB,CAAAioB,EAAAE,GAAA,I,MAAAloB,EAAAC,GAAA+nB,GAGrB,SAAAA,EAAYjf,GAAmD,IAAD7I,EAE9C,O,4FAF8CC,CAAA,KAAA6nB,IAC5D9nB,EAAAF,EAAAI,KAAA,KAAM2I,IAHDof,oBAAc,EAInBjoB,EAAKkoB,SAASloB,CAChB,CAuIC,O,EAvIA8nB,G,EAAA,EAAAjnB,IAAA,QAAAmlB,IAED,WACE,OAAOllB,KAAK+mB,MAAMM,WAAWzlB,UAC/B,GAAC,CAAA7B,IAAA,aAAAmlB,IAED,WACE,OAAOllB,KAAKF,MAAMqJ,IACpB,GAAC,CAAApJ,IAAA,SAAAmlB,IAED,WACE,OAAOllB,KAAKF,MAAM2G,cACpB,EAAC6gB,IAED,SAAWnpB,GACT6B,KAAKunB,UAAUppB,EACjB,GAAC,CAAA4B,IAAA,YAAAvB,MAED,SAAiBL,GAIf,OAHIqpB,OAAOC,UAAUtpB,IAAWA,EAAS,GACvC6B,KAAK+mB,MAAM/a,UAAS8W,EAAAA,EAAAA,IAAa3kB,IAE5B6B,IACT,GAAC,CAAAD,IAAA,WAAAmlB,IAED,WACE,OAAOllB,KAAKF,MAAM5B,QACpB,EAACopB,IAED,SAAappB,GACX8B,KAAK0nB,YAAYxpB,EACnB,GAAC,CAAA6B,IAAA,cAAAvB,MAED,SAAmBN,GAEjB,OADA8B,KAAK+mB,MAAM/a,UAASzF,EAAAA,EAAAA,IAAerI,IAC5B8B,IACT,GAAC,CAAAD,IAAA,aAAAvB,MAED,SAAkBmpB,EAAmBnpB,GAInC,OAHAwB,KAAK+mB,MAAM/a,UACTjB,EAAAA,EAAAA,IAAUjH,GAAAA,GAAC,CAAC,EAAI9D,KAAK0K,YAAUW,GAAA,GAAQsc,EAAYnpB,MAE9CwB,IACT,GAAC,CAAAD,IAAA,cAAAvB,MAED,WAEE,OADAwB,KAAK+mB,MAAM/a,UAAS7J,EAAAA,EAAAA,OACbnC,IACT,GAKA,CAAAD,IAAA,mBAAAvB,MACA,SAAwBopB,GACtB,MAAM,IAAIC,MAAM,kBAClB,GAAC,CAAA9nB,IAAA,eAAAvB,MAED,WAAuB,IAAD2E,EAAA,KACpB,OAAO,IAAI+I,SAAQ,SAACC,EAASC,GAC3BjJ,EAAK2kB,OAAOC,KAAK,0BAA2B5b,GAC5ChJ,EAAK2kB,OAAOC,KAAK,wBAAyB3b,GAC1CjJ,EAAK2kB,OAAOxhB,KAAK,mCACnB,GACF,GAMA,CAAAvG,IAAA,cAAAvB,MACA,SAAmBwpB,GAA+C,IAAD1c,EAAA,KAC/D,OAAO,IAAIY,SAAQ,SAACC,EAASC,GAC3Bd,EAAKwc,OAAOC,KAAK,iCAAkC5b,GACnDb,EAAKwc,OAAOC,KAAK,+BAAgC3b,GACjDd,EAAKwc,OAAOxhB,KAAK,kCACnB,GACF,GAAC,CAAAvG,IAAA,wBAAAvB,MAED,SAA6BgR,GAAc,IAAD5D,EAAA,KACxC,OAAO,IAAIM,SAAQ,SAACC,EAASC,GAC3BR,EAAKkc,OAAOC,KAAK,6CAA8C5b,GAC/DP,EAAKkc,OAAOC,KAAK,2CAA4C3b,GAC7DR,EAAKkc,OAAOxhB,KAAK,qCAAsCkJ,EACzD,GACF,GAAC,CAAAzP,IAAA,YAAAmlB,IAED,WACE,OAAOllB,KAAKF,MAAMoR,SACpB,EAACoW,IAED,SAAcpW,GACZlR,KAAKsZ,aAAapI,EACpB,GAAC,CAAAnR,IAAA,eAAAvB,MAED,SAAoBA,GAIlB,OAHIypB,EAAAA,EAAAA,WAAUzpB,IACZwB,KAAK+mB,MAAM/a,UAASsN,EAAAA,EAAAA,IAAa9a,IAE5BwB,IACT,GAAC,CAAAD,IAAA,eAAAmlB,IAED,WACE,OAAOllB,KAAKF,MAAM6a,YACpB,EAAC2M,IAED,SAAiB9oB,GACfwB,KAAKshB,gBAAgB9iB,EACvB,GAAC,CAAAuB,IAAA,kBAAAvB,MAED,SAAuBA,GAIrB,OAHIypB,EAAAA,EAAAA,WAAUzpB,IACZwB,KAAK+mB,MAAM/a,UAASsV,EAAAA,EAAAA,IAAgB9iB,IAE/BwB,IACT,GAGA,CAAAD,IAAA,iBAAAvB,MACA,SAAsB2U,GAEpB,OADAnT,KAAK+mB,MAAM/a,UAAS4T,EAAAA,EAAAA,IAAezM,IAC5BnT,IACT,GAAC,CAAAD,IAAA,SAAAvB,MAED,WACE,OAAIwB,KAAKmnB,eACAnnB,KAAKmnB,eAAennB,OAGtBonB,EAAAA,EAAAA,QACLhqB,EAAAA,cAAC8qB,EAAAA,EAAgB,CAACnB,MAAO/mB,KAAK+mB,MAAOoB,OAAQ9b,OAAO+b,KAAKD,QACvD/qB,EAAAA,cAACqnB,GAAc,OAEjBzkB,KAAK6mB,GAET,M,gFAACG,CAAA,CA7IoB,CAASqB,EAAAA,E,gDChC5BhiB,EAAKgG,OAAOhG,GACXA,IACHA,EAAK,IAAIiiB,MAGX,K,+xDCPO,IAAMC,EAAc,cAErBC,EAAe,CACnBhD,YAAa,IAiBR,SAASL,EAAqBlW,GACnC,MAAO,CAAE1R,KAAMgrB,EAAatZ,QAAAA,EAC9B,CAhBA,gBAAkD,IAAlCnP,EAAKwC,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAGkmB,EAAc3L,EAAMva,UAAAoC,OAAA,EAAApC,UAAA,QAAAqC,EAC1C,GAAQkY,EAAOtf,OACRgrB,EAAL,CACE,IAAAE,EAAkC5L,EAAO5N,QAAjCgW,EAAOwD,EAAPxD,QAASG,EAAYqD,EAAZrD,aACjB,OAAKH,GAAYG,EACjBthB,EAAAA,EAAA,GACKhE,GAAK,IACR0lB,YAAY,GAADhkB,OAAAknB,EAAM5oB,EAAM0lB,aAAW,CAAE3I,EAAO5N,YAHPuZ,CAGe,CAGrD,OAAO1oB,CAEZ,C,kXCfM,SAASgjB,EAAa7T,GAE3B,OADA5I,EAAAA,EAAGC,KAAK,2BAA4B2I,GAC7B,CAAE1R,KAAM,gBAAiB0R,QAAAA,EAASkU,UAAU,EACrD,CAEO,SAASd,IACd,MAAO,CAAE9kB,KAAM,mBACjB,CAEO,SAASgJ,EAAe0I,GAE7B,OADA5I,EAAAA,EAAGC,KAAK,6BAA8B2I,GAC/B,CAAE1R,KAAM,kBAAmB0R,QAAAA,EAASkU,UAAU,EACvD,CAEO,SAASjK,EAAcjK,GAC5B,MAAO,CAAE1R,KAAM,iBAAkB0R,QAAAA,EACnC,CAEO,SAAShM,EAAWgM,GAGzB,OADAE,YAAW,kBAAM9I,EAAAA,EAAGC,KAAK,yBAA0B2I,EAAQ,GAAE,KACtD,CAAE1R,KAAM,cAAe0R,QAAAA,EAChC,CAEO,SAAS7J,EAAkB6J,EAAS9Q,GACzC,OAAO,SAAC6N,EAAUqb,GAChB,GAAIpY,EAAS,CACX,IACA0Z,EADctB,IACyCzlB,WAA/CgnB,EAAoBD,EAApBC,qBAAsBniB,EAAckiB,EAAdliB,eAExBf,EACHkjB,GAA2C,OAAnBniB,EAErB,gBADA,qBAWAnG,EATa,SAAComB,EAAgBvoB,EAAQ0qB,GAC1C,OAAI1qB,GAA6B,OAAnBuoB,EACN,YAANllB,OAAmBrD,EAAM,oBAAAqD,OAAmBqnB,GAEpB,OAAnBnC,EAAuB,eAAAllB,OACXqnB,GAAW,eAAArnB,OACXklB,EAAc,oBAAAllB,OAAmBqnB,EACtD,CAEcC,CAAWF,EAAsBniB,EAAgBtI,GAE/DkI,EAAAA,EAAGC,KAAKZ,EAAO,CACbpF,MAAAA,EACAnC,OAAQ,KACRQ,GAAI,8BACJqhB,KAAK,GAADxe,OAAKrD,IAEb,CAEA6N,EAAS,CAAEzO,KAAM,uBAAwB0R,QAAAA,GAC3C,CACF,CAEO,SAASpK,EAAwBoK,GACtC,OAAO,SAACjD,EAAUqb,GAChB,IAOoBX,EAAgBvoB,EAAQ4qB,EA0DflR,EAAAC,EAAAC,EAAAC,EAC/BhE,EAAQoE,EAjENlN,EADcmc,IAENzlB,YAAc,CAAC,EADfgnB,EAAoB1d,EAApB0d,qBAAsBniB,EAAcyE,EAAdzE,eAAgBkgB,EAAczb,EAAdyb,eAExCjhB,EACHkjB,GAAyBniB,EAEtB,gBADA,qBAcAnG,GAZcomB,EAalBkC,EAb0CG,EAe1CpC,GAfkCxoB,EAclCsI,IAbiC,OAAnBigB,IAA4BqC,EAClC,YAANvnB,OAAmBrD,EAAM,eAAAqD,OAAcyN,EAAQzO,MACtCrC,GAAU4qB,EACb,oBAANvnB,OAA2BrD,EAAM,eAAAqD,OAAcyN,EAAQzO,MAG/B,OAAnBkmB,EAAuB,UAAAllB,OAChByN,EAAQzO,MAAI,eAAAgB,OACPklB,EAAc,eAAAllB,OAAcyN,EAAQzO,OASzD6F,EAAAA,EAAGC,KAAKZ,EAAO,CACbpF,MAAAA,EACAnC,OAAQ,KACRQ,GAAIsQ,EAAQtQ,GACZqhB,KAAM/Q,EAAQgR,YAqClBjM,GACqC,QAAnC6D,EAAAxL,OAAOK,UAAU+L,QAAQ7W,kBAAU,IAAAiW,GAAS,QAATC,EAAnCD,EAAA,eAA4C,IAAAC,GAAQ,QAARC,EAA5CD,EAA8CtI,cAAM,IAAAuI,GAAY,QAAZC,EAApDD,EAAsDnW,kBAAU,IAAAoW,OAA7B,EAAnCA,EACIU,qBAAsB,CAAC,EAFrBN,EAAQpE,EAARoE,UAGO,IAHSpE,EAANqE,QAIhBhS,EAAAA,EAAGC,KACD,iDAAiD,GAAD9E,QAC7CmX,EAAAA,EAAAA,WAAUP,GAAS,oCAvCxBpM,EAAS,CAAEzO,KAAM,6BAA8B0R,QAASA,EAAQzO,MAClE,CACF,CAEO,SAASuK,EAAWkE,GACzB,MAAO,CAAE1R,KAAM,cAAe0R,QAAAA,EAChC,CAEO,SAASqK,IAA+B,IAAlBrK,EAAO3M,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,IAAAA,UAAA,GAElC,OADA6M,YAAW,kBAAM9I,EAAAA,EAAGC,KAAK,8BAA+B2I,EAAQ,GAAE,KAC3D,CAAE1R,KAAM,gBAAiB0R,QAAAA,EAClC,CAEO,SAASqS,IAAkC,IAAlBrS,EAAO3M,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,IAAAA,UAAA,GAE/BhC,EAAK,QAAAkB,OADgByN,EAAU,UAAY,YACT,0BAExC,OADAE,YAAW,kBAAM9I,EAAAA,EAAGC,KAAK,gCAAiChG,EAAM,GAAE,KAC3D,CAAE/C,KAAM,qBAAsB0R,QAAAA,EAASkU,UAAU,EAC1D,CAEO,SAASvD,EAAe3Q,GAC7B,MAAO,CAAE1R,KAAM,mBAAoB0R,QAAAA,EAASkU,UAAU,EACxD,CAEO,SAAS6F,EAAkBtnB,GAChC,MAAO,CAAEnE,KAAM,6BAA8B0R,QAASvN,EACxD,CAEO,SAAS2jB,EAA0BpW,GACxC,MAAO,CAAE1R,KAAM,+BAAgC0R,QAAAA,EACjD,C,8iCC3HA,IAAMuZ,EAAe,KACfS,EAAgB,CACpB,KACA,QACA,UACA,YACA,qBACA,OACA,YACA,WACA,WACA,cACA,SACA,cACA,aACA,kBACA,QAyBK,SAAS9mB,IACd,MAAO,CAAE5E,KAAM,eACjB,CAxBA,gBAAkD,IAAlCuC,EAAKwC,UAAAoC,OAAA,QAAAC,IAAArC,UAAA,GAAAA,UAAA,GAAGkmB,EAAc3L,EAAMva,UAAAoC,OAAA,EAAApC,UAAA,QAAAqC,EAC1C,OAAQkY,EAAOtf,MACb,IAAK,oBACH,IAAQ0E,EAAW4a,EAAO5N,QAAQgM,gBAA1BhZ,OACR,OAAKA,IAAUpB,EAAAA,EAAAA,SAAQoB,GAAgBumB,GAErCvgB,EAAAA,EAAAA,OAAKihB,EAAAA,EAAAA,SAAQjnB,GAAQ,SAACknB,EAAGC,GAAC,OAAKC,EAAAA,EAAAA,WAAUD,EAAE,IAAGH,IAC9CT,EAEJ,IAAK,eAGH,OADAnc,OAAOK,UAAUuO,gBAAgBhZ,OAAS,CAAC,EACpCumB,EACT,IAAK,aAEL,IAAK,gBACH,OAAA1kB,EAAAA,EAAA,GAAYhE,GAAU+c,EAAO5N,SAC/B,QACE,OAAOnP,EAEZ,C,sECvCKwpB,EAAsB,CAC1B,CAAEhV,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,MACX,CAAEA,QAAS,OAYN,SAAS6G,EAAuBzZ,GACrC,OAAO6nB,EAAAA,EAAAA,WAAS9D,EAAAA,EAAAA,MAAK6D,GAAqB,SAAA/d,GAAM,OAAIie,EAAAA,EAAAA,SAAQ9nB,EAAM6J,EAAO,IAC3E,C","sources":["webpack://app/./app/javascript/components/Checkbox/Checkbox.js","webpack://app/./app/javascript/components/CurrencyAmount.js","webpack://app/./app/javascript/components/ProcessingThen.js","webpack://app/./app/javascript/components/SweetInput/SweetInput.js","webpack://app/./app/javascript/components/Thermometer.js","webpack://app/./app/javascript/components/WelcomeMember/WelcomeMember.js","webpack://app/./app/javascript/components/Stepper/StepContent.js","webpack://app/./app/javascript/components/Stepper/Step.js","webpack://app/./app/javascript/components/Stepper/Stepper.js","webpack://app/./app/javascript/components/ShowIf.js","webpack://app/./app/javascript/components/Stepper/StepWrapper.js","webpack://app/./app/javascript/components/DonationBands/DonationBandButton.js","webpack://app/./app/javascript/components/DonationBands/DonationBands.js","webpack://app/./app/javascript/components/AmountSelection/AmountSelection.js","webpack://app/./app/javascript/components/FieldShape/FieldShape.js","webpack://app/./app/javascript/components/MemberDetailsForm/MemberDetailsForm.js","webpack://app/./app/javascript/shared/recaptcha/index.ts","webpack://app/./app/javascript/components/Braintree/PayPal.js","webpack://app/./app/javascript/components/Braintree/BraintreeCardFields.js","webpack://app/./app/javascript/components/ExpressDonation/PaymentMethodWrapper.js","webpack://app/./app/javascript/components/Payment/PaymentTypeSelection.js","webpack://app/./app/javascript/util/nameSplitter.js","webpack://app/./app/javascript/components/Payment/ProcessLocalPayment.js","webpack://app/./app/javascript/components/DonateButton.js","webpack://app/./app/javascript/components/ReCaptchaBranding.tsx","webpack://app/./app/javascript/components/WeeklyDonationFinePrint.tsx","webpack://app/./app/javascript/components/ExpressDonation/PaymentMethod.js","webpack://app/./app/javascript/util/getBraintreeErrorMessages.js","webpack://app/./app/javascript/components/ExpressDonation/ExpressDonation.js","webpack://app/./app/javascript/components/Payment/Payment.js","webpack://app/./app/javascript/components/CurrencySelector/CurrencySelector.js","webpack://app/./app/javascript/components/OneClick/OneClick.js","webpack://app/./app/javascript/plugins/fundraiser/utils.ts","webpack://app/./app/javascript/experiments/unintended-donations.js","webpack://app/./app/javascript/plugins/fundraiser/FundraiserView.js","webpack://app/./app/javascript/plugins/fundraiser/index.tsx","webpack://app/./app/javascript/shared/pub_sub.js","webpack://app/./app/javascript/state/experiments/index.js","webpack://app/./app/javascript/state/fundraiser/actions.js","webpack://app/./app/javascript/state/member/reducer.js","webpack://app/./app/javascript/util/directDebitDecider.js"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\n\nimport './Checkbox.scss';\n\nconst Checkbox = props => {\n return (\n <div className={classnames('Checkbox', props.className)}>\n <label className=\"Checkbox__label\">\n <input\n type=\"checkbox\"\n disabled={props.disabled}\n checked={props.checked}\n defaultChecked={props.defaultChecked}\n onChange={props.onChange}\n />\n {props.children}\n </label>\n </div>\n );\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport { FormattedNumber } from 'react-intl';\n\nconst CONFIG = {\n style: 'currency',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n};\n\nexport default function CurrencyAmount(props) {\n const { currency, amount } = props;\n switch (currency) {\n case 'USD':\n case 'NZD':\n case 'CAD':\n case 'MXN':\n case 'BRL':\n case 'ARS':\n case 'AUD':\n return (\n <span style={{ pointerEvents: 'none' }}>\n {'$'}\n <FormattedNumber {...CONFIG} style=\"decimal\" value={props.amount} />\n </span>\n );\n case 'EUR':\n return (\n <span style={{ pointerEvents: 'none' }}>\n <FormattedNumber {...CONFIG} style=\"decimal\" value={props.amount} />\n {'€'}\n </span>\n );\n default:\n return <FormattedNumber {...CONFIG} currency={currency} value={amount} />;\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default props => {\n if (props.processing) {\n return <FormattedMessage id=\"processing\" defaultMessage=\"Processing...\" />;\n }\n\n return <span>{props.children}</span>;\n};\n","// weak\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\n\nexport default class SweetInput extends Component {\n constructor(props) {\n super(props);\n this.state = {\n focused: false,\n };\n }\n\n static defaultProps = {\n value: '',\n name: '',\n label: '',\n type: 'text',\n errorMessage: '',\n hasError: false,\n };\n\n hasError() {\n return this.props.hasError || !!this.props.errorMessage;\n }\n\n onChange = e => {\n if (this.props.onChange) {\n this.props.onChange(e.currentTarget.value);\n }\n };\n\n onFocus = () => {\n this.refs.input.focus();\n this.setState({ focused: true });\n };\n\n onBlur = () => this.setState({ focused: false });\n\n render() {\n const className = classnames('sweet-placeholder', this.props.className);\n const labelClassName = classnames({\n 'sweet-placeholder__label': true,\n 'sweet-placeholder__label--full':\n !!this.props.value && !this.state.focused,\n 'sweet-placeholder__label--active': this.state.focused,\n 'has-error': this.hasError(),\n });\n const inputClassName = classnames('sweet-placeholder__field', {\n 'has-error': this.hasError(),\n });\n\n return (\n <div className={className}>\n <label className={labelClassName} onClick={this.onFocus}>\n {this.props.label}\n </label>\n <input\n ref=\"input\"\n value={this.props.value || ''}\n name={this.props.name}\n type={this.props.type}\n required={this.props.required}\n onChange={this.onChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n className={inputClassName}\n />\n {this.props.errorMessage && (\n <span className=\"error-msg\">{this.props.errorMessage}</span>\n )}\n </div>\n );\n }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { isEmpty, min } from 'lodash';\nimport CurrencyAmount from './CurrencyAmount';\nimport './Thermometer.scss';\n\nexport function Thermometer(props) {\n // Only render if active\n if (isEmpty(props) || !props.active) return null;\n const currency = props.currency;\n const goal = props.goals[currency];\n\n // Prevent overflow when donations > goal.\n const donations = min([\n props.total_donations[currency],\n props.goals[currency],\n ]);\n\n const percentage = Math.round((donations / goal) * 100);\n\n if (goal === 0) return null;\n\n return (\n <div className=\"Thermometer\">\n <div className=\"Thermometer-stats\">\n <div className=\"Thermometer-raised\">\n <FormattedMessage\n className=\"Thermometer-stats-label\"\n id=\"fundraiser.thermometer.raised\"\n defaultMessage=\"Raised\"\n />\n <br />\n <span className=\"amount\">\n <CurrencyAmount amount={donations} currency={currency} />\n </span>\n </div>\n <div className=\"Thermometer-goal\">\n <FormattedMessage\n className=\"Thermometer-stats-label\"\n id=\"fundraiser.thermometer.goal\"\n defaultMessage=\"Goal\"\n />\n <br />\n <span className=\"amount\">\n <CurrencyAmount amount={goal} currency={currency} />\n </span>\n </div>\n </div>\n <div className=\"Thermometer-bg\">\n <div\n className=\"Thermometer-mercury\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n}\n\nconst mapStateToProps = state => {\n const data = state.donationsThermometer;\n const currency = state.fundraiser.currency;\n if (isEmpty(data)) return {};\n return {\n active: data.active,\n currency,\n total_donations: data.totalDonations,\n goals: data.goals,\n offset: data.offset,\n title: data.title,\n };\n};\n\nexport default connect(mapStateToProps)(Thermometer);\n","/*\n * Description\n * ===========\n * This small widget displays the member's name and a link to reset the member\n * if it isn't them. I'm using fa-icons for now, so it's not self-contained\n * which means we should eventually refactor this once we've moved all components\n * to react.\n *\n * PREVIOUS MARKUP\n * ===============\n * <div class=\"action-form__welcome-text\">\n * <i class=\"fa fa-check-square-o fundraiser-bar__user-icon\"></i>\n * <span class=\"action-form__welcome-name\">John Doe</span> <br>\n * <a href=\"javascript:;\" class=\" action-form__clear-form\">Not you?</a>\n * </div>\n */\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport './WelcomeMember.scss';\n\nexport default function WelcomeMember(props) {\n if (!props.member || (!props.member.name && !props.member.email)) return null;\n\n return (\n <div className=\"WelcomeMember\">\n <div className=\"WelcomeMember__name\">\n <i className=\"WelcomeMember__icon fa fa-check-circle\" />\n <span>{props.member.name || props.member.email}</span>\n </div>\n <a className=\"WelcomeMember__link\" onClick={props.resetMember}>\n <FormattedMessage id=\"form.switch_user\" />\n </a>\n </div>\n );\n}\n","import React, { Component, Children } from 'react';\nimport classnames from 'classnames';\n\nexport default class StepContent extends Component {\n render() {\n const { children, visible } = this.props;\n const className = classnames({\n StepContent: true,\n 'StepContent-hidden': !visible,\n });\n return <div className={className}>{Children.only(children)}</div>;\n }\n}\n","/* */\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\nimport './Step.scss';\n\nexport default class Step extends Component {\n render() {\n const { active, complete, index, label } = this.props;\n const rootClasses = classnames({\n Step: true,\n 'Step--active': active,\n 'Step--complete': complete,\n });\n\n return (\n <div className={rootClasses} onClick={this.props.onClick}>\n <div className=\"Step__circle\">\n <FormattedMessage\n id={`fundraiser.donation_steps.number${index + 1}`}\n defaultMessage={`${index + 1}`}\n />\n </div>\n <div className=\"Step__label\">{label}</div>\n </div>\n );\n }\n}\n","/* */\nimport React, { Component } from 'react';\nimport Step from './Step';\n\nexport default class Stepper extends Component {\n changeStep(index) {\n if (this.props.currentStep > index) {\n this.props.changeStep(index);\n }\n }\n\n renderStep(step, index) {\n const { currentStep } = this.props;\n return (\n <Step\n key={index}\n index={index}\n label={step}\n active={currentStep === index}\n complete={currentStep > index}\n onClick={() => this.changeStep(index)}\n />\n );\n }\n\n render() {\n return (\n <div className=\"Stepper fundraiser-bar__top\">\n <h2 className=\"Stepper__header\">{this.props.title}</h2>\n <div className=\"Stepper__steps\">\n <hr className=\"Stepper__line\" />\n <div className=\"Step__wrapper\">\n {this.props.steps.map((step, index) =>\n this.renderStep(step, index)\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\n// <ShowIf /> *renders* its children, but hides them with CSS if\n// `props.condition` is falsy, as opposed to not rendering the node at all\n// which won't trigger the lifecycle methods. Use this when you want the component\n// to be mounted but not displayed, and its lifecycle methods to be triggered,\n// but you don't want to display the component, and you don't want to add that\n// show/hide display logic to the child components.\nexport default props => {\n const style = {};\n let className = 'ShowIf--visible';\n\n if (!props.children) return null;\n\n if (!props.condition) {\n style.display = 'none';\n className = 'ShowIf--hidden';\n }\n\n return (\n <div style={style} className={'ShowIf ' + className}>\n {props.children}\n </div>\n );\n};\n","import React, { Component, Children, cloneElement } from 'react';\nimport Stepper from './Stepper';\nimport ShowIf from '../ShowIf';\nimport { FormattedMessage } from 'react-intl';\nimport _ from 'lodash';\nimport './Stepper.scss';\n\nexport default class StepWrapper extends Component {\n constructor(props) {\n super(props);\n this.state = {\n steps: [],\n };\n }\n\n getTitles() {\n const { children } = this.props;\n if (!children) return [];\n return Children.map(_.compact(children), child => child.props.title);\n }\n\n childrenWithExtraProps(children) {\n return Children.map(_.compact(children), (child, index) =>\n cloneElement(child, { visible: index === this.props.currentStep })\n );\n }\n\n normalState() {\n const stepperProps = {\n ...this.props,\n steps: this.getTitles(),\n };\n return (\n <div className=\"StepWrapper-root\">\n <div className=\"overlay-toggle__mobile-ui\">\n <a className=\"overlay-toggle__close-button\">✕</a>\n </div>\n <Stepper {...stepperProps} />\n <div className=\"fundraiser-bar__main\">\n {this.childrenWithExtraProps(this.props.children)}\n </div>\n </div>\n );\n }\n\n submissionState() {\n return (\n <div className=\"submission-interstitial\">\n <h1 className=\"submission-interstitial__title\">\n <i className=\"fa fa-spin fa-cog\" />\n <FormattedMessage id=\"form.processing\" />\n </h1>\n <h4>\n <FormattedMessage id=\"form.do_not_close\" />\n </h4>\n </div>\n );\n }\n\n render() {\n return (\n <div>\n <ShowIf condition={!this.props.submitting}>{this.normalState()}</ShowIf>\n <ShowIf condition={this.props.submitting}>\n {this.submissionState()}\n </ShowIf>\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport CurrencyAmount from '../CurrencyAmount';\nimport classnames from 'classnames';\nimport Button from '../Button/Button';\nimport './DonationBandButton.css';\n\nexport default function DonationBandButton(props) {\n const className = classnames({\n DonationBandButton: true,\n 'DonationBandButton--highlight': props.featuredAmount === props.amount,\n 'DonationBandButton--shade':\n !!props.featuredAmount && props.featuredAmount !== props.amount,\n });\n\n return (\n <Button\n className={className}\n onClick={props.onClick}\n name={props.name}\n id={props.id}\n >\n <CurrencyAmount currency={props.currency} amount={props.amount} />\n </Button>\n );\n}\n","/* */\nimport React, { Component } from 'react';\n\nimport { injectIntl } from 'react-intl';\nimport DonationBandButton from './DonationBandButton';\nimport './DonationBands.css';\n\nexport class DonationBands extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n customAmount: props.customAmount,\n };\n }\n\n onButtonClicked(e, amount = 0) {\n e.preventDefault();\n this.props.setSelectedAmountButton(e.target);\n this.setState({ customAmount: undefined });\n this.props.selectAmount(amount);\n this.props.proceed();\n }\n\n onInputUpdated(value) {\n // Remove non-digit characters before parsing\n const number = value.replace(/\\D/g, '');\n const amount = number ? parseFloat(number) : undefined;\n this.setState({ customAmount: amount });\n this.props.setIsCustomAmount(true, amount);\n if (this.props.selectCustomAmount) {\n this.props.selectCustomAmount(amount);\n } else {\n this.props.selectAmount(amount);\n }\n }\n\n customFieldDisplay() {\n if (!this.state.customAmount) return '';\n return this.props.intl.formatNumber(this.state.customAmount, {\n currency: this.props.currency,\n style: 'currency',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n }\n\n render() {\n const { amounts } = this.props;\n return (\n <div className=\"DonationBands-container\">\n {amounts.map((amount, i) => (\n <DonationBandButton\n key={i}\n name={i + 1}\n id={`DonationBands-${i + 1}`}\n amount={amount}\n featuredAmount={this.props.featuredAmount}\n currency={this.props.currency}\n onClick={event => this.onButtonClicked(event, amount)}\n />\n ))}\n <input\n type=\"tel\"\n ref=\"customAmount\"\n id=\"DonationBands-custom-amount\"\n className=\"DonationBands__input\"\n placeholder={this.props.intl.formatMessage({\n id: 'fundraiser.other_amount',\n })}\n pattern={/^[0-9]+$/}\n value={this.customFieldDisplay()}\n onChange={e => this.onInputUpdated(e.currentTarget.value)}\n />\n </div>\n );\n }\n}\n\nexport default injectIntl(DonationBands);\n","import * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport DonationBands from '../DonationBands/DonationBands';\nimport Button from '../Button/Button';\nimport ee from '../../shared/pub_sub';\nimport Thermometer from '../Thermometer';\n\nimport CurrencyAmount from '../../components/CurrencyAmount';\n\nexport default class AmountSelection extends React.Component {\n static title(amount, currency) {\n if (amount == null) {\n return (\n <FormattedMessage id=\"fundraiser.amount\" defaultMessage=\"AMOUNT\" />\n );\n }\n return <CurrencyAmount amount={amount} currency={currency} />;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n customAmount: null,\n currencyDropdVisible: false,\n };\n }\n\n componentDidUpdate() {\n ee.emit('sidebar:height_change');\n }\n\n toggleCurrencyDropd() {\n this.setState({\n currencyDropdVisible: !this.state.currencyDropdVisible,\n });\n }\n\n onSelectCurrency(currency) {\n const label = this.props.currency\n ? `from_${this.props.currency}_to_${currency}`\n : currency;\n ee.emit('change_currency', label);\n this.props.changeCurrency(currency);\n }\n\n selectFeaturedAmount() {\n if (this.props.donationFeaturedAmount) {\n this.props.selectAmount(this.props.donationFeaturedAmount);\n this.props.proceed();\n }\n }\n\n proceed() {\n if (!this.props.donationAmount && this.props.donationFeaturedAmount) {\n this.props.selectAmount(this.props.donationFeaturedAmount);\n }\n\n this.props.proceed();\n }\n\n render() {\n return (\n <div className=\"AmountSelection-container section\">\n <Thermometer />\n <DonationBands\n ref=\"donationBands\"\n amounts={this.props.donationBands[this.props.currency]}\n currency={this.props.currency}\n proceed={this.props.proceed}\n featuredAmount={this.props.donationFeaturedAmount}\n selectAmount={this.props.selectAmount}\n selectCustomAmount={this.props.selectCustomAmount}\n setSelectedAmountButton={this.props.setSelectedAmountButton}\n setIsCustomAmount={this.props.setIsCustomAmount}\n />\n <p>\n <FormattedMessage\n id=\"fundraiser.currency_in\"\n defaultMessage=\"Values shown in {currency}.\"\n values={{ currency: this.props.currency }}\n />\n . \n <a\n onClick={this.toggleCurrencyDropd.bind(this)}\n className=\"AmountSelection__currency-toggle\"\n >\n <FormattedMessage\n id=\"fundraiser.switch_currency\"\n defaultMessage=\"Switch currency\"\n />\n </a>\n </p>\n {this.state.currencyDropdVisible && (\n <select\n value={this.props.currency}\n className=\"AmountSelection__currency-selector\"\n onChange={e => this.onSelectCurrency(e.currentTarget.value)}\n >\n {Object.keys(this.props.donationBands).map(currency => {\n return (\n <option key={currency} value={currency}>\n {currency}\n </option>\n );\n })}\n </select>\n )}\n\n {(this.props.donationAmount || this.props.donationFeaturedAmount) && (\n <Button\n className=\"btn AmountSelection__proceed-button\"\n onClick={() => this.proceed()}\n disabled={\n !(this.props.donationAmount || this.props.donationFeaturedAmount)\n }\n >\n {this.props.nextStepTitle ? (\n this.props.nextStepTitle\n ) : (\n <FormattedMessage\n id=\"fundraiser.proceed_to_details\"\n defaultMessage=\"Proceed to details\"\n />\n )}\n </Button>\n )}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport { map, pick } from 'lodash';\nimport SweetInput from '../SweetInput/SweetInput';\nimport SelectCountry from '../SelectCountry/SelectCountry';\nimport SweetSelect from '../SweetSelect/SweetSelect';\nimport Checkbox from '../Checkbox/Checkbox';\n\nexport default class FieldShape extends Component {\n checkboxToggle(event) {\n const checked = event.currentTarget.checked;\n this.props.onChange && this.props.onChange(checked ? '1' : '0');\n }\n\n fieldProps() {\n const { field, value } = this.props;\n return {\n name: field.name,\n label: field.label,\n disabled: field.disabled,\n required: field.required,\n value: value,\n errorMessage: this.props.errorMessage,\n onChange: this.props.onChange,\n };\n }\n\n errorMessage(fieldProps) {\n if (fieldProps.errorMessage)\n return <span className=\"error-msg\">{fieldProps.errorMessage}</span>;\n }\n\n renderParagraph(fieldProps) {\n return (\n <div>\n <textarea\n name={fieldProps.name}\n value={fieldProps.value}\n placeholder={fieldProps.label}\n onChange={e =>\n fieldProps.onChange && fieldProps.onChange(e.currentTarget.value)\n }\n className={fieldProps.errorMessage ? 'has-error' : ''}\n maxLength=\"9999\"\n />\n {this.errorMessage(fieldProps)}\n </div>\n );\n }\n\n renderCheckbox(fieldProps) {\n fieldProps.value = (fieldProps.value || '0').toString();\n const checked =\n fieldProps.value === '1' ||\n fieldProps.value === 'checked' ||\n fieldProps.value === 'true';\n return (\n <div>\n <Checkbox checked={checked} onChange={this.checkboxToggle.bind(this)}>\n {fieldProps.label}\n </Checkbox>\n {this.errorMessage(fieldProps)}\n </div>\n );\n }\n\n renderChoice(fieldProps) {\n const { field } = this.props;\n return (\n <div className=\"radio-container\">\n <div className=\"form__instruction\">{fieldProps.label}</div>\n {field.choices &&\n field.choices.map(choice => (\n <label key={choice.id} htmlFor={choice.id}>\n <input\n id={choice.id}\n name={fieldProps.name}\n type=\"radio\"\n value={choice.value}\n checked={choice.value === fieldProps.value}\n onChange={event =>\n this.props.onChange &&\n this.props.onChange(event.currentTarget.value)\n }\n />\n {choice.label}\n </label>\n ))}\n {this.errorMessage(fieldProps)}\n </div>\n );\n }\n\n renderField(type) {\n const fieldProps = this.fieldProps();\n const {\n field: { default_value, name, choices },\n } = this.props;\n\n switch (type) {\n case 'email':\n return <SweetInput type=\"email\" {...fieldProps} />;\n case 'phone':\n case 'numeric':\n return <SweetInput type=\"tel\" {...fieldProps} />;\n case 'country':\n return <SelectCountry {...fieldProps} />;\n case 'dropdown':\n case 'select':\n return (\n <SweetSelect\n {...fieldProps}\n options={map(choices, c => pick(c, 'value', 'label'))}\n />\n );\n case 'hidden':\n return <input type=\"hidden\" name={name} value={default_value} />;\n case 'checkbox':\n return this.renderCheckbox(fieldProps);\n case 'choice':\n return this.renderChoice(fieldProps);\n case 'instruction':\n return <div className=\"form__instruction\">{fieldProps.label}</div>;\n case 'paragraph':\n return this.renderParagraph(fieldProps);\n case 'text':\n case 'postal':\n default:\n return <SweetInput type=\"text\" {...fieldProps} />;\n }\n }\n\n render() {\n return (\n <div\n key={this.props.field.name}\n className={`MemberDetailsForm-field form__group action-form__field-container ${this\n .props.className || ''}`}\n >\n {this.renderField(this.props.field.data_type)}\n </div>\n );\n }\n}\n","// weak\nimport React, { Component } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport Button from '../Button/Button';\nimport { updateForm } from '../../state/fundraiser/actions';\nimport FieldShape from '../FieldShape/FieldShape';\nimport ee from '../../shared/pub_sub';\n\nexport class MemberDetailsForm extends Component {\n static title = <FormattedMessage id=\"details\" defaultMessage=\"details\" />;\n\n HIDDEN_FIELDS = [\n 'source',\n 'akid',\n 'referrer_id',\n 'rid',\n 'bucket',\n 'referring_akid',\n ];\n\n constructor(props) {\n super(props);\n\n this.state = {\n errors: {},\n loading: false,\n };\n }\n\n componentDidMount() {\n this.prefill();\n this.bindGlobalEvents();\n }\n\n bindGlobalEvents() {\n ee.on('fundraiser:actions:validate_form', this.validate);\n }\n\n prefill() {\n const data = {};\n for (const field of this.props.fields) {\n data[field.name] = this.props.formValues[field.name]\n ? this.props.formValues[field.name]\n : field.default_value;\n }\n\n for (const name of this.HIDDEN_FIELDS) {\n if (this.props.formValues[name]) {\n data[name] = this.props.formValues[name];\n }\n }\n this.props.updateForm({ ...this.props.form, ...data });\n }\n\n getFieldError(field) {\n const error = this.state.errors[field];\n if (!error) return null;\n return <FormattedMessage {...error} />;\n }\n\n buttonText() {\n if (this.state.loading) {\n return (\n <FormattedMessage id=\"form.processing\" defaultMessage=\"Processing...\" />\n );\n } else if (this.props.buttonText) {\n return this.props.buttonText;\n } else {\n return <FormattedMessage id=\"form.submit\" defaultMessage=\"Submit\" />;\n }\n }\n\n handleSuccess() {\n ee.emit('fundraiser:form:success');\n this.setState({ errors: {} }, () => {\n if (this.props.proceed) {\n this.props.proceed();\n }\n });\n }\n\n handleFailure(response) {\n ee.emit('fundraiser:form:error', response);\n const errors = _.mapValues(response.errors, ([message]) => {\n return {\n id: 'errors.this_field_with_message',\n defaultMessage: 'This field {message}',\n values: { message },\n };\n });\n\n this.setState({ errors });\n }\n\n updateField(key, value) {\n this.state.errors[key] = null; // reset error message when field value changes\n this.props.updateForm({\n ...this.props.form,\n [key]: value,\n });\n }\n\n validate = () => {\n this.setState({ loading: true });\n // TODO\n // Use a proper xhr lib if we want to make our lives easy.\n fetch(`/api/pages/${this.props.pageId}/actions/validate`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n accept: 'application/json',\n },\n body: JSON.stringify({ ...this.props.form, form_id: this.props.formId }),\n }).then(\n response => {\n this.setState({ loading: false });\n if (response.ok) {\n return response.json().then(this.handleSuccess.bind(this));\n }\n return response.json().then(this.handleFailure.bind(this));\n },\n failure => {\n this.setState({ loading: false });\n }\n );\n };\n\n fieldsToDisplay() {\n return this.props.fields.filter(field => {\n switch (field.display_mode) {\n case 'all_members':\n return true;\n case 'recognized_members_only':\n return this.recognizedMemberPresent();\n case 'new_members_only':\n return !this.recognizedMemberPresent();\n default:\n console.log(\n `Unknown display_mode \"${field.display_mode}\" for field \"${field.name}\"`\n );\n return false;\n }\n });\n }\n\n recognizedMemberPresent() {\n return !!this.props.formValues.email;\n }\n\n onSubmit = e => {\n e.preventDefault();\n this.validate();\n };\n\n render() {\n const { loading } = this.state;\n\n return (\n <div className=\"MemberDetailsForm-root\">\n <form onSubmit={this.onSubmit} className=\"form--big action-form\">\n {this.fieldsToDisplay().map(field => (\n <FieldShape\n key={field.name}\n errorMessage={this.getFieldError(field.name)}\n onChange={value => this.updateField(field.name, value)}\n value={this.props.form[field.name]}\n field={field}\n />\n ))}\n\n <Button\n type=\"submit\"\n disabled={loading}\n className=\"action-form__submit-button\"\n >\n {this.buttonText()}\n </Button>\n </form>\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n formId: state.fundraiser.formId,\n form: state.fundraiser.form,\n});\n\nconst mapDispatchToProps = dispatch => ({\n updateForm: form => dispatch(updateForm(form)),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MemberDetailsForm);\n","import './recaptcha.css';\n\nconst MAX_RETRIES = 4;\nexport interface IReCaptchaInstance {\n ready: (cb: () => any) => void;\n enterprise: {\n ready: (cb: () => any) => Promise<string>;\n execute: (siteKey: string, options: IExecuteOptions) => Promise<string>;\n };\n}\ninterface IExecuteOptions {\n action: string;\n}\n\nconst getToken = (options: IExecuteOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n window.grecaptcha.enterprise.ready(() => {\n window.grecaptcha.enterprise\n .execute(window.champaign.configuration.recaptcha3.siteKey, options)\n .then((token: string) => {\n resolve(token);\n })\n .catch((error: Error) => {\n reject(error);\n });\n });\n });\n};\n\nexport const execute = async (options: IExecuteOptions): Promise<string> => {\n try {\n const token = await getToken(options);\n console.log('Token received');\n return token;\n } catch (error) {\n return new Promise((resolve, reject) => {\n let retries = 0;\n const interval = setInterval(() => {\n if (retries >= MAX_RETRIES) {\n clearInterval(interval);\n reject(error);\n }\n getToken(options)\n .then((token: string) => {\n clearInterval(interval);\n resolve(token);\n })\n .catch(() => {\n retries++;\n });\n }, 1000);\n });\n }\n};\n\nexport default {\n execute,\n};\n","import { Component } from 'react';\nimport paypal from 'braintree-web/paypal';\n\nexport default class PayPal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n paypalInstance: null,\n disabled: true,\n };\n }\n\n componentDidMount() {\n if (this.props.client) {\n this.createPayPalInstance(this.props.client);\n }\n }\n\n componentWillReceiveProps(newProps) {\n if (newProps.client !== this.props.client) {\n this.createPayPalInstance(newProps.client);\n }\n }\n\n createPayPalInstance(client) {\n if (!client) return;\n paypal.create({ client }, this.onPayPalCreate.bind(this));\n }\n\n onPayPalCreate(error, paypalInstance) {\n if (error) {\n if (window.Sentry) {\n window.Sentry.captureException(error);\n }\n return;\n }\n\n this.setState({ paypalInstance, disabled: false }, () => {\n if (this.props.onInit) {\n this.props.onInit();\n }\n });\n }\n\n flow() {\n if (this.props.vault) return 'vault';\n return 'checkout';\n }\n\n tokenizeOptions() {\n const { amount, currency, vault } = this.props;\n if (vault) {\n return { flow: 'vault' };\n }\n return { flow: 'checkout', amount, currency };\n }\n\n submit() {\n const TIMEOUT_ERROR = 'PayPal Request timed out';\n const UNHANDLED_ERROR = 'Unhandled Error in PayPal';\n const NO_PAYPAL_INSTANCE_ERROR = 'No PayPal instance available';\n\n const captureError = (error, message) => {\n if (window.Sentry) {\n if (error) {\n window.Sentry.captureException(error);\n } else {\n window.Sentry.captureMessage(message);\n }\n }\n };\n\n try {\n const paypalInstance = this.state.paypalInstance;\n\n let didTimeout = false;\n\n const paypalPromise = new Promise((resolve, reject) => {\n if (!paypalInstance) {\n captureError(null, NO_PAYPAL_INSTANCE_ERROR);\n return reject(NO_PAYPAL_INSTANCE_ERROR);\n }\n\n paypalInstance.tokenize(this.tokenizeOptions(), (error, payload) => {\n if (didTimeout) {\n captureError(\n error,\n `${TIMEOUT_ERROR} but eventually resolved, member got error message`\n );\n return; // Ignore if the timeout has been reached\n }\n if (error) {\n captureError(error);\n return reject(error);\n }\n resolve(payload);\n });\n });\n\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => {\n didTimeout = true;\n reject(TIMEOUT_ERROR);\n }, 150000); // 2.5 minutes timeout\n });\n\n return Promise.race([paypalPromise, timeoutPromise]);\n } catch (exception) {\n captureError(exception);\n return Promise.reject(UNHANDLED_ERROR);\n }\n }\n\n render() {\n return null;\n }\n}\n","import React, { Component } from 'react';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport classnames from 'classnames';\nimport braintree from 'braintree-web';\nimport hostedFields from 'braintree-web/hosted-fields';\nimport './Braintree.scss';\nimport ee from '../../shared/pub_sub';\n\nclass BraintreeCardFields extends Component {\n constructor(props) {\n super(props);\n const lang = window.champaign.page.language_code;\n this.state = {\n hostedFields: null,\n errors: {\n number: false,\n expirationDate: false,\n cvv: false,\n },\n styles: {\n input: {\n color: '#333',\n 'font-size': '16px',\n ...(lang === 'ar' && {\n 'text-align': 'right',\n }),\n },\n ':focus': { color: '#333' },\n '.valid': { color: '#333' },\n },\n fields: {\n number: Object.freeze({\n selector: '#braintree-card-number',\n placeholder: this.props.intl.formatMessage({\n id: 'fundraiser.fields.number',\n defaultMessage: 'Card number',\n }),\n }),\n cvv: Object.freeze({\n selector: '#braintree-cvv',\n placeholder: this.props.intl.formatMessage({\n id: 'fundraiser.fields.cvv',\n defaultMessage: 'CVV',\n }),\n }),\n expirationDate: Object.freeze({\n selector: '#braintree-expiration-date',\n placeholder: this.props.intl.formatMessage({\n id: 'fundraiser.fields.expiration_format',\n defaultMessage: 'MM/YY',\n }),\n }),\n },\n };\n }\n\n bindGlobalEvents() {\n ee.on('fundraiser:configure:hosted_fields', this.configureHostedFields);\n }\n\n configureHostedFields = (config = {}) => {\n this.setState(\n {\n styles: config.styles || this.state.styles,\n fields: config.fields || this.state.fields,\n },\n () => {\n if (this.state.hostedFields) {\n return this.teardown();\n }\n\n if (this.props.client) {\n return this.createHostedFields(this.props.client);\n }\n }\n );\n };\n\n componentDidMount() {\n if (this.props.client) {\n this.createHostedFields(this.props.client);\n }\n this.bindGlobalEvents();\n }\n\n componentWillReceiveProps(newProps) {\n if (newProps.client !== this.props.client && newProps.client) {\n this.createHostedFields(newProps.client);\n }\n }\n\n componentWillUnmount() {\n if (this.state.hostedFields) {\n this.state.hostedFields.teardown();\n }\n }\n\n createHostedFields(client) {\n Promise.all([\n braintree.threeDSecure.create(\n {\n client: client,\n version: 2,\n },\n (err, threeDSInstance) => {\n if (err) {\n if (window.Sentry) {\n window.Sentry.captureException(err);\n }\n return;\n }\n\n this.setState({ threeDS: threeDSInstance });\n }\n ),\n hostedFields.create(\n {\n client,\n styles: this.state.styles,\n fields: this.state.fields,\n },\n (err, hostedFieldsInstance) => {\n if (err) {\n if (window.Sentry) {\n window.Sentry.captureException(err);\n }\n ee.emit('fundraiser:configure:hosted_fields:error', err);\n return;\n }\n ee.emit(\n 'fundraiser:configure:hosted_fields:success',\n hostedFieldsInstance\n );\n\n this.setState({ hostedFields: hostedFieldsInstance }, () => {\n if (this.props.onInit) {\n this.props.onInit();\n }\n });\n\n hostedFieldsInstance.on('validityChange', event => {\n const field = event.fields[event.emittedBy];\n const newErrors = {};\n newErrors[event.emittedBy] = !field.isPotentiallyValid;\n this.setState({\n errors: Object.assign({}, this.state.errors, newErrors),\n });\n });\n\n hostedFieldsInstance.on('cardTypeChange', event => {\n if (event.cards.length === 1) {\n this.setState({ cardType: event.cards[0].type });\n } else {\n this.setState({ cardType: '' });\n }\n });\n }\n ),\n ]);\n }\n\n teardown() {\n if (!this.state.hostedFields) return null;\n this.state.hostedFields.teardown(() =>\n this.createHostedFields(this.props.client)\n );\n }\n\n submit(event) {\n if (event) event.preventDefault();\n const donationAmount = this.props.amount;\n this.resetErrors();\n\n return new Promise((resolve, reject) => {\n if (!this.state.hostedFields) return reject();\n\n this.state.hostedFields.tokenize(\n {\n vault: this.props.recurring,\n },\n (error, data) => {\n if (error) {\n this.processTokenizeErrors(error);\n return reject(error);\n }\n if (this.state.threeDS) {\n this.state.threeDS\n .verifyCard({\n onLookupComplete: function(data, next) {\n next();\n },\n nonce: data.nonce,\n bin: data.details.bin,\n amount: donationAmount,\n challengeRequested: true,\n })\n .then(function(response) {\n if (\n !response.liabilityShifted &&\n response.liabilityShiftPossible\n ) {\n const error = { code: '3DS' };\n reject(error);\n }\n\n resolve(response);\n })\n .catch(function(err) {\n console.log(err);\n reject(err);\n });\n } else {\n resolve(data);\n this.teardown();\n }\n }\n );\n });\n }\n\n resetErrors() {\n const newErrors = {};\n Object.keys(this.state.errors).forEach(key => {\n newErrors[key] = false;\n });\n this.setState({ errors: newErrors });\n }\n\n processTokenizeErrors(error) {\n if (error.code === 'HOSTED_FIELDS_FIELDS_INVALID') {\n const errors = Object.assign({}, this.state.errors);\n for (const key of error.details.invalidFieldKeys) {\n errors[key] = true;\n }\n this.setState({ errors: errors });\n }\n }\n\n currentCardClass(cardType = 'hidden-irrelevant') {\n const icons = {\n 'diners-club': 'fa-cc-diners-club',\n jcb: 'fa-cc-jcb',\n 'american-express': 'fa-cc-amex',\n discover: 'fa-cc-discover',\n 'master-card': 'fa-cc-mastercard',\n visa: 'fa-cc-visa',\n 'hidden-irrelevant': 'hidden-irrelevant',\n };\n\n return icons[cardType];\n }\n\n render() {\n const prefix = 'BraintreeCardFields';\n const classNames = classnames({\n [prefix]: true,\n [`${prefix}--active`]: this.props.isActive,\n });\n return (\n <div className={classNames}>\n <form\n id=\"braintree-hosted-fields-form\"\n className=\"BraintreeCardFields__form\"\n method=\"post\"\n onSubmit={this.submit}\n >\n <div\n id=\"braintree-card-number\"\n className=\"BraintreeCardFields__hosted-field BraintreeCardFields__card-number\"\n >\n {' '}\n </div>\n <span\n ref=\"card_type\"\n className={\n 'BraintreeCardFields__card-type fa-brands ' +\n this.currentCardClass(this.state.cardType)\n }\n />\n {this.state.errors.number && this.renderError('number')}\n <div className=\"BraintreeCardFields__row clearfix\">\n <div\n id=\"braintree-cvv\"\n className=\"BraintreeCardFields__hosted-field BraintreeCardFields__cvv\"\n />\n <div\n id=\"braintree-expiration-date\"\n className=\"BraintreeCardFields__hosted-field BraintreeCardFields__expiration-date\"\n />\n </div>\n {this.state.errors.cvv &&\n this.renderError('cvv', 'BraintreeCardFields__error-msg--col-left')}\n {this.state.errors.expirationDate &&\n this.renderError(\n 'expiration',\n 'BraintreeCardFields__error-msg--col-right'\n )}\n </form>\n <div className=\"clearfix\"> </div>\n </div>\n );\n }\n\n renderError(field, className = '') {\n return (\n <div className={`BraintreeCardFields__error-msg error-msg ${className}`}>\n <FormattedMessage\n id={`fundraiser.field_names.${field}`}\n defaultMessage={`${field} (missing transl)`}\n />\n \n <FormattedMessage\n id=\"errors.probably_invalid\"\n defaultMessage=\"doesn't look right (missing transl)\"\n />\n </div>\n );\n }\n}\n\nexport default injectIntl(BraintreeCardFields, { withRef: true });\n","import React from 'react';\n\nexport default function PaymentMethodWrapper(props) {\n return (\n <div className=\"PaymentMethodWrapper\">\n <i className=\"PaymentMethodWrapper__icon fa fa-credit-card\" />\n {props.children}\n </div>\n );\n}\n","import React, { PureComponent } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport classnames from 'classnames';\nimport { without } from 'lodash';\nimport PaymentMethodWrapper from '../ExpressDonation/PaymentMethodWrapper';\n\nexport class PaymentTypeSelection extends PureComponent {\n showCardAndPaypal() {\n if (this.props.directDebitOnly && !this.props.showDirectDebit) return true;\n if (this.props.directDebitOnly) return false;\n return true;\n }\n\n render() {\n const {\n disabled,\n currentPaymentType,\n onChange,\n currency,\n paymentTypes,\n localPaymentTypes,\n } = this.props;\n\n const filteredPaymentTypes = paymentTypes.filter(paymentType => {\n switch (paymentType) {\n case 'paypal':\n return !(currency === 'ARS');\n case 'ideal':\n return localPaymentTypes.includes('ideal');\n default:\n return true;\n }\n });\n\n return (\n <div className=\"PaymentTypeSelection__payment-methods\">\n <PaymentMethodWrapper>\n <span className=\"PaymentTypeSelection__prompt\">\n <FormattedMessage\n id=\"fundraiser.payment_type_prompt\"\n defaultMessage=\"Payment Method\"\n />\n </span>\n\n {filteredPaymentTypes.map((paymentType, i) => {\n return (\n <div className={classnames('PaymentMethod', paymentType)} key={i}>\n <label>\n <input\n disabled={disabled}\n type=\"radio\"\n checked={currentPaymentType === paymentType}\n onChange={e => onChange(paymentType)}\n />\n <FormattedMessage\n id={`fundraiser.payment_methods.${paymentType}`}\n defaultMessage=\"Unknown payment method\"\n />\n </label>\n </div>\n );\n })}\n </PaymentMethodWrapper>\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n directDebitOnly: state.fundraiser.directDebitOnly,\n paymentTypes: state.fundraiser.paymentTypes,\n localPaymentTypes: state.fundraiser.localPaymentTypes,\n recurring: state.fundraiser.recurring,\n showDirectDebit: state.fundraiser.showDirectDebit,\n showIdeal: state.fundraiser.showIdeal,\n currentPaymentType: state.fundraiser.directDebitOnly\n ? 'gocardless'\n : state.fundraiser.currentPaymentType,\n currency: state.fundraiser.currency,\n});\n\nconst mapDispatch = dispatch => ({});\n\nexport default connect(mapStateToProps, mapDispatch)(PaymentTypeSelection);\n","export function getFirstName(fullName) {\n if (!fullName) return ' ';\n let fullNameArray = fullName.split(' ');\n if (fullNameArray.length === 1) return fullName;\n if (fullNameArray.length === 2) {\n return fullNameArray[0];\n } else {\n return fullNameArray\n .slice(0, Math.floor(fullNameArray.length / 2))\n .join(' ');\n }\n}\n\nexport function getLastName(fullName) {\n if (!fullName || fullName.split(' ').length === 1) return ' ';\n\n let fullNameArray = fullName.split(' ');\n\n if (fullNameArray.length === 2) {\n return fullNameArray[1];\n } else {\n return fullNameArray\n .slice(Math.floor(fullNameArray.length / 2), fullNameArray.length)\n .join(' ');\n }\n}\n","import { getFirstName, getLastName } from '../../util/nameSplitter';\n\nexport const ProcessLocalPayment = async ({\n localPaymentInstance,\n pageId,\n data,\n paymentType,\n}) => {\n const { user, amount, currency } = data;\n const { name, country } = user;\n\n const opts = {\n paymentType,\n amount: amount.toFixed(2),\n fallback: {\n // see Fallback section for details on these params\n url:\n window?.champaign?.page?.follow_up_url ||\n `${window.location.href}/follow-up`,\n buttonText: 'Complete Payment',\n },\n currencyCode: currency,\n countryCode: country,\n paymentTypeCountryCode: country,\n givenName: getFirstName(name),\n surname: getLastName(name),\n address: {\n countryCode: country,\n },\n onPaymentStart: function(localData, start) {\n const { paymentId } = localData;\n const payload = {\n paymentId,\n data,\n };\n\n $.post(\n `/api/payment/braintree/pages/${pageId}/local_payment_transaction`,\n payload\n ).then(resp => {\n console.log('Successful Payment');\n });\n\n start();\n },\n };\n\n try {\n const resp = await localPaymentInstance.startPayment(opts);\n return resp.nonce;\n } catch (e) {\n if (window.Sentry) {\n window.Sentry.captureException(e);\n }\n console.log('LocalPayment ERROR', e);\n }\n};\n","import React from 'react';\nimport Button from './Button/Button';\nimport CurrencyAmount from './CurrencyAmount';\nimport ProcessingThen from './ProcessingThen';\nimport { FormattedMessage } from 'react-intl';\nimport './DonateButton.css';\n\nexport default props => {\n let buttonId = 'fundraiser.donation_once';\n let buttonText = 'Donate {amount} Just Once';\n if (props.recurring || props.name == 'recurring') {\n if (props.weekly) {\n buttonId = 'fundraiser.donation_weekly';\n buttonText = 'Donate {amount} Weekly';\n } else {\n buttonId = 'fundraiser.donation_recurring';\n buttonText = 'Donate {amount} Monthly';\n }\n }\n\n if (props.recurringDonor) {\n buttonId = 'fundraiser.donate_amount';\n buttonText = 'Donate {amount}';\n }\n\n return (\n <Button\n className=\"DonateButton\"\n name={props.name}\n id={props.name}\n onClick={props.onClick}\n disabled={props.disabled}\n theme={props.theme}\n >\n <ProcessingThen processing={props.submitting || false}>\n {props.theme !== 'secondary' && (\n <>\n <span className=\"fa fa-lock\" />\n <> </>\n </>\n )}\n <FormattedMessage\n id={buttonId}\n defaultMessage={buttonText}\n values={{\n amount: (\n <CurrencyAmount\n amount={props.amount || 0}\n currency={props.currency}\n />\n ),\n }}\n />\n </ProcessingThen>\n </Button>\n );\n};\n","import * as React from 'react';\nimport { FormattedHTMLMessage } from 'react-intl';\n\nconst ReCaptchaBranding = props => {\n const className = props.className || 'ReCaptchaBranding';\n\n return (\n <p className={className}>\n <FormattedHTMLMessage\n id=\"recaptcha_branding_html\"\n defaultMessage=\"This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.\"\n />\n </p>\n );\n};\n\nexport default ReCaptchaBranding;\n","import * as React from 'react';\nimport { FormattedHTMLMessage } from 'react-intl';\n\nconst WeeklyDonationFinePrint = props => {\n const className = props.className || 'ReCaptchaBranding';\n\n return (\n <p className={className}>\n <FormattedHTMLMessage\n id=\"fundraiser.weekly_donation_fineprint\"\n defaultMessage=\"To reduce processing fees and make sure you donation has as much impact as possible, weekly donations are processed once per month.\"\n />\n </p>\n );\n};\n\nexport default WeeklyDonationFinePrint;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default ({ paymentMethod, checked, onChange }) => (\n <div id={`PaymentMethod-${paymentMethod.id}`} className=\"PaymentMethod\">\n <label>\n {onChange && (\n <input\n type=\"radio\"\n checked={checked}\n onChange={e => {\n if (e.target.checked && typeof onChange === 'function') {\n onChange(paymentMethod);\n }\n }}\n />\n )}\n <FormattedMessage {...messageDescriptor(paymentMethod)} />\n </label>\n </div>\n);\n\nfunction messageDescriptor(paymentMethod) {\n const type = paymentMethod.instrument_type;\n if (type === 'credit_card') {\n return {\n id: 'fundraiser.oneclick.credit_card_payment_method',\n defaultMessage: '{card_type} ending in {last_four_digits}',\n values: {\n card_type: paymentMethod.card_type,\n last_four_digits: paymentMethod.last_4,\n },\n };\n }\n\n if (type === 'paypal_account') {\n return {\n id: 'fundraiser.oneclick.paypal_payment_method',\n defaultMessage: 'PayPal ({email})',\n values: { email: paymentMethod.email },\n };\n }\n\n return {\n id: 'fundraiser.oneclick.payment_method',\n defaultMessage: 'Payment method',\n };\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport function getErrorsByCode(code) {\n let errors = [];\n switch (code) {\n case '':\n case undefined:\n break;\n case '2000':\n case '2044':\n case '2046':\n errors = [<FormattedMessage id=\"fundraiser.bank_rejected_error\" />];\n break;\n case '2005':\n case '2006':\n case '2010':\n errors = [<FormattedMessage id=\"fundraiser.transaction_declined\" />];\n break;\n case '2001':\n errors = [\n <FormattedMessage id=\"fundraiser.insufficient_funds\" />,\n <FormattedMessage id=\"fundraiser.try_again\" />,\n ];\n break;\n case '2004':\n errors = [\n <FormattedMessage id=\"fundraiser.expired_card\" />,\n <FormattedMessage id=\"fundraiser.try_again\" />,\n ];\n break;\n case '2074':\n errors = [\n <FormattedMessage id=\"fundraiser.paypal_transaction_declined\" />,\n ];\n break;\n default:\n errors = [<FormattedMessage id=\"fundraiser.unknown_error\" />];\n break;\n }\n\n return errors;\n}\n","import $ from 'jquery';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { isEmpty, snakeCase } from 'lodash';\nimport ee from '../../shared/pub_sub';\nimport DonateButton from '../DonateButton';\nimport PaymentMethodWrapper from './PaymentMethodWrapper';\nimport PaymentMethodItem from './PaymentMethod';\nimport { setRecurring } from '../../state/fundraiser/actions';\nimport CurrencyAmount from '../CurrencyAmount';\nimport ShowIf from '../ShowIf';\nimport Popup from 'reactjs-popup';\nimport Button from '../../components/Button/Button';\nimport { getErrorsByCode } from '../../util/getBraintreeErrorMessages';\n\nimport './ExpressDonation.scss';\n\nconst style = {\n width: 'auto',\n padding: 30,\n};\n\nexport class ExpressDonation extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n currentPaymentMethod: props.paymentMethods\n ? props.paymentMethods[0]\n : null,\n submitting: false,\n openPopup: false,\n recurringDonor: false,\n recurringDefault: null,\n onlyRecurring: false,\n akid: null,\n source: null,\n optForRedonation: false,\n failureReason: '',\n failureCode: '',\n errors: [],\n };\n }\n\n getMemberName(member, formValues) {\n if (member) {\n return `${member.fullName}:`;\n } else if (formValues && formValues.member) {\n return `${formValues.member.name}:`;\n } else {\n return null;\n }\n }\n\n oneClickData() {\n if (!this.state.currentPaymentMethod) return null;\n\n return {\n payment: {\n currency: this.props.fundraiser.currency,\n amount: this.props.getFinalDonationAmount,\n recurring: this.props.fundraiser.recurring,\n payment_method_id: this.state.currentPaymentMethod.id,\n },\n user: {\n form_id: this.props.fundraiser.formId,\n // formValues will have the prefillValues\n ...this.props.fundraiser.formValues,\n // form will have the user's submitted values\n ...this.props.fundraiser.form,\n },\n allow_duplicate: this.state.optForRedonation,\n };\n }\n\n async onSuccess(data) {\n const oneClickData = this.oneClickData();\n ee.emit(\n 'fundraiser:donation_completed',\n {\n ...oneClickData?.payment,\n content_category: this.state.currentPaymentMethod?.instrument_type,\n },\n this.props.formData\n );\n ee.emit('fundraiser:transaction_success', data, this.props.formData);\n let donationType;\n if (this.props.fundraiser.recurring) {\n donationType = this.props.weekly ? 'weekly' : 'monthly';\n } else {\n donationType = 'one_time';\n }\n\n const label = `successful_${donationType}_donation_submitted`;\n const event = `fundraiser:${donationType}_transaction_submitted`;\n\n ee.emit(event, label);\n\n const { original, forced } =\n window.champaign.plugins?.fundraiser?.default?.config?.fundraiser\n ?.forcedDonateLayout || {};\n const emitForcedLayoutSuccess = () => {\n ee.emit(`${event}_forced_layout`, {\n label: `${snakeCase(original)}_template_used_scroll_to_donate`,\n amount: this.props.fundraiser.donationAmount,\n });\n };\n\n if (forced === true) {\n emitForcedLayoutSuccess();\n }\n\n return data;\n }\n\n async onFailure(reason) {\n this.setState({\n submitting: false,\n openPopup: reason.responseJSON\n ? reason.responseJSON.immediate_redonation\n : false,\n failureReason: reason.responseJSON.message,\n failureCode: reason.responseJSON.errorCode,\n errors: getErrorsByCode(reason.responseJSON.errorCode),\n optForRedonation:\n reason.responseJSON && reason.responseJSON.immediate_redonation\n ? reason.responseJSON.immediate_redonation\n : false,\n });\n this.props.setSubmitting(false);\n ee.emit('fundraiser:transaction_error', reason, this.props.formData);\n return reason;\n }\n\n clearRecurringEvent() {\n ee.removeListener('fundraiser:change_recurring', this.submit, this);\n }\n\n onClickHandle(e) {\n const isRecurring = e.currentTarget.name === 'recurring';\n this.props.setRecurring(isRecurring);\n ee.on('fundraiser:change_recurring', this.submit, this);\n }\n\n submit() {\n const data = this.oneClickData();\n\n if (data) {\n if (data.allow_duplicate == false) delete data.allow_duplicate;\n ee.emit(\n 'fundraiser:transaction_submitted',\n data.payment,\n this.props.formData\n );\n this.setState({ submitting: true });\n this.props.setSubmitting(true);\n $.post(\n `/api/payment/braintree/pages/${this.props.page.id}/one_click`,\n data\n ).then(this.onSuccess.bind(this), this.onFailure.bind(this));\n }\n this.clearRecurringEvent();\n }\n\n selectPaymentMethod(paymentMethod) {\n this.setState({ currentPaymentMethod: paymentMethod });\n }\n\n renderPaymentMethodRadio(paymentMethod) {\n return (\n <div className=\"ExpressDonation__payment-method-radio\">\n <input\n type=\"radio\"\n checked={this.state.currentPaymentMethod === paymentMethod}\n onChange={() => this.selectPaymentMethod(paymentMethod)}\n />\n <PaymentMethodItem paymentMethod={paymentMethod} />\n </div>\n );\n }\n\n renderSingle() {\n const item = this.state.currentPaymentMethod;\n if (!item) return null;\n return (\n <PaymentMethodWrapper>\n <div className=\"ExpressDonation__single-item\">\n <PaymentMethodItem paymentMethod={item} />\n </div>\n </PaymentMethodWrapper>\n );\n }\n\n renderChoices() {\n return (\n <PaymentMethodWrapper>\n <span className=\"ExpressDonation__prompt\">\n <FormattedMessage\n id=\"fundraiser.oneclick.select_payment\"\n defaultMessage=\"Select a saved payment method\"\n />\n </span>\n\n {this.props.paymentMethods.map(paymentMethod => (\n <PaymentMethodItem\n key={paymentMethod.id}\n paymentMethod={paymentMethod}\n checked={this.state.currentPaymentMethod === paymentMethod}\n onChange={() => this.selectPaymentMethod(paymentMethod)}\n />\n ))}\n </PaymentMethodWrapper>\n );\n }\n\n componentDidMount() {\n this.setState({\n akid: this.props.data.akid,\n source: this.props.data.source,\n recurringDefault: this.props.data.recurringDefault,\n onlyRecurring: this.props.data.onlyRecurring,\n recurringDonor: this.props.data.recurringDonor,\n });\n }\n\n render() {\n if (!this.props.paymentMethods.length || this.props.hidden) return null;\n\n return (\n <div className=\"ExpressDonation\">\n <ShowIf condition={!isEmpty(this.state.errors)}>\n <div className=\"fundraiser-bar__errors\">\n <div className=\"fundraiser-bar__error-intro\">\n <span className=\"fa fa-exclamation-triangle\" />\n <FormattedMessage\n id=\"fundraiser.error_intro\"\n defaultMessage=\"Unable to process donation!\"\n />\n </div>\n {this.state.errors.map((e, i) => {\n return (\n <div key={i} className=\"fundraiser-bar__error-detail\">\n {e}\n </div>\n );\n })}\n </div>\n </ShowIf>\n <div className=\"ExpressDonation__payment-methods\">\n {this.props.paymentMethods.length === 1\n ? this.renderSingle()\n : this.renderChoices()}\n <a\n className=\"ExpressDonation__toggle\"\n onClick={() => this.props.onHide()}\n >\n <FormattedMessage\n id=\"fundraiser.oneclick.new_payment_method\"\n defaultMessage=\"Add payment method\"\n />\n </a>\n </div>\n {/* Hide the payment message component as part of montly sustainers project suggested by FR team */}\n {false && (\n <div className=\"payment-message\">\n <br />\n {this.props.showMonthlyButton && (\n <FormattedMessage\n id={'fundraiser.make_monthly_donation'}\n defaultMessage={`{name} a monthly donation will support our movement to plan ahead, so we can more effectively take on the biggest corporations that threaten people and planet.`}\n values={{\n name: this.getMemberName(\n this.props.member,\n this.props.formData\n ),\n }}\n />\n )}\n\n <div className=\"PaymentMethod__complete-donation\">\n <FormattedMessage\n id={'fundraiser.complete_donation'}\n defaultMessage={`Complete your {amount} donation`}\n values={{\n amount: (\n <CurrencyAmount\n amount={this.props.getFinalDonationAmount}\n currency={this.props.fundraiser.currency}\n />\n ),\n }}\n />\n </div>\n </div>\n )}\n <>\n <ShowIf condition={this.props.showOneOffButton}>\n <DonateButton\n currency={this.props.fundraiser.currency}\n amount={this.props.fundraiser.donationAmount || 0}\n name=\"one_time\"\n recurring={false}\n submitting={this.state.submitting}\n recurringDonor={this.state.recurringDonor}\n disabled={\n !this.state.currentPaymentMethod || this.state.submitting\n }\n onClick={e => this.onClickHandle(e)}\n theme=\"primary\"\n />\n </ShowIf>\n <ShowIf condition={this.props.showMonthlyButton}>\n <DonateButton\n currency={this.props.fundraiser.currency}\n amount={this.props.fundraiser.donationAmount || 0}\n recurring={true}\n name=\"recurring\"\n recurringDonor={this.state.recurringDonor}\n weekly={this.props.weekly}\n submitting={this.state.submitting}\n disabled={\n !this.state.currentPaymentMethod || this.state.submitting\n }\n onClick={e => this.onClickHandle(e)}\n theme={'primary'}\n />\n </ShowIf>\n </>\n\n <Popup\n open={this.state.openPopup}\n closeOnDocumentClick\n contentStyle={style}\n onClose={() => {\n this.setState({\n optForRedonation: false,\n openPopup: false,\n });\n }}\n >\n <div className=\"PaymentExpressDonationConflict\">\n <div className=\"PaymentExpressDonationConflict--reason\">\n {this.state.failureReason}\n </div>\n <Button\n className=\"PaymentExpressDonationConflict--accept\"\n onClick={() => this.submit()}\n >\n <FormattedMessage\n id=\"consent.existing.accept\"\n defaultMessage=\"Yes\"\n />\n </Button>\n <Button\n className=\"PaymentExpressDonationConflict--decline\"\n onClick={() => {\n this.setState({\n optForRedonation: false,\n openPopup: false,\n });\n }}\n >\n <FormattedMessage\n id=\"consent.existing.decline\"\n defaultMessage=\"Not right now\"\n />\n </Button>\n </div>\n </Popup>\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n paymentMethods: state.paymentMethods,\n fundraiser: state.fundraiser,\n page: state.page,\n formData: {\n storeInVault: state.fundraiser.storeInVault,\n member: {\n ...state.fundraiser.formValues,\n ...state.fundraiser.form,\n },\n },\n});\n\nconst mapDispatchToProps = dispatch => ({\n setRecurring: value => dispatch(setRecurring(value)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ExpressDonation);\n","import $ from 'jquery';\nimport React, { Component } from 'react';\nimport { FormattedMessage, FormattedHTMLMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport braintreeClient from 'braintree-web/client';\nimport braintree from 'braintree-web';\nimport dataCollector from 'braintree-web/data-collector';\nimport { isEmpty, snakeCase } from 'lodash';\nimport ee from '../../shared/pub_sub';\nimport captcha from '../../shared/recaptcha';\n\nimport PayPal from '../Braintree/PayPal';\nimport BraintreeCardFields from '../Braintree/BraintreeCardFields';\nimport PaymentTypeSelection from './PaymentTypeSelection';\nimport { ProcessLocalPayment } from './ProcessLocalPayment';\nimport WelcomeMember from '../WelcomeMember/WelcomeMember';\nimport DonateButton from '../DonateButton';\nimport Checkbox from '../Checkbox/Checkbox';\nimport ShowIf from '../ShowIf';\nimport ReCaptchaBranding from '../ReCaptchaBranding';\nimport { resetMember } from '../../state/member/reducer';\nimport Cookie from 'js-cookie';\nimport CurrencyAmount from '../CurrencyAmount';\nimport WeeklyDonationFinePrint from '../WeeklyDonationFinePrint';\n\nimport {\n changeStep,\n setRecurring,\n setStoreInVault,\n setPaymentType,\n} from '../../state/fundraiser/actions';\nimport ExpressDonation from '../ExpressDonation/ExpressDonation';\nimport { isDirectDebitSupported } from '../../util/directDebitDecider';\nimport { getErrorsByCode } from '../../util/getBraintreeErrorMessages';\n\n// Styles\nimport './Payment.scss';\n\nconst BRAINTREE_TOKEN_URL =\n process.env.BRAINTREE_TOKEN_URL || '/api/payment/braintree/token';\n\nconst LOCAL_PAYMENT_PROVIDERS = ['ideal'];\n\nexport class Payment extends Component {\n static title = (<FormattedMessage id=\"payment\" defaultMessage=\"payment\" />);\n\n constructor(props) {\n super(props);\n this.state = {\n client: null,\n localPaymentInstance: null,\n deviceData: {},\n loading: true,\n submitting: false,\n expressHidden: false,\n recurringDonor: false,\n recurringDefault: null,\n pageDefault: null,\n onlyRecurring: false,\n akid: null,\n source: null,\n initializing: {\n gocardless: false,\n paypal: true,\n card: true,\n },\n errors: window.champaign.oneClickErrorCode?.length\n ? getErrorsByCode(window.champaign.oneClickErrorCode)\n : [],\n waitingForGoCardless: false,\n };\n }\n\n componentDidMount() {\n const urlInfo = window.champaign.personalization.urlParams;\n const donor_status = window.champaign.personalization.member?.donor_status;\n const pageDefault =\n window.champaign.plugins.fundraiser?.default?.config.recurring_default;\n const normalizedRecurringDefault = urlInfo.recurring_default || pageDefault;\n\n this.setState({\n recurringDonor: donor_status === 'recurring_donor',\n akid: urlInfo.akid,\n source: urlInfo.source,\n onlyRecurring: normalizedRecurringDefault === 'only_recurring',\n recurringDefault: normalizedRecurringDefault,\n pageDefault,\n });\n\n if (this.props.localPaymentTypes.length > 0)\n this.props.setPaymentType(this.props.localPaymentTypes[0]);\n this.getBraintreeToken();\n this.bindGlobalEvents();\n // set default payment type for existing user\n this.setDefaultPaymentType();\n }\n\n // set default payment as DirectDebit / paypal when the\n // user follows external link like email\n setDefaultPaymentType = () => {\n const urlInfo = window.champaign.personalization.urlParams;\n const country = this.props.fundraiser.form.country;\n const showDirectDebit = isDirectDebitSupported({ country: country });\n const lang = window.champaign.page.language_code;\n\n if (urlInfo.akid && this.props.fundraiser.recurring && lang == 'de') {\n if (showDirectDebit) {\n this.selectPaymentType('gocardless');\n } else {\n // this is done since PAYPAL doesnt support ARS currency as of now\n const paymentType = this.props.currency === 'ARS' ? 'card' : 'paypal';\n this.selectPaymentType(paymentType);\n }\n }\n };\n\n getBraintreeToken = () => {\n $.get(\n BRAINTREE_TOKEN_URL + `?merchantAccountId=${this.props.merchantAccountId}`\n )\n .done(data => {\n braintreeClient.create(\n { authorization: data.token },\n (error, client) => {\n braintree.localPayment.create(\n {\n client: client,\n merchantAccountId: this.props.merchantAccountId,\n },\n (localPaymentErr, localPaymentInstance) => {\n this.setState({\n localPaymentInstance,\n });\n }\n );\n // todo: handle err?\n dataCollector.create(\n {\n client,\n kount: true,\n paypal: true,\n },\n (err, collectorInst) => {\n if (err) {\n return this.setState({ client, loading: false });\n }\n\n const deviceData = collectorInst.deviceData;\n this.setState({\n client,\n deviceData: JSON.parse(deviceData),\n loading: false,\n });\n }\n );\n }\n );\n })\n .fail(failure => {\n console.warn('could not fetch Braintree token');\n });\n };\n\n bindGlobalEvents() {\n ee.on('fundraiser:actions:make_payment', this.makePayment);\n // set default payment type for new user\n ee.on('fundraiser:form:success', this.setDefaultPaymentType);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.merchantAccountId !== prevProps.merchantAccountId) {\n this.getBraintreeToken();\n }\n if (\n this.props.currency === 'ARS' &&\n this.props.currentPaymentType === 'paypal'\n ) {\n this.selectPaymentType('card');\n }\n ee.emit('sidebar:height_change');\n }\n\n selectPaymentType(paymentType) {\n if (window.screen.height < 650) {\n const bar = document.getElementsByClassName('fundraiser-bar__content')[0];\n bar.scrollTo(0, 201);\n }\n this.props.setPaymentType(paymentType);\n }\n\n resetMember() {\n this.props.resetMember();\n }\n\n paymentInitialized(name) {\n this.setState({\n initializing: { ...this.state.initializing, [name]: false },\n });\n }\n\n loading(paymentType) {\n const loading = this.state.loading;\n if (paymentType) {\n return loading || this.state.initializing[paymentType];\n } else {\n return loading;\n }\n }\n\n disableSubmit() {\n return (\n this.loading(this.props.currentPaymentType) ||\n !this.props.currentPaymentType ||\n !this.props.fundraiser.donationAmount\n );\n }\n\n getMemberName(member, formValues) {\n if (member) {\n return `${member.fullName}:`;\n } else if (formValues && formValues.member) {\n return `${formValues.member.name}:`;\n } else {\n return null;\n }\n }\n\n removeRecurringPropertyListener() {\n ee.removeListener('fundraiser:change_recurring', this.makePayment, this);\n }\n\n onClickHandle(e) {\n const isRecurring = e.currentTarget.name === 'recurring';\n this.props.setRecurring(isRecurring);\n\n let donationType;\n if (isRecurring) {\n donationType = this.props.weekly ? 'weekly' : 'monthly';\n } else {\n donationType = 'one_time';\n }\n const label = `user_clicks_${donationType}_donation_button`;\n const event = `fundraiser:set_${donationType}`;\n\n // TODO: When Universal Analytics is removed, this should be removed too.\n ee.emit(event, label);\n // Do not delete this donation_button_clicked event, it's used by the new GA4.\n ee.emit('donation_button_clicked', {\n id: e.target.id,\n text: e.target.innerText,\n });\n ee.on('fundraiser:change_recurring', this.makePayment, this);\n }\n\n getFinalDonationAmount = () => {\n return (\n (!this.state.recurringDonor && this.props.weekly\n ? this.props.fundraiser.donationAmount * 4\n : this.props.fundraiser.donationAmount) || 0\n );\n };\n\n // this should actually be a selector (a fn that returns a slice of state)\n donationData() {\n const {\n fundraiser: {\n donationAmount,\n currency,\n recurring,\n storeInVault,\n form,\n formValues,\n },\n extraActionFields,\n } = this.props;\n\n return {\n amount: this.getFinalDonationAmount(),\n currency: currency,\n recurring: recurring,\n store_in_vault: storeInVault,\n user: {\n ...formValues,\n ...form,\n },\n extra_action_fields: extraActionFields,\n };\n }\n\n delegate() {\n const delegate = this.refs[this.props.currentPaymentType];\n\n if (delegate && delegate.submit) {\n return delegate;\n } else if (delegate && delegate.getWrappedInstance().submit) {\n return delegate.getWrappedInstance();\n }\n\n return null;\n }\n\n submitGoCardless() {\n const payload = {\n ...this.donationData(),\n device_data: this.state.deviceData,\n provider: 'GC',\n source: window.champaign.personalization.urlParams.source,\n };\n const url = `/api/go_cardless/pages/${\n this.props.page.id\n }/start_flow?${$.param(payload)}`;\n window.open(url);\n\n this.emitTransactionSubmitted();\n\n if (!this.state.waitingForGoCardless) {\n window.addEventListener('message', this.waitForGoCardless.bind(this));\n this.setState({ waitingForGoCardless: true });\n }\n }\n\n waitForGoCardless(event) {\n if (typeof event.data === 'object') {\n if (event.data.event === 'follow_up:loaded') {\n event.source.close();\n ee.emit('direct_debit:donated');\n this.onSuccess({});\n } else if (event.data.event === 'donation:error') {\n const messages = event.data.errors.map(({ message }) => message);\n this.onError(messages);\n event.source.close();\n }\n }\n }\n\n emitTransactionSubmitted() {\n const userId =\n window.champaign.personalization.member.id || Cookie.get('__bpmx');\n const eventPayload = {\n user_id: userId,\n page_id: this.props.page.id,\n value: this.props.fundraiser.donationAmount,\n currency: this.props.fundraiser.currency,\n content_category: this.props.currentPaymentType,\n recurring: this.props.fundraiser.recurring,\n };\n if (typeof window.fbq === 'function') {\n window.fbq('track', 'AddPaymentInfo', eventPayload);\n }\n\n ee.emit(\n 'fundraiser:transaction_submitted',\n eventPayload,\n this.props.formData\n );\n }\n\n makePayment = event => {\n if (this.props.currentPaymentType === 'gocardless') {\n this.submitGoCardless();\n return;\n }\n const delegate = this.delegate();\n this.props.setSubmitting(true);\n if (delegate && delegate.submit) {\n delegate.submit().then(\n success => this.submit(success),\n reason => this.onError(reason)\n );\n } else {\n this.submit();\n }\n this.removeRecurringPropertyListener();\n };\n\n submit = async data => {\n const localPayment = LOCAL_PAYMENT_PROVIDERS.includes(\n this.props.currentPaymentType\n );\n\n if (localPayment) {\n const nonce = await ProcessLocalPayment({\n localPaymentInstance: this.state.localPaymentInstance,\n data: this.donationData(),\n pageId: this.props.page.id,\n paymentType: this.props.currentPaymentType,\n });\n data = { nonce };\n }\n\n const recaptcha_action = `donate/${this.props.page.id}`;\n const recaptcha_token = await captcha.execute({ action: recaptcha_action });\n\n const payload = {\n ...this.donationData(),\n payment_method_nonce: data.nonce,\n device_data: this.state.deviceData,\n source: window.champaign.personalization.urlParams.source,\n recaptcha_token,\n recaptcha_action,\n ...(data.threeDSecureInfo?.threeDSecureAuthenticationId && {\n authenticationId: data.threeDSecureInfo.threeDSecureAuthenticationId,\n ...(data.threeDSecureInfo.status != 'unsupported_card' &&\n data.threeDSecureInfo.liabilityShiftPossible &&\n (this.props.fundraiser.currency === 'GBP' ||\n this.props.fundraiser.currency === 'EUR' ||\n this.props.fundraiser.currency === 'CHF') && {\n three_d_secure: true,\n }),\n }),\n };\n\n this.emitTransactionSubmitted();\n\n $.post(\n `/api/payment/braintree/pages/${this.props.page.id}/transaction`,\n payload\n ).then(this.onSuccess, this.onBraintreeError);\n };\n\n onSuccess = data => {\n if (typeof window.fbq === 'function') {\n const userId =\n window.champaign.personalization.member.id || Cookie.get('__bpmx');\n window.fbq(\n 'track',\n 'Donate',\n {\n user_id: userId,\n page_id: this.props.page.id,\n value: this.props.fundraiser.donationAmount,\n currency: this.props.fundraiser.currency,\n content_name: this.props.page.title,\n content_ids: [this.props.page.id],\n content_type: 'product',\n product_catalog_id: 445876772724152,\n donation_type: this.props.fundraiser.recurring\n ? 'recurring'\n : 'not_recurring',\n },\n { eventID: window.champaign.personalization.unique_id }\n );\n }\n\n let donationType;\n if (this.props.fundraiser.recurring) {\n donationType = this.props.weekly ? 'weekly' : 'monthly';\n } else {\n donationType = 'one_time';\n }\n\n const label = `successful_${donationType}_donation_submitted`;\n const event = `fundraiser:${donationType}_transaction_submitted`;\n\n ee.emit(event, label);\n\n const emitTransactionSuccess = () => {\n const userId =\n window.champaign.personalization.member?.id || Cookie.get('__bpmx');\n ee.emit('fundraiser:transaction_success', data, this.props.formData);\n ee.emit(\n 'fundraiser:donation_completed',\n {\n user_id: userId,\n page_id: this.props.page.id,\n value: this.props.fundraiser.donationAmount,\n currency: this.props.fundraiser.currency,\n content_category: this.props.currentPaymentType,\n recurring: this.props.fundraiser.recurring,\n },\n this.props.formData\n );\n };\n\n const { original, forced } =\n window.champaign.plugins?.fundraiser?.default?.config?.fundraiser\n ?.forcedDonateLayout || {};\n const emitForcedLayoutSuccess = () => {\n ee.emit(`${event}_forced_layout`, {\n label: `${snakeCase(original)}_template_used_scroll_to_donate`,\n amount: this.props.fundraiser.donationAmount,\n });\n };\n\n emitTransactionSuccess();\n\n if (forced === true) {\n emitForcedLayoutSuccess();\n }\n\n this.setState({ errors: [] });\n };\n\n isValidJson = str => {\n try {\n JSON.parse(str);\n } catch {\n return false;\n }\n return true;\n };\n\n onError = reason => {\n try {\n console.log(\n 'Transaction Failed',\n this.props.fundraiser.currency,\n this.props.merchantAccountId\n );\n const errorParsed =\n reason &&\n reason.responseText &&\n this.isValidJson(reason.responseText) &&\n JSON.parse(reason.responseText);\n const fundraiserBar = document.getElementsByClassName(\n 'fundraiser-bar__content'\n )[0];\n if (\n (errorParsed && errorParsed.success === false) ||\n !isEmpty(this.state.errors)\n ) {\n setTimeout(() => {\n fundraiserBar.scrollTo(0, 0);\n }, 500);\n }\n ee.emit('fundraiser:transaction_error', reason, this.props.formData);\n if (typeof reason === 'string' && reason.indexOf('PayPal') > -1) {\n const errors = [\n <FormattedMessage\n id=\"fundraiser.paypal_timeout\"\n defaultMessage=\"We're currently experiencing issues with PayPal's service. Please try again later or use a different payment method.\"\n />,\n ];\n this.setState({ errors });\n } else if (reason?.code !== 'PAYPAL_POPUP_CLOSED') {\n const errors = [<FormattedMessage id=\"fundraiser.unknown_error\" />];\n this.setState({ errors });\n }\n this.props.setSubmitting(false);\n } catch (exception) {\n if (window.Sentry) {\n window.Sentry.captureException(exception);\n }\n const errors = [<FormattedMessage id=\"fundraiser.unknown_error\" />];\n this.setState({ errors });\n this.props.setSubmitting(false);\n }\n };\n\n onBraintreeError = response => {\n let errors;\n if (\n response.status === 422 &&\n response.responseJSON &&\n response.responseJSON.errors\n ) {\n errors = response.responseJSON.errors.map(function(error) {\n if (error.code) {\n return getErrorsByCode(error.code);\n } else {\n return error.message;\n }\n });\n } else {\n errors = [<FormattedMessage id=\"fundraiser.unknown_error\" />];\n }\n this.setState({ errors: errors });\n this.onError(response);\n };\n\n isExpressHidden() {\n return this.state.expressHidden || this.props.disableSavedPayments;\n }\n\n // Recurring Donor can see only One off donation button\n // Recurring Donor cannot have multiple subscriptions.\n // So a member who becomes a recurring_donor via subscribing\n // any page cannot see a monthly donation button at any circumstance\n // again. Instead he can see One time donation button alone\n // A non recurring donor can see\n // - only monthly payment button for 'only_recurring' page\n // - else both buttons should be displayed\n // - he cannot see monthly donation button when the url has akid & source=fwd\n\n showMonthlyButton() {\n if (\n this.state.recurringDonor ||\n LOCAL_PAYMENT_PROVIDERS.includes(this.props.currentPaymentType)\n ) {\n return false;\n } else {\n if (this.state.recurringDefault === 'only_one_off') {\n return false;\n }\n return true;\n }\n }\n\n showOneOffButton() {\n if (this.state.recurringDonor) {\n return true;\n } else {\n if (this.state.recurringDefault === 'only_one_off') {\n return true;\n }\n\n if (this.state.recurringDefault === 'only_recurring') {\n return false;\n }\n return true;\n }\n }\n\n render() {\n const {\n member,\n onlyRecurring,\n recurringDonor,\n formData,\n fundraiser: {\n currency,\n donationAmount,\n currentPaymentType,\n recurring,\n storeInVault,\n },\n } = this.props;\n return (\n <div className=\"Payment section\">\n <ShowIf condition={!isEmpty(this.state.errors)}>\n <div className=\"fundraiser-bar__errors\">\n <div className=\"fundraiser-bar__error-intro\">\n <span className=\"fa fa-exclamation-triangle\" />\n <FormattedMessage\n id=\"fundraiser.error_intro\"\n defaultMessage=\"Unable to process donation!\"\n />\n </div>\n {this.state.errors.map((e, i) => {\n return (\n <div key={i} className=\"fundraiser-bar__error-detail\">\n {e}\n </div>\n );\n })}\n </div>\n </ShowIf>\n {!this.props.disableFormReveal && (\n <WelcomeMember\n member={member}\n resetMember={() => this.resetMember()}\n />\n )}\n\n <ExpressDonation\n setSubmitting={s => this.props.setSubmitting(s)}\n hidden={this.isExpressHidden()}\n showOneOffButton={this.showOneOffButton()}\n showMonthlyButton={this.showMonthlyButton()}\n getFinalDonationAmount={this.getFinalDonationAmount()}\n weekly={this.props.weekly}\n data={{\n src: this.state.src,\n akid: this.state.akid,\n recurringDefault: this.state.recurringDefault,\n onlyRecurring: this.state.onlyRecurring,\n recurringDonor: this.state.recurringDonor,\n }}\n onHide={() => this.setState({ expressHidden: true })}\n />\n\n <ShowIf condition={this.isExpressHidden()}>\n <PaymentTypeSelection\n disabled={this.state.loading}\n onChange={p => this.selectPaymentType(p)}\n />\n <PayPal\n ref=\"paypal\"\n amount={donationAmount}\n currency={currency}\n client={this.state.client}\n vault={recurring || storeInVault}\n onInit={() => this.paymentInitialized('paypal')}\n />\n\n <BraintreeCardFields\n ref=\"card\"\n client={this.state.client}\n recurring={recurring}\n isActive={currentPaymentType === 'card'}\n onInit={() => this.paymentInitialized('card')}\n amount={this.getFinalDonationAmount()}\n />\n\n {currentPaymentType === 'gocardless' && (\n <div className=\"PaymentMethod__guidance\">\n <FormattedMessage\n id={'fundraiser.payment_methods.ready_for_gocardless'}\n />\n </div>\n )}\n {!LOCAL_PAYMENT_PROVIDERS.includes(this.props.currentPaymentType) && (\n <Checkbox\n className=\"Payment__config\"\n checked={storeInVault}\n onChange={e =>\n this.props.setStoreInVault(e.currentTarget.checked)\n }\n >\n <FormattedMessage\n id=\"fundraiser.store_in_vault\"\n defaultMessage=\"Securely store my payment information\"\n />\n </Checkbox>\n )}\n {/* Hide the payment message component as part of montly sustainers project suggested by FR team */}\n {false && (\n <div className=\"payment-message\">\n <br />\n {this.showMonthlyButton() && (\n <FormattedMessage\n id={'fundraiser.make_monthly_donation'}\n defaultMessage={`{name} a {duration} donation will support our movement to plan ahead, so we can more effectively take on the biggest corporations that threaten people and planet.`}\n values={{\n name: this.getMemberName(member, formData),\n duration: this.props.weekly ? 'weekly' : 'monthly',\n }}\n />\n )}\n\n <div className=\"PaymentMethod__complete-donation\">\n <FormattedMessage\n id={'fundraiser.complete_donation'}\n defaultMessage={`Complete your {amount} donation`}\n values={{\n amount: (\n <CurrencyAmount\n amount={donationAmount || 0}\n currency={currency}\n />\n ),\n }}\n />\n </div>\n </div>\n )}\n\n {currentPaymentType === 'paypal' && (\n <div className=\"PaymentMethod__guidance\">\n <FormattedMessage\n id={'fundraiser.payment_methods.ready_for_paypal'}\n />\n </div>\n )}\n\n <>\n <ShowIf condition={this.showOneOffButton()}>\n <DonateButton\n currency={currency}\n amount={donationAmount || 0}\n submitting={this.state.submitting}\n name=\"one_time\"\n recurring={false}\n recurringDonor={this.state.recurringDonor}\n disabled={this.disableSubmit()}\n onClick={e => this.onClickHandle(e)}\n theme=\"primary\"\n />\n </ShowIf>\n <ShowIf condition={this.showMonthlyButton()}>\n <DonateButton\n currency={currency}\n amount={donationAmount || 0}\n submitting={this.state.submitting}\n name=\"recurring\"\n recurring={true}\n recurringDonor={this.state.recurringDonor}\n weekly={this.props.weekly}\n disabled={this.disableSubmit()}\n onClick={e => this.onClickHandle(e)}\n theme={'primary'}\n />\n </ShowIf>\n </>\n </ShowIf>\n\n <div className=\"Payment__fine-print\">\n {this.props.weekly && this.showMonthlyButton() && (\n <WeeklyDonationFinePrint className=\"ReCaptchaBranding mb-10\" />\n )}\n <FormattedHTMLMessage\n className=\"Payment__fine-print\"\n id=\"fundraiser.fine_print\"\n defaultMessage={`\n EkŠis a registered 501(c)4 non-profit incorporated in Washington, DC, United\n States. Contributions or gifts to EkŠare not tax deductible.\n For further information, please contact info@eko.org.\n `}\n />\n <ReCaptchaBranding />\n </div>\n\n {this.props.showDirectDebit && (\n <div className=\"Payment__direct-debit-logo\">\n <img src={require('./dd_logo_landscape.png')} alt=\"DIRECT Debit\" />\n </div>\n )}\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n weekly:\n window.champaign.personalization.urlParams.weekly == 'true' ? true : false,\n disableSavedPayments:\n state.fundraiser.disableSavedPayments || state.paymentMethods.length === 0,\n defaultPaymentType: state.fundraiser.directDebitOnly ? 'gocardless' : 'card',\n showDirectDebit: state.fundraiser.showDirectDebit,\n localPaymentTypes: state.fundraiser.localPaymentTypes,\n currentPaymentType: state.fundraiser.directDebitOnly\n ? 'gocardless'\n : state.fundraiser.currentPaymentType,\n fundraiser: state.fundraiser,\n paymentMethods: state.paymentMethods,\n member: state.member,\n onlyRecurring: state.fundraiser.recurringDefault === 'only_recurring',\n formData: {\n storeInVault: state.fundraiser.storeInVault,\n member: {\n ...state.fundraiser.formValues,\n ...state.fundraiser.form,\n },\n },\n extraActionFields: state.extraActionFields,\n currency: state.fundraiser.currency,\n merchantAccountId: state.fundraiser.merchantAccountId,\n});\n\nconst mapDispatchToProps = dispatch => ({\n resetMember: () => dispatch(resetMember()),\n changeStep: step => dispatch(changeStep(step)),\n setRecurring: value => dispatch(setRecurring(value)),\n setStoreInVault: value => dispatch(setStoreInVault(value)),\n setPaymentType: value => dispatch(setPaymentType(value)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Payment);\n","//\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { changeCurrency } from '../../state/fundraiser/actions';\n\nclass CurrencySelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currencyDropdVisible: false,\n };\n }\n\n toggleCurrencyDropd() {\n this.setState({\n currencyDropdVisible: !this.state.currencyDropdVisible,\n });\n }\n\n onSelectCurrency(currency) {\n this.props.changeCurrency(currency);\n }\n\n selectElement() {\n return (\n this.state.currencyDropdVisible && (\n <select\n value={this.props.currency}\n className=\"AmountSelection__currency-selector\"\n onChange={e => this.onSelectCurrency(e.currentTarget.value)}\n >\n {Object.keys(this.props.donationBands).map(currency => {\n return (\n <option key={currency} value={currency}>\n {currency}\n </option>\n );\n })}\n </select>\n )\n );\n }\n\n render() {\n return (\n <p>\n <FormattedMessage\n id=\"fundraiser.currency_in\"\n defaultMessage=\"Values shown in {currency}.\"\n values={{ currency: this.props.currency }}\n />\n . \n <a\n onClick={this.toggleCurrencyDropd.bind(this)}\n className=\"AmountSelection__currency-toggle\"\n >\n <FormattedMessage\n id=\"fundraiser.switch_currency\"\n defaultMessage=\"Switch currency\"\n />\n </a>\n {this.selectElement()}\n </p>\n );\n }\n}\n\nconst mapState = state => ({\n currency: state.fundraiser.currency,\n donationBands: state.fundraiser.donationBands,\n});\n\nconst mapDispatch = dispatch => ({\n changeCurrency: currency => dispatch(changeCurrency(currency)),\n});\n\nexport default connect(\n mapState,\n mapDispatch\n)(CurrencySelector);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { snakeCase } from 'lodash';\nimport DonationBands from '../DonationBands/DonationBands';\nimport DonateButton from '../DonateButton';\nimport CurrencySelector from '../CurrencySelector/CurrencySelector';\nimport ee from '../../shared/pub_sub';\n\nimport {\n changeAmount,\n setSubmitting,\n oneClickFailed,\n} from '../../state/fundraiser/actions';\n\nclass OneClick extends Component {\n constructor(props) {\n super(props);\n this.state = {\n amountConfirmationRequired: false,\n submitting: false,\n };\n }\n\n async onSelectCustomAmount(amount) {\n await this.props.selectAmount(amount);\n this.setState({ amountConfirmationRequired: true });\n }\n\n async selectAmount(amount) {\n this.props.selectAmount(amount);\n this.submit();\n }\n\n oneClickData() {\n return {\n payment: {\n currency: this.props.currency,\n amount: this.props.donationAmount,\n recurring: false,\n payment_method_id: this.props.paymentMethods[0].id,\n },\n user: {\n form_id: this.props.formId,\n // formValues will have the prefillValues\n ...this.props.formValues,\n // form will have the user's submitted values\n ...this.props.form,\n },\n };\n }\n\n submit = () => {\n const data = this.oneClickData();\n if (data) {\n this.props.setSubmitting(true);\n\n $.post(\n `/api/payment/braintree/pages/${this.props.page.id}/one_click`,\n data\n ).then(this.onSuccess.bind(this), this.onFailure.bind(this));\n }\n };\n\n async onFailure(reason) {\n this.setState({ submitting: false });\n this.props.setSubmitting(false);\n this.props.oneClickFailed();\n\n ee.emit('fundraiser:transaction_error', reason, this.oneClickData());\n return reason;\n }\n\n async onSuccess(data) {\n const oneClickData = this.oneClickData();\n ee.emit(\n 'fundraiser:donation_completed',\n oneClickData?.payment,\n this.props.formValues\n );\n ee.emit('fundraiser:transaction_success', data, oneClickData);\n const label = 'successful_one_time_donation_submitted';\n const event = 'fundraiser:one_time_transaction_submitted';\n\n ee.emit(event, label);\n\n const { original, forced } =\n window.champaign.plugins?.fundraiser?.default?.config?.fundraiser\n ?.forcedDonateLayout || {};\n const emitForcedLayoutSuccess = () => {\n ee.emit(`${event}_forced_layout`, {\n label: `${snakeCase(original)}_template_used_scroll_to_donate`,\n amount: this.props.donationAmount,\n });\n };\n\n if (forced === true) {\n emitForcedLayoutSuccess();\n }\n\n return data;\n }\n\n donateButton() {\n if (!this.state.amountConfirmationRequired) return null;\n if (!this.props.donationAmount) return null;\n\n return (\n <DonateButton\n currency={this.props.currency}\n amount={this.props.donationAmount || 0}\n recurring={false}\n submitting={this.state.submitting}\n disabled={this.state.submitting}\n onClick={() => this.submit()}\n />\n );\n }\n\n procssingView() {\n return (\n <div className=\"submission-interstitial\">\n <h1 className=\"submission-interstitial__title\">\n <i className=\"fa fa-spin fa-cog\" />\n <FormattedMessage id=\"form.processing\" />\n </h1>\n <h4>\n <FormattedMessage id=\"form.do_not_close\" />\n </h4>\n </div>\n );\n }\n\n paymentOptionsView() {\n return (\n <div className=\"OneClick\">\n <div className=\"StepWrapper-root\">\n <div className=\"overlay-toggle__mobile-ui\">\n <a className=\"overlay-toggle__close-button\">✕</a>\n </div>\n <div className=\"Stepper fundraiser-bar__top\">\n <h2 className=\"Stepper__header\">{this.props.title}</h2>\n </div>\n <div className=\"fundraiser-bar__main\">\n <p>\n <FormattedMessage\n id=\"fundraiser.one_click_warning\"\n defaultMessage=\"Your donation will be processed immediately.\"\n />\n </p>\n\n <DonationBands\n amounts={this.props.donationBands[this.props.currency]}\n currency={this.props.currency}\n featuredAmount={this.props.donationFeaturedAmount}\n proceed={() => {}}\n selectAmount={this.selectAmount.bind(this)}\n selectCustomAmount={this.onSelectCustomAmount.bind(this)}\n />\n\n {this.donateButton()}\n <CurrencySelector />\n </div>\n </div>\n </div>\n );\n }\n\n render() {\n return this.props.submitting\n ? this.procssingView()\n : this.paymentOptionsView();\n }\n}\n\nconst mapState = state => ({\n currency: state.fundraiser.currency,\n donationAmount: state.fundraiser.donationAmount,\n donationBands: state.fundraiser.donationBands,\n recurring: state.fundraiser.recurring,\n paymentMethods: state.paymentMethods,\n formId: state.fundraiser.formId,\n formValues: state.fundraiser.formValues,\n form: state.fundraiser.form,\n page: state.page,\n submitting: state.fundraiser.submitting,\n title: state.fundraiser.title,\n donationFeaturedAmount: state.fundraiser.donationFeaturedAmount,\n});\n\nconst mapDispatch = dispatch => ({\n selectAmount: amount => dispatch(changeAmount(amount)),\n setSubmitting: submitting => dispatch(setSubmitting(submitting)),\n oneClickFailed: () => dispatch(oneClickFailed()),\n});\n\nexport default connect(mapState, mapDispatch)(OneClick);\n","import * as qs from 'query-string';\nimport ee from '../../shared/pub_sub';\nimport { IFundraiserPluginConfig } from '../../window';\n\nexport const configureStore = (data, dispatch) => {\n const search = qs.parse(location.search, {\n arrayFormat: 'bracket',\n });\n dispatch({\n type: 'initialize_fundraiser',\n payload: data,\n skip_log: true,\n });\n dispatch({\n type: 'set_donation_bands',\n payload: data.donationBands,\n skip_log: true,\n });\n\n dispatch({\n type: 'change_currency',\n payload: search.currency || data.currency,\n skip_log: true,\n });\n\n const amount = parseInt(search.amount as string, 10) || undefined;\n dispatch({ type: 'change_amount', payload: amount, skip_log: true });\n\n const preselect = search.preselect === '1' || data.preselectAmount;\n dispatch({\n type: 'preselect_amount',\n payload: preselect,\n skip_log: true,\n });\n\n const rDefault = search.recurring_default || data.recurringDefault;\n dispatch({\n type: 'set_recurring_defaults',\n payload: rDefault,\n skip_log: true,\n });\n\n dispatch({\n type: 'set_direct_debit_only',\n payload: search.dd_only === '1',\n skip_log: true,\n });\n\n dispatch({\n type: 'search_string_overrides',\n payload: search,\n skip_log: true,\n });\n};\n\nexport const fundraiserData = (config: IFundraiserPluginConfig) => {\n const {\n member,\n location,\n paymentMethods,\n donationBands,\n outstandingFields,\n formValues,\n id_mismatch,\n } = window.champaign.personalization;\n\n return {\n pageId: window.champaign.page.id,\n currency: location.currency,\n member,\n paymentMethods,\n donationBands,\n outstandingFields,\n formId: config.form_id,\n formValues,\n id_mismatch,\n // title: <get title from template, fallback to: config.title>,\n title: config.title,\n preselectAmount: config.preselect_amount,\n fields: config.fields,\n recurringDefault: config.recurring_default,\n // oneClick: <get this from template>,\n // freestanding: <get this from template>\n };\n};\n\n// In Latin America, people are accidentally making high donations when the currency symbol is USD if we don't support\n// the local currency. In that case we want to show a user friendly disclaimer.\nexport const localCurrencies = {\n BO: 'BOB',\n CL: 'CLP',\n CO: 'COP',\n EC: 'USD',\n FK: 'FKP',\n GF: 'EUR',\n GY: 'GYD',\n PY: 'PYG',\n PE: 'PEN',\n SR: 'SRD',\n UY: 'UYU',\n VE: 'VES',\n};\n","export default {\n experimentId: 'Gl736h6mS_aKsi963Xtnlg',\n pageLoad: false,\n activationEvent: 'optimize.activate',\n};\n","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport StepContent from '../../components/Stepper/StepContent';\nimport StepWrapper from '../../components/Stepper/StepWrapper';\nimport AmountSelection from '../../components/AmountSelection/AmountSelection';\nimport MemberDetailsForm from '../../components/MemberDetailsForm/MemberDetailsForm';\nimport Payment from '../../components/Payment/Payment';\nimport OneClick from '../../components/OneClick/OneClick';\nimport Cookie from 'js-cookie';\nimport { localCurrencies } from './utils';\nimport unintendedDonationsExperiment from '../../experiments/unintended-donations';\nimport { setExperimentVariant } from '../../state/experiments';\nimport { resetMember } from '../../state/member/reducer';\nimport {\n changeAmount,\n changeCurrency,\n changeStep,\n setSelectedAmountButton,\n setSubmitting,\n setSupportedLocalCurrency,\n setIsCustomAmount,\n} from '../../state/fundraiser/actions';\nimport { supportedCurrency } from '../../state/fundraiser/reducer';\n\nexport class FundraiserView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isLoaded: false,\n };\n }\n\n async componentDidMount() {\n if (window.dataLayer) {\n await window.dataLayer.push({\n event: unintendedDonationsExperiment.activationEvent,\n });\n }\n this.intervalId = setInterval(() => {\n if (window.google_optimize !== undefined) {\n const variant = window.google_optimize.get(\n unintendedDonationsExperiment.experimentId\n );\n\n if (variant) {\n this.props.setExperimentVariant({\n variant,\n experimentId: unintendedDonationsExperiment.experimentId,\n });\n }\n clearInterval(this.intervalId);\n this.setState({\n isLoaded: true,\n });\n } else {\n this.setState({\n isLoaded: true,\n });\n }\n }, 500);\n\n const { donationAmount } = this.props.fundraiser;\n this.props.setSupportedLocalCurrency(this.supportedLocalCurrency());\n if (donationAmount && donationAmount > 0) {\n this.props.selectAmount(donationAmount);\n if (this.isValidCurrency() === true) {\n this.props.changeStep(1);\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.experiments.length == 0 &&\n this.props.experiments.length > 0\n ) {\n const { variant } =\n this.props.experiments.find(\n e => (e.experimentId = unintendedDonationsExperiment.experimentId)\n ) || {};\n\n if (variant && variant === '1' && this.props.idMismatch) {\n const { donationAmount } = this.props.fundraiser;\n this.props.resetMember();\n if (donationAmount && donationAmount > 0) {\n this.props.selectAmount(donationAmount);\n this.props.changeStep(1);\n } else {\n this.props.changeStep(0);\n }\n }\n }\n }\n\n selectAmount(amount) {\n this.props.selectAmount(amount);\n const userId =\n window.champaign.personalization.member.id || Cookie.get('__bpmx');\n if (typeof window.fbq === 'function') {\n window.fbq('track', 'InitiateCheckout', {\n value: amount,\n currency: this.props.fundraiser.currency,\n content_name: this.props.page.title,\n content_ids: [this.props.page.id],\n content_type: 'product',\n user_id: userId,\n product_catalog_id: 445876772724152,\n page_id: this.props.page.id,\n });\n }\n }\n\n supportedLocalCurrency() {\n const country = window.champaign.personalization.member.country;\n // Member is in a country where we are not concerned of confusion in currencies when we display the currency sign\n // - this is currently any country outside of Lat Am\n if (!Object.keys(localCurrencies).includes(country)) return true;\n return localCurrencies[country] === this.props.fundraiser.currency;\n }\n\n proceed() {\n this.props.changeStep(this.props.fundraiser.currentStep + 1);\n }\n\n showStepTwo() {\n const { outstandingFields } = this.props.fundraiser;\n return !outstandingFields || outstandingFields.length !== 0;\n }\n\n isValidCurrency() {\n const { donationBands } = this.props.fundraiser;\n const supportedCurrencies = Object.keys(donationBands);\n\n const urlParams = new URLSearchParams(window.location.search);\n const currencyFromUrl = urlParams.get('currency');\n if (!currencyFromUrl) return true;\n const currencyFromState =\n supportedCurrencies.find(c => c === currencyFromUrl) ||\n supportedCurrencies[0];\n const invalidCurrency =\n currencyFromState === 'USD' && currencyFromState !== currencyFromUrl;\n\n return !invalidCurrency;\n }\n\n render() {\n const {\n fundraiser: {\n formId,\n fields,\n formValues,\n donationBands,\n donationAmount,\n donationFeaturedAmount,\n currency,\n currentStep,\n outstandingFields,\n submitting,\n oneClickError,\n supportedLocalCurrency,\n },\n } = this.props;\n\n // todo move this into AmountSelection (connect it to store)\n const firstStepButtonTitle = _.isEmpty(formValues) ? (\n <FormattedMessage\n id=\"fundraiser.proceed_to_details\"\n defaultMessage=\"Proceed to details (default)\"\n />\n ) : (\n <FormattedMessage\n id=\"fundraiser.proceed_to_payment\"\n defaultMessage=\"Proceed to payment (default)\"\n />\n );\n\n const classNames = classnames({\n 'FundraiserView-container': true,\n 'form--big': true,\n });\n\n const oneClickErrorMessage = oneClickError ? (\n <div className=\"fundraiser-bar__errors\">\n <FormattedMessage\n id=\"fundraiser.one_click_failed\"\n defaultMessage=\"We're sorry but we could not process your donation. Please try again with a different card\"\n />\n </div>\n ) : null;\n\n const supportedCurrencyDisclaimer = !supportedLocalCurrency ? (\n <div className=\"currency-disclaimer fundraiser-bar\">\n <FormattedMessage\n id=\"fundraiser.currency_disclaimer\"\n defaultMessage=\"Hello! We're working hard to soon be able to accept donations in your local currency. Meanwhile, we appreciate your patience — your donation will be processed in the foreign currency you select. Please note that your credit card might impose fees which EkŠhas no control of. We truly appreciate your understanding.\"\n />\n </div>\n ) : null;\n\n if (this.props.oneClickDonate) {\n return (\n <div id=\"fundraiser-view\" className={classNames}>\n <OneClick />\n </div>\n );\n }\n\n return (\n <Fragment>\n {this.state.isLoaded ? (\n <div id=\"fundraiser-view\" className={classNames}>\n <StepWrapper\n title={this.props.fundraiser.title}\n submitting={submitting}\n currentStep={currentStep}\n changeStep={this.props.changeStep}\n >\n <StepContent\n title={AmountSelection.title(donationAmount, currency)}\n >\n <div>\n {oneClickErrorMessage}\n {supportedCurrencyDisclaimer}\n <AmountSelection\n donationAmount={donationAmount}\n currency={currency}\n donationBands={donationBands}\n donationFeaturedAmount={donationFeaturedAmount}\n nextStepTitle={firstStepButtonTitle}\n changeCurrency={this.props.selectCurrency.bind(this)}\n selectAmount={amount => this.selectAmount(amount)}\n setSelectedAmountButton={this.props.setSelectedAmountButton.bind(\n this\n )}\n proceed={this.proceed.bind(this)}\n setIsCustomAmount={this.props.setIsCustomAmount.bind(this)}\n />\n </div>\n </StepContent>\n\n {this.showStepTwo() && (\n <StepContent\n title={<FormattedMessage id=\"fundraiser.details\" />}\n >\n <MemberDetailsForm\n buttonText={\n <FormattedMessage\n id=\"fundraiser.proceed_to_payment\"\n defaultMessage=\"Proceed to payment\"\n />\n }\n fields={fields}\n outstandingFields={outstandingFields}\n formValues={formValues}\n formId={formId}\n pageId={this.props.page.id}\n proceed={this.proceed.bind(this)}\n />\n </StepContent>\n )}\n\n <StepContent title={<FormattedMessage id=\"fundraiser.payment\" />}>\n <Payment\n page={this.props.page}\n disableFormReveal={this.showStepTwo()}\n setSubmitting={s => this.props.setSubmitting(s)}\n />\n </StepContent>\n </StepWrapper>\n </div>\n ) : null}\n </Fragment>\n );\n }\n}\n\nexport const mapStateToProps = state => ({\n paymentMethods: state.paymentMethods,\n features: state.features,\n fundraiser: state.fundraiser,\n member: state.member,\n page: state.page,\n oneClickError: state.fundraiser.oneClickError,\n oneClickDonate:\n state.fundraiser.oneClick &&\n state.paymentMethods.length > 0 &&\n !state.fundraiser.disableSavedPayments,\n supportedLocalCurrency: state.fundraiser.supportedLocalCurrency,\n experiments: state.abTests.experiments,\n idMismatch: state.fundraiser.id_mismatch,\n});\n\nexport const mapDispatchToProps = dispatch => ({\n resetMember: () => dispatch(resetMember()),\n changeStep: step => dispatch(changeStep(step)),\n selectAmount: amount => dispatch(changeAmount(amount)),\n setSelectedAmountButton: selectedButton =>\n dispatch(setSelectedAmountButton(selectedButton)),\n selectCurrency: currency => dispatch(changeCurrency(currency)),\n setSubmitting: submitting => dispatch(setSubmitting(submitting)),\n setSupportedLocalCurrency: value =>\n dispatch(setSupportedLocalCurrency(value)),\n setExperimentVariant: value => dispatch(setExperimentVariant(value)),\n setIsCustomAmount: (isCustomAmount, amount) =>\n dispatch(setIsCustomAmount(isCustomAmount, amount)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FundraiserView);\n","import { isBoolean } from 'lodash';\nimport * as React from 'react';\nimport { render } from 'react-dom';\nimport { Store } from 'redux';\nimport ComponentWrapper from '../../components/ComponentWrapper';\nimport {\n changeAmount,\n changeCurrency,\n setPaymentType,\n setRecurring,\n setStoreInVault,\n updateForm,\n} from '../../state/fundraiser/actions';\nimport { resetMember } from '../../state/member/reducer';\nimport { IAppState } from '../../types';\nimport { IFundraiserPluginConfig } from '../../window';\nimport Plugin, { IPluginOptions } from '../plugin';\nimport FundraiserView from './FundraiserView';\nimport { configureStore, fundraiserData } from './utils';\n\nexport function init(options: any) {\n if (!options.el) {\n\n options.el = document.getElementById('fundraiser-component');\n }\n\n configureStore(fundraiserData(options.config), options.store.dispatch);\n\n return new Fundraiser({\n ...options,\n namespace: 'fundraiser',\n });\n}\n\nexport class Fundraiser extends Plugin<IFundraiserPluginConfig> {\n public customRenderer: (instance: Fundraiser) => any | undefined;\n\n constructor(options: IPluginOptions<IFundraiserPluginConfig>) {\n super(options);\n this.render();\n }\n\n get state() {\n return this.store.getState().fundraiser;\n }\n\n get formValues() {\n return this.state.form;\n }\n\n get amount() {\n return this.state.donationAmount;\n }\n\n set amount(amount: any) {\n this.setAmount(amount);\n }\n\n public setAmount(amount: any) {\n if (Number.isInteger(amount) && amount > 0) {\n this.store.dispatch(changeAmount(amount));\n }\n return this;\n }\n\n get currency() {\n return this.state.currency;\n }\n\n set currency(currency: any) {\n this.setCurrency(currency);\n }\n\n public setCurrency(currency: any) {\n this.store.dispatch(changeCurrency(currency));\n return this;\n }\n\n public updateForm(fieldName: string, value: any) {\n this.store.dispatch(\n updateForm({ ...this.formValues, ...{ [fieldName]: value } })\n );\n return this;\n }\n\n public resetMember() {\n this.store.dispatch(resetMember());\n return this;\n }\n\n // addPaymentMethod will allow us to add an object that contains:\n // - label / name combo to show up in the list. Label can be HTML\n // - a `setup` function, optional\n // - a number of callbacks: onSubmit, onFailure, onSuccess\n public addPaymentMethod(paymentMethodData: any) {\n throw new Error('Not implemented');\n }\n\n public validateForm() {\n return new Promise((resolve, reject) => {\n this.events.once('fundraiser:form:success', resolve);\n this.events.once('fundraiser:form:error', reject);\n this.events.emit('fundraiser:actions:validate_form');\n });\n }\n\n // TODO: Move the logic behind this event (check Payment.js)\n // to this class. The braintree client should also live here,\n // or perhaps in a braintree service, but not in the react component.\n // The <Payment/> react component has become quite complex and practically\n // unmaintainable\n public makePayment(callback: (data: any, formData: any) => void) {\n return new Promise((resolve, reject) => {\n this.events.once('fundraiser:transaction_success', resolve);\n this.events.once('fundraiser:transaction_error', reject);\n this.events.emit('fundraiser:actions:make_payment');\n });\n }\n\n public configureHostedFields(config: any) {\n return new Promise((resolve, reject) => {\n this.events.once('fundraiser:configure:hosted_fields:success', resolve);\n this.events.once('fundraiser:configure:hosted_fields:error', reject);\n this.events.emit('fundraiser:configure:hosted_fields', config);\n });\n }\n\n get recurring() {\n return this.state.recurring;\n }\n\n set recurring(recurring: any) {\n this.setRecurring(recurring);\n }\n\n public setRecurring(value: any) {\n if (isBoolean(value)) {\n this.store.dispatch(setRecurring(value));\n }\n return this;\n }\n\n get storeInVault() {\n return this.state.storeInVault;\n }\n\n set storeInVault(value: any) {\n this.setStoreInVault(value);\n }\n\n public setStoreInVault(value: any) {\n if (isBoolean(value)) {\n this.store.dispatch(setStoreInVault(value));\n }\n return this;\n }\n\n // Sets the payment type (gocardless, paypal, card, etc). If the given payment\n // type is not supported, it will be set to the default payment type.\n public setPaymentType(paymentType: string) {\n this.store.dispatch(setPaymentType(paymentType));\n return this;\n }\n\n public render() {\n if (this.customRenderer) {\n return this.customRenderer(this);\n }\n\n return render(\n <ComponentWrapper store={this.store} locale={window.I18n.locale}>\n <FundraiserView />\n </ComponentWrapper>,\n this.el\n );\n }\n}\n","import EventEmitter from 'eventemitter3';\n\nlet ee = window.ee;\nif (!ee) {\n ee = new EventEmitter();\n}\n\nexport default ee;\n","export const SET_VARIANT = 'set_variant';\n\nconst initialState = {\n experiments: [],\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SET_VARIANT:\n const { variant, experimentId } = action.payload;\n if (!variant || !experimentId) return initialState;\n return {\n ...state,\n experiments: [...state.experiments, action.payload],\n };\n default:\n return state;\n }\n};\n\nexport function setExperimentVariant(payload) {\n return { type: SET_VARIANT, payload };\n}\n","import ee from '../../shared/pub_sub';\nimport { snakeCase } from 'lodash';\n\nexport function changeAmount(payload) {\n ee.emit('fundraiser:change_amount', payload);\n return { type: 'change_amount', payload, skip_log: true };\n}\n\nexport function oneClickFailed() {\n return { type: 'one_click_failed' };\n}\n\nexport function changeCurrency(payload) {\n ee.emit('fundraiser:change_currency', payload);\n return { type: 'change_currency', payload, skip_log: true };\n}\n\nexport function setSubmitting(payload) {\n return { type: 'set_submitting', payload };\n}\n\nexport function changeStep(payload) {\n // we put it in a timeout because otherwise the event is fired before the step has switched\n setTimeout(() => ee.emit('fundraiser:change_step', payload), 100);\n return { type: 'change_step', payload };\n}\n\nexport function setIsCustomAmount(payload, amount) {\n return (dispatch, getState) => {\n if (payload) {\n const state = getState();\n const { selectedAmountButton, donationAmount } = state.fundraiser;\n\n const event =\n !selectedAmountButton && donationAmount === null\n ? 'form:select_amount'\n : 'change_amount';\n const getGaLabel = (selectedButton, amount, otherAmount) => {\n if (amount && selectedButton === null) {\n return `from_url_${amount}_to_field_other_${otherAmount}`;\n }\n return selectedButton === null\n ? `field_other_${otherAmount}`\n : `from_button_${selectedButton}_to_field_other_${otherAmount}`;\n };\n\n const label = getGaLabel(selectedAmountButton, donationAmount, amount);\n\n ee.emit(event, {\n label,\n amount: null,\n id: 'DonationBands-custom-amount',\n text: `${amount}`,\n });\n }\n\n dispatch({ type: 'set_is_custom_amount', payload });\n };\n}\n\nexport function setSelectedAmountButton(payload) {\n return (dispatch, getState) => {\n const state = getState();\n const { selectedAmountButton, donationAmount, isCustomAmount } =\n state.fundraiser || {};\n const event =\n !selectedAmountButton && !donationAmount\n ? 'form:select_amount'\n : 'change_amount';\n const getGaLabel = (selectedButton, amount, isCustom) => {\n if (amount && selectedButton === null && !isCustom) {\n return `from_url_${amount}_to_button_${payload.name}`;\n } else if (amount && isCustom) {\n return `from_field_other_${amount}_to_button_${payload.name}`;\n }\n\n return selectedButton === null\n ? `button_${payload.name}`\n : `from_button_${selectedButton}_to_button_${payload.name}`;\n };\n\n const label = getGaLabel(\n selectedAmountButton,\n donationAmount,\n isCustomAmount\n );\n\n ee.emit(event, {\n label,\n amount: null,\n id: payload.id,\n text: payload.innerText,\n });\n emitForcedLayoutEvent();\n\n dispatch({ type: 'set_selected_amount_button', payload: payload.name });\n };\n}\n\nexport function updateForm(payload) {\n return { type: 'update_form', payload };\n}\n\nexport function setRecurring(payload = false) {\n setTimeout(() => ee.emit('fundraiser:change_recurring', payload), 100);\n return { type: 'set_recurring', payload };\n}\n\nexport function setStoreInVault(payload = false) {\n const storeInVaultChoice = payload ? 'checked' : 'unchecked';\n const label = `user_${storeInVaultChoice}_to_store_payment_info`;\n setTimeout(() => ee.emit('fundraiser:set_store_in_vault', label), 100);\n return { type: 'set_store_in_vault', payload, skip_log: true };\n}\n\nexport function setPaymentType(payload) {\n return { type: 'set_payment_type', payload, skip_log: true };\n}\n\nexport function actionFormUpdated(data) {\n return { type: '@@chmp:action_form:updated', payload: data };\n}\n\nexport function setSupportedLocalCurrency(payload) {\n return { type: 'set_supported_local_currency', payload };\n}\n\nfunction emitForcedLayoutEvent() {\n const { original, forced } =\n window.champaign.plugins.fundraiser?.default?.config?.fundraiser\n ?.forcedDonateLayout || {};\n if (forced === true) {\n ee.emit(\n 'fundraiser:donate_button_clicked_forced_layout',\n `${snakeCase(original)}_template_used_scroll_to_donate`\n );\n }\n}\n","import { camelCase, pick, isEmpty, mapKeys } from 'lodash';\n\nconst initialState = null;\nconst acceptedProps = [\n 'id',\n 'email',\n 'country',\n 'consented',\n 'consentedUpdatedAt',\n 'name',\n 'firstName',\n 'lastName',\n 'fullName',\n 'welcomeName',\n 'postal',\n 'donorStatus',\n 'registered',\n 'actionKitUserId',\n 'more',\n];\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case '@@chmp:initialize':\n const { member } = action.payload.personalization;\n if (!member || isEmpty(member)) return initialState;\n return (\n pick(mapKeys(member, (v, k) => camelCase(k)), acceptedProps) ||\n initialState\n );\n case 'reset_member':\n // also reset global object:\n window.champaign.personalization.member = {};\n return initialState;\n case 'set_member':\n return { ...state, ...action.payload };\n case 'update_member':\n return { ...state, ...action.payload };\n default:\n return state;\n }\n};\n\nexport function resetMember() {\n return { type: 'reset_member' };\n}\n\nexport function setMember(payload) {\n return { type: 'set_member', payload };\n}\n","import { isObject, isMatch, find } from 'lodash';\n\nconst SUPPORTED_COUNTRIES = [\n { country: 'GB' },\n { country: 'NL' },\n { country: 'FR' },\n { country: 'DE' },\n { country: 'AT' },\n { country: 'ES' },\n { country: 'AU' },\n { country: 'BE' },\n { country: 'CY' },\n { country: 'EE' },\n { country: 'IE' },\n { country: 'IT' },\n { country: 'LV' },\n { country: 'LU' },\n { country: 'MC' },\n { country: 'PT' },\n { country: 'SM' },\n { country: 'SI' },\n];\n\n// countries not added in the list\n// as Gocardless mention the countries\n// have huge payment failure rate\n\n// { country: 'FI' },\n// { country: 'GR' },\n// { country: 'LT' },\n// { country: 'SK' }\n\nexport function isDirectDebitSupported(data) {\n return isObject(find(SUPPORTED_COUNTRIES, filter => isMatch(data, filter)));\n}\n"],"names":["props","React","className","classnames","type","disabled","checked","defaultChecked","onChange","children","CONFIG","style","minimumFractionDigits","maximumFractionDigits","CurrencyAmount","currency","amount","pointerEvents","FormattedNumber","Object","assign","value","processing","FormattedMessage","id","defaultMessage","SweetInput","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","call","e","currentTarget","onFocus","refs","input","focus","setState","focused","onBlur","state","key","this","hasError","errorMessage","labelClassName","inputClassName","onClick","label","ref","name","required","Component","defaultProps","Thermometer","isEmpty","active","goal","goals","donations","min","total_donations","percentage","Math","round","width","concat","connect","data","donationsThermometer","fundraiser","totalDonations","offset","title","WelcomeMember","member","email","resetMember","StepContent","apply","arguments","_this$props","visible","Children","only","Step","complete","index","rootClasses","Stepper","currentStep","changeStep","step","_this2","steps","map","renderStep","condition","display","StepWrapper","_","child","cloneElement","stepperProps","_objectSpread","getTitles","childrenWithExtraProps","ShowIf","submitting","normalState","submissionState","DonationBandButton","featuredAmount","Button","DonationBands","customAmount","length","undefined","preventDefault","setSelectedAmountButton","target","selectAmount","proceed","number","replace","parseFloat","setIsCustomAmount","selectCustomAmount","intl","formatNumber","amounts","i","event","onButtonClicked","placeholder","formatMessage","pattern","customFieldDisplay","onInputUpdated","injectIntl","AmountSelection","_React$Component","currencyDropdVisible","ee","emit","changeCurrency","donationFeaturedAmount","donationAmount","donationBands","values","toggleCurrencyDropd","bind","onSelectCurrency","keys","nextStepTitle","FieldShape","field","fieldProps","maxLength","toString","Checkbox","checkboxToggle","choices","choice","htmlFor","_this$props$field","default_value","SelectCountry","SweetSelect","options","c","pick","renderCheckbox","renderChoice","renderParagraph","renderField","data_type","MemberDetailsForm","HIDDEN_FIELDS","validate","loading","fetch","pageId","method","headers","accept","body","JSON","stringify","form","form_id","formId","then","response","ok","json","handleSuccess","_assertThisInitialized","handleFailure","failure","onSubmit","errors","prefill","bindGlobalEvents","on","_step","_iterator","_createForOfIteratorHelper","fields","s","n","done","formValues","err","f","_step2","_iterator2","updateForm","error","buttonText","_ref","message","_slicedToArray","_defineProperty","_this3","filter","display_mode","recognizedMemberPresent","console","log","_this4","fieldsToDisplay","getFieldError","updateField","dispatch","getToken","Promise","resolve","reject","window","grecaptcha","enterprise","ready","execute","champaign","configuration","recaptcha3","siteKey","token","_regeneratorRuntime","_callee","_context","prev","next","sent","abrupt","t0","retries","interval","setInterval","clearInterval","stop","_x","PayPal","paypalInstance","client","createPayPalInstance","newProps","paypal","onPayPalCreate","Sentry","captureException","onInit","vault","flow","TIMEOUT_ERROR","NO_PAYPAL_INSTANCE_ERROR","captureError","captureMessage","didTimeout","paypalPromise","tokenize","tokenizeOptions","payload","timeoutPromise","setTimeout","race","exception","BraintreeCardFields","configureHostedFields","config","styles","hostedFields","teardown","createHostedFields","lang","page","language_code","expirationDate","cvv","color","freeze","selector","all","braintree","create","version","threeDSInstance","threeDS","hostedFieldsInstance","emittedBy","newErrors","isPotentiallyValid","cards","cardType","resetErrors","recurring","processTokenizeErrors","verifyCard","onLookupComplete","nonce","bin","details","challengeRequested","liabilityShifted","liabilityShiftPossible","code","forEach","invalidFieldKeys","jcb","discover","visa","_classnames","prefix","classNames","isActive","submit","currentCardClass","renderError","withRef","PaymentMethodWrapper","PaymentTypeSelection","_PureComponent","directDebitOnly","showDirectDebit","currentPaymentType","paymentTypes","localPaymentTypes","filteredPaymentTypes","paymentType","includes","PureComponent","showIdeal","getFirstName","fullName","fullNameArray","split","slice","floor","join","getLastName","ProcessLocalPayment","_ref2","_window","_window$champaign","_window$champaign$pag","localPaymentInstance","user","country","opts","resp","toFixed","fallback","url","follow_up_url","location","href","currencyCode","countryCode","paymentTypeCountryCode","givenName","surname","address","onPaymentStart","localData","start","paymentId","$","post","startPayment","buttonId","weekly","recurringDonor","theme","ProcessingThen","FormattedHTMLMessage","paymentMethod","instrument_type","card_type","last_four_digits","last_4","messageDescriptor","getErrorsByCode","padding","ExpressDonation","_onFailure","_onSuccess","currentPaymentMethod","paymentMethods","openPopup","recurringDefault","onlyRecurring","akid","source","optForRedonation","failureReason","failureCode","payment","getFinalDonationAmount","payment_method_id","allow_duplicate","_asyncToGenerator","_this$state$currentPa","_window$champaign$plu","_window$champaign$plu2","_window$champaign$plu3","_window$champaign$plu4","_window$champaign$plu5","oneClickData","donationType","original","forced","emitForcedLayoutSuccess","content_category","formData","plugins","forcedDonateLayout","snakeCase","_callee2","reason","_context2","responseJSON","immediate_redonation","errorCode","setSubmitting","_x2","removeListener","isRecurring","setRecurring","onSuccess","onFailure","clearRecurringEvent","selectPaymentMethod","PaymentMethodItem","item","_this5","hidden","renderSingle","renderChoices","onHide","showOneOffButton","DonateButton","onClickHandle","showMonthlyButton","Popup","open","closeOnDocumentClick","contentStyle","onClose","storeInVault","LOCAL_PAYMENT_PROVIDERS","Payment","_window$champaign$one","setDefaultPaymentType","urlInfo","personalization","urlParams","isDirectDebitSupported","selectPaymentType","getBraintreeToken","process","merchantAccountId","braintreeClient","authorization","localPaymentErr","dataCollector","kount","collectorInst","deviceData","parse","fail","warn","makePayment","delegate","success","onError","removeRecurringPropertyListener","submitGoCardless","_data$threeDSecureInf","recaptcha_action","recaptcha_token","donationData","captcha","action","payment_method_nonce","device_data","threeDSecureInfo","threeDSecureAuthenticationId","authenticationId","status","three_d_secure","emitTransactionSubmitted","onBraintreeError","fbq","userId","Cookie","user_id","page_id","content_name","content_ids","content_type","product_catalog_id","donation_type","eventID","unique_id","_window$champaign$per","emitTransactionSuccess","isValidJson","str","_unused","errorParsed","responseText","fundraiserBar","document","getElementsByClassName","scrollTo","indexOf","expressHidden","pageDefault","initializing","gocardless","card","oneClickErrorCode","waitingForGoCardless","_window$champaign$per2","_window$champaign$plu6","_window$champaign$plu7","donor_status","recurring_default","normalizedRecurringDefault","setPaymentType","prevProps","screen","height","text","innerText","_this$props$fundraise","extraActionFields","store_in_vault","extra_action_fields","getWrappedInstance","provider","addEventListener","waitForGoCardless","close","messages","_ref3","eventPayload","disableSavedPayments","_this$props2","_this$props2$fundrais","disableFormReveal","isExpressHidden","src","p","paymentInitialized","setStoreInVault","disableSubmit","WeeklyDonationFinePrint","ReCaptchaBranding","require","alt","defaultPaymentType","CurrencySelector","selectElement","OneClick","_selectAmount","_onSelectCustomAmount","amountConfirmationRequired","_callee3","_context3","oneClickFailed","_x3","_callee4","_context4","_x4","onSelectCustomAmount","donateButton","procssingView","paymentOptionsView","changeAmount","configureStore","search","qs","arrayFormat","skip_log","parseInt","preselect","preselectAmount","dd_only","fundraiserData","outstandingFields","id_mismatch","preselect_amount","localCurrencies","BO","CL","CO","EC","FK","GF","GY","PY","PE","SR","UY","VE","FundraiserView","_componentDidMount","isLoaded","dataLayer","push","unintendedDonationsExperiment","intervalId","google_optimize","variant","get","setExperimentVariant","experimentId","setSupportedLocalCurrency","supportedLocalCurrency","isValidCurrency","experiments","find","idMismatch","supportedCurrencies","currencyFromUrl","URLSearchParams","currencyFromState","oneClickError","firstStepButtonTitle","oneClickErrorMessage","supportedCurrencyDisclaimer","oneClickDonate","Fragment","selectCurrency","showStepTwo","features","oneClick","abTests","selectedButton","isCustomAmount","init","el","getElementById","store","Fundraiser","namespace","_Plugin","customRenderer","render","getState","set","setAmount","Number","isInteger","setCurrency","fieldName","paymentMethodData","Error","events","once","callback","isBoolean","ComponentWrapper","locale","I18n","Plugin","EventEmitter","SET_VARIANT","initialState","_action$payload","_toConsumableArray","_state$fundraiser","selectedAmountButton","otherAmount","getGaLabel","isCustom","actionFormUpdated","acceptedProps","mapKeys","v","k","camelCase","SUPPORTED_COUNTRIES","isObject","isMatch"],"sourceRoot":""}