{"version":3,"file":"c4d00fadd63ce7709e2ef4667227ada730ff04ab-677916ddd53430adb48c.js","mappings":";sGAAA,IAAIA,EAAc,EAAQ,MA6B1B,SAASC,EAAUC,GACjB,IAAIC,EAjBN,WAIE,IAHA,IAAIA,EAAQ,CAAC,EAETC,EAASC,OAAOC,KAAKN,GAChBO,EAAMH,EAAOI,OAAQC,EAAI,EAAGA,EAAIF,EAAKE,IAC5CN,EAAMC,EAAOK,IAAM,CAGjBC,UAAW,EACXC,OAAQ,MAGZ,OAAOR,CACT,CAIcS,GACRC,EAAQ,CAACX,GAGb,IADAC,EAAMD,GAAWQ,SAAW,EACrBG,EAAML,QAGX,IAFA,IAAIM,EAAUD,EAAME,MAChBC,EAAYX,OAAOC,KAAKN,EAAYc,IAC/BP,EAAMS,EAAUR,OAAQC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CACpD,IAAIQ,EAAWD,EAAUP,GACrBS,EAAOf,EAAMc,IACM,IAAnBC,EAAKR,WACPQ,EAAKR,SAAWP,EAAMW,GAASJ,SAAW,EAC1CQ,EAAKP,OAASG,EACdD,EAAMM,QAAQF,GAElB,CAEF,OAAOd,CACT,CACA,SAASiB,EAAKC,EAAMC,GAClB,OAAO,SAAUC,GACf,OAAOD,EAAGD,EAAKE,GACjB,CACF,CACA,SAASC,EAAeC,EAAStB,GAI/B,IAHA,IAAIuB,EAAO,CAACvB,EAAMsB,GAASd,OAAQc,GAC/BE,EAAK3B,EAAYG,EAAMsB,GAASd,QAAQc,GACxCG,EAAMzB,EAAMsB,GAASd,OAClBR,EAAMyB,GAAKjB,QAChBe,EAAKP,QAAQhB,EAAMyB,GAAKjB,QACxBgB,EAAKP,EAAKpB,EAAYG,EAAMyB,GAAKjB,QAAQiB,GAAMD,GAC/CC,EAAMzB,EAAMyB,GAAKjB,OAGnB,OADAgB,EAAGE,WAAaH,EACTC,CACT,CACAG,EAAOC,QAAU,SAAU7B,GAIzB,IAHA,IAAIC,EAAQF,EAAUC,GAClB2B,EAAa,CAAC,EACdzB,EAASC,OAAOC,KAAKH,GAChBI,EAAMH,EAAOI,OAAQC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CACjD,IAAIgB,EAAUrB,EAAOK,GAED,OADTN,EAAMsB,GACRd,SAITkB,EAAWJ,GAAWD,EAAeC,EAAStB,GAChD,CACA,OAAO0B,CACT,uPC9EO,MAAMG,EAAeC,IAAcC,EAAAA,EAAAA,IAAMD,GAAK,GAAKA,EAAED,cCCrD,IAAKG,EAAY,SAAZA,GAOV,OAPUA,EAAY,QAAZA,EAAY,QAAZA,EAAY,kBAAZA,CAAY,MAUjB,MAAMC,EAAe,CAC1BC,IAAK,UACLC,KAAM,UACNC,MAAO,UACPC,MAAO,UACPC,MAAO,UACPC,KAAM,UACNC,KAAM,UACNC,MAAO,WAUIC,EAAiBC,KAA6BA,GAAWC,IAAMD,GAAY,QAAQE,cAAgB,IAEzG,SAASC,EAAoBH,GAClC,OAAOD,EAAcC,GAAYV,EAAaQ,MAAQR,EAAaI,KACrE,CAOO,SAASU,EAAqBC,EAAiCC,GACpE,IAAKD,IAAqBC,EAExB,MAAO,CAAC,EAEV,MAAMC,EAAYrB,EAAYmB,GAC9B,IAXwBG,EAWVF,KATP,kBAAkBG,KAAKD,IAAU,kBAAkBC,KAAKD,IAAU,kBAAkBC,KAAKD,IAS1E,CACpB,MAAME,EAAWT,IAAMK,GACjBK,EAAID,EAASE,MACbzB,EAAIuB,EAASG,cAAgB,IAC7BC,EAAIJ,EAASK,YAAc,IAC3BC,EAAgBf,IAAME,EAAoBG,IAC1CW,EAAKD,EAAcJ,MACnBM,EAAKF,EAAcH,cAAgB,IACnCM,EAAKH,EAAcD,YAAc,IACvC,MAAO,CACL,CAAC,KAAKR,OAAgBI,EAAI,GAC1B,CAAC,KAAKJ,OAAgBpB,EACtB,CAAC,KAAKoB,OAAgBO,EACtB,CAAC,KAAKP,SAAkB,CAACI,EAAGxB,EAAG2B,GAAGM,KAAK,KACvC,CAAC,KAAKb,OAAgBU,EAAK,GAC3B,CAAC,KAAKV,OAAgBW,EACtB,CAAC,KAAKX,OAAgBY,EACtB,CAAC,KAAKZ,SAAkB,CAACU,EAAIC,EAAIC,GAAIC,KAAK,KAE9C,CACE,MAAO,CACL,CAAC,KAAKb,OAAgB,SAASD,OAC/B,CAAC,KAAKC,OAAgB,SAASD,OAC/B,CAAC,KAAKC,OAAgB,SAASD,OAC/B,CAAC,KAAKC,SAAkB,SAASD,SACjC,CAAC,KAAKC,OAAgB,SAASD,OAC/B,CAAC,KAAKC,OAAgB,SAASD,OAC/B,CAAC,KAAKC,OAAgB,SAASD,OAC/B,CAAC,KAAKC,SAAkB,SAASD,UAvChC,IAAmBE,CA0C1B,CAEO,MAAMa,EAAW,SAACf,EAAegB,GAAkB,YAAL,IAAbA,IAAAA,EAAgB,IAAOrB,IAAMK,GAAOiB,QAAQD,GAAOE,KAAM,EACpFC,EAAS,SAACnB,EAAegB,GAAkB,YAAL,IAAbA,IAAAA,EAAgB,IAAOrB,IAAMK,GAAOmB,OAAOH,GAAOE,KAAM,sJCwB9F,IA7E0DE,IAExD,MAAM,GAAEC,IAAOC,EAAAA,EAAAA,MACTC,GAAIC,EAAAA,EAAAA,IAASJ,GACbvC,GAAI4C,EAAAA,EAAAA,KAAS,MACjB,kBAAIC,GACF,OAAOC,EAAAA,IAAaN,EAAGO,SAASC,MAAQ,GAC1C,EACA,SAAIA,GACF,OAAOhD,EAAE6C,eAAiB,IAAM,IAClC,EACA,UAAII,GACF,OAAOjD,EAAE6C,eAAiB,IAAM,GAClC,EACA,WAAIK,GACF,MAAO,CAAC,EAAE,EAAElD,EAAEgD,MAAMhD,EAAEiD,QAAQhB,KAAK,IACrC,EACA,OAAIkB,GAAO,IAADC,EAAAC,EACR,OAAOrD,EAAE6C,eAAyB,QAAXO,EAAGV,EAAEY,cAAM,IAAAF,EAAAA,EAAIV,EAAEa,QAAmB,QAAZF,EAAGX,EAAEa,eAAO,IAAAF,EAAAA,EAAIX,EAAEY,MACnE,MA4CF,OAzCAE,EAAAA,EAAAA,IAAW,KACT,MAAMC,EAAQA,KAAO,IAADC,EAAAC,EAAAC,EAAAC,EACP,QAAXH,EAAAlB,EAAGsB,gBAAQ,IAAAJ,GAAXA,EAAaD,MAAM,CACjBrD,IAAK,mBACLE,MAAO,mBACPD,KAAM,mBACN0D,SAAUC,EAAAA,EAAkB,QAANL,EAAC3D,EAAEmD,WAAG,IAAAQ,GAALA,EAAOM,GAAW,QAANL,EAAC5D,EAAEmD,WAAG,IAAAS,GAALA,EAAOM,GAAW,QAANL,EAAC7D,EAAEmD,WAAG,IAAAU,GAALA,EAAOM,EAAU,EAAN,IAAW,GACvE,EAEJ,GAAIrB,EAAAA,GAyBF,OAxBAsB,EAAAA,EAAAA,KAAK,IAAM5B,EAAG6B,OAAOZ,IAwBda,EAAAA,EAAAA,KACL,IAAMtE,EAAE6C,iBACR0B,EAAAA,EAAAA,GAASd,EAAO,KAEpB,KAGKe,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACC,SAAUA,KAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACzBxC,EAAG6B,OAAQY,EAAAA,EAAAA,MAAA,OAAKC,UAAU,mBACxBlC,MAAOhD,EAAEgD,MAAOC,OAAQjD,EAAEiD,OAC1BC,QAASlD,EAAEkD,QACXiC,MAAM,6BAA4BT,SAAA,EAElCF,EAAAA,EAAAA,KAAA,QAAMY,EAAW,QAAVT,EAAO,QAAPC,EAAE5E,EAAEmD,WAAG,IAAAyB,OAAA,EAALA,EAAOX,SAAC,IAAAU,EAAAA,EAAIU,EAAAA,EAAqBpB,EAAGqB,GAAG,qBAChDd,EAAAA,EAAAA,KAAA,QAAMY,EAAW,QAAVP,EAAO,QAAPC,EAAE9E,EAAEmD,WAAG,IAAA2B,OAAA,EAALA,EAAOZ,SAAC,IAAAW,EAAAA,EAAIQ,EAAAA,EAAqBnB,EAAGoB,GAAG,qBAChDd,EAAAA,EAAAA,KAAA,QAAMY,EAAW,QAAVL,EAAO,QAAPC,EAAEhF,EAAEmD,WAAG,IAAA6B,OAAA,EAALA,EAAOb,SAAC,IAAAY,EAAAA,EAAIM,EAAAA,EAAqBlB,EAAGmB,GAAG,uBACzC,IAAI,GACV,oBCpGP,IAAIC,EAAoC,oBAAZC,QACxBC,EAAwB,mBAARC,IAChBC,EAAwB,mBAARC,IAChBC,EAAwC,mBAAhBC,eAAgCA,YAAYC,OAIxE,SAASC,EAAMC,EAAGC,GAEhB,GAAID,IAAMC,EAAG,OAAO,EACpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEE,cAAgBD,EAAEC,YAAa,OAAO,EAC5C,IAAI5H,EAAQC,EAAGH,EA4BX+H,EA3BJ,GAAIC,MAAMC,QAAQL,GAAI,CAEpB,IADA1H,EAAS0H,EAAE1H,SACG2H,EAAE3H,OAAQ,OAAO,EAC/B,IAAKC,EAAID,EAAgB,GAARC,KAAY,IAAKwH,EAAMC,EAAEzH,GAAI0H,EAAE1H,IAAK,OAAO,EAC5D,OAAO,CACT,CAuBA,GAAIiH,GAAUQ,aAAaP,KAAOQ,aAAaR,IAAK,CAClD,GAAIO,EAAEM,OAASL,EAAEK,KAAM,OAAO,EAE9B,IADAH,EAAKH,EAAEO,YACEhI,EAAI4H,EAAGK,QAAQC,UAAWR,EAAES,IAAInI,EAAE2D,MAAM,IAAK,OAAO,EAE7D,IADAiE,EAAKH,EAAEO,YACEhI,EAAI4H,EAAGK,QAAQC,UAAWV,EAAMxH,EAAE2D,MAAM,GAAI+D,EAAEU,IAAIpI,EAAE2D,MAAM,KAAM,OAAO,EAChF,OAAO,CACT,CACA,GAAIwD,GAAUM,aAAaL,KAAOM,aAAaN,IAAK,CAClD,GAAIK,EAAEM,OAASL,EAAEK,KAAM,OAAO,EAE9B,IADAH,EAAKH,EAAEO,YACEhI,EAAI4H,EAAGK,QAAQC,UAAWR,EAAES,IAAInI,EAAE2D,MAAM,IAAK,OAAO,EAC7D,OAAO,CACT,CAGA,GAAI0D,GAAkBC,YAAYC,OAAOE,IAAMH,YAAYC,OAAOG,GAAI,CAEpE,IADA3H,EAAS0H,EAAE1H,SACG2H,EAAE3H,OAAQ,OAAO,EAC/B,IAAKC,EAAID,EAAgB,GAARC,KAAY,GAAIyH,EAAEzH,KAAO0H,EAAE1H,GAAI,OAAO,EACvD,OAAO,CACT,CACA,GAAIyH,EAAEE,cAAgBU,OAAQ,OAAOZ,EAAEa,SAAWZ,EAAEY,QAAUb,EAAEc,QAAUb,EAAEa,MAK5E,GAAId,EAAEe,UAAY5I,OAAO6I,UAAUD,SAAgC,mBAAdf,EAAEe,SAA+C,mBAAdd,EAAEc,QAAwB,OAAOf,EAAEe,YAAcd,EAAEc,UAC3I,GAAIf,EAAEiB,WAAa9I,OAAO6I,UAAUC,UAAkC,mBAAfjB,EAAEiB,UAAiD,mBAAfhB,EAAEgB,SAAyB,OAAOjB,EAAEiB,aAAehB,EAAEgB,WAKhJ,IADA3I,GADAF,EAAOD,OAAOC,KAAK4H,IACL1H,UACCH,OAAOC,KAAK6H,GAAG3H,OAAQ,OAAO,EAC7C,IAAKC,EAAID,EAAgB,GAARC,KAAY,IAAKJ,OAAO6I,UAAUE,eAAeC,KAAKlB,EAAG7H,EAAKG,IAAK,OAAO,EAK3F,GAAI+G,GAAkBU,aAAaT,QAAS,OAAO,EAGnD,IAAKhH,EAAID,EAAgB,GAARC,KACf,IAAiB,WAAZH,EAAKG,IAA+B,QAAZH,EAAKG,IAA4B,QAAZH,EAAKG,KAAiByH,EAAEoB,YAarErB,EAAMC,EAAE5H,EAAKG,IAAK0H,EAAE7H,EAAKG,KAAM,OAAO,EAK7C,OAAO,CACT,CACA,OAAOyH,GAAMA,GAAKC,GAAMA,CAC1B,CAGArG,EAAOC,QAAU,SAAiBmG,EAAGC,GACnC,IACE,OAAOF,EAAMC,EAAGC,EAClB,CAAE,MAAOoB,GACP,IAAKA,EAAMC,SAAW,IAAIC,MAAM,oBAO9B,OADAC,QAAQC,KAAK,mDACN,EAGT,MAAMJ,CACR,CACF,oBC9HAzH,EAAOC,QAAU,SAAoB6H,GACnC,SAAKA,GAAsB,iBAARA,KAGZA,aAAetB,OAASA,MAAMC,QAAQqB,IAAQA,EAAIpJ,QAAU,IAAMoJ,EAAIC,kBAAkBC,UAAYzJ,OAAO0J,yBAAyBH,EAAKA,EAAIpJ,OAAS,IAA+B,WAAzBoJ,EAAIxB,YAAY4B,MACrL,wBCLA,IAAIhK,EAAc,EAAQ,MACtBiK,EAAQ,EAAQ,MAChBC,EAAU,CAAC,EACF7J,OAAOC,KAAKN,GA6ClBmK,SAAQ,SAAUjK,GACvBgK,EAAQhK,GAAa,CAAC,EACtBG,OAAO+J,eAAeF,EAAQhK,GAAY,WAAY,CACpDkE,MAAOpE,EAAYE,GAAWmK,WAEhChK,OAAO+J,eAAeF,EAAQhK,GAAY,SAAU,CAClDkE,MAAOpE,EAAYE,GAAWoK,SAEhC,IAAIC,EAASN,EAAM/J,GACDG,OAAOC,KAAKiK,GAClBJ,SAAQ,SAAU1I,GAC5B,IAAIE,EAAK4I,EAAO9I,GAChByI,EAAQhK,GAAWuB,GAvCvB,SAAqBE,GACnB,IAAI6I,EAAY,SAAUjJ,GACxB,GAAIA,QACF,OAAOA,EAELkJ,UAAUjK,OAAS,IACrBe,EAAO+G,MAAMY,UAAUwB,MAAMrB,KAAKoB,YAEpC,IAAIE,EAAShJ,EAAGJ,GAKhB,GAAsB,iBAAXoJ,EACT,IAAK,IAAIpK,EAAMoK,EAAOnK,OAAQC,EAAI,EAAGA,EAAIF,EAAKE,IAC5CkK,EAAOlK,GAAKmK,KAAKC,MAAMF,EAAOlK,IAGlC,OAAOkK,CACT,EAMA,MAHI,eAAgBhJ,IAClB6I,EAAU3I,WAAaF,EAAGE,YAErB2I,CACT,CAakCM,CAAYnJ,GAC1CuI,EAAQhK,GAAWuB,GAASsJ,IAzDhC,SAAiBpJ,GACf,IAAI6I,EAAY,SAAUjJ,GACxB,OAAIA,QACKA,GAELkJ,UAAUjK,OAAS,IACrBe,EAAO+G,MAAMY,UAAUwB,MAAMrB,KAAKoB,YAE7B9I,EAAGJ,GACZ,EAMA,MAHI,eAAgBI,IAClB6I,EAAU3I,WAAaF,EAAGE,YAErB2I,CACT,CAyCsCQ,CAAQrJ,EAC5C,GACF,IACAG,EAAOC,QAAUmI,sLC7CjB,MAAMe,EAA4BA,CAACC,EAAqB1G,KAC/C2G,EAAAA,EAAAA,IAAW,CAChB5D,GAAI/C,aAAK,EAALA,EAAO+C,GACX2D,MACAE,SAASrG,EAAAA,MAAYmG,IAAOG,EAAAA,KAK1BC,EAAqBC,EAAAA,cAAoBN,KAClCO,EAAwBA,KAAMC,EAAAA,EAAAA,YAAWH,GAmCtD,IAjCgD9G,IAC9C,MAAM0G,GAAMQ,EAAAA,EAAAA,KACNzJ,GAAI4C,EAAAA,EAAAA,KAAS,MACjB8G,QAASV,EAA0BC,EAAK1G,OAa1C,OAXAiB,EAAAA,EAAAA,IAAW,KACT,MAAM4B,GAAIuE,EAAAA,EAAAA,KAQV,OAPI7G,EAAAA,IAAaP,EAAM6G,mBAAmBhE,EAAEwE,KAC1CR,EAAAA,EAAAA,GAAkBH,EAAK,CACrB3D,GAAI/C,EAAM+C,GACVuE,iBAAiBC,EAAAA,EAAAA,KAAO,IAAM9J,EAAE0J,QAAQP,SAAU,IAClDY,mBAAmBD,EAAAA,EAAAA,KAAO,IAAM9J,EAAE0J,QAAQP,SAAU,OAGjD/D,EAAE4E,QAAQ,KAEZxF,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACC,SAAUA,KAAA,IAAAuF,EAAA,OAAMzF,EAAAA,EAAAA,KAAC6E,EAAmBa,SAAQ,CAAC/H,MAAOnC,EAAE0J,QAAQhF,SAE3E4E,EAAAA,cACU,QADSW,EACjB1H,EAAM4H,UAAE,IAAAF,EAAAA,EAAI,UACZ,CACE3E,GAAI/C,EAAM+C,GACVJ,WAAWkF,EAAAA,EAAAA,GAAc,cAAe7H,EAAM2C,WAC9C+D,MACAvE,UAAUF,EAAAA,EAAAA,KAAA,OAAKU,UAAU,mBAAkBR,SACxCnC,EAAMmC,cAKa,GAAI,mFCrD7B,SAASH,EACd7E,EACA2K,QAAkC,IAAlCA,IAAAA,EAAqC,CAAC,GAEtC,MAAM,QACJC,EAAU,IAAG,MAEbC,EAAQC,KAAI,gBACZC,EAAe,WACfC,IACEC,EAAAA,EAAAA,IAASN,GAAWA,EAAU,CAAEC,QAASD,GAC7C,IAAIO,EAEAC,EADAC,GAAsB,EAU1B,OAAO,WAAc,IAAD,IAAAC,EAAAvC,UAAAjK,OAATe,EAAI,IAAA+G,MAAA0E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1L,EAAI0L,GAAAxC,UAAAwC,GACb,MAAMC,EAAOA,IAAMvL,EAAGwL,MAAMX,EAAOjL,GAC/BmL,IAAoBK,IACS,mBAApBL,EACTA,IACKQ,IAZTH,GAAsB,EAClBJ,IACFG,GAAsBM,aAAaN,GACnCA,EAAqBO,YAAW,IAAMN,GAAsB,GAAOJ,KAYrEE,GAASO,aAAaP,GACtBA,EAAQQ,WAAWH,EAAMX,EAC3B,CACF,iCCvCAzK,EAAOC,QAAU,CACf,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,wCCjJ5B,IAHyBuL,EAGrB/B,EAAQ,EAAQ,MAChBgC,GAJqBD,EAIY/B,IAHR,iBAAP+B,GAAmB,YAAaA,EAAKA,EAAY,QAAIA,EAI3E,SAASE,EAAgB5D,EAAK6D,EAAKrJ,GAWjC,OAVIqJ,KAAO7D,EACTvJ,OAAO+J,eAAeR,EAAK6D,EAAK,CAC9BrJ,MAAOA,EACPsJ,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZhE,EAAI6D,GAAOrJ,EAENwF,CACT,CAMA,IAAIiE,IAAiC,oBAAXC,SAA0BA,OAAOC,WAAYD,OAAOC,SAASC,eA0EvFlM,EAAOC,QAzEP,SAAwBkM,EAAoBC,EAA2BC,GACrE,GAAkC,mBAAvBF,EACT,MAAM,IAAIG,MAAM,iDAElB,GAAyC,mBAA9BF,EACT,MAAM,IAAIE,MAAM,wDAElB,QAAgC,IAArBD,GAAgE,mBAArBA,EACpD,MAAM,IAAIC,MAAM,mEAKlB,OAAO,SAAcC,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAID,MAAM,sDAElB,IACIE,EADAC,EAAmB,GAEvB,SAASC,IACPF,EAAQL,EAAmBM,EAAiBE,KAAI,SAAUC,GACxD,OAAOA,EAASlK,KAClB,KACImK,EAAWd,UACbK,EAA0BI,GACjBH,IACTG,EAAQH,EAAiBG,GAE7B,CACA,IAAIK,EACJ,SAAUC,GApCd,IAAwBC,EAAUC,EAsC5B,SAASH,IACP,OAAOC,EAAezB,MAAMV,KAAMhC,YAAcgC,IAClD,CAxC4BqC,EAqCDF,GArCTC,EAqCHF,GApCVzF,UAAY7I,OAAO0O,OAAOD,EAAW5F,WAC9C2F,EAAS3F,UAAUd,YAAcyG,EACjCA,EAASG,UAAYF,EAyCjBH,EAAWM,KAAO,WAChB,OAAOX,CACT,EACAK,EAAWO,OAAS,WAClB,GAAIP,EAAWd,UACb,MAAM,IAAIO,MAAM,oFAElB,IAAIe,EAAgBb,EAGpB,OAFAA,OAAQc,EACRb,EAAmB,GACZY,CACT,EACA,IAAIE,EAASV,EAAWzF,UAgBxB,OAfAmG,EAAOC,0BAA4B,WACjCf,EAAiBgB,KAAK9C,MACtB+B,GACF,EACAa,EAAOG,mBAAqB,WAC1BhB,GACF,EACAa,EAAOI,qBAAuB,WAC5B,IAAIC,EAAQnB,EAAiBoB,QAAQlD,MACrC8B,EAAiB1E,OAAO6F,EAAO,GAC/BlB,GACF,EACAa,EAAOO,OAAS,WACd,OAAOrC,EAAeS,cAAcK,EAAkB5B,KAAKjI,MAC7D,EACOmK,CACT,CArCA,CAqCEpD,EAAMsE,eAGR,OAFArC,EAAgBmB,EAAY,cAAe,cA1D7C,SAAwBN,GACtB,OAAOA,EAAiByB,aAAezB,EAAiBrE,MAAQ,WAClE,CAwD6D+F,CAAe1B,GAAoB,KAC9Fb,EAAgBmB,EAAY,YAAad,GAClCc,CACT,CACF,qCChGA,IAAIqB,EAAa,EAAQ,MACrBC,EAAS3H,MAAMY,UAAU+G,OACzBvF,EAAQpC,MAAMY,UAAUwB,MACxBwF,EAAUpO,EAAOC,QAAU,SAAiBR,GAE9C,IADA,IAAI4O,EAAU,GACL1P,EAAI,EAAGF,EAAMgB,EAAKf,OAAQC,EAAIF,EAAKE,IAAK,CAC/C,IAAI2P,EAAM7O,EAAKd,GACXuP,EAAWI,GAEbD,EAAUF,EAAO5G,KAAK8G,EAASzF,EAAMrB,KAAK+G,IAE1CD,EAAQZ,KAAKa,EAEjB,CACA,OAAOD,CACT,EACAD,EAAQG,KAAO,SAAU1O,GACvB,OAAO,WACL,OAAOA,EAAGuO,EAAQzF,WACpB,CACF,qECXA,IACW6F,EAAW,4gOACf,SAASC,EAAQC,GACtB,IAAIC,EAAOD,EAAEE,SACX/F,EAAS,GACX,GAAa,IAAT8F,GAAuB,IAATA,GAAuB,KAATA,EAAa,CAC3C,GAA6B,iBAAlBD,EAAEG,YACX,OAAOH,EAAEG,YAET,IAAKH,EAAIA,EAAEI,WAAYJ,EAAGA,EAAIA,EAAEK,YAC9BlG,GAAU4F,EAAQC,EAGxB,MAAO,GAAa,IAATC,GAAuB,IAATA,EACvB,OAAOD,EAAEM,UAEX,OAAOnG,CACT,CChBA,IAAIoG,EACFC,EACAC,EACAC,EAAY,kBAEZC,EAAqB,aAQrBC,EAAoB,SAA2BC,GAC7C,OAAOL,EAAKM,iBAAiBD,EAC/B,EACAE,EAAWjJ,MAAMC,QACjBiJ,EAAS,GAAG9G,MACZ+G,EAAW,SAAkBrN,EAAOsN,GAElC,IAAIjB,EACJ,OAAOc,EAASnN,GAASA,EAAkC,WAAzBqM,SAAcrM,KAAwBsN,GAAgBtN,EAAQoN,EAAOnI,KAAK0H,EAAKY,iBAAiBvN,GAAQ,GAAKA,GAAkB,WAATqM,GAAqB,WAAYrM,EAAQoN,EAAOnI,KAAKjF,EAAO,GAAKA,EAAQ,CAACA,GAAS,EAC7O,EACAwN,EAAc,SAAqBC,GACjC,MAAyB,aAAlBA,EAAKC,WAA6C,IAAlBD,EAAKE,QAC9C,EAEAC,EAAoB,SAA2BC,EAAMC,GAGnD,IAFA,IACEjQ,EADExB,EAAIyR,EAAM1R,SAELC,GAAK,GAEZ,GADAwB,EAAIiQ,EAAMzR,GACNwR,EAAKE,OAAO,EAAGlQ,EAAEzB,UAAYyB,EAC/B,OAAOA,EAAEzB,MAGf,EAEA4R,EAAgB,SAAuBC,EAAUC,QAC9B,IAAbD,IACFA,EAAW,IAEb,IAAIE,GAAWF,EAAS1C,QAAQ,MAC9B6C,EAAM,EAIR,OAHID,IACFF,EAAWA,EAASI,MAAM,MAAMvO,KAAK,KAEhC,WACL,MAAO,IAAMoO,EAXL,oDAWwBD,EAAW,WAAaA,GAAYE,EAAUC,IAAQ,IAAM,KAAO,IACrG,CACF,EACAE,EAAY,SAASA,EAAUrB,EAASsB,EAASC,GAC/C,IAAInC,EAAOY,EAAQX,SACnB,GAAa,IAATD,GAAuB,IAATA,GAAuB,KAATA,EAC9B,IAAKY,EAAUA,EAAQT,WAAYS,EAASA,EAAUA,EAAQR,YAC5D6B,EAAUrB,EAASsB,EAASC,QAEZ,IAATnC,GAAuB,IAATA,IACvBY,EAAQP,UAAYO,EAAQP,UAAU2B,MAAME,GAASzO,KAAK0O,GAE9D,EACAC,EAAgB,SAAuB3K,EAAG4K,GAExC,IADA,IAAIrS,EAAIqS,EAAMtS,SACLC,GAAK,GACZyH,EAAEqH,KAAKuD,EAAMrS,GAEjB,EACAsS,EAAyB,SAAgCvC,EAAGwC,EAAMC,GAEhE,IADA,IAAIvK,EACG8H,GAAKA,IAAMwC,GAAM,CAEtB,GADAtK,EAAO8H,EAAE0C,OAAS1C,EAAEK,YAElB,OAAOnI,EAAKiI,YAAYwC,OAAO,KAAOF,EAExCzC,EAAIA,EAAE4C,YAAc5C,EAAE6C,OACxB,CACF,EACAC,EAAa,SAASA,EAAW9C,GAC/B,IAEE/P,EACA8S,EAHE5M,EAAW8K,EAASjB,EAAEgD,YACxB5P,EAAI+C,EAASnG,OAGf,IAAKC,EAAI,EAAGA,EAAImD,EAAGnD,KACjB8S,EAAQ5M,EAASlG,IACPgT,SACRH,EAAWC,GAEP9S,GAAK8S,EAAMG,iBAAsD,IAAnCH,EAAMG,gBAAgBhD,UACtD6C,EAAMG,gBAAgB5C,WAAgC,IAAnByC,EAAM7C,SAAiB6C,EAAMzC,UAAYyC,EAAM3C,WAAWE,UAC7FN,EAAEmD,YAAYJ,IACc,IAAnBA,EAAM7C,WACfF,EAAEoD,aAAaL,EAAM3C,WAAY2C,GACjC/C,EAAEmD,YAAYJ,GAItB,EACAM,EAAoB,SAA2B7J,EAAM8J,GACnD,OAAOC,WAAWD,EAAc9J,KAAU,CAC5C,EACAgK,EAA0B,SAAiC3C,EAASQ,EAAMoC,EAAUC,EAAUC,EAAUC,EAAWC,GACjH,IAwBE5T,EACA6T,EACA1Q,EACA1C,EACAqT,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAnCE9Q,EAAKoN,EAAkBC,GACzB0D,EAAclB,EAAkB,cAAe7P,GAC/CgR,GAAe,IACfC,EAAqBpB,EAAkB,oBAAqB7P,GAAM6P,EAAkB,iBAAkB7P,GACtGkR,EAAqBrB,EAAkB,kBAAmB7P,GAAM6P,EAAkB,mBAAoB7P,GACtGmR,EAAkBtB,EAAkB,aAAc7P,GAAM6P,EAAkB,gBAAiB7P,GAC3FoR,EAAkBvB,EAAkB,cAAe7P,GAAM6P,EAAkB,eAAgB7P,GAC3FqR,EAAgBxB,EAAkB,WAAY7P,IAAO6N,EAAKwD,eAAiB,IAC3EC,EAAYtR,EAAGsR,UACfC,EAAY,GACZC,EAAY,GACZC,EAAY,GACZxC,EAAgBpB,EAAKoB,eAAiB,IACtCX,EAAMT,EAAKS,IAAMT,EAAKS,IAAMT,EAAK6D,KAAO,OAAS,MACjDC,EAAQ9D,EAAKpB,MAAQoB,EAAKY,OAAS,oBACnCmD,EAAQzB,IAAawB,EAAMhG,QAAQ,SAAW,GAAK,KACnDkG,GAASF,EAAMhG,QAAQ,SACvBuC,GAASyD,EAAMhG,QAAQ,SACvBoC,EAAWH,EAAYC,GACvBiE,EAAajE,EAAKiE,WAClBC,IAAgBD,GAAc,IAAInG,QAAQ,MAC1CqG,EAAqB,GACrBC,EAAwB,SAAfjS,EAAGkS,QACZC,EAAoB9E,EAAQsD,MAAMuB,QAmBpC,IANAH,IAAgBD,EAAaA,EAAWrD,MAAM,MAAMvO,KAAK,KACzD+R,IAAW5E,EAAQsD,MAAMuB,QAAU,SAGnCtS,GADA0Q,EAAIjD,EAAQ+E,qBAAqB,MAC3B5V,OACN+T,EAAQ,GACH9T,EAAI,EAAGA,EAAImD,EAAGnD,IACjB8T,EAAM9T,GAAK6T,EAAE7T,GAGf,GAAImV,GAAS7D,EACX,IAAKtR,EAAI,EAAGA,EAAImD,EAAGnD,MAEjB+T,GADAtT,EAAOqT,EAAM9T,IACE2S,aAAe/B,IACfU,GAAYG,IAAU2D,KACnCf,EAAS5T,EAAKmV,UACVT,GAASpB,GAAW5J,KAAK0L,IAAIxB,EAASE,GAAeK,IAAoC,OAAlBnU,EAAKqV,UAA2B,IAAN9V,KAEnGgU,EAAU,GACVmB,EAAMrG,KAAKkF,GACXO,EAAcF,GAEZ/C,IAEF7Q,EAAKsV,GAAKtV,EAAKuV,WACfvV,EAAKwV,GAAK5B,EACV5T,EAAKyV,GAAKzV,EAAK0V,YACf1V,EAAK2V,GAAK3V,EAAK4V,cAEblB,KACE1U,EAAKuS,UAAYe,IAAYtC,GAASsC,GAAWqB,GAASrB,IAAYqB,GAAS3U,EAAKkS,WAAWA,aAAe/B,IAAYnQ,EAAKkS,WAAWK,YAC5IgB,EAAQlF,KAAKrO,GACbA,EAAKsV,IAAMzB,EACPhC,EAAuB7R,EAAMmQ,EAAS4B,KACxC/R,EAAK6V,UAAW,IAGE,OAAlB7V,EAAKqV,WAAsBrV,EAAK2P,aAA6C,OAA9B3P,EAAK2P,YAAY0F,UAA2B,IAAN9V,IAEvFmV,EAAMrG,KAAK,MAMrB,IAAK9O,EAAI,EAAGA,EAAImD,EAAGnD,IAGjB,GADA+T,GADAtT,EAAOqT,EAAM9T,IACE2S,aAAe/B,EACR,OAAlBnQ,EAAKqV,SAyBT,GAfIxE,IACF4C,EAAQzT,EAAKyT,MACRkB,GAAUrB,IACbtT,EAAKsV,IAAMtV,EAAKkS,WAAWoD,GAC3BtV,EAAKwV,IAAMxV,EAAKkS,WAAWsD,IAE7B/B,EAAMqC,KAAO9V,EAAKsV,GAAK,KACvB7B,EAAMsC,IAAM/V,EAAKwV,GAAK,KACtB/B,EAAM7C,SAAW,WACjB6C,EAAMuB,QAAU,QAEhBvB,EAAM1P,MAAQ/D,EAAKyV,GAAK,EAAI,KAE5BhC,EAAMzP,OAAShE,EAAK2V,GAAK,OAEtBhB,GAAS3D,EAEZ,GAAIhR,EAAKuS,SAIP,IAHAvS,EAAKgS,MAAQoB,EAAIpT,EAAK2P,YACtB3P,EAAKkS,WAAW8D,YAAYhW,GAErBoT,GAAoB,IAAfA,EAAE5D,UAAoC,MAAlB4D,EAAE3D,aAEhCzP,EAAKgS,MAAQoB,EAAEzD,YACf3P,EAAKkS,WAAW8D,YAAY5C,GAC5BA,EAAIA,EAAEzD,iBAEC3P,EAAKkS,WAAWK,UACzBvS,EAAKmS,QAAUnS,EAAKkS,YACflS,EAAKwS,iBAAmBxS,EAAK0P,aAChC1P,EAAK0P,WAAWuG,UAAW,GAEzBjW,EAAK2P,aAAgD,MAAjC3P,EAAK2P,YAAYF,cAAwBzP,EAAK2P,YAAYA,aAEhFmF,EAAmBzG,KAAKrO,EAAK2P,aAE/B3P,EAAKgS,MAAQhS,EAAK2P,aAAe3P,EAAK2P,YAAYsG,SAAW,KAAOjW,EAAK2P,YACzE3P,EAAKkS,WAAWO,YAAYzS,GAC5BqT,EAAM1K,OAAOpJ,IAAK,GAClBmD,KACU4Q,IACVM,GAAU5T,EAAK2P,aAAekC,EAAuB7R,EAAKkS,WAAY/B,EAAS4B,GAE/E/R,EAAKkS,WAAWC,SAAWnS,EAAKkS,WAAWC,QAAQ6D,YAAYhW,GAC/D4T,GAAU5T,EAAKkS,WAAW8D,YAAYnG,EAAKqG,eAAe,MAC9C,SAAR9E,IACFpR,EAAKyT,MAAMuB,QAAU,UAEvBX,EAAUhG,KAAKrO,SAERA,EAAKkS,WAAWK,WAAavS,EAAKuS,UAA+B,KAAnBvS,EAAKmW,UAC5D7B,EAAUjG,KAAKrO,GACNgR,IAAUhR,EAAKuS,WACZ,SAARnB,IACFpR,EAAKyT,MAAMuB,QAAU,UAEvBX,EAAUhG,KAAKrO,SAjEX0U,GAAS7D,GACX7Q,EAAKkS,YAAclS,EAAKkS,WAAWO,YAAYzS,GAC/CqT,EAAM1K,OAAOpJ,IAAK,GAClBmD,KACUiS,GACVxE,EAAQ6F,YAAYhW,GAgE1B,IADAT,EAAIuV,EAAmBxV,SACdC,GAAK,GACZuV,EAAmBvV,GAAG2S,WAAWO,YAAYqC,EAAmBvV,IAElE,GAAImV,EAAO,CAaT,IAXI7D,IACF6C,EAAW7D,EAAK/C,cAAcsE,GAC9BjB,EAAQ6F,YAAYtC,GACpBC,EAAYD,EAASgC,YAAc,KACnC9B,EAASF,EAAS0C,eAAiBjG,EAAU,EAAIA,EAAQoF,WACzDpF,EAAQsC,YAAYiB,IAEtBD,EAAQtD,EAAQsD,MAAM4C,QACtBlG,EAAQsD,MAAM4C,QAAU,gBAGjBlG,EAAQT,YACbS,EAAQsC,YAAYtC,EAAQT,YAG9B,IADA8D,EAAkC,MAAlBzB,KAA2BlB,IAAa8D,IAAU3D,GAC7DzR,EAAI,EAAGA,EAAImV,EAAMpV,OAAQC,IAAK,CASjC,IARAgU,EAAUmB,EAAMnV,IAChBmU,EAAW7D,EAAK/C,cAAcsE,IACrBqC,MAAM4C,QAAU,4BAA8BjC,EAAY,cAAgBvD,EAAW,YAAc,aACxG+D,IACFlB,EAASzN,UAAY2O,GAAcC,EAActV,EAAI,EAAI,KAE3DgV,EAAUlG,KAAKqF,GACfhR,EAAI6Q,EAAQjU,OACP8T,EAAI,EAAGA,EAAI1Q,EAAG0Q,IACW,OAAxBG,EAAQH,GAAGiC,WACbrV,EAAOuT,EAAQH,GACfM,EAASsC,YAAYhW,GACrBwT,GAAiBxT,EAAK6V,UAAYnC,EAASsC,YAAYnG,EAAKqG,eAAe,MACvErF,IACQ,IAANuC,IACFM,EAASD,MAAMsC,IAAM/V,EAAKwV,GAAK,KAC/B9B,EAASD,MAAMqC,KAAOjC,EAAcD,EAAS,MAE/C5T,EAAKyT,MAAMsC,IAAM,MACbnC,IACF5T,EAAKyT,MAAMqC,KAAO9V,EAAKsV,GAAK1B,EAAS,QAKnC,IAANlR,EAEFgR,EAASyC,UAAY,SACXxB,GAAU3D,IACpBoB,EAAWsB,GACXlC,EAAUkC,EAAU4C,OAAOC,aAAa,KAAM,MAE5C1F,IACF6C,EAASD,MAAM1P,MAAQ4P,EACvBD,EAASD,MAAMzP,OAAShE,EAAK2V,GAAK,MAEpCxF,EAAQ6F,YAAYtC,EACtB,CACAvD,EAAQsD,MAAM4C,QAAU5C,CAC1B,CAEI5C,IACEsC,EAAahD,EAAQqG,eACvBrG,EAAQsD,MAAMzP,OAASmP,EAAac,EAAkB,KAClD9D,EAAQqG,aAAerD,IAEzBhD,EAAQsD,MAAMzP,OAASmP,EAAaY,EAAqB,OAGzDb,EAAY/C,EAAQsG,cACtBtG,EAAQsD,MAAM1P,MAAQmP,EAAYgB,EAAkB,KAChD/D,EAAQsG,YAAcvD,IAExB/C,EAAQsD,MAAM1P,MAAQmP,EAAYc,EAAqB,QAI7De,IAAWE,EAAoB9E,EAAQsD,MAAMuB,QAAUC,EAAoB9E,EAAQsD,MAAMiD,eAAe,YACxG/E,EAAcoB,EAAUsB,GACxBM,GAAShD,EAAcqB,EAAUsB,GACjC3C,EAAcsB,EAAUsB,EAC1B,EACAoC,EAAgB,SAAuBxG,EAASQ,EAAMiG,EAAWC,GAC/D,IAWE9F,EACA+F,EACAvX,EACA6T,EACA1Q,EACAqU,EACAC,EACAC,EAlBE7F,EAAMT,EAAKS,IAAMT,EAAKS,IAAMT,EAAK6D,KAAO,OAAS,MAGnDxD,IAFQL,EAAKpB,MAAQoB,EAAKY,OAAS,qBAEpB9C,QAAQ,SACvBoC,EAAWH,EAAYC,GACvBoB,EAAgBpB,EAAKoB,eAAiB,IACtCmF,EAA0B,MAAlBnF,EAAwB,GAAKlB,EAAW,UAAY,IAC5DsG,EAAU,KAAO/F,EAAM,IACvBgG,EAAa,EACbC,EAAe1G,EAAK0G,aAA4C,mBAAtB1G,EAAK0G,aAA8B1G,EAAK0G,aAAevG,EAAoB,KAUrHwG,EAAYzH,EAAK/C,cAAc,OAC/BrN,EAAS0Q,EAAQ+B,WAenB,IAdAzS,EAAOiT,aAAa4E,EAAWnH,GAC/BmH,EAAU7H,YAAcU,EAAQP,UAChCnQ,EAAOgT,YAAYtC,GAGnB6G,GAAqC,KADrCjG,EAAO1B,EADPc,EAAUmH,IAES7I,QAAQ,MACG,IAA1BkC,EAAK4G,mBACPxG,EAAOA,EAAKyG,QAAQvH,EAAoB,KAAKuH,QAAQxH,EAAW,KAE9DgH,IACFjG,EAAOA,EAAKQ,MAAM,KAAKvO,KAAK,WAE9BN,EAAIqO,EAAKzR,OACTwX,GAAgC,MAAnB/F,EAAKkB,OAAO,GAAaiF,EAAQ,IAAMN,IAC/CrX,EAAI,EAAGA,EAAImD,EAAGnD,IAEjB,GADAwX,EAAYhG,EAAKkB,OAAO1S,GACpB8X,IAAiBJ,EAAaI,EAAatG,EAAKE,OAAO1R,GAAIoR,EAAK0G,eAElEN,EAAYhG,EAAKE,OAAO1R,EAAG0X,GAAc,GACzCH,GAAa9F,GAAuB,MAAd+F,EAAoBF,IAAcE,EAAY,KAAO3F,EAAM,IAAM2F,EACvFxX,GAAK0X,EAAa,OACb,GAAIF,IAAchF,GAAiBhB,EAAKkB,OAAO1S,EAAI,KAAOwS,GAAiBxS,EAAG,CAGnF,IAFAuX,GAAaM,EAAaD,EAAU,GACpCC,EAAa,EACNrG,EAAKkB,OAAO1S,EAAI,KAAOwS,GAE5B+E,GAAaI,EACb3X,IAEEA,IAAMmD,EAAI,EACZoU,GAAaI,EACmB,MAAvBnG,EAAKkB,OAAO1S,EAAI,KACzBuX,GAAaI,EAAQN,IACrBQ,EAAa,EAEjB,KAAyB,MAAdL,GAA2C,WAAtBhG,EAAKE,OAAO1R,EAAG,IAC7CuX,GAAa9F,EAAQ6F,eAAgCzF,EAAM,IAAM,SACjE7R,GAAK,GACIwX,EAAUU,WAAW,IAAM,OAAUV,EAAUU,WAAW,IAAM,OAAU1G,EAAK0G,WAAWlY,EAAI,IAAM,OAAUwR,EAAK0G,WAAWlY,EAAI,IAAM,OAEjJ6T,IAAMrC,EAAKE,OAAO1R,EAAG,IAAIgS,MAAMnC,IAAa,IAAI,IAAM,IAAI9P,QAAU,EACpEwX,GAAa9F,GAAuB,MAAd+F,EAAoBF,IAAc9F,EAAKE,OAAO1R,EAAG6T,GAAK,KAAOhC,EAAM,IAAML,EAAKE,OAAO1R,EAAG6T,GAC9G7T,GAAK6T,EAAI,GAET0D,GAAa9F,GAAuB,MAAd+F,EAAoBF,IAAcE,EAAY,KAAO3F,EAAM,IAAM2F,EAG3F5G,EAAQuH,UAAYZ,GAAaM,EAAaD,EAAU,IACxDH,GAAexF,EAAU/R,EAAQ,SAAU,IAC7C,EACAkY,EAAS,SAASA,EAAOxH,EAASQ,EAAMiG,EAAWC,GACjD,IAGEtX,EACA8S,EAJE5M,EAAW8K,EAASJ,EAAQmC,YAC9B5P,EAAI+C,EAASnG,OACbuR,EAAWH,EAAYC,GAGzB,GAAyB,IAArBR,EAAQX,UAAkB9M,EAAI,EAAG,CAEnC,IADAiO,EAAKE,UAAW,EACXtR,EAAI,EAAGA,EAAImD,EAAGnD,KACjB8S,EAAQ5M,EAASlG,IACXyS,MAAQK,EAAM4D,SAAW5D,EAAMF,QAAUE,EAAMwD,SAAW,MACzC,IAAnBxD,EAAM7C,UAAkB,MAAMnN,KAAKgQ,EAAMzC,cACvCiB,GAA+B,IAAnBwB,EAAM7C,UAAuD,WAArCU,EAAkBmC,GAAO2C,UAE/D3C,EAAMoB,MAAMuB,QAAU,eACtB3C,EAAMoB,MAAM7C,SAAW,YAEzByB,EAAME,UAAW,EACjBoF,EAAOtF,EAAO1B,EAAMiG,EAAWC,IAKnC,OAFAlG,EAAKE,SAAWA,OAChBV,EAAQoC,UAAW,EAErB,CACAoE,EAAcxG,EAASQ,EAAMiG,EAAWC,EAC1C,EACSe,EAAyB,WAClC,SAASA,EAAUzH,EAASQ,GAC1BZ,IAhbAF,EAAOhD,SACPiD,EAAOlD,OACPmD,EAAe,GA+afxE,KAAKsM,SAAWtH,EAASJ,GACzB5E,KAAKyF,MAAQ,GACbzF,KAAKoJ,MAAQ,GACbpJ,KAAKmJ,MAAQ,GACbnJ,KAAKuM,WAAa,GAClBvM,KAAKoF,KAAOA,GAAQ,CAAC,EACFpF,KAAKgG,MAAMZ,EAChC,CACA,IAAIxC,EAASyJ,EAAU5P,UA4CvB,OA3CAmG,EAAOoD,MAAQ,SAAeZ,GAC5BpF,KAAKwM,SAAWxM,KAAKyM,SACrBzM,KAAKoF,KAAOA,EAAOA,GAAQpF,KAAKoF,KAChCpF,KAAKuM,WAAWxY,OAASiM,KAAKyF,MAAM1R,OAASiM,KAAKoJ,MAAMrV,OAASiM,KAAKmJ,MAAMpV,OAAS,EASrF,IARA,IAIE6T,EACAD,EACA5D,EANE/P,EAAIgM,KAAKsM,SAASvY,OACpB8R,EAAMT,EAAKS,IAAMT,EAAKS,IAAMT,EAAK6D,KAAO,OAAS,MACjDoC,EAAY1F,EAAcP,EAAKsH,WAAY7G,GAC3CyF,EAAY3F,EAAcP,EAAKuH,WAAY9G,KAKpC7R,GAAK,GACZ+P,EAAI/D,KAAKsM,SAAStY,GAClBgM,KAAKuM,WAAWvY,GAAK+P,EAAE6G,UACvBhD,EAAa7D,EAAEkH,aACftD,EAAY5D,EAAEmH,YACdkB,EAAOrI,EAAGqB,EAAMiG,EAAWC,GAC3B/D,EAAwBxD,EAAGqB,EAAMpF,KAAKyF,MAAOzF,KAAKoJ,MAAOpJ,KAAKmJ,MAAOxB,EAAWC,GAMlF,OAJA5H,KAAKyF,MAAMmH,UACX5M,KAAKoJ,MAAMwD,UACX5M,KAAKmJ,MAAMyD,UACX5M,KAAKwM,SAAU,EACRxM,IACT,EACA4C,EAAO6J,OAAS,WACd,IAAII,EAAY7M,KAAKuM,WACrB,IAAKM,EACH,KAAM,wCASR,OAPA7M,KAAKsM,SAAS5O,SAAQ,SAAUqG,EAAG/P,GACjC,OAAO+P,EAAE6G,UAAYiC,EAAU7Y,EACjC,IACAgM,KAAKyF,MAAQ,GACbzF,KAAKoJ,MAAQ,GACbpJ,KAAKmJ,MAAQ,GACbnJ,KAAKwM,SAAU,EACRxM,IACT,EACAqM,EAAU/J,OAAS,SAAgBsC,EAASQ,GAC1C,OAAO,IAAIiH,EAAUzH,EAASQ,EAChC,EACOiH,CACT,CAxDoC,GAyDpCA,EAAUS,QAAU,8BCzfpB,IAAIC,EAAa,EAAQ,MACrBtJ,EAAU,EAAQ,MAClB9G,EAAiB/I,OAAO+I,eACxBqQ,EAAepZ,OAAO0O,OAAO,MAGjC,IAAK,IAAI/E,KAAQwP,EACXpQ,EAAeC,KAAKmQ,EAAYxP,KAClCyP,EAAaD,EAAWxP,IAASA,GAGrC,IAAIhG,EAAKlC,EAAOC,QAAU,CACxBT,GAAI,CAAC,EACLuH,IAAK,CAAC,GAyKR,SAAS6Q,EAAMlH,EAAKmH,EAAKC,GACvB,OAAOhP,KAAK+O,IAAI/O,KAAKgP,IAAID,EAAKnH,GAAMoH,EACtC,CACA,SAASC,EAAUrH,GACjB,IAAIsH,EAAMlP,KAAKC,MAAM2H,GAAKrJ,SAAS,IAAI4Q,cACvC,OAAOD,EAAItZ,OAAS,EAAI,IAAMsZ,EAAMA,CACtC,CA7KA9V,EAAG6E,IAAM,SAAUmR,GACjB,IACIC,EACAC,EACJ,OAHaF,EAAOG,UAAU,EAAG,GAAGnY,eAIlC,IAAK,MACHiY,EAAMjW,EAAG6E,IAAIuR,IAAIJ,GACjBE,EAAQ,MACR,MACF,IAAK,MACHD,EAAMjW,EAAG6E,IAAIwR,IAAIL,GACjBE,EAAQ,MACR,MACF,QACED,EAAMjW,EAAG6E,IAAIyR,IAAIN,GACjBE,EAAQ,MAGZ,OAAKD,EAGE,CACLC,MAAOA,EACP9V,MAAO6V,GAJA,IAMX,EACAjW,EAAG6E,IAAIyR,IAAM,SAAUN,GACrB,IAAKA,EACH,OAAO,KAET,IAMIvQ,EACAhJ,EACA8Z,EAHAD,EAAM,CAAC,EAAG,EAAG,EAAG,GAIpB,GAAI7Q,EAAQuQ,EAAOvQ,MART,mCAQqB,CAG7B,IAFA8Q,EAAW9Q,EAAM,GACjBA,EAAQA,EAAM,GACThJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEtB,IAAI+Z,EAAS,EAAJ/Z,EACT6Z,EAAI7Z,GAAKga,SAAShR,EAAMiB,MAAM8P,EAAIA,EAAK,GAAI,GAC7C,CACID,IACFD,EAAI,GAAKG,SAASF,EAAU,IAAM,IAEtC,MAAO,GAAI9Q,EAAQuQ,EAAOvQ,MApBf,uBAoB4B,CAGrC,IADA8Q,GADA9Q,EAAQA,EAAM,IACG,GACZhJ,EAAI,EAAGA,EAAI,EAAGA,IACjB6Z,EAAI7Z,GAAKga,SAAShR,EAAMhJ,GAAKgJ,EAAMhJ,GAAI,IAErC8Z,IACFD,EAAI,GAAKG,SAASF,EAAWA,EAAU,IAAM,IAEjD,MAAO,GAAI9Q,EAAQuQ,EAAOvQ,MA3Bf,gIA2B4B,CACrC,IAAKhJ,EAAI,EAAGA,EAAI,EAAGA,IACjB6Z,EAAI7Z,GAAKga,SAAShR,EAAMhJ,EAAI,GAAI,GAE9BgJ,EAAM,KACJA,EAAM,GACR6Q,EAAI,GAA4B,IAAvBvG,WAAWtK,EAAM,IAE1B6Q,EAAI,GAAKvG,WAAWtK,EAAM,IAGhC,KAAO,MAAIA,EAAQuQ,EAAOvQ,MArChB,yHAgDH,OAAIA,EAAQuQ,EAAOvQ,MA/CZ,YAgDK,gBAAbA,EAAM,GACD,CAAC,EAAG,EAAG,EAAG,GAEdL,EAAeC,KAAKmQ,EAAY/P,EAAM,MAG3C6Q,EAAMd,EAAW/P,EAAM,KACnB,GAAK,EACF6Q,GAJE,KAMF,KArBP,IAAK7Z,EAAI,EAAGA,EAAI,EAAGA,IACjB6Z,EAAI7Z,GAAKmK,KAAKC,MAAiC,KAA3BkJ,WAAWtK,EAAMhJ,EAAI,KAEvCgJ,EAAM,KACJA,EAAM,GACR6Q,EAAI,GAA4B,IAAvBvG,WAAWtK,EAAM,IAE1B6Q,EAAI,GAAKvG,WAAWtK,EAAM,IAehC,CACA,IAAKhJ,EAAI,EAAGA,EAAI,EAAGA,IACjB6Z,EAAI7Z,GAAKiZ,EAAMY,EAAI7Z,GAAI,EAAG,KAG5B,OADA6Z,EAAI,GAAKZ,EAAMY,EAAI,GAAI,EAAG,GACnBA,CACT,EACAtW,EAAG6E,IAAIuR,IAAM,SAAUJ,GACrB,IAAKA,EACH,OAAO,KAET,IACIvQ,EAAQuQ,EAAOvQ,MADT,gLAEV,GAAIA,EAAO,CACT,IAAIiR,EAAQ3G,WAAWtK,EAAM,IAK7B,MAAO,EAJEsK,WAAWtK,EAAM,IAAM,IAAM,KAAO,IACrCiQ,EAAM3F,WAAWtK,EAAM,IAAK,EAAG,KAC/BiQ,EAAM3F,WAAWtK,EAAM,IAAK,EAAG,KAC/BiQ,EAAMiB,MAAMD,GAAS,EAAIA,EAAO,EAAG,GAE7C,CACA,OAAO,IACT,EACA1W,EAAG6E,IAAIwR,IAAM,SAAUL,GACrB,IAAKA,EACH,OAAO,KAET,IACIvQ,EAAQuQ,EAAOvQ,MADT,uKAEV,GAAIA,EAAO,CACT,IAAIiR,EAAQ3G,WAAWtK,EAAM,IAK7B,MAAO,EAJEsK,WAAWtK,EAAM,IAAM,IAAM,KAAO,IACrCiQ,EAAM3F,WAAWtK,EAAM,IAAK,EAAG,KAC/BiQ,EAAM3F,WAAWtK,EAAM,IAAK,EAAG,KAC/BiQ,EAAMiB,MAAMD,GAAS,EAAIA,EAAO,EAAG,GAE7C,CACA,OAAO,IACT,EACA1W,EAAG1C,GAAGgD,IAAM,WACV,IAAIsW,EAAO1K,EAAQzF,WACnB,MAAO,IAAMoP,EAAUe,EAAK,IAAMf,EAAUe,EAAK,IAAMf,EAAUe,EAAK,KAAOA,EAAK,GAAK,EAAIf,EAAUjP,KAAKC,MAAgB,IAAV+P,EAAK,KAAa,GACpI,EACA5W,EAAG1C,GAAGgZ,IAAM,WACV,IAAIM,EAAO1K,EAAQzF,WACnB,OAAOmQ,EAAKpa,OAAS,GAAiB,IAAZoa,EAAK,GAAW,OAAShQ,KAAKC,MAAM+P,EAAK,IAAM,KAAOhQ,KAAKC,MAAM+P,EAAK,IAAM,KAAOhQ,KAAKC,MAAM+P,EAAK,IAAM,IAAM,QAAUhQ,KAAKC,MAAM+P,EAAK,IAAM,KAAOhQ,KAAKC,MAAM+P,EAAK,IAAM,KAAOhQ,KAAKC,MAAM+P,EAAK,IAAM,KAAOA,EAAK,GAAK,GACtP,EACA5W,EAAG1C,GAAGgZ,IAAIO,QAAU,WAClB,IAAID,EAAO1K,EAAQzF,WACfqQ,EAAIlQ,KAAKC,MAAM+P,EAAK,GAAK,IAAM,KAC/BG,EAAInQ,KAAKC,MAAM+P,EAAK,GAAK,IAAM,KAC/BzS,EAAIyC,KAAKC,MAAM+P,EAAK,GAAK,IAAM,KACnC,OAAOA,EAAKpa,OAAS,GAAiB,IAAZoa,EAAK,GAAW,OAASE,EAAI,MAAQC,EAAI,MAAQ5S,EAAI,KAAO,QAAU2S,EAAI,MAAQC,EAAI,MAAQ5S,EAAI,MAAQyS,EAAK,GAAK,GAChJ,EACA5W,EAAG1C,GAAG8Y,IAAM,WACV,IAAIY,EAAO9K,EAAQzF,WACnB,OAAOuQ,EAAKxa,OAAS,GAAiB,IAAZwa,EAAK,GAAW,OAASA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,KAAO,QAAUA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,MAAQA,EAAK,GAAK,GAClL,EAIAhX,EAAG1C,GAAG+Y,IAAM,WACV,IAAIY,EAAO/K,EAAQzF,WACfvC,EAAI,GAIR,OAHI+S,EAAKza,QAAU,GAAiB,IAAZya,EAAK,KAC3B/S,EAAI,KAAO+S,EAAK,IAEX,OAASA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,IAAM/S,EAAI,GACzE,EACAlE,EAAG1C,GAAG4Z,QAAU,SAAUZ,GACxB,OAAOb,EAAaa,EAAI5P,MAAM,EAAG,GACnC,qCClLA,IAAIyQ,EAAc,EAAQ,MACtBjR,EAAU,EAAQ,MAClBsH,EAAS,GAAG9G,MACZ0Q,EAAgB,CAEpB,UAEA,OAEA,OACIC,EAAkB,CAAC,EACvBhb,OAAOC,KAAK4J,GAASC,SAAQ,SAAU+P,GACrCmB,EAAgB7J,EAAOnI,KAAKa,EAAQgQ,GAAO5P,QAAQgR,OAAOpX,KAAK,KAAOgW,CACxE,IACA,IAAIqB,EAAW,CAAC,EAChB,SAASxY,EAAM6G,EAAKsQ,GAClB,KAAMzN,gBAAgB1J,GACpB,OAAO,IAAIA,EAAM6G,EAAKsQ,GAKxB,GAHIA,GAASA,KAASkB,IACpBlB,EAAQ,MAENA,KAAWA,KAAShQ,GACtB,MAAM,IAAIkE,MAAM,kBAAoB8L,GAEtC,IAAIzZ,EACA4J,EACJ,GAAW,MAAPT,EAEF6C,KAAKyN,MAAQ,MACbzN,KAAKrJ,MAAQ,CAAC,EAAG,EAAG,GACpBqJ,KAAK+O,OAAS,OACT,GAAI5R,aAAe7G,EACxB0J,KAAKyN,MAAQtQ,EAAIsQ,MACjBzN,KAAKrJ,MAAQwG,EAAIxG,MAAMsH,QACvB+B,KAAK+O,OAAS5R,EAAI4R,YACb,GAAmB,iBAAR5R,EAAkB,CAClC,IAAIe,EAASwQ,EAAYtS,IAAIe,GAC7B,GAAe,OAAXe,EACF,MAAM,IAAIyD,MAAM,sCAAwCxE,GAE1D6C,KAAKyN,MAAQvP,EAAOuP,MACpB7P,EAAWH,EAAQuC,KAAKyN,OAAO7P,SAC/BoC,KAAKrJ,MAAQuH,EAAOvG,MAAMsG,MAAM,EAAGL,GACnCoC,KAAK+O,OAA2C,iBAA3B7Q,EAAOvG,MAAMiG,GAAyBM,EAAOvG,MAAMiG,GAAY,CACtF,MAAO,GAAIT,EAAIpJ,OAAQ,CACrBiM,KAAKyN,MAAQA,GAAS,MACtB7P,EAAWH,EAAQuC,KAAKyN,OAAO7P,SAC/B,IAAIoR,EAASjK,EAAOnI,KAAKO,EAAK,EAAGS,GACjCoC,KAAKrJ,MAAQsY,EAAUD,EAAQpR,GAC/BoC,KAAK+O,OAAkC,iBAAlB5R,EAAIS,GAAyBT,EAAIS,GAAY,CACpE,MAAO,GAAmB,iBAART,EAEhBA,GAAO,SACP6C,KAAKyN,MAAQ,MACbzN,KAAKrJ,MAAQ,CAACwG,GAAO,GAAK,IAAMA,GAAO,EAAI,IAAY,IAANA,GACjD6C,KAAK+O,OAAS,MACT,CACL/O,KAAK+O,OAAS,EACd,IAAIlb,EAAOD,OAAOC,KAAKsJ,GACnB,UAAWA,IACbtJ,EAAKuJ,OAAOvJ,EAAKqP,QAAQ,SAAU,GACnClD,KAAK+O,OAA8B,iBAAd5R,EAAI8Q,MAAqB9Q,EAAI8Q,MAAQ,GAE5D,IAAIiB,EAAarb,EAAKgb,OAAOpX,KAAK,IAClC,KAAMyX,KAAcN,GAClB,MAAM,IAAIjN,MAAM,sCAAwCwN,KAAKC,UAAUjS,IAEzE6C,KAAKyN,MAAQmB,EAAgBM,GAC7B,IAAIrR,EAASJ,EAAQuC,KAAKyN,OAAO5P,OAC7BlH,EAAQ,GACZ,IAAK3C,EAAI,EAAGA,EAAI6J,EAAO9J,OAAQC,IAC7B2C,EAAMmM,KAAK3F,EAAIU,EAAO7J,KAExBgM,KAAKrJ,MAAQsY,EAAUtY,EACzB,CAGA,GAAImY,EAAS9O,KAAKyN,OAEhB,IADA7P,EAAWH,EAAQuC,KAAKyN,OAAO7P,SAC1B5J,EAAI,EAAGA,EAAI4J,EAAU5J,IAAK,CAC7B,IAAIqb,EAAQP,EAAS9O,KAAKyN,OAAOzZ,GAC7Bqb,IACFrP,KAAKrJ,MAAM3C,GAAKqb,EAAMrP,KAAKrJ,MAAM3C,IAErC,CAEFgM,KAAK+O,OAAS5Q,KAAKgP,IAAI,EAAGhP,KAAK+O,IAAI,EAAGlN,KAAK+O,SACvCnb,OAAO0b,QACT1b,OAAO0b,OAAOtP,KAElB,CA2PA,SAASuP,EAAO9B,EAAO+B,EAASC,GAM9B,OALAhC,EAAQ5R,MAAMC,QAAQ2R,GAASA,EAAQ,CAACA,IAClC/P,SAAQ,SAAUgS,IACrBZ,EAASY,KAAOZ,EAASY,GAAK,KAAKF,GAAWC,CACjD,IACAhC,EAAQA,EAAM,GACP,SAAUD,GACf,IAAItP,EACJ,OAAIF,UAAUjK,QACR0b,IACFjC,EAAMiC,EAASjC,KAEjBtP,EAAS8B,KAAKyN,MACP9W,MAAM6Y,GAAWhC,EACjBtP,IAETA,EAAS8B,KAAKyN,KAAS9W,MAAM6Y,GACzBC,IACFvR,EAASuR,EAASvR,IAEbA,EACT,CACF,CACA,SAASyR,EAAMxC,GACb,OAAO,SAAUyC,GACf,OAAOzR,KAAKgP,IAAI,EAAGhP,KAAK+O,IAAIC,EAAKyC,GACnC,CACF,CAIA,SAASX,EAAUY,EAAK9b,GACtB,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQC,IACJ,iBAAX6b,EAAI7b,KACb6b,EAAI7b,GAAK,GAGb,OAAO6b,CACT,CAhSAvZ,EAAMmG,UAAY,CAChBC,SAAU,WACR,OAAOsD,KAAKuN,QACd,EACAuC,OAAQ,WACN,OAAO9P,KAAKA,KAAKyN,QACnB,EACAF,OAAQ,SAAUwC,GAChB,IAAIC,EAAOhQ,KAAKyN,SAASiB,EAAY7Z,GAAKmL,KAAOA,KAAK6N,MAElD/Y,EAAuB,KAD3Bkb,EAAOA,EAAK5R,MAAwB,iBAAX2R,EAAsBA,EAAS,IACxChB,OAAeiB,EAAKrZ,MAAQqZ,EAAKrZ,MAAM6M,OAAOxD,KAAK+O,QACnE,OAAOL,EAAY7Z,GAAGmb,EAAKvC,OAAO3Y,EACpC,EACAmb,cAAe,SAAUF,GACvB,IAAIC,EAAOhQ,KAAK6N,MAAMzP,MAAwB,iBAAX2R,EAAsBA,EAAS,GAC9Djb,EAAuB,IAAhBkb,EAAKjB,OAAeiB,EAAKrZ,MAAQqZ,EAAKrZ,MAAM6M,OAAOxD,KAAK+O,QACnE,OAAOL,EAAY7Z,GAAGgZ,IAAIO,QAAQtZ,EACpC,EACAob,MAAO,WACL,OAAuB,IAAhBlQ,KAAK+O,OAAe/O,KAAKrJ,MAAMsH,QAAU+B,KAAKrJ,MAAM6M,OAAOxD,KAAK+O,OACzE,EACAoB,OAAQ,WAIN,IAHA,IAAIjS,EAAS,CAAC,EACVN,EAAWH,EAAQuC,KAAKyN,OAAO7P,SAC/BC,EAASJ,EAAQuC,KAAKyN,OAAO5P,OACxB7J,EAAI,EAAGA,EAAI4J,EAAU5J,IAC5BkK,EAAOL,EAAO7J,IAAMgM,KAAKrJ,MAAM3C,GAKjC,OAHoB,IAAhBgM,KAAK+O,SACP7Q,EAAO+P,MAAQjO,KAAK+O,QAEf7Q,CACT,EACAkS,UAAW,WACT,IAAIvC,EAAM7N,KAAK6N,MAAMlX,MAOrB,OANAkX,EAAI,IAAM,IACVA,EAAI,IAAM,IACVA,EAAI,IAAM,IACU,IAAhB7N,KAAK+O,QACPlB,EAAI/K,KAAK9C,KAAK+O,QAETlB,CACT,EACAwC,WAAY,WACV,IAAIxC,EAAM7N,KAAK6N,MAAMsC,SAOrB,OANAtC,EAAIQ,GAAK,IACTR,EAAIS,GAAK,IACTT,EAAInS,GAAK,IACW,IAAhBsE,KAAK+O,SACPlB,EAAII,MAAQjO,KAAK+O,QAEZlB,CACT,EACAzP,MAAO,SAAU2R,GAEf,OADAA,EAAS5R,KAAKgP,IAAI4C,GAAU,EAAG,GACxB,IAAIzZ,EAAM0J,KAAKrJ,MAAMqL,IA8LhC,SAAsB+N,GACpB,OAAO,SAAUhK,GACf,OALJ,SAAiBA,EAAKgK,GACpB,OAAOO,OAAOvK,EAAIwK,QAAQR,GAC5B,CAGWS,CAAQzK,EAAKgK,EACtB,CACF,CAlMoCU,CAAaV,IAASvM,OAAOxD,KAAK+O,QAAS/O,KAAKyN,MAClF,EACAQ,MAAO,SAAUT,GACf,OAAIxP,UAAUjK,OACL,IAAIuC,EAAM0J,KAAKrJ,MAAM6M,OAAOrF,KAAKgP,IAAI,EAAGhP,KAAK+O,IAAI,EAAGM,KAAQxN,KAAKyN,OAEnEzN,KAAK+O,MACd,EAEAnZ,IAAK2Z,EAAO,MAAO,EAAGI,EAAM,MAC5B7Z,MAAOyZ,EAAO,MAAO,EAAGI,EAAM,MAC9B9Z,KAAM0Z,EAAO,MAAO,EAAGI,EAAM,MAC7B1Y,IAAKsY,EAAO,CAAC,MAAO,MAAO,MAAO,MAAO,OAAQ,GAAG,SAAU/B,GAC5D,OAAQA,EAAM,IAAM,KAAO,GAC7B,IAGAtW,YAAaqY,EAAO,MAAO,EAAGI,EAAM,MACpCvY,UAAWmY,EAAO,MAAO,EAAGI,EAAM,MAClCe,YAAanB,EAAO,MAAO,EAAGI,EAAM,MACpChY,MAAO4X,EAAO,MAAO,EAAGI,EAAM,MAC9BgB,OAAQpB,EAAO,MAAO,EAAGI,EAAM,MAC/B1Z,KAAMsZ,EAAO,MAAO,EAAGI,EAAM,MAC7B5Z,MAAOwZ,EAAO,MAAO,EAAGI,EAAM,MAC9BiB,OAAQrB,EAAO,MAAO,EAAGI,EAAM,MAC/BkB,KAAMtB,EAAO,OAAQ,EAAGI,EAAM,MAC9BmB,QAASvB,EAAO,OAAQ,EAAGI,EAAM,MACjCoB,OAAQxB,EAAO,OAAQ,EAAGI,EAAM,MAChCxZ,MAAOoZ,EAAO,OAAQ,EAAGI,EAAM,MAC/BqB,EAAGzB,EAAO,MAAO,EAAGI,EAAM,MAC1BsB,EAAG1B,EAAO,MAAO,EAAGI,EAAM,MAC1BuB,EAAG3B,EAAO,MAAO,EAAGI,EAAM,MAC1BxY,EAAGoY,EAAO,MAAO,EAAGI,EAAM,MAC1BlU,EAAG8T,EAAO,MAAO,GACjB7T,EAAG6T,EAAO,MAAO,GACjBd,QAAS,SAAUjB,GACjB,OAAIxP,UAAUjK,OACL,IAAIuC,EAAMkX,GAEZ/P,EAAQuC,KAAKyN,OAAOgB,QAAQzO,KAAKrJ,MAC1C,EACAkB,IAAK,SAAU2V,GACb,OAAIxP,UAAUjK,OACL,IAAIuC,EAAMkX,GAEZkB,EAAY7Z,GAAGgD,IAAImI,KAAK6N,MAAMzP,QAAQzH,MAC/C,EACAwa,UAAW,WACT,IAAItD,EAAM7N,KAAK6N,MAAMlX,MACrB,OAAiB,IAATkX,EAAI,KAAc,IAAe,IAATA,EAAI,KAAc,EAAa,IAATA,EAAI,EAC5D,EACAtX,WAAY,WAIV,IAFA,IAAIsX,EAAM7N,KAAK6N,MAAMlX,MACjBya,EAAM,GACDpd,EAAI,EAAGA,EAAI6Z,EAAI9Z,OAAQC,IAAK,CACnC,IAAIqd,EAAOxD,EAAI7Z,GAAK,IACpBod,EAAIpd,GAAKqd,GAAQ,OAAUA,EAAO,MAAQlT,KAAKmT,KAAKD,EAAO,MAAS,MAAO,IAC7E,CACA,MAAO,MAASD,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,EAC1D,EACAG,SAAU,SAAUC,GAElB,IAAIC,EAAOzR,KAAKzJ,aACZmb,EAAOF,EAAOjb,aAClB,OAAIkb,EAAOC,GACDD,EAAO,MAASC,EAAO,MAEzBA,EAAO,MAASD,EAAO,IACjC,EACAE,MAAO,SAAUH,GACf,IAAII,EAAgB5R,KAAKuR,SAASC,GAClC,OAAII,GAAiB,IACZ,MAEFA,GAAiB,IAAM,KAAO,EACvC,EACAC,OAAQ,WAEN,IAAIhE,EAAM7N,KAAK6N,MAAMlX,MAErB,OADoB,IAATkX,EAAI,GAAoB,IAATA,EAAI,GAAoB,IAATA,EAAI,IAAY,IAC5C,GACf,EACAiE,QAAS,WACP,OAAQ9R,KAAK6R,QACf,EACAE,OAAQ,WAEN,IADA,IAAIlE,EAAM7N,KAAK6N,MACN7Z,EAAI,EAAGA,EAAI,EAAGA,IACrB6Z,EAAIlX,MAAM3C,GAAK,IAAM6Z,EAAIlX,MAAM3C,GAEjC,OAAO6Z,CACT,EACAjW,QAAS,SAAUoa,GACjB,IAAIrE,EAAM3N,KAAK2N,MAEf,OADAA,EAAIhX,MAAM,IAAMgX,EAAIhX,MAAM,GAAKqb,EACxBrE,CACT,EACA7V,OAAQ,SAAUka,GAChB,IAAIrE,EAAM3N,KAAK2N,MAEf,OADAA,EAAIhX,MAAM,IAAMgX,EAAIhX,MAAM,GAAKqb,EACxBrE,CACT,EACAsE,SAAU,SAAUD,GAClB,IAAIrE,EAAM3N,KAAK2N,MAEf,OADAA,EAAIhX,MAAM,IAAMgX,EAAIhX,MAAM,GAAKqb,EACxBrE,CACT,EACAuE,WAAY,SAAUF,GACpB,IAAIrE,EAAM3N,KAAK2N,MAEf,OADAA,EAAIhX,MAAM,IAAMgX,EAAIhX,MAAM,GAAKqb,EACxBrE,CACT,EACAwE,OAAQ,SAAUH,GAChB,IAAIpE,EAAM5N,KAAK4N,MAEf,OADAA,EAAIjX,MAAM,IAAMiX,EAAIjX,MAAM,GAAKqb,EACxBpE,CACT,EACAwE,QAAS,SAAUJ,GACjB,IAAIpE,EAAM5N,KAAK4N,MAEf,OADAA,EAAIjX,MAAM,IAAMiX,EAAIjX,MAAM,GAAKqb,EACxBpE,CACT,EACAyE,UAAW,WAET,IAAIxE,EAAM7N,KAAK6N,MAAMlX,MACjB6W,EAAe,GAATK,EAAI,GAAoB,IAATA,EAAI,GAAqB,IAATA,EAAI,GAC7C,OAAOvX,EAAMuX,IAAIL,EAAKA,EAAKA,EAC7B,EACA8E,KAAM,SAAUN,GACd,OAAOhS,KAAKiO,MAAMjO,KAAK+O,OAAS/O,KAAK+O,OAASiD,EAChD,EACAO,QAAS,SAAUP,GACjB,OAAOhS,KAAKiO,MAAMjO,KAAK+O,OAAS/O,KAAK+O,OAASiD,EAChD,EACAQ,OAAQ,SAAUC,GAChB,IAAI9E,EAAM3N,KAAK2N,MACX1W,EAAM0W,EAAIhX,MAAM,GAIpB,OAFAM,GADAA,GAAOA,EAAMwb,GAAW,KACZ,EAAI,IAAMxb,EAAMA,EAC5B0W,EAAIhX,MAAM,GAAKM,EACR0W,CACT,EACA+E,IAAK,SAAUC,EAAYC,GAGzB,IAAKD,IAAeA,EAAW9E,IAC7B,MAAM,IAAIlM,MAAM,gFAAkFgR,GAEpG,IAAIE,EAASF,EAAW9E,MACpB2D,EAASxR,KAAK6N,MACd3V,OAAeyK,IAAXiQ,EAAuB,GAAMA,EACjCE,EAAI,EAAI5a,EAAI,EACZuD,EAAIoX,EAAO5E,QAAUuD,EAAOvD,QAC5B8E,IAAOD,EAAIrX,IAAO,EAAIqX,GAAKA,EAAIrX,IAAM,EAAIqX,EAAIrX,IAAM,GAAK,EACxDuX,EAAK,EAAID,EACb,OAAOzc,EAAMuX,IAAIkF,EAAKF,EAAOjd,MAAQod,EAAKxB,EAAO5b,MAAOmd,EAAKF,EAAO/c,QAAUkd,EAAKxB,EAAO1b,QAASid,EAAKF,EAAOhd,OAASmd,EAAKxB,EAAO3b,OAAQgd,EAAO5E,QAAU/V,EAAIsZ,EAAOvD,SAAW,EAAI/V,GACzL,GAIFtE,OAAOC,KAAK4J,GAASC,SAAQ,SAAU+P,GACrC,IAAsC,IAAlCkB,EAAczL,QAAQuK,GAA1B,CAGA,IAAI7P,EAAWH,EAAQgQ,GAAO7P,SAG9BtH,EAAMmG,UAAUgR,GAAS,WACvB,GAAIzN,KAAKyN,QAAUA,EACjB,OAAO,IAAInX,EAAM0J,MAEnB,GAAIhC,UAAUjK,OACZ,OAAO,IAAIuC,EAAM0H,UAAWyP,GAE9B,IAgDiBD,EAhDbyF,EAA0C,iBAAxBjV,UAAUJ,GAAyBA,EAAWoC,KAAK+O,OACzE,OAAO,IAAIzY,GA+CMkX,EA/CY/P,EAAQuC,KAAKyN,OAAOA,GAAOnP,IAAI0B,KAAKrJ,OAgD5DkF,MAAMC,QAAQ0R,GAAOA,EAAM,CAACA,IAhDwChK,OAAOyP,GAAWxF,EAC7F,EAGAnX,EAAMmX,GAAS,SAAU9W,GAIvB,MAHqB,iBAAVA,IACTA,EAAQsY,EAAUlK,EAAOnI,KAAKoB,WAAYJ,IAErC,IAAItH,EAAMK,EAAO8W,EAC1B,CArBA,CAsBF,IAgDApY,EAAOC,QAAUgB,mDCrWjB,IAvBwB4c,KACtB,MAAM,KAAEC,IAASC,EAAAA,EAAAA,gBAAe,cAahC,OAAOD,EAAME,YAAY,iCCf3Bhe,EAAOC,QAAU,CACf,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,qGC3IxB,EACF0P,EAEAT,EACA+O,EACA9O,gCACA+O,EAAgB,WACd,MAAyB,oBAAXlS,MAChB,EACAmS,EAAW,WACT,OAAO,GAAQD,MAAoB,EAAOlS,OAAOoS,OAAS,EAAKC,gBAAkB,CACnF,EACAC,EAAU,wCAEVC,EAAS,CACPC,KAAM,CAAC,QAAS,UAChBC,OAAQ,CAAC,IAAK,KACdC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,OAEfC,EAAS,SAAgBtc,GACvB,OAAOwG,KAAKC,MAAc,IAARzG,GAAiB,GACrC,EACAuc,EAAY,SAAmBvc,GAC7B,OAAO2P,WAAW3P,IAAU,CAC9B,EACAwc,EAAkB,SAAyBxc,EAAO5D,GAChD,IAAIgS,EAAMmO,EAAUvc,GACpB,OAAQA,EAAMuL,QAAQ,KAAO6C,EAAM,IAAMhS,EAASgS,CACpD,EACAqO,EAAwB,SAA+BC,EAAQC,GAC7D,OAAOJ,EAAUG,EAAOE,aAAaD,GACvC,EACAE,EAAQrW,KAAKsW,KACbC,EAAe,SAAsBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAQC,GAC3D,OAAOR,EAAMrW,KAAKmT,KAAK4C,EAAUW,GAAMX,EAAUS,IAAOI,EAAQ,GAAK5W,KAAKmT,KAAK4C,EAAUY,GAAMZ,EAAUU,IAAOI,EAAQ,GAC1H,EACAC,EAAQ,SAAelY,GACrB,OAAOE,QAAQC,KAAKH,EACtB,EACAmY,EAAuB,SAA8Bb,GACnD,MAAgD,uBAAzCA,EAAOE,aAAa,gBAC7B,EAmBAY,EAAa,SAAoBd,GAE/B,KADAA,EAASrP,EAASqP,GAAQ,IAExB,OAAO,EAET,IAIEtgB,EACAqhB,EACAC,EACAC,EACAthB,EACAuhB,EACAC,EAVExR,EAAOqQ,EAAOoB,QAAQlgB,cACxB2S,EAAQmM,EAAOnM,MACf6M,EAAS,EACTC,EAAS,EAQPE,EAAqBb,KAEvBW,EAASX,EAAOqB,eAChBX,EAASP,EAAMQ,EAAOvZ,EAAIuZ,EAAOvZ,EAAIuZ,EAAOtZ,EAAIsZ,EAAOtZ,GACvDsZ,EAASR,EAAMQ,EAAOpa,EAAIoa,EAAOpa,EAAIoa,EAAOW,EAAIX,EAAOW,IAEzD,IAEEP,EAAOf,EAAOuB,SAChB,CAAE,MAAO7R,GAEPkR,EAAM,2FACR,CACA,IAAIY,EAAOT,GAAQ,CACfpE,EAAG,EACHC,EAAG,EACHzY,MAAO,EACPC,OAAQ,GAEVuY,EAAI6E,EAAK7E,EACTC,EAAI4E,EAAK5E,EACTzY,EAAQqd,EAAKrd,MACbC,EAASod,EAAKpd,OAiBhB,GAhBM2c,IAAS5c,GAAUC,KAAWmb,EAAO5P,KAEzCxL,EAAQ4b,EAAsBC,EAAQT,EAAO5P,GAAM,IACnDvL,EAAS2b,EAAsBC,EAAQT,EAAO5P,GAAM,IACvC,SAATA,GAA4B,SAATA,IAErBxL,GAAS,EACTC,GAAU,GAEC,SAATuL,IACFgN,EAAIoD,EAAsBC,EAAQ,MAClCpD,EAAImD,EAAsBC,EAAQ,MAClC7b,EAAQ2F,KAAK0L,IAAIrR,EAAQwY,GACzBvY,EAAS0F,KAAK0L,IAAIpR,EAASwY,KAGlB,SAATjN,EACFsR,EAAYpN,EAAM4N,gBAClB5N,EAAM4N,gBAAkB,OACxB/hB,EAASsgB,EAAO0B,kBAAoB,EACpChB,IAAWC,GAAUC,EAAM,mIAC3BlhB,IAAWghB,EAASC,GAAU,EAC9B9M,EAAM4N,gBAAkBR,OACnB,GAAa,SAATtR,EACTjQ,EAAiB,EAARyE,EAAYuc,EAAkB,EAATtc,EAAauc,OACtC,GAAa,SAAThR,EACTjQ,EAAS2gB,EAAa1D,EAAGC,EAAGD,EAAIxY,EAAOyY,EAAIxY,EAAQsc,EAAQC,QACtD,GAAa,aAAThR,GAAgC,YAATA,EAIhC,IAHAqR,EAAShB,EAAOE,aAAa,UAAUvX,MAAM2W,IAAY,GAChD,YAAT3P,GAAsBqR,EAAOvS,KAAKuS,EAAO,GAAIA,EAAO,IACpDthB,EAAS,EACJC,EAAI,EAAGA,EAAIqhB,EAAOthB,OAAQC,GAAK,EAClCD,GAAU2gB,EAAaW,EAAOrhB,EAAI,GAAIqhB,EAAOrhB,EAAI,GAAIqhB,EAAOrhB,GAAIqhB,EAAOrhB,EAAI,GAAI+gB,EAAQC,IAAW,MAElF,WAAThR,GAA8B,YAATA,IAC9BuR,EAAK/c,EAAQ,EAAIuc,EACjBS,EAAK/c,EAAS,EAAIuc,EAClBjhB,EAASoK,KAAK6X,IAAM,GAAKT,EAAKC,GAAMhB,GAAO,EAAIe,EAAKC,IAAOD,EAAK,EAAIC,MAEtE,OAAOzhB,GAAU,CACnB,EACAkiB,EAAe,SAAsB5B,EAAQtgB,GAE3C,KADAsgB,EAASrP,EAASqP,GAAQ,IAExB,MAAO,CAAC,EAAG,GAEbtgB,IAAWA,EAASohB,EAAWd,GAAU,GACzC,IAAI9c,EAAKgN,EAAKM,iBAAiBwP,GAC7B6B,EAAO3e,EAAGue,iBAAmB,GAC7BzN,EAAS6L,EAAU3c,EAAG4e,kBACtBniB,EAAIkiB,EAAKhT,QAAQ,KAInB,OAHAlP,EAAI,IAAMA,EAAIkiB,EAAKhT,QAAQ,OAC3BgT,EAAOliB,EAAI,EAAID,EAASmgB,EAAUgC,EAAKxQ,OAAO,EAAG1R,KAC1CD,IAAWmiB,EAAOniB,GAClB,EAAEsU,GAAU,EAAG6N,EAAO7N,GAAU,EACzC,EACA+N,EAAY,WACN7C,MACKjS,SACPiD,EAAOlD,OACPmD,EAAe,EAAOgP,IACtBxO,EAAW,EAAKqR,MAAMC,QACtBhD,GAAwE,MAA5D/O,EAAKgS,WAAa,CAAC,GAAGC,WAAa,IAAItT,QAAQ,QAE/D,EACSuT,EAAgB,CACzB3J,QAAS,QACTvP,KAAM,UACNmZ,SAAU,SAAkBC,GAC1B,EAAOA,EACPP,GACF,EACAQ,KAAM,SAAcvC,EAAQ1c,EAAOkf,EAAO5T,EAAO6T,GAC/C,IAAKzC,EAAOuB,QACV,OAAO,EAETpR,GAAgB4R,IAChB,IACEW,EACAC,EACAzf,EAHExD,EAASohB,EAAWd,GAgCxB,OA5BArU,KAAKiX,OAAS5C,EAAOnM,MACrBlI,KAAKkX,QAAU7C,EACX1c,EAAQ,IAAO,OACjBA,EAAQ,SACEA,GAE8B,KAA9BA,EAAQ,IAAIuL,QAAQ,OAC9BvL,EAAQ,KAAOA,GAFfA,EAAQ,MAKVqf,EAjJO,SAAgBrf,EAAO5D,EAAQojB,GACtC,IACE3hB,EACAuO,EAFE/P,EAAI2D,EAAMuL,QAAQ,KAYtB,OATIlP,EAAI,GACNwB,OAAqBmN,IAAjBwU,EAA6BA,EAAe,GAAKxf,EACrDoM,EAAIpM,IAEJnC,EAAImC,EAAM+N,OAAO,EAAG1R,GACpB+P,EAAIpM,EAAM+N,OAAO1R,EAAI,KAEvBwB,EAAI2e,EAAgB3e,EAAGzB,KACvBgQ,EAAIoQ,EAAgBpQ,EAAGhQ,IACR,CAACgQ,EAAGvO,GAAK,CAACA,EAAGuO,EAC9B,CAmIQqT,CAAOzf,EAAO5D,GADpBgjB,EAAQd,EAAa5B,EAAQtgB,IACK,IAClCiM,KAAKqX,QAAUpD,EAAOlgB,GACtBiM,KAAKsX,MAAQrD,EAAO8C,EAAM,GAAKA,EAAM,IAErC/W,KAAKuX,QAAUtD,GAAQ8C,EAAM,IAC7B/W,KAAKwX,QAAUxX,KAAKZ,IAAIY,KAAM,QAASA,KAAKsX,MAAOrD,EAAO+C,EAAI,GAAKA,EAAI,KACvEhX,KAAKyX,UAAYzX,KAAKZ,IAAIY,KAAM,UAAWA,KAAKuX,QAAStD,GAAQ+C,EAAI,KACjE1D,IAEF/b,EAAKgN,EAAKM,iBAAiBwP,IACpBqD,gBAAkBngB,EAAGogB,iBAC1BX,EAAM9C,EAAU3c,EAAGqgB,kBACnB5X,KAAKZ,IAAIiV,EAAOnM,MAAO,mBAAoB8O,EAAKA,EAAM,MAG1DhX,KAAK6X,MAAQ3C,EAAqBb,MAAa1c,EAAQ,IAAIuL,QAAQ,QACnElD,KAAK8X,UAAYngB,EAAQ,IAAIuL,QAAQ,UACrClD,KAAK+X,OAAOjV,KAAK,WArKD,CAuKlB,EACAK,OAAQ,SAAgB6O,EAAOgG,GAC7B,IAEEjkB,EACAkkB,EACA/B,EACA7N,EALE6P,EAAKF,EAAKG,IACZjQ,EAAQ8P,EAAKf,OAKf,GAAIiB,EAAI,CAmBN,IAjBIF,EAAKH,QACP9jB,EAASohB,EAAW6C,EAAKd,YACVc,EAAKX,UAClBY,EAAclkB,EAASikB,EAAKX,QAC5BW,EAAKX,QAAUtjB,EACXikB,EAAKP,YACPO,EAAKP,UAAUjiB,GAAKyiB,EACpBD,EAAKP,UAAU9B,GAAKsC,GAElBD,EAAKR,SACPQ,EAAKR,QAAQhiB,GAAKyiB,EAClBD,EAAKR,QAAQ7B,GAAKsC,GAElBD,EAAKV,OAASW,GAIbC,GACLA,EAAG7J,EAAE2D,EAAOkG,EAAGtd,GACfsd,EAAKA,EAAGzR,MAEVyP,EAAO8B,EAAKV,OAAStF,GAAmB,IAAVA,GAAe,MAAU,EAEvDje,EAASikB,EAAKX,QAAUnB,EAAO,GAC/B7N,EAAS2P,EAAKT,QACdrB,GAAQ7N,GAAU6N,EAAO/X,KAAK0L,IAAIxB,EAAS2P,EAAKX,SAAWW,EAAKX,QAAU,KAAQhP,GAAUA,EAAS,EAAI,IAAO,MAAStU,GAAU,IACnImU,EAAMiO,iBAAmBD,EAAO7N,EAASA,EAAS,KAClDH,EAAM4N,gBAAkB/hB,EAAS,GAAM,OAASmiB,EAAOA,EAAO,OAAS8B,EAAKF,QAAU,OAAS/jB,GAAU,KAAO,eAClH,CACF,EACAqkB,UAAWjD,EACXkD,YAAapC,GAEfzC,KAAc,EAAKE,eAAe+C,GC7PlC,IAAI6B,EAAc,mDAChBC,EAAc,0CACdC,EAAc,gCACdC,EAAe,4BACfC,EAAWva,KAAK6X,GAAK,IAErB2C,GADiBxa,KAAK6X,GACf7X,KAAKya,KACZC,EAAO1a,KAAK2a,IACZC,EAAO5a,KAAK0L,IACZ,EAAQ1L,KAAKsW,KAGbuE,GAFS7a,KAAK8a,MAEF,SAAmBthB,GAC7B,MAAwB,iBAAVA,CAChB,GACAuhB,EAAY,SAAmBvhB,GAC7B,MAAwB,iBAAVA,CAChB,EAMAwhB,EAAe,IAKf,EAAS,SAAgBxhB,GACvB,OAAOwG,KAAKC,MAAMzG,EAAQwhB,GAAgBA,GAAgB,CAC5D,EA6EK,SAASC,EAAeC,GAC7B,IACEpI,EADEjd,EAAI,EAIR,IAFAqlB,EAAQzM,UAED5Y,EAAIqlB,EAAQtlB,OAAQC,GAAK,EAC9Bid,EAAIoI,EAAQrlB,GACZqlB,EAAQrlB,GAAKqlB,EAAQrlB,EAAI,GACzBqlB,EAAQrlB,EAAI,GAAKid,EAEnBoI,EAAQC,UAAYD,EAAQC,QAC9B,CACA,IAeEC,EAAa,CACX1F,KAAM,yBACNC,OAAQ,UACRC,QAAS,cACTC,KAAM,eAYH,SAAS,EAAcpP,EAAS4U,GACrC,IAEExB,EACAhH,EACAC,EACA5C,EACAmH,EACAvgB,EACAwkB,EACAC,EACArE,EACAvC,EACA9b,EACA6d,EACA8E,EACAC,EACAC,EACAC,EACAhF,EACAiF,EACAC,EACAC,EACAC,EACA5F,EAvBEtQ,EAAOY,EAAQ6Q,QAAQlgB,cACzB4kB,EAAO,cAuBT,MAAa,SAATnW,GAAoBY,EAAQgR,SAGhC3gB,EA3DgB,SAAqB8O,EAAGqW,GACtC,IAGE7c,EAHEtI,EAAOqM,SAAS+Y,gBAAgB,6BAA8B,QAChE/F,EAAO,GAAGrW,MAAMrB,KAAKmH,EAAEuW,YACvBtmB,EAAIsgB,EAAKvgB,OAGX,IADAqmB,EAAS,IAAMA,EAAS,MACfpmB,GAAK,GACZuJ,EAAO+W,EAAKtgB,GAAG8V,SAASvU,cAEpB6kB,EAAOlX,QAAQ,IAAM3F,EAAO,KAAO,GACrCtI,EAAKslB,eAAe,KAAMhd,EAAM+W,EAAKtgB,GAAGqQ,WAG5C,OAAOpP,CACT,CA6COulB,CAAY5V,EAAS,qDAC5B0P,EAvCa,SAAoBvQ,EAAG0W,GAIlC,IAHA,IAAI1iB,EAAQ0iB,EAAQA,EAAMzU,MAAM,KAAO,GACrC7I,EAAM,CAAC,EACPnJ,EAAI+D,EAAMhE,SACHC,GAAK,GACZmJ,EAAIpF,EAAM/D,KAAO+P,EAAEwQ,aAAaxc,EAAM/D,KAAO,EAE/C,OAAOmJ,CACT,CA+BOud,CAAW9V,EAAS2U,EAAWvV,IACzB,SAATA,GACFqK,EAAIiG,EAAKiB,GACTC,EAAKlB,EAAKkB,IAAMnH,EAChB2C,EAAIsD,EAAKtD,EACTC,EAAIqD,EAAKrD,EACT6B,EAAIwB,EAAK9b,MAAY,EAAJ6V,EACjBrX,EAAIsd,EAAK7b,OAAc,EAAL+c,EAahBwC,EAZE3J,GAAKmH,EAYA,KANPsE,GAFAF,GADAD,EAAK3I,EAAI3C,GACCyE,GAEAzE,GAMQ,KAJlB0L,EAAK9I,EAAIuE,GAIoB,MAH7BwE,EAAKD,EAAK/iB,GAG+B,KAAO,CAAC8iB,EAFjDG,EAAKD,EAAKxE,EAAK2E,EALfN,EAAKD,EAAKvL,EAAI8L,EAMdD,EAAKF,EAAKxE,EACuDoE,EAAIM,EAAIN,GAAMA,EAAKD,GAAM,EAAGO,EAAIP,GAAMC,EAAKD,GAAM,EAAGO,EAAIP,EAAIO,EAV7HrF,EAAK7D,EAAI3C,GAAK,EAAI8L,GAUmHD,EAAIlJ,EAAGiJ,EAAIjJ,EAAGgJ,EAAIhJ,EAAGgJ,GAAMA,EAAKD,GAAM,EAAG/I,EAAG+I,GAAMC,EAAKD,GAAM,EAAG/I,EAAG+I,EAAI/I,EAL5M8D,EAAK7D,EAAIuE,GAAM,EAAI2E,GAKgMtF,EAAI5D,EAAG0I,EAAI1I,EAAG0I,GAAMC,EAAKD,GAAM,EAAG1I,EAAG2I,GAAMA,EAAKD,GAAM,EAAG1I,EAAG2I,EAAI3I,EAAG4I,EAAI5I,EAAG6I,EAAIhF,EAAIgF,EAAIC,GAAItiB,KAAK,KAAO,IAElT,KAAOuZ,EAAI8B,GAAK,IAAM7B,EAAI,KAAOja,EAAI,MAAQ8b,EAAI,MAAQ9b,EAAI,KAAO8b,EAAI,KAE/D,WAAT9O,GAA8B,YAATA,GACjB,WAATA,EAEF0V,GADArL,EAAImH,EAAKlB,EAAKjG,GACD8L,GAEb9L,EAAIiG,EAAKiB,GAETmE,GADAlE,EAAKlB,EAAKkB,IACI2E,GAKhBnC,EAAO,MAHPhH,EAAIsD,EAAKqG,IAGStM,GAAK,KAFvB4C,EAAIqD,EAAKsG,IAEwB,KAAO,CAAC5J,EAAI3C,EAAG4C,EAAIyI,EAAQ1I,GAD5DyI,EAAQpL,EAAI8L,GAC2DlJ,EAAIuE,EAAIxE,EAAGC,EAAIuE,EAAIxE,EAAIyI,EAAOxI,EAAIuE,EAAIxE,EAAI3C,EAAG4C,EAAIyI,EAAQ1I,EAAI3C,EAAG4C,EAAGD,EAAI3C,EAAG4C,EAAIyI,EAAQ1I,EAAIyI,EAAOxI,EAAIuE,EAAIxE,EAAGC,EAAIuE,EAAIxE,EAAIyI,EAAOxI,EAAIuE,EAAIxE,EAAI3C,EAAG4C,EAAIyI,EAAQ1I,EAAI3C,EAAG4C,GAAGxZ,KAAK,KAAO,KACrO,SAATuM,EACTgU,EAAO,IAAM1D,EAAKK,GAAK,IAAML,EAAKM,GAAK,KAAON,EAAKO,GAAK,IAAMP,EAAKQ,GACjD,aAAT9Q,GAAgC,YAATA,IAIhCgU,EAAO,KAFPhH,GADAqE,GAAUzQ,EAAQ2P,aAAa,UAAY,IAAIvX,MAAMub,IAAgB,IAC1DsC,SAEM,KADjB5J,EAAIoE,EAAOwF,SACgB,KAAOxF,EAAO5d,KAAK,KACjC,YAATuM,IACFgU,GAAQ,IAAMhH,EAAI,IAAMC,EAAI,MAGhChc,EAAK6lB,aAAa,IAAKC,EAAgB9lB,EAAK+lB,WAAaC,EAAgBjD,KACrEwB,GAAQ5U,EAAQ+B,aAClB/B,EAAQ+B,WAAWQ,aAAalS,EAAM2P,GACtCA,EAAQ+B,WAAWO,YAAYtC,IAE1B3P,GAxDE2P,CAyDX,CAoYA,SAASsW,EAAaC,EAAOC,EAAO7F,EAAIC,EAAI6F,EAAOC,EAAcC,EAAWvK,EAAGC,GAC7E,GAAIkK,IAAUnK,GAAKoK,IAAUnK,EAA7B,CAGAsE,EAAKwD,EAAKxD,GACVC,EAAKuD,EAAKvD,GACV,IAAIgG,EAAWH,EAAQ,IAAM3C,EAC3B+C,EAAW5C,EAAK2C,GAChBE,EAAW/C,EAAK6C,GAChBxF,EAAK7X,KAAK6X,GACV2F,EAAa,EAAL3F,EACR4F,GAAOT,EAAQnK,GAAK,EACpB6K,GAAOT,EAAQnK,GAAK,EACpB0D,EAAK8G,EAAWG,EAAMF,EAAWG,EACjCjH,GAAM8G,EAAWE,EAAMH,EAAWI,EAClCC,EAAQnH,EAAKA,EACboH,EAAQnH,EAAKA,EACboH,EAAaF,GAASvG,EAAKA,GAAMwG,GAASvG,EAAKA,GAC7CwG,EAAa,IACfzG,EAAK,EAAMyG,GAAczG,EACzBC,EAAK,EAAMwG,GAAcxG,GAE3B,IAAIyG,EAAQ1G,EAAKA,EACf2G,EAAQ1G,EAAKA,EACb2G,GAAMF,EAAQC,EAAQD,EAAQF,EAAQG,EAAQJ,IAAUG,EAAQF,EAAQG,EAAQJ,GAC9EK,EAAK,IACPA,EAAK,GAEP,IAAIC,GAAQd,IAAiBC,GAAa,EAAI,GAAK,EAAMY,GACvDE,EAAMD,GAAQ7G,EAAKX,EAAKY,GACxB8G,EAAMF,IAAS5G,EAAKb,EAAKY,GAGzBoF,GAFOQ,EAAQnK,GAAK,GAERyK,EAAWY,EAAMX,EAAWY,GACxC1B,GAFOQ,EAAQnK,GAAK,GAERyK,EAAWW,EAAMZ,EAAWa,GACxCC,GAAM5H,EAAK0H,GAAO9G,EAClBiH,GAAM5H,EAAK0H,GAAO9G,EAClBiH,IAAO9H,EAAK0H,GAAO9G,EACnBmH,IAAO9H,EAAK0H,GAAO9G,EACnBmH,EAAOJ,EAAKA,EAAKC,EAAKA,EACtBI,GAAcJ,EAAK,GAAK,EAAI,GAAKre,KAAK0e,KAAKN,EAAK,EAAMI,IACtDG,GAAeP,EAAKG,EAAKF,EAAKC,EAAK,GAAK,EAAI,GAAKte,KAAK0e,MAAMN,EAAKE,EAAKD,EAAKE,GAAM,EAAMC,GAAQF,EAAKA,EAAKC,EAAKA,KAChHxO,MAAM4O,KAAiBA,EAAc9G,IAEhCuF,GAAauB,EAAc,EAC9BA,GAAenB,EACNJ,GAAauB,EAAc,IACpCA,GAAenB,GAEjBiB,GAAcjB,EACdmB,GAAenB,EACf,IAQE3nB,EARE+oB,EAAW5e,KAAK6e,KAAKjE,EAAK+D,IAAgBnB,EAAQ,IACpDsB,EAAU,GACVC,EAAiBJ,EAAcC,EAC/BI,EAAgB,EAAI,EAAIxE,EAAKuE,EAAiB,IAAM,EAAIrE,EAAKqE,EAAiB,IAC9EE,EAAK3B,EAAWlG,EAChB8H,EAAK3B,EAAWnG,EAChB+H,EAAK5B,GAAYlG,EACjB+H,EAAK9B,EAAWjG,EAElB,IAAKxhB,EAAI,EAAGA,EAAI+oB,EAAU/oB,IAExB2gB,EAAKkE,EADLwC,EAAQuB,EAAa5oB,EAAIkpB,GAEzBtI,EAAK+D,EAAK0C,GACVkB,EAAK1D,EAAKwC,GAAS6B,GACnBV,EAAK7D,EAAK0C,GACV4B,EAAQna,KAAK6R,EAAKwI,EAAgBvI,EAAIA,EAAKuI,EAAgBxI,EAAI4H,EAAKY,EAAgBX,EAAIA,EAAKW,EAAgBZ,EAAIA,EAAIC,GAGvH,IAAKxoB,EAAI,EAAGA,EAAIipB,EAAQlpB,OAAQC,GAAK,EACnC2gB,EAAKsI,EAAQjpB,GACb4gB,EAAKqI,EAAQjpB,EAAI,GACjBipB,EAAQjpB,GAAK2gB,EAAKyI,EAAKxI,EAAK0I,EAAK3C,EACjCsC,EAAQjpB,EAAI,GAAK2gB,EAAK0I,EAAKzI,EAAK2I,EAAK3C,EAKvC,OAHAqC,EAAQjpB,EAAI,GAAKgd,EAEjBiM,EAAQjpB,EAAI,GAAKid,EACVgM,CA3EP,CA4EF,CAEO,SAAShC,EAAgBrgB,GAC9B,IAYE5G,EACA6T,EACAmJ,EACAC,EACAuM,EACAC,EACApE,EACAqE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EA1BExiB,GAAKb,EAAI,IAAIqR,QAAQuM,GAAa,SAAU9I,GAC5C,IAAIwO,GAAKxO,EACT,OAAOwO,EAAI,MAAUA,GAAK,KAAS,EAAIA,CACzC,IAAGlhB,MAAMsb,IAAgB,GAEzBrjB,EAAO,GACPkpB,EAAY,EACZC,EAAY,EACZC,EAAY,EAAI,EAChB/R,EAAW7Q,EAAE1H,OACbshB,EAAS,EACTiJ,EAAe,0BAA4B1jB,EAgB3CoZ,EAAO,SAAcuK,EAAIC,EAAI3d,EAAI4d,GAC/Bb,GAAQ/c,EAAK0d,GAAM,EACnBV,GAAQY,EAAKD,GAAM,EACnBnF,EAAQvW,KAAKyb,EAAKX,EAAMY,EAAKX,EAAMhd,EAAK+c,EAAMa,EAAKZ,EAAMhd,EAAI4d,EAC/D,EACF,IAAK7jB,IAAMsT,MAAMzS,EAAE,KAAOyS,MAAMzS,EAAE,IAEhC,OADAwB,QAAQyhB,IAAIJ,GACLrpB,EAET,IAAKjB,EAAI,EAAGA,EAAIsY,EAAUtY,IAoBxB,GAnBA+pB,EAAcP,EACVtP,MAAMzS,EAAEzH,IAEVypB,GADAD,EAAU/hB,EAAEzH,GAAGsZ,iBACU7R,EAAEzH,GAG3BA,IAEFgd,GAAKvV,EAAEzH,EAAI,GACXid,GAAKxV,EAAEzH,EAAI,GACPypB,IACFzM,GAAKmN,EACLlN,GAAKmN,GAEFpqB,IACH0pB,EAAS1M,EACT2M,EAAS1M,GAGK,MAAZuM,EACEnE,IACEA,EAAQtlB,OAAS,EAEnBkB,EAAKlB,QAAU,EAEfshB,GAAUgE,EAAQtlB,QAGtBoqB,EAAYT,EAAS1M,EACrBoN,EAAYT,EAAS1M,EACrBoI,EAAU,CAACrI,EAAGC,GACdhc,EAAK6N,KAAKuW,GACVrlB,GAAK,EACLwpB,EAAU,SAEL,GAAgB,MAAZA,EACJnE,IACHA,EAAU,CAAC,EAAG,IAEXoE,IACHU,EAAYC,EAAY,GAG1B/E,EAAQvW,KAAKkO,EAAGC,EAAGkN,EAAuB,EAAX1iB,EAAEzH,EAAI,GAAQoqB,EAAuB,EAAX3iB,EAAEzH,EAAI,GAAQmqB,GAAwB,EAAX1iB,EAAEzH,EAAI,GAAQoqB,GAAwB,EAAX3iB,EAAEzH,EAAI,IACrHA,GAAK,OACA,GAAgB,MAAZwpB,EACTI,EAAOO,EACPN,EAAOO,EACa,MAAhBL,GAAuC,MAAhBA,IACzBH,GAAQO,EAAY9E,EAAQA,EAAQtlB,OAAS,GAC7C8pB,GAAQO,EAAY/E,EAAQA,EAAQtlB,OAAS,IAE1C0pB,IACHU,EAAYC,EAAY,GAE1B/E,EAAQvW,KAAK8a,EAAMC,EAAM7M,EAAGC,EAAGkN,GAAwB,EAAX1iB,EAAEzH,EAAI,GAAQoqB,GAAwB,EAAX3iB,EAAEzH,EAAI,IAC7EA,GAAK,OACA,GAAgB,MAAZwpB,EACTI,EAAOO,GAAanN,EAAImN,GAAaE,EACrCR,EAAOO,GAAanN,EAAImN,GAAaC,EAChCZ,IACHU,EAAYC,EAAY,GAE1BD,GAAwB,EAAX1iB,EAAEzH,EAAI,GACnBoqB,GAAwB,EAAX3iB,EAAEzH,EAAI,GACnBqlB,EAAQvW,KAAK8a,EAAMC,EAAMM,GAAanN,EAAImN,GAAaE,EAAWD,GAAanN,EAAImN,GAAaC,EAAWF,EAAWC,GACtHpqB,GAAK,OACA,GAAgB,MAAZwpB,EACTI,EAAOO,EAAY9E,EAAQA,EAAQtlB,OAAS,GAC5C8pB,EAAOO,EAAY/E,EAAQA,EAAQtlB,OAAS,GAC5CslB,EAAQvW,KAAKqb,EAAYP,EAAMQ,EAAYP,EAAM7M,GAAKmN,EAAmB,IAAPP,EAAa5M,GAAKqN,EAAWpN,GAAKmN,EAAmB,IAAPP,EAAa5M,GAAKoN,EAAWF,EAAYnN,EAAGoN,EAAYnN,GACxKjd,GAAK,OACA,GAAgB,MAAZwpB,EACTxJ,EAAKmK,EAAWC,EAAWD,EAAYnN,EAAGoN,GAC1CpqB,GAAK,OACA,GAAgB,MAAZwpB,EAETxJ,EAAKmK,EAAWC,EAAWD,EAAWC,EAAYpN,GAAKyM,EAAaW,EAAYD,EAAY,IAC5FnqB,GAAK,OACA,GAAgB,MAAZwpB,GAA+B,MAAZA,EACZ,MAAZA,IACFxM,EAAI0M,EACJzM,EAAI0M,EACJtE,EAAQsF,QAAS,IAEH,MAAZnB,GAAmBzE,EAAKoF,EAAYnN,GAAK,IAAO+H,EAAKqF,EAAYnN,GAAK,MACxE+C,EAAKmK,EAAWC,EAAWpN,EAAGC,GACd,MAAZuM,IACFxpB,GAAK,IAGTmqB,EAAYnN,EACZoN,EAAYnN,OACP,GAAgB,MAAZuM,EAAiB,CAsB1B,GArBAQ,EAAQviB,EAAEzH,EAAI,GACdiqB,EAAQxiB,EAAEzH,EAAI,GACd4pB,EAAOniB,EAAEzH,EAAI,GACb6pB,EAAOpiB,EAAEzH,EAAI,GACb6T,EAAI,EACAmW,EAAMjqB,OAAS,IAEbiqB,EAAMjqB,OAAS,GACjB8pB,EAAOD,EACPA,EAAOK,EACPpW,MAEAgW,EAAOI,EACPL,EAAOI,EAAMtY,OAAO,GACpBmC,GAAK,GAEPoW,EAAQD,EAAMtX,OAAO,GACrBsX,EAAQA,EAAMtX,OAAO,IAEvBoX,EAAU5C,EAAaiD,EAAWC,GAAY3iB,EAAEzH,EAAI,IAAKyH,EAAEzH,EAAI,IAAKyH,EAAEzH,EAAI,IAAKgqB,GAAQC,GAAQR,EAAaU,EAAY,GAAY,EAAPP,GAAWH,EAAaW,EAAY,GAAY,EAAPP,GACtK7pB,GAAK6T,EACDiW,EACF,IAAKjW,EAAI,EAAGA,EAAIiW,EAAQ/pB,OAAQ8T,IAC9BwR,EAAQvW,KAAKgb,EAAQjW,IAGzBsW,EAAY9E,EAAQA,EAAQtlB,OAAS,GACrCqqB,EAAY/E,EAAQA,EAAQtlB,OAAS,EACvC,MACEkJ,QAAQyhB,IAAIJ,GAYhB,OATAtqB,EAAIqlB,EAAQtlB,QACJ,GAENkB,EAAKX,MACLN,EAAI,GACKqlB,EAAQ,KAAOA,EAAQrlB,EAAI,IAAMqlB,EAAQ,KAAOA,EAAQrlB,EAAI,KACrEqlB,EAAQsF,QAAS,GAEnB1pB,EAAK2pB,YAAcvJ,EAASrhB,EACrBiB,CACT,CA0TO,SAAS8lB,EAAgBkC,GAC1B/D,EAAU+D,EAAQ,MAEpBA,EAAU,CAACA,IAEb,IAEE4B,EACArpB,EACAxB,EACAqlB,EALEnb,EAAS,GACX/G,EAAI8lB,EAAQlpB,OAKd,IAAKyB,EAAI,EAAGA,EAAI2B,EAAG3B,IAAK,CAItB,IAHA6jB,EAAU4D,EAAQznB,GAClB0I,GAAU,IAAM,EAAOmb,EAAQ,IAAM,IAAM,EAAOA,EAAQ,IAAM,KAChEwF,EAAKxF,EAAQtlB,OACRC,EAAI,EAAGA,EAAI6qB,EAAI7qB,IAClBkK,GAAU,EAAOmb,EAAQrlB,MAAQ,IAAM,EAAOqlB,EAAQrlB,MAAQ,IAAM,EAAOqlB,EAAQrlB,MAAQ,IAAM,EAAOqlB,EAAQrlB,MAAQ,IAAM,EAAOqlB,EAAQrlB,MAAQ,IAAM,EAAOqlB,EAAQrlB,IAAM,IAE9KqlB,EAAQsF,SACVzgB,GAAU,IAEd,CACA,OAAOA,CACT,CC5rCA,IAAI,EACF,EACA4gB,EAEA,EACAC,EACA,EAAW,WACT,OAAO,GAA0B,oBAAX1d,SAA2B,EAAOA,OAAOoS,OAAS,EAAKC,gBAAkB,CACjG,EACAsL,EAAc,SAAqBrnB,GACjC,MAAwB,mBAAVA,CAChB,EACA,EAASwG,KAAK8a,MACd,GAAO9a,KAAK2a,IACZ,GAAO3a,KAAKya,IACZ,GAAQza,KAAKsW,KACbwK,GAAM9gB,KAAK6X,GACXkJ,GAAa,EAAND,GACPE,GAAkB,GAANF,GACZG,GAAkB,GAANH,GACZI,GAAU,KACV,GAAU,wCAEV,GAAe,4BACfC,GAAY,gBACZC,GAAO,SAAcxiB,GACnB,OAAOE,SAAWA,QAAQC,KAAKH,EACjC,EAGAyiB,GAAgB,SAAuBnG,GACrC,IAGErlB,EAHEmD,EAAIkiB,EAAQtlB,OACdid,EAAI,EACJC,EAAI,EAEN,IAAKjd,EAAI,EAAGA,EAAImD,EAAGnD,IACjBgd,GAAKqI,EAAQrlB,KACbid,GAAKoI,EAAQrlB,GAEf,MAAO,CAACgd,GAAK7Z,EAAI,GAAI8Z,GAAK9Z,EAAI,GAChC,EACAsoB,GAAW,SAAkBpG,GAE3B,IAKErI,EACAC,EACAjd,EAPEmD,EAAIkiB,EAAQtlB,OACd2rB,EAAOrG,EAAQ,GACfsG,EAAOD,EACPE,EAAOvG,EAAQ,GACfwG,EAAOD,EAIT,IAAK5rB,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,GACtBgd,EAAIqI,EAAQrlB,IAEJ0rB,EACNA,EAAO1O,EACEA,EAAI2O,IACbA,EAAO3O,IAJTC,EAAIoI,EAAQrlB,EAAI,IAMR4rB,EACNA,EAAO3O,EACEA,EAAI4O,IACbA,EAAO5O,GAKX,OAFAoI,EAAQyG,SAAWJ,EAAOC,GAAQ,EAClCtG,EAAQ0G,SAAWH,EAAOC,GAAQ,EAC3BxG,EAAQtd,MAAQ2jB,EAAOC,IAASC,EAAOC,EAChD,EACAG,GAAgB,SAAuB/C,EAASgD,QACrB,IAArBA,IACFA,EAAmB,GA0BrB,IAtBA,IAME9oB,EACA6Z,EACAC,EACAjd,EACAqlB,EACA6G,EACAC,EACAC,EACAzL,EACAC,EACAC,EACA8E,EACAC,EACA9E,EACAiF,EACAC,EArBEnS,EAAIoV,EAAQlpB,OACd2rB,EAAOzC,EAAQ,GAAG,GAClB0C,EAAOD,EACPE,EAAO3C,EAAQ,GAAG,GAClB4C,EAAOD,EACPS,EAAM,EAAIJ,IAiBHpY,GAAK,GAGZ,IADA1Q,GADAkiB,EAAU4D,EAAQpV,IACN9T,OACPC,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EAUtB,IATA2gB,EAAK0E,EAAQrlB,GACb4gB,EAAKyE,EAAQrlB,EAAI,GACjB6gB,EAAKwE,EAAQrlB,EAAI,GAAK2gB,EACtBG,EAAKuE,EAAQrlB,EAAI,GAAK4gB,EACtB+E,EAAKN,EAAQrlB,EAAI,GAAK2gB,EACtBoF,EAAKV,EAAQrlB,EAAI,GAAK4gB,EACtBgF,EAAKP,EAAQrlB,EAAI,GAAK2gB,EACtBqF,EAAKX,EAAQrlB,EAAI,GAAK4gB,EACtBsL,EAAID,IACKC,GAAK,IAGZlP,IAFAmP,EAAIE,EAAMH,GAEDC,EAAIvG,EAAK,GADlBwG,EAAM,EAAID,IACmBA,EAAIxG,EAAKyG,EAAMvL,IAAOsL,EAAIxL,GAE/C+K,EACNA,EAAO1O,EACEA,EAAI2O,IACbA,EAAO3O,IAJTC,GAAKkP,EAAIA,EAAInG,EAAK,EAAIoG,GAAOD,EAAIpG,EAAKqG,EAAMtL,IAAOqL,EAAIvL,GAM/CgL,EACNA,EAAO3O,EACEA,EAAI4O,IACbA,EAAO5O,GAWf,OANAgM,EAAQ6C,SAAWJ,EAAOC,GAAQ,EAClC1C,EAAQ8C,SAAWH,EAAOC,GAAQ,EAClC5C,EAAQ1S,KAAOoV,EACf1C,EAAQzkB,MAAQknB,EAAOC,EACvB1C,EAAQzS,IAAMqV,EACd5C,EAAQxkB,OAASmnB,EAAOC,EACjB5C,EAAQlhB,MAAQ2jB,EAAOC,IAASC,EAAOC,EAChD,EACAS,GAAoB,SAA2B7kB,EAAGC,GAChD,OAAOA,EAAE3H,OAAS0H,EAAE1H,MACtB,EACAwsB,GAAc,SAAqB9kB,EAAGC,GACpC,IAAI8kB,EAAQ/kB,EAAEM,MAAQ0jB,GAAShkB,GAC7BglB,EAAQ/kB,EAAEK,MAAQ0jB,GAAS/jB,GAC7B,OAAOyC,KAAK0L,IAAI4W,EAAQD,IAAUA,EAAQC,GAAS,GAAK/kB,EAAEokB,QAAUrkB,EAAEqkB,SAAWpkB,EAAEqkB,QAAUtkB,EAAEskB,QAAUU,EAAQD,CACnH,EACAE,GAAiB,SAAwBrH,EAASsH,GAChD,IAGE3sB,EACAiP,EAJExH,EAAI4d,EAAQpb,MAAM,GACpB9G,EAAIkiB,EAAQtlB,OACZ6P,EAAOzM,EAAI,EAIb,IADAwpB,GAA0B,EACrB3sB,EAAI,EAAGA,EAAImD,EAAGnD,IACjBiP,GAASjP,EAAI2sB,GAAc/c,EAC3ByV,EAAQrlB,KAAOyH,EAAEwH,GACjBoW,EAAQrlB,GAAKyH,EAAEwH,EAAQ,EAE3B,EACA2d,GAAoB,SAA2BC,EAAIC,EAAIH,EAAYI,EAASC,GAC1E,IAGE/d,EACAjP,EACAgd,EACAC,EANE9Z,EAAI0pB,EAAG9sB,OACT6G,EAAI,EACJgJ,EAAOzM,EAAI,EAMb,IADAwpB,GAAc,EACT3sB,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EAEtBid,EAAI4P,EADJ5d,GAASjP,EAAI2sB,GAAc/c,IACVkd,EAAG9sB,GAAK+sB,GACzB/P,EAAI6P,EAAG5d,EAAQ,IAAM6d,EAAG9sB,EAAI,GAAKgtB,GACjCpmB,GAAK,GAAMoW,EAAIA,EAAIC,EAAIA,GAEzB,OAAOrW,CACT,EACAqmB,GAAwB,SAA+BJ,EAAIC,EAAII,GAE7D,IAQEC,EACAvmB,EACA5G,EAVEmD,EAAI0pB,EAAG9sB,OACTqtB,EAAU5B,GAAcqB,GAExBQ,EAAU7B,GAAcsB,GACxBC,EAAUM,EAAQ,GAAKD,EAAQ,GAC/BJ,EAAUK,EAAQ,GAAKD,EAAQ,GAC/BlU,EAAM0T,GAAkBC,EAAIC,EAAI,EAAGC,EAASC,GAC5CM,EAAW,EAIb,IAAKttB,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,GACtB4G,EAAIgmB,GAAkBC,EAAIC,EAAI9sB,EAAI,EAAG+sB,EAASC,IACtC9T,IACNA,EAAMtS,EACN0mB,EAAWttB,GAGf,GAAIktB,EAGF,IADA9H,EADA+H,EAAON,EAAG5iB,MAAM,IAEXjK,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,GACtB4G,EAAIgmB,GAAkBO,EAAML,EAAI9sB,EAAI,EAAG+sB,EAASC,IACxC9T,IACNA,EAAMtS,EACN0mB,GAAYttB,GAIlB,OAAOstB,EAAW,CACpB,EACAC,GAAoB,SAA2BtE,EAASjM,EAAGC,GAYzD,IAVA,IAIEoI,EACAmI,EACAC,EACA7mB,EACA5G,EACAmD,EATE0Q,EAAIoV,EAAQlpB,OACd2tB,EAAkBrC,GAClBsC,EAAW,EACXC,EAAW,IAOJ/Z,GAAK,GAGZ,IADA1Q,GADAkiB,EAAU4D,EAAQpV,IACN9T,OACPC,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EACtBwtB,EAAKnI,EAAQrlB,GAAKgd,EAClByQ,EAAKpI,EAAQrlB,EAAI,GAAKid,GACtBrW,EAAI,GAAM4mB,EAAKA,EAAKC,EAAKA,IACjBC,IACNA,EAAkB9mB,EAClB+mB,EAAWtI,EAAQrlB,GACnB4tB,EAAWvI,EAAQrlB,EAAI,IAI7B,MAAO,CAAC2tB,EAAUC,EACpB,EACAC,GAAqB,SAA4BC,EAAQC,EAAMC,EAAYC,EAAWlB,EAASC,GAE7F,IAQEhtB,EACAwtB,EACAC,EACA7mB,EAXEzD,EAAI4qB,EAAKhuB,OACXkP,EAAQ,EACRif,EAAU/jB,KAAK+O,IAAI4U,EAAO/lB,MAAQ0jB,GAASqC,GAASC,EAAKC,GAAYjmB,MAAQ0jB,GAASsC,EAAKC,KAAgBC,EAE3G/U,EAAMmS,GACN1E,EAAKmH,EAAOhC,QAAUiB,EACtBnG,EAAKkH,EAAO/B,QAAUiB,EAMxB,IAAKhtB,EAAIguB,EAAYhuB,EAAImD,MAChB4qB,EAAK/tB,GAAG+H,MAAQ0jB,GAASsC,EAAK/tB,KAC1BkuB,GAFeluB,IAK1BwtB,EAAKO,EAAK/tB,GAAG8rB,QAAUnF,EACvB8G,EAAKM,EAAK/tB,GAAG+rB,QAAUnF,GACvBhgB,EAAI,GAAM4mB,EAAKA,EAAKC,EAAKA,IACjBvU,IACNjK,EAAQjP,EACRkZ,EAAMtS,GAKV,OAFAA,EAAImnB,EAAK9e,GACT8e,EAAK3kB,OAAO6F,EAAO,GACZrI,CACT,EACAunB,GAAuB,SAA8B9I,EAAS+I,GAC5D,IAIEC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjO,EACAC,EACAC,EACAC,EACA9gB,EACAmsB,EAjBE0C,EAAQ,EAEV1rB,EAAIkiB,EAAQtlB,OACZ+uB,EAAsBV,IAAajrB,EAAI,GAAK,GAe9C,IAAKnD,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EAEtB,IADA6uB,GAASC,EACFD,EAnBD,SAqBJR,EAAKhJ,EAAQrlB,EAAI,GACjBsuB,EAAKjJ,EAAQrlB,EAAI,GACjBuuB,EAAOlJ,EAAQrlB,GACfwuB,EAAOnJ,EAAQrlB,EAAI,GACnByuB,EAAOpJ,EAAQrlB,EAAI,GACnB0uB,EAAOrJ,EAAQrlB,EAAI,GACnB2uB,EAAKtJ,EAAQrlB,EAAI,GACjB4uB,EAAKvJ,EAAQrlB,EAAI,GAGjB2gB,EAAK0N,GAAME,EAAOF,IAFlBlC,EAAI,IAAMhiB,KAAK4kB,MAAMF,IAAU,GAAK,IAIpClO,KADAE,EAAK0N,GAAQE,EAAOF,GAAQpC,GAChBxL,GAAMwL,EAClBtL,IAAO4N,GAAQE,EAAKF,GAAQtC,EAAItL,GAAMsL,EACtCvL,EAAK0N,GAAME,EAAOF,GAAMnC,EAExBvL,KADAE,EAAK0N,GAAQE,EAAOF,GAAQrC,GAChBvL,GAAMuL,EAClBrL,IAAO4N,GAAQE,EAAKF,GAAQvC,EAAIrL,GAAMqL,EACtC9G,EAAQjc,OAAOpJ,EAAG,EAAGquB,GAAME,EAAOF,GAAMlC,EAExCmC,GAAME,EAAOF,GAAMnC,EAAGxL,EAEtBC,EAAID,GAAME,EAAKF,GAAMwL,EAErBvL,GAAME,EAAKF,GAAMuL,EAAGtL,EAEpBC,EAAI2N,GAAQE,EAAKF,GAAQtC,EAEzBuC,GAAQE,EAAKF,GAAQvC,GACrBnsB,GAAK,EACLmD,GAAK,EACL0rB,IAGJ,OAAOxJ,CACT,EACA2J,GAA2B,SAAkCjM,EAAOC,EAAK2J,EAAY3e,EAAKihB,GAExF,IAUEnC,EACAD,EACAnlB,EACAsV,EACAC,EACA8P,EACAC,EAhBEkC,EAAMlM,EAAIjjB,OAASgjB,EAAMhjB,OAC3BovB,EAASD,EAAM,EAAIlM,EAAMD,EACzBqM,EAAUF,EAAM,EAAInM,EAAQC,EAC5BqM,EAAQ,EACRC,EAAqB,eAARthB,EAAuBse,GAAoBC,GACxD0B,EAAoB,aAARjgB,EAAqB,EAAmB,iBAARA,EAAmBA,EAAM,GACrEhO,EAAIovB,EAAQrvB,OACZwvB,EAAqC,iBAAf5C,GAA2BA,EAAW7d,KAAO6d,EAAW1iB,MAAM,GAAK,CAAC0iB,GAC1F/T,EAA8B,YAApB2W,EAAa,IAAoBA,EAAa,GAAK,EAC7D7E,EAAqB,QAAfiC,EAQR,GAAKyC,EAAQ,GAAb,CAGA,GAAID,EAAOpvB,OAAS,IAClBgjB,EAAMlI,KAAKyU,GACXtM,EAAInI,KAAKyU,GACCH,EAAOpnB,MAAQikB,GAAcmD,GAE7BC,EAAQrnB,MAAQikB,GAAcoD,GACxCrC,EAAUoC,EAAOrD,QAAUsD,EAAQtD,QACnCkB,EAAUmC,EAAOpD,QAAUqD,EAAQrD,QAC/BuD,IAAe/C,IACjB,IAAKvsB,EAAI,EAAGA,EAAIovB,EAAQrvB,OAAQC,IAC9BmvB,EAAO/lB,OAAOpJ,EAAG,EAAG6tB,GAAmBuB,EAAQpvB,GAAImvB,EAAQnvB,EAAGiuB,EAAWlB,EAASC,IAIxF,GAAIkC,EASF,IARIA,EAAM,IACRA,GAAOA,GAELC,EAAO,GAAGpvB,OAASqvB,EAAQ,GAAGrvB,QAEhCouB,GAAqBiB,EAAQ,IAAKD,EAAO,GAAGpvB,OAASqvB,EAAQ,GAAGrvB,QAAU,EAAI,GAEhFC,EAAIovB,EAAQrvB,OACLsvB,EAAQH,GACTC,EAAOnvB,GAAG+H,MAAQ0jB,GAAS0D,EAAOnvB,IAGtCgd,GADAtV,EAAI6lB,GAAkB6B,EAASD,EAAOnvB,GAAG8rB,QAASqD,EAAOnvB,GAAG+rB,UACtD,GACN9O,EAAIvV,EAAE,GACN0nB,EAAQpvB,KAAO,CAACgd,EAAGC,EAAGD,EAAGC,EAAGD,EAAGC,EAAGD,EAAGC,GACrCmS,EAAQxE,aAAe,EACvByE,IAGJ,IAAKrvB,EAAI,EAAGA,EAAI+iB,EAAMhjB,OAAQC,IAC5B8sB,EAAK9J,EAAIhjB,GACT6sB,EAAK9J,EAAM/iB,IACXkvB,EAAMpC,EAAG/sB,OAAS8sB,EAAG9sB,QACX,EACRouB,GAAqBrB,GAAKoC,EAAM,EAAI,GAC3BA,EAAM,GACff,GAAqBtB,EAAIqC,EAAM,EAAI,GAEjCtW,IAAwB,IAAbqW,IAAuBpC,EAAGvH,UACvCF,EAAeyH,IAEjBF,EAAa4C,EAAavvB,IAA0B,IAApBuvB,EAAavvB,GAAWuvB,EAAavvB,GAAK,UAGpE6sB,EAAGlC,QAAUxgB,KAAK0L,IAAIgX,EAAG,GAAKA,EAAGA,EAAG9sB,OAAS,IAAM,IAAOoK,KAAK0L,IAAIgX,EAAG,GAAKA,EAAGA,EAAG9sB,OAAS,IAAM,GAC/E,SAAf4sB,GAAwC,QAAfA,GAC3B4C,EAAavvB,GAAK2sB,EAAaM,GAAsBJ,EAAIC,GAAK9sB,IAAkB,IAAbivB,GAC/DtC,EAAa,IACf/T,GAAU,EACVwM,EAAeyH,GACfF,GAAcA,GAEhBD,GAAeG,EAAiB,EAAbF,IACK,YAAfA,IACL3sB,GAAK2sB,EAAa,GAEpBvH,EAAeyH,GAEjBH,GAAeG,EAAkD,GAA7CF,EAAa,GAAKA,EAAaA,MAE3C/T,IAA2B,SAAf+T,GAAyBxiB,KAAK0L,IAAIiX,EAAG,GAAKD,EAAG,IAAM1iB,KAAK0L,IAAIiX,EAAG,GAAKD,EAAG,IAAM1iB,KAAK0L,IAAIiX,EAAGA,EAAG/sB,OAAS,GAAK8sB,EAAGA,EAAG9sB,OAAS,IAAMoK,KAAK0L,IAAIiX,EAAGA,EAAG/sB,OAAS,GAAK8sB,EAAGA,EAAG9sB,OAAS,IAAMoK,KAAK0L,IAAIiX,EAAG,GAAKD,EAAGA,EAAG9sB,OAAS,IAAMoK,KAAK0L,IAAIiX,EAAG,GAAKD,EAAGA,EAAG9sB,OAAS,IAAMoK,KAAK0L,IAAIiX,EAAGA,EAAG/sB,OAAS,GAAK8sB,EAAG,IAAM1iB,KAAK0L,IAAIiX,EAAGA,EAAG/sB,OAAS,GAAK8sB,EAAG,KAAOF,EAAa,IAC7WvH,EAAeyH,GACf0C,EAAavvB,IAAM,EACnB4Y,GAAU,GACc,SAAf+T,EACT4C,EAAavvB,GAAK,EACM,YAAf2sB,IACT4C,EAAavvB,IAAM,GAEjB6sB,EAAGlC,SAAWmC,EAAGnC,SAEnBkC,EAAGlC,OAASmC,EAAGnC,QAAS,IAM9B,OAFAD,GAAOa,GAAK,eAAiBgE,EAAa9rB,KAAK,KAAO,KACtDsf,EAAM4J,WAAa4C,EACZA,CAnFP,CAoFF,EACAC,GAAc,SAAqB/nB,EAAGklB,EAAY3e,EAAKyhB,EAAYR,GACjE,IAAIlM,EAAQkE,EAAgBxf,EAAE,IAC5Bub,EAAMiE,EAAgBxf,EAAE,IACrBunB,GAAyBjM,EAAOC,EAAK2J,GAA6B,IAAfA,EAAmBA,EAAa,OAAQ3e,EAAKihB,KAGrGxnB,EAAE,GAAKsf,EAAgBhE,GACvBtb,EAAE,GAAKsf,EAAgB/D,GACJ,QAAfyM,IAAuC,IAAfA,GAC1BlE,GAAK,gBAAkB9jB,EAAE,GAAK,MAAQA,EAAE,GAAK,MAEjD,EAyBAioB,GAAyB,SAAgCjoB,EAAG2mB,GAC1D,IAKEU,EACA9uB,EACAmD,EACA0Q,EACA8b,EACAC,EACAC,EAXEhB,EAAQ,EACV7R,EAAI1J,WAAW7L,EAAE,IACjBwV,EAAI3J,WAAW7L,EAAE,IACjBjG,EAAIwb,EAAI,IAAMC,EAAI,IAClB9D,EAAM,QAUR,IADA2V,EAAiC,GAAXV,GAAsB,IAD5CjrB,EAAIsE,EAAE1H,QAC4C,GAC7CC,EAAI,EAAGA,EAAImD,EAAI,EAAGnD,GAAK,EAAG,CAI7B,GAHA6uB,GAASC,EACTc,EAAQtc,WAAW7L,EAAEzH,EAAI,IACzB6vB,EAAQvc,WAAW7L,EAAEzH,EAAI,IACrB6uB,EAAQ1V,EAIV,IAFAwW,EAAS,GAAKxlB,KAAK4kB,MAAMF,GAAS,GAClChb,EAAI,EACGgb,EAAQ1V,GACb3X,IAAMwb,GAAK4S,EAAQ5S,GAAK2S,EAAS9b,GAAG0I,QAAQ,GAAK,KAAOU,GAAK4S,EAAQ5S,GAAK0S,EAAS9b,GAAG0I,QAAQ,GAAK,IACnGsS,IACAhb,IAGJrS,GAAKouB,EAAQ,IAAMC,EAAQ,IAC3B7S,EAAI4S,EACJ3S,EAAI4S,CACN,CACA,OAAOruB,CACT,EACAsuB,GAAgB,SAAuBroB,GACrC,IAAIsoB,EAAYtoB,EAAE,GAAGuB,MAAM,KAAY,GACrCgnB,EAAUvoB,EAAE,GAAGuB,MAAM,KAAY,GACjCkmB,EAAMc,EAAQjwB,OAASgwB,EAAUhwB,OAC/BmvB,EAAM,EACRznB,EAAE,GAAKioB,GAAuBK,EAAWb,GAEzCznB,EAAE,GAAKioB,GAAuBM,GAAUd,EAE5C,EACAe,GAAqB,SAA4BtD,GAC/C,OAAQzS,MAAMyS,GAGVmD,GAHwB,SAAUroB,GACpCqoB,GAAcroB,GACdA,EAAE,GAxEU,SAAuB+J,EAAM6C,GAC3C,IAAKA,EACH,OAAO7C,EAET,IAGE6a,EACArsB,EACA6T,EALEpM,EAAI+J,EAAKxI,MAAM,KAAY,GAC7B7F,EAAIsE,EAAE1H,OACNyB,EAAI,GAWN,IAPe,YAAX6S,GACFrU,EAAImD,EAAI,EACRkpB,GAAO,IAEPrsB,GAAmC,GAA7Bga,SAAS3F,EAAQ,KAAO,GAAS,EAAQ,IAAJlR,GAAWA,EACtDkpB,EAAM,GAEHxY,EAAI,EAAGA,EAAI1Q,EAAG0Q,GAAK,EACtBrS,GAAKiG,EAAEzH,EAAI,GAAK,IAAMyH,EAAEzH,GAAK,IAC7BA,GAAKA,EAAIqsB,GAAOlpB,EAElB,OAAO3B,CACT,CAkDW0uB,CAAczoB,EAAE,GAAIuS,SAAS2S,EAAY,IAClD,CACF,EA2BAwD,GAAsB,SAA6BlH,EAASmH,GAe1D,IAdA,IAEEC,EACAhL,EACArI,EACAC,EACA4D,EACAC,EACA9gB,EACAmD,EACAsE,EACA6oB,EACAC,EACAC,EAbE3c,EAAIoV,EAAQlpB,OACdsb,EAAQ,IAAO+U,GAAa,KAarBvc,GAAK,GAAG,CAMf,IAJA0c,GADAlL,EAAU4D,EAAQpV,IACC0c,SAAWlL,EAAQkL,UAAY,CAAC,EAAG,EAAG,EAAG,GAC5DC,EAAanL,EAAQmL,WAAanL,EAAQmL,YAAc,CAAC,EAAG,EAAG,EAAG,GAClED,EAASxwB,OAAS,EAClBoD,EAAIkiB,EAAQtlB,OAAS,EAChBC,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EACtBgd,EAAIqI,EAAQrlB,GAAKqlB,EAAQrlB,EAAI,GAC7Bid,EAAIoI,EAAQrlB,EAAI,GAAKqlB,EAAQrlB,EAAI,GACjC6gB,EAAKwE,EAAQrlB,EAAI,GAAKqlB,EAAQrlB,GAC9B8gB,EAAKuE,EAAQrlB,EAAI,GAAKqlB,EAAQrlB,EAAI,GAClCyH,EAAI,EAAOwV,EAAGD,GACdsT,EAAK,EAAOxP,EAAID,IAChBwP,EAASlmB,KAAK0L,IAAIpO,EAAI6oB,GAAMjV,KAE1BmV,EAAWxwB,EAAI,GAAKyH,EACpB+oB,EAAWxwB,EAAI,GAAKswB,EACpBE,EAAWxwB,EAAI,GAAK,GAAMgd,EAAIA,EAAIC,EAAIA,GACtCuT,EAAWxwB,EAAI,GAAK,GAAM6gB,EAAKA,EAAKC,EAAKA,IAE3CyP,EAASzhB,KAAKuhB,EAAQA,EAAQ,EAAG,EAAGA,EAAQA,GAG1ChL,EAAQliB,KAAOkiB,EAAQ,IAAMA,EAAQliB,EAAI,KAAOkiB,EAAQ,KAC1DrI,EAAIqI,EAAQ,GAAKA,EAAQliB,EAAI,GAC7B8Z,EAAIoI,EAAQ,GAAKA,EAAQliB,EAAI,GAC7B0d,EAAKwE,EAAQ,GAAKA,EAAQ,GAC1BvE,EAAKuE,EAAQ,GAAKA,EAAQ,GAC1B5d,EAAI,EAAOwV,EAAGD,GACdsT,EAAK,EAAOxP,EAAID,GACZ1W,KAAK0L,IAAIpO,EAAI6oB,GAAMjV,IACrBmV,EAAWrtB,EAAI,GAAKsE,EACpB+oB,EAAW,GAAKF,EAChBE,EAAWrtB,EAAI,GAAK,GAAM6Z,EAAIA,EAAIC,EAAIA,GACtCuT,EAAW,GAAK,GAAM3P,EAAKA,EAAKC,EAAKA,GACrCyP,EAASptB,EAAI,GAAKotB,EAASptB,EAAI,IAAK,GAG1C,CACA,OAAO8lB,CACT,EACAwH,GAAsB,SAA6B7U,GACjD,IAAInU,EAAImU,EAAE8U,OAAO1e,MAAM,KAGvB,MAAO,CACLgL,IAHKpB,EAAE1M,QAAQ,QAAU,GAAK0M,EAAE1M,QAAQ,SAAW,IAAMgL,MAAM5G,WAAW7L,EAAE,KAAO,GAAK6L,WAAW7L,EAAE,KAG9F,IACPwV,IAHKrB,EAAE1M,QAAQ,OAAS,GAAK0M,EAAE1M,QAAQ,UAAY,IAAMgL,MAAM5G,WAAW7L,EAAE,KAAO,GAAK6L,WAAW7L,EAAE,KAG9F,IAEX,EAIAkpB,GAAgB,2EAChBC,GAAiB,SAAwB7N,EAAOC,EAAKhjB,EAAG6wB,GACtD,IASEC,EACAC,EAf+B7B,EAK7B8B,EAAKhlB,KAAKilB,QAEZC,EAAKllB,KAAKmlB,SAEV3D,EAAKzK,EAAM/iB,GAAKgxB,EAAGhU,EACnByQ,EAAK1K,EAAM/iB,EAAI,GAAKgxB,EAAG/T,EACvBrW,EAAI,GAAM4mB,EAAKA,EAAKC,EAAKA,GAEzB2D,EAAK,EAAO3D,EAAID,GAWlB,OARAA,EAAKxK,EAAIhjB,GAAKkxB,EAAGlU,EACjByQ,EAAKzK,EAAIhjB,EAAI,GAAKkxB,EAAGjU,EACrB6T,EAAW,EAAOrD,EAAID,GAAM4D,EAC5BL,GAnBiC7B,EAmBZ4B,KAlBN5B,EAAMjE,GAAMiE,GAAOA,EAAM,EAAIhE,IAAQA,IAAQgE,GAoBvD2B,GAAY/F,GAAqB3gB,KAAK0L,IAAIkb,EAASjG,EAAkBuG,IAAMlG,KAC9E0F,EAAW/F,GAEN9e,KAAKslB,UAAYxG,EAAoB,CAC1CrY,MAAOzG,KAAKslB,UACZnF,EAAGpJ,EACHqO,GAAIA,EAEJC,GAAIR,GAAYE,EAASF,EAASQ,GAAK,GAAKlnB,KAAK0L,IAAIkb,GAAU3F,GAAY0F,EAAWC,EAEtFlG,GAAIjkB,EAEJpD,GAAI,GAAMgqB,EAAKA,EAAKC,EAAKA,GAAM7mB,EAE/B5G,EAAGA,EAEP,EACA,GAAY,SAAmBuxB,GAC7B,EAAO,IACPxG,EAAcA,GAAe,GAAQ,EAAKyG,QAAQC,SAC9C,GAAQ1G,GACV,EAAW,EAAK1I,MAAMC,QACfhV,SACPyd,EAAYtiB,UAAUmoB,eAAiBA,GACvC,EAAe,GACNW,GACThG,GAAK,6CAET,EACSmG,GAAiB,CAC1B5Y,QAAS,QACTvP,KAAM,WACNooB,QAAS,EAETjP,SAAU,SAAkBC,EAAMiP,GAChC,EAAOjP,EACPoI,EAAc6G,EACd,IACF,EACAhP,KAAM,SAAcvC,EAAQ1c,EAAOkf,EAAO5T,EAAO6T,GAE/C,GADA,GAAgB,GAAU,IACrBnf,EAEH,OADA4nB,GAAK,kBACE,EAGT,IAAIvb,EAAM9L,EAAGggB,EAAI2N,EAAOC,EAAQnF,EAAY3e,EAAK+jB,EAAaC,EAAWjP,EAAOC,EAAKhjB,EAAG6T,EAAG1Q,EAAG8uB,EAAUC,EAAQC,EAAaC,EAAOC,EAAOC,EAAeC,EAAale,EACvK,GAFA2W,EAAYrnB,KAAWA,EAAQA,EAAMiF,KAAKia,EAAO5T,EAAOoR,EAAQyC,IAE3C,iBAAVnf,GAAsBA,EAAMie,SAAWje,EAAM,GACtDA,EAAQ,CACNkuB,MAAOluB,QAEJ,GAAqB,iBAAVA,EAAoB,CAGpC,IAAKO,KADL8L,EAAO,CAAC,EACErM,EACRqM,EAAK9L,GAAK8mB,EAAYrnB,EAAMO,KAAa,WAANA,EAAiBP,EAAMO,GAAG0E,KAAKia,EAAO5T,EAAOoR,EAAQyC,GAAWnf,EAAMO,GAE3GP,EAAQqM,CACV,CACA,IAAIzM,EAAK8c,EAAOpQ,SAAW5C,OAAOwD,iBAAiBwP,GAAU,CAAC,EAC5DmS,EAAOjvB,EAAGivB,KAAO,GACjBvD,IAAsB,SAATuD,GAAsD,OAAlCA,EAAKxpB,MAAM,KAAY,IAAI,IAA8B,YAAhBzF,EAAGkvB,UAC7EC,GAAW/uB,EAAMgvB,QAAU,SAAS3gB,MAAM,KAG5C,GADA8f,EAAkB,cADlB9hB,GAAQqQ,EAAOvK,SAAW,IAAIwD,gBACW,YAATtJ,EACnB,SAATA,IAAoB8hB,IAAWnuB,EAAMivB,KAEvC,OADArH,GAAK,mBAAqBvb,EAAO,cAAgB2gB,KAC1C,EAGT,GADAzsB,EAAa,SAAT8L,EAAkB,IAAM,UACvBrM,EAAMivB,OAAS5H,EAAY3K,EAAOyG,cACrC,OAAO,EAGT,GADA+K,EAzLY,SAAqBA,EAAOgB,EAAWxS,GACnD,IACEtQ,EACAC,EAoBF,SAtBgC,iBAAV6hB,IAGL,GAAa/uB,KAAK+uB,KAAWA,EAAM7oB,MAAM,KAAY,IAAIjJ,OAAS,MACjFgQ,EAAI,EAAS8hB,GAAO,KAElB7hB,GAAQD,EAAE+F,SAAW,IAAIwD,cACrBuZ,GAAsB,SAAT7iB,IAEfD,EAAI,EAAeA,GAAG,GACtBC,EAAO,QAET6hB,EAAQ9hB,EAAEwQ,aAAsB,SAATvQ,EAAkB,IAAM,WAAa,GACxDD,IAAMsQ,IAERwR,EAAQ9hB,EAAE+iB,eAAe,KAAM,kBAAoBjB,KAGrDtG,GAAK,8BAAgCsG,GACrCA,GAAQ,IAGLA,CACT,CAiKUkB,CAAYpvB,EAAMkuB,OAASluB,EAAMiD,GAAKjD,EAAM0d,QAAU,GAAU,MAANnd,EAAWmc,GACzEyR,GAAUxG,GAAUxoB,KAAK+uB,GAE3B,OADAtG,GAAK,MAAQvb,EAAO,8BAAgC2gB,KAC7C,EAST,GAPAhE,EAAahpB,EAAMgpB,YAAmC,IAArBhpB,EAAMgpB,WAAmBhpB,EAAMgpB,WAAa,OAC7E3e,EAAMrK,EAAMqK,KAAO0jB,GAAesB,WAClChnB,KAAKinB,MAAQtvB,EAAMivB,KACnB5mB,KAAKknB,QAAUvvB,EAAMwL,QAAUuiB,GAAeyB,cAC9CnnB,KAAKonB,OAAS,iBAAkBzvB,EAAQA,EAAM0vB,aAAe3B,GAAe4B,oBAC5EtnB,KAAKunB,KAAOppB,KAAKmT,IAAI,GAAIpD,MAAMvW,EAAM6vB,WAAa,GAAK7vB,EAAM6vB,WAC7DxnB,KAAKynB,OAAS5Q,EACVgP,EAAO,CAOT,GANA7lB,KAAKkX,QAAU7C,EACf8R,EAA0C,iBAArBxuB,EAAM8rB,WAC3B1M,EAAQ/W,KAAKinB,MAAQ5S,EAAOrU,KAAKinB,OAAS5S,EAAOE,aAAarc,GACzD8H,KAAKinB,OAAU5S,EAAOyS,eAAe,KAAM,kBAC9CzS,EAAOkG,eAAe,KAAM,gBAAiBxD,GAErC,MAAN7e,GAAa8H,KAAKinB,MAAO,CAG3B,GAFAlQ,EAAQkE,EAAgBkL,EAAcxuB,EAAM8rB,WAAW,GAAK1M,GAC5DC,EAAMiE,EAAgBkL,EAAcxuB,EAAM8rB,WAAW,GAAKoC,IACrDM,IAAgBnD,GAAyBjM,EAAOC,EAAK2J,EAAY3e,EAAKihB,GACzE,OAAO,EA8BT,IA5ByB,QAArBtrB,EAAM8rB,aAA6C,IAArB9rB,EAAM8rB,YACtClE,GAAK,gBAAkBxE,EAAgBhE,GAAS,MAAQgE,EAAgB/D,GAAO,OAEjFuP,EAA6D,YAA9C5uB,EAAMqM,MAAQ0hB,GAAegC,gBAE1C3Q,EAAQoN,GAAoBpN,EAAOpf,EAAMgwB,iBACzC3Q,EAAMmN,GAAoBnN,EAAKrf,EAAMgwB,iBAChC5Q,EAAMhb,MACTikB,GAAcjJ,GAEXC,EAAIjb,MACPikB,GAAchJ,GAEhBsP,EAAgB7B,GAAoBiC,EAAQ,IAC5C1mB,KAAKilB,QAAUlO,EAAM4P,OAAS,CAC5B3V,EAAG+F,EAAMxM,KAAO+b,EAActV,EAAI+F,EAAMve,MACxCyY,EAAG8F,EAAMvM,IAAM8b,EAAcrV,EAAI8F,EAAMte,QAErCiuB,EAAQ,KACVJ,EAAgB7B,GAAoBiC,EAAQ,KAE9C1mB,KAAKmlB,SAAW,CACdnU,EAAGgG,EAAIzM,KAAO+b,EAActV,EAAIgG,EAAIxe,MACpCyY,EAAG+F,EAAIxM,IAAM8b,EAAcrV,EAAI+F,EAAIve,SAGvCuH,KAAK4nB,SAAWvT,EAAO2G,WAAajE,EACpClP,EAAIkP,EAAMhjB,SACD8T,GAAK,GAQZ,IAPAoe,EAAWlP,EAAMlP,GACjBqe,EAASlP,EAAInP,GACbke,EAAcE,EAAS1B,UAAY,GACnCyB,EAAYE,EAAO3B,UAAY,GAC/BptB,EAAI8uB,EAASlyB,OACb+qB,EAAoB,EAEf9qB,EAAI,EAAGA,EAAImD,EAAGnD,GAAK,EAClBkyB,EAAOlyB,KAAOiyB,EAASjyB,IAAMkyB,EAAOlyB,EAAI,KAAOiyB,EAASjyB,EAAI,KAC1DuyB,EACER,EAAY/xB,IAAMgyB,EAAUhyB,IAE9BoyB,EAAQH,EAASzB,WACjB6B,EAAQH,EAAO1B,WACfnc,EAASrU,GAAKA,IAAMmD,EAAI,EAAI,EAAIA,EAAI,GAEpC6I,KAAK6nB,WAAa,CAChBphB,MAAOzG,KAAK6nB,WACZ7zB,EAAGA,EACH6T,EAAGA,EACHigB,IAAK1B,EAAMpyB,EAAI,GACf+zB,IAAK1B,EAAMryB,EAAI,GAAKoyB,EAAMpyB,EAAI,GAC9Bg0B,IAAK5B,EAAM/d,GACX4f,IAAK5B,EAAMhe,GAAU+d,EAAM/d,IAE7B6P,EAAKlY,KAAK4kB,eAAeqB,EAAUC,EAAQlyB,EAAI,GAC/CgM,KAAK4kB,eAAeqB,EAAUC,EAAQlyB,EAAGkkB,GACzClY,KAAK4kB,eAAeqB,EAAUC,EAAQ7d,EAAS,EAAG6P,GAClDlkB,GAAK,GAELgM,KAAK4kB,eAAeqB,EAAUC,EAAQlyB,IAGxCkkB,EAAKlY,KAAKZ,IAAI6mB,EAAUjyB,EAAGiyB,EAASjyB,GAAIkyB,EAAOlyB,IAC/CkkB,EAAKlY,KAAKZ,IAAI6mB,EAAUjyB,EAAI,EAAGiyB,EAASjyB,EAAI,GAAIkyB,EAAOlyB,EAAI,KAAOkkB,GAK5E,MACEA,EAAKlY,KAAKZ,IAAIiV,EAAQ,eAAgBA,EAAOE,aAAarc,GAAK,GAAI2tB,EAAQ,GAAI5iB,EAAO6T,EAAS,EAAGmN,GAAmBtD,GAAazoB,GAEhIquB,IACFvmB,KAAKZ,IAAIY,KAAKilB,QAAS,IAAKjlB,KAAKilB,QAAQjU,EAAGhR,KAAKmlB,SAASnU,GAC1DkH,EAAKlY,KAAKZ,IAAIY,KAAKilB,QAAS,IAAKjlB,KAAKilB,QAAQhU,EAAGjR,KAAKmlB,SAASlU,IAE7DiH,IACFlY,KAAK+X,OAAOjV,KAAK,YACjBoV,EAAGlB,IAAM6O,EACT3N,EAAGgQ,QAAUhwB,EAEjB,CACA,OA7wBgB,CA8wBlB,EACAiL,OAAQ,SAAgB6O,EAAOgG,GAoB7B,IAnBA,IAMExiB,EAEA2yB,EACA9O,EACAliB,EACAkkB,EACArnB,EACA6T,EACAmJ,EACAC,EACA2H,EACAE,EACAzQ,EAlBE4U,EAAUjF,EAAK4P,SACjBQ,EAAYpQ,EAAK6P,WACjBQ,EAAWrQ,EAAKsN,UAChBgD,EAAMtQ,EAAKuP,KACXlT,EAAS2D,EAAKd,QACdgB,EAAKF,EAAKG,IAcLD,GACLA,EAAG7J,EAAE2D,EAAOkG,EAAGtd,GACfsd,EAAKA,EAAGzR,MAEV,GAAc,IAAVuL,GAAegG,EAAKoP,OAEtB,IADAlP,EAAKF,EAAKG,IACHD,GACDA,EAAGlB,MACDgB,EAAKiP,MACP5S,EAAO2D,EAAKiP,OAAS/O,EAAGlB,IAExB3C,EAAOyG,aAAa5C,EAAGgQ,QAAShQ,EAAGlB,MAGvCkB,EAAKA,EAAGzR,WAEL,GAAIwW,EAAS,CAElB,KAAOoL,GACLhN,EAAQgN,EAASjD,GAAKpT,EAAQqW,EAAShD,GACvCluB,EAAIkxB,EAASxJ,GAAK7M,EAAQqW,EAAS7wB,GAEnC6wB,EAASlI,EAAEkI,EAASr0B,GAAKgkB,EAAKiN,QAAQjU,EAAI,GAAKqK,GAASlkB,EACxDkxB,EAASlI,EAAEkI,EAASr0B,EAAI,GAAKgkB,EAAKiN,QAAQhU,EAAI,GAAKoK,GAASlkB,EAC5DkxB,EAAWA,EAAS5hB,MAItB,IADA0hB,EAAYnW,EAAQ,GAAM,EAAIA,EAAQA,GAAS,EAAI,EAAIA,GAASA,EAAQ,EACjEoW,GAGL/f,GAFArU,EAAIo0B,EAAUp0B,IAEAA,KADdqlB,EAAU4D,EAAQmL,EAAUvgB,IACA9T,OAAS,EAAI,EAAIslB,EAAQtlB,OAAS,GAE9DsnB,EAAQ,EAAOhC,EAAQhR,GAAUgR,EAAQrlB,EAAI,GAAIqlB,EAAQhR,EAAS,GAAKgR,EAAQrlB,IAE/E4kB,EAAM,GAAKyC,GACXvC,EAAM,GAAKuC,GACXrK,EAAIqI,EAAQrlB,EAAI,GAChBid,EAAIoI,EAAQrlB,EAAI,GAChBmD,EAAIixB,EAAUN,IAAMK,EAAYC,EAAUL,IAE1C1O,EAAQrlB,GAAKgd,EAAI8H,EAAM3hB,EACvBkiB,EAAQrlB,EAAI,GAAKid,EAAI2H,EAAMzhB,EAC3BA,EAAIixB,EAAUJ,IAAMG,EAAYC,EAAUH,IAC1C5O,EAAQhR,EAAS,GAAK2I,EAAI8H,EAAM3hB,EAChCkiB,EAAQhR,GAAU4I,EAAI2H,EAAMzhB,EAC5BixB,EAAYA,EAAU3hB,MAGxB,GADA4N,EAAO2G,WAAaiC,EAChBjF,EAAKoP,OAAQ,CAGf,IAFA5xB,EAAI,GAECqS,EAAI,EAAGA,EAAIoV,EAAQlpB,OAAQ8T,IAI9B,IAFA1Q,GADAkiB,EAAU4D,EAAQpV,IACN9T,OACZyB,GAAK,KAAO6jB,EAAQ,GAAKiP,EAAM,GAAKA,EAJ9B,KAI6CjP,EAAQ,GAAKiP,EAAM,GAAKA,EAAM,KAC5Et0B,EAAI,EAAGA,EAAImD,EAAGnD,IAEjBwB,IAAM6jB,EAAQrlB,GAAKs0B,EAAM,GAAKA,EAP1B,IAUJtQ,EAAKiP,MACP5S,EAAO2D,EAAKiP,OAASzxB,EAErB6e,EAAOyG,aAAa,IAAKtlB,EAE7B,CACF,CACAwiB,EAAKkP,SAAWjK,GAAWjF,EAAKkP,QAAQtqB,KAAKob,EAAKyP,OAAQxK,EAAS5I,EACrE,EACAkU,KAAM,SAAcC,GAClBxoB,KAAKmY,IAAMnY,KAAK4nB,SAAW,CAC7B,EACAa,WDrzBK,SAAoB9wB,GAEzB,IACEslB,EADElZ,GADJpM,EAAQqhB,EAAUrhB,IAAU8gB,EAAa3hB,KAAKa,IAAS2J,SAASonB,cAAc/wB,IAAkBA,GAClF4c,aAAe5c,EAAQ,EAErC,OAAIoM,IAAMpM,EAAQA,EAAM4c,aAAa,OAE9BxQ,EAAE4kB,UACL5kB,EAAE4kB,QAAU,CAAC,IAEf1L,EAAUlZ,EAAE4kB,QAAQhxB,MACDslB,EAAQ2L,OAAS3L,EAAUlZ,EAAE4kB,QAAQhxB,GAASsjB,EAAgBtjB,IAE3EA,EAAgFqhB,EAAUrhB,GAASsjB,EAAgBtjB,GAASuhB,EAAUvhB,EAAM,IAAM,CAACA,GAASA,EAApJsF,QAAQC,KAAK,wDAC/B,ECyyBE+d,gBAAiBA,EACjBF,gBAAiBA,EACjB8N,iBAAkB,SAA0BC,EAAQC,EAAQlT,GAC1D,IAAI8K,EAAa9K,EAAK8K,WACpB3e,EAAM6T,EAAK7T,IACT9D,EAAS,CAAC4qB,EAAQC,GAEtB,OADAvF,GAAYtlB,EAAQyiB,EAAY3e,GACzB9D,CACT,EACA8qB,WAAYxF,GACZyF,aAAcnF,GACdoF,aAAclJ,GACdmJ,wBAAyBnG,GACzBoG,cAAe,SAAuBtS,EAAS0C,GAC7C,OAAO,EAAS1C,GAAS9U,KAAI,SAAUqS,GACrC,OAAO,EAAeA,GAAiB,IAATmF,EAChC,GACF,EACAkO,YAAa,SACbJ,qBAAqB,EACrBN,WAAY,QAEd,KAAc,EAAKtT,eAAegS,gKCn5BlC,OAfwD3tB,IACtD,MAAM,KAAEgE,EAAO,GAAE,KAAEyqB,EAAO,eAAc,OAAE6C,EAAS,OAAM,YAAEC,EAAc,IAAOvxB,EAC1EwxB,EAASxtB,EAAO,IACtB,OAAOtB,EAAAA,GAAAA,MAAA,OAAKC,UAAU,kBAAkBlC,MAAO,IAAM+wB,EAAQ9wB,OAAQsD,EAAMrD,QAAQ,cAAawB,SAAA,EAC9FF,EAAAA,GAAAA,KAAA,SAAAE,SAAO,kBACPF,EAAAA,GAAAA,KAAA,QACEysB,SAAS,UAAU+C,SAAS,UAC5B5uB,EAAE,09BACF4rB,KAAMA,EACN6C,OAAQA,EACRC,YAAaA,MAEX,ECIR,OAhBgEvxB,IAC9D,MAAM,KAAEgE,EAAO,GAAE,KAAEyqB,EAAO,OAAM,OAAE6C,EAAS,eAAc,YAAEC,EAAc,IAAOvxB,EAC1EwxB,EAASxtB,EAAO,IAChB0tB,EAAsBH,EAAcC,EAC1C,OAAO9uB,EAAAA,GAAAA,MAAA,OAAKC,UAAU,sBAAsBlC,MAAO,IAAM+wB,EAAQ9wB,OAAQsD,EAAMrD,QAAQ,cAAawB,SAAA,EAClGF,EAAAA,GAAAA,KAAA,SAAAE,SAAO,kBACPF,EAAAA,GAAAA,KAAA,QACEysB,SAAS,UAAU+C,SAAS,UAC5B5uB,EAAE,yuCACF4rB,KAAMA,EACN6C,OAAQA,EACRC,YAAaG,MAEX,aC4BR,ICsNMC,GDtNN,GArCsC3xB,IAEpC,MAAM4xB,EAAOC,KAEb,OAAO5vB,EAAAA,GAAAA,KAACC,GAAAA,GAAQ,CAACC,SAAUA,KACzBO,EAAAA,GAAAA,MAACovB,GAAAA,EAAW,CAAClqB,GAAG,MAAM7E,GAAG,SAASJ,UAAU,SAAQR,SAAA,EAClDO,EAAAA,GAAAA,MAAA,OAAKC,UAAU,kBAAiBR,SAAA,EAC9BF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACpvB,UAAU,wBAAwB7F,GAAG,IAAIk1B,MAAM,oBAAmB7vB,UAC9EF,EAAAA,GAAAA,KAACgwB,GAAe,OAElBhwB,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,QAEPxvB,EAAAA,GAAAA,MAAA,OAAKC,UAAU,gBAAeR,SAAA,EAC5BF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,KACLjwB,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,IAAIk1B,MAAM,oBAAmB7vB,UAC5CF,EAAAA,GAAAA,KAACkwB,GAAmB,UAGxBlwB,EAAAA,GAAAA,KAAA,OAAKU,UAAU,mBAAkBR,UAC/BO,EAAAA,GAAAA,MAAA,OAAKC,UAAU,gBAAeR,SAAA,EAC5BF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,QAAQk1B,MAAM,OAAM7vB,SAAC,UACtCF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,KACLjwB,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,wBAAwBk1B,MAAM,WAAWI,mBAAoBA,KAAA,IAAAC,EAAA,OAAwD,KAArC,QAAbA,EAAAT,EAAKU,gBAAQ,IAAAD,OAAA,EAAbA,EAAeE,SAASpnB,QAAQ,cAAmB,EAAChJ,SAAC,cACzIF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,KACLjwB,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,UAAUk1B,MAAM,SAAQ7vB,SAAC,YAC1CF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,IACJM,GAAAA,KAAkB9vB,EAAAA,GAAAA,MAAA+vB,GAAAA,SAAA,CAAAtwB,SAAA,EACjBF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,YAAYk1B,MAAM,WAAU7vB,SAAC,cAC9CF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,QAEPjwB,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,WAAWk1B,MAAM,UAAS7vB,SAAC,qBAI/C,qGC1CHuwB,GACI,iBADJA,GAEI,iBAFJA,GAGK,kBAELC,GAAY,CACdC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,MAAO,QACPC,MAAO,SAKLC,IAHkBz3B,OAAOC,KAAK62B,IAAW1oB,KAAI,SAAUzE,GACzD,OAAOmtB,GAAUntB,EACnB,IAEW,WADP8tB,GAEQ,UAFRA,GAGI,OAHJA,GAIS,aAJTA,GAKU,YALVA,GAMS,WANTA,GAOI,OAPJA,GAQQ,WARRA,GASG,MATHA,GAUG,MAVHA,GAWM,SAENC,GAAgB,CAClBC,UAAW,YACXC,QAAS,UACTC,MAAO,YACPC,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,YAERC,GACa,eADbA,GAEK,QAFLA,GAGyB,0BAHzBA,GAIsB,sBAJtBA,GAKc,gBAEdC,GAAen4B,OAAOC,KAAKy3B,IAAeU,QAAO,SAAU7uB,EAAK6D,GAElE,OADA7D,EAAImuB,GAActqB,IAAQA,EACnB7D,CACT,GAAG,CAAC,GACA8uB,GAAoB,CAACvB,GAAUO,SAAUP,GAAUQ,OAAQR,GAAUS,OACrEe,GAAmB,oBACnBC,GAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUlvB,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXivB,QAAyBjvB,EAAIxB,cAAgBywB,QAAUjvB,IAAQivB,OAAO3vB,UAAY,gBAAkBU,CAC3H,EAMImvB,GAAc,WAChB,SAASC,EAAiBlY,EAAQtc,GAChC,IAAK,IAAI/D,EAAI,EAAGA,EAAI+D,EAAMhE,OAAQC,IAAK,CACrC,IAAIw4B,EAAaz0B,EAAM/D,GACvBw4B,EAAWvrB,WAAaurB,EAAWvrB,aAAc,EACjDurB,EAAWtrB,cAAe,EACtB,UAAWsrB,IAAYA,EAAWrrB,UAAW,GACjDvN,OAAO+J,eAAe0W,EAAQmY,EAAWxrB,IAAKwrB,EAChD,CACF,CACA,OAAO,SAAUC,EAAaC,EAAYC,GAGxC,OAFID,GAAYH,EAAiBE,EAAYhwB,UAAWiwB,GACpDC,GAAaJ,EAAiBE,EAAaE,GACxCF,CACT,CACF,CAfkB,GAgBdG,GAAWh5B,OAAOi5B,QAAU,SAAUxY,GACxC,IAAK,IAAIrgB,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAIsI,EAAS0B,UAAUhK,GACvB,IAAK,IAAIgN,KAAO1E,EACV1I,OAAO6I,UAAUE,eAAeC,KAAKN,EAAQ0E,KAC/CqT,EAAOrT,GAAO1E,EAAO0E,GAG3B,CACA,OAAOqT,CACT,EAeIyY,GAA0B,SAAU3vB,EAAKtJ,GAC3C,IAAIwgB,EAAS,CAAC,EACd,IAAK,IAAIrgB,KAAKmJ,EACRtJ,EAAKqP,QAAQlP,IAAM,GAClBJ,OAAO6I,UAAUE,eAAeC,KAAKO,EAAKnJ,KAC/CqgB,EAAOrgB,GAAKmJ,EAAInJ,IAElB,OAAOqgB,CACT,EAOI0Y,GAA0B,SAAiC1f,GAE7D,OAAe,OADFrP,UAAUjK,OAAS,QAAsB4O,IAAjB3E,UAAU,KAAmBA,UAAU,IAEnE+M,OAAOsC,GAETtC,OAAOsC,GAAKpB,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAC9H,EACI+gB,GAAwB,SAA+BC,GACzD,IAAIC,EAAiBC,GAAqBF,EAAWvC,GAAUU,OAC3DgC,EAAoBD,GAAqBF,EAAWnB,IACxD,GAAIsB,GAAqBF,EAEvB,OAAOE,EAAkBnhB,QAAQ,OAAO,WACtC,OAAOpQ,MAAMC,QAAQoxB,GAAkBA,EAAez1B,KAAK,IAAMy1B,CACnE,IAEF,IAAIG,EAAwBF,GAAqBF,EAAWnB,IAC5D,OAAOoB,GAAkBG,QAAyB1qB,CACpD,EACI2qB,GAAyB,SAAgCL,GAC3D,OAAOE,GAAqBF,EAAWnB,KAAwC,WAAa,CAC9F,EACIyB,GAA6B,SAAoCC,EAASP,GAC5E,OAAOA,EAAUQ,QAAO,SAAU11B,GAChC,YAAiC,IAAnBA,EAAMy1B,EACtB,IAAGxrB,KAAI,SAAUjK,GACf,OAAOA,EAAMy1B,EACf,IAAGxB,QAAO,SAAU0B,EAAUr5B,GAC5B,OAAOu4B,GAAS,CAAC,EAAGc,EAAUr5B,EAChC,GAAG,CAAC,EACN,EACIs5B,GAA0B,SAAiCC,EAAmBX,GAChF,OAAOA,EAAUQ,QAAO,SAAU11B,GAChC,YAAwC,IAA1BA,EAAM2yB,GAAUC,KAChC,IAAG3oB,KAAI,SAAUjK,GACf,OAAOA,EAAM2yB,GAAUC,KACzB,IAAG/d,UAAUof,QAAO,SAAU6B,EAAkBhoB,GAC9C,IAAKgoB,EAAiB95B,OAEpB,IADA,IAAIF,EAAOD,OAAOC,KAAKgS,GACd7R,EAAI,EAAGA,EAAIH,EAAKE,OAAQC,IAAK,CACpC,IACI85B,EADej6B,EAAKG,GACiBuB,cACzC,IAA0D,IAAtDq4B,EAAkB1qB,QAAQ4qB,IAAiCjoB,EAAIioB,GACjE,OAAOD,EAAiBrqB,OAAOqC,EAEnC,CAEF,OAAOgoB,CACT,GAAG,GACL,EACIE,GAAuB,SAA8BtY,EAASmY,EAAmBX,GAEnF,IAAIe,EAAmB,CAAC,EACxB,OAAOf,EAAUQ,QAAO,SAAU11B,GAChC,QAAI8D,MAAMC,QAAQ/D,EAAM0d,WAGM,IAAnB1d,EAAM0d,IACfvY,GAAK,WAAauY,EAAU,mDAAwD0W,GAAQp0B,EAAM0d,IAAY,MAEzG,EACT,IAAGzT,KAAI,SAAUjK,GACf,OAAOA,EAAM0d,EACf,IAAG7I,UAAUof,QAAO,SAAUiC,EAAcC,GAC1C,IAAIC,EAAmB,CAAC,EACxBD,EAAaT,QAAO,SAAU5nB,GAG5B,IAFA,IAAIuoB,OAAsB,EACtBv6B,EAAOD,OAAOC,KAAKgS,GACd7R,EAAI,EAAGA,EAAIH,EAAKE,OAAQC,IAAK,CACpC,IAAIq6B,EAAex6B,EAAKG,GACpB85B,EAAwBO,EAAa94B,eAGiB,IAAtDq4B,EAAkB1qB,QAAQ4qB,IAAmCM,IAAwB/C,IAAiE,cAA3CxlB,EAAIuoB,GAAqB74B,eAAoCu4B,IAA0BzC,IAAmE,eAA7CxlB,EAAIioB,GAAuBv4B,gBACrP64B,EAAsBN,IAGyB,IAA7CF,EAAkB1qB,QAAQmrB,IAAyBA,IAAiBhD,IAA6BgD,IAAiBhD,IAA2BgD,IAAiBhD,KAChK+C,EAAsBC,EAE1B,CACA,IAAKD,IAAwBvoB,EAAIuoB,GAC/B,OAAO,EAET,IAAIz2B,EAAQkO,EAAIuoB,GAAqB74B,cAOrC,OANKy4B,EAAiBI,KACpBJ,EAAiBI,GAAuB,CAAC,GAEtCD,EAAiBC,KACpBD,EAAiBC,GAAuB,CAAC,IAEtCJ,EAAiBI,GAAqBz2B,KACzCw2B,EAAiBC,GAAqBz2B,IAAS,GACxC,EAGX,IAAGiV,UAAUlP,SAAQ,SAAUmI,GAC7B,OAAOooB,EAAanrB,KAAK+C,EAC3B,IAIA,IADA,IAAIhS,EAAOD,OAAOC,KAAKs6B,GACdn6B,EAAI,EAAGA,EAAIH,EAAKE,OAAQC,IAAK,CACpC,IAAIq6B,EAAex6B,EAAKG,GACpBs6B,EAAW,KAAa,CAAC,EAAGN,EAAiBK,GAAeF,EAAiBE,IACjFL,EAAiBK,GAAgBC,CACnC,CACA,OAAOL,CACT,GAAG,IAAIrhB,SACT,EACIugB,GAAuB,SAA8BF,EAAWzE,GAClE,IAAK,IAAIx0B,EAAIi5B,EAAUl5B,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAC9C,IAAI+D,EAAQk1B,EAAUj5B,GACtB,GAAI+D,EAAM4E,eAAe6rB,GACvB,OAAOzwB,EAAMywB,EAEjB,CACA,OAAO,IACT,EAkBI+F,IACE7E,GAAQ8E,KAAKC,MACV,SAAUC,GACf,IAAIC,EAAcH,KAAKC,MACnBE,EAAcjF,GAAQ,IACxBA,GAAQiF,EACRD,EAASC,IAET/tB,YAAW,WACT2tB,GAAYG,EACd,GAAG,EAEP,GAEEE,GAAc,SAAqB9zB,GACrC,OAAO6F,aAAa7F,EACtB,EACI+zB,GAA0C,oBAAXxtB,OAAyBA,OAAOwtB,uBAAyBxtB,OAAOwtB,sBAAsBC,KAAKztB,SAAWA,OAAO0tB,6BAA+B1tB,OAAO2tB,0BAA4BT,GAAc,EAAAjgB,EAAOugB,uBAAyBN,GAC5PU,GAAyC,oBAAX5tB,OAAyBA,OAAO4tB,sBAAwB5tB,OAAO6tB,4BAA8B7tB,OAAO8tB,yBAA2BP,GAAc,EAAAtgB,EAAO2gB,sBAAwBL,GAC1M1xB,GAAO,SAAckyB,GACvB,OAAOnyB,SAAmC,mBAAjBA,QAAQC,MAAuBD,QAAQC,KAAKkyB,EACvE,EACIC,GAAkB,KAgBlBC,GAAmB,SAA0BC,EAAUC,GACzD,IAAIC,EAAUF,EAASE,QACrBC,EAAiBH,EAASG,eAC1BC,EAAiBJ,EAASI,eAC1BC,EAAWL,EAASK,SACpBC,EAAWN,EAASM,SACpBC,EAAeP,EAASO,aACxBC,EAAsBR,EAASQ,oBAC/BC,EAAaT,EAASS,WACtBC,EAAYV,EAASU,UACrBlG,EAAQwF,EAASxF,MACjBmG,EAAkBX,EAASW,gBAC7BC,GAAiBzF,GAAUE,KAAM8E,GACjCS,GAAiBzF,GAAUI,KAAM6E,GACjCS,GAAYrG,EAAOmG,GACnB,IAAIG,EAAa,CACfZ,QAASa,GAAW5F,GAAUC,KAAM8E,GACpCG,SAAUU,GAAW5F,GAAUK,KAAM6E,GACrCC,SAAUS,GAAW5F,GAAUM,KAAM6E,GACrCC,aAAcQ,GAAW5F,GAAUO,SAAU6E,GAC7CE,WAAYM,GAAW5F,GAAUQ,OAAQ8E,GACzCC,UAAWK,GAAW5F,GAAUS,MAAO8E,IAErCM,EAAY,CAAC,EACbC,EAAc,CAAC,EACnB58B,OAAOC,KAAKw8B,GAAY3yB,SAAQ,SAAU8vB,GACxC,IAAIiD,EAAsBJ,EAAW7C,GACnCkD,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAC5BD,EAAQ38B,SACVw8B,EAAU/C,GAAWkD,GAEnBC,EAAQ58B,SACVy8B,EAAYhD,GAAW6C,EAAW7C,GAASmD,QAE/C,IACAnB,GAAMA,IACNO,EAAoBR,EAAUgB,EAAWC,EAC3C,EACII,GAAe,SAAsBC,GACvC,OAAOh1B,MAAMC,QAAQ+0B,GAAiBA,EAAcp5B,KAAK,IAAMo5B,CACjE,EACIT,GAAc,SAAqBrG,EAAOzP,QACvB,IAAVyP,GAAyBzoB,SAASyoB,QAAUA,IACrDzoB,SAASyoB,MAAQ6G,GAAa7G,IAEhCoG,GAAiBzF,GAAUU,MAAO9Q,EACpC,EACI6V,GAAmB,SAA0B1a,EAAS6E,GACxD,IAAIwW,EAAaxvB,SAASqI,qBAAqB8L,GAAS,GACxD,GAAKqb,EAAL,CAOA,IAJA,IAAIC,EAAwBD,EAAWvc,aAAa2X,IAChD8E,EAAmBD,EAAwBA,EAAsB/qB,MAAM,KAAO,GAC9EirB,EAAqB,GAAGztB,OAAOwtB,GAC/BE,EAAgBt9B,OAAOC,KAAKymB,GACvBtmB,EAAI,EAAGA,EAAIk9B,EAAcn9B,OAAQC,IAAK,CAC7C,IAAIm9B,EAAYD,EAAcl9B,GAC1B2D,EAAQ2iB,EAAW6W,IAAc,GACjCL,EAAWvc,aAAa4c,KAAex5B,GACzCm5B,EAAWhW,aAAaqW,EAAWx5B,IAEQ,IAAzCq5B,EAAiB9tB,QAAQiuB,IAC3BH,EAAiBluB,KAAKquB,GAExB,IAAIC,EAAcH,EAAmB/tB,QAAQiuB,IACxB,IAAjBC,GACFH,EAAmB7zB,OAAOg0B,EAAa,EAE3C,CACA,IAAK,IAAIC,EAAKJ,EAAmBl9B,OAAS,EAAGs9B,GAAM,EAAGA,IACpDP,EAAWQ,gBAAgBL,EAAmBI,IAE5CL,EAAiBj9B,SAAWk9B,EAAmBl9B,OACjD+8B,EAAWQ,gBAAgBpF,IAClB4E,EAAWvc,aAAa2X,MAAsBgF,EAAcz5B,KAAK,MAC1Eq5B,EAAWhW,aAAaoR,GAAkBgF,EAAcz5B,KAAK,KAzB/D,CA2BF,EACI64B,GAAa,SAAoBtsB,EAAMutB,GACzC,IAAIC,EAAclwB,SAASmwB,MAAQnwB,SAASonB,cAAcgC,GAAUG,MAChE6G,EAAWF,EAAYtsB,iBAAiBlB,EAAO,IAAMkoB,GAAmB,KACxEyE,EAAU90B,MAAMY,UAAUwB,MAAMrB,KAAK80B,GACrChB,EAAU,GACViB,OAAgB,EAuCpB,OAtCIJ,GAAQA,EAAKx9B,QACfw9B,EAAK7zB,SAAQ,SAAUmI,GACrB,IAAI+rB,EAAatwB,SAASC,cAAcyC,GACxC,IAAK,IAAImtB,KAAatrB,EACpB,GAAIA,EAAIlJ,eAAew0B,GACrB,GAAIA,IAAc9F,GAChBuG,EAAWhnB,UAAY/E,EAAI+E,eACtB,GAAIumB,IAAc9F,GACnBuG,EAAWC,WACbD,EAAWC,WAAW/mB,QAAUjF,EAAIiF,QAEpC8mB,EAAWnnB,YAAYnJ,SAASqJ,eAAe9E,EAAIiF,cAEhD,CACL,IAAInT,OAAkC,IAAnBkO,EAAIsrB,GAA6B,GAAKtrB,EAAIsrB,GAC7DS,EAAW9W,aAAaqW,EAAWx5B,EACrC,CAGJi6B,EAAW9W,aAAaoR,GAAkB,QAGtCyE,EAAQmB,MAAK,SAAUC,EAAa9uB,GAEtC,OADA0uB,EAAgB1uB,EACT2uB,EAAWI,YAAYD,EAChC,IACEpB,EAAQvzB,OAAOu0B,EAAe,GAE9BjB,EAAQ5tB,KAAK8uB,EAEjB,IAEFjB,EAAQjzB,SAAQ,SAAUmI,GACxB,OAAOA,EAAIc,WAAWO,YAAYrB,EACpC,IACA6qB,EAAQhzB,SAAQ,SAAUmI,GACxB,OAAO2rB,EAAY/mB,YAAY5E,EACjC,IACO,CACL8qB,QAASA,EACTD,QAASA,EAEb,EACIuB,GAAoC,SAA2C3X,GACjF,OAAO1mB,OAAOC,KAAKymB,GAAY0R,QAAO,SAAU3e,EAAKrM,GACnD,IAAIsT,OAAkC,IAApBgG,EAAWtZ,GAAuBA,EAAM,KAAQsZ,EAAWtZ,GAAO,IAAO,GAAKA,EAChG,OAAOqM,EAAMA,EAAM,IAAMiH,EAAOA,CAClC,GAAG,GACL,EAmBI4d,GAAuC,SAA8C5X,GACvF,IAAI6X,EAAYn0B,UAAUjK,OAAS,QAAsB4O,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACrF,OAAOpK,OAAOC,KAAKymB,GAAY0R,QAAO,SAAU7uB,EAAK6D,GAEnD,OADA7D,EAAImuB,GAActqB,IAAQA,GAAOsZ,EAAWtZ,GACrC7D,CACT,GAAGg1B,EACL,EAsCIC,GAAmB,SAA0BpuB,EAAMutB,EAAMc,GAC3D,OAAQruB,GACN,KAAK0mB,GAAUU,MACb,MAAO,CACLkH,YAAa,WACX,OAnCuEvI,EAmC5BwH,EAAKxH,MAnC8BzP,EAmCvBiX,EAAKrB,iBA/BnDqC,EAAa,CAC5BvxB,IAAK+oB,IACOmC,KAAoB,EAC9Bn0B,EAAQm6B,GAAqC5X,EADTiY,GAEjC,CAAC,iBAAoB7H,GAAUU,MAAOrzB,EAAOgyB,IARlB,IAA6CA,EAAOzP,EAClFiY,EAMAx6B,CA6BE,EACA2E,SAAU,WACR,OAtEkB,SAA+BsH,EAAM+lB,EAAOzP,EAAY+X,GAClF,IAAIG,EAAkBP,GAAkC3X,GACpDmY,EAAiB7B,GAAa7G,GAClC,OAAOyI,EAAkB,IAAMxuB,EAAO,IAAMkoB,GAAmB,WAAesG,EAAkB,IAAMzF,GAAwB0F,EAAgBJ,GAAU,KAAOruB,EAAO,IAAM,IAAMA,EAAO,IAAMkoB,GAAmB,WAAea,GAAwB0F,EAAgBJ,GAAU,KAAOruB,EAAO,GACnS,CAkEiB0uB,CAAsB1uB,EAAMutB,EAAKxH,MAAOwH,EAAKrB,gBAAiBmC,EACvE,GAEJ,KAAK5H,GACL,KAAKA,GACH,MAAO,CACL6H,YAAa,WACX,OAAOJ,GAAqCX,EAC9C,EACA70B,SAAU,WACR,OAAOu1B,GAAkCV,EAC3C,GAEJ,QACE,MAAO,CACLe,YAAa,WACX,OA5CyB,SAAsCtuB,EAAMutB,GAC7E,OAAOA,EAAKvvB,KAAI,SAAU6D,EAAK7R,GAC7B,IAAI2+B,EACAC,IAAaD,EAAa,CAC5B3xB,IAAKhN,IACOk4B,KAAoB,EAAMyG,GAYxC,OAXA/+B,OAAOC,KAAKgS,GAAKnI,SAAQ,SAAUyzB,GACjC,IAAI0B,EAAkBvH,GAAc6F,IAAcA,EAClD,GAAI0B,IAAoBxH,IAA6BwH,IAAoBxH,GAAyB,CAChG,IAAIyH,EAAUjtB,EAAI+E,WAAa/E,EAAIiF,QACnC8nB,EAAUG,wBAA0B,CAClCC,OAAQF,EAEZ,MACEF,EAAUC,GAAmBhtB,EAAIsrB,EAErC,IACO,iBAAoBntB,EAAM4uB,EACnC,GACF,CAyBiBK,CAA6BjvB,EAAMutB,EAC5C,EACA70B,SAAU,WACR,OApFiB,SAA8BsH,EAAMutB,EAAMc,GACnE,OAAOd,EAAKvF,QAAO,SAAU3e,EAAKxH,GAChC,IAAIqtB,EAAgBt/B,OAAOC,KAAKgS,GAAK4nB,QAAO,SAAU0D,GACpD,QAASA,IAAc9F,IAA6B8F,IAAc9F,GACpE,IAAGW,QAAO,SAAUze,EAAQ4jB,GAC1B,IAAI7c,OAAiC,IAAnBzO,EAAIsrB,GAA6BA,EAAYA,EAAY,KAAQpE,GAAwBlnB,EAAIsrB,GAAYkB,GAAU,IACrI,OAAO9kB,EAASA,EAAS,IAAM+G,EAAOA,CACxC,GAAG,IACC6e,EAAattB,EAAI+E,WAAa/E,EAAIiF,SAAW,GAC7CsoB,GAAqD,IAArCnH,GAAkB/oB,QAAQc,GAC9C,OAAOqJ,EAAM,IAAMrJ,EAAO,IAAMkoB,GAAmB,WAAegH,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAOnvB,EAAO,IAC7I,GAAG,GACL,CAwEiBqvB,CAAqBrvB,EAAMutB,EAAMc,EAC1C,GAGR,EACI3wB,GAAmB,SAA0BmU,GAC/C,IAAI4Z,EAAU5Z,EAAK4Z,QACjBC,EAAiB7Z,EAAK6Z,eACtB2C,EAASxc,EAAKwc,OACd1C,EAAiB9Z,EAAK8Z,eACtBC,EAAW/Z,EAAK+Z,SAChBC,EAAWha,EAAKga,SAChBC,EAAeja,EAAKia,aACpBE,EAAana,EAAKma,WAClBC,EAAYpa,EAAKoa,UACjBqD,EAAazd,EAAKkU,MAClBA,OAAuBpnB,IAAf2wB,EAA2B,GAAKA,EACxCpD,EAAkBra,EAAKqa,gBACzB,MAAO,CACLqD,KAAMnB,GAAiB1H,GAAUC,KAAM8E,EAAS4C,GAChD3C,eAAgB0C,GAAiB3H,GAAsBiF,EAAgB2C,GACvE1C,eAAgByC,GAAiB3H,GAAsBkF,EAAgB0C,GACvE19B,KAAMy9B,GAAiB1H,GAAUK,KAAM6E,EAAUyC,GACjDmB,KAAMpB,GAAiB1H,GAAUM,KAAM6E,EAAUwC,GACjDoB,SAAUrB,GAAiB1H,GAAUO,SAAU6E,EAAcuC,GAC7DqB,OAAQtB,GAAiB1H,GAAUQ,OAAQ8E,EAAYqC,GACvDnqB,MAAOkqB,GAAiB1H,GAAUS,MAAO8E,EAAWoC,GACpDtI,MAAOqI,GAAiB1H,GAAUU,MAAO,CACvCrB,MAAOA,EACPmG,gBAAiBA,GAChBmC,GAEP,EA6MIsB,GA5MS,SAAgBC,GAC3B,IAAIC,EAAQC,EACZ,OAAOA,EAAQD,EAAS,SAAUE,GAEhC,SAASC,IAEP,OAlfe,SAAU/xB,EAAUwqB,GACvC,KAAMxqB,aAAoBwqB,GACxB,MAAM,IAAIwH,UAAU,oCAExB,CA6eMC,CAAel0B,KAAMg0B,GA1bK,SAAUhkB,EAAMpT,GAC9C,IAAKoT,EACH,MAAM,IAAImkB,eAAe,6DAE3B,OAAOv3B,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BoT,EAAPpT,CAC5E,CAsbaw3B,CAA0Bp0B,KAAM+zB,EAAiBrzB,MAAMV,KAAMhC,WACtE,CAuJA,OA1mBW,SAAUoE,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI4xB,UAAU,kEAAoE5xB,GAE1FD,EAAS3F,UAAY7I,OAAO0O,OAAOD,GAAcA,EAAW5F,UAAW,CACrEd,YAAa,CACXhE,MAAOyK,EACPnB,YAAY,EACZE,UAAU,EACVD,cAAc,KAGdmB,IAAYzO,OAAOygC,eAAiBzgC,OAAOygC,eAAejyB,EAAUC,GAAcD,EAASG,UAAYF,EAC7G,CAkcIiyB,CAASN,EAAeD,GAKxBC,EAAcv3B,UAAU83B,sBAAwB,SAA+BC,GAC7E,OAAQ,KAAQx0B,KAAKjI,MAAOy8B,EAC9B,EACAR,EAAcv3B,UAAUg4B,yBAA2B,SAAkC3tB,EAAO4tB,GAC1F,IAAKA,EACH,OAAO,KAET,OAAQ5tB,EAAM9C,MACZ,KAAK0mB,GAAUQ,OACf,KAAKR,GAAUO,SACb,MAAO,CACLrgB,UAAW8pB,GAEf,KAAKhK,GAAUS,MACb,MAAO,CACLrgB,QAAS4pB,GAGf,MAAM,IAAI/yB,MAAM,IAAMmF,EAAM9C,KAAO,qGACrC,EACAgwB,EAAcv3B,UAAUk4B,yBAA2B,SAAkC9e,GACnF,IAAI+e,EACA9tB,EAAQ+O,EAAK/O,MACf+tB,EAAoBhf,EAAKgf,kBACzBC,EAAgBjf,EAAKif,cACrBJ,EAAiB7e,EAAK6e,eACxB,OAAO9H,GAAS,CAAC,EAAGiI,IAAoBD,EAAwB,CAAC,GAAyB9tB,EAAM9C,MAAQ,GAAGR,OAAOqxB,EAAkB/tB,EAAM9C,OAAS,GAAI,CAAC4oB,GAAS,CAAC,EAAGkI,EAAe90B,KAAKy0B,yBAAyB3tB,EAAO4tB,MAAoBE,GAC/O,EACAZ,EAAcv3B,UAAUs4B,sBAAwB,SAA+BC,GAC7E,IAAIC,EAAwBC,EACxBpuB,EAAQkuB,EAAMluB,MAChBquB,EAAWH,EAAMG,SACjBL,EAAgBE,EAAMF,cACtBJ,EAAiBM,EAAMN,eACzB,OAAQ5tB,EAAM9C,MACZ,KAAK0mB,GAAUU,MACb,OAAOwB,GAAS,CAAC,EAAGuI,IAAWF,EAAyB,CAAC,GAA0BnuB,EAAM9C,MAAQ0wB,EAAgBO,EAAuB/E,gBAAkBtD,GAAS,CAAC,EAAGkI,GAAgBG,IACzL,KAAKvK,GAAUE,KACb,OAAOgC,GAAS,CAAC,EAAGuI,EAAU,CAC5BzF,eAAgB9C,GAAS,CAAC,EAAGkI,KAEjC,KAAKpK,GAAUI,KACb,OAAO8B,GAAS,CAAC,EAAGuI,EAAU,CAC5BxF,eAAgB/C,GAAS,CAAC,EAAGkI,KAGnC,OAAOlI,GAAS,CAAC,EAAGuI,IAAWD,EAAyB,CAAC,GAA0BpuB,EAAM9C,MAAQ4oB,GAAS,CAAC,EAAGkI,GAAgBI,GAChI,EACAlB,EAAcv3B,UAAU24B,4BAA8B,SAAqCP,EAAmBM,GAC5G,IAAIE,EAAoBzI,GAAS,CAAC,EAAGuI,GAKrC,OAJAvhC,OAAOC,KAAKghC,GAAmBn3B,SAAQ,SAAU43B,GAC/C,IAAIC,EACJF,EAAoBzI,GAAS,CAAC,EAAGyI,IAAoBE,EAAyB,CAAC,GAA0BD,GAAkBT,EAAkBS,GAAiBC,GAChK,IACOF,CACT,EACArB,EAAcv3B,UAAU+4B,sBAAwB,SAA+B1uB,EAAO4tB,GAgBpF,OAAO,CACT,EACAV,EAAcv3B,UAAUg5B,mBAAqB,SAA4Bv7B,EAAUi7B,GACjF,IAAIO,EAAS11B,KACT60B,EAAoB,CAAC,EAkCzB,OAjCA,YAAen3B,QAAQxD,GAAU,SAAU4M,GACzC,GAAKA,GAAUA,EAAM/O,MAArB,CAGA,IAAI49B,EAAe7uB,EAAM/O,MACvB28B,EAAiBiB,EAAaz7B,SAE5B46B,EA7L4B,SAA2C/8B,GACjF,IAAI69B,EAAiB53B,UAAUjK,OAAS,QAAsB4O,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC1F,OAAOpK,OAAOC,KAAKkE,GAAOi0B,QAAO,SAAU7uB,EAAK6D,GAE9C,OADA7D,EAAI4uB,GAAa/qB,IAAQA,GAAOjJ,EAAMiJ,GAC/B7D,CACT,GAAGy4B,EACL,CAuL4BC,CADL/I,GAAwB6I,EAAc,CAAC,cAGtD,OADAD,EAAOF,sBAAsB1uB,EAAO4tB,GAC5B5tB,EAAM9C,MACZ,KAAK0mB,GAAUK,KACf,KAAKL,GAAUM,KACf,KAAKN,GAAUO,SACf,KAAKP,GAAUQ,OACf,KAAKR,GAAUS,MACb0J,EAAoBa,EAAOf,yBAAyB,CAClD7tB,MAAOA,EACP+tB,kBAAmBA,EACnBC,cAAeA,EACfJ,eAAgBA,IAElB,MACF,QACES,EAAWO,EAAOX,sBAAsB,CACtCjuB,MAAOA,EACPquB,SAAUA,EACVL,cAAeA,EACfJ,eAAgBA,IAxBtB,CA4BF,IACAS,EAAWn1B,KAAKo1B,4BAA4BP,EAAmBM,EAEjE,EACAnB,EAAcv3B,UAAU0G,OAAS,WAC/B,IAAI4U,EAAS/X,KAAKjI,MAChBmC,EAAW6d,EAAO7d,SAClBnC,EAAQ+0B,GAAwB/U,EAAQ,CAAC,aACvCod,EAAWvI,GAAS,CAAC,EAAG70B,GAI5B,OAHImC,IACFi7B,EAAWn1B,KAAKy1B,mBAAmBv7B,EAAUi7B,IAExC,iBAAoBvB,EAAWuB,EACxC,EACA7I,GAAY0H,EAAe,KAAM,CAAC,CAChChzB,IAAK,YAuBL80B,IAAK,SAAgB10B,GACnBwyB,EAAUxyB,UAAYA,CACxB,KAEK4yB,CACT,CA7JwB,CA6JtB,cAAkBH,EAAOkC,UAAY,CACrCxC,KAAM,YACN7D,eAAgB,YAChBx1B,SAAU,eAAoB,CAAC,aAAkB,WAAiB,YAClE87B,aAAc,YACdC,MAAO,UACPlJ,wBAAyB,UACzB4C,eAAgB,YAChBh7B,KAAM,aAAkB,aACxB6+B,KAAM,aAAkB,aACxBC,SAAU,aAAkB,aAC5B1D,oBAAqB,UACrB2D,OAAQ,aAAkB,aAC1BxrB,MAAO,aAAkB,aACzB6hB,MAAO,YACPmG,gBAAiB,YACjBgG,cAAe,aACdrC,EAAOsC,aAAe,CACvBF,OAAO,EACPlJ,yBAAyB,GACxB8G,EAAOrxB,KAAOoxB,EAAUpxB,KAAMqxB,EAAOpxB,OAAS,WAC/C,IAAI2zB,EAAcxC,EAAUnxB,SAiB5B,OAhBK2zB,IAEHA,EAAc10B,GAAiB,CAC7B+tB,QAAS,GACTC,eAAgB,CAAC,EACjB3C,yBAAyB,EACzB4C,eAAgB,CAAC,EACjBC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdE,WAAY,GACZC,UAAW,GACXlG,MAAO,GACPmG,gBAAiB,CAAC,KAGfkG,CACT,EAAGtC,CACL,CAKmBuC,CADK,MAngBC,SAA4BpJ,GACnD,MAAO,CACLwC,QAAS9B,GAAwB,CAACtC,GAAqBA,IAAwB4B,GAC/EyC,eAAgBnC,GAA2B9C,GAAsBwC,GACjEgJ,MAAO9I,GAAqBF,EAAWnB,IACvCuG,OAAQlF,GAAqBF,EAAWnB,IACxC6D,eAAgBpC,GAA2B9C,GAAsBwC,GACjE2C,SAAU7B,GAAqBrD,GAAUK,KAAM,CAACM,GAAoBA,IAAsB4B,GAC1F4C,SAAU9B,GAAqBrD,GAAUM,KAAM,CAACK,GAAqBA,GAAwBA,GAA0BA,GAAyBA,IAA2B4B,GAC3K6C,aAAc/B,GAAqBrD,GAAUO,SAAU,CAACI,IAA4B4B,GACpF8C,oBAAqBzC,GAAuBL,GAC5C+C,WAAYjC,GAAqBrD,GAAUQ,OAAQ,CAACG,GAAoBA,IAA4B4B,GACpGgD,UAAWlC,GAAqBrD,GAAUS,MAAO,CAACE,IAA0B4B,GAC5ElD,MAAOiD,GAAsBC,GAC7BiD,gBAAiB3C,GAA2B9C,GAAuBwC,GAEvE,IAwB8B,SAAiCsC,GACzDF,IACFJ,GAAqBI,IAEnBE,EAAS0G,MACX5G,GAAkBR,IAAsB,WACtCS,GAAiBC,GAAU,WACzBF,GAAkB,IACpB,GACF,KAEAC,GAAiBC,GACjBF,GAAkB,KAEtB,GA6coF3tB,GAA5D,EAHJ,WAClB,OAAO,IACT,KAGAiyB,GAAa2C,aAAe3C,GAAalxB,OACzC,IC5vBA,GAAe,IAA0B,6FCwBzC,MAAM8zB,GAAOx+B,IAA8C,IAADy+B,EAAAC,EAExD,MAAM,YAAEC,EAAW,KAAEC,EAAI,KAAEnD,EAAI,MAAEzJ,GAAUH,MAAoB7xB,EACzDi+B,EAAe,eACfY,GAAW1jB,EAAAA,GAAAA,KACX2jB,EAAkBH,QAAAA,EAAeE,EAASF,YAIhD,OACE18B,EAAAA,GAAAA,KAACq8B,GAAM,CACL1G,eAAgB,CACdgH,KAAMA,QAAAA,EAAQ,MAEhB5M,MAAOA,EACPmM,cAAeF,EAAe,QAAQA,IAAiB,GACvDrhC,MAAImiC,EAAAA,GAAAA,GACC/+B,EAAMsyB,SAAW,CAAC,CACnB0M,IAAK,YACLC,KAAM,GAAGJ,EAASK,UAAUl/B,EAAMsyB,SAASC,aACxC,IAEPkJ,KAAO,CACL,CACEj2B,KAAM,WACNu1B,QAAS,uCAEX,CACEv1B,KAAM,cACNu1B,QAAS+D,GAEX,CACEt5B,KAAM,WACNu1B,QAAuB,QAAhB0D,EAAEz+B,EAAMm/B,gBAAQ,IAAAV,EAAAA,EAAII,EAASM,UAEtC,CACE1O,SAAU,WACVsK,QAAS/I,GAEX,CACEvB,SAAU,iBACVsK,QAAS+D,GAEX,CACErO,SAAU,UACVsK,QAAS,WAEX,CACEtK,SAAU,YACVsK,QAAS,SAEX,CACEtK,SAAU,WACVsK,QAAoB,QAAb2D,EAAE1+B,EAAMo/B,aAAK,IAAAV,EAAAA,EAAIW,IAE1B,CACE5O,SAAU,iBACVsK,QAAS,MAEX,CACEtK,SAAU,kBACVsK,QAAS,KAEX,CACEv1B,KAAM,eACNu1B,QAAS,WAEX,CACEv1B,KAAM,kBAENu1B,QAAS,IAEX,CACEv1B,KAAM,gBACNu1B,QAAS/I,GAEX,CACExsB,KAAM,sBACNu1B,QAAS+D,IAEyBrzB,OAAOgwB,QAAAA,EAAQ,KACrD,EAIN+C,GAAIJ,aAAe,CACjBQ,KAAM,KACNnD,KAAM,GACNkD,YAAa,IAUf,UC/FA,OAd8C3+B,IACrCiC,EAAAA,GAAAA,KAACC,GAAAA,GAAQ,CAACC,SAAUA,KACzBF,EAAAA,GAAAA,KAAA,UACEU,WAAWkF,EAAAA,GAAAA,GAAc,aAAc7H,EAAM2C,WAC7C28B,QAASt/B,EAAMs/B,QACftN,MAAOhyB,EAAMgyB,MACbxsB,KAAMxF,EAAMwF,KACZrD,SAEEnC,EAAMmC,aC6Hd,OArIuDnC,IACrD,MAAM,GAAEC,IAAOC,EAAAA,GAAAA,MAEf,OACE+B,EAAAA,GAAAA,KAACC,GAAAA,GAAQ,CACPC,SAAUA,KACRF,EAAAA,GAAAA,KAAAwwB,GAAAA,SAAA,CAAAtwB,UAMEO,EAAAA,GAAAA,MAACovB,GAAAA,EAAW,CACV/uB,GAAG,iBACH6E,GAAG,SACHjF,UAAU,iBACVkE,mBAAiB,EAAA1E,SAAA,EAEjBF,EAAAA,GAAAA,KAAA,UAAQU,UAAU,uBAAsBR,UACtCF,EAAAA,GAAAA,KAAA,MAAAE,UACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,IAAIk1B,MAAM,OAAM7vB,UAC/BF,EAAAA,GAAAA,KAACgwB,GAAe,CAACjuB,KAAM/D,EAAGO,SAASC,MAAQ,IAAM,GAAK,YAI5DiC,EAAAA,GAAAA,MAAA,OAAKC,UAAU,2BAA0BR,SAAA,EACvCO,EAAAA,GAAAA,MAAA,KAAAP,SAAA,EACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,QAAQk1B,MAAM,OAAM7vB,UACnCF,EAAAA,GAAAA,KAAA,UAAAE,UACEF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,cAGVF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,QAEPxvB,EAAAA,GAAAA,MAAA,KAAAP,SAAA,EACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,wBAAwBk1B,MAAM,WAAU7vB,UACvDF,EAAAA,GAAAA,KAAA,UAAAE,UACEF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,kBAGVF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,QAEPxvB,EAAAA,GAAAA,MAAA,KAAAP,SAAA,EACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,UAAUk1B,MAAM,SAAQ7vB,UACvCF,EAAAA,GAAAA,KAAA,UAAAE,UACEF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,gBAGVF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,OAENM,GAAAA,KACC9vB,EAAAA,GAAAA,MAAA,KAAAP,SAAA,EACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,YAAYk1B,MAAM,WAAU7vB,UAC3CF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,gBAERF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,QAGTxvB,EAAAA,GAAAA,MAAA,KAAAP,SAAA,EACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,WAAWk1B,MAAM,UAAS7vB,UACzCF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,eAERF,EAAAA,GAAAA,KAACiwB,GAAAA,EAAI,WAOTxvB,EAAAA,GAAAA,MAAA,OAAKC,UAAU,yBAAwBR,SAAA,EACrCF,EAAAA,GAAAA,KAAA,KAAAE,UACEO,EAAAA,GAAAA,MAAA,UAAAP,SAAA,EACEO,EAAAA,GAAAA,MAAA,QAAAP,SAAA,CAAM,IACF,KACFF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,IAAIk1B,MAAM,oBAAmB7vB,SAAC,iBAE/B,IAAI,WAEd,KACRF,EAAAA,GAAAA,KAAA,QAAAE,SAAM,+BAIVF,EAAAA,GAAAA,KAAA,KAAAE,UACEF,EAAAA,GAAAA,KAAA,UAAAE,SAAQ,gCAEVO,EAAAA,GAAAA,MAAA,KAAAP,SAAA,CAAG,mBACgB,KACjBF,EAAAA,GAAAA,KAAA,KACEg9B,KAAK,4DACL3iB,OAAO,SACP0iB,IAAI,aAAY78B,SACjB,oBAKLF,EAAAA,GAAAA,KAAA,UAAQU,UAAU,uBAAsBR,UACtCO,EAAAA,GAAAA,MAAA,MAAIC,UAAU,2BAA0BR,SAAA,EACtCF,EAAAA,GAAAA,KAAA,MAAAE,UACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CACXj1B,GAAG,0BACHk1B,MAAM,yBAAwB7vB,SAC/B,8BAIHF,EAAAA,GAAAA,KAAA,MAAAE,UACEF,EAAAA,GAAAA,KAACs9B,GAAU,CACTvN,MAAM,mBACNsN,QAASA,IAAMh2B,OAAOk2B,0BAA0Br9B,SACjD,wBAIHF,EAAAA,GAAAA,KAAA,MAAAE,UACEF,EAAAA,GAAAA,KAAC8vB,GAAAA,EAAY,CAACj1B,GAAG,SAASk1B,MAAM,QAAO7vB,SAAC,kBAO9CF,EAAAA,GAAAA,KAAA,OAAKU,UAAU,0CAAyCR,UACtDF,EAAAA,GAAAA,KAACkwB,GAAmB,CAACnuB,KAAM,aAKnC,6qBCxBN,OAzFgDhE,IAAU,IAADy/B,EACvD,MAAM7N,EAAOC,KACP1xB,GAAIC,EAAAA,GAAAA,IAASJ,IACb,GAAEC,IAAOC,EAAAA,GAAAA,MACTzC,GAAI4C,EAAAA,GAAAA,KAAS,MACjB,SAAIq/B,GAAS,IAADC,EACV,OAAkB,QAAlBA,EAAOx/B,EAAEy/B,iBAAS,IAAAD,OAAA,EAAXA,EAAaD,KACtB,EACA,mBAAIG,GAAmB,IAAD/hB,EAAAgiB,EAAAC,EACpB,OAAwD,QAAxDjiB,EAA4B,QAA5BgiB,EAAO9/B,EAAM6/B,uBAAe,IAAAC,EAAAA,EAAW,QAAXC,EAAItiC,EAAEiiC,aAAK,IAAAK,OAAA,EAAPA,EAASF,uBAAe,IAAA/hB,EAAAA,EAAIlgB,GAAAA,GAAaO,IAC3E,EACA,mBAAI6hC,GAAmB,IAAD/C,EAAAgD,EAAAC,EACpB,OAAwD,QAAxDjD,EAA4B,QAA5BgD,EAAOjgC,EAAMggC,uBAAe,IAAAC,EAAAA,EAAW,QAAXC,EAAIziC,EAAEiiC,aAAK,IAAAQ,OAAA,EAAPA,EAASF,uBAAe,IAAA/C,EAAAA,EAAIr/B,GAAAA,GAAaK,KAC3E,EACAkiC,oBAAqB,SAEjBC,GAA8BC,EAAAA,GAAAA,QAAuB,OAC3Dp/B,EAAAA,GAAAA,IAAW,MACRq/B,EAAAA,GAAAA,KAAK,YACJ,GAAIC,GAAAA,GAAa,OACjB,MAAMC,EAAuBC,GAAAA,GAAA,IACxB/hC,EAAAA,GAAAA,IAAqBf,GAAAA,GAAa+iC,GAAIjjC,EAAEoiC,mBACxCnhC,EAAAA,GAAAA,IAAqBf,GAAAA,GAAagjC,GAAIljC,EAAEuiC,kBAE7CnkC,OAAOoI,QAAQu8B,GAAyB76B,SAAQi7B,IAAmB,IAAjB33B,EAAKrJ,GAAMghC,EAC3Dr3B,SAASs3B,gBAAgB1wB,MAAM2wB,YAAY73B,EAAKrJ,EAAM,IAExD2J,SAASs3B,gBAAgBE,UAAUC,OAAO,SAAS3iC,EAAAA,GAAAA,IAAcZ,EAAEoiC,kBACnEt2B,SAASs3B,gBAAgBE,UAAUC,OAAO,OAAQC,GAAAA,KAAQ5iC,EAAAA,GAAAA,IAAcZ,EAAEuiC,kBAC1E//B,EAAGihC,GAAGC,aAAc9iC,EAAAA,GAAAA,IAAcZ,EAAEuiC,iBACpCz2B,SAASs3B,gBAAgBE,UAAUC,OAAO,OAAQvjC,EAAEoiC,kBAAoBjiC,GAAAA,GAAaE,MACrF,MAAM+E,GAAIuE,EAAAA,GAAAA,KACJg6B,EAAoB73B,SAAS83B,eAAe,yBAC5CrtB,EAA4BotB,QAAAA,EAAqB73B,SAASC,cAAc,OAuB9E,OAtBK43B,IACHptB,EAAU+O,aAAa,KAAM,yBAC7BxZ,SAAS+3B,KAAKC,QAAQvtB,IAExBvW,EAAE0iC,oBAAsBnsB,QAClBwtB,EAAAA,GAAAA,MACFpB,EAA4B9jC,UAC9BmlC,GAAAA,GAAU1D,IAAIqC,EAA4B9jC,QAAS,CAAEolC,QAAS,IAC9DD,GAAAA,GAAUE,OAAOvB,EAA4B9jC,QAASmF,GAAAA,EAAW,EAAI,EAAG,CACtEigC,QAAS,EACTE,MAAO,KACN,CACDF,QAAS,EACTE,MAAO,EACPC,KAAMC,GAAAA,GAAOC,YAGjBC,EAAAA,GAAAA,GAAuB5B,EAA6B,CAClDr9B,GAAI,2BACJk/B,OAAQ,IACRC,cAAeA,IAAMjiC,EAAGO,SAASC,MAAQ,MAEpCoC,EAAE4E,QACX,GAvCC64B,EAuCI,IAEP,MAAMlB,GAAQ+C,EAAAA,GAAAA,GAA8B,QAAtB1C,EAACz/B,EAAMoiC,uBAAe,IAAA3C,OAAA,EAArBA,EAAuBL,OAC9C,OAAOn9B,EAAAA,GAAAA,KAACC,GAAAA,GAAQ,CAACC,SAAUA,KAAA,IAAAkgC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACzBxgC,EAAAA,GAAAA,KAAAwwB,GAAAA,SAAA,CAAAtwB,SACK1E,EAAE0iC,sBAAwBf,GAAS3hC,EAAEoiC,iBAAoB6C,GAAAA,cAC1DzgC,EAAAA,GAAAA,KAAA,OACEU,UAAU,gCACV,yBAAwBivB,EAAK+Q,iBAC7Bj8B,IAAK05B,EACLjwB,MAAO,CAAE0vB,gBAAiBpiC,EAAEoiC,iBAAkB19B,SAE7Ci9B,IAASn9B,EAAAA,GAAAA,KAAA,OACRU,UAAU,+CACV,mBAAkB1C,EAAGO,SAASC,MAAQR,EAAGO,SAASE,OAAS,EAC3DyP,MAAO,CAAEuxB,QAAwC,QAAjCW,EAAS,QAATC,EAAE7kC,EAAEiiC,aAAK,IAAA4C,OAAA,EAAPA,EAASM,8BAAsB,IAAAP,EAAAA,EAAI,IAAIlgC,UAEzDF,EAAAA,GAAAA,KAAC4gC,GAAAA,EAAW,CACVzD,MAAOA,EACPpN,MAA4B,QAAvBuQ,EAAEviC,EAAMoiC,uBAAe,IAAAG,OAAA,EAArBA,EAAuBvQ,MAC9B8Q,IAA+B,QAA5BN,EAAuB,QAAvBC,EAAEziC,EAAMoiC,uBAAe,IAAAK,OAAA,EAArBA,EAAuBK,WAAG,IAAAN,EAAAA,EAAI,wBACnCO,UAAU,QACVC,eAAe,eAIrBvlC,EAAE0iC,qBACA,MACH,GACA,2kBC/FH5/B,GAAAA,IACFmb,EAAAA,GAAKC,eACHsnB,EAAAA,GACAvkB,EACApK,GAAAA,EACAqZ,IAQJ,MAGMuV,GAAcn8B,GAAAA,sBACP8qB,GAAiBA,KAAM5qB,EAAAA,GAAAA,YAAWi8B,IA8D/C,OAtDkDljC,IAEhD,MAAMG,GAAIC,EAAAA,GAAAA,IAASJ,GACbvC,GAAI4C,EAAAA,GAAAA,KAAS,MACjB8G,QAAmChH,OAE/B,GAAEF,IAAOC,EAAAA,GAAAA,MA0Bf,OAxBAe,EAAAA,GAAAA,IAAW,KACT,WACE,GAAIV,GAAAA,GAAW,CAAC,IAAD4iC,EACb55B,SAAS+3B,KAAKve,aAAa,oBAAgC,QAAbogB,EAAEhjC,EAAEwC,iBAAS,IAAAwgC,EAAAA,EAAI,IAC/D,MAAMC,GAAmBC,EAAAA,GAAAA,IAAgB,oBACrCC,GAAAA,KACFh6B,OAAOi6B,QAAU9lC,EAAE0J,SAErB,IACE,GAAIi8B,SAAAA,EAAkBI,uBAAgDC,GAAAA,KAAiBxjC,EAAGyjC,aAAiBp6B,OAAOq6B,GAAI,CAAC,IAADC,EAAAC,EACpH,MAAMtR,EAAoB,QAAZqR,EAAGnmC,EAAE0J,eAAO,IAAAy8B,OAAA,EAATA,EAAWtR,SAASC,eAC/BiP,EAAAA,GAAAA,IAAK,KACXl4B,OAAOq6B,GAAG,MAAO,OAAQpR,GACJ,QAArBsR,EAAAv6B,OAAOq6B,GAAGG,SAAS,UAAE,IAAAD,GAArBA,EAAuBE,KAAK,WAAYxR,EAC1C,EACAyR,EAAAA,GAAAA,KAAS,IAAM16B,OAAO26B,cAAc,IAAIC,MAAM,YAAY,IAC5D,CAAE,MAAOl4B,IACPm4B,EAAAA,GAAAA,IAAY,sBACZj/B,QAAQH,MAAMiH,EAChB,CACF,CACD,EApBD,EAoBI,KAGC/J,EAAAA,GAAAA,KAACC,GAAAA,GAAQ,CAACC,SAAUA,KACzBO,EAAAA,GAAAA,MAACwgC,GAAYv7B,SAAQ,CAAC/H,MAAOnC,EAAE0J,QAAQhF,SAAA,EACrCF,EAAAA,GAAAA,KAACu8B,GAAGiC,GAAA,GAAKzgC,KACT0C,EAAAA,GAAAA,MAAA,OAAKC,WACHkF,EAAAA,GAAAA,GACE,eACA7H,EAAM2C,UACNpC,GAAAA,GAAY,UAAY,OAE3B4B,SAAA,EACCF,EAAAA,GAAAA,KAACmiC,GAAM,IACLnkC,EAAGokC,YAAYC,mBAAoBriC,EAAAA,GAAAA,KAACsiC,GAAW9D,GAAA,GAAKzgC,KACtDiC,EAAAA,GAAAA,KAAA,QAAAE,SACGnC,EAAMmC,YAETF,EAAAA,GAAAA,KAACuiC,GAAc,WAGhB,wBC/FP,IAAIC,EAAc,EAAQ,MAMtBC,EAAkB,CAAC,EACvB,IAAK,IAAIz7B,KAAOw7B,EACVA,EAAY7/B,eAAeqE,KAC7By7B,EAAgBD,EAAYx7B,IAAQA,GAGxC,IAAIvD,EAAUpI,EAAOC,QAAU,CAC7BuY,IAAK,CACHjQ,SAAU,EACVC,OAAQ,OAEV8P,IAAK,CACH/P,SAAU,EACVC,OAAQ,OAEV6+B,IAAK,CACH9+B,SAAU,EACVC,OAAQ,OAEV+P,IAAK,CACHhQ,SAAU,EACVC,OAAQ,OAEV8+B,KAAM,CACJ/+B,SAAU,EACVC,OAAQ,QAEV++B,IAAK,CACHh/B,SAAU,EACVC,OAAQ,OAEVg/B,IAAK,CACHj/B,SAAU,EACVC,OAAQ,OAEVi/B,IAAK,CACHl/B,SAAU,EACVC,OAAQ,OAEVhG,IAAK,CACH+F,SAAU,EACVC,OAAQ,CAAC,QAEX4Q,QAAS,CACP7Q,SAAU,EACVC,OAAQ,CAAC,YAEXk/B,OAAQ,CACNn/B,SAAU,EACVC,OAAQ,CAAC,WAEXm/B,QAAS,CACPp/B,SAAU,EACVC,OAAQ,CAAC,YAEXo/B,IAAK,CACHr/B,SAAU,EACVC,OAAQ,CAAC,IAAK,IAAK,MAErBq/B,MAAO,CACLt/B,SAAU,EACVC,OAAQ,CAAC,MAAO,MAAO,QAEzB5H,KAAM,CACJ2H,SAAU,EACVC,OAAQ,CAAC,UAKb,IAAK,IAAI4P,KAAShQ,EAChB,GAAIA,EAAQd,eAAe8Q,GAAQ,CACjC,KAAM,aAAchQ,EAAQgQ,IAC1B,MAAM,IAAI9L,MAAM,8BAAgC8L,GAElD,KAAM,WAAYhQ,EAAQgQ,IACxB,MAAM,IAAI9L,MAAM,oCAAsC8L,GAExD,GAAIhQ,EAAQgQ,GAAO5P,OAAO9J,SAAW0J,EAAQgQ,GAAO7P,SAClD,MAAM,IAAI+D,MAAM,sCAAwC8L,GAE1D,IAAI7P,EAAWH,EAAQgQ,GAAO7P,SAC1BC,EAASJ,EAAQgQ,GAAO5P,cACrBJ,EAAQgQ,GAAO7P,gBACfH,EAAQgQ,GAAO5P,OACtBjK,OAAO+J,eAAeF,EAAQgQ,GAAQ,WAAY,CAChD9V,MAAOiG,IAEThK,OAAO+J,eAAeF,EAAQgQ,GAAQ,SAAU,CAC9C9V,MAAOkG,GAEX,CAEFJ,EAAQoQ,IAAIF,IAAM,SAAUE,GAC1B,IAMI7W,EAEAG,EARAkX,EAAIR,EAAI,GAAK,IACbS,EAAIT,EAAI,GAAK,IACbnS,EAAImS,EAAI,GAAK,IACbX,EAAM/O,KAAK+O,IAAImB,EAAGC,EAAG5S,GACrByR,EAAMhP,KAAKgP,IAAIkB,EAAGC,EAAG5S,GACrByhC,EAAQhwB,EAAMD,EAyBlB,OArBIC,IAAQD,EACVlW,EAAI,EACKqX,IAAMlB,EACfnW,GAAKsX,EAAI5S,GAAKyhC,EACL7uB,IAAMnB,EACfnW,EAAI,GAAK0E,EAAI2S,GAAK8uB,EACTzhC,IAAMyR,IACfnW,EAAI,GAAKqX,EAAIC,GAAK6uB,IAEpBnmC,EAAImH,KAAK+O,IAAQ,GAAJlW,EAAQ,MACb,IACNA,GAAK,KAEPG,GAAK+V,EAAMC,GAAO,EAQX,CAACnW,EAAO,KAPXmW,IAAQD,EACN,EACK/V,GAAK,GACVgmC,GAAShwB,EAAMD,GAEfiwB,GAAS,EAAIhwB,EAAMD,IAED,IAAJ/V,EACtB,EACAsG,EAAQoQ,IAAI6uB,IAAM,SAAU7uB,GAC1B,IAAIuvB,EACAC,EACAC,EACAtmC,EACAxB,EACA6Y,EAAIR,EAAI,GAAK,IACbS,EAAIT,EAAI,GAAK,IACbnS,EAAImS,EAAI,GAAK,IACb+B,EAAIzR,KAAKgP,IAAIkB,EAAGC,EAAG5S,GACnB6hC,EAAO3tB,EAAIzR,KAAK+O,IAAImB,EAAGC,EAAG5S,GAC1B8hC,EAAQ,SAAU7nB,GACpB,OAAQ/F,EAAI+F,GAAK,EAAI4nB,EAAO,EAC9B,EAqBA,OApBa,IAATA,EACFvmC,EAAIxB,EAAI,GAERA,EAAI+nC,EAAO3tB,EACXwtB,EAAOI,EAAMnvB,GACbgvB,EAAOG,EAAMlvB,GACbgvB,EAAOE,EAAM9hC,GACT2S,IAAMuB,EACR5Y,EAAIsmC,EAAOD,EACF/uB,IAAMsB,EACf5Y,EAAI,EAAI,EAAIomC,EAAOE,EACV5hC,IAAMkU,IACf5Y,EAAI,EAAI,EAAIqmC,EAAOD,GAEjBpmC,EAAI,EACNA,GAAK,EACIA,EAAI,IACbA,GAAK,IAGF,CAAK,IAAJA,EAAa,IAAJxB,EAAa,IAAJoa,EAC5B,EACAnS,EAAQoQ,IAAID,IAAM,SAAUC,GAC1B,IAAIQ,EAAIR,EAAI,GACRS,EAAIT,EAAI,GACRnS,EAAImS,EAAI,GAIZ,MAAO,CAHCpQ,EAAQoQ,IAAIF,IAAIE,GAAK,GAGd,KAFP,EAAI,IAAM1P,KAAK+O,IAAImB,EAAGlQ,KAAK+O,IAAIoB,EAAG5S,KAElB,KADxBA,EAAI,EAAI,EAAI,IAAMyC,KAAKgP,IAAIkB,EAAGlQ,KAAKgP,IAAImB,EAAG5S,KAE5C,EACA+B,EAAQoQ,IAAI8uB,KAAO,SAAU9uB,GAC3B,IAMIqS,EANA7R,EAAIR,EAAI,GAAK,IACbS,EAAIT,EAAI,GAAK,IACbnS,EAAImS,EAAI,GAAK,IASjB,MAAO,CAAK,MAHP,EAAIQ,GADT6R,EAAI/hB,KAAK+O,IAAI,EAAImB,EAAG,EAAIC,EAAG,EAAI5S,MACZ,EAAIwkB,IAAM,GAGR,MAFhB,EAAI5R,EAAI4R,IAAM,EAAIA,IAAM,GAEC,MADzB,EAAIxkB,EAAIwkB,IAAM,EAAIA,IAAM,GACU,IAAJA,EACrC,EAQAziB,EAAQoQ,IAAIY,QAAU,SAAUZ,GAC9B,IAAIyL,EAAWmjB,EAAgB5uB,GAC/B,GAAIyL,EACF,OAAOA,EAET,IACImkB,EATuBzsB,EAAGC,EAQ1BysB,EAAyBC,IAE7B,IAAK,IAAIlvB,KAAW+tB,EAClB,GAAIA,EAAY7/B,eAAe8R,GAAU,CACvC,IAAI9W,EAAQ6kC,EAAY/tB,GAGpBxa,GAfmB+c,EAeYnD,EAfToD,EAectZ,EAdrCwG,KAAKmT,IAAIN,EAAE,GAAKC,EAAE,GAAI,GAAK9S,KAAKmT,IAAIN,EAAE,GAAKC,EAAE,GAAI,GAAK9S,KAAKmT,IAAIN,EAAE,GAAKC,EAAE,GAAI,IAiB3Ehd,EAAWypC,IACbA,EAAyBzpC,EACzBwpC,EAAwBhvB,EAE5B,CAEF,OAAOgvB,CACT,EACAhgC,EAAQgR,QAAQZ,IAAM,SAAUY,GAC9B,OAAO+tB,EAAY/tB,EACrB,EACAhR,EAAQoQ,IAAI+uB,IAAM,SAAU/uB,GAC1B,IAAIQ,EAAIR,EAAI,GAAK,IACbS,EAAIT,EAAI,GAAK,IACbnS,EAAImS,EAAI,GAAK,IASjB,MAAO,CAAK,KAHA,OAHZQ,EAAIA,EAAI,OAAUlQ,KAAKmT,KAAKjD,EAAI,MAAS,MAAO,KAAOA,EAAI,OAGlC,OAFzBC,EAAIA,EAAI,OAAUnQ,KAAKmT,KAAKhD,EAAI,MAAS,MAAO,KAAOA,EAAI,OAErB,OADtC5S,EAAIA,EAAI,OAAUyC,KAAKmT,KAAK5V,EAAI,MAAS,MAAO,KAAOA,EAAI,QAItC,KAFT,MAAJ2S,EAAiB,MAAJC,EAAiB,MAAJ5S,GAEJ,KADlB,MAAJ2S,EAAiB,MAAJC,EAAiB,MAAJ5S,GAEpC,EACA+B,EAAQoQ,IAAIgvB,IAAM,SAAUhvB,GAC1B,IAAI+uB,EAAMn/B,EAAQoQ,IAAI+uB,IAAI/uB,GACtBmD,EAAI4rB,EAAI,GACR3rB,EAAI2rB,EAAI,GACR1rB,EAAI0rB,EAAI,GAaZ,OARA3rB,GAAK,IACLC,GAAK,QACLF,GAHAA,GAAK,QAGG,QAAW7S,KAAKmT,IAAIN,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,IAMlD,CAHH,KAFJC,EAAIA,EAAI,QAAW9S,KAAKmT,IAAIL,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,KAE3C,GACV,KAAOD,EAAIC,GACX,KAAOA,GAHXC,EAAIA,EAAI,QAAW/S,KAAKmT,IAAIJ,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,MAK3D,EACAzT,EAAQkQ,IAAIE,IAAM,SAAUF,GAC1B,IAGIiwB,EACAC,EACAC,EACAjwB,EACAL,EAPAxW,EAAI2W,EAAI,GAAK,IACbnY,EAAImY,EAAI,GAAK,IACbxW,EAAIwW,EAAI,GAAK,IAMjB,GAAU,IAANnY,EAEF,MAAO,CADPgY,EAAU,IAAJrW,EACOqW,EAAKA,GAOpBowB,EAAK,EAAIzmC,GAJP0mC,EADE1mC,EAAI,GACDA,GAAK,EAAI3B,GAET2B,EAAI3B,EAAI2B,EAAI3B,GAGnBqY,EAAM,CAAC,EAAG,EAAG,GACb,IAAK,IAAI7Z,EAAI,EAAGA,EAAI,EAAGA,KACrB8pC,EAAK9mC,EAAI,EAAI,IAAMhD,EAAI,IACd,GACP8pC,IAEEA,EAAK,GACPA,IAGAtwB,EADE,EAAIswB,EAAK,EACLF,EAAiB,GAAXC,EAAKD,GAAUE,EAClB,EAAIA,EAAK,EACZD,EACG,EAAIC,EAAK,EACZF,GAAMC,EAAKD,IAAO,EAAI,EAAIE,GAAM,EAEhCF,EAER/vB,EAAI7Z,GAAW,IAANwZ,EAEX,OAAOK,CACT,EACApQ,EAAQkQ,IAAI+uB,IAAM,SAAU/uB,GAC1B,IAAI3W,EAAI2W,EAAI,GACRnY,EAAImY,EAAI,GAAK,IACbxW,EAAIwW,EAAI,GAAK,IACbowB,EAAOvoC,EACPwoC,EAAO7/B,KAAKgP,IAAIhW,EAAG,KAQvB,OAJA3B,IADA2B,GAAK,IACK,EAAIA,EAAI,EAAIA,EACtB4mC,GAAQC,GAAQ,EAAIA,EAAO,EAAIA,EAGxB,CAAChnC,EAAQ,KADL,IAANG,EAAU,EAAI4mC,GAAQC,EAAOD,GAAQ,EAAIvoC,GAAK2B,EAAI3B,IAC9B,MAFpB2B,EAAI3B,GAAK,GAGhB,EACAiI,EAAQi/B,IAAI7uB,IAAM,SAAU6uB,GAC1B,IAAI1lC,EAAI0lC,EAAI,GAAK,GACblnC,EAAIknC,EAAI,GAAK,IACb9sB,EAAI8sB,EAAI,GAAK,IACbuB,EAAK9/B,KAAK4kB,MAAM/rB,GAAK,EACrBknC,EAAIlnC,EAAImH,KAAK4kB,MAAM/rB,GACnBkB,EAAI,IAAM0X,GAAK,EAAIpa,GACnB2oC,EAAI,IAAMvuB,GAAK,EAAIpa,EAAI0oC,GACvB/d,EAAI,IAAMvQ,GAAK,EAAIpa,GAAK,EAAI0oC,IAEhC,OADAtuB,GAAK,IACGquB,GACN,KAAK,EACH,MAAO,CAACruB,EAAGuQ,EAAGjoB,GAChB,KAAK,EACH,MAAO,CAACimC,EAAGvuB,EAAG1X,GAChB,KAAK,EACH,MAAO,CAACA,EAAG0X,EAAGuQ,GAChB,KAAK,EACH,MAAO,CAACjoB,EAAGimC,EAAGvuB,GAChB,KAAK,EACH,MAAO,CAACuQ,EAAGjoB,EAAG0X,GAChB,KAAK,EACH,MAAO,CAACA,EAAG1X,EAAGimC,GAEpB,EACA1gC,EAAQi/B,IAAI/uB,IAAM,SAAU+uB,GAC1B,IAIIsB,EACAnf,EACA1nB,EANAH,EAAI0lC,EAAI,GACRlnC,EAAIknC,EAAI,GAAK,IACb9sB,EAAI8sB,EAAI,GAAK,IACb0B,EAAOjgC,KAAKgP,IAAIyC,EAAG,KAUvB,OANAzY,GAAK,EAAI3B,GAAKoa,EAEdiP,EAAKrpB,EAAI4oC,EAIF,CAACpnC,EAAQ,KAFhB6nB,GADAA,IAFAmf,GAAQ,EAAIxoC,GAAK4oC,IAEH,EAAIJ,EAAO,EAAIA,IAClB,GAEc,KADzB7mC,GAAK,GAEP,EAGAsG,EAAQmQ,IAAIC,IAAM,SAAUD,GAC1B,IAII5Z,EACA4b,EACAsuB,EACAhgB,EAeA7P,EACAC,EACA5S,EAxBA1E,EAAI4W,EAAI,GAAK,IACbywB,EAAKzwB,EAAI,GAAK,IACd0wB,EAAK1wB,EAAI,GAAK,IACdoE,EAAQqsB,EAAKC,EAsBjB,OAfItsB,EAAQ,IACVqsB,GAAMrsB,EACNssB,GAAMtsB,GAIRksB,EAAI,EAAIlnC,GAFRhD,EAAImK,KAAK4kB,MAAM,EAAI/rB,IAGV,EAAJhD,IACHkqC,EAAI,EAAIA,GAEVhgB,EAAImgB,EAAKH,IALTtuB,EAAI,EAAI0uB,GAKUD,GAKVrqC,GACN,QACA,KAAK,EACL,KAAK,EACHqa,EAAIuB,EACJtB,EAAI4P,EACJxiB,EAAI2iC,EACJ,MACF,KAAK,EACHhwB,EAAI6P,EACJ5P,EAAIsB,EACJlU,EAAI2iC,EACJ,MACF,KAAK,EACHhwB,EAAIgwB,EACJ/vB,EAAIsB,EACJlU,EAAIwiB,EACJ,MACF,KAAK,EACH7P,EAAIgwB,EACJ/vB,EAAI4P,EACJxiB,EAAIkU,EACJ,MACF,KAAK,EACHvB,EAAI6P,EACJ5P,EAAI+vB,EACJ3iC,EAAIkU,EACJ,MACF,KAAK,EACHvB,EAAIuB,EACJtB,EAAI+vB,EACJ3iC,EAAIwiB,EAGR,MAAO,CAAK,IAAJ7P,EAAa,IAAJC,EAAa,IAAJ5S,EAC5B,EACA+B,EAAQk/B,KAAK9uB,IAAM,SAAU8uB,GAC3B,IAAIhnB,EAAIgnB,EAAK,GAAK,IACdjtB,EAAIitB,EAAK,GAAK,IACd1rB,EAAI0rB,EAAK,GAAK,IACdzc,EAAIyc,EAAK,GAAK,IAOlB,MAAO,CAAK,KAHR,EAAIx+B,KAAK+O,IAAI,EAAGyI,GAAK,EAAIuK,GAAKA,IAGb,KAFjB,EAAI/hB,KAAK+O,IAAI,EAAGwC,GAAK,EAAIwQ,GAAKA,IAEJ,KAD1B,EAAI/hB,KAAK+O,IAAI,EAAG+D,GAAK,EAAIiP,GAAKA,IAEpC,EACAziB,EAAQm/B,IAAI/uB,IAAM,SAAU+uB,GAC1B,IAGIvuB,EACAC,EACA5S,EALAsV,EAAI4rB,EAAI,GAAK,IACb3rB,EAAI2rB,EAAI,GAAK,IACb1rB,EAAI0rB,EAAI,GAAK,IAejB,OAVAtuB,GAAS,MAAL0C,EAAkB,OAAJC,EAAiB,MAAJC,EAC/BxV,EAAQ,MAAJsV,GAAkB,KAALC,EAAkB,MAAJC,EAG/B7C,GALAA,EAAQ,OAAJ2C,GAAkB,OAALC,GAAmB,MAALC,GAKvB,SAAY,MAAQ/S,KAAKmT,IAAIjD,EAAG,EAAM,KAAO,KAAY,MAAJA,EAC7DC,EAAIA,EAAI,SAAY,MAAQnQ,KAAKmT,IAAIhD,EAAG,EAAM,KAAO,KAAY,MAAJA,EAC7D5S,EAAIA,EAAI,SAAY,MAAQyC,KAAKmT,IAAI5V,EAAG,EAAM,KAAO,KAAY,MAAJA,EAItD,CAAK,KAHZ2S,EAAIlQ,KAAK+O,IAAI/O,KAAKgP,IAAI,EAAGkB,GAAI,IAGR,KAFrBC,EAAInQ,KAAK+O,IAAI/O,KAAKgP,IAAI,EAAGmB,GAAI,IAEC,KAD9B5S,EAAIyC,KAAK+O,IAAI/O,KAAKgP,IAAI,EAAGzR,GAAI,IAE/B,EACA+B,EAAQm/B,IAAIC,IAAM,SAAUD,GAC1B,IAAI5rB,EAAI4rB,EAAI,GACR3rB,EAAI2rB,EAAI,GACR1rB,EAAI0rB,EAAI,GAaZ,OARA3rB,GAAK,IACLC,GAAK,QACLF,GAHAA,GAAK,QAGG,QAAW7S,KAAKmT,IAAIN,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,IAMlD,CAHH,KAFJC,EAAIA,EAAI,QAAW9S,KAAKmT,IAAIL,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,KAE3C,GACV,KAAOD,EAAIC,GACX,KAAOA,GAHXC,EAAIA,EAAI,QAAW/S,KAAKmT,IAAIJ,EAAG,EAAI,GAAK,MAAQA,EAAI,GAAK,MAK3D,EACAzT,EAAQo/B,IAAID,IAAM,SAAUC,GAC1B,IAGI7rB,EACAC,EACAC,EALA/Z,EAAI0lC,EAAI,GAOZ7rB,EANQ6rB,EAAI,GAMJ,KADR5rB,GAAK9Z,EAAI,IAAM,KAEf+Z,EAAID,EANI4rB,EAAI,GAMA,IACZ,IAAI/nB,EAAK3W,KAAKmT,IAAIL,EAAG,GACjB4D,EAAK1W,KAAKmT,IAAIN,EAAG,GACjButB,EAAKpgC,KAAKmT,IAAIJ,EAAG,GAOrB,OANAD,EAAI6D,EAAK,QAAWA,GAAM7D,EAAI,GAAK,KAAO,MAC1CD,EAAI6D,EAAK,QAAWA,GAAM7D,EAAI,GAAK,KAAO,MAC1CE,EAAIqtB,EAAK,QAAWA,GAAMrtB,EAAI,GAAK,KAAO,MAInC,CAHPF,GAAK,OACLC,GAAK,IACLC,GAAK,QAEP,EACAzT,EAAQo/B,IAAIC,IAAM,SAAUD,GAC1B,IAII7lC,EAJAG,EAAI0lC,EAAI,GACRphC,EAAIohC,EAAI,GACRnhC,EAAImhC,EAAI,GAUZ,OALA7lC,EAAS,IADJmH,KAAK8a,MAAMvd,EAAGD,GACJ,EAAI0C,KAAK6X,IAChB,IACNhf,GAAK,KAGA,CAACG,EADJgH,KAAKsW,KAAKhZ,EAAIA,EAAIC,EAAIA,GACZ1E,EAChB,EACAyG,EAAQq/B,IAAID,IAAM,SAAUC,GAC1B,IAKI0B,EALArnC,EAAI2lC,EAAI,GACRnnB,EAAImnB,EAAI,GAQZ,OAHA0B,EAJQ1B,EAAI,GAIH,IAAM,EAAI3+B,KAAK6X,GAGjB,CAAC7e,EAFJwe,EAAIxX,KAAK2a,IAAI0lB,GACb7oB,EAAIxX,KAAKya,IAAI4lB,GAEnB,EACA/gC,EAAQoQ,IAAIkvB,OAAS,SAAUjoC,GAC7B,IAAIuZ,EAAIvZ,EAAK,GACTwZ,EAAIxZ,EAAK,GACT4G,EAAI5G,EAAK,GACT6C,EAAQ,KAAKqG,UAAYA,UAAU,GAAKP,EAAQoQ,IAAI6uB,IAAI5nC,GAAM,GAGlE,GAAc,KADd6C,EAAQwG,KAAKC,MAAMzG,EAAQ,KAEzB,OAAO,GAET,IAAI8mC,EAAO,IAAMtgC,KAAKC,MAAM1C,EAAI,MAAQ,EAAIyC,KAAKC,MAAMkQ,EAAI,MAAQ,EAAInQ,KAAKC,MAAMiQ,EAAI,MAItF,OAHc,IAAV1W,IACF8mC,GAAQ,IAEHA,CACT,EACAhhC,EAAQi/B,IAAIK,OAAS,SAAUjoC,GAG7B,OAAO2I,EAAQoQ,IAAIkvB,OAAOt/B,EAAQi/B,IAAI7uB,IAAI/Y,GAAOA,EAAK,GACxD,EACA2I,EAAQoQ,IAAImvB,QAAU,SAAUloC,GAC9B,IAAIuZ,EAAIvZ,EAAK,GACTwZ,EAAIxZ,EAAK,GACT4G,EAAI5G,EAAK,GAIb,OAAIuZ,IAAMC,GAAKA,IAAM5S,EACf2S,EAAI,EACC,GAELA,EAAI,IACC,IAEFlQ,KAAKC,OAAOiQ,EAAI,GAAK,IAAM,IAAM,IAE/B,GAAK,GAAKlQ,KAAKC,MAAMiQ,EAAI,IAAM,GAAK,EAAIlQ,KAAKC,MAAMkQ,EAAI,IAAM,GAAKnQ,KAAKC,MAAM1C,EAAI,IAAM,EAEpG,EACA+B,EAAQs/B,OAAOlvB,IAAM,SAAU/Y,GAC7B,IAAI6B,EAAQ7B,EAAO,GAGnB,GAAc,IAAV6B,GAAyB,IAAVA,EAKjB,OAJI7B,EAAO,KACT6B,GAAS,KAGJ,CADPA,EAAQA,EAAQ,KAAO,IACRA,EAAOA,GAExB,IAAI+nC,EAA6B,IAAL,KAAb5pC,EAAO,KAItB,MAAO,EAHU,EAAR6B,GAAa+nC,EAAO,KACpB/nC,GAAS,EAAI,GAAK+nC,EAAO,KACzB/nC,GAAS,EAAI,GAAK+nC,EAAO,IAEpC,EACAjhC,EAAQu/B,QAAQnvB,IAAM,SAAU/Y,GAE9B,GAAIA,GAAQ,IAAK,CACf,IAAI6gB,EAAmB,IAAd7gB,EAAO,KAAY,EAC5B,MAAO,CAAC6gB,EAAGA,EAAGA,EAChB,CAEA,IAAIgpB,EAIJ,OALA7pC,GAAQ,GAKD,CAHCqJ,KAAK4kB,MAAMjuB,EAAO,IAAM,EAAI,IAC5BqJ,KAAK4kB,OAAO4b,EAAM7pC,EAAO,IAAM,GAAK,EAAI,IACxC6pC,EAAM,EAAI,EAAI,IAExB,EACAlhC,EAAQoQ,IAAIhW,IAAM,SAAU/C,GAC1B,IACIyY,KADkC,IAAtBpP,KAAKC,MAAMtJ,EAAK,MAAe,MAA8B,IAAtBqJ,KAAKC,MAAMtJ,EAAK,MAAe,IAA4B,IAAtBqJ,KAAKC,MAAMtJ,EAAK,MACvF4H,SAAS,IAAI4Q,cAClC,MAAO,SAASI,UAAUH,EAAOxZ,QAAUwZ,CAC7C,EACA9P,EAAQ5F,IAAIgW,IAAM,SAAU/Y,GAC1B,IAAIkI,EAAQlI,EAAK4H,SAAS,IAAIM,MAAM,4BACpC,IAAKA,EACH,MAAO,CAAC,EAAG,EAAG,GAEhB,IAAI0R,EAAc1R,EAAM,GACA,IAApBA,EAAM,GAAGjJ,SACX2a,EAAcA,EAAY1I,MAAM,IAAIhE,KAAI,SAAU48B,GAChD,OAAOA,EAAOA,CAChB,IAAGnnC,KAAK,KAEV,IAAIonC,EAAU7wB,SAASU,EAAa,IAIpC,MAAO,CAHCmwB,GAAW,GAAK,IAChBA,GAAW,EAAI,IACL,IAAVA,EAEV,EACAphC,EAAQoQ,IAAIovB,IAAM,SAAUpvB,GAC1B,IAOI5W,EAPAoX,EAAIR,EAAI,GAAK,IACbS,EAAIT,EAAI,GAAK,IACbnS,EAAImS,EAAI,GAAK,IACbV,EAAMhP,KAAKgP,IAAIhP,KAAKgP,IAAIkB,EAAGC,GAAI5S,GAC/BwR,EAAM/O,KAAK+O,IAAI/O,KAAK+O,IAAImB,EAAGC,GAAI5S,GAC/BiV,EAASxD,EAAMD,EAmBnB,OAVEjW,EADE0Z,GAAU,EACN,EACGxD,IAAQkB,GACVC,EAAI5S,GAAKiV,EAAS,EAChBxD,IAAQmB,EACX,GAAK5S,EAAI2S,GAAKsC,EAEd,GAAKtC,EAAIC,GAAKqC,EAAS,EAE/B1Z,GAAO,EAEA,CAAO,KADdA,GAAO,GACqB,IAAT0Z,EAA0B,KAhBzCA,EAAS,EACCzD,GAAO,EAAIyD,GAEX,GAchB,EACAlT,EAAQkQ,IAAIsvB,IAAM,SAAUtvB,GAC1B,IAAInY,EAAImY,EAAI,GAAK,IACbxW,EAAIwW,EAAI,GAAK,IACbgI,EAAI,EACJuoB,EAAI,EASR,OAPEvoB,EADExe,EAAI,GACF,EAAM3B,EAAI2B,EAEV,EAAM3B,GAAK,EAAM2B,IAEf,IACN+mC,GAAK/mC,EAAI,GAAMwe,IAAM,EAAMA,IAEtB,CAAChI,EAAI,GAAQ,IAAJgI,EAAa,IAAJuoB,EAC3B,EACAzgC,EAAQi/B,IAAIO,IAAM,SAAUP,GAC1B,IAAIlnC,EAAIknC,EAAI,GAAK,IACb9sB,EAAI8sB,EAAI,GAAK,IACb/mB,EAAIngB,EAAIoa,EACRsuB,EAAI,EAIR,OAHIvoB,EAAI,IACNuoB,GAAKtuB,EAAI+F,IAAM,EAAIA,IAEd,CAAC+mB,EAAI,GAAQ,IAAJ/mB,EAAa,IAAJuoB,EAC3B,EACAzgC,EAAQw/B,IAAIpvB,IAAM,SAAUovB,GAC1B,IAAIjmC,EAAIimC,EAAI,GAAK,IACbtnB,EAAIsnB,EAAI,GAAK,IACb3uB,EAAI2uB,EAAI,GAAK,IACjB,GAAU,IAANtnB,EACF,MAAO,CAAK,IAAJrH,EAAa,IAAJA,EAAa,IAAJA,GAE5B,IAIIwwB,EAJAC,EAAO,CAAC,EAAG,EAAG,GACdd,EAAKjnC,EAAI,EAAI,EACb4Y,EAAIquB,EAAK,EACTnrB,EAAI,EAAIlD,EAEZ,OAAQzR,KAAK4kB,MAAMkb,IACjB,KAAK,EACHc,EAAK,GAAK,EACVA,EAAK,GAAKnvB,EACVmvB,EAAK,GAAK,EACV,MACF,KAAK,EACHA,EAAK,GAAKjsB,EACVisB,EAAK,GAAK,EACVA,EAAK,GAAK,EACV,MACF,KAAK,EACHA,EAAK,GAAK,EACVA,EAAK,GAAK,EACVA,EAAK,GAAKnvB,EACV,MACF,KAAK,EACHmvB,EAAK,GAAK,EACVA,EAAK,GAAKjsB,EACVisB,EAAK,GAAK,EACV,MACF,KAAK,EACHA,EAAK,GAAKnvB,EACVmvB,EAAK,GAAK,EACVA,EAAK,GAAK,EACV,MACF,QACEA,EAAK,GAAK,EACVA,EAAK,GAAK,EACVA,EAAK,GAAKjsB,EAGd,OADAgsB,GAAM,EAAMnpB,GAAKrH,EACV,CAAsB,KAApBqH,EAAIopB,EAAK,GAAKD,GAAgC,KAApBnpB,EAAIopB,EAAK,GAAKD,GAAgC,KAApBnpB,EAAIopB,EAAK,GAAKD,GAC7E,EACArhC,EAAQw/B,IAAIP,IAAM,SAAUO,GAC1B,IAAItnB,EAAIsnB,EAAI,GAAK,IAEbrtB,EAAI+F,EADAsnB,EAAI,GAAK,KACA,EAAMtnB,GACnBuoB,EAAI,EAIR,OAHItuB,EAAI,IACNsuB,EAAIvoB,EAAI/F,GAEH,CAACqtB,EAAI,GAAQ,IAAJiB,EAAa,IAAJtuB,EAC3B,EACAnS,EAAQw/B,IAAItvB,IAAM,SAAUsvB,GAC1B,IAAItnB,EAAIsnB,EAAI,GAAK,IAEb9lC,EADI8lC,EAAI,GAAK,KACJ,EAAMtnB,GAAK,GAAMA,EAC1BngB,EAAI,EAMR,OALI2B,EAAI,GAAOA,EAAI,GACjB3B,EAAImgB,GAAK,EAAIxe,GACJA,GAAK,IAAOA,EAAI,IACzB3B,EAAImgB,GAAK,GAAK,EAAIxe,KAEb,CAAC8lC,EAAI,GAAQ,IAAJznC,EAAa,IAAJ2B,EAC3B,EACAsG,EAAQw/B,IAAIrvB,IAAM,SAAUqvB,GAC1B,IAAItnB,EAAIsnB,EAAI,GAAK,IAEbrtB,EAAI+F,EADAsnB,EAAI,GAAK,KACA,EAAMtnB,GACvB,MAAO,CAACsnB,EAAI,GAAc,KAATrtB,EAAI+F,GAAoB,KAAT,EAAI/F,GACtC,EACAnS,EAAQmQ,IAAIqvB,IAAM,SAAUrvB,GAC1B,IAAIkF,EAAIlF,EAAI,GAAK,IAEbgC,EAAI,EADAhC,EAAI,GAAK,IAEb+H,EAAI/F,EAAIkD,EACRxE,EAAI,EAIR,OAHIqH,EAAI,IACNrH,GAAKsB,EAAI+F,IAAM,EAAIA,IAEd,CAAC/H,EAAI,GAAQ,IAAJ+H,EAAa,IAAJrH,EAC3B,EACA7Q,EAAQy/B,MAAMrvB,IAAM,SAAUqvB,GAC5B,MAAO,CAACA,EAAM,GAAK,MAAQ,IAAKA,EAAM,GAAK,MAAQ,IAAKA,EAAM,GAAK,MAAQ,IAC7E,EACAz/B,EAAQoQ,IAAIqvB,MAAQ,SAAUrvB,GAC5B,MAAO,CAACA,EAAI,GAAK,IAAM,MAAOA,EAAI,GAAK,IAAM,MAAOA,EAAI,GAAK,IAAM,MACrE,EACApQ,EAAQxH,KAAK4X,IAAM,SAAU/Y,GAC3B,MAAO,CAACA,EAAK,GAAK,IAAM,IAAKA,EAAK,GAAK,IAAM,IAAKA,EAAK,GAAK,IAAM,IACpE,EACA2I,EAAQxH,KAAK0X,IAAMlQ,EAAQxH,KAAKymC,IAAM,SAAU5nC,GAC9C,MAAO,CAAC,EAAG,EAAGA,EAAK,GACrB,EACA2I,EAAQxH,KAAK2X,IAAM,SAAU3X,GAC3B,MAAO,CAAC,EAAG,IAAKA,EAAK,GACvB,EACAwH,EAAQxH,KAAK0mC,KAAO,SAAU1mC,GAC5B,MAAO,CAAC,EAAG,EAAG,EAAGA,EAAK,GACxB,EACAwH,EAAQxH,KAAK4mC,IAAM,SAAU5mC,GAC3B,MAAO,CAACA,EAAK,GAAI,EAAG,EACtB,EACAwH,EAAQxH,KAAK4B,IAAM,SAAU5B,GAC3B,IAAIuX,EAAwC,IAAlCrP,KAAKC,MAAMnI,EAAK,GAAK,IAAM,KAEjCsX,IADWC,GAAO,KAAOA,GAAO,GAAKA,GACpB9Q,SAAS,IAAI4Q,cAClC,MAAO,SAASI,UAAUH,EAAOxZ,QAAUwZ,CAC7C,EACA9P,EAAQoQ,IAAI5X,KAAO,SAAU4X,GAE3B,MAAO,EADIA,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EACzB,IAAM,IACtB","sources":["webpack://axon-division/./node_modules/color/node_modules/color-convert/route.js","webpack://axon-division/./src/utils/string.utils.ts","webpack://axon-division/./src/utils/colors.utils.ts","webpack://axon-division/./src/components/TricolorMorphDef/TricolorMorphDef.tsx","webpack://axon-division/./node_modules/react-fast-compare/index.js","webpack://axon-division/./node_modules/simple-swizzle/node_modules/is-arrayish/index.js","webpack://axon-division/./node_modules/color/node_modules/color-convert/index.js","webpack://axon-division/./src/components/PageSection/PageSection.tsx","webpack://axon-division/./src/utils/debounce.utils.ts","webpack://axon-division/./node_modules/color/node_modules/color-name/index.js","webpack://axon-division/./node_modules/react-side-effect/lib/index.js","webpack://axon-division/./node_modules/simple-swizzle/index.js","webpack://axon-division/./node_modules/gsap/utils/strings.js","webpack://axon-division/./node_modules/gsap/SplitText.js","webpack://axon-division/./node_modules/color-string/index.js","webpack://axon-division/./node_modules/color/index.js","webpack://axon-division/./src/hooks/useSiteMetadata.hook.ts","webpack://axon-division/./node_modules/color-name/index.js","webpack://axon-division/./node_modules/gsap/DrawSVGPlugin.js","webpack://axon-division/./node_modules/gsap/utils/paths.js","webpack://axon-division/./node_modules/gsap/MorphSVGPlugin.js","webpack://axon-division/./src/components/LogoPartialAxon.tsx","webpack://axon-division/./src/components/LogoPartialDivision.tsx","webpack://axon-division/./src/components/NavBar/NavBar.tsx","webpack://axon-division/./node_modules/react-helmet/es/Helmet.js","webpack://axon-division/./src/content/images/axon/axondivision-social-sharing-preview.jpg","webpack://axon-division/./src/components/SEO.tsx","webpack://axon-division/./src/components/PseudoLink/PseudoLink.tsx","webpack://axon-division/./src/components/StandardFooter/StandardFooter.tsx","webpack://axon-division/./src/components/ThemeSetter/ThemeSetter.tsx","webpack://axon-division/./src/components/PageTemplate/PageTemplate.tsx","webpack://axon-division/./node_modules/color/node_modules/color-convert/conversions.js"],"sourcesContent":["var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n var graph = {};\n // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n var models = Object.keys(conversions);\n for (var len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n var graph = buildGraph();\n var queue = [fromModel]; // unshift -> queue -> pop\n\n graph[fromModel].distance = 0;\n while (queue.length) {\n var current = queue.pop();\n var adjacents = Object.keys(conversions[current]);\n for (var len = adjacents.length, i = 0; i < len; i++) {\n var adjacent = adjacents[i];\n var node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n}\nfunction link(from, to) {\n return function (args) {\n return to(from(args));\n };\n}\nfunction wrapConversion(toModel, graph) {\n var path = [graph[toModel].parent, toModel];\n var fn = conversions[graph[toModel].parent][toModel];\n var cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n}\nmodule.exports = function (fromModel) {\n var graph = deriveBFS(fromModel);\n var conversion = {};\n var models = Object.keys(graph);\n for (var len = models.length, i = 0; i < len; i++) {\n var toModel = models[i];\n var node = graph[toModel];\n if (node.parent === null) {\n // no possible conversion, or this node is the source model.\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n};","import { isNil } from \"./ramdaEquivalents.utils\";\n\nexport const toLowerCase = (s: string) => isNil(s) ? '' : s.toLowerCase();\n","import Color from \"color\";\nimport { toLowerCase } from \"./string.utils\";\n\nexport enum ContextColor {\n fg = 'fg',\n bg = 'bg',\n primary = 'primary',\n // Alert = 'alert',\n // Attention = 'attention',\n // Neutral = 'neutral',\n // Positive = 'positive',\n}\n\nexport const ColorPalette = {\n red: '#e84e2c',\n blue: '#0710E9',\n green: '#A6FF14',\n white: '#FFFFFF',\n ivory: '#FDEEE0',\n gray: '#4D4C51',\n dark: '#141316',\n black: '#000000',\n}\nexport type ColorName = keyof typeof ColorPalette;\n\nexport const CSSColorKeywords = ['inherit', 'transparent', 'currentColor'];\nexport const isCSSColorKeyword = (s?: Sometimes) => {\n if (!s) return false;\n return CSSColorKeywords.includes(s);\n}\n\nexport const isBrightColor = (colorHex?: string | null) => colorHex ? Color(colorHex || '#000').luminosity() >= .48 : false;\n\nexport function getContrastColorHex(colorHex?: string | null) {\n return isBrightColor(colorHex) ? ColorPalette.black : ColorPalette.white;\n}\n\nexport function isHexCode(input?: string | null) {\n if (!input) return false;\n return /^#[0-9A-F]{6}$/i.test(input) || /^#[0-9A-F]{3}$/i.test(input) || /^#[0-9A-F]{8}$/i.test(input);\n}\n\nexport function getContextColorStyle(contextColorName?: ContextColor, color?: string | null): Record {\n if (!contextColorName || !color) {\n // console.warn('useContextColorStyle must be supplied with both a context color name and color name.');\n return {} as Record;\n }\n const colorName = toLowerCase(contextColorName);\n if (isHexCode(color)) {\n const colorObj = Color(color);\n const h = colorObj.hue();\n const s = colorObj.saturationl() + '%';\n const l = colorObj.lightness() + '%';\n const contrastColor = Color(getContrastColorHex(color));\n const ch = contrastColor.hue();\n const cs = contrastColor.saturationl() + '%';\n const cl = contrastColor.lightness() + '%';\n return {\n [`--${colorName}-h`]: h + '',\n [`--${colorName}-s`]: s,\n [`--${colorName}-l`]: l,\n [`--${colorName}-hsl`]: [h, s, l].join(','),\n [`--${colorName}_h`]: ch + '',\n [`--${colorName}_s`]: cs,\n [`--${colorName}_l`]: cl,\n [`--${colorName}_hsl`]: [ch, cs, cl].join(','),\n }\n } else {\n return {\n [`--${colorName}-h`]: `var(--${color}-h)`,\n [`--${colorName}-s`]: `var(--${color}-s)`,\n [`--${colorName}-l`]: `var(--${color}-l)`,\n [`--${colorName}-hsl`]: `var(--${color}-hsl)`,\n [`--${colorName}_h`]: `var(--${color}_h)`,\n [`--${colorName}_s`]: `var(--${color}_s)`,\n [`--${colorName}_l`]: `var(--${color}_l)`,\n [`--${colorName}_hsl`]: `var(--${color}_hsl)`,\n }\n }\n}\n\nexport const brighten = (color: string, value: number = .5) => Color(color).lighten(value).hex();\nexport const darken = (color: string, value: number = .5) => Color(color).darken(value).hex();","import { reaction, when } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { defaultTricolorPaths } from '../../controllers/decoTricolor.controller';\nimport { isBrowser } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { debounce } from '../../utils/debounce.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport { highPerf } from '../../utils/performance.utils';\nimport './TricolorMorphDef.scss';\n\ntype TricolorMorphDefProps = {\n mobile?: {\n R?: string,\n G?: string,\n B?: string,\n },\n desktop?: {\n R?: string,\n G?: string,\n B?: string,\n }\n}\n\n/**\n * This component renders the 'target' paths for the R/G/B tricolor background graphics to morph into. \n * There should only be one of those elements rendered onto the page at the same time. \n */\nconst TricolorMorphDef: React.FC = props => {\n\n const { UI } = useAppContext();\n const p = useProps(props);\n const s = useStore(() => ({\n get useMobileRatio() {\n return isBrowser && UI.viewport.width < 640;\n },\n get width() {\n return s.useMobileRatio ? 375 : 1194;\n },\n get height() {\n return s.useMobileRatio ? 812 : 834;\n },\n get viewBox() {\n return [0,0,s.width,s.height].join(' ');\n },\n get def() {\n return s.useMobileRatio ? p.mobile ?? p.desktop : p.desktop ?? p.mobile;\n },\n }))\n\n useOnMount(() => {\n const morph = () => {\n UI.tricolor?.morph({\n red: '#TRICOLOR_R_DEST',\n green: '#TRICOLOR_G_DEST',\n blue: '#TRICOLOR_B_DEST',\n duration: highPerf ? (!s.def?.R && !s.def?.G && !s.def?.B ? .38 : 1) : 0,\n });\n }\n if (isBrowser) {\n when(() => UI.ready, morph);\n\n // since the browser must ask for permission to get `deviceOrientationEvent`s, we are not going to include the following in final release.\n\n // window.addEventListener('touchend', () => {\n // DeviceOrientationEvent?.requestPermission?.().then(permissionState => {\n // if (permissionState === 'granted') {\n // const handleOrientation = (e: DeviceOrientationEvent) => {\n // let beta = e.beta ?? 0; // In degree in range [-180,180) around x axis\n // let gamma = e.gamma ?? 0; // In degree in range [-90, 90) around y axis\n // // Because we don't want to have the device upside down, we constrain the x value to the range [-90,90]\n // if (beta > 90) { beta = 90 };\n // if (beta < -90) { beta = -90 };\n // Array.from(document.querySelectorAll('.DecoTricolorContainer path')).forEach((path, i) => {\n // const deltaX = gamma * ((i + 3) / 7);\n // const deltaY = beta * ((i + 3) / 7);\n // TweenLite.to(path, 1, { x: deltaX, y: deltaY });\n // })\n // }\n // window.addEventListener('deviceorientation', handleOrientation);\n // }\n // })\n // }, { once: true })\n\n return reaction(\n () => s.useMobileRatio,\n debounce(morph, 500)\n )\n }\n })\n\n return (\n UI.ready ? \n \n \n \n : null\n )} />\n\n}\n\nexport default TricolorMorphDef;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","module.exports = function isArrayish(obj) {\n if (!obj || typeof obj === 'string') {\n return false;\n }\n return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && (obj.splice instanceof Function || Object.getOwnPropertyDescriptor(obj, obj.length - 1) && obj.constructor.name !== 'String');\n};","var conversions = require('./conversions');\nvar route = require('./route');\nvar convert = {};\nvar models = Object.keys(conversions);\nfunction wrapRaw(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n return fn(args);\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n}\nfunction wrapRounded(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n var result = fn(args);\n\n // we're assuming the result is an array here.\n // see notice in conversions.js; don't use box types\n // in conversion functions.\n if (typeof result === 'object') {\n for (var len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n}\nmodels.forEach(function (fromModel) {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], 'channels', {\n value: conversions[fromModel].channels\n });\n Object.defineProperty(convert[fromModel], 'labels', {\n value: conversions[fromModel].labels\n });\n var routes = route(fromModel);\n var routeModels = Object.keys(routes);\n routeModels.forEach(function (toModel) {\n var fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n});\nmodule.exports = convert;","import { action, observable } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React, { useContext } from 'react';\nimport { isBrowser } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { ObservableRef, useObservableRef } from '../../hooks/useObservableRef.hook';\nimport joinClassName from '../../utils/className.utils';\nimport { makeDisposerController } from '../../utils/disposer.utils';\nimport { useStore } from '../../utils/mobx.utils';\nimport { observeVisibility } from '../../utils/visibilityObserver.util';\nimport './PageSection.scss';\n\ntype PageSectionProps = {\n id: string,\n as?: 'section' | 'header' | 'footer' | 'article' | 'nav',\n className?: string,\n observeVisibility?: boolean,\n}\n\nconst makePageSectionController = (ref?: ObservableRef, props?: PageSectionProps) => {\n return observable({\n id: props?.id,\n ref,\n visible: isBrowser ? ref && observeVisibility ? false : true : true,\n })\n}\n\nexport type PageSectionContext = ReturnType;\nconst PageSectionContext = React.createContext(makePageSectionController());\nexport const usePageSectionContext = () => useContext(PageSectionContext);\n\nconst PageSection: React.FC = props => {\n const ref = useObservableRef();\n const s = useStore(() => ({\n context: makePageSectionController(ref, props),\n }))\n useOnMount(() => {\n const d = makeDisposerController();\n if (isBrowser && props.observeVisibility) d.add(\n observeVisibility(ref, {\n id: props.id,\n onBecomeVisible: action(() => s.context.visible = true),\n onBecomeInvisible: action(() => s.context.visible = false),\n })\n );\n return d.disposer\n })\n return \n {\n React.createElement(\n props.as ?? 'section',\n {\n id: props.id,\n className: joinClassName('PageSection', props.className),\n ref,\n children:
\n {props.children}\n
\n }\n )\n }\n
} />\n}\n\nexport default PageSection;","import { isObject } from \"./typeChecks.utils\";\n\ntype DebouncerOptions = {\n scope?: Function,\n timeout?: number,\n fireImmediately?: boolean | Function,\n resetAfter?: number,\n}\nexport function debounce(\n fn: T,\n options: number | DebouncerOptions = {},\n): T {\n const {\n timeout = 500,\n // @ts-ignore\n scope = this,\n fireImmediately,\n resetAfter\n } = isObject(options) ? options : { timeout: options } as DebouncerOptions;\n let timer: any;\n let hasFiredImmediately = false;\n let hasFiredResetTimer: any;\n const doAfterFireImmediately = () => {\n hasFiredImmediately = true;\n if (resetAfter) {\n hasFiredResetTimer && clearTimeout(hasFiredResetTimer);\n hasFiredResetTimer = setTimeout(() => hasFiredImmediately = false, resetAfter);\n }\n }\n // @ts-ignore\n return (...args) => {\n const fire = () => fn.apply(scope, args);\n if (fireImmediately && !hasFiredImmediately) {\n if (typeof fireImmediately === 'function') {\n fireImmediately();\n } else fire();\n doAfterFireImmediately();\n }\n timer && clearTimeout(timer);\n timer = setTimeout(fire, timeout);\n }\n}","'use strict';\n\nmodule.exports = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n};","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n var mountedInstances = [];\n var state;\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n var SideEffect = /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n var _proto = SideEffect.prototype;\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n return SideEffect;\n }(React.PureComponent);\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n return SideEffect;\n };\n}\nmodule.exports = withSideEffect;","'use strict';\n\nvar isArrayish = require('is-arrayish');\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar swizzle = module.exports = function swizzle(args) {\n var results = [];\n for (var i = 0, len = args.length; i < len; i++) {\n var arg = args[i];\n if (isArrayish(arg)) {\n // http://jsperf.com/javascript-array-concat-vs-push/98\n results = concat.call(results, slice.call(arg));\n } else {\n results.push(arg);\n }\n }\n return results;\n};\nswizzle.wrap = function (fn) {\n return function () {\n return fn(swizzle(arguments));\n };\n};","/*!\n * strings: 3.6.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _trimExp = /(^\\s+|\\s+$)/g;\nexport var emojiExp = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF](?:[\\u200D\\uFE0F][\\uD800-\\uDBFF][\\uDC00-\\uDFFF]){2,}|\\uD83D\\uDC69(?:\\u200D(?:(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC67|(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC66)|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC6F\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDD6-\\uDDDF])\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642])\\uFE0F|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\uD83D\\uDC69\\u200D[\\u2695\\u2696\\u2708]|\\uD83D\\uDC68(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708]))\\uFE0F|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83D\\uDC69\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]))|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDD1-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\u200D(?:(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC67|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC66)|\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC69\\uDC6E\\uDC70-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3D\\uDD3E\\uDDD1-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])?|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDEEB\\uDEEC\\uDEF4-\\uDEF8]|\\uD83E[\\uDD10-\\uDD3A\\uDD3C-\\uDD3E\\uDD40-\\uDD45\\uDD47-\\uDD4C\\uDD50-\\uDD6B\\uDD80-\\uDD97\\uDDC0\\uDDD0-\\uDDE6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEF8]|\\uD83E[\\uDD10-\\uDD3A\\uDD3C-\\uDD3E\\uDD40-\\uDD45\\uDD47-\\uDD4C\\uDD50-\\uDD6B\\uDD80-\\uDD97\\uDDC0\\uDDD0-\\uDDE6])\\uFE0F)/;\nexport function getText(e) {\n var type = e.nodeType,\n result = \"\";\n if (type === 1 || type === 9 || type === 11) {\n if (typeof e.textContent === \"string\") {\n return e.textContent;\n } else {\n for (e = e.firstChild; e; e = e.nextSibling) {\n result += getText(e);\n }\n }\n } else if (type === 3 || type === 4) {\n return e.nodeValue;\n }\n return result;\n}\nexport function splitInnerHTML(element, delimiter, trim) {\n var node = element.firstChild,\n result = [];\n while (node) {\n if (node.nodeType === 3) {\n result.push.apply(result, emojiSafeSplit((node.nodeValue + \"\").replace(/^\\n+/g, \"\").replace(/\\s+/g, \" \"), delimiter, trim));\n } else if ((node.nodeName + \"\").toLowerCase() === \"br\") {\n result[result.length - 1] += \"
\";\n } else {\n result.push(node.outerHTML);\n }\n node = node.nextSibling;\n }\n return result;\n}\n/*\n//smaller kb version that only handles the simpler emoji's, which is often perfectly adequate.\n\nlet _emoji = \"[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2694-\\u2697]|\\uD83E[\\uDD10-\\uDD5D]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",\n\t_emojiExp = new RegExp(_emoji),\n\t_emojiAndCharsExp = new RegExp(_emoji + \"|.\", \"g\"),\n\t_emojiSafeSplit = (text, delimiter, trim) => {\n\t\tif (trim) {\n\t\t\ttext = text.replace(_trimExp, \"\");\n\t\t}\n\t\treturn ((delimiter === \"\" || !delimiter) && _emojiExp.test(text)) ? text.match(_emojiAndCharsExp) : text.split(delimiter || \"\");\n\t};\n */\n\nexport function emojiSafeSplit(text, delimiter, trim) {\n text += \"\"; // make sure it's cast as a string. Someone may pass in a number.\n\n if (trim) {\n text = text.replace(_trimExp, \"\");\n }\n if (delimiter && delimiter !== \"\") {\n return text.replace(/>/g, \">\").replace(/= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) {\n //special emoji characters use 2 or 4 unicode characters that we must keep together.\n j = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\n character = text.substr(i, j);\n result.emoji = 1;\n i += j - 1;\n }\n result.push(character === \">\" ? \">\" : character === \"<\" ? \"<\" : character);\n }\n return result;\n}","/*!\n * SplitText: 3.6.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { emojiExp, getText } from \"./utils/strings.js\";\nvar _doc,\n _win,\n _coreInitted,\n _stripExp = /(?:\\r|\\n|\\t\\t)/g,\n //find carriage returns, new line feeds and double-tabs.\n _multipleSpacesExp = /(?:\\s\\s+)/g,\n _initCore = function _initCore() {\n _doc = document;\n _win = window;\n _coreInitted = 1;\n },\n _bonusValidated = 1,\n //SplitText\n _getComputedStyle = function _getComputedStyle(element) {\n return _win.getComputedStyle(element);\n },\n _isArray = Array.isArray,\n _slice = [].slice,\n _toArray = function _toArray(value, leaveStrings) {\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\n var type;\n return _isArray(value) ? value : (type = typeof value) === \"string\" && !leaveStrings && value ? _slice.call(_doc.querySelectorAll(value), 0) : value && type === \"object\" && \"length\" in value ? _slice.call(value, 0) : value ? [value] : [];\n },\n _isAbsolute = function _isAbsolute(vars) {\n return vars.position === \"absolute\" || vars.absolute === true;\n },\n //some characters are combining marks (think diacritics/accents in European languages) which involve 2 or 4 characters that combine in the browser to form a single character. Pass in the remaining text and an array of the special characters to search for and if the text starts with one of those special characters, it'll spit back the number of characters to retain (often 2 or 4). Used in the specialChars features that was introduced in 0.6.0.\n _findSpecialChars = function _findSpecialChars(text, chars) {\n var i = chars.length,\n s;\n while (--i > -1) {\n s = chars[i];\n if (text.substr(0, s.length) === s) {\n return s.length;\n }\n }\n },\n _divStart = \" style='position:relative;display:inline-block;'\",\n _cssClassFunc = function _cssClassFunc(cssClass, tag) {\n if (cssClass === void 0) {\n cssClass = \"\";\n }\n var iterate = ~cssClass.indexOf(\"++\"),\n num = 1;\n if (iterate) {\n cssClass = cssClass.split(\"++\").join(\"\");\n }\n return function () {\n return \"<\" + tag + _divStart + (cssClass ? \" class='\" + cssClass + (iterate ? num++ : \"\") + \"'>\" : \">\");\n };\n },\n _swapText = function _swapText(element, oldText, newText) {\n var type = element.nodeType;\n if (type === 1 || type === 9 || type === 11) {\n for (element = element.firstChild; element; element = element.nextSibling) {\n _swapText(element, oldText, newText);\n }\n } else if (type === 3 || type === 4) {\n element.nodeValue = element.nodeValue.split(oldText).join(newText);\n }\n },\n _pushReversed = function _pushReversed(a, merge) {\n var i = merge.length;\n while (--i > -1) {\n a.push(merge[i]);\n }\n },\n _isBeforeWordDelimiter = function _isBeforeWordDelimiter(e, root, wordDelimiter) {\n var next;\n while (e && e !== root) {\n next = e._next || e.nextSibling;\n if (next) {\n return next.textContent.charAt(0) === wordDelimiter;\n }\n e = e.parentNode || e._parent;\n }\n },\n _deWordify = function _deWordify(e) {\n var children = _toArray(e.childNodes),\n l = children.length,\n i,\n child;\n for (i = 0; i < l; i++) {\n child = children[i];\n if (child._isSplit) {\n _deWordify(child);\n } else {\n if (i && child.previousSibling && child.previousSibling.nodeType === 3) {\n child.previousSibling.nodeValue += child.nodeType === 3 ? child.nodeValue : child.firstChild.nodeValue;\n e.removeChild(child);\n } else if (child.nodeType !== 3) {\n e.insertBefore(child.firstChild, child);\n e.removeChild(child);\n }\n }\n }\n },\n _getStyleAsNumber = function _getStyleAsNumber(name, computedStyle) {\n return parseFloat(computedStyle[name]) || 0;\n },\n _setPositionsAfterSplit = function _setPositionsAfterSplit(element, vars, allChars, allWords, allLines, origWidth, origHeight) {\n var cs = _getComputedStyle(element),\n paddingLeft = _getStyleAsNumber(\"paddingLeft\", cs),\n lineOffsetY = -999,\n borderTopAndBottom = _getStyleAsNumber(\"borderBottomWidth\", cs) + _getStyleAsNumber(\"borderTopWidth\", cs),\n borderLeftAndRight = _getStyleAsNumber(\"borderLeftWidth\", cs) + _getStyleAsNumber(\"borderRightWidth\", cs),\n padTopAndBottom = _getStyleAsNumber(\"paddingTop\", cs) + _getStyleAsNumber(\"paddingBottom\", cs),\n padLeftAndRight = _getStyleAsNumber(\"paddingLeft\", cs) + _getStyleAsNumber(\"paddingRight\", cs),\n lineThreshold = _getStyleAsNumber(\"fontSize\", cs) * (vars.lineThreshold || 0.2),\n textAlign = cs.textAlign,\n charArray = [],\n wordArray = [],\n lineArray = [],\n wordDelimiter = vars.wordDelimiter || \" \",\n tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n types = vars.type || vars.split || \"chars,words,lines\",\n lines = allLines && ~types.indexOf(\"lines\") ? [] : null,\n words = ~types.indexOf(\"words\"),\n chars = ~types.indexOf(\"chars\"),\n absolute = _isAbsolute(vars),\n linesClass = vars.linesClass,\n iterateLine = ~(linesClass || \"\").indexOf(\"++\"),\n spaceNodesToRemove = [],\n isFlex = cs.display === \"flex\",\n prevInlineDisplay = element.style.display,\n i,\n j,\n l,\n node,\n nodes,\n isChild,\n curLine,\n addWordSpaces,\n style,\n lineNode,\n lineWidth,\n offset;\n iterateLine && (linesClass = linesClass.split(\"++\").join(\"\"));\n isFlex && (element.style.display = \"block\"); //copy all the descendant nodes into an array (we can't use a regular nodeList because it's live and we may need to renest things)\n\n j = element.getElementsByTagName(\"*\");\n l = j.length;\n nodes = [];\n for (i = 0; i < l; i++) {\n nodes[i] = j[i];\n } //for absolute positioning, we need to record the x/y offsets and width/height for every
. And even if we're not positioning things absolutely, in order to accommodate lines, we must figure out where the y offset changes so that we can sense where the lines break, and we populate the lines array.\n\n if (lines || absolute) {\n for (i = 0; i < l; i++) {\n node = nodes[i];\n isChild = node.parentNode === element;\n if (isChild || absolute || chars && !words) {\n offset = node.offsetTop;\n if (lines && isChild && Math.abs(offset - lineOffsetY) > lineThreshold && (node.nodeName !== \"BR\" || i === 0)) {\n //we found some rare occasions where a certain character like ‑ could cause the offsetTop to be off by 1 pixel, so we build in a threshold.\n curLine = [];\n lines.push(curLine);\n lineOffsetY = offset;\n }\n if (absolute) {\n //record offset x and y, as well as width and height so that we can access them later for positioning. Grabbing them at once ensures we don't trigger a browser paint & we maximize performance.\n node._x = node.offsetLeft;\n node._y = offset;\n node._w = node.offsetWidth;\n node._h = node.offsetHeight;\n }\n if (lines) {\n if (node._isSplit && isChild || !chars && isChild || words && isChild || !words && node.parentNode.parentNode === element && !node.parentNode._isSplit) {\n curLine.push(node);\n node._x -= paddingLeft;\n if (_isBeforeWordDelimiter(node, element, wordDelimiter)) {\n node._wordEnd = true;\n }\n }\n if (node.nodeName === \"BR\" && (node.nextSibling && node.nextSibling.nodeName === \"BR\" || i === 0)) {\n //two consecutive
tags signify a new [empty] line. Also, if the entire block of content STARTS with a
, add a line.\n lines.push([]);\n }\n }\n }\n }\n }\n for (i = 0; i < l; i++) {\n node = nodes[i];\n isChild = node.parentNode === element;\n if (node.nodeName === \"BR\") {\n if (lines || absolute) {\n node.parentNode && node.parentNode.removeChild(node);\n nodes.splice(i--, 1);\n l--;\n } else if (!words) {\n element.appendChild(node);\n }\n continue;\n }\n if (absolute) {\n style = node.style;\n if (!words && !isChild) {\n node._x += node.parentNode._x;\n node._y += node.parentNode._y;\n }\n style.left = node._x + \"px\";\n style.top = node._y + \"px\";\n style.position = \"absolute\";\n style.display = \"block\"; //if we don't set the width/height, things collapse in older versions of IE and the origin for transforms is thrown off in all browsers.\n\n style.width = node._w + 1 + \"px\"; //IE is 1px short sometimes. Avoid wrapping\n\n style.height = node._h + \"px\";\n }\n if (!words && chars) {\n //we always start out wrapping words in their own
so that line breaks happen correctly, but here we'll remove those
tags if necessary and re-nest the characters directly into the element rather than inside the word
\n if (node._isSplit) {\n node._next = j = node.nextSibling;\n node.parentNode.appendChild(node); //put it at the end to keep the order correct.\n\n while (j && j.nodeType === 3 && j.textContent === \" \") {\n // if there are nodes that are just a space right afterward, go ahead and append them to the end so they're not out of order.\n node._next = j.nextSibling;\n node.parentNode.appendChild(j);\n j = j.nextSibling;\n }\n } else if (node.parentNode._isSplit) {\n node._parent = node.parentNode;\n if (!node.previousSibling && node.firstChild) {\n node.firstChild._isFirst = true;\n }\n if (node.nextSibling && node.nextSibling.textContent === \" \" && !node.nextSibling.nextSibling) {\n //if the last node inside a nested element is just a space (like Tnested ), remove it otherwise it'll get placed in the wrong order. Don't remove it right away, though, because we need to sense when words/characters are before a space like _isBeforeWordDelimiter(). Removing it now would make that a false negative.\n spaceNodesToRemove.push(node.nextSibling);\n }\n node._next = node.nextSibling && node.nextSibling._isFirst ? null : node.nextSibling;\n node.parentNode.removeChild(node);\n nodes.splice(i--, 1);\n l--;\n } else if (!isChild) {\n offset = !node.nextSibling && _isBeforeWordDelimiter(node.parentNode, element, wordDelimiter); //if this is the last letter in the word (and we're not breaking by lines and not positioning things absolutely), we need to add a space afterwards so that the characters don't just mash together\n\n node.parentNode._parent && node.parentNode._parent.appendChild(node);\n offset && node.parentNode.appendChild(_doc.createTextNode(\" \"));\n if (tag === \"span\") {\n node.style.display = \"inline\"; //so that word breaks are honored properly.\n }\n charArray.push(node);\n }\n } else if (node.parentNode._isSplit && !node._isSplit && node.innerHTML !== \"\") {\n wordArray.push(node);\n } else if (chars && !node._isSplit) {\n if (tag === \"span\") {\n node.style.display = \"inline\";\n }\n charArray.push(node);\n }\n }\n i = spaceNodesToRemove.length;\n while (--i > -1) {\n spaceNodesToRemove[i].parentNode.removeChild(spaceNodesToRemove[i]);\n }\n if (lines) {\n //the next 7 lines just give us the line width in the most reliable way and figure out the left offset (if position isn't relative or absolute). We must set the width along with text-align to ensure everything works properly for various alignments.\n if (absolute) {\n lineNode = _doc.createElement(tag);\n element.appendChild(lineNode);\n lineWidth = lineNode.offsetWidth + \"px\";\n offset = lineNode.offsetParent === element ? 0 : element.offsetLeft;\n element.removeChild(lineNode);\n }\n style = element.style.cssText;\n element.style.cssText = \"display:none;\"; //to improve performance, set display:none on the element so that the browser doesn't have to worry about reflowing or rendering while we're renesting things. We'll revert the cssText later.\n //we can't use element.innerHTML = \"\" because that causes IE to literally delete all the nodes and their content even though we've stored them in an array! So we must loop through the children and remove them.\n\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n addWordSpaces = wordDelimiter === \" \" && (!absolute || !words && !chars);\n for (i = 0; i < lines.length; i++) {\n curLine = lines[i];\n lineNode = _doc.createElement(tag);\n lineNode.style.cssText = \"display:block;text-align:\" + textAlign + \";position:\" + (absolute ? \"absolute;\" : \"relative;\");\n if (linesClass) {\n lineNode.className = linesClass + (iterateLine ? i + 1 : \"\");\n }\n lineArray.push(lineNode);\n l = curLine.length;\n for (j = 0; j < l; j++) {\n if (curLine[j].nodeName !== \"BR\") {\n node = curLine[j];\n lineNode.appendChild(node);\n addWordSpaces && node._wordEnd && lineNode.appendChild(_doc.createTextNode(\" \"));\n if (absolute) {\n if (j === 0) {\n lineNode.style.top = node._y + \"px\";\n lineNode.style.left = paddingLeft + offset + \"px\";\n }\n node.style.top = \"0px\";\n if (offset) {\n node.style.left = node._x - offset + \"px\";\n }\n }\n }\n }\n if (l === 0) {\n //if there are no nodes in the line (typically meaning there were two consecutive
tags, just add a non-breaking space so that things display properly.\n lineNode.innerHTML = \" \";\n } else if (!words && !chars) {\n _deWordify(lineNode);\n _swapText(lineNode, String.fromCharCode(160), \" \");\n }\n if (absolute) {\n lineNode.style.width = lineWidth;\n lineNode.style.height = node._h + \"px\";\n }\n element.appendChild(lineNode);\n }\n element.style.cssText = style;\n } //if everything shifts to being position:absolute, the container can collapse in terms of height or width, so fix that here.\n\n if (absolute) {\n if (origHeight > element.clientHeight) {\n element.style.height = origHeight - padTopAndBottom + \"px\";\n if (element.clientHeight < origHeight) {\n //IE8 and earlier use a different box model - we must include padding and borders\n element.style.height = origHeight + borderTopAndBottom + \"px\";\n }\n }\n if (origWidth > element.clientWidth) {\n element.style.width = origWidth - padLeftAndRight + \"px\";\n if (element.clientWidth < origWidth) {\n //IE8 and earlier use a different box model - we must include padding and borders\n element.style.width = origWidth + borderLeftAndRight + \"px\";\n }\n }\n }\n isFlex && (prevInlineDisplay ? element.style.display = prevInlineDisplay : element.style.removeProperty(\"display\"));\n _pushReversed(allChars, charArray);\n words && _pushReversed(allWords, wordArray);\n _pushReversed(allLines, lineArray);\n },\n _splitRawText = function _splitRawText(element, vars, wordStart, charStart) {\n var tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n types = vars.type || vars.split || \"chars,words,lines\",\n //words = (types.indexOf(\"words\") !== -1),\n chars = ~types.indexOf(\"chars\"),\n absolute = _isAbsolute(vars),\n wordDelimiter = vars.wordDelimiter || \" \",\n space = wordDelimiter !== \" \" ? \"\" : absolute ? \"­ \" : \" \",\n wordEnd = \"\",\n wordIsOpen = 1,\n specialChars = vars.specialChars ? typeof vars.specialChars === \"function\" ? vars.specialChars : _findSpecialChars : null,\n //specialChars can be an array or a function. For performance reasons, we always set this local \"specialChars\" to a function to which we pass the remaining text and whatever the original vars.specialChars was so that if it's an array, it works with the _findSpecialChars() function.\n text,\n splitText,\n i,\n j,\n l,\n character,\n hasTagStart,\n testResult,\n container = _doc.createElement(\"div\"),\n parent = element.parentNode;\n parent.insertBefore(container, element);\n container.textContent = element.nodeValue;\n parent.removeChild(element);\n element = container;\n text = getText(element);\n hasTagStart = text.indexOf(\"<\") !== -1;\n if (vars.reduceWhiteSpace !== false) {\n text = text.replace(_multipleSpacesExp, \" \").replace(_stripExp, \"\");\n }\n if (hasTagStart) {\n text = text.split(\"<\").join(\"{{LT}}\"); //we can't leave \"<\" in the string, or when we set the innerHTML, it can be interpreted as a node\n }\n l = text.length;\n splitText = (text.charAt(0) === \" \" ? space : \"\") + wordStart();\n for (i = 0; i < l; i++) {\n character = text.charAt(i);\n if (specialChars && (testResult = specialChars(text.substr(i), vars.specialChars))) {\n // look for any specialChars that were declared. Remember, they can be passed in like {specialChars:[\"मी\", \"पा\", \"है\"]} or a function could be defined instead. Either way, the function should return the number of characters that should be grouped together for this \"character\".\n character = text.substr(i, testResult || 1);\n splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\n i += testResult - 1;\n } else if (character === wordDelimiter && text.charAt(i - 1) !== wordDelimiter && i) {\n splitText += wordIsOpen ? wordEnd : \"\";\n wordIsOpen = 0;\n while (text.charAt(i + 1) === wordDelimiter) {\n //skip over empty spaces (to avoid making them words)\n splitText += space;\n i++;\n }\n if (i === l - 1) {\n splitText += space;\n } else if (text.charAt(i + 1) !== \")\") {\n splitText += space + wordStart();\n wordIsOpen = 1;\n }\n } else if (character === \"{\" && text.substr(i, 6) === \"{{LT}}\") {\n splitText += chars ? charStart() + \"{{LT}}\" + \"\" : \"{{LT}}\";\n i += 5;\n } else if (character.charCodeAt(0) >= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) {\n //special emoji characters use 2 or 4 unicode characters that we must keep together.\n j = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\n splitText += chars && character !== \" \" ? charStart() + text.substr(i, j) + \"\" : text.substr(i, j);\n i += j - 1;\n } else {\n splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\n }\n }\n element.outerHTML = splitText + (wordIsOpen ? wordEnd : \"\");\n hasTagStart && _swapText(parent, \"{{LT}}\", \"<\"); //note: don't perform this on \"element\" because that gets replaced with all new elements when we set element.outerHTML.\n },\n _split = function _split(element, vars, wordStart, charStart) {\n var children = _toArray(element.childNodes),\n l = children.length,\n absolute = _isAbsolute(vars),\n i,\n child;\n if (element.nodeType !== 3 || l > 1) {\n vars.absolute = false;\n for (i = 0; i < l; i++) {\n child = children[i];\n child._next = child._isFirst = child._parent = child._wordEnd = null;\n if (child.nodeType !== 3 || /\\S+/.test(child.nodeValue)) {\n if (absolute && child.nodeType !== 3 && _getComputedStyle(child).display === \"inline\") {\n //if there's a child node that's display:inline, switch it to inline-block so that absolute positioning works properly (most browsers don't report offsetTop/offsetLeft properly inside a for example)\n child.style.display = \"inline-block\";\n child.style.position = \"relative\";\n }\n child._isSplit = true;\n _split(child, vars, wordStart, charStart); //don't split lines on child elements\n }\n }\n vars.absolute = absolute;\n element._isSplit = true;\n return;\n }\n _splitRawText(element, vars, wordStart, charStart);\n };\nexport var SplitText = /*#__PURE__*/function () {\n function SplitText(element, vars) {\n _coreInitted || _initCore();\n this.elements = _toArray(element);\n this.chars = [];\n this.words = [];\n this.lines = [];\n this._originals = [];\n this.vars = vars || {};\n _bonusValidated && this.split(vars);\n }\n var _proto = SplitText.prototype;\n _proto.split = function split(vars) {\n this.isSplit && this.revert();\n this.vars = vars = vars || this.vars;\n this._originals.length = this.chars.length = this.words.length = this.lines.length = 0;\n var i = this.elements.length,\n tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n wordStart = _cssClassFunc(vars.wordsClass, tag),\n charStart = _cssClassFunc(vars.charsClass, tag),\n origHeight,\n origWidth,\n e; //we split in reversed order so that if/when we position:absolute elements, they don't affect the position of the ones after them in the document flow (shifting them up as they're taken out of the document flow).\n\n while (--i > -1) {\n e = this.elements[i];\n this._originals[i] = e.innerHTML;\n origHeight = e.clientHeight;\n origWidth = e.clientWidth;\n _split(e, vars, wordStart, charStart);\n _setPositionsAfterSplit(e, vars, this.chars, this.words, this.lines, origWidth, origHeight);\n }\n this.chars.reverse();\n this.words.reverse();\n this.lines.reverse();\n this.isSplit = true;\n return this;\n };\n _proto.revert = function revert() {\n var originals = this._originals;\n if (!originals) {\n throw \"revert() call wasn't scoped properly.\";\n }\n this.elements.forEach(function (e, i) {\n return e.innerHTML = originals[i];\n });\n this.chars = [];\n this.words = [];\n this.lines = [];\n this.isSplit = false;\n return this;\n };\n SplitText.create = function create(element, vars) {\n return new SplitText(element, vars);\n };\n return SplitText;\n}();\nSplitText.version = \"3.6.1\";\nexport { SplitText as default };","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n if (hasOwnProperty.call(colorNames, name)) {\n reverseNames[colorNames[name]] = name;\n }\n}\nvar cs = module.exports = {\n to: {},\n get: {}\n};\ncs.get = function (string) {\n var prefix = string.substring(0, 3).toLowerCase();\n var val;\n var model;\n switch (prefix) {\n case 'hsl':\n val = cs.get.hsl(string);\n model = 'hsl';\n break;\n case 'hwb':\n val = cs.get.hwb(string);\n model = 'hwb';\n break;\n default:\n val = cs.get.rgb(string);\n model = 'rgb';\n break;\n }\n if (!val) {\n return null;\n }\n return {\n model: model,\n value: val\n };\n};\ncs.get.rgb = function (string) {\n if (!string) {\n return null;\n }\n var abbr = /^#([a-f0-9]{3,4})$/i;\n var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n var rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n var per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n var keyword = /^(\\w+)$/;\n var rgb = [0, 0, 0, 1];\n var match;\n var i;\n var hexAlpha;\n if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (i = 0; i < 3; i++) {\n // https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n var i2 = i * 2;\n rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n }\n if (hexAlpha) {\n rgb[3] = parseInt(hexAlpha, 16) / 255;\n }\n } else if (match = string.match(abbr)) {\n match = match[1];\n hexAlpha = match[3];\n for (i = 0; i < 3; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n }\n } else if (match = string.match(rgba)) {\n for (i = 0; i < 3; i++) {\n rgb[i] = parseInt(match[i + 1], 0);\n }\n if (match[4]) {\n if (match[5]) {\n rgb[3] = parseFloat(match[4]) * 0.01;\n } else {\n rgb[3] = parseFloat(match[4]);\n }\n }\n } else if (match = string.match(per)) {\n for (i = 0; i < 3; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n if (match[4]) {\n if (match[5]) {\n rgb[3] = parseFloat(match[4]) * 0.01;\n } else {\n rgb[3] = parseFloat(match[4]);\n }\n }\n } else if (match = string.match(keyword)) {\n if (match[1] === 'transparent') {\n return [0, 0, 0, 0];\n }\n if (!hasOwnProperty.call(colorNames, match[1])) {\n return null;\n }\n rgb = colorNames[match[1]];\n rgb[3] = 1;\n return rgb;\n } else {\n return null;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] = clamp(rgb[i], 0, 255);\n }\n rgb[3] = clamp(rgb[3], 0, 1);\n return rgb;\n};\ncs.get.hsl = function (string) {\n if (!string) {\n return null;\n }\n var hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = (parseFloat(match[1]) % 360 + 360) % 360;\n var s = clamp(parseFloat(match[2]), 0, 100);\n var l = clamp(parseFloat(match[3]), 0, 100);\n var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n return null;\n};\ncs.get.hwb = function (string) {\n if (!string) {\n return null;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = (parseFloat(match[1]) % 360 + 360) % 360;\n var w = clamp(parseFloat(match[2]), 0, 100);\n var b = clamp(parseFloat(match[3]), 0, 100);\n var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n return null;\n};\ncs.to.hex = function () {\n var rgba = swizzle(arguments);\n return '#' + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : '');\n};\ncs.to.rgb = function () {\n var rgba = swizzle(arguments);\n return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')' : 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\ncs.to.rgb.percent = function () {\n var rgba = swizzle(arguments);\n var r = Math.round(rgba[0] / 255 * 100);\n var g = Math.round(rgba[1] / 255 * 100);\n var b = Math.round(rgba[2] / 255 * 100);\n return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)' : 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\ncs.to.hsl = function () {\n var hsla = swizzle(arguments);\n return hsla.length < 4 || hsla[3] === 1 ? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)' : 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n var hwba = swizzle(arguments);\n var a = '';\n if (hwba.length >= 4 && hwba[3] !== 1) {\n a = ', ' + hwba[3];\n }\n return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\ncs.to.keyword = function (rgb) {\n return reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\nfunction hexDouble(num) {\n var str = Math.round(num).toString(16).toUpperCase();\n return str.length < 2 ? '0' + str : str;\n}","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\nvar _slice = [].slice;\nvar skippedModels = [\n// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n'keyword',\n// gray conflicts with some method names, and has its own method defined.\n'gray',\n// shouldn't really be in color-convert either...\n'hex'];\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n hashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\nvar limiters = {};\nfunction Color(obj, model) {\n if (!(this instanceof Color)) {\n return new Color(obj, model);\n }\n if (model && model in skippedModels) {\n model = null;\n }\n if (model && !(model in convert)) {\n throw new Error('Unknown model: ' + model);\n }\n var i;\n var channels;\n if (obj == null) {\n // eslint-disable-line no-eq-null,eqeqeq\n this.model = 'rgb';\n this.color = [0, 0, 0];\n this.valpha = 1;\n } else if (obj instanceof Color) {\n this.model = obj.model;\n this.color = obj.color.slice();\n this.valpha = obj.valpha;\n } else if (typeof obj === 'string') {\n var result = colorString.get(obj);\n if (result === null) {\n throw new Error('Unable to parse color from string: ' + obj);\n }\n this.model = result.model;\n channels = convert[this.model].channels;\n this.color = result.value.slice(0, channels);\n this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n } else if (obj.length) {\n this.model = model || 'rgb';\n channels = convert[this.model].channels;\n var newArr = _slice.call(obj, 0, channels);\n this.color = zeroArray(newArr, channels);\n this.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n } else if (typeof obj === 'number') {\n // this is always RGB - can be converted later on.\n obj &= 0xFFFFFF;\n this.model = 'rgb';\n this.color = [obj >> 16 & 0xFF, obj >> 8 & 0xFF, obj & 0xFF];\n this.valpha = 1;\n } else {\n this.valpha = 1;\n var keys = Object.keys(obj);\n if ('alpha' in obj) {\n keys.splice(keys.indexOf('alpha'), 1);\n this.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n }\n var hashedKeys = keys.sort().join('');\n if (!(hashedKeys in hashedModelKeys)) {\n throw new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n }\n this.model = hashedModelKeys[hashedKeys];\n var labels = convert[this.model].labels;\n var color = [];\n for (i = 0; i < labels.length; i++) {\n color.push(obj[labels[i]]);\n }\n this.color = zeroArray(color);\n }\n\n // perform limitations (clamping, etc.)\n if (limiters[this.model]) {\n channels = convert[this.model].channels;\n for (i = 0; i < channels; i++) {\n var limit = limiters[this.model][i];\n if (limit) {\n this.color[i] = limit(this.color[i]);\n }\n }\n }\n this.valpha = Math.max(0, Math.min(1, this.valpha));\n if (Object.freeze) {\n Object.freeze(this);\n }\n}\nColor.prototype = {\n toString: function () {\n return this.string();\n },\n toJSON: function () {\n return this[this.model]();\n },\n string: function (places) {\n var self = this.model in colorString.to ? this : this.rgb();\n self = self.round(typeof places === 'number' ? places : 1);\n var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n return colorString.to[self.model](args);\n },\n percentString: function (places) {\n var self = this.rgb().round(typeof places === 'number' ? places : 1);\n var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n return colorString.to.rgb.percent(args);\n },\n array: function () {\n return this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n },\n object: function () {\n var result = {};\n var channels = convert[this.model].channels;\n var labels = convert[this.model].labels;\n for (var i = 0; i < channels; i++) {\n result[labels[i]] = this.color[i];\n }\n if (this.valpha !== 1) {\n result.alpha = this.valpha;\n }\n return result;\n },\n unitArray: function () {\n var rgb = this.rgb().color;\n rgb[0] /= 255;\n rgb[1] /= 255;\n rgb[2] /= 255;\n if (this.valpha !== 1) {\n rgb.push(this.valpha);\n }\n return rgb;\n },\n unitObject: function () {\n var rgb = this.rgb().object();\n rgb.r /= 255;\n rgb.g /= 255;\n rgb.b /= 255;\n if (this.valpha !== 1) {\n rgb.alpha = this.valpha;\n }\n return rgb;\n },\n round: function (places) {\n places = Math.max(places || 0, 0);\n return new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n },\n alpha: function (val) {\n if (arguments.length) {\n return new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n }\n return this.valpha;\n },\n // rgb\n red: getset('rgb', 0, maxfn(255)),\n green: getset('rgb', 1, maxfn(255)),\n blue: getset('rgb', 2, maxfn(255)),\n hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) {\n return (val % 360 + 360) % 360;\n }),\n // eslint-disable-line brace-style\n\n saturationl: getset('hsl', 1, maxfn(100)),\n lightness: getset('hsl', 2, maxfn(100)),\n saturationv: getset('hsv', 1, maxfn(100)),\n value: getset('hsv', 2, maxfn(100)),\n chroma: getset('hcg', 1, maxfn(100)),\n gray: getset('hcg', 2, maxfn(100)),\n white: getset('hwb', 1, maxfn(100)),\n wblack: getset('hwb', 2, maxfn(100)),\n cyan: getset('cmyk', 0, maxfn(100)),\n magenta: getset('cmyk', 1, maxfn(100)),\n yellow: getset('cmyk', 2, maxfn(100)),\n black: getset('cmyk', 3, maxfn(100)),\n x: getset('xyz', 0, maxfn(100)),\n y: getset('xyz', 1, maxfn(100)),\n z: getset('xyz', 2, maxfn(100)),\n l: getset('lab', 0, maxfn(100)),\n a: getset('lab', 1),\n b: getset('lab', 2),\n keyword: function (val) {\n if (arguments.length) {\n return new Color(val);\n }\n return convert[this.model].keyword(this.color);\n },\n hex: function (val) {\n if (arguments.length) {\n return new Color(val);\n }\n return colorString.to.hex(this.rgb().round().color);\n },\n rgbNumber: function () {\n var rgb = this.rgb().color;\n return (rgb[0] & 0xFF) << 16 | (rgb[1] & 0xFF) << 8 | rgb[2] & 0xFF;\n },\n luminosity: function () {\n // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n var rgb = this.rgb().color;\n var lum = [];\n for (var i = 0; i < rgb.length; i++) {\n var chan = rgb[i] / 255;\n lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n },\n contrast: function (color2) {\n // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n var lum1 = this.luminosity();\n var lum2 = color2.luminosity();\n if (lum1 > lum2) {\n return (lum1 + 0.05) / (lum2 + 0.05);\n }\n return (lum2 + 0.05) / (lum1 + 0.05);\n },\n level: function (color2) {\n var contrastRatio = this.contrast(color2);\n if (contrastRatio >= 7.1) {\n return 'AAA';\n }\n return contrastRatio >= 4.5 ? 'AA' : '';\n },\n isDark: function () {\n // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n var rgb = this.rgb().color;\n var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n return yiq < 128;\n },\n isLight: function () {\n return !this.isDark();\n },\n negate: function () {\n var rgb = this.rgb();\n for (var i = 0; i < 3; i++) {\n rgb.color[i] = 255 - rgb.color[i];\n }\n return rgb;\n },\n lighten: function (ratio) {\n var hsl = this.hsl();\n hsl.color[2] += hsl.color[2] * ratio;\n return hsl;\n },\n darken: function (ratio) {\n var hsl = this.hsl();\n hsl.color[2] -= hsl.color[2] * ratio;\n return hsl;\n },\n saturate: function (ratio) {\n var hsl = this.hsl();\n hsl.color[1] += hsl.color[1] * ratio;\n return hsl;\n },\n desaturate: function (ratio) {\n var hsl = this.hsl();\n hsl.color[1] -= hsl.color[1] * ratio;\n return hsl;\n },\n whiten: function (ratio) {\n var hwb = this.hwb();\n hwb.color[1] += hwb.color[1] * ratio;\n return hwb;\n },\n blacken: function (ratio) {\n var hwb = this.hwb();\n hwb.color[2] += hwb.color[2] * ratio;\n return hwb;\n },\n grayscale: function () {\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n var rgb = this.rgb().color;\n var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n return Color.rgb(val, val, val);\n },\n fade: function (ratio) {\n return this.alpha(this.valpha - this.valpha * ratio);\n },\n opaquer: function (ratio) {\n return this.alpha(this.valpha + this.valpha * ratio);\n },\n rotate: function (degrees) {\n var hsl = this.hsl();\n var hue = hsl.color[0];\n hue = (hue + degrees) % 360;\n hue = hue < 0 ? 360 + hue : hue;\n hsl.color[0] = hue;\n return hsl;\n },\n mix: function (mixinColor, weight) {\n // ported from sass implementation in C\n // https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n if (!mixinColor || !mixinColor.rgb) {\n throw new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n }\n var color1 = mixinColor.rgb();\n var color2 = this.rgb();\n var p = weight === undefined ? 0.5 : weight;\n var w = 2 * p - 1;\n var a = color1.alpha() - color2.alpha();\n var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n var w2 = 1 - w1;\n return Color.rgb(w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue(), color1.alpha() * p + color2.alpha() * (1 - p));\n }\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n if (skippedModels.indexOf(model) !== -1) {\n return;\n }\n var channels = convert[model].channels;\n\n // conversion methods\n Color.prototype[model] = function () {\n if (this.model === model) {\n return new Color(this);\n }\n if (arguments.length) {\n return new Color(arguments, model);\n }\n var newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n return new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n };\n\n // 'static' construction methods\n Color[model] = function (color) {\n if (typeof color === 'number') {\n color = zeroArray(_slice.call(arguments), channels);\n }\n return new Color(color, model);\n };\n});\nfunction roundTo(num, places) {\n return Number(num.toFixed(places));\n}\nfunction roundToPlace(places) {\n return function (num) {\n return roundTo(num, places);\n };\n}\nfunction getset(model, channel, modifier) {\n model = Array.isArray(model) ? model : [model];\n model.forEach(function (m) {\n (limiters[m] || (limiters[m] = []))[channel] = modifier;\n });\n model = model[0];\n return function (val) {\n var result;\n if (arguments.length) {\n if (modifier) {\n val = modifier(val);\n }\n result = this[model]();\n result.color[channel] = val;\n return result;\n }\n result = this[model]().color[channel];\n if (modifier) {\n result = modifier(result);\n }\n return result;\n };\n}\nfunction maxfn(max) {\n return function (v) {\n return Math.max(0, Math.min(max, v));\n };\n}\nfunction assertArray(val) {\n return Array.isArray(val) ? val : [val];\n}\nfunction zeroArray(arr, length) {\n for (var i = 0; i < length; i++) {\n if (typeof arr[i] !== 'number') {\n arr[i] = 0;\n }\n }\n return arr;\n}\nmodule.exports = Color;","import { graphql, useStaticQuery } from 'gatsby';\nimport { SiteMetaDataQuery } from '../types/generated';\n\nconst useSiteMetadata = () => {\n const { site } = useStaticQuery(graphql`\n query SiteMetaData {\n site {\n siteMetadata {\n title\n description\n author\n siteUrl\n keywords\n }\n }\n }`,\n ) as SiteMetaDataQuery;\n return site!.siteMetadata! as {\n title: string,\n description: string,\n author: string,\n siteUrl: string,\n keywords: string[],\n };\n};\n\nexport default useSiteMetadata;","'use strict';\n\nmodule.exports = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n};","/*!\n * DrawSVGPlugin 3.6.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _toArray,\n _doc,\n _win,\n _isEdge,\n _coreInitted,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n },\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n },\n _numExp = /[-+=\\.]*\\d+[\\.e\\-\\+]*\\d*[e\\-\\+]*\\d*/gi,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n _types = {\n rect: [\"width\", \"height\"],\n circle: [\"r\", \"r\"],\n ellipse: [\"rx\", \"ry\"],\n line: [\"x2\", \"y2\"]\n },\n _round = function _round(value) {\n return Math.round(value * 10000) / 10000;\n },\n _parseNum = function _parseNum(value) {\n return parseFloat(value) || 0;\n },\n _parseSingleVal = function _parseSingleVal(value, length) {\n var num = _parseNum(value);\n return ~value.indexOf(\"%\") ? num / 100 * length : num;\n },\n _getAttributeAsNumber = function _getAttributeAsNumber(target, attr) {\n return _parseNum(target.getAttribute(attr));\n },\n _sqrt = Math.sqrt,\n _getDistance = function _getDistance(x1, y1, x2, y2, scaleX, scaleY) {\n return _sqrt(Math.pow((_parseNum(x2) - _parseNum(x1)) * scaleX, 2) + Math.pow((_parseNum(y2) - _parseNum(y1)) * scaleY, 2));\n },\n _warn = function _warn(message) {\n return console.warn(message);\n },\n _hasNonScalingStroke = function _hasNonScalingStroke(target) {\n return target.getAttribute(\"vector-effect\") === \"non-scaling-stroke\";\n },\n _bonusValidated = 1,\n //DrawSVGPlugin\n //accepts values like \"100%\" or \"20% 80%\" or \"20 50\" and parses it into an absolute start and end position on the line/stroke based on its length. Returns an an array with the start and end values, like [0, 243]\n _parse = function _parse(value, length, defaultStart) {\n var i = value.indexOf(\" \"),\n s,\n e;\n if (i < 0) {\n s = defaultStart !== undefined ? defaultStart + \"\" : value;\n e = value;\n } else {\n s = value.substr(0, i);\n e = value.substr(i + 1);\n }\n s = _parseSingleVal(s, length);\n e = _parseSingleVal(e, length);\n return s > e ? [e, s] : [s, e];\n },\n _getLength = function _getLength(target) {\n target = _toArray(target)[0];\n if (!target) {\n return 0;\n }\n var type = target.tagName.toLowerCase(),\n style = target.style,\n scaleX = 1,\n scaleY = 1,\n length,\n bbox,\n points,\n prevPoint,\n i,\n rx,\n ry;\n if (_hasNonScalingStroke(target)) {\n //non-scaling-stroke basically scales the shape and then strokes it at the screen-level (after transforms), thus we need to adjust the length accordingly.\n scaleY = target.getScreenCTM();\n scaleX = _sqrt(scaleY.a * scaleY.a + scaleY.b * scaleY.b);\n scaleY = _sqrt(scaleY.d * scaleY.d + scaleY.c * scaleY.c);\n }\n try {\n //IE bug: calling .getTotalLength() locks the repaint area of the stroke to whatever its current dimensions are on that frame/tick. To work around that, we must call getBBox() to force IE to recalculate things.\n bbox = target.getBBox(); //solely for fixing bug in IE - we don't actually use the bbox.\n } catch (e) {\n //firefox has a bug that throws an error if the element isn't visible.\n _warn(\"Some browsers won't measure invisible elements (like display:none or masks inside defs).\");\n }\n var _ref = bbox || {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n x = _ref.x,\n y = _ref.y,\n width = _ref.width,\n height = _ref.height;\n if ((!bbox || !width && !height) && _types[type]) {\n //if the element isn't visible, try to discern width/height using its attributes.\n width = _getAttributeAsNumber(target, _types[type][0]);\n height = _getAttributeAsNumber(target, _types[type][1]);\n if (type !== \"rect\" && type !== \"line\") {\n //double the radius for circles and ellipses\n width *= 2;\n height *= 2;\n }\n if (type === \"line\") {\n x = _getAttributeAsNumber(target, \"x1\");\n y = _getAttributeAsNumber(target, \"y1\");\n width = Math.abs(width - x);\n height = Math.abs(height - y);\n }\n }\n if (type === \"path\") {\n prevPoint = style.strokeDasharray;\n style.strokeDasharray = \"none\";\n length = target.getTotalLength() || 0;\n scaleX !== scaleY && _warn(\"Warning: length cannot be measured when vector-effect is non-scaling-stroke and the element isn't proportionally scaled.\");\n length *= (scaleX + scaleY) / 2;\n style.strokeDasharray = prevPoint;\n } else if (type === \"rect\") {\n length = width * 2 * scaleX + height * 2 * scaleY;\n } else if (type === \"line\") {\n length = _getDistance(x, y, x + width, y + height, scaleX, scaleY);\n } else if (type === \"polyline\" || type === \"polygon\") {\n points = target.getAttribute(\"points\").match(_numExp) || [];\n type === \"polygon\" && points.push(points[0], points[1]);\n length = 0;\n for (i = 2; i < points.length; i += 2) {\n length += _getDistance(points[i - 2], points[i - 1], points[i], points[i + 1], scaleX, scaleY) || 0;\n }\n } else if (type === \"circle\" || type === \"ellipse\") {\n rx = width / 2 * scaleX;\n ry = height / 2 * scaleY;\n length = Math.PI * (3 * (rx + ry) - _sqrt((3 * rx + ry) * (rx + 3 * ry)));\n }\n return length || 0;\n },\n _getPosition = function _getPosition(target, length) {\n target = _toArray(target)[0];\n if (!target) {\n return [0, 0];\n }\n length || (length = _getLength(target) + 1);\n var cs = _win.getComputedStyle(target),\n dash = cs.strokeDasharray || \"\",\n offset = _parseNum(cs.strokeDashoffset),\n i = dash.indexOf(\",\");\n i < 0 && (i = dash.indexOf(\" \"));\n dash = i < 0 ? length : _parseNum(dash.substr(0, i));\n dash > length && (dash = length);\n return [-offset || 0, dash - offset || 0];\n },\n _initCore = function _initCore() {\n if (_windowExists()) {\n _doc = document;\n _win = window;\n _coreInitted = gsap = _getGSAP();\n _toArray = gsap.utils.toArray;\n _isEdge = ((_win.navigator || {}).userAgent || \"\").indexOf(\"Edge\") !== -1; //Microsoft Edge has a bug that causes it not to redraw the path correctly if the stroke-linecap is anything other than \"butt\" (like \"round\") and it doesn't match the stroke-linejoin. A way to trigger it is to change the stroke-miterlimit, so we'll only do that if/when we have to (to maximize performance)\n }\n };\nexport var DrawSVGPlugin = {\n version: \"3.6.1\",\n name: \"drawSVG\",\n register: function register(core) {\n gsap = core;\n _initCore();\n },\n init: function init(target, value, tween, index, targets) {\n if (!target.getBBox) {\n return false;\n }\n _coreInitted || _initCore();\n var length = _getLength(target),\n start,\n end,\n cs;\n this._style = target.style;\n this._target = target;\n if (value + \"\" === \"true\") {\n value = \"0 100%\";\n } else if (!value) {\n value = \"0 0\";\n } else if ((value + \"\").indexOf(\" \") === -1) {\n value = \"0 \" + value;\n }\n start = _getPosition(target, length);\n end = _parse(value, length, start[0]);\n this._length = _round(length);\n this._dash = _round(start[1] - start[0]); //some browsers render artifacts if dash is 0, so we use a very small number in that case.\n\n this._offset = _round(-start[0]);\n this._dashPT = this.add(this, \"_dash\", this._dash, _round(end[1] - end[0]));\n this._offsetPT = this.add(this, \"_offset\", this._offset, _round(-end[0]));\n if (_isEdge) {\n //to work around a bug in Microsoft Edge, animate the stroke-miterlimit by 0.0001 just to trigger the repaint (unnecessary if it's \"round\" and stroke-linejoin is also \"round\"). Imperceptible, relatively high-performance, and effective. Another option was to set the \"d\" attribute to its current value on every tick, but that seems like it'd be much less performant.\n cs = _win.getComputedStyle(target);\n if (cs.strokeLinecap !== cs.strokeLinejoin) {\n end = _parseNum(cs.strokeMiterlimit);\n this.add(target.style, \"strokeMiterlimit\", end, end + 0.01);\n }\n }\n this._live = _hasNonScalingStroke(target) || ~(value + \"\").indexOf(\"live\");\n this._nowrap = ~(value + \"\").indexOf(\"nowrap\");\n this._props.push(\"drawSVG\");\n return _bonusValidated;\n },\n render: function render(ratio, data) {\n var pt = data._pt,\n style = data._style,\n length,\n lengthRatio,\n dash,\n offset;\n if (pt) {\n //when the element has vector-effect=\"non-scaling-stroke\" and the SVG is resized (like on a window resize), it actually changes the length of the stroke! So we must sense that and make the proper adjustments.\n if (data._live) {\n length = _getLength(data._target);\n if (length !== data._length) {\n lengthRatio = length / data._length;\n data._length = length;\n if (data._offsetPT) {\n data._offsetPT.s *= lengthRatio;\n data._offsetPT.c *= lengthRatio;\n }\n if (data._dashPT) {\n data._dashPT.s *= lengthRatio;\n data._dashPT.c *= lengthRatio;\n } else {\n data._dash *= lengthRatio;\n }\n }\n }\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n dash = data._dash || ratio && ratio !== 1 && 0.0001 || 0; // only let it be zero if it's at the start or end of the tween.\n\n length = data._length - dash + 0.1;\n offset = data._offset;\n dash && offset && dash + Math.abs(offset % data._length) > data._length - 0.2 && (offset += offset < 0 ? 0.1 : -0.1) && (length += 0.1);\n style.strokeDashoffset = dash ? offset : offset + 0.001;\n style.strokeDasharray = length < 0.2 ? \"none\" : dash ? dash + \"px,\" + (data._nowrap ? 999999 : length) + \"px\" : \"0px, 999999px\";\n }\n },\n getLength: _getLength,\n getPosition: _getPosition\n};\n_getGSAP() && gsap.registerPlugin(DrawSVGPlugin);\nexport { DrawSVGPlugin as default };","/*!\n * paths 3.6.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _svgPathExp = /[achlmqstvz]|(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n _numbersExp = /(?:(-)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n _scientific = /[\\+\\-]?\\d*\\.?\\d+e[\\+\\-]?\\d+/ig,\n _selectorExp = /(^[#\\.][a-z]|[a-y][a-z])/i,\n _DEG2RAD = Math.PI / 180,\n _RAD2DEG = 180 / Math.PI,\n _sin = Math.sin,\n _cos = Math.cos,\n _abs = Math.abs,\n _sqrt = Math.sqrt,\n _atan2 = Math.atan2,\n _largeNum = 1e8,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n },\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n },\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n },\n _temp = {},\n _temp2 = {},\n _roundingNum = 1e5,\n _wrapProgress = function _wrapProgress(progress) {\n return Math.round((progress + _largeNum) % 1 * _roundingNum) / _roundingNum || (progress < 0 ? 0 : 1);\n },\n //if progress lands on 1, the % will make it 0 which is why we || 1, but not if it's negative because it makes more sense for motion to end at 0 in that case.\n _round = function _round(value) {\n return Math.round(value * _roundingNum) / _roundingNum || 0;\n },\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 1e10) / 1e10 || 0;\n },\n _splitSegment = function _splitSegment(rawPath, segIndex, i, t) {\n var segment = rawPath[segIndex],\n shift = t === 1 ? 6 : subdivideSegment(segment, i, t);\n if (shift && shift + i + 2 < segment.length) {\n rawPath.splice(segIndex, 0, segment.slice(0, i + shift + 2));\n segment.splice(0, i + shift);\n return 1;\n }\n },\n _reverseRawPath = function _reverseRawPath(rawPath, skipOuter) {\n var i = rawPath.length;\n skipOuter || rawPath.reverse();\n while (i--) {\n rawPath[i].reversed || reverseSegment(rawPath[i]);\n }\n },\n _copyMetaData = function _copyMetaData(source, copy) {\n copy.totalLength = source.totalLength;\n if (source.samples) {\n //segment\n copy.samples = source.samples.slice(0);\n copy.lookup = source.lookup.slice(0);\n copy.minLength = source.minLength;\n copy.resolution = source.resolution;\n } else if (source.totalPoints) {\n //rawPath\n copy.totalPoints = source.totalPoints;\n }\n return copy;\n },\n //pushes a new segment into a rawPath, but if its starting values match the ending values of the last segment, it'll merge it into that same segment (to reduce the number of segments)\n _appendOrMerge = function _appendOrMerge(rawPath, segment) {\n var index = rawPath.length,\n prevSeg = rawPath[index - 1] || [],\n l = prevSeg.length;\n if (index && segment[0] === prevSeg[l - 2] && segment[1] === prevSeg[l - 1]) {\n segment = prevSeg.concat(segment.slice(2));\n index--;\n }\n rawPath[index] = segment;\n },\n _bestDistance;\n/* TERMINOLOGY\n - RawPath - an array of arrays, one for each Segment. A single RawPath could have multiple \"M\" commands, defining Segments (paths aren't always connected).\n - Segment - an array containing a sequence of Cubic Bezier coordinates in alternating x, y, x, y format. Starting anchor, then control point 1, control point 2, and ending anchor, then the next control point 1, control point 2, anchor, etc. Uses less memory than an array with a bunch of {x, y} points.\n - Bezier - a single cubic Bezier with a starting anchor, two control points, and an ending anchor.\n - the variable \"t\" is typically the position along an individual Bezier path (time) and it's NOT linear, meaning it could accelerate/decelerate based on the control points whereas the \"p\" or \"progress\" value is linearly mapped to the whole path, so it shouldn't really accelerate/decelerate based on control points. So a progress of 0.2 would be almost exactly 20% along the path. \"t\" is ONLY in an individual Bezier piece.\n */\n//accepts basic selector text, a path instance, a RawPath instance, or a Segment and returns a RawPath (makes it easy to homogenize things). If an element or selector text is passed in, it'll also cache the value so that if it's queried again, it'll just take the path data from there instead of parsing it all over again (as long as the path data itself hasn't changed - it'll check).\n\nexport function getRawPath(value) {\n value = _isString(value) && _selectorExp.test(value) ? document.querySelector(value) || value : value;\n var e = value.getAttribute ? value : 0,\n rawPath;\n if (e && (value = value.getAttribute(\"d\"))) {\n //implements caching\n if (!e._gsPath) {\n e._gsPath = {};\n }\n rawPath = e._gsPath[value];\n return rawPath && !rawPath._dirty ? rawPath : e._gsPath[value] = stringToRawPath(value);\n }\n return !value ? console.warn(\"Expecting a element or an SVG path data string\") : _isString(value) ? stringToRawPath(value) : _isNumber(value[0]) ? [value] : value;\n} //copies a RawPath WITHOUT the length meta data (for speed)\n\nexport function copyRawPath(rawPath) {\n var a = [],\n i = 0;\n for (; i < rawPath.length; i++) {\n a[i] = _copyMetaData(rawPath[i], rawPath[i].slice(0));\n }\n return _copyMetaData(rawPath, a);\n}\nexport function reverseSegment(segment) {\n var i = 0,\n y;\n segment.reverse(); //this will invert the order y, x, y, x so we must flip it back.\n\n for (; i < segment.length; i += 2) {\n y = segment[i];\n segment[i] = segment[i + 1];\n segment[i + 1] = y;\n }\n segment.reversed = !segment.reversed;\n}\nvar _createPath = function _createPath(e, ignore) {\n var path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\"),\n attr = [].slice.call(e.attributes),\n i = attr.length,\n name;\n ignore = \",\" + ignore + \",\";\n while (--i > -1) {\n name = attr[i].nodeName.toLowerCase(); //in Microsoft Edge, if you don't set the attribute with a lowercase name, it doesn't render correctly! Super weird.\n\n if (ignore.indexOf(\",\" + name + \",\") < 0) {\n path.setAttributeNS(null, name, attr[i].nodeValue);\n }\n }\n return path;\n },\n _typeAttrs = {\n rect: \"rx,ry,x,y,width,height\",\n circle: \"r,cx,cy\",\n ellipse: \"rx,ry,cx,cy\",\n line: \"x1,x2,y1,y2\"\n },\n _attrToObj = function _attrToObj(e, attrs) {\n var props = attrs ? attrs.split(\",\") : [],\n obj = {},\n i = props.length;\n while (--i > -1) {\n obj[props[i]] = +e.getAttribute(props[i]) || 0;\n }\n return obj;\n }; //converts an SVG shape like , , , , , etc. to a , swapping it in and copying the attributes to match.\n\nexport function convertToPath(element, swap) {\n var type = element.tagName.toLowerCase(),\n circ = 0.552284749831,\n data,\n x,\n y,\n r,\n ry,\n path,\n rcirc,\n rycirc,\n points,\n w,\n h,\n x2,\n x3,\n x4,\n x5,\n x6,\n y2,\n y3,\n y4,\n y5,\n y6,\n attr;\n if (type === \"path\" || !element.getBBox) {\n return element;\n }\n path = _createPath(element, \"x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points\");\n attr = _attrToObj(element, _typeAttrs[type]);\n if (type === \"rect\") {\n r = attr.rx;\n ry = attr.ry || r;\n x = attr.x;\n y = attr.y;\n w = attr.width - r * 2;\n h = attr.height - ry * 2;\n if (r || ry) {\n //if there are rounded corners, render cubic beziers\n x2 = x + r * (1 - circ);\n x3 = x + r;\n x4 = x3 + w;\n x5 = x4 + r * circ;\n x6 = x4 + r;\n y2 = y + ry * (1 - circ);\n y3 = y + ry;\n y4 = y3 + h;\n y5 = y4 + ry * circ;\n y6 = y4 + ry;\n data = \"M\" + x6 + \",\" + y3 + \" V\" + y4 + \" C\" + [x6, y5, x5, y6, x4, y6, x4 - (x4 - x3) / 3, y6, x3 + (x4 - x3) / 3, y6, x3, y6, x2, y6, x, y5, x, y4, x, y4 - (y4 - y3) / 3, x, y3 + (y4 - y3) / 3, x, y3, x, y2, x2, y, x3, y, x3 + (x4 - x3) / 3, y, x4 - (x4 - x3) / 3, y, x4, y, x5, y, x6, y2, x6, y3].join(\",\") + \"z\";\n } else {\n data = \"M\" + (x + w) + \",\" + y + \" v\" + h + \" h\" + -w + \" v\" + -h + \" h\" + w + \"z\";\n }\n } else if (type === \"circle\" || type === \"ellipse\") {\n if (type === \"circle\") {\n r = ry = attr.r;\n rycirc = r * circ;\n } else {\n r = attr.rx;\n ry = attr.ry;\n rycirc = ry * circ;\n }\n x = attr.cx;\n y = attr.cy;\n rcirc = r * circ;\n data = \"M\" + (x + r) + \",\" + y + \" C\" + [x + r, y + rycirc, x + rcirc, y + ry, x, y + ry, x - rcirc, y + ry, x - r, y + rycirc, x - r, y, x - r, y - rycirc, x - rcirc, y - ry, x, y - ry, x + rcirc, y - ry, x + r, y - rycirc, x + r, y].join(\",\") + \"z\";\n } else if (type === \"line\") {\n data = \"M\" + attr.x1 + \",\" + attr.y1 + \" L\" + attr.x2 + \",\" + attr.y2; //previously, we just converted to \"Mx,y Lx,y\" but Safari has bugs that cause that not to render properly when using a stroke-dasharray that's not fully visible! Using a cubic bezier fixes that issue.\n } else if (type === \"polyline\" || type === \"polygon\") {\n points = (element.getAttribute(\"points\") + \"\").match(_numbersExp) || [];\n x = points.shift();\n y = points.shift();\n data = \"M\" + x + \",\" + y + \" L\" + points.join(\",\");\n if (type === \"polygon\") {\n data += \",\" + x + \",\" + y + \"z\";\n }\n }\n path.setAttribute(\"d\", rawPathToString(path._gsRawPath = stringToRawPath(data)));\n if (swap && element.parentNode) {\n element.parentNode.insertBefore(path, element);\n element.parentNode.removeChild(element);\n }\n return path;\n} //returns the rotation (in degrees) at a particular progress on a rawPath (the slope of the tangent)\n\nexport function getRotationAtProgress(rawPath, progress) {\n var d = getProgressData(rawPath, progress >= 1 ? 1 - 1e-9 : progress ? progress : 1e-9);\n return getRotationAtBezierT(d.segment, d.i, d.t);\n}\nfunction getRotationAtBezierT(segment, i, t) {\n var a = segment[i],\n b = segment[i + 2],\n c = segment[i + 4],\n x;\n a += (b - a) * t;\n b += (c - b) * t;\n a += (b - a) * t;\n x = b + (c + (segment[i + 6] - c) * t - b) * t - a;\n a = segment[i + 1];\n b = segment[i + 3];\n c = segment[i + 5];\n a += (b - a) * t;\n b += (c - b) * t;\n a += (b - a) * t;\n return _round(_atan2(b + (c + (segment[i + 7] - c) * t - b) * t - a, x) * _RAD2DEG);\n}\nexport function sliceRawPath(rawPath, start, end) {\n end = _isUndefined(end) ? 1 : _roundPrecise(end) || 0; // we must round to avoid issues like 4.15 / 8 = 0.8300000000000001 instead of 0.83 or 2.8 / 5 = 0.5599999999999999 instead of 0.56 and if someone is doing a loop like start: 2.8 / 0.5, end: 2.8 / 0.5 + 1.\n\n start = _roundPrecise(start) || 0;\n var loops = Math.max(0, ~~(_abs(end - start) - 1e-8)),\n path = copyRawPath(rawPath);\n if (start > end) {\n start = 1 - start;\n end = 1 - end;\n _reverseRawPath(path);\n path.totalLength = 0;\n }\n if (start < 0 || end < 0) {\n var offset = Math.abs(~~Math.min(start, end)) + 1;\n start += offset;\n end += offset;\n }\n path.totalLength || cacheRawPathMeasurements(path);\n var wrap = end > 1,\n s = getProgressData(path, start, _temp, true),\n e = getProgressData(path, end, _temp2),\n eSeg = e.segment,\n sSeg = s.segment,\n eSegIndex = e.segIndex,\n sSegIndex = s.segIndex,\n ei = e.i,\n si = s.i,\n sameSegment = sSegIndex === eSegIndex,\n sameBezier = ei === si && sameSegment,\n wrapsBehind,\n sShift,\n eShift,\n i,\n copy,\n totalSegments,\n l,\n j;\n if (wrap || loops) {\n wrapsBehind = eSegIndex < sSegIndex || sameSegment && ei < si || sameBezier && e.t < s.t;\n if (_splitSegment(path, sSegIndex, si, s.t)) {\n sSegIndex++;\n if (!wrapsBehind) {\n eSegIndex++;\n if (sameBezier) {\n e.t = (e.t - s.t) / (1 - s.t);\n ei = 0;\n } else if (sameSegment) {\n ei -= si;\n }\n }\n }\n if (1 - (end - start) < 1e-5) {\n eSegIndex = sSegIndex - 1;\n } else if (!e.t && eSegIndex) {\n eSegIndex--;\n } else if (_splitSegment(path, eSegIndex, ei, e.t) && wrapsBehind) {\n sSegIndex++;\n }\n if (s.t === 1) {\n sSegIndex = (sSegIndex + 1) % path.length;\n }\n copy = [];\n totalSegments = path.length;\n l = 1 + totalSegments * loops;\n j = sSegIndex;\n l += (totalSegments - sSegIndex + eSegIndex) % totalSegments;\n for (i = 0; i < l; i++) {\n _appendOrMerge(copy, path[j++ % totalSegments]);\n }\n path = copy;\n } else {\n eShift = e.t === 1 ? 6 : subdivideSegment(eSeg, ei, e.t);\n if (start !== end) {\n sShift = subdivideSegment(sSeg, si, sameBezier ? s.t / e.t : s.t);\n sameSegment && (eShift += sShift);\n eSeg.splice(ei + eShift + 2);\n (sShift || si) && sSeg.splice(0, si + sShift);\n i = path.length;\n while (i--) {\n //chop off any extra segments\n (i < sSegIndex || i > eSegIndex) && path.splice(i, 1);\n }\n } else {\n eSeg.angle = getRotationAtBezierT(eSeg, ei + eShift, 0); //record the value before we chop because it'll be impossible to determine the angle after its length is 0!\n\n ei += eShift;\n s = eSeg[ei];\n e = eSeg[ei + 1];\n eSeg.length = eSeg.totalLength = 0;\n eSeg.totalPoints = path.totalPoints = 8;\n eSeg.push(s, e, s, e, s, e, s, e);\n }\n }\n path.totalLength = 0;\n return path;\n} //measures a Segment according to its resolution (so if segment.resolution is 6, for example, it'll take 6 samples equally across each Bezier) and create/populate a \"samples\" Array that has the length up to each of those sample points (always increasing from the start) as well as a \"lookup\" array that's broken up according to the smallest distance between 2 samples. This gives us a very fast way of looking up a progress position rather than looping through all the points/Beziers. You can optionally have it only measure a subset, starting at startIndex and going for a specific number of beziers (remember, there are 3 x/y pairs each, for a total of 6 elements for each Bezier). It will also populate a \"totalLength\" property, but that's not generally super accurate because by default it'll only take 6 samples per Bezier. But for performance reasons, it's perfectly adequate for measuring progress values along the path. If you need a more accurate totalLength, either increase the resolution or use the more advanced bezierToPoints() method which keeps adding points until they don't deviate by more than a certain precision value.\n\nfunction measureSegment(segment, startIndex, bezierQty) {\n startIndex = startIndex || 0;\n if (!segment.samples) {\n segment.samples = [];\n segment.lookup = [];\n }\n var resolution = ~~segment.resolution || 12,\n inc = 1 / resolution,\n endIndex = bezierQty ? startIndex + bezierQty * 6 + 1 : segment.length,\n x1 = segment[startIndex],\n y1 = segment[startIndex + 1],\n samplesIndex = startIndex ? startIndex / 6 * resolution : 0,\n samples = segment.samples,\n lookup = segment.lookup,\n min = (startIndex ? segment.minLength : _largeNum) || _largeNum,\n prevLength = samples[samplesIndex + bezierQty * resolution - 1],\n length = startIndex ? samples[samplesIndex - 1] : 0,\n i,\n j,\n x4,\n x3,\n x2,\n xd,\n xd1,\n y4,\n y3,\n y2,\n yd,\n yd1,\n inv,\n t,\n lengthIndex,\n l,\n segLength;\n samples.length = lookup.length = 0;\n for (j = startIndex + 2; j < endIndex; j += 6) {\n x4 = segment[j + 4] - x1;\n x3 = segment[j + 2] - x1;\n x2 = segment[j] - x1;\n y4 = segment[j + 5] - y1;\n y3 = segment[j + 3] - y1;\n y2 = segment[j + 1] - y1;\n xd = xd1 = yd = yd1 = 0;\n if (_abs(x4) < 1e-5 && _abs(y4) < 1e-5 && _abs(x2) + _abs(y2) < 1e-5) {\n //dump points that are sufficiently close (basically right on top of each other, making a bezier super tiny or 0 length)\n if (segment.length > 8) {\n segment.splice(j, 6);\n j -= 6;\n endIndex -= 6;\n }\n } else {\n for (i = 1; i <= resolution; i++) {\n t = inc * i;\n inv = 1 - t;\n xd = xd1 - (xd1 = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t);\n yd = yd1 - (yd1 = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t);\n l = _sqrt(yd * yd + xd * xd);\n if (l < min) {\n min = l;\n }\n length += l;\n samples[samplesIndex++] = length;\n }\n }\n x1 += x4;\n y1 += y4;\n }\n if (prevLength) {\n prevLength -= length;\n for (; samplesIndex < samples.length; samplesIndex++) {\n samples[samplesIndex] += prevLength;\n }\n }\n if (samples.length && min) {\n segment.totalLength = segLength = samples[samples.length - 1] || 0;\n segment.minLength = min;\n l = lengthIndex = 0;\n for (i = 0; i < segLength; i += min) {\n lookup[l++] = samples[lengthIndex] < i ? ++lengthIndex : lengthIndex;\n }\n } else {\n segment.totalLength = samples[0] = 0;\n }\n return startIndex ? length - samples[startIndex / 2 - 1] : length;\n}\nexport function cacheRawPathMeasurements(rawPath, resolution) {\n var pathLength, points, i;\n for (i = pathLength = points = 0; i < rawPath.length; i++) {\n rawPath[i].resolution = ~~resolution || 12; //steps per Bezier curve (anchor, 2 control points, to anchor)\n\n points += rawPath[i].length;\n pathLength += measureSegment(rawPath[i]);\n }\n rawPath.totalPoints = points;\n rawPath.totalLength = pathLength;\n return rawPath;\n} //divide segment[i] at position t (value between 0 and 1, progress along that particular cubic bezier segment that starts at segment[i]). Returns how many elements were spliced into the segment array (either 0 or 6)\n\nexport function subdivideSegment(segment, i, t) {\n if (t <= 0 || t >= 1) {\n return 0;\n }\n var ax = segment[i],\n ay = segment[i + 1],\n cp1x = segment[i + 2],\n cp1y = segment[i + 3],\n cp2x = segment[i + 4],\n cp2y = segment[i + 5],\n bx = segment[i + 6],\n by = segment[i + 7],\n x1a = ax + (cp1x - ax) * t,\n x2 = cp1x + (cp2x - cp1x) * t,\n y1a = ay + (cp1y - ay) * t,\n y2 = cp1y + (cp2y - cp1y) * t,\n x1 = x1a + (x2 - x1a) * t,\n y1 = y1a + (y2 - y1a) * t,\n x2a = cp2x + (bx - cp2x) * t,\n y2a = cp2y + (by - cp2y) * t;\n x2 += (x2a - x2) * t;\n y2 += (y2a - y2) * t;\n segment.splice(i + 2, 4, _round(x1a),\n //first control point\n _round(y1a), _round(x1),\n //second control point\n _round(y1), _round(x1 + (x2 - x1) * t),\n //new fabricated anchor on line\n _round(y1 + (y2 - y1) * t), _round(x2),\n //third control point\n _round(y2), _round(x2a),\n //fourth control point\n _round(y2a));\n segment.samples && segment.samples.splice(i / 6 * segment.resolution | 0, 0, 0, 0, 0, 0, 0, 0);\n return 6;\n} // returns an object {path, segment, segIndex, i, t}\n\nfunction getProgressData(rawPath, progress, decoratee, pushToNextIfAtEnd) {\n decoratee = decoratee || {};\n rawPath.totalLength || cacheRawPathMeasurements(rawPath);\n if (progress < 0 || progress > 1) {\n progress = _wrapProgress(progress);\n }\n var segIndex = 0,\n segment = rawPath[0],\n samples,\n resolution,\n length,\n min,\n max,\n i,\n t;\n if (!progress) {\n t = i = segIndex = 0;\n segment = rawPath[0];\n } else if (progress === 1) {\n t = 1;\n segIndex = rawPath.length - 1;\n segment = rawPath[segIndex];\n i = segment.length - 8;\n } else {\n if (rawPath.length > 1) {\n //speed optimization: most of the time, there's only one segment so skip the recursion.\n length = rawPath.totalLength * progress;\n max = i = 0;\n while ((max += rawPath[i++].totalLength) < length) {\n segIndex = i;\n }\n segment = rawPath[segIndex];\n min = max - segment.totalLength;\n progress = (length - min) / (max - min) || 0;\n }\n samples = segment.samples;\n resolution = segment.resolution; //how many samples per cubic bezier chunk\n\n length = segment.totalLength * progress;\n i = segment.lookup[~~(length / segment.minLength)] || 0;\n min = i ? samples[i - 1] : 0;\n max = samples[i];\n if (max < length) {\n min = max;\n max = samples[++i];\n }\n t = 1 / resolution * ((length - min) / (max - min) + i % resolution);\n i = ~~(i / resolution) * 6;\n if (pushToNextIfAtEnd && t === 1) {\n if (i + 6 < segment.length) {\n i += 6;\n t = 0;\n } else if (segIndex + 1 < rawPath.length) {\n i = t = 0;\n segment = rawPath[++segIndex];\n }\n }\n }\n decoratee.t = t;\n decoratee.i = i;\n decoratee.path = rawPath;\n decoratee.segment = segment;\n decoratee.segIndex = segIndex;\n return decoratee;\n}\nexport function getPositionOnPath(rawPath, progress, includeAngle, point) {\n var segment = rawPath[0],\n result = point || {},\n samples,\n resolution,\n length,\n min,\n max,\n i,\n t,\n a,\n inv;\n if (progress < 0 || progress > 1) {\n progress = _wrapProgress(progress);\n }\n if (rawPath.length > 1) {\n //speed optimization: most of the time, there's only one segment so skip the recursion.\n length = rawPath.totalLength * progress;\n max = i = 0;\n while ((max += rawPath[i++].totalLength) < length) {\n segment = rawPath[i];\n }\n min = max - segment.totalLength;\n progress = (length - min) / (max - min) || 0;\n }\n samples = segment.samples;\n resolution = segment.resolution;\n length = segment.totalLength * progress;\n i = segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0;\n min = i ? samples[i - 1] : 0;\n max = samples[i];\n if (max < length) {\n min = max;\n max = samples[++i];\n }\n t = 1 / resolution * ((length - min) / (max - min) + i % resolution) || 0;\n inv = 1 - t;\n i = ~~(i / resolution) * 6;\n a = segment[i];\n result.x = _round((t * t * (segment[i + 6] - a) + 3 * inv * (t * (segment[i + 4] - a) + inv * (segment[i + 2] - a))) * t + a);\n result.y = _round((t * t * (segment[i + 7] - (a = segment[i + 1])) + 3 * inv * (t * (segment[i + 5] - a) + inv * (segment[i + 3] - a))) * t + a);\n if (includeAngle) {\n result.angle = segment.totalLength ? getRotationAtBezierT(segment, i, t >= 1 ? 1 - 1e-9 : t ? t : 1e-9) : segment.angle || 0;\n }\n return result;\n} //applies a matrix transform to RawPath (or a segment in a RawPath) and returns whatever was passed in (it transforms the values in the array(s), not a copy).\n\nexport function transformRawPath(rawPath, a, b, c, d, tx, ty) {\n var j = rawPath.length,\n segment,\n l,\n i,\n x,\n y;\n while (--j > -1) {\n segment = rawPath[j];\n l = segment.length;\n for (i = 0; i < l; i += 2) {\n x = segment[i];\n y = segment[i + 1];\n segment[i] = x * a + y * c + tx;\n segment[i + 1] = x * b + y * d + ty;\n }\n }\n rawPath._dirty = 1;\n return rawPath;\n} // translates SVG arc data into a segment (cubic beziers). Angle is in degrees.\n\nfunction arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) {\n if (lastX === x && lastY === y) {\n return;\n }\n rx = _abs(rx);\n ry = _abs(ry);\n var angleRad = angle % 360 * _DEG2RAD,\n cosAngle = _cos(angleRad),\n sinAngle = _sin(angleRad),\n PI = Math.PI,\n TWOPI = PI * 2,\n dx2 = (lastX - x) / 2,\n dy2 = (lastY - y) / 2,\n x1 = cosAngle * dx2 + sinAngle * dy2,\n y1 = -sinAngle * dx2 + cosAngle * dy2,\n x1_sq = x1 * x1,\n y1_sq = y1 * y1,\n radiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry);\n if (radiiCheck > 1) {\n rx = _sqrt(radiiCheck) * rx;\n ry = _sqrt(radiiCheck) * ry;\n }\n var rx_sq = rx * rx,\n ry_sq = ry * ry,\n sq = (rx_sq * ry_sq - rx_sq * y1_sq - ry_sq * x1_sq) / (rx_sq * y1_sq + ry_sq * x1_sq);\n if (sq < 0) {\n sq = 0;\n }\n var coef = (largeArcFlag === sweepFlag ? -1 : 1) * _sqrt(sq),\n cx1 = coef * (rx * y1 / ry),\n cy1 = coef * -(ry * x1 / rx),\n sx2 = (lastX + x) / 2,\n sy2 = (lastY + y) / 2,\n cx = sx2 + (cosAngle * cx1 - sinAngle * cy1),\n cy = sy2 + (sinAngle * cx1 + cosAngle * cy1),\n ux = (x1 - cx1) / rx,\n uy = (y1 - cy1) / ry,\n vx = (-x1 - cx1) / rx,\n vy = (-y1 - cy1) / ry,\n temp = ux * ux + uy * uy,\n angleStart = (uy < 0 ? -1 : 1) * Math.acos(ux / _sqrt(temp)),\n angleExtent = (ux * vy - uy * vx < 0 ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt(temp * (vx * vx + vy * vy)));\n isNaN(angleExtent) && (angleExtent = PI); //rare edge case. Math.cos(-1) is NaN.\n\n if (!sweepFlag && angleExtent > 0) {\n angleExtent -= TWOPI;\n } else if (sweepFlag && angleExtent < 0) {\n angleExtent += TWOPI;\n }\n angleStart %= TWOPI;\n angleExtent %= TWOPI;\n var segments = Math.ceil(_abs(angleExtent) / (TWOPI / 4)),\n rawPath = [],\n angleIncrement = angleExtent / segments,\n controlLength = 4 / 3 * _sin(angleIncrement / 2) / (1 + _cos(angleIncrement / 2)),\n ma = cosAngle * rx,\n mb = sinAngle * rx,\n mc = sinAngle * -ry,\n md = cosAngle * ry,\n i;\n for (i = 0; i < segments; i++) {\n angle = angleStart + i * angleIncrement;\n x1 = _cos(angle);\n y1 = _sin(angle);\n ux = _cos(angle += angleIncrement);\n uy = _sin(angle);\n rawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy);\n } //now transform according to the actual size of the ellipse/arc (the beziers were noramlized, between 0 and 1 on a circle).\n\n for (i = 0; i < rawPath.length; i += 2) {\n x1 = rawPath[i];\n y1 = rawPath[i + 1];\n rawPath[i] = x1 * ma + y1 * mc + cx;\n rawPath[i + 1] = x1 * mb + y1 * md + cy;\n }\n rawPath[i - 2] = x; //always set the end to exactly where it's supposed to be\n\n rawPath[i - 1] = y;\n return rawPath;\n} //Spits back a RawPath with absolute coordinates. Each segment starts with a \"moveTo\" command (x coordinate, then y) and then 2 control points (x, y, x, y), then anchor. The goal is to minimize memory and maximize speed.\n\nexport function stringToRawPath(d) {\n var a = (d + \"\").replace(_scientific, function (m) {\n var n = +m;\n return n < 0.0001 && n > -0.0001 ? 0 : n;\n }).match(_svgPathExp) || [],\n //some authoring programs spit out very small numbers in scientific notation like \"1e-5\", so make sure we round that down to 0 first.\n path = [],\n relativeX = 0,\n relativeY = 0,\n twoThirds = 2 / 3,\n elements = a.length,\n points = 0,\n errorMessage = \"ERROR: malformed path: \" + d,\n i,\n j,\n x,\n y,\n command,\n isRelative,\n segment,\n startX,\n startY,\n difX,\n difY,\n beziers,\n prevCommand,\n flag1,\n flag2,\n line = function line(sx, sy, ex, ey) {\n difX = (ex - sx) / 3;\n difY = (ey - sy) / 3;\n segment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey);\n };\n if (!d || !isNaN(a[0]) || isNaN(a[1])) {\n console.log(errorMessage);\n return path;\n }\n for (i = 0; i < elements; i++) {\n prevCommand = command;\n if (isNaN(a[i])) {\n command = a[i].toUpperCase();\n isRelative = command !== a[i]; //lower case means relative\n } else {\n //commands like \"C\" can be strung together without any new command characters between.\n i--;\n }\n x = +a[i + 1];\n y = +a[i + 2];\n if (isRelative) {\n x += relativeX;\n y += relativeY;\n }\n if (!i) {\n startX = x;\n startY = y;\n } // \"M\" (move)\n\n if (command === \"M\") {\n if (segment) {\n if (segment.length < 8) {\n //if the path data was funky and just had a M with no actual drawing anywhere, skip it.\n path.length -= 1;\n } else {\n points += segment.length;\n }\n }\n relativeX = startX = x;\n relativeY = startY = y;\n segment = [x, y];\n path.push(segment);\n i += 2;\n command = \"L\"; //an \"M\" with more than 2 values gets interpreted as \"lineTo\" commands (\"L\").\n // \"C\" (cubic bezier)\n } else if (command === \"C\") {\n if (!segment) {\n segment = [0, 0];\n }\n if (!isRelative) {\n relativeX = relativeY = 0;\n } //note: \"*1\" is just a fast/short way to cast the value as a Number. WAAAY faster in Chrome, slightly slower in Firefox.\n\n segment.push(x, y, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, relativeX += a[i + 5] * 1, relativeY += a[i + 6] * 1);\n i += 6; // \"S\" (continuation of cubic bezier)\n } else if (command === \"S\") {\n difX = relativeX;\n difY = relativeY;\n if (prevCommand === \"C\" || prevCommand === \"S\") {\n difX += relativeX - segment[segment.length - 4];\n difY += relativeY - segment[segment.length - 3];\n }\n if (!isRelative) {\n relativeX = relativeY = 0;\n }\n segment.push(difX, difY, x, y, relativeX += a[i + 3] * 1, relativeY += a[i + 4] * 1);\n i += 4; // \"Q\" (quadratic bezier)\n } else if (command === \"Q\") {\n difX = relativeX + (x - relativeX) * twoThirds;\n difY = relativeY + (y - relativeY) * twoThirds;\n if (!isRelative) {\n relativeX = relativeY = 0;\n }\n relativeX += a[i + 3] * 1;\n relativeY += a[i + 4] * 1;\n segment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY);\n i += 4; // \"T\" (continuation of quadratic bezier)\n } else if (command === \"T\") {\n difX = relativeX - segment[segment.length - 4];\n difY = relativeY - segment[segment.length - 3];\n segment.push(relativeX + difX, relativeY + difY, x + (relativeX + difX * 1.5 - x) * twoThirds, y + (relativeY + difY * 1.5 - y) * twoThirds, relativeX = x, relativeY = y);\n i += 2; // \"H\" (horizontal line)\n } else if (command === \"H\") {\n line(relativeX, relativeY, relativeX = x, relativeY);\n i += 1; // \"V\" (vertical line)\n } else if (command === \"V\") {\n //adjust values because the first (and only one) isn't x in this case, it's y.\n line(relativeX, relativeY, relativeX, relativeY = x + (isRelative ? relativeY - relativeX : 0));\n i += 1; // \"L\" (line) or \"Z\" (close)\n } else if (command === \"L\" || command === \"Z\") {\n if (command === \"Z\") {\n x = startX;\n y = startY;\n segment.closed = true;\n }\n if (command === \"L\" || _abs(relativeX - x) > 0.5 || _abs(relativeY - y) > 0.5) {\n line(relativeX, relativeY, x, y);\n if (command === \"L\") {\n i += 2;\n }\n }\n relativeX = x;\n relativeY = y; // \"A\" (arc)\n } else if (command === \"A\") {\n flag1 = a[i + 4];\n flag2 = a[i + 5];\n difX = a[i + 6];\n difY = a[i + 7];\n j = 7;\n if (flag1.length > 1) {\n // for cases when the flags are merged, like \"a8 8 0 018 8\" (the 0 and 1 flags are WITH the x value of 8, but it could also be \"a8 8 0 01-8 8\" so it may include x or not)\n if (flag1.length < 3) {\n difY = difX;\n difX = flag2;\n j--;\n } else {\n difY = flag2;\n difX = flag1.substr(2);\n j -= 2;\n }\n flag2 = flag1.charAt(1);\n flag1 = flag1.charAt(0);\n }\n beziers = arcToSegment(relativeX, relativeY, +a[i + 1], +a[i + 2], +a[i + 3], +flag1, +flag2, (isRelative ? relativeX : 0) + difX * 1, (isRelative ? relativeY : 0) + difY * 1);\n i += j;\n if (beziers) {\n for (j = 0; j < beziers.length; j++) {\n segment.push(beziers[j]);\n }\n }\n relativeX = segment[segment.length - 2];\n relativeY = segment[segment.length - 1];\n } else {\n console.log(errorMessage);\n }\n }\n i = segment.length;\n if (i < 6) {\n //in case there's odd SVG like a M0,0 command at the very end.\n path.pop();\n i = 0;\n } else if (segment[0] === segment[i - 2] && segment[1] === segment[i - 1]) {\n segment.closed = true;\n }\n path.totalPoints = points + i;\n return path;\n} //populates the points array in alternating x/y values (like [x, y, x, y...] instead of individual point objects [{x, y}, {x, y}...] to conserve memory and stay in line with how we're handling segment arrays\n\nexport function bezierToPoints(x1, y1, x2, y2, x3, y3, x4, y4, threshold, points, index) {\n var x12 = (x1 + x2) / 2,\n y12 = (y1 + y2) / 2,\n x23 = (x2 + x3) / 2,\n y23 = (y2 + y3) / 2,\n x34 = (x3 + x4) / 2,\n y34 = (y3 + y4) / 2,\n x123 = (x12 + x23) / 2,\n y123 = (y12 + y23) / 2,\n x234 = (x23 + x34) / 2,\n y234 = (y23 + y34) / 2,\n x1234 = (x123 + x234) / 2,\n y1234 = (y123 + y234) / 2,\n dx = x4 - x1,\n dy = y4 - y1,\n d2 = _abs((x2 - x4) * dy - (y2 - y4) * dx),\n d3 = _abs((x3 - x4) * dy - (y3 - y4) * dx),\n length;\n if (!points) {\n points = [x1, y1, x4, y4];\n index = 2;\n }\n points.splice(index || points.length - 2, 0, x1234, y1234);\n if ((d2 + d3) * (d2 + d3) > threshold * (dx * dx + dy * dy)) {\n length = points.length;\n bezierToPoints(x1, y1, x12, y12, x123, y123, x1234, y1234, threshold, points, index);\n bezierToPoints(x1234, y1234, x234, y234, x34, y34, x4, y4, threshold, points, index + 2 + (points.length - length));\n }\n return points;\n}\n/*\nfunction getAngleBetweenPoints(x0, y0, x1, y1, x2, y2) { //angle between 3 points in radians\n\tvar dx1 = x1 - x0,\n\t\tdy1 = y1 - y0,\n\t\tdx2 = x2 - x1,\n\t\tdy2 = y2 - y1,\n\t\tdx3 = x2 - x0,\n\t\tdy3 = y2 - y0,\n\t\ta = dx1 * dx1 + dy1 * dy1,\n\t\tb = dx2 * dx2 + dy2 * dy2,\n\t\tc = dx3 * dx3 + dy3 * dy3;\n\treturn Math.acos( (a + b - c) / _sqrt(4 * a * b) );\n},\n*/\n//pointsToSegment() doesn't handle flat coordinates (where y is always 0) the way we need (the resulting control points are always right on top of the anchors), so this function basically makes the control points go directly up and down, varying in length based on the curviness (more curvy, further control points)\n\nexport function flatPointsToSegment(points, curviness) {\n if (curviness === void 0) {\n curviness = 1;\n }\n var x = points[0],\n y = 0,\n segment = [x, y],\n i = 2;\n for (; i < points.length; i += 2) {\n segment.push(x, y, points[i], y = (points[i] - x) * curviness / 2, x = points[i], -y);\n }\n return segment;\n} //points is an array of x/y points, like [x, y, x, y, x, y]\n\nexport function pointsToSegment(points, curviness, cornerThreshold) {\n //points = simplifyPoints(points, tolerance);\n _abs(points[0] - points[2]) < 1e-4 && _abs(points[1] - points[3]) < 1e-4 && (points = points.slice(2)); // if the first two points are super close, dump the first one.\n\n var l = points.length - 2,\n x = +points[0],\n y = +points[1],\n nextX = +points[2],\n nextY = +points[3],\n segment = [x, y, x, y],\n dx2 = nextX - x,\n dy2 = nextY - y,\n closed = Math.abs(points[l] - x) < 0.001 && Math.abs(points[l + 1] - y) < 0.001,\n prevX,\n prevY,\n angle,\n slope,\n i,\n dx1,\n dx3,\n dy1,\n dy3,\n d1,\n d2,\n a,\n b,\n c;\n if (isNaN(cornerThreshold)) {\n cornerThreshold = Math.PI / 10;\n }\n if (closed) {\n // if the start and end points are basically on top of each other, close the segment by adding the 2nd point to the end, and the 2nd-to-last point to the beginning (we'll remove them at the end, but this allows the curvature to look perfect)\n points.push(nextX, nextY);\n nextX = x;\n nextY = y;\n x = points[l - 2];\n y = points[l - 1];\n points.unshift(x, y);\n l += 4;\n }\n curviness = curviness || curviness === 0 ? +curviness : 1;\n for (i = 2; i < l; i += 2) {\n prevX = x;\n prevY = y;\n x = nextX;\n y = nextY;\n nextX = +points[i + 2];\n nextY = +points[i + 3];\n if (x === nextX && y === nextY) {\n continue;\n }\n dx1 = dx2;\n dy1 = dy2;\n dx2 = nextX - x;\n dy2 = nextY - y;\n dx3 = nextX - prevX;\n dy3 = nextY - prevY;\n a = dx1 * dx1 + dy1 * dy1;\n b = dx2 * dx2 + dy2 * dy2;\n c = dx3 * dx3 + dy3 * dy3;\n angle = Math.acos((a + b - c) / _sqrt(4 * a * b)); //angle between the 3 points\n\n d2 = angle / Math.PI * curviness; //temporary precalculation for speed (reusing d2 variable)\n\n d1 = _sqrt(a) * d2; //the tighter the angle, the shorter we make the handles in proportion.\n\n d2 *= _sqrt(b);\n if (x !== prevX || y !== prevY) {\n if (angle > cornerThreshold) {\n slope = _atan2(dy3, dx3);\n segment.push(_round(x - _cos(slope) * d1),\n //first control point\n _round(y - _sin(slope) * d1), _round(x),\n //anchor\n _round(y), _round(x + _cos(slope) * d2),\n //second control point\n _round(y + _sin(slope) * d2));\n } else {\n slope = _atan2(dy1, dx1);\n segment.push(_round(x - _cos(slope) * d1),\n //first control point\n _round(y - _sin(slope) * d1));\n slope = _atan2(dy2, dx2);\n segment.push(_round(x),\n //anchor\n _round(y), _round(x + _cos(slope) * d2),\n //second control point\n _round(y + _sin(slope) * d2));\n }\n }\n }\n x !== nextX || y !== nextY || segment.length < 4 ? segment.push(_round(nextX), _round(nextY), _round(nextX), _round(nextY)) : segment.length -= 2;\n if (closed) {\n segment.splice(0, 6);\n segment.length = segment.length - 6;\n }\n return segment;\n} //returns the squared distance between an x/y coordinate and a segment between x1/y1 and x2/y2\n\nfunction pointToSegDist(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1,\n dy = y2 - y1,\n t;\n if (dx || dy) {\n t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n } else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return Math.pow(x - x1, 2) + Math.pow(y - y1, 2);\n}\nfunction simplifyStep(points, first, last, tolerance, simplified) {\n var maxSqDist = tolerance,\n firstX = points[first],\n firstY = points[first + 1],\n lastX = points[last],\n lastY = points[last + 1],\n index,\n i,\n d;\n for (i = first + 2; i < last; i += 2) {\n d = pointToSegDist(points[i], points[i + 1], firstX, firstY, lastX, lastY);\n if (d > maxSqDist) {\n index = i;\n maxSqDist = d;\n }\n }\n if (maxSqDist > tolerance) {\n index - first > 2 && simplifyStep(points, first, index, tolerance, simplified);\n simplified.push(points[index], points[index + 1]);\n last - index > 2 && simplifyStep(points, index, last, tolerance, simplified);\n }\n} //points is an array of x/y values like [x, y, x, y, x, y]\n\nexport function simplifyPoints(points, tolerance) {\n var prevX = parseFloat(points[0]),\n prevY = parseFloat(points[1]),\n temp = [prevX, prevY],\n l = points.length - 2,\n i,\n x,\n y,\n dx,\n dy,\n result,\n last;\n tolerance = Math.pow(tolerance || 1, 2);\n for (i = 2; i < l; i += 2) {\n x = parseFloat(points[i]);\n y = parseFloat(points[i + 1]);\n dx = prevX - x;\n dy = prevY - y;\n if (dx * dx + dy * dy > tolerance) {\n temp.push(x, y);\n prevX = x;\n prevY = y;\n }\n }\n temp.push(parseFloat(points[l]), parseFloat(points[l + 1]));\n last = temp.length - 2;\n result = [temp[0], temp[1]];\n simplifyStep(temp, 0, last, tolerance, result);\n result.push(temp[last], temp[last + 1]);\n return result;\n}\nfunction getClosestProgressOnBezier(iterations, px, py, start, end, slices, x0, y0, x1, y1, x2, y2, x3, y3) {\n var inc = (end - start) / slices,\n best = 0,\n t = start,\n x,\n y,\n d,\n dx,\n dy,\n inv;\n _bestDistance = _largeNum;\n while (t <= end) {\n inv = 1 - t;\n x = inv * inv * inv * x0 + 3 * inv * inv * t * x1 + 3 * inv * t * t * x2 + t * t * t * x3;\n y = inv * inv * inv * y0 + 3 * inv * inv * t * y1 + 3 * inv * t * t * y2 + t * t * t * y3;\n dx = x - px;\n dy = y - py;\n d = dx * dx + dy * dy;\n if (d < _bestDistance) {\n _bestDistance = d;\n best = t;\n }\n t += inc;\n }\n return iterations > 1 ? getClosestProgressOnBezier(iterations - 1, px, py, Math.max(best - inc, 0), Math.min(best + inc, 1), slices, x0, y0, x1, y1, x2, y2, x3, y3) : best;\n}\nexport function getClosestData(rawPath, x, y, slices) {\n //returns an object with the closest j, i, and t (j is the segment index, i is the index of the point in that segment, and t is the time/progress along that bezier)\n var closest = {\n j: 0,\n i: 0,\n t: 0\n },\n bestDistance = _largeNum,\n i,\n j,\n t,\n segment;\n for (j = 0; j < rawPath.length; j++) {\n segment = rawPath[j];\n for (i = 0; i < segment.length; i += 6) {\n t = getClosestProgressOnBezier(1, x, y, 0, 1, slices || 20, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);\n if (bestDistance > _bestDistance) {\n bestDistance = _bestDistance;\n closest.j = j;\n closest.i = i;\n closest.t = t;\n }\n }\n }\n return closest;\n} //subdivide a Segment closest to a specific x,y coordinate\n\nexport function subdivideSegmentNear(x, y, segment, slices, iterations) {\n var l = segment.length,\n bestDistance = _largeNum,\n bestT = 0,\n bestSegmentIndex = 0,\n t,\n i;\n slices = slices || 20;\n iterations = iterations || 3;\n for (i = 0; i < l; i += 6) {\n t = getClosestProgressOnBezier(1, x, y, 0, 1, slices, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);\n if (bestDistance > _bestDistance) {\n bestDistance = _bestDistance;\n bestT = t;\n bestSegmentIndex = i;\n }\n }\n t = getClosestProgressOnBezier(iterations, x, y, bestT - 0.05, bestT + 0.05, slices, segment[bestSegmentIndex], segment[bestSegmentIndex + 1], segment[bestSegmentIndex + 2], segment[bestSegmentIndex + 3], segment[bestSegmentIndex + 4], segment[bestSegmentIndex + 5], segment[bestSegmentIndex + 6], segment[bestSegmentIndex + 7]);\n subdivideSegment(segment, bestSegmentIndex, t);\n return bestSegmentIndex + 6;\n}\n/*\nTakes any of the following and converts it to an all Cubic Bezier SVG data string:\n- A data string like \"M0,0 L2,4 v20,15 H100\"\n- A RawPath, like [[x, y, x, y, x, y, x, y][[x, y, x, y, x, y, x, y]]\n- A Segment, like [x, y, x, y, x, y, x, y]\n\nNote: all numbers are rounded down to the closest 0.001 to minimize memory, maximize speed, and avoid odd numbers like 1e-13\n*/\n\nexport function rawPathToString(rawPath) {\n if (_isNumber(rawPath[0])) {\n //in case a segment is passed in instead\n rawPath = [rawPath];\n }\n var result = \"\",\n l = rawPath.length,\n sl,\n s,\n i,\n segment;\n for (s = 0; s < l; s++) {\n segment = rawPath[s];\n result += \"M\" + _round(segment[0]) + \",\" + _round(segment[1]) + \" C\";\n sl = segment.length;\n for (i = 2; i < sl; i++) {\n result += _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i]) + \" \";\n }\n if (segment.closed) {\n result += \"z\";\n }\n }\n return result;\n}\n/*\n// takes a segment with coordinates [x, y, x, y, ...] and converts the control points into angles and lengths [x, y, angle, length, angle, length, x, y, angle, length, ...] so that it animates more cleanly and avoids odd breaks/kinks. For example, if you animate from 1 o'clock to 6 o'clock, it'd just go directly/linearly rather than around. So the length would be very short in the middle of the tween.\nexport function cpCoordsToAngles(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tx, y, i;\n\tfor (i = 0; i < segment.length; i+=6) {\n\t\tx = segment[i+2] - segment[i];\n\t\ty = segment[i+3] - segment[i+1];\n\t\tresult[i+2] = Math.atan2(y, x);\n\t\tresult[i+3] = Math.sqrt(x * x + y * y);\n\t\tx = segment[i+6] - segment[i+4];\n\t\ty = segment[i+7] - segment[i+5];\n\t\tresult[i+4] = Math.atan2(y, x);\n\t\tresult[i+5] = Math.sqrt(x * x + y * y);\n\t}\n\treturn result;\n}\n\n// takes a segment that was converted with cpCoordsToAngles() to have angles and lengths instead of coordinates for the control points, and converts it BACK into coordinates.\nexport function cpAnglesToCoords(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tlength = segment.length,\n\t\trnd = 1000,\n\t\tangle, l, i, j;\n\tfor (i = 0; i < length; i+=6) {\n\t\tangle = segment[i+2];\n\t\tl = segment[i+3]; //length\n\t\tresult[i+2] = (((segment[i] + Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+3] = (((segment[i+1] + Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t\tangle = segment[i+4];\n\t\tl = segment[i+5]; //length\n\t\tresult[i+4] = (((segment[i+6] - Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+5] = (((segment[i+7] - Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t}\n\treturn result;\n}\n\n//adds an \"isSmooth\" array to each segment and populates it with a boolean value indicating whether or not it's smooth (the control points have basically the same slope). For any smooth control points, it converts the coordinates into angle (x, in radians) and length (y) and puts them into the same index value in a smoothData array.\nexport function populateSmoothData(rawPath) {\n\tlet j = rawPath.length,\n\t\tsmooth, segment, x, y, x2, y2, i, l, a, a2, isSmooth, smoothData;\n\twhile (--j > -1) {\n\t\tsegment = rawPath[j];\n\t\tisSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];\n\t\tsmoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];\n\t\tisSmooth.length = 4;\n\t\tl = segment.length - 2;\n\t\tfor (i = 6; i < l; i += 6) {\n\t\t\tx = segment[i] - segment[i - 2];\n\t\t\ty = segment[i + 1] - segment[i - 1];\n\t\t\tx2 = segment[i + 2] - segment[i];\n\t\t\ty2 = segment[i + 3] - segment[i + 1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tsmooth = (Math.abs(a - a2) < 0.09);\n\t\t\tif (smooth) {\n\t\t\t\tsmoothData[i - 2] = a;\n\t\t\t\tsmoothData[i + 2] = a2;\n\t\t\t\tsmoothData[i - 1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[i + 3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t}\n\t\t\tisSmooth.push(smooth, smooth, 0, 0, smooth, smooth);\n\t\t}\n\t\t//if the first and last points are identical, check to see if there's a smooth transition. We must handle this a bit differently due to their positions in the array.\n\t\tif (segment[l] === segment[0] && segment[l+1] === segment[1]) {\n\t\t\tx = segment[0] - segment[l-2];\n\t\t\ty = segment[1] - segment[l-1];\n\t\t\tx2 = segment[2] - segment[0];\n\t\t\ty2 = segment[3] - segment[1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tif (Math.abs(a - a2) < 0.09) {\n\t\t\t\tsmoothData[l-2] = a;\n\t\t\t\tsmoothData[2] = a2;\n\t\t\t\tsmoothData[l-1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t\tisSmooth[l-2] = isSmooth[l-1] = true; //don't change indexes 2 and 3 because we'll trigger everything from the END, and this will optimize file size a bit.\n\t\t\t}\n\t\t}\n\t}\n\treturn rawPath;\n}\nexport function pointToScreen(svgElement, point) {\n\tif (arguments.length < 2) { //by default, take the first set of coordinates in the path as the point\n\t\tlet rawPath = getRawPath(svgElement);\n\t\tpoint = svgElement.ownerSVGElement.createSVGPoint();\n\t\tpoint.x = rawPath[0][0];\n\t\tpoint.y = rawPath[0][1];\n\t}\n\treturn point.matrixTransform(svgElement.getScreenCTM());\n}\n\n*/","/*!\n * MorphSVGPlugin 3.6.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { getRawPath, reverseSegment, stringToRawPath, rawPathToString, convertToPath as _convertToPath } from \"./utils/paths.js\";\nvar gsap,\n _toArray,\n _lastLinkedAnchor,\n _doc,\n _coreInitted,\n PluginClass,\n _getGSAP = function _getGSAP() {\n return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n },\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n },\n _atan2 = Math.atan2,\n _cos = Math.cos,\n _sin = Math.sin,\n _sqrt = Math.sqrt,\n _PI = Math.PI,\n _2PI = _PI * 2,\n _angleMin = _PI * 0.3,\n _angleMax = _PI * 0.7,\n _bigNum = 1e20,\n _numExp = /[-+=\\.]*\\d+[\\.e\\-\\+]*\\d*[e\\-\\+]*\\d*/gi,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n _selectorExp = /(^[#\\.][a-z]|[a-y][a-z])/i,\n _commands = /[achlmqstvz]/i,\n _log = function _log(message) {\n return console && console.warn(message);\n },\n _bonusValidated = 1,\n //MorphSVGPlugin\n _getAverageXY = function _getAverageXY(segment) {\n var l = segment.length,\n x = 0,\n y = 0,\n i;\n for (i = 0; i < l; i++) {\n x += segment[i++];\n y += segment[i];\n }\n return [x / (l / 2), y / (l / 2)];\n },\n _getSize = function _getSize(segment) {\n //rough estimate of the bounding box (based solely on the anchors) of a single segment. sets \"size\", \"centerX\", and \"centerY\" properties on the bezier array itself, and returns the size (width * height)\n var l = segment.length,\n xMax = segment[0],\n xMin = xMax,\n yMax = segment[1],\n yMin = yMax,\n x,\n y,\n i;\n for (i = 6; i < l; i += 6) {\n x = segment[i];\n y = segment[i + 1];\n if (x > xMax) {\n xMax = x;\n } else if (x < xMin) {\n xMin = x;\n }\n if (y > yMax) {\n yMax = y;\n } else if (y < yMin) {\n yMin = y;\n }\n }\n segment.centerX = (xMax + xMin) / 2;\n segment.centerY = (yMax + yMin) / 2;\n return segment.size = (xMax - xMin) * (yMax - yMin);\n },\n _getTotalSize = function _getTotalSize(rawPath, samplesPerBezier) {\n if (samplesPerBezier === void 0) {\n samplesPerBezier = 3;\n }\n\n //rough estimate of the bounding box of the entire list of Bezier segments (based solely on the anchors). sets \"size\", \"centerX\", and \"centerY\" properties on the bezier array itself, and returns the size (width * height)\n var j = rawPath.length,\n xMax = rawPath[0][0],\n xMin = xMax,\n yMax = rawPath[0][1],\n yMin = yMax,\n inc = 1 / samplesPerBezier,\n l,\n x,\n y,\n i,\n segment,\n k,\n t,\n inv,\n x1,\n y1,\n x2,\n x3,\n x4,\n y2,\n y3,\n y4;\n while (--j > -1) {\n segment = rawPath[j];\n l = segment.length;\n for (i = 6; i < l; i += 6) {\n x1 = segment[i];\n y1 = segment[i + 1];\n x2 = segment[i + 2] - x1;\n y2 = segment[i + 3] - y1;\n x3 = segment[i + 4] - x1;\n y3 = segment[i + 5] - y1;\n x4 = segment[i + 6] - x1;\n y4 = segment[i + 7] - y1;\n k = samplesPerBezier;\n while (--k > -1) {\n t = inc * k;\n inv = 1 - t;\n x = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t + x1;\n y = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t + y1;\n if (x > xMax) {\n xMax = x;\n } else if (x < xMin) {\n xMin = x;\n }\n if (y > yMax) {\n yMax = y;\n } else if (y < yMin) {\n yMin = y;\n }\n }\n }\n }\n rawPath.centerX = (xMax + xMin) / 2;\n rawPath.centerY = (yMax + yMin) / 2;\n rawPath.left = xMin;\n rawPath.width = xMax - xMin;\n rawPath.top = yMin;\n rawPath.height = yMax - yMin;\n return rawPath.size = (xMax - xMin) * (yMax - yMin);\n },\n _sortByComplexity = function _sortByComplexity(a, b) {\n return b.length - a.length;\n },\n _sortBySize = function _sortBySize(a, b) {\n var sizeA = a.size || _getSize(a),\n sizeB = b.size || _getSize(b);\n return Math.abs(sizeB - sizeA) < (sizeA + sizeB) / 20 ? b.centerX - a.centerX || b.centerY - a.centerY : sizeB - sizeA; //if the size is within 10% of each other, prioritize position from left to right, then top to bottom.\n },\n _offsetSegment = function _offsetSegment(segment, shapeIndex) {\n var a = segment.slice(0),\n l = segment.length,\n wrap = l - 2,\n i,\n index;\n shapeIndex = shapeIndex | 0;\n for (i = 0; i < l; i++) {\n index = (i + shapeIndex) % wrap;\n segment[i++] = a[index];\n segment[i] = a[index + 1];\n }\n },\n _getTotalMovement = function _getTotalMovement(sb, eb, shapeIndex, offsetX, offsetY) {\n var l = sb.length,\n d = 0,\n wrap = l - 2,\n index,\n i,\n x,\n y;\n shapeIndex *= 6;\n for (i = 0; i < l; i += 6) {\n index = (i + shapeIndex) % wrap;\n y = sb[index] - (eb[i] - offsetX);\n x = sb[index + 1] - (eb[i + 1] - offsetY);\n d += _sqrt(x * x + y * y);\n }\n return d;\n },\n _getClosestShapeIndex = function _getClosestShapeIndex(sb, eb, checkReverse) {\n //finds the index in a closed cubic bezier array that's closest to the angle provided (angle measured from the center or average x/y).\n var l = sb.length,\n sCenter = _getAverageXY(sb),\n //when comparing distances, adjust the coordinates as if the shapes are centered with each other.\n eCenter = _getAverageXY(eb),\n offsetX = eCenter[0] - sCenter[0],\n offsetY = eCenter[1] - sCenter[1],\n min = _getTotalMovement(sb, eb, 0, offsetX, offsetY),\n minIndex = 0,\n copy,\n d,\n i;\n for (i = 6; i < l; i += 6) {\n d = _getTotalMovement(sb, eb, i / 6, offsetX, offsetY);\n if (d < min) {\n min = d;\n minIndex = i;\n }\n }\n if (checkReverse) {\n copy = sb.slice(0);\n reverseSegment(copy);\n for (i = 6; i < l; i += 6) {\n d = _getTotalMovement(copy, eb, i / 6, offsetX, offsetY);\n if (d < min) {\n min = d;\n minIndex = -i;\n }\n }\n }\n return minIndex / 6;\n },\n _getClosestAnchor = function _getClosestAnchor(rawPath, x, y) {\n //finds the x/y of the anchor that's closest to the provided x/y coordinate (returns an array, like [x, y]). The bezier should be the top-level type that contains an array for each segment.\n var j = rawPath.length,\n closestDistance = _bigNum,\n closestX = 0,\n closestY = 0,\n segment,\n dx,\n dy,\n d,\n i,\n l;\n while (--j > -1) {\n segment = rawPath[j];\n l = segment.length;\n for (i = 0; i < l; i += 6) {\n dx = segment[i] - x;\n dy = segment[i + 1] - y;\n d = _sqrt(dx * dx + dy * dy);\n if (d < closestDistance) {\n closestDistance = d;\n closestX = segment[i];\n closestY = segment[i + 1];\n }\n }\n }\n return [closestX, closestY];\n },\n _getClosestSegment = function _getClosestSegment(bezier, pool, startIndex, sortRatio, offsetX, offsetY) {\n //matches the bezier to the closest one in a pool (array) of beziers, assuming they are in order of size and we shouldn't drop more than 20% of the size, otherwise prioritizing location (total distance to the center). Extracts the segment out of the pool array and returns it.\n var l = pool.length,\n index = 0,\n minSize = Math.min(bezier.size || _getSize(bezier), pool[startIndex].size || _getSize(pool[startIndex])) * sortRatio,\n //limit things based on a percentage of the size of either the bezier or the next element in the array, whichever is smaller.\n min = _bigNum,\n cx = bezier.centerX + offsetX,\n cy = bezier.centerY + offsetY,\n size,\n i,\n dx,\n dy,\n d;\n for (i = startIndex; i < l; i++) {\n size = pool[i].size || _getSize(pool[i]);\n if (size < minSize) {\n break;\n }\n dx = pool[i].centerX - cx;\n dy = pool[i].centerY - cy;\n d = _sqrt(dx * dx + dy * dy);\n if (d < min) {\n index = i;\n min = d;\n }\n }\n d = pool[index];\n pool.splice(index, 1);\n return d;\n },\n _subdivideSegmentQty = function _subdivideSegmentQty(segment, quantity) {\n var tally = 0,\n max = 0.999999,\n l = segment.length,\n newPointsPerSegment = quantity / ((l - 2) / 6),\n ax,\n ay,\n cp1x,\n cp1y,\n cp2x,\n cp2y,\n bx,\n by,\n x1,\n y1,\n x2,\n y2,\n i,\n t;\n for (i = 2; i < l; i += 6) {\n tally += newPointsPerSegment;\n while (tally > max) {\n //compare with 0.99999 instead of 1 in order to prevent rounding errors\n ax = segment[i - 2];\n ay = segment[i - 1];\n cp1x = segment[i];\n cp1y = segment[i + 1];\n cp2x = segment[i + 2];\n cp2y = segment[i + 3];\n bx = segment[i + 4];\n by = segment[i + 5];\n t = 1 / ((Math.floor(tally) || 1) + 1); //progress along the bezier (value between 0 and 1)\n\n x1 = ax + (cp1x - ax) * t;\n x2 = cp1x + (cp2x - cp1x) * t;\n x1 += (x2 - x1) * t;\n x2 += (cp2x + (bx - cp2x) * t - x2) * t;\n y1 = ay + (cp1y - ay) * t;\n y2 = cp1y + (cp2y - cp1y) * t;\n y1 += (y2 - y1) * t;\n y2 += (cp2y + (by - cp2y) * t - y2) * t;\n segment.splice(i, 4, ax + (cp1x - ax) * t,\n //first control point\n ay + (cp1y - ay) * t, x1,\n //second control point\n y1, x1 + (x2 - x1) * t,\n //new fabricated anchor on line\n y1 + (y2 - y1) * t, x2,\n //third control point\n y2, cp2x + (bx - cp2x) * t,\n //fourth control point\n cp2y + (by - cp2y) * t);\n i += 6;\n l += 6;\n tally--;\n }\n }\n return segment;\n },\n _equalizeSegmentQuantity = function _equalizeSegmentQuantity(start, end, shapeIndex, map, fillSafe) {\n //returns an array of shape indexes, 1 for each segment.\n var dif = end.length - start.length,\n longer = dif > 0 ? end : start,\n shorter = dif > 0 ? start : end,\n added = 0,\n sortMethod = map === \"complexity\" ? _sortByComplexity : _sortBySize,\n sortRatio = map === \"position\" ? 0 : typeof map === \"number\" ? map : 0.8,\n i = shorter.length,\n shapeIndices = typeof shapeIndex === \"object\" && shapeIndex.push ? shapeIndex.slice(0) : [shapeIndex],\n reverse = shapeIndices[0] === \"reverse\" || shapeIndices[0] < 0,\n log = shapeIndex === \"log\",\n eb,\n sb,\n b,\n x,\n y,\n offsetX,\n offsetY;\n if (!shorter[0]) {\n return;\n }\n if (longer.length > 1) {\n start.sort(sortMethod);\n end.sort(sortMethod);\n offsetX = longer.size || _getTotalSize(longer); //ensures centerX and centerY are defined (used below).\n\n offsetX = shorter.size || _getTotalSize(shorter);\n offsetX = longer.centerX - shorter.centerX;\n offsetY = longer.centerY - shorter.centerY;\n if (sortMethod === _sortBySize) {\n for (i = 0; i < shorter.length; i++) {\n longer.splice(i, 0, _getClosestSegment(shorter[i], longer, i, sortRatio, offsetX, offsetY));\n }\n }\n }\n if (dif) {\n if (dif < 0) {\n dif = -dif;\n }\n if (longer[0].length > shorter[0].length) {\n //since we use shorter[0] as the one to map the origination point of any brand new fabricated segments, do any subdividing first so that there are more points to choose from (if necessary)\n _subdivideSegmentQty(shorter[0], (longer[0].length - shorter[0].length) / 6 | 0);\n }\n i = shorter.length;\n while (added < dif) {\n x = longer[i].size || _getSize(longer[i]); //just to ensure centerX and centerY are calculated which we use on the next line.\n\n b = _getClosestAnchor(shorter, longer[i].centerX, longer[i].centerY);\n x = b[0];\n y = b[1];\n shorter[i++] = [x, y, x, y, x, y, x, y];\n shorter.totalPoints += 8;\n added++;\n }\n }\n for (i = 0; i < start.length; i++) {\n eb = end[i];\n sb = start[i];\n dif = eb.length - sb.length;\n if (dif < 0) {\n _subdivideSegmentQty(eb, -dif / 6 | 0);\n } else if (dif > 0) {\n _subdivideSegmentQty(sb, dif / 6 | 0);\n }\n if (reverse && fillSafe !== false && !sb.reversed) {\n reverseSegment(sb);\n }\n shapeIndex = shapeIndices[i] || shapeIndices[i] === 0 ? shapeIndices[i] : \"auto\";\n if (shapeIndex) {\n //if start shape is closed, find the closest point to the start/end, and re-organize the bezier points accordingly so that the shape morphs in a more intuitive way.\n if (sb.closed || Math.abs(sb[0] - sb[sb.length - 2]) < 0.5 && Math.abs(sb[1] - sb[sb.length - 1]) < 0.5) {\n if (shapeIndex === \"auto\" || shapeIndex === \"log\") {\n shapeIndices[i] = shapeIndex = _getClosestShapeIndex(sb, eb, !i || fillSafe === false);\n if (shapeIndex < 0) {\n reverse = true;\n reverseSegment(sb);\n shapeIndex = -shapeIndex;\n }\n _offsetSegment(sb, shapeIndex * 6);\n } else if (shapeIndex !== \"reverse\") {\n if (i && shapeIndex < 0) {\n //only happens if an array is passed as shapeIndex and a negative value is defined for an index beyond 0. Very rare, but helpful sometimes.\n reverseSegment(sb);\n }\n _offsetSegment(sb, (shapeIndex < 0 ? -shapeIndex : shapeIndex) * 6);\n } //otherwise, if it's not a closed shape, consider reversing it if that would make the overall travel less\n } else if (!reverse && (shapeIndex === \"auto\" && Math.abs(eb[0] - sb[0]) + Math.abs(eb[1] - sb[1]) + Math.abs(eb[eb.length - 2] - sb[sb.length - 2]) + Math.abs(eb[eb.length - 1] - sb[sb.length - 1]) > Math.abs(eb[0] - sb[sb.length - 2]) + Math.abs(eb[1] - sb[sb.length - 1]) + Math.abs(eb[eb.length - 2] - sb[0]) + Math.abs(eb[eb.length - 1] - sb[1]) || shapeIndex % 2)) {\n reverseSegment(sb);\n shapeIndices[i] = -1;\n reverse = true;\n } else if (shapeIndex === \"auto\") {\n shapeIndices[i] = 0;\n } else if (shapeIndex === \"reverse\") {\n shapeIndices[i] = -1;\n }\n if (sb.closed !== eb.closed) {\n //if one is closed and one isn't, don't close either one otherwise the tweening will look weird (but remember, the beginning and final states will honor the actual values, so this only affects the inbetween state)\n sb.closed = eb.closed = false;\n }\n }\n }\n log && _log(\"shapeIndex:[\" + shapeIndices.join(\",\") + \"]\");\n start.shapeIndex = shapeIndices;\n return shapeIndices;\n },\n _pathFilter = function _pathFilter(a, shapeIndex, map, precompile, fillSafe) {\n var start = stringToRawPath(a[0]),\n end = stringToRawPath(a[1]);\n if (!_equalizeSegmentQuantity(start, end, shapeIndex || shapeIndex === 0 ? shapeIndex : \"auto\", map, fillSafe)) {\n return; //malformed path data or null target\n }\n a[0] = rawPathToString(start);\n a[1] = rawPathToString(end);\n if (precompile === \"log\" || precompile === true) {\n _log('precompile:[\"' + a[0] + '\",\"' + a[1] + '\"]');\n }\n },\n _offsetPoints = function _offsetPoints(text, offset) {\n if (!offset) {\n return text;\n }\n var a = text.match(_numExp) || [],\n l = a.length,\n s = \"\",\n inc,\n i,\n j;\n if (offset === \"reverse\") {\n i = l - 1;\n inc = -2;\n } else {\n i = ((parseInt(offset, 10) || 0) * 2 + 1 + l * 100) % l;\n inc = 2;\n }\n for (j = 0; j < l; j += 2) {\n s += a[i - 1] + \",\" + a[i] + \" \";\n i = (i + inc) % l;\n }\n return s;\n },\n //adds a certain number of points while maintaining the polygon/polyline shape (so that the start/end values can have a matching quantity of points to animate). Returns the revised string.\n _equalizePointQuantity = function _equalizePointQuantity(a, quantity) {\n var tally = 0,\n x = parseFloat(a[0]),\n y = parseFloat(a[1]),\n s = x + \",\" + y + \" \",\n max = 0.999999,\n newPointsPerSegment,\n i,\n l,\n j,\n factor,\n nextX,\n nextY;\n l = a.length;\n newPointsPerSegment = quantity * 0.5 / (l * 0.5 - 1);\n for (i = 0; i < l - 2; i += 2) {\n tally += newPointsPerSegment;\n nextX = parseFloat(a[i + 2]);\n nextY = parseFloat(a[i + 3]);\n if (tally > max) {\n //compare with 0.99999 instead of 1 in order to prevent rounding errors\n factor = 1 / (Math.floor(tally) + 1);\n j = 1;\n while (tally > max) {\n s += (x + (nextX - x) * factor * j).toFixed(2) + \",\" + (y + (nextY - y) * factor * j).toFixed(2) + \" \";\n tally--;\n j++;\n }\n }\n s += nextX + \",\" + nextY + \" \";\n x = nextX;\n y = nextY;\n }\n return s;\n },\n _pointsFilter = function _pointsFilter(a) {\n var startNums = a[0].match(_numExp) || [],\n endNums = a[1].match(_numExp) || [],\n dif = endNums.length - startNums.length;\n if (dif > 0) {\n a[0] = _equalizePointQuantity(startNums, dif);\n } else {\n a[1] = _equalizePointQuantity(endNums, -dif);\n }\n },\n _buildPointsFilter = function _buildPointsFilter(shapeIndex) {\n return !isNaN(shapeIndex) ? function (a) {\n _pointsFilter(a);\n a[1] = _offsetPoints(a[1], parseInt(shapeIndex, 10));\n } : _pointsFilter;\n },\n _parseShape = function _parseShape(shape, forcePath, target) {\n var isString = typeof shape === \"string\",\n e,\n type;\n if (!isString || _selectorExp.test(shape) || (shape.match(_numExp) || []).length < 3) {\n e = _toArray(shape)[0];\n if (e) {\n type = (e.nodeName + \"\").toUpperCase();\n if (forcePath && type !== \"PATH\") {\n //if we were passed an element (or selector text for an element) that isn't a path, convert it.\n e = _convertToPath(e, false);\n type = \"PATH\";\n }\n shape = e.getAttribute(type === \"PATH\" ? \"d\" : \"points\") || \"\";\n if (e === target) {\n //if the shape matches the target element, the user wants to revert to the original which should have been stored in the data-original attribute\n shape = e.getAttributeNS(null, \"data-original\") || shape;\n }\n } else {\n _log(\"WARNING: invalid morph to: \" + shape);\n shape = false;\n }\n }\n return shape;\n },\n //adds an \"isSmooth\" array to each segment and populates it with a boolean value indicating whether or not it's smooth (the control points have basically the same slope). For any smooth control points, it converts the coordinates into angle (x, in radians) and length (y) and puts them into the same index value in a smoothData array.\n _populateSmoothData = function _populateSmoothData(rawPath, tolerance) {\n var j = rawPath.length,\n limit = 0.2 * (tolerance || 1),\n smooth,\n segment,\n x,\n y,\n x2,\n y2,\n i,\n l,\n a,\n a2,\n isSmooth,\n smoothData;\n while (--j > -1) {\n segment = rawPath[j];\n isSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];\n smoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];\n isSmooth.length = 4;\n l = segment.length - 2;\n for (i = 6; i < l; i += 6) {\n x = segment[i] - segment[i - 2];\n y = segment[i + 1] - segment[i - 1];\n x2 = segment[i + 2] - segment[i];\n y2 = segment[i + 3] - segment[i + 1];\n a = _atan2(y, x);\n a2 = _atan2(y2, x2);\n smooth = Math.abs(a - a2) < limit;\n if (smooth) {\n smoothData[i - 2] = a;\n smoothData[i + 2] = a2;\n smoothData[i - 1] = _sqrt(x * x + y * y);\n smoothData[i + 3] = _sqrt(x2 * x2 + y2 * y2);\n }\n isSmooth.push(smooth, smooth, 0, 0, smooth, smooth);\n } //if the first and last points are identical, check to see if there's a smooth transition. We must handle this a bit differently due to their positions in the array.\n\n if (segment[l] === segment[0] && segment[l + 1] === segment[1]) {\n x = segment[0] - segment[l - 2];\n y = segment[1] - segment[l - 1];\n x2 = segment[2] - segment[0];\n y2 = segment[3] - segment[1];\n a = _atan2(y, x);\n a2 = _atan2(y2, x2);\n if (Math.abs(a - a2) < limit) {\n smoothData[l - 2] = a;\n smoothData[2] = a2;\n smoothData[l - 1] = _sqrt(x * x + y * y);\n smoothData[3] = _sqrt(x2 * x2 + y2 * y2);\n isSmooth[l - 2] = isSmooth[l - 1] = true; //don't change indexes 2 and 3 because we'll trigger everything from the END, and this will optimize file size a bit.\n }\n }\n }\n return rawPath;\n },\n _parseOriginFactors = function _parseOriginFactors(v) {\n var a = v.trim().split(\" \"),\n x = ~v.indexOf(\"left\") ? 0 : ~v.indexOf(\"right\") ? 100 : isNaN(parseFloat(a[0])) ? 50 : parseFloat(a[0]),\n y = ~v.indexOf(\"top\") ? 0 : ~v.indexOf(\"bottom\") ? 100 : isNaN(parseFloat(a[1])) ? 50 : parseFloat(a[1]);\n return {\n x: x / 100,\n y: y / 100\n };\n },\n _shortAngle = function _shortAngle(dif) {\n return dif !== dif % _PI ? dif + (dif < 0 ? _2PI : -_2PI) : dif;\n },\n _morphMessage = \"Use MorphSVGPlugin.convertToPath() to convert to a path before morphing.\",\n _tweenRotation = function _tweenRotation(start, end, i, linkedPT) {\n var so = this._origin,\n //starting origin\n eo = this._eOrigin,\n //ending origin\n dx = start[i] - so.x,\n dy = start[i + 1] - so.y,\n d = _sqrt(dx * dx + dy * dy),\n //length from starting origin to starting point\n sa = _atan2(dy, dx),\n angleDif,\n _short;\n dx = end[i] - eo.x;\n dy = end[i + 1] - eo.y;\n angleDif = _atan2(dy, dx) - sa;\n _short = _shortAngle(angleDif); //in the case of control points, we ALWAYS link them to their anchor so that they don't get torn apart and rotate the opposite direction. If it's not a control point, we look at the most recently linked point as long as they're within a certain rotational range of each other.\n\n if (!linkedPT && _lastLinkedAnchor && Math.abs(_short + _lastLinkedAnchor.ca) < _angleMin) {\n linkedPT = _lastLinkedAnchor;\n }\n return this._anchorPT = _lastLinkedAnchor = {\n _next: this._anchorPT,\n t: start,\n sa: sa,\n //starting angle\n ca: linkedPT && _short * linkedPT.ca < 0 && Math.abs(_short) > _angleMax ? angleDif : _short,\n //change in angle\n sl: d,\n //starting length\n cl: _sqrt(dx * dx + dy * dy) - d,\n //change in length\n i: i\n };\n },\n _initCore = function _initCore(required) {\n gsap = _getGSAP();\n PluginClass = PluginClass || gsap && gsap.plugins.morphSVG;\n if (gsap && PluginClass) {\n _toArray = gsap.utils.toArray;\n _doc = document;\n PluginClass.prototype._tweenRotation = _tweenRotation;\n _coreInitted = 1;\n } else if (required) {\n _log(\"Please gsap.registerPlugin(MorphSVGPlugin)\");\n }\n };\nexport var MorphSVGPlugin = {\n version: \"3.6.1\",\n name: \"morphSVG\",\n rawVars: 1,\n // otherwise \"render\" would be interpreted as a function-based value.\n register: function register(core, Plugin) {\n gsap = core;\n PluginClass = Plugin;\n _initCore();\n },\n init: function init(target, value, tween, index, targets) {\n _coreInitted || _initCore(1);\n if (!value) {\n _log(\"invalid shape\");\n return false;\n }\n _isFunction(value) && (value = value.call(tween, index, target, targets));\n var type, p, pt, shape, isPoly, shapeIndex, map, startSmooth, endSmooth, start, end, i, j, l, startSeg, endSeg, precompiled, sData, eData, originFactors, useRotation, offset;\n if (typeof value === \"string\" || value.getBBox || value[0]) {\n value = {\n shape: value\n };\n } else if (typeof value === \"object\") {\n // if there are any function-based values, parse them here (and make a copy of the object so we're not modifying the original)\n type = {};\n for (p in value) {\n type[p] = _isFunction(value[p]) && p !== \"render\" ? value[p].call(tween, index, target, targets) : value[p];\n }\n value = type;\n }\n var cs = target.nodeType ? window.getComputedStyle(target) : {},\n fill = cs.fill + \"\",\n fillSafe = !(fill === \"none\" || (fill.match(_numExp) || [])[3] === \"0\" || cs.fillRule === \"evenodd\"),\n origins = (value.origin || \"50 50\").split(\",\");\n type = (target.nodeName + \"\").toUpperCase();\n isPoly = type === \"POLYLINE\" || type === \"POLYGON\";\n if (type !== \"PATH\" && !isPoly && !value.prop) {\n _log(\"Cannot morph a <\" + type + \"> element. \" + _morphMessage);\n return false;\n }\n p = type === \"PATH\" ? \"d\" : \"points\";\n if (!value.prop && !_isFunction(target.setAttribute)) {\n return false;\n }\n shape = _parseShape(value.shape || value.d || value.points || \"\", p === \"d\", target);\n if (isPoly && _commands.test(shape)) {\n _log(\"A <\" + type + \"> cannot accept path data. \" + _morphMessage);\n return false;\n }\n shapeIndex = value.shapeIndex || value.shapeIndex === 0 ? value.shapeIndex : \"auto\";\n map = value.map || MorphSVGPlugin.defaultMap;\n this._prop = value.prop;\n this._render = value.render || MorphSVGPlugin.defaultRender;\n this._apply = \"updateTarget\" in value ? value.updateTarget : MorphSVGPlugin.defaultUpdateTarget;\n this._rnd = Math.pow(10, isNaN(value.precision) ? 2 : +value.precision);\n this._tween = tween;\n if (shape) {\n this._target = target;\n precompiled = typeof value.precompile === \"object\";\n start = this._prop ? target[this._prop] : target.getAttribute(p);\n if (!this._prop && !target.getAttributeNS(null, \"data-original\")) {\n target.setAttributeNS(null, \"data-original\", start); //record the original state in a data-original attribute so that we can revert to it later.\n }\n if (p === \"d\" || this._prop) {\n start = stringToRawPath(precompiled ? value.precompile[0] : start);\n end = stringToRawPath(precompiled ? value.precompile[1] : shape);\n if (!precompiled && !_equalizeSegmentQuantity(start, end, shapeIndex, map, fillSafe)) {\n return false; //malformed path data or null target\n }\n if (value.precompile === \"log\" || value.precompile === true) {\n _log('precompile:[\"' + rawPathToString(start) + '\",\"' + rawPathToString(end) + '\"]');\n }\n useRotation = (value.type || MorphSVGPlugin.defaultType) !== \"linear\";\n if (useRotation) {\n start = _populateSmoothData(start, value.smoothTolerance);\n end = _populateSmoothData(end, value.smoothTolerance);\n if (!start.size) {\n _getTotalSize(start); //adds top/left/width/height values\n }\n if (!end.size) {\n _getTotalSize(end);\n }\n originFactors = _parseOriginFactors(origins[0]);\n this._origin = start.origin = {\n x: start.left + originFactors.x * start.width,\n y: start.top + originFactors.y * start.height\n };\n if (origins[1]) {\n originFactors = _parseOriginFactors(origins[1]);\n }\n this._eOrigin = {\n x: end.left + originFactors.x * end.width,\n y: end.top + originFactors.y * end.height\n };\n }\n this._rawPath = target._gsRawPath = start;\n j = start.length;\n while (--j > -1) {\n startSeg = start[j];\n endSeg = end[j];\n startSmooth = startSeg.isSmooth || [];\n endSmooth = endSeg.isSmooth || [];\n l = startSeg.length;\n _lastLinkedAnchor = 0; //reset; we use _lastLinkedAnchor in the _tweenRotation() method to help make sure that close points don't get ripped apart and rotate opposite directions. Typically we want to go the shortest direction, but if the previous anchor is going a different direction, we override this logic (within certain thresholds)\n\n for (i = 0; i < l; i += 2) {\n if (endSeg[i] !== startSeg[i] || endSeg[i + 1] !== startSeg[i + 1]) {\n if (useRotation) {\n if (startSmooth[i] && endSmooth[i]) {\n //if BOTH starting and ending values are smooth (meaning control points have basically the same slope), interpolate the rotation and length instead of the coordinates (this is what makes things smooth).\n sData = startSeg.smoothData;\n eData = endSeg.smoothData;\n offset = i + (i === l - 4 ? 7 - l : 5); //helps us accommodate wrapping (like if the end and start anchors are identical and the control points are smooth).\n\n this._controlPT = {\n _next: this._controlPT,\n i: i,\n j: j,\n l1s: sData[i + 1],\n l1c: eData[i + 1] - sData[i + 1],\n l2s: sData[offset],\n l2c: eData[offset] - sData[offset]\n };\n pt = this._tweenRotation(startSeg, endSeg, i + 2);\n this._tweenRotation(startSeg, endSeg, i, pt);\n this._tweenRotation(startSeg, endSeg, offset - 1, pt);\n i += 4;\n } else {\n this._tweenRotation(startSeg, endSeg, i);\n }\n } else {\n pt = this.add(startSeg, i, startSeg[i], endSeg[i]);\n pt = this.add(startSeg, i + 1, startSeg[i + 1], endSeg[i + 1]) || pt;\n }\n }\n }\n }\n } else {\n pt = this.add(target, \"setAttribute\", target.getAttribute(p) + \"\", shape + \"\", index, targets, 0, _buildPointsFilter(shapeIndex), p);\n }\n if (useRotation) {\n this.add(this._origin, \"x\", this._origin.x, this._eOrigin.x);\n pt = this.add(this._origin, \"y\", this._origin.y, this._eOrigin.y);\n }\n if (pt) {\n this._props.push(\"morphSVG\");\n pt.end = shape;\n pt.endProp = p;\n }\n }\n return _bonusValidated;\n },\n render: function render(ratio, data) {\n var rawPath = data._rawPath,\n controlPT = data._controlPT,\n anchorPT = data._anchorPT,\n rnd = data._rnd,\n target = data._target,\n pt = data._pt,\n s,\n space,\n easeInOut,\n segment,\n l,\n angle,\n i,\n j,\n x,\n y,\n sin,\n cos,\n offset;\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n if (ratio === 1 && data._apply) {\n pt = data._pt;\n while (pt) {\n if (pt.end) {\n if (data._prop) {\n target[data._prop] = pt.end;\n } else {\n target.setAttribute(pt.endProp, pt.end); //make sure the end value is exactly as specified (in case we had to add fabricated points during the tween)\n }\n }\n pt = pt._next;\n }\n } else if (rawPath) {\n //rotationally position the anchors\n while (anchorPT) {\n angle = anchorPT.sa + ratio * anchorPT.ca;\n l = anchorPT.sl + ratio * anchorPT.cl; //length\n\n anchorPT.t[anchorPT.i] = data._origin.x + _cos(angle) * l;\n anchorPT.t[anchorPT.i + 1] = data._origin.y + _sin(angle) * l;\n anchorPT = anchorPT._next;\n } //smooth out the control points\n\n easeInOut = ratio < 0.5 ? 2 * ratio * ratio : (4 - 2 * ratio) * ratio - 1;\n while (controlPT) {\n i = controlPT.i;\n segment = rawPath[controlPT.j];\n offset = i + (i === segment.length - 4 ? 7 - segment.length : 5); //accommodates wrapping around of smooth points, like if the start and end anchors are on top of each other and their handles are smooth.\n\n angle = _atan2(segment[offset] - segment[i + 1], segment[offset - 1] - segment[i]); //average the angles\n\n sin = _sin(angle);\n cos = _cos(angle);\n x = segment[i + 2];\n y = segment[i + 3];\n l = controlPT.l1s + easeInOut * controlPT.l1c; //length\n\n segment[i] = x - cos * l;\n segment[i + 1] = y - sin * l;\n l = controlPT.l2s + easeInOut * controlPT.l2c;\n segment[offset - 1] = x + cos * l;\n segment[offset] = y + sin * l;\n controlPT = controlPT._next;\n }\n target._gsRawPath = rawPath;\n if (data._apply) {\n s = \"\";\n space = \" \";\n for (j = 0; j < rawPath.length; j++) {\n segment = rawPath[j];\n l = segment.length;\n s += \"M\" + (segment[0] * rnd | 0) / rnd + space + (segment[1] * rnd | 0) / rnd + \" C\";\n for (i = 2; i < l; i++) {\n //this is actually faster than just doing a join() on the array, possibly because the numbers have so many decimal places\n s += (segment[i] * rnd | 0) / rnd + space;\n }\n }\n if (data._prop) {\n target[data._prop] = s;\n } else {\n target.setAttribute(\"d\", s);\n }\n }\n }\n data._render && rawPath && data._render.call(data._tween, rawPath, target);\n },\n kill: function kill(property) {\n this._pt = this._rawPath = 0;\n },\n getRawPath: getRawPath,\n stringToRawPath: stringToRawPath,\n rawPathToString: rawPathToString,\n normalizeStrings: function normalizeStrings(shape1, shape2, _ref) {\n var shapeIndex = _ref.shapeIndex,\n map = _ref.map;\n var result = [shape1, shape2];\n _pathFilter(result, shapeIndex, map);\n return result;\n },\n pathFilter: _pathFilter,\n pointsFilter: _pointsFilter,\n getTotalSize: _getTotalSize,\n equalizeSegmentQuantity: _equalizeSegmentQuantity,\n convertToPath: function convertToPath(targets, swap) {\n return _toArray(targets).map(function (target) {\n return _convertToPath(target, swap !== false);\n });\n },\n defaultType: \"linear\",\n defaultUpdateTarget: true,\n defaultMap: \"size\"\n};\n_getGSAP() && gsap.registerPlugin(MorphSVGPlugin);\nexport { MorphSVGPlugin as default };","import React from 'react';\n\ntype LogoPartialAxonProps = {\n size?: 144 | 72 | 36 | 18,\n strokeWidth?: number,\n stroke?: string,\n fill?: string,\n}\n\nconst LogoPartialAxon: React.FC = props => {\n const { size = 36, fill = \"currentColor\", stroke = 'none', strokeWidth = .5 } = props;\n const scalar = size / 144;\n return \n AxonDivision\n \n \n}\n\nexport default LogoPartialAxon;","import React from 'react';\n\ntype LogoPartialDivisionProps = {\n size?: 144 | 72 | 36 | 18,\n strokeWidth?: number,\n stroke?: string,\n fill?: string,\n}\n\nconst LogoPartialDivision: React.FC = props => {\n const { size = 36, fill = 'none', stroke = 'currentColor', strokeWidth = .5 } = props;\n const scalar = size / 144;\n const relativeStrokeWidth = strokeWidth / scalar;\n return \n AxonDivision\n \n \n}\n\nexport default LogoPartialDivision;","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { enableInsights } from '../../env';\nimport { AnimatedLink } from '../AnimatedLink/AnimatedLink';\nimport Line from '../Line/Line';\nimport LogoPartialAxon from '../LogoPartialAxon';\nimport LogoPartialDivision from '../LogoPartialDivision';\nimport PageSection from '../PageSection/PageSection';\nimport { usePageContext } from '../PageTemplate/PageTemplate';\nimport './NavBar.scss';\n\ntype NavBarProps = {}\n\nconst NavBar: React.FC = props => {\n\n const page = usePageContext();\n\n return (\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n
\n
\n Apps\n \n page.location?.pathname.indexOf('/websites/') === 0}>Websites\n \n Design\n \n {enableInsights && <>\n Insights\n \n }\n Contact\n
\n
\n
\n )} />\n}\n\nexport default NavBar;","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n};\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n }, []);\n};\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n var value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n return null;\n};\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\nvar _helmetCallback = null;\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n return true;\n };\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n _this2.warnOnInvalidChildren(child, nestedChildren);\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n var newProps = _extends({}, props);\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n return React.createElement(Component, newProps);\n };\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n return mappedState;\n }, _temp;\n};\nvar NullComponent = function NullComponent() {\n return null;\n};\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","export default __webpack_public_path__ + \"static/axondivision-social-sharing-preview-ef4de3ba6fbefac645e7e89f7b10a150.jpg\";","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.com/docs/use-static-query/\n */\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport socialImage from '../content/images/axon/axondivision-social-sharing-preview.jpg';\nimport useSiteMetadata from \"../hooks/useSiteMetadata.hook\";\nimport { usePageContext } from \"./PageTemplate/PageTemplate\";\n\nexport interface SEOProps {\n description?: string, \n lang?: string, \n meta?: JSX.IntrinsicElements[\"meta\"][],\n title?: string,\n image?: string,\n keywords?: string[],\n location?: Location\n}\n\nconst SEO = (props: React.PropsWithChildren) => {\n\n const { description, lang, meta, title } = usePageContext() || props;\n const defaultTitle = 'AxonDivision';\n const siteMeta = useSiteMetadata();\n const metaDescription = description ?? siteMeta.description;\n\n // TODO: add social media images\n\n return (\n \n )\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n description: ``,\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport joinClassName from '../../utils/className.utils';\nimport './PseudoLink.scss';\n\ntype PseudoLinkProps = {\n className?: string,\n onClick?: () => void,\n name?: string\n title?: string\n // dataCy?: string\n}\n\nconst PseudoLink: React.FC = props => {\n return (\n \n { props.children }\n \n )} />\n}\n\nexport default PseudoLink;","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { enableInsights } from '../../env';\nimport { AnimatedLink } from '../AnimatedLink/AnimatedLink';\nimport Line from '../Line/Line';\nimport LogoPartialAxon from '../LogoPartialAxon';\nimport LogoPartialDivision from '../LogoPartialDivision';\nimport PageSection from '../PageSection/PageSection';\nimport PseudoLink from '../PseudoLink/PseudoLink';\nimport './StandardFooter.scss';\n\ntype StandardFooterProps = {};\n\nconst StandardFooter: React.FC = (props) => {\n const { UI } = useAppContext();\n\n return (\n (\n <>\n {/* { UI.viewport.width < 768 && <> */}\n {/* \n \n */}\n {/* } */}\n \n
\n

\n \n 768 ? 72 : 36} />\n \n

\n
\n \n
\n

\n \n \n ©{' '}\n \n AxonDivision\n {' '}\n Ltd.,\n {' '}\n All Rights Reserved.\n \n

\n {/*
Address: 2 Brighton Hall, Brighton Road, Foxrock, Dublin Republic of Ireland
*/}\n

\n Company Reg. No.: 480194\n

\n

\n Connect with us:{' '}\n \n LinkedIn\n \n

\n
\n
\n
    \n
  • \n \n Data Protection Policy\n \n
  • \n
  • \n window.MANAGE_PRIVACY_SETTINGS()}\n >\n Privacy Settings\n \n
  • \n
  • \n \n About\n \n
  • \n {/*
  • Sitemap
  • */}\n
\n
\n
\n \n
\n \n \n )}\n />\n );\n};\n\nexport default StandardFooter;\n","import { GatsbyImage, getImage } from 'gatsby-plugin-image';\nimport { Power2, TweenLite } from 'gsap';\nimport { flow } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React, { useRef } from 'react';\nimport ReactDOM from \"react-dom\";\nimport { useAppContext } from '../../controllers/app.controller';\nimport { isBuildTime } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { EntryMetaInfo, ImageWithMetaInfo } from '../../types/app.types';\nimport { isIE } from '../../utils/browsers.utils';\nimport { ColorPalette, ContextColor, getContextColorStyle, isBrightColor } from '../../utils/colors.utils';\nimport { makeDisposerController } from '../../utils/disposer.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport { registerParallaxEffect } from '../../utils/parallax.utils';\nimport { highPerf } from '../../utils/performance.utils';\nimport tick from '../../utils/waiters.utils';\nimport { usePageContext } from '../PageTemplate/PageTemplate';\nimport './ThemeSetter.scss';\n\nexport type ThemeSetterProps = {\n entryMeta?: EntryMetaInfo,\n backgroundColor?: string,\n backgroundImage?: ImageWithMetaInfo,\n foregroundColor?: string,\n}\n\n/**\n * Controls the transition of background graphics between pages.\n */\nconst ThemeSetter: React.FC = props => {\n const page = usePageContext();\n const p = useProps(props);\n const { UI } = useAppContext();\n const s = useStore(() => ({\n get theme() {\n return p.entryMeta?.theme;\n },\n get backgroundColor() {\n return props.backgroundColor ?? s.theme?.backgroundColor ?? ColorPalette.dark\n },\n get foregroundColor() {\n return props.foregroundColor ?? s.theme?.foregroundColor ?? ColorPalette.ivory\n },\n backgroundContainer: null as Nullable,\n }))\n const backgroundImageContainerRef = useRef(null);\n useOnMount(() => {\n (flow(function* () {\n if (isBuildTime) return;\n const contextColorDefinitions = {\n ...getContextColorStyle(ContextColor.bg, s.backgroundColor),\n ...getContextColorStyle(ContextColor.fg, s.foregroundColor),\n }\n Object.entries(contextColorDefinitions).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n })\n document.documentElement.classList.toggle('light', isBrightColor(s.backgroundColor));\n document.documentElement.classList.toggle('dark', isIE || isBrightColor(s.foregroundColor));\n UI.ui.isDarkTheme = isBrightColor(s.foregroundColor);\n document.documentElement.classList.toggle('blue', s.backgroundColor === ColorPalette.blue);\n const d = makeDisposerController();\n const existingContainer = document.getElementById('__BackgroundContainer') as HTMLDivElement | null;\n const container: HTMLDivElement = existingContainer ?? document.createElement('div');\n if (!existingContainer) {\n container.setAttribute('id', '__BackgroundContainer');\n document.body.prepend(container);\n }\n s.backgroundContainer = container;\n yield tick();\n if (backgroundImageContainerRef.current) {\n TweenLite.set(backgroundImageContainerRef.current, { opacity: 0 })\n TweenLite.fromTo(backgroundImageContainerRef.current, highPerf ? 1 : 0, {\n opacity: 0,\n scale: 1.2,\n }, {\n opacity: 1,\n scale: 1,\n ease: Power2.easeOut,\n })\n }\n registerParallaxEffect(backgroundImageContainerRef, {\n id: 'backgroundImageContainer',\n depth: -.05,\n shouldDisable: () => UI.viewport.width > 768,\n })\n return d.disposer;\n }))()\n })\n const image = getImage(props.backgroundImage?.image);\n return (\n <>\n { (s.backgroundContainer && (image || s.backgroundColor)) ? ReactDOM.createPortal(\n \n {image && \n \n
}\n
,\n s.backgroundContainer\n ) : null }\n \n )} />\n}\n\nexport default ThemeSetter;","import { CSSPlugin, gsap } from 'gsap';\nimport { DrawSVGPlugin } from 'gsap/DrawSVGPlugin';\nimport { MorphSVGPlugin } from 'gsap/MorphSVGPlugin';\nimport { SplitText } from 'gsap/SplitText';\nimport { Observer } from 'mobx-react-lite';\nimport React, { useContext } from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { isBrowser, isDevelopment, isProduction } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { readFromStorage } from '../../hooks/useSyncObservableStateToStorage.hook';\nimport '../../style/index.scss';\nimport { PageComponentProps } from '../../types/gatsby.types';\nimport joinClassName from '../../utils/className.utils';\nimport { reportError } from '../../utils/loggers.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport tick, { runAfter } from '../../utils/waiters.utils';\nimport NavBar from '../NavBar/NavBar';\nimport SEO, { SEOProps } from '../SEO';\nimport StandardFooter from '../StandardFooter/StandardFooter';\nimport ThemeSetter, { ThemeSetterProps } from '../ThemeSetter/ThemeSetter';\n\nif (isBrowser) {\n gsap.registerPlugin(\n CSSPlugin, \n DrawSVGPlugin,\n SplitText,\n MorphSVGPlugin\n );\n}\n\ntype PageTemplateProps = {\n className?: string,\n} & PageComponentProps & SEOProps & ThemeSetterProps\n\nconst makePageContextController = (props?: PageTemplateProps) => {\n return props;\n}\nconst PageContext = React.createContext(makePageContextController());\nexport const usePageContext = () => useContext(PageContext) as PageTemplateProps;\n\ndeclare global {\n interface Window {\n CONTEXT?: PageTemplateProps,\n }\n}\n\nconst PageTemplate: React.FC = props => {\n\n const p = useProps(props);\n const s = useStore(() => ({\n context: makePageContextController(p),\n }))\n const { UI } = useAppContext();\n\n useOnMount(() => {\n (async () => {\n if (isBrowser) {\n document.body.setAttribute('data-current-page', p.className ?? '');\n const GDPR_PREFERENCES = readFromStorage('GDPR_PREFERENCES');\n if (isDevelopment) {\n window.CONTEXT = s.context;\n }\n try {\n if (GDPR_PREFERENCES?.enableGoogleAnalytics && process.env.GTAG_ID && isProduction && !UI.isFirstLoad && !!window.ga) {\n const pathname = s.context?.location.pathname;\n await tick(500); // wait a bit for page title to update, in case it didn't happen right away\n window.ga('set', 'page', pathname);\n window.ga.getAll()[0]?.send('pageview', pathname);\n }\n runAfter(() => window.dispatchEvent(new Event('resize')), 500) // in case scrollbar appears / disappears after page load\n } catch (e) {\n reportError('Error accessing GA');\n console.error(e);\n }\n }\n })()\n })\n\n return (\n \n \n
\n \n { UI.cssFeatures.customProperties && }\n
\n {props.children}\n
\n \n
\n
\n )} />\n\n}\n\nexport default PageTemplate;","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n if (cssKeywords.hasOwnProperty(key)) {\n reverseKeywords[cssKeywords[key]] = key;\n }\n}\nvar convert = module.exports = {\n rgb: {\n channels: 3,\n labels: 'rgb'\n },\n hsl: {\n channels: 3,\n labels: 'hsl'\n },\n hsv: {\n channels: 3,\n labels: 'hsv'\n },\n hwb: {\n channels: 3,\n labels: 'hwb'\n },\n cmyk: {\n channels: 4,\n labels: 'cmyk'\n },\n xyz: {\n channels: 3,\n labels: 'xyz'\n },\n lab: {\n channels: 3,\n labels: 'lab'\n },\n lch: {\n channels: 3,\n labels: 'lch'\n },\n hex: {\n channels: 1,\n labels: ['hex']\n },\n keyword: {\n channels: 1,\n labels: ['keyword']\n },\n ansi16: {\n channels: 1,\n labels: ['ansi16']\n },\n ansi256: {\n channels: 1,\n labels: ['ansi256']\n },\n hcg: {\n channels: 3,\n labels: ['h', 'c', 'g']\n },\n apple: {\n channels: 3,\n labels: ['r16', 'g16', 'b16']\n },\n gray: {\n channels: 1,\n labels: ['gray']\n }\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n if (convert.hasOwnProperty(model)) {\n if (!('channels' in convert[model])) {\n throw new Error('missing channels property: ' + model);\n }\n if (!('labels' in convert[model])) {\n throw new Error('missing channel labels property: ' + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error('channel and label counts mismatch: ' + model);\n }\n var channels = convert[model].channels;\n var labels = convert[model].labels;\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], 'channels', {\n value: channels\n });\n Object.defineProperty(convert[model], 'labels', {\n value: labels\n });\n }\n}\nconvert.rgb.hsl = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h;\n var s;\n var l;\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n};\nconvert.rgb.hsv = function (rgb) {\n var rdif;\n var gdif;\n var bdif;\n var h;\n var s;\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var v = Math.max(r, g, b);\n var diff = v - Math.min(r, g, b);\n var diffc = function (c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [h * 360, s * 100, v * 100];\n};\nconvert.rgb.hwb = function (rgb) {\n var r = rgb[0];\n var g = rgb[1];\n var b = rgb[2];\n var h = convert.rgb.hsl(rgb)[0];\n var w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n};\nconvert.rgb.cmyk = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var c;\n var m;\n var y;\n var k;\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);\n}\nconvert.rgb.keyword = function (rgb) {\n var reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n var currentClosestDistance = Infinity;\n var currentClosestKeyword;\n for (var keyword in cssKeywords) {\n if (cssKeywords.hasOwnProperty(keyword)) {\n var value = cssKeywords[keyword];\n\n // Compute comparative distance\n var distance = comparativeDistance(rgb, value);\n\n // Check if its less, if so set as closest\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n }\n return currentClosestKeyword;\n};\nconvert.keyword.rgb = function (keyword) {\n return cssKeywords[keyword];\n};\nconvert.rgb.xyz = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x * 100, y * 100, z * 100];\n};\nconvert.rgb.lab = function (rgb) {\n var xyz = convert.rgb.xyz(rgb);\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n};\nconvert.hsl.rgb = function (hsl) {\n var h = hsl[0] / 360;\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var t1;\n var t2;\n var t3;\n var rgb;\n var val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n t1 = 2 * l - t2;\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return rgb;\n};\nconvert.hsl.hsv = function (hsl) {\n var h = hsl[0];\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var smin = s;\n var lmin = Math.max(l, 0.01);\n var sv;\n var v;\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n v = (l + s) / 2;\n sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n};\nconvert.hsv.rgb = function (hsv) {\n var h = hsv[0] / 60;\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var hi = Math.floor(h) % 6;\n var f = h - Math.floor(h);\n var p = 255 * v * (1 - s);\n var q = 255 * v * (1 - s * f);\n var t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n switch (hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n};\nconvert.hsv.hsl = function (hsv) {\n var h = hsv[0];\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var vmin = Math.max(v, 0.01);\n var lmin;\n var sl;\n var l;\n l = (2 - s) * v;\n lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n var h = hwb[0] / 360;\n var wh = hwb[1] / 100;\n var bl = hwb[2] / 100;\n var ratio = wh + bl;\n var i;\n var v;\n var f;\n var n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) !== 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n var r;\n var g;\n var b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n return [r * 255, g * 255, b * 255];\n};\nconvert.cmyk.rgb = function (cmyk) {\n var c = cmyk[0] / 100;\n var m = cmyk[1] / 100;\n var y = cmyk[2] / 100;\n var k = cmyk[3] / 100;\n var r;\n var g;\n var b;\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.rgb = function (xyz) {\n var x = xyz[0] / 100;\n var y = xyz[1] / 100;\n var z = xyz[2] / 100;\n var r;\n var g;\n var b;\n r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n b = x * 0.0557 + y * -0.2040 + z * 1.0570;\n\n // assume sRGB\n r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;\n g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;\n b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.lab = function (xyz) {\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n};\nconvert.lab.xyz = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var x;\n var y;\n var z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n var y2 = Math.pow(y, 3);\n var x2 = Math.pow(x, 3);\n var z2 = Math.pow(z, 3);\n y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n};\nconvert.lab.lch = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var hr;\n var h;\n var c;\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n};\nconvert.lch.lab = function (lch) {\n var l = lch[0];\n var c = lch[1];\n var h = lch[2];\n var a;\n var b;\n var hr;\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n};\nconvert.rgb.ansi16 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n};\nconvert.hsv.ansi16 = function (args) {\n // optimization here; we already know the value and don't need to get\n // it converted for us.\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\nconvert.rgb.ansi256 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n // we use the extended greyscale palette here, with the exception of\n // black and white. normal palette only has 4 greyscale shades.\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n};\nconvert.ansi16.rgb = function (args) {\n var color = args % 10;\n\n // handle greyscale\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n var mult = (~~(args > 50) + 1) * 0.5;\n var r = (color & 1) * mult * 255;\n var g = (color >> 1 & 1) * mult * 255;\n var b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n};\nconvert.ansi256.rgb = function (args) {\n // handle greyscale\n if (args >= 232) {\n var c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n var rem;\n var r = Math.floor(args / 36) / 5 * 255;\n var g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n var b = rem % 6 / 5 * 255;\n return [r, g, b];\n};\nconvert.rgb.hex = function (args) {\n var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n};\nconvert.hex.rgb = function (args) {\n var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n var colorString = match[0];\n if (match[0].length === 3) {\n colorString = colorString.split('').map(function (char) {\n return char + char;\n }).join('');\n }\n var integer = parseInt(colorString, 16);\n var r = integer >> 16 & 0xFF;\n var g = integer >> 8 & 0xFF;\n var b = integer & 0xFF;\n return [r, g, b];\n};\nconvert.rgb.hcg = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var max = Math.max(Math.max(r, g), b);\n var min = Math.min(Math.min(r, g), b);\n var chroma = max - min;\n var grayscale;\n var hue;\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma + 4;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n};\nconvert.hsl.hcg = function (hsl) {\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var c = 1;\n var f = 0;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return [hsl[0], c * 100, f * 100];\n};\nconvert.hsv.hcg = function (hsv) {\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var c = s * v;\n var f = 0;\n if (c < 1.0) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n};\nconvert.hcg.rgb = function (hcg) {\n var h = hcg[0] / 360;\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n if (c === 0.0) {\n return [g * 255, g * 255, g * 255];\n }\n var pure = [0, 0, 0];\n var hi = h % 1 * 6;\n var v = hi % 1;\n var w = 1 - v;\n var mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n mg = (1.0 - c) * g;\n return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n};\nconvert.hcg.hsv = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n var f = 0;\n if (v > 0.0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n};\nconvert.hcg.hsl = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var l = g * (1.0 - c) + 0.5 * c;\n var s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n};\nconvert.hcg.hwb = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\nconvert.hwb.hcg = function (hwb) {\n var w = hwb[1] / 100;\n var b = hwb[2] / 100;\n var v = 1 - b;\n var c = v - w;\n var g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n};\nconvert.apple.rgb = function (apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n};\nconvert.rgb.apple = function (rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n};\nconvert.gray.rgb = function (args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n return [0, 0, args[0]];\n};\nconvert.gray.hwb = function (gray) {\n return [0, 100, gray[0]];\n};\nconvert.gray.cmyk = function (gray) {\n return [0, 0, 0, gray[0]];\n};\nconvert.gray.lab = function (gray) {\n return [gray[0], 0, 0];\n};\nconvert.gray.hex = function (gray) {\n var val = Math.round(gray[0] / 100 * 255) & 0xFF;\n var integer = (val << 16) + (val << 8) + val;\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n};\nconvert.rgb.gray = function (rgb) {\n var val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n};"],"names":["conversions","deriveBFS","fromModel","graph","models","Object","keys","len","length","i","distance","parent","buildGraph","queue","current","pop","adjacents","adjacent","node","unshift","link","from","to","args","wrapConversion","toModel","path","fn","cur","conversion","module","exports","toLowerCase","s","isNil","ContextColor","ColorPalette","red","blue","green","white","ivory","gray","dark","black","isBrightColor","colorHex","Color","luminosity","getContrastColorHex","getContextColorStyle","contextColorName","color","colorName","input","test","colorObj","h","hue","saturationl","l","lightness","contrastColor","ch","cs","cl","join","brighten","value","lighten","hex","darken","props","UI","useAppContext","p","useProps","useStore","useMobileRatio","isBrowser","viewport","width","height","viewBox","def","_p$mobile","_p$desktop","mobile","desktop","useOnMount","morph","_UI$tricolor","_s$def","_s$def2","_s$def3","tricolor","duration","highPerf","R","G","B","when","ready","reaction","debounce","_jsx","Observer","children","_s$def$R","_s$def4","_s$def$G","_s$def5","_s$def$B","_s$def6","_jsxs","className","xmlns","d","defaultTricolorPaths","id","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","constructor","it","Array","isArray","size","entries","next","done","has","get","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call","$$typeof","error","message","match","console","warn","obj","splice","Function","getOwnPropertyDescriptor","name","route","convert","forEach","defineProperty","channels","labels","routes","wrappedFn","arguments","slice","result","Math","round","wrapRounded","raw","wrapRaw","makePageSectionController","ref","observable","visible","observeVisibility","PageSectionContext","React","usePageSectionContext","useContext","useObservableRef","context","makeDisposerController","add","onBecomeVisible","action","onBecomeInvisible","disposer","_props$as","Provider","as","joinClassName","options","timeout","scope","this","fireImmediately","resetAfter","isObject","timer","hasFiredResetTimer","hasFiredImmediately","_len","_key","fire","apply","clearTimeout","setTimeout","ex","React__default","_defineProperty","key","enumerable","configurable","writable","canUseDOM","window","document","createElement","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","SideEffect","_PureComponent","subClass","superClass","create","__proto__","peek","rewind","recordedState","undefined","_proto","UNSAFE_componentWillMount","push","componentDidUpdate","componentWillUnmount","index","indexOf","render","PureComponent","displayName","getDisplayName","isArrayish","concat","swizzle","results","arg","wrap","emojiExp","getText","e","type","nodeType","textContent","firstChild","nextSibling","nodeValue","_doc","_win","_coreInitted","_stripExp","_multipleSpacesExp","_getComputedStyle","element","getComputedStyle","_isArray","_slice","_toArray","leaveStrings","querySelectorAll","_isAbsolute","vars","position","absolute","_findSpecialChars","text","chars","substr","_cssClassFunc","cssClass","tag","iterate","num","split","_swapText","oldText","newText","_pushReversed","merge","_isBeforeWordDelimiter","root","wordDelimiter","_next","charAt","parentNode","_parent","_deWordify","child","childNodes","_isSplit","previousSibling","removeChild","insertBefore","_getStyleAsNumber","computedStyle","parseFloat","_setPositionsAfterSplit","allChars","allWords","allLines","origWidth","origHeight","j","nodes","isChild","curLine","addWordSpaces","style","lineNode","lineWidth","offset","paddingLeft","lineOffsetY","borderTopAndBottom","borderLeftAndRight","padTopAndBottom","padLeftAndRight","lineThreshold","textAlign","charArray","wordArray","lineArray","span","types","lines","words","linesClass","iterateLine","spaceNodesToRemove","isFlex","display","prevInlineDisplay","getElementsByTagName","offsetTop","abs","nodeName","_x","offsetLeft","_y","_w","offsetWidth","_h","offsetHeight","_wordEnd","left","top","appendChild","_isFirst","createTextNode","innerHTML","offsetParent","cssText","String","fromCharCode","clientHeight","clientWidth","removeProperty","_splitRawText","wordStart","charStart","splitText","character","hasTagStart","testResult","space","wordEnd","wordIsOpen","specialChars","container","reduceWhiteSpace","replace","charCodeAt","outerHTML","_split","SplitText","elements","_originals","isSplit","revert","wordsClass","charsClass","reverse","originals","version","colorNames","reverseNames","clamp","min","max","hexDouble","str","toUpperCase","string","val","model","substring","hsl","hwb","rgb","hexAlpha","i2","parseInt","alpha","isNaN","rgba","percent","r","g","hsla","hwba","keyword","colorString","skippedModels","hashedModelKeys","sort","limiters","valpha","newArr","zeroArray","hashedKeys","JSON","stringify","limit","freeze","getset","channel","modifier","m","maxfn","v","arr","toJSON","places","self","percentString","array","object","unitArray","unitObject","Number","toFixed","roundTo","roundToPlace","saturationv","chroma","wblack","cyan","magenta","yellow","x","y","z","rgbNumber","lum","chan","pow","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","ratio","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w","w1","w2","newAlpha","useSiteMetadata","site","useStaticQuery","siteMetadata","_isEdge","_windowExists","_getGSAP","gsap","registerPlugin","_numExp","_types","rect","circle","ellipse","line","_round","_parseNum","_parseSingleVal","_getAttributeAsNumber","target","attr","getAttribute","_sqrt","sqrt","_getDistance","x1","y1","x2","y2","scaleX","scaleY","_warn","_hasNonScalingStroke","_getLength","bbox","points","prevPoint","rx","ry","tagName","getScreenCTM","c","getBBox","_ref","strokeDasharray","getTotalLength","PI","_getPosition","dash","strokeDashoffset","_initCore","utils","toArray","navigator","userAgent","DrawSVGPlugin","register","core","init","tween","targets","start","end","_style","_target","defaultStart","_parse","_length","_dash","_offset","_dashPT","_offsetPT","strokeLinecap","strokeLinejoin","strokeMiterlimit","_live","_nowrap","_props","data","lengthRatio","pt","_pt","getLength","getPosition","_svgPathExp","_numbersExp","_scientific","_selectorExp","_DEG2RAD","_sin","sin","_cos","cos","_abs","_isString","atan2","_isNumber","_roundingNum","reverseSegment","segment","reversed","_typeAttrs","swap","rcirc","rycirc","x3","x4","x5","x6","y3","y4","y5","y6","circ","ignore","createElementNS","attributes","setAttributeNS","_createPath","attrs","_attrToObj","cx","cy","shift","setAttribute","rawPathToString","_gsRawPath","stringToRawPath","arcToSegment","lastX","lastY","angle","largeArcFlag","sweepFlag","angleRad","cosAngle","sinAngle","TWOPI","dx2","dy2","x1_sq","y1_sq","radiiCheck","rx_sq","ry_sq","sq","coef","cx1","cy1","ux","uy","vx","vy","temp","angleStart","acos","angleExtent","segments","ceil","rawPath","angleIncrement","controlLength","ma","mb","mc","md","command","isRelative","startX","startY","difX","difY","beziers","prevCommand","flag1","flag2","n","relativeX","relativeY","twoThirds","errorMessage","sx","sy","ey","log","closed","totalPoints","sl","_lastLinkedAnchor","PluginClass","_isFunction","_PI","_2PI","_angleMin","_angleMax","_bigNum","_commands","_log","_getAverageXY","_getSize","xMax","xMin","yMax","yMin","centerX","centerY","_getTotalSize","samplesPerBezier","k","t","inv","inc","_sortByComplexity","_sortBySize","sizeA","sizeB","_offsetSegment","shapeIndex","_getTotalMovement","sb","eb","offsetX","offsetY","_getClosestShapeIndex","checkReverse","copy","sCenter","eCenter","minIndex","_getClosestAnchor","dx","dy","closestDistance","closestX","closestY","_getClosestSegment","bezier","pool","startIndex","sortRatio","minSize","_subdivideSegmentQty","quantity","ax","ay","cp1x","cp1y","cp2x","cp2y","bx","by","tally","newPointsPerSegment","floor","_equalizeSegmentQuantity","fillSafe","dif","longer","shorter","added","sortMethod","shapeIndices","_pathFilter","precompile","_equalizePointQuantity","factor","nextX","nextY","_pointsFilter","startNums","endNums","_buildPointsFilter","_offsetPoints","_populateSmoothData","tolerance","smooth","a2","isSmooth","smoothData","_parseOriginFactors","trim","_morphMessage","_tweenRotation","linkedPT","angleDif","_short","so","_origin","eo","_eOrigin","sa","ca","_anchorPT","required","plugins","morphSVG","MorphSVGPlugin","rawVars","Plugin","shape","isPoly","startSmooth","endSmooth","startSeg","endSeg","precompiled","sData","eData","originFactors","useRotation","fill","fillRule","origins","origin","prop","forcePath","getAttributeNS","_parseShape","defaultMap","_prop","_render","defaultRender","_apply","updateTarget","defaultUpdateTarget","_rnd","precision","_tween","defaultType","smoothTolerance","_rawPath","_controlPT","l1s","l1c","l2s","l2c","endProp","easeInOut","controlPT","anchorPT","rnd","kill","property","getRawPath","querySelector","_gsPath","_dirty","normalizeStrings","shape1","shape2","pathFilter","pointsFilter","getTotalSize","equalizeSegmentQuantity","convertToPath","stroke","strokeWidth","scalar","clipRule","relativeStrokeWidth","clock","page","usePageContext","PageSection","AnimatedLink","title","LogoPartialAxon","Line","LogoPartialDivision","activeClassChecker","_page$location","location","pathname","enableInsights","_Fragment","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","Symbol","iterator","createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_extends","assign","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","Date","now","callback","currentTime","cafPolyfill","requestAnimationFrame","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","_i","removeAttribute","tags","headElement","head","tagNodes","indexToDelete","newElement","styleSheet","some","existingTag","isEqualNode","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","base","meta","noscript","script","HelmetExport","Component","_class","_temp","_React$Component","HelmetWrapper","TypeError","classCallCheck","ReferenceError","possibleConstructorReturn","setPrototypeOf","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","set","propTypes","defaultTitle","defer","titleTemplate","defaultProps","mappedState","Helmet","renderStatic","SEO","_props$keywords","_props$image","description","lang","siteMeta","metaDescription","_toConsumableArray","rel","href","siteUrl","keywords","image","socialImage","onClick","PseudoLink","MANAGE_PRIVACY_SETTINGS","_props$backgroundImag","theme","_p$entryMeta","entryMeta","backgroundColor","_props$backgroundColo","_s$theme","foregroundColor","_props$foregroundColo","_s$theme2","backgroundContainer","backgroundImageContainerRef","useRef","flow","isBuildTime","contextColorDefinitions","_objectSpread","bg","fg","_ref3","documentElement","setProperty","classList","toggle","isIE","ui","isDarkTheme","existingContainer","getElementById","body","prepend","tick","TweenLite","opacity","fromTo","scale","ease","Power2","easeOut","registerParallaxEffect","depth","shouldDisable","getImage","backgroundImage","_s$theme$backgroundIm","_s$theme3","_props$backgroundImag2","_props$backgroundImag3","_props$backgroundImag4","ReactDOM","transitionStatus","backgroundImageOpacity","GatsbyImage","alt","objectFit","objectPosition","CSSPlugin","PageContext","_p$className","GDPR_PREFERENCES","readFromStorage","isDevelopment","CONTEXT","enableGoogleAnalytics","isProduction","isFirstLoad","ga","_s$context","_window$ga$getAll$","getAll","send","runAfter","dispatchEvent","Event","reportError","NavBar","cssFeatures","customProperties","ThemeSetter","StandardFooter","cssKeywords","reverseKeywords","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","delta","rdif","gdif","bdif","diff","diffc","currentClosestKeyword","currentClosestDistance","Infinity","t1","t2","t3","smin","lmin","hi","f","q","vmin","wh","bl","z2","hr","ansi","mult","rem","char","integer","mg","pure"],"sourceRoot":""}