{"version":3,"file":"js/7643-5654cb3806436ece0f5b.js","mappings":";mFAES,SAASA,GAChB,aACA,SAASC,EAAqBC,EAAIC,GAChC,OAEGD,EAFIC,EAAS,CACdH,QAAS,CAAC,GACEG,EAAOH,SAAUG,EAAOH,OACxC,CACA,IAAII,EAAWH,GAAqB,SAASE,EAAQH,IACnD,SAAUK,GAENF,EAAOH,QAAUK,GAEpB,CAJD,EAIG,SAASC,GACV,IAAIC,EAAU,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3F,SAASC,EAASC,EAAGC,GACnB,IAAIC,EAAIF,EAAE,GAAIG,EAAIH,EAAE,GAAII,EAAIJ,EAAE,GAAIK,EAAIL,EAAE,GAQxCG,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,GAAKD,EAAIE,GAAKJ,EAAE,GAAK,UAAY,IACjC,EAAIC,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAIE,GAAKH,EAAE,GAAK,UAAY,IACjC,GAAKI,IAAM,IAAMH,EAAI,GACrBA,GAAKG,EAAIF,GAAKF,EAAE,GAAK,UAAY,IACjC,GAAKG,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIF,GAAKD,EAAE,GAAK,WAAa,IAClC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,GAAKD,EAAIE,GAAKJ,EAAE,GAAK,UAAY,IACjC,EAAIC,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAIE,GAAKH,EAAE,GAAK,WAAa,IAClC,GAAKI,IAAM,IAAMH,EAAI,GACrBA,GAAKG,EAAIF,GAAKF,EAAE,GAAK,WAAa,IAClC,GAAKG,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIF,GAAKD,EAAE,GAAK,SAAW,IAChC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,GAAKD,EAAIE,GAAKJ,EAAE,GAAK,WAAa,IAClC,EAAIC,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAIE,GAAKH,EAAE,GAAK,WAAa,IAClC,GAAKI,IAAM,IAAMH,EAAI,GACrBA,GAAKG,EAAIF,GAAKF,EAAE,IAAM,MAAQ,IAC9B,GAAKG,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIF,GAAKD,EAAE,IAAM,WAAa,IACnC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,GAAKD,EAAIE,GAAKJ,EAAE,IAAM,WAAa,IACnC,EAAIC,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAIE,GAAKH,EAAE,IAAM,SAAW,IACjC,GAAKI,IAAM,IAAMH,EAAI,GACrBA,GAAKG,EAAIF,GAAKF,EAAE,IAAM,WAAa,IACnC,GAAKG,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIF,GAAKD,EAAE,IAAM,WAAa,IACnC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIE,EAAID,GAAKC,GAAKJ,EAAE,GAAK,UAAY,IACjC,EAAIC,IAAM,IAAMC,EAAI,GACpBC,EAAID,GAAKC,GAAKH,EAAE,GAAK,WAAa,IAClC,EAAII,IAAM,IAAMH,EAAI,GACpBC,EAAID,GAAKC,GAAKF,EAAE,IAAM,UAAY,IAClC,GAAKG,IAAM,IAAMC,EAAI,GACrBH,EAAIG,GAAKH,GAAKD,EAAE,GAAK,UAAY,IACjC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIE,EAAID,GAAKC,GAAKJ,EAAE,GAAK,UAAY,IACjC,EAAIC,IAAM,IAAMC,EAAI,GACpBC,EAAID,GAAKC,GAAKH,EAAE,IAAM,SAAW,IACjC,EAAII,IAAM,IAAMH,EAAI,GACpBC,EAAID,GAAKC,GAAKF,EAAE,IAAM,UAAY,IAClC,GAAKG,IAAM,IAAMC,EAAI,GACrBH,EAAIG,GAAKH,GAAKD,EAAE,GAAK,UAAY,IACjC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIE,EAAID,GAAKC,GAAKJ,EAAE,GAAK,UAAY,IACjC,EAAIC,IAAM,IAAMC,EAAI,GACpBC,EAAID,GAAKC,GAAKH,EAAE,IAAM,WAAa,IACnC,EAAII,IAAM,IAAMH,EAAI,GACpBC,EAAID,GAAKC,GAAKF,EAAE,GAAK,UAAY,IACjC,GAAKG,IAAM,IAAMC,EAAI,GACrBH,EAAIG,GAAKH,GAAKD,EAAE,GAAK,WAAa,IAClC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIE,EAAID,GAAKC,GAAKJ,EAAE,IAAM,WAAa,IACnC,EAAIC,IAAM,IAAMC,EAAI,GACpBC,EAAID,GAAKC,GAAKH,EAAE,GAAK,SAAW,IAChC,EAAII,IAAM,IAAMH,EAAI,GACpBC,EAAID,GAAKC,GAAKF,EAAE,GAAK,WAAa,IAClC,GAAKG,IAAM,IAAMC,EAAI,GACrBH,EAAIG,GAAKH,GAAKD,EAAE,IAAM,WAAa,IACnC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,EAAIC,GAAKJ,EAAE,GAAK,OAAS,IACzB,EAAIC,IAAM,IAAMC,EAAI,GACpBA,EAAIC,GAAKH,EAAE,GAAK,WAAa,IAC7B,GAAKI,IAAM,IAAMH,EAAI,GACrBA,EAAIC,GAAKF,EAAE,IAAM,WAAa,IAC9B,GAAKG,IAAM,IAAMC,EAAI,GACrBA,EAAIH,GAAKD,EAAE,IAAM,SAAW,IAC5B,GAAKE,IAAM,GAAKC,EAAI,EAQ9BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,EAAIC,GAAKJ,EAAE,GAAK,WAAa,IAC7B,EAAIC,IAAM,IAAMC,EAAI,GACpBA,EAAIC,GAAKH,EAAE,GAAK,WAAa,IAC7B,GAAKI,IAAM,IAAMH,EAAI,GACrBA,EAAIC,GAAKF,EAAE,GAAK,UAAY,IAC5B,GAAKG,IAAM,IAAMC,EAAI,GACrBA,EAAIH,GAAKD,EAAE,IAAM,WAAa,IAC9B,GAAKE,IAAM,GAAKC,EAAI,EAQ9BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,EAAIC,GAAKJ,EAAE,IAAM,UAAY,IAC7B,EAAIC,IAAM,IAAMC,EAAI,GACpBA,EAAIC,GAAKH,EAAE,GAAK,UAAY,IAC5B,GAAKI,IAAM,IAAMH,EAAI,GACrBA,EAAIC,GAAKF,EAAE,GAAK,UAAY,IAC5B,GAAKG,IAAM,IAAMC,EAAI,GACrBA,EAAIH,GAAKD,EAAE,GAAK,SAAW,IAC3B,GAAKE,IAAM,GAAKC,EAAI,EAQ9BD,IADAA,KADAC,IADAA,KADAC,IADAA,KADAH,IADAA,IAAMC,EAAIC,EAAIC,GAAKJ,EAAE,GAAK,UAAY,IAC5B,EAAIC,IAAM,IAAMC,EAAI,GACpBA,EAAIC,GAAKH,EAAE,IAAM,UAAY,IAC7B,GAAKI,IAAM,IAAMH,EAAI,GACrBA,EAAIC,GAAKF,EAAE,IAAM,UAAY,IAC7B,GAAKG,IAAM,IAAMC,EAAI,GACrBA,EAAIH,GAAKD,EAAE,GAAK,UAAY,IAC5B,GAAKE,IAAM,GAAKC,EAAI,EAQ9BD,IADAA,KAHAE,IADAA,IAAMF,IADND,IADAA,IAAME,GAAKD,GAAKE,IAAMJ,EAAE,GAAK,UAAY,IAC/B,EAAIC,IAAM,IAAMC,EAAI,IACdC,IAAMH,EAAE,GAAK,WAAa,IAChC,GAAKI,IAAM,IAAMH,EAAI,KAE/BE,IADAA,IAAMF,GAAKG,GAAKF,IAAMF,EAAE,IAAM,WAAa,IACjC,GAAKG,IAAM,IAAMC,EAAI,IACfH,IAAMD,EAAE,GAAK,SAAW,IAC9B,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KAHAE,IADAA,IAAMF,IADND,IADAA,IAAME,GAAKD,GAAKE,IAAMJ,EAAE,IAAM,WAAa,IACjC,EAAIC,IAAM,IAAMC,EAAI,IACdC,IAAMH,EAAE,GAAK,WAAa,IAChC,GAAKI,IAAM,IAAMH,EAAI,KAE/BE,IADAA,IAAMF,GAAKG,GAAKF,IAAMF,EAAE,IAAM,QAAU,IAC9B,GAAKG,IAAM,IAAMC,EAAI,IACfH,IAAMD,EAAE,GAAK,WAAa,IAChC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KAHAE,IADAA,IAAMF,IADND,IADAA,IAAME,GAAKD,GAAKE,IAAMJ,EAAE,GAAK,WAAa,IAChC,EAAIC,IAAM,IAAMC,EAAI,IACdC,IAAMH,EAAE,IAAM,SAAW,IAC/B,GAAKI,IAAM,IAAMH,EAAI,KAE/BE,IADAA,IAAMF,GAAKG,GAAKF,IAAMF,EAAE,GAAK,WAAa,IAChC,GAAKG,IAAM,IAAMC,EAAI,IACfH,IAAMD,EAAE,IAAM,WAAa,IACjC,GAAKE,IAAM,IAAMC,EAAI,EAQ/BD,IADAA,KAHAE,IADAA,IAAMF,IADND,IADAA,IAAME,GAAKD,GAAKE,IAAMJ,EAAE,GAAK,UAAY,IAC/B,EAAIC,IAAM,IAAMC,EAAI,IACdC,IAAMH,EAAE,IAAM,WAAa,IACjC,GAAKI,IAAM,IAAMH,EAAI,KAE/BE,IADAA,IAAMF,GAAKG,GAAKF,IAAMF,EAAE,GAAK,UAAY,IAC/B,GAAKG,IAAM,IAAMC,EAAI,IACfH,IAAMD,EAAE,GAAK,UAAY,IAC/B,GAAKE,IAAM,IAAMC,EAAI,EAC/BJ,EAAE,GAAKE,EAAIF,EAAE,GAAK,EAClBA,EAAE,GAAKG,EAAIH,EAAE,GAAK,EAClBA,EAAE,GAAKI,EAAIJ,EAAE,GAAK,EAClBA,EAAE,GAAKK,EAAIL,EAAE,GAAK,CACpB,CACA,SAASM,EAAOC,GACd,IAAkBC,EAAdC,EAAU,GACd,IAAKD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBC,EAAQD,GAAK,GAAKD,EAAEG,WAAWF,IAAMD,EAAEG,WAAWF,EAAI,IAAM,IAAMD,EAAEG,WAAWF,EAAI,IAAM,KAAOD,EAAEG,WAAWF,EAAI,IAAM,IAEzH,OAAOC,CACT,CACA,SAASE,EAAaT,GACpB,IAAkBM,EAAdC,EAAU,GACd,IAAKD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBC,EAAQD,GAAK,GAAKN,EAAEM,IAAMN,EAAEM,EAAI,IAAM,IAAMN,EAAEM,EAAI,IAAM,KAAON,EAAEM,EAAI,IAAM,IAE7E,OAAOC,CACT,CACA,SAASG,EAAKL,GACZ,IAA8EC,EAAGK,EAAQC,EAAMC,EAAKC,EAAIC,EAApGC,EAAIX,EAAEM,OAAQM,EAAQ,CAAE,YAAa,WAAY,WAAY,WACjE,IAAKX,EAAI,GAAIA,GAAKU,EAAGV,GAAK,GACxBT,EAASoB,EAAOb,EAAOC,EAAEa,UAAUZ,EAAI,GAAIA,KAK7C,IAFAK,GADAN,EAAIA,EAAEa,UAAUZ,EAAI,KACTK,OACXC,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjDN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAC3BM,EAAKN,GAAK,IAAMD,EAAEG,WAAWF,KAAOA,EAAI,GAAK,GAG/C,GADAM,EAAKN,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAT,EAASoB,EAAOL,GACXN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBM,EAAKN,GAAK,EAUd,OANAO,GADAA,EAAU,EAAJG,GACIG,SAAS,IAAIC,MAAM,kBAC7BN,EAAKO,SAASR,EAAI,GAAI,IACtBE,EAAKM,SAASR,EAAI,GAAI,KAAO,EAC7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EACXlB,EAASoB,EAAOL,GACTK,CACT,CACA,SAASK,EAAWtB,GAClB,IAA8EM,EAAGK,EAAQC,EAAMC,EAAKC,EAAIC,EAApGC,EAAIhB,EAAEW,OAAQM,EAAQ,CAAE,YAAa,WAAY,WAAY,WACjE,IAAKX,EAAI,GAAIA,GAAKU,EAAGV,GAAK,GACxBT,EAASoB,EAAOR,EAAaT,EAAEuB,SAASjB,EAAI,GAAIA,KAKlD,IAFAK,GADAX,EAAIM,EAAI,GAAKU,EAAIhB,EAAEuB,SAASjB,EAAI,IAAM,IAAIkB,WAAW,IAC1Cb,OACXC,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjDN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAC3BM,EAAKN,GAAK,IAAMN,EAAEM,KAAOA,EAAI,GAAK,GAGpC,GADAM,EAAKN,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAT,EAASoB,EAAOL,GACXN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBM,EAAKN,GAAK,EAUd,OANAO,GADAA,EAAU,EAAJG,GACIG,SAAS,IAAIC,MAAM,kBAC7BN,EAAKO,SAASR,EAAI,GAAI,IACtBE,EAAKM,SAASR,EAAI,GAAI,KAAO,EAC7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EACXlB,EAASoB,EAAOL,GACTK,CACT,CACA,SAASQ,EAAKT,GACZ,IAAYU,EAARrB,EAAI,GACR,IAAKqB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBrB,GAAKT,EAAQoB,GAAS,EAAJU,EAAQ,EAAI,IAAM9B,EAAQoB,GAAS,EAAJU,EAAQ,IAE3D,OAAOrB,CACT,CACA,SAASsB,EAAI7B,GACX,IAAIQ,EACJ,IAAKA,EAAI,EAAGA,EAAIR,EAAEa,OAAQL,GAAK,EAC7BR,EAAEQ,GAAKmB,EAAK3B,EAAEQ,IAEhB,OAAOR,EAAE8B,KAAK,GAChB,CA4BA,SAASC,EAAOC,GAId,MAHI,kBAAkBC,KAAKD,KACzBA,EAAME,SAASC,mBAAmBH,KAE7BA,CACT,CACA,SAASI,EAAoBJ,EAAKK,GAChC,IAAqF7B,EAAjFK,EAASmB,EAAInB,OAAQyB,EAAO,IAAIC,YAAY1B,GAAS2B,EAAM,IAAId,WAAWY,GAC9E,IAAK9B,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAC3BgC,EAAIhC,GAAKwB,EAAItB,WAAWF,GAE1B,OAAO6B,EAAmBG,EAAMF,CAClC,CACA,SAASG,EAAoBH,GAC3B,OAAOI,OAAOC,aAAaC,MAAM,KAAM,IAAIlB,WAAWY,GACxD,CACA,SAASO,EAAwBC,EAAOC,EAAQV,GAC9C,IAAIW,EAAS,IAAItB,WAAWoB,EAAMG,WAAaF,EAAOE,YAGtD,OAFAD,EAAOE,IAAI,IAAIxB,WAAWoB,IAC1BE,EAAOE,IAAI,IAAIxB,WAAWqB,GAASD,EAAMG,YAClCZ,EAAmBW,EAASA,EAAOG,MAC5C,CACA,SAASC,EAAkBvB,GACzB,IAAqC7B,EAAjCqD,EAAQ,GAAIxC,EAASgB,EAAIhB,OAC7B,IAAKb,EAAI,EAAGA,EAAIa,EAAS,EAAGb,GAAK,EAC/BqD,EAAMC,KAAK/B,SAASM,EAAI0B,OAAOvD,EAAG,GAAI,KAExC,OAAO0C,OAAOC,aAAaC,MAAMF,OAAQW,EAC3C,CACA,SAASG,IACPC,KAAKC,OACP,CA0HA,OApLI7B,EAAIjB,EAAK,UACc,qBAAhB2B,aAAgCA,YAAYoB,UAAUC,OAC/D,WACE,SAASC,EAAMC,EAAKjD,GAElB,OADAiD,EAAY,EAANA,GAAW,GACP,EACDC,KAAKC,IAAIF,EAAMjD,EAAQ,GAEzBkD,KAAKE,IAAIH,EAAKjD,EACvB,CACA0B,YAAYoB,UAAUC,MAAQ,SAASM,EAAMC,GAC3C,IAAyEC,EAAKC,EAAQC,EAAaC,EAA/F1D,EAAS4C,KAAKR,WAAYuB,EAAQX,EAAMK,EAAMrD,GAAS4D,EAAM5D,EAIjE,OAHIsD,IAAOtE,IACT4E,EAAMZ,EAAMM,EAAItD,IAEd2D,EAAQC,EACH,IAAIlC,YAAY,IAEzB6B,EAAMK,EAAMD,EACZH,EAAS,IAAI9B,YAAY6B,GACzBE,EAAc,IAAI5C,WAAW2C,GAC7BE,EAAc,IAAI7C,WAAW+B,KAAMe,EAAOJ,GAC1CE,EAAYpB,IAAIqB,GACTF,EACT,CACD,CAvBD,GAyDFb,EAASG,UAAUe,OAAS,SAAS1C,GAEnC,OADAyB,KAAKkB,aAAa5C,EAAOC,IAClByB,IACT,EACAD,EAASG,UAAUgB,aAAe,SAASC,GACzCnB,KAAKoB,OAASD,EACdnB,KAAKqB,SAAWF,EAAS/D,OACzB,IAAgCL,EAA5BK,EAAS4C,KAAKoB,MAAMhE,OACxB,IAAKL,EAAI,GAAIA,GAAKK,EAAQL,GAAK,GAC7BT,EAAS0D,KAAKsB,MAAOzE,EAAOmD,KAAKoB,MAAMzD,UAAUZ,EAAI,GAAIA,KAG3D,OADAiD,KAAKoB,MAAQpB,KAAKoB,MAAMzD,UAAUZ,EAAI,IAC/BiD,IACT,EACAD,EAASG,UAAUc,IAAM,SAASO,GAChC,IAA6CxE,EAA8DyE,EAAvG3C,EAAOmB,KAAKoB,MAAOhE,EAASyB,EAAKzB,OAAWC,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtG,IAAKN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAC3BM,EAAKN,GAAK,IAAM8B,EAAK5B,WAAWF,KAAOA,EAAI,GAAK,GAQlD,OANAiD,KAAKyB,QAAQpE,EAAMD,GACnBoE,EAAMpD,EAAI4B,KAAKsB,OACXC,IACFC,EAAM7B,EAAkB6B,IAE1BxB,KAAKC,QACEuB,CACT,EACAzB,EAASG,UAAUD,MAAQ,WAIzB,OAHAD,KAAKoB,MAAQ,GACbpB,KAAKqB,QAAU,EACfrB,KAAKsB,MAAQ,CAAE,YAAa,WAAY,WAAY,WAC7CtB,IACT,EACAD,EAASG,UAAUwB,SAAW,WAC5B,MAAO,CACL7C,KAAMmB,KAAKoB,MACXhE,OAAQ4C,KAAKqB,QACbM,KAAM3B,KAAKsB,MAEf,EACAvB,EAASG,UAAU0B,SAAW,SAASlE,GAIrC,OAHAsC,KAAKoB,MAAQ1D,EAAMmB,KACnBmB,KAAKqB,QAAU3D,EAAMN,OACrB4C,KAAKsB,MAAQ5D,EAAMiE,KACZ3B,IACT,EACAD,EAASG,UAAU2B,QAAU,kBACpB7B,KAAKsB,aACLtB,KAAKoB,aACLpB,KAAKqB,OACd,EACAtB,EAASG,UAAUuB,QAAU,SAASpE,EAAMD,GAC1C,IAAgBE,EAAKC,EAAIC,EAArBT,EAAIK,EAER,GADAC,EAAKN,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAT,EAAS0D,KAAKsB,MAAOjE,GAChBN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBM,EAAKN,GAAK,EAIdO,GADAA,EAAqB,EAAf0C,KAAKqB,SACDzD,SAAS,IAAIC,MAAM,kBAC7BN,EAAKO,SAASR,EAAI,GAAI,IACtBE,EAAKM,SAASR,EAAI,GAAI,KAAO,EAC7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EACXlB,EAAS0D,KAAKsB,MAAOjE,EACvB,EACA0C,EAAS4B,KAAO,SAASpD,EAAKgD,GAC5B,OAAOxB,EAAS+B,WAAWxD,EAAOC,GAAMgD,EAC1C,EACAxB,EAAS+B,WAAa,SAASC,EAASR,GACtC,IAA0BC,EAAMpD,EAArBjB,EAAK4E,IAChB,OAAOR,EAAM5B,EAAkB6B,GAAOA,CACxC,EACAzB,EAASjB,YAAc,WACrBkB,KAAKC,OACP,EACAF,EAASjB,YAAYoB,UAAUe,OAAS,SAASlC,GAC/C,IAAwFhC,EAApF8B,EAAOO,EAAwBY,KAAKoB,MAAM1B,OAAQX,GAAK,GAAO3B,EAASyB,EAAKzB,OAEhF,IADA4C,KAAKqB,SAAWtC,EAAIS,WACfzC,EAAI,GAAIA,GAAKK,EAAQL,GAAK,GAC7BT,EAAS0D,KAAKsB,MAAOpE,EAAa2B,EAAKb,SAASjB,EAAI,GAAIA,KAG1D,OADAiD,KAAKoB,MAAQrE,EAAI,GAAKK,EAAS,IAAIa,WAAWY,EAAKa,OAAOS,MAAMpD,EAAI,KAAO,IAAIkB,WAAW,GACnF+B,IACT,EACAD,EAASjB,YAAYoB,UAAUc,IAAM,SAASO,GAC5C,IAAwGxE,EAAGyE,EAAvG3C,EAAOmB,KAAKoB,MAAOhE,EAASyB,EAAKzB,OAAQC,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnG,IAAKN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAC3BM,EAAKN,GAAK,IAAM8B,EAAK9B,KAAOA,EAAI,GAAK,GAQvC,OANAiD,KAAKyB,QAAQpE,EAAMD,GACnBoE,EAAMpD,EAAI4B,KAAKsB,OACXC,IACFC,EAAM7B,EAAkB6B,IAE1BxB,KAAKC,QACEuB,CACT,EACAzB,EAASjB,YAAYoB,UAAUD,MAAQ,WAIrC,OAHAD,KAAKoB,MAAQ,IAAInD,WAAW,GAC5B+B,KAAKqB,QAAU,EACfrB,KAAKsB,MAAQ,CAAE,YAAa,WAAY,WAAY,WAC7CtB,IACT,EACAD,EAASjB,YAAYoB,UAAUwB,SAAW,WACxC,IAAIhE,EAAQqC,EAASG,UAAUwB,SAASM,KAAKhC,MAE7C,OADAtC,EAAMmB,KAAOG,EAAoBtB,EAAMmB,MAChCnB,CACT,EACAqC,EAASjB,YAAYoB,UAAU0B,SAAW,SAASlE,GAEjD,OADAA,EAAMmB,KAAOF,EAAoBjB,EAAMmB,MAAM,GACtCkB,EAASG,UAAU0B,SAASI,KAAKhC,KAAMtC,EAChD,EACAqC,EAASjB,YAAYoB,UAAU2B,QAAU9B,EAASG,UAAU2B,QAC5D9B,EAASjB,YAAYoB,UAAUuB,QAAU1B,EAASG,UAAUuB,QAC5D1B,EAASjB,YAAY6C,KAAO,SAAS5C,EAAKwC,GACxC,IAA4CC,EAAMpD,EAAvCL,EAAW,IAAIE,WAAWc,KACrC,OAAOwC,EAAM5B,EAAkB6B,GAAOA,CACxC,EACOzB,CACT,GACF,IACIkC,EAAiB,SAASC,EAAUC,GACtC,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,oCAExB,EACIC,EAAc,WAChB,SAASC,EAAiB1B,EAAQ2B,GAChC,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CACrC,IAAIyF,EAAaD,EAAMxF,GACvByF,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAChD,CACF,CACA,OAAO,SAASL,EAAaY,EAAYC,GAGvC,OAFID,GAAYT,EAAiBH,EAAYjC,UAAW6C,GACpDC,GAAaV,EAAiBH,EAAaa,GACxCb,CACT,CACF,CAfkB,GAgBdc,EAAYC,KAAKhD,UAAUC,OAAS+C,KAAKhD,UAAUiD,UAAYD,KAAKhD,UAAUkD,YAC9EC,EAAe,WAQjB,SAASA,EAAaC,GACpBrB,EAAejC,KAAMqD,GACrBrD,KAAKsD,KAAOA,EACZtD,KAAKuD,UAAY,QACjBvD,KAAKwD,WAAalD,KAAKmD,KAAKzD,KAAKsD,KAAKI,KAAO1D,KAAKuD,WAClDvD,KAAK2D,WAAa,CACpB,CA8CA,OA3DAtB,EAAYgB,EAAc,KAAM,CAAE,CAChCP,IAAK,SACLc,MAAO,SAAgBN,EAAMO,GACZ,IAAIR,EAAaC,GACvBQ,OAAOD,EAClB,KASFxB,EAAYgB,EAAc,CAAE,CAC1BP,IAAK,SACLc,MAAO,SAAgBC,GACrB,IAAIE,EAAQ/D,KACZA,KAAK6D,SAAWA,EAChB7D,KAAKgE,UAAY,IAAI9H,EAAS4C,YAC9BkB,KAAKiE,WAAa,IAAIC,WACtBlE,KAAKiE,WAAWE,iBAAiB,QAAQ,SAASC,GAChD,OAAOL,EAAMM,kBAAkBD,EACjC,IACApE,KAAKiE,WAAWE,iBAAiB,SAAS,SAASC,GACjD,OAAOL,EAAMO,mBAAmBF,EAClC,IACApE,KAAKuE,eACP,GACC,CACDzB,IAAK,oBACLc,MAAO,SAA2BQ,GAEhC,GADApE,KAAKgE,UAAU/C,OAAOmD,EAAMxD,OAAOrB,SAC9BS,KAAKuE,gBAAiB,CACzB,IAAIC,EAAexE,KAAKgE,UAAUhD,KAAI,GAClCyD,EAAeC,KAAKF,GACxBxE,KAAK6D,SAAS,KAAMY,EACtB,CACF,GACC,CACD3B,IAAK,qBACLc,MAAO,SAA4BQ,GACjCpE,KAAK6D,SAAS,iBAAmB7D,KAAKsD,KAAKqB,KAC7C,GACC,CACD7B,IAAK,gBACLc,MAAO,WACL,GAAI5D,KAAK2D,WAAa3D,KAAKwD,YAAiC,GAAnBxD,KAAK2D,YAAsC,GAAnB3D,KAAKwD,WAAiB,CACrF,IAAIoB,EAAQ5E,KAAK2D,WAAa3D,KAAKuD,UAC/BvC,EAAMV,KAAKE,IAAIoE,EAAQ5E,KAAKuD,UAAWvD,KAAKsD,KAAKI,MACjD9D,EAAQqD,EAAUjB,KAAKhC,KAAKsD,KAAMsB,EAAO5D,GAG7C,OAFAhB,KAAKiE,WAAWY,kBAAkBjF,GAClCI,KAAK2D,cACE,CACT,CACE,OAAO,CAEX,KAEKN,CACT,CA7DmB,GA8DnB,SAASyB,EAAaH,GACpB,IAAII,EAAUC,EAAYC,SAASC,KAAM,cAAgBP,EAAO,MAChE,GAAII,EACF,OAAOA,EAAQI,aAAa,UAEhC,CACA,SAASC,EAAaC,EAAMC,GAM1B,MALmB,iBAARD,IACTC,EAAWD,EACXA,EAAOJ,UAGFM,EADQF,EAAKG,iBAAiBF,GAEvC,CACA,SAASN,EAAYK,EAAMC,GAKzB,MAJmB,iBAARD,IACTC,EAAWD,EACXA,EAAOJ,UAEFI,EAAKI,cAAcH,EAC5B,CACA,SAASI,EAAcX,EAASY,GAC9B,IAAIC,EAAYC,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjFC,EAAWf,EAAQe,SACnBC,EAAUH,EAAUG,QAASC,EAAaJ,EAAUI,WAAYC,EAASL,EAAUK,OACnF7B,EAAQa,SAASiB,YAAY,SACjC9B,EAAM+B,UAAUR,EAAMI,IAAW,EAAMC,IAAc,GACrD5B,EAAM6B,OAASA,GAAU,CAAC,EAC1B,IACElB,EAAQe,UAAW,EACnBf,EAAQW,cAActB,EACxB,CAAE,QACAW,EAAQe,SAAWA,CACrB,CACA,OAAO1B,CACT,CACA,SAASmB,EAAU3B,GACjB,OAAIwC,MAAMC,QAAQzC,GACTA,EACEwC,MAAM3F,KACR2F,MAAM3F,KAAKmD,GAEX,GAAGzD,MAAM6B,KAAK4B,EAEzB,CACA,IAAI0C,EAAa,WACf,SAASA,EAAWhD,EAAMiD,EAAUC,GAClC,IAAIzC,EAAQ/D,KACZiC,EAAejC,KAAMsG,GACrBtG,KAAKsD,KAAOA,EACZtD,KAAKyG,WAAa,CAChBC,SAAUpD,EAAKqB,KACfgC,aAAcrD,EAAKqC,MAAQ,2BAC3BiB,UAAWtD,EAAKI,KAChB6C,SAAUA,GAEZvG,KAAK6G,IAAM,IAAIC,eACf9G,KAAK6G,IAAIE,KAAK,OAAQP,GAAK,GAC3BxG,KAAK6G,IAAIG,aAAe,OACxBhH,KAAK6G,IAAII,iBAAiB,eAAgB,oBAC1CjH,KAAK6G,IAAII,iBAAiB,SAAU,oBACpCjH,KAAK6G,IAAII,iBAAiB,mBAAoB,kBAC9C,IAAIC,EAAYpC,EAAa,mBACZ1I,GAAb8K,GACFlH,KAAK6G,IAAII,iBAAiB,eAAgBC,GAE5ClH,KAAK6G,IAAI1C,iBAAiB,QAAQ,SAASC,GACzC,OAAOL,EAAMoD,eAAe/C,EAC9B,IACApE,KAAK6G,IAAI1C,iBAAiB,SAAS,SAASC,GAC1C,OAAOL,EAAMqD,gBAAgBhD,EAC/B,GACF,CAqDA,OApDA/B,EAAYiE,EAAY,CAAE,CACxBxD,IAAK,SACLc,MAAO,SAAgBC,GACrB7D,KAAK6D,SAAWA,EAChB7D,KAAK6G,IAAIQ,KAAKC,KAAKC,UAAU,CAC3BC,KAAMxH,KAAKyG,aAEf,GACC,CACD3D,IAAK,iBACLc,MAAO,SAAwBQ,GAC7B,GAAIpE,KAAKyH,QAAU,KAAOzH,KAAKyH,OAAS,IAAK,CAC3C,IAAIC,EAAW1H,KAAK0H,SAChBC,EAAgBD,EAASC,qBACtBD,EAASC,cAChB3H,KAAKyG,WAAaiB,EAClB1H,KAAK4H,iBAAmBD,EACxB3H,KAAK6D,SAAS,KAAM7D,KAAK6H,SAC3B,MACE7H,KAAKoH,gBAAgBhD,EAEzB,GACC,CACDtB,IAAK,kBACLc,MAAO,SAAyBQ,GAC9BpE,KAAK6D,SAAS,4BAA8B7D,KAAKsD,KAAKqB,KAAO,cAAgB3E,KAAKyH,OACpF,GACC,CACD3E,IAAK,SACLc,MAAO,WACL,IAAIrE,EAAS,CAAC,EACd,IAAK,IAAIuD,KAAO9C,KAAKyG,WACnBlH,EAAOuD,GAAO9C,KAAKyG,WAAW3D,GAEhC,OAAOvD,CACT,GACC,CACDuD,IAAK,SACLgF,IAAK,WACH,OAAO9H,KAAK6G,IAAIY,MAClB,GACC,CACD3E,IAAK,WACLgF,IAAK,WACH,IAAIC,EAAO/H,KAAK6G,IAAKG,EAAee,EAAKf,aAAcU,EAAWK,EAAKL,SACvE,MAAoB,QAAhBV,EACKU,EAEAJ,KAAKU,MAAMN,EAEtB,KAEKpB,CACT,CAjFiB,GAkFb2B,EAAa,WACf,SAASA,EAAWT,GAClB,IAAIzD,EAAQ/D,KACZiC,EAAejC,KAAMiI,GACrBjI,KAAKwH,KAAOA,EACZxH,KAAKsD,KAAOkE,EAAKlE,KACjB,IAAI4E,EAAwBV,EAAKI,iBAAkBpB,EAAM0B,EAAsB1B,IAAK2B,EAAUD,EAAsBC,QAIpH,IAAK,IAAIrF,KAHT9C,KAAK6G,IAAM,IAAIC,eACf9G,KAAK6G,IAAIE,KAAK,MAAOP,GAAK,GAC1BxG,KAAK6G,IAAIG,aAAe,OACRmB,EACdnI,KAAK6G,IAAII,iBAAiBnE,EAAKqF,EAAQrF,IAEzC9C,KAAK6G,IAAI1C,iBAAiB,QAAQ,SAASC,GACzC,OAAOL,EAAMoD,eAAe/C,EAC9B,IACApE,KAAK6G,IAAI1C,iBAAiB,SAAS,SAASC,GAC1C,OAAOL,EAAMqD,gBAAgBhD,EAC/B,GACF,CAuBA,OAtBA/B,EAAY4F,EAAY,CAAE,CACxBnF,IAAK,SACLc,MAAO,SAAgBC,GACrB7D,KAAK6D,SAAWA,EAChB7D,KAAK6G,IAAIQ,KAAKrH,KAAKsD,KAAKnD,QAC1B,GACC,CACD2C,IAAK,iBACLc,MAAO,SAAwBQ,GAC7B,IAAI2D,EAAO/H,KAAK6G,IAAKY,EAASM,EAAKN,OAAQC,EAAWK,EAAKL,SACvDD,GAAU,KAAOA,EAAS,IAC5BzH,KAAK6D,SAAS,KAAM6D,GAEpB1H,KAAKoH,gBAAgBhD,EAEzB,GACC,CACDtB,IAAK,kBACLc,MAAO,SAAyBQ,GAC9BpE,KAAK6D,SAAS,kBAAoB7D,KAAKsD,KAAKqB,KAAO,cAAgB3E,KAAK6G,IAAIY,OAC9E,KAEKQ,CACT,CA3CiB,GA4CbG,EAAK,EACLC,EAAe,WACjB,SAASA,EAAa/E,EAAMkD,EAAK8B,GAC/BrG,EAAejC,KAAMqI,GACrBrI,KAAKoI,KAAOA,EACZpI,KAAKsD,KAAOA,EACZtD,KAAKwG,IAAMA,EACXxG,KAAKsI,SAAWA,CAClB,CA8BA,OA7BAjG,EAAYgG,EAAc,CAAE,CAC1BvF,IAAK,SACLc,MAAO,SAAgBC,GACrB,IAAIE,EAAQ/D,KACZqD,EAAaS,OAAO9D,KAAKsD,MAAM,SAASiF,EAAOhC,GAC7C,GAAIgC,EACF1E,EAAS0E,OADX,CAIA,IAAIf,EAAO,IAAIlB,EAAWvC,EAAMT,KAAMiD,EAAUxC,EAAMyC,KACtDgC,EAAOzE,EAAMuE,SAAU,oCAAqCd,EAAKX,KACjEW,EAAK1D,QAAO,SAASyE,GACnB,GAAIA,EACF1E,EAAS0E,OACJ,CACL,IAAIE,EAAS,IAAIR,EAAWT,GAC5BgB,EAAOzE,EAAMuE,SAAU,mCAAoCG,EAAO5B,KAClE4B,EAAO3E,QAAO,SAASyE,GACjBA,EACF1E,EAAS0E,GAET1E,EAAS,KAAM2D,EAAKK,SAExB,GACF,CACF,GAjBA,CAkBF,GACF,KAEKQ,CACT,CAtCmB,GAuCnB,SAASG,EAAOE,EAAQC,GACtB,GAAID,GAAuC,mBAAtBA,EAAOC,GAA2B,CACrD,IAAK,IAAIC,EAAO/C,UAAUzI,OAAQyL,EAAWzC,MAAMwC,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAASC,EAAO,GAAKjD,UAAUiD,GAEjC,OAAOJ,EAAOC,GAAYxJ,MAAMuJ,EAAQG,EAC1C,CACF,CACA,IAAIE,EAAyB,WAC3B,SAASA,EAAuBC,EAAO1F,GACrCrB,EAAejC,KAAM+I,GACrB/I,KAAKgJ,MAAQA,EACbhJ,KAAKsD,KAAOA,EACZtD,KAAKiJ,aAAe,IAAIZ,EAAarI,KAAKsD,KAAMtD,KAAKwG,IAAKxG,MAC1DA,KAAKkJ,SAAS,aAChB,CA2EA,OA1EA7G,EAAY0G,EAAwB,CAAE,CACpCjG,IAAK,QACLc,MAAO,SAAeC,GACpB,IAAIE,EAAQ/D,KACRmJ,EAAclE,SAASmE,cAAc,SACzCD,EAAYxD,KAAO,SACnBwD,EAAYxE,KAAO3E,KAAKgJ,MAAMrE,KAC9B3E,KAAKgJ,MAAMK,sBAAsB,cAAeF,GAChDnJ,KAAKkJ,SAAS,SACdlJ,KAAKiJ,aAAanF,QAAO,SAASyE,EAAO9B,GACnC8B,GACFY,EAAYG,WAAWC,YAAYJ,GACnCpF,EAAMyF,cAAcjB,IAEpBY,EAAYvF,MAAQ6C,EAAWgD,UAEjC1F,EAAMmF,SAAS,OACfrF,EAAS0E,EACX,GACF,GACC,CACDzF,IAAK,2BACLc,MAAO,SAAkCQ,GACvC,IAAIsF,EAAWtF,EAAMuF,OAASvF,EAAMwF,MAAQ,IACxCF,GACF1J,KAAKkJ,SAAS,WAAY,CACxBQ,SAAUA,GAGhB,GACC,CACD5G,IAAK,WACLc,MAAO,SAAkBe,GACvB,IAAIsB,EAASJ,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAGlF,OAFAI,EAAO3C,KAAOtD,KAAKsD,KACnB2C,EAAOmC,GAAKpI,KAAKiJ,aAAab,GACvB1C,EAAc1F,KAAKgJ,MAAO,iBAAmBrE,EAAM,CACxDsB,OAAQA,GAEZ,GACC,CACDnD,IAAK,gBACLc,MAAO,SAAuB2E,GAChBvI,KAAKkJ,SAAS,QAAS,CACjCX,MAAOA,IAEEsB,kBACTC,MAAMvB,EAEV,GACC,CACDzF,IAAK,oCACLc,MAAO,SAA2CiD,GAChD7G,KAAKkJ,SAAS,sBAAuB,CACnCrC,IAAKA,GAET,GACC,CACD/D,IAAK,mCACLc,MAAO,SAA0CiD,GAC/C,IAAIkD,EAAS/J,KACbA,KAAKkJ,SAAS,yBAA0B,CACtCrC,IAAKA,IAEPA,EAAI4B,OAAOtE,iBAAiB,YAAY,SAASC,GAC/C,OAAO2F,EAAOC,yBAAyB5F,EACzC,GACF,GACC,CACDtB,IAAK,MACLgF,IAAK,WACH,OAAO9H,KAAKgJ,MAAM7D,aAAa,yBACjC,KAEK4D,CACT,CAnF6B,GAoFzBkB,EAAgB,2DAChBC,EAA0B,WAC5B,SAASA,EAAwBC,GAC/BlI,EAAejC,KAAMkK,GACrBlK,KAAKmK,KAAOA,EACZnK,KAAKoK,OAAShF,EAAa+E,EAAMF,GAAeI,QAAO,SAASrB,GAC9D,OAAOA,EAAMsB,MAAMlN,MACrB,GACF,CA8CA,OA7CAiF,EAAY6H,EAAyB,CAAE,CACrCpH,IAAK,QACLc,MAAO,SAAeC,GACpB,IAAIE,EAAQ/D,KACRuK,EAAcvK,KAAKwK,gCACnBC,EAAsB,SAASA,IACjC,IAAIC,EAAaH,EAAYI,QACzBD,EACFA,EAAW9F,OAAM,SAAS2D,GACpBA,GACF1E,EAAS0E,GACTxE,EAAMmF,SAAS,QAEfuB,GAEJ,KAEA5G,IACAE,EAAMmF,SAAS,OAEnB,EACAlJ,KAAKkJ,SAAS,SACduB,GACF,GACC,CACD3H,IAAK,gCACLc,MAAO,WACL,IAAI2G,EAAc,GAOlB,OANAvK,KAAKoK,OAAOQ,SAAQ,SAAS5B,GAC3BzD,EAAUyD,EAAMsB,OAAOM,SAAQ,SAAStH,GACtC,IAAIoH,EAAa,IAAI3B,EAAuBC,EAAO1F,GACnDiH,EAAY1K,KAAK6K,EACnB,GACF,IACOH,CACT,GACC,CACDzH,IAAK,WACLc,MAAO,SAAkBe,GACvB,IAAIsB,EAASJ,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,OAAOH,EAAc1F,KAAKmK,KAAM,kBAAoBxF,EAAM,CACxDsB,OAAQA,GAEZ,KAEKiE,CACT,CAtD8B,GAuD1BW,EAAsB,iCACtBC,EAAsB,IAAIC,QAC1BC,GAAU,EACd,SAASpG,IACFoG,IACHA,GAAU,EACV/F,SAASd,iBAAiB,QAAS8G,GAAU,GAC7ChG,SAASd,iBAAiB,SAAU+G,GACpCjG,SAASd,iBAAiB,cAAegH,GAE7C,CACA,SAASF,EAAS7G,GAChB,IAAIxD,EAASwD,EAAMxD,OACI,SAAlBA,EAAOwK,SAAwC,UAAlBxK,EAAOwK,SAAuC,UAAfxK,EAAO+E,OAAoB/E,EAAOuJ,MACjGW,EAAoBrL,IAAImB,EAAOuJ,KAAMvJ,EAEzC,CACA,SAASsK,EAAc9G,GACrBiH,EAA0BjH,EAC5B,CACA,SAAS+G,EAAuB/G,GACF,QAAxBA,EAAMxD,OAAOwK,SACfC,EAA0BjH,EAE9B,CACA,SAASiH,EAA0BjH,GACjC,IAAI+F,EAAO/F,EAAMxD,OACjB,GAAIuJ,EAAKmB,aAAaT,GACpBzG,EAAMmH,qBADR,CAIA,IAAIb,EAAa,IAAIR,EAAwBC,GACzCC,EAASM,EAAWN,OACpBA,EAAOhN,SACTgH,EAAMmH,iBACNpB,EAAKqB,aAAaX,EAAqB,IACvCT,EAAOQ,QAAQa,GACff,EAAW9F,OAAM,SAAS2D,GACxB4B,EAAKuB,gBAAgBb,GACjBtC,EACF6B,EAAOQ,QAAQe,GAEfC,EAAWzB,EAEf,IAdF,CAgBF,CACA,SAASyB,EAAWzB,GAClB,IAAI0B,EAASf,EAAoBhD,IAAIqC,IAASnF,EAAYmF,EAAM,2CAChE,GAAI0B,EAAQ,CACV,IAAsB/F,EAAR+F,EAA2B/F,SACzC+F,EAAO/F,UAAW,EAClB+F,EAAOC,QACPD,EAAOE,QACPF,EAAO/F,SAAWA,CACpB,MACE+F,EAAS5G,SAASmE,cAAc,UACzBzD,KAAO,SACdkG,EAAOG,MAAMC,QAAU,OACvB9B,EAAK+B,YAAYL,GACjBA,EAAOE,QACP5B,EAAKZ,YAAYsC,GAEnBf,EAAoBqB,OAAOhC,EAC7B,CACA,SAASsB,EAAQzC,GACfA,EAAMlD,UAAW,CACnB,CACA,SAAS6F,EAAO3C,GACdA,EAAMlD,UAAW,CACnB,CACA,SAASsG,IACHC,OAAOC,eACT1H,GAEJ,CACA2H,WAAWH,EAAW,GACtBtQ,EAAQ8I,MAAQA,EAChB9I,EAAQuM,aAAeA,EACvBzF,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,GAEX,CA56BiEzH,CAAQL,0BCDzE,SAMA,YAGE,YACE,WACEkE,KAAKwM,MAAQ,CACXC,kBAAmB,yGACnBC,oBAAqB,CACnBpH,SAAU,oEACVqH,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,8BACpBC,uBAAwB,ySACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,4EAG1B,GAAEnL,KAAKhC,KACT,GAAEgC,KArBWhC,MAuBd,IAAIwM,EAvBUxM,KAuBMwM,OAEpB,YACE,WACE,IAAIY,EAEJA,EAAQ,KAERZ,EAAMa,aAAe,WACnB,IAAIC,EACJ,OAAOF,EAAkE,OAAzDE,EAAMrI,SAASQ,cAAc,yBAAmC6H,EAAIvL,aAAU,CAChG,EAEAyK,EAAMe,SAAW,WACf,OAAgB,MAATH,EAAgBA,EAAQZ,EAAMa,cACvC,CAED,GAAErL,KAAKhC,MACR,WACE,IAAIwN,EAASC,EAEbA,EAAIC,QAAQxN,UAAUyN,SAAWD,QAAQxN,UAAU0N,iBAAmBF,QAAQxN,UAAU2N,oBAAsBH,QAAQxN,UAAU4N,mBAAqBJ,QAAQxN,UAAU6N,kBAAoBL,QAAQxN,UAAU8N,sBAE7MxB,EAAMmB,QAAU,SAAS5I,EAASO,GAChC,OAAwB,MAApBA,EAASqH,QACJc,EAAEzL,KAAK+C,EAASO,EAASA,YAAcmI,EAAEzL,KAAK+C,EAASO,EAASqH,SAEhEc,EAAEzL,KAAK+C,EAASO,EAE3B,EAEAkI,EAAU,WAEVhB,EAAMyB,QAAU,SAASlJ,EAASjC,GAChC,IAAIwK,EACJ,OAAmC,OAA3BA,EAAMvI,EAAQyI,IAAoBF,EAAIxK,QAAO,CACvD,EAEA0J,EAAM0B,QAAU,SAASnJ,EAASjC,EAAKc,GAIrC,OAHwB,MAApBmB,EAAQyI,KACVzI,EAAQyI,GAAW,CAAC,GAEfzI,EAAQyI,GAAS1K,GAAOc,CACjC,EAEA4I,EAAM2B,EAAI,SAAS7I,GACjB,OAAOc,MAAMlG,UAAUC,MAAM6B,KAAKiD,SAASO,iBAAiBF,GAC9D,CAED,EAAEtD,KAAKhC,MACR,WACE,IAAImO,EAAGC,EAAWlH,EAElBiH,EAAI3B,EAAM2B,EAEVjH,EAAYsF,EAAMtF,UAAY,WAC5B,IAAImH,EAEJ,OADAA,EAAOpJ,SAASQ,cAAc,2BACf4I,EAAKtM,OACtB,EAEAqM,EAAY5B,EAAM4B,UAAY,WAC5B,IAAIC,EAEJ,OADAA,EAAOpJ,SAASQ,cAAc,2BACf4I,EAAKtM,OACtB,EAEAyK,EAAM8B,eAAiB,SAASzH,GAC9B,IAAI0H,EAEJ,GAAa,OADbA,EAAQrH,KAEN,OAAOL,EAAII,iBAAiB,eAAgBsH,EAEhD,EAEA/B,EAAMgC,kBAAoB,WACxB,IAAIC,EAAOF,EAGX,GAFAA,EAAQrH,IACRuH,EAAQL,IACM,MAATG,GAA4B,MAATE,EACtB,OAAON,EAAE,oBAAsBM,EAAQ,MAAM7D,SAAQ,SAAS5B,GAC5D,OAAOA,EAAMpF,MAAQ2K,CACvB,GAEJ,CAED,EAAEvM,KAAKhC,MACR,WACE,IAAI0O,EAAaC,EAAMhB,EAASpC,EAEhCoC,EAAUnB,EAAMmB,QAIW,oBAF3Be,EAAcrC,OAAOqC,gBAGnBA,EAAc,SAAStK,EAAOwK,GAC5B,IAAIC,EAGJ,OAFAA,EAAM5J,SAASiB,YAAY,gBACvB4I,gBAAgB1K,EAAOwK,EAAO7I,QAAS6I,EAAO5I,WAAY4I,EAAO3I,QAC9D4I,CACT,GACY3O,UAAYmM,OAAO0C,MAAM7O,UACrCqL,EAAiBmD,EAAYxO,UAAUqL,eACvCmD,EAAYxO,UAAUqL,eAAiB,WACrC,IAAIhM,EASJ,OARAA,EAASgM,EAAevJ,KAAKhC,MACzBA,KAAKgG,aAAehG,KAAK6J,kBAC3BjH,OAAOC,eAAe7C,KAAM,mBAAoB,CAC9C8H,IAAK,WACH,OAAO,CACT,IAGGvI,CACT,GAGFoP,EAAOnC,EAAMmC,KAAO,SAASK,EAAKrK,EAAMsK,GACtC,IAAI7K,EAOJ,OANAA,EAAQ,IAAIsK,EAAY/J,EAAM,CAC5BoB,SAAS,EACTC,YAAY,EACZC,OAAQgJ,IAEVD,EAAItJ,cAActB,IACVA,EAAMyF,gBAChB,EAEA2C,EAAM0C,eAAiB,SAASC,GAI9B,OAHAR,EAAKQ,EAAEvO,OAAQ,yBACfuO,EAAE5D,iBACF4D,EAAEC,kBACKD,EAAEE,0BACX,EAEA7C,EAAMlE,SAAW,SAASvD,EAASO,EAAUgK,EAAWC,GACtD,OAAOxK,EAAQZ,iBAAiBmL,GAAW,SAASH,GAClD,IAAIvO,EAEJ,IADAA,EAASuO,EAAEvO,OACAA,aAAkB8M,UAAYC,EAAQ/M,EAAQ0E,IACvD1E,EAASA,EAAO0I,WAElB,GAAI1I,aAAkB8M,UAAuC,IAA5B6B,EAAQvN,KAAKpB,EAAQuO,GAEpD,OADAA,EAAE5D,iBACK4D,EAAEC,iBAEb,GACF,CAED,EAAEpN,KAAKhC,MACR,WACE,IAAIwP,EAAelB,EAAgBmB,EAAWlC,EAAgBmC,EAAgBC,EAE9EpC,EAAWf,EAAMe,SAAUe,EAAiB9B,EAAM8B,eAAuB9B,EAAMmC,KAE/Ea,EAAgB,CACd,IAAK,MACLI,KAAM,aACNC,KAAM,YACNC,IAAK,4BACLC,KAAM,oCACNC,OAAQ,6FAGVxD,EAAMyD,KAAO,SAASC,GACpB,IAAIrJ,EAgBJ,OAfAqJ,EAAUR,EAAeQ,GACzBrJ,EAAM4I,EAAUS,GAAS,WACvB,IAAI5C,EAAK5F,EAWT,OAVAA,EAAWiI,EAAwC,OAAvBrC,EAAMzG,EAAIa,UAAoB4F,EAAMzG,EAAIsJ,aAActJ,EAAIuJ,kBAAkB,iBACnE,IAAjC9P,KAAK+P,MAAMxJ,EAAIY,OAAS,KACK,oBAApByI,EAAQI,SACjBJ,EAAQI,QAAQ5I,EAAUb,EAAI0J,WAAY1J,GAGf,oBAAlBqJ,EAAQ3H,OACjB2H,EAAQ3H,MAAMb,EAAUb,EAAI0J,WAAY1J,GAGT,oBAArBqJ,EAAQM,SAA0BN,EAAQM,SAAS3J,EAAKA,EAAI0J,iBAAc,CAC1F,MAC2B,MAAtBL,EAAQO,aAAwBP,EAAQO,WAAW5J,EAAKqJ,MAGzDrJ,EAAI6J,aAAe5J,eAAe6J,OAC7B9J,EAAIQ,KAAK6I,EAAQjB,WAD1B,EAGF,EAEAS,EAAiB,SAASQ,GAiBxB,OAhBAA,EAAQ1J,IAAM0J,EAAQ1J,KAAOoK,SAASC,KACtCX,EAAQvK,KAAOuK,EAAQvK,KAAKmL,cACP,QAAjBZ,EAAQvK,MAAkBuK,EAAQjB,OAChCiB,EAAQ1J,IAAIuK,QAAQ,KAAO,EAC7Bb,EAAQ1J,KAAO,IAAM0J,EAAQjB,KAE7BiB,EAAQ1J,KAAO,IAAM0J,EAAQjB,MAGM,MAAnCO,EAAcU,EAAQc,YACxBd,EAAQc,SAAW,KAErBd,EAAQe,OAASzB,EAAcU,EAAQc,UACd,MAArBd,EAAQc,WACVd,EAAQe,QAAU,iBAEbf,CACT,EAEAT,EAAY,SAASS,EAASgB,GAC5B,IAAIrK,EAiBJ,OAhBAA,EAAM,IAAIC,gBACNC,KAAKmJ,EAAQvK,KAAMuK,EAAQ1J,KAAK,GACpCK,EAAII,iBAAiB,SAAUiJ,EAAQe,QACX,kBAAjBf,EAAQjB,MACjBpI,EAAII,iBAAiB,eAAgB,oDAElCiJ,EAAQiB,cACXtK,EAAII,iBAAiB,mBAAoB,kBACzCqH,EAAezH,IAEjBA,EAAIuK,kBAAoBlB,EAAQkB,gBAChCvK,EAAIwK,mBAAqB,WACvB,GAAIxK,EAAI6J,aAAe5J,eAAewK,KACpC,OAAOJ,EAAKrK,EAEhB,EACOA,CACT,EAEA8I,EAAkB,SAASjI,EAAU/B,GACnC,IAAI4L,EAAQvB,EACZ,GAAwB,kBAAbtI,GAAyC,kBAAT/B,EACzC,GAAIA,EAAK9H,MAAM,YACb,IACE6J,EAAWJ,KAAKU,MAAMN,EACxB,CAAE,MAAOa,GAAQ,MACZ,GAAI5C,EAAK9H,MAAM,4BACpBmS,EAAS/K,SAASmE,cAAc,WACzBoC,aAAa,QAAS+B,KAC7ByC,EAAOJ,KAAOlI,EACdzC,SAASC,KAAKgH,YAAY8D,GAAQ1G,WAAWC,YAAYyG,QACpD,GAAIrK,EAAK9H,MAAM,sBAAuB,CAC3C0T,EAAS,IAAIC,UACb7L,EAAOA,EAAK8L,QAAQ,MAAO,IAC3B,IACE/J,EAAW6J,EAAOG,gBAAgBhK,EAAU/B,EAC9C,CAAE,MAAO4C,GAAQ,CACnB,CAEF,OAAOb,CACT,EAEA8E,EAAMqE,KAAO,SAAS9L,GACpB,OAAOA,EAAQ8L,IACjB,EAEArE,EAAMmF,cAAgB,SAASnL,GAC7B,IAAOoL,EAAcC,GACrBD,EAAe3M,SAASmE,cAAc,MACzByH,KAAOD,SAASC,KAC7BgB,EAAY5M,SAASmE,cAAc,KACnC,IAEE,OADAyI,EAAUhB,KAAOrK,MACLqL,EAAUC,UAAmC,MAAvBD,EAAUC,YAAsBD,EAAUE,MAAUH,EAAaE,SAAW,KAAOF,EAAaG,OAASF,EAAUC,SAAW,KAAOD,EAAUE,KACnL,CAAE,MAAOxJ,GAEP,OADIA,GACG,CACT,CACF,CAED,EAAEvG,KAAKhC,MACR,WACE,IAAI2N,EAASqE,EAEbrE,EAAUnB,EAAMmB,QAEhBqE,EAAU,SAAS7C,GACjB,OAAO/I,MAAMlG,UAAUC,MAAM6B,KAAKmN,EACpC,EAEA3C,EAAMyF,iBAAmB,SAASlN,EAASmN,GACzC,IAAI9H,EAAQwE,EAgCZ,OA/BAxE,EAAS,CAACrF,GACN4I,EAAQ5I,EAAS,UACnBqF,EAAS4H,EAAQjN,EAAQoN,WAE3BvD,EAAS,GACTxE,EAAOQ,SAAQ,SAAS5B,GACtB,GAAKA,EAAMrE,OAAQqE,EAAMlD,WAGrB6H,EAAQ3E,EAAO,wBAGnB,OAAI2E,EAAQ3E,EAAO,UACVgJ,EAAQhJ,EAAMkH,SAAStF,SAAQ,SAASwH,GAC7C,GAAIA,EAAOC,SACT,OAAOzD,EAAO/O,KAAK,CACjB8E,KAAMqE,EAAMrE,KACZf,MAAOwO,EAAOxO,OAGpB,IACSoF,EAAMsJ,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAUvB,QAAQ/H,EAAMrD,MACjEiJ,EAAO/O,KAAK,CACjB8E,KAAMqE,EAAMrE,KACZf,MAAOoF,EAAMpF,aAHV,CAMT,IACIsO,GACFtD,EAAO/O,KAAKqS,GAEPtD,EAAO2D,KAAI,SAAS9D,GACzB,OAAkB,MAAdA,EAAM9J,KACAjG,mBAAmB+P,EAAM9J,MAAS,IAAOjG,mBAAmB+P,EAAM7K,OAEnE6K,CAEX,IAAGpQ,KAAK,IACV,EAEAmO,EAAMgG,aAAe,SAASrI,EAAM7E,GAClC,OAAIqI,EAAQxD,EAAM,QACT6H,EAAQ7H,EAAKgI,UAAU9H,QAAO,SAASoI,GAC5C,OAAO9E,EAAQ8E,EAAInN,EACrB,IAEO0M,EAAQ7H,EAAK3E,iBAAiBF,GAEzC,CAED,EAAEtD,KAAKhC,MACR,WACE,IAAI0S,EAAa/D,EAAMO,EAEvBP,EAAOnC,EAAMmC,KAAMO,EAAiB1C,EAAM0C,eAE1C1C,EAAMmG,cAAgB,SAASxD,GAC7B,IAAKuD,EAAY1S,MACf,OAAOkP,EAAeC,EAE1B,EAEA3C,EAAMoG,QAAU,SAASC,EAAS9N,GAChC,OAAO6N,QAAQC,EACjB,EAEAH,EAAc,SAAS3N,GACrB,IAAI+N,EAAQjP,EAAUgP,EAEtB,KADAA,EAAU9N,EAAQI,aAAa,iBAE7B,OAAO,EAGT,GADA2N,GAAS,EACLnE,EAAK5J,EAAS,WAAY,CAC5B,IACE+N,EAAStG,EAAMoG,QAAQC,EAAS9N,EAClC,CAAE,MAAOwD,GAAQ,CACjB1E,EAAW8K,EAAK5J,EAAS,mBAAoB,CAAC+N,GAChD,CACA,OAAOA,GAAUjP,CACnB,CAED,EAAE7B,KAAKhC,MACR,WACE,IAAI+S,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBZ,EAAcvE,EAASoF,EAAe1F,EAASO,EAASgB,EAEnLvB,EAAUnB,EAAMmB,QAASM,EAAUzB,EAAMyB,QAASC,EAAU1B,EAAM0B,QAASgB,EAAiB1C,EAAM0C,eAAgBsD,EAAehG,EAAMgG,aAEvIhG,EAAM8G,sBAAwB,SAASnE,GAGrC,GADUnP,UACE8F,SACV,OAAOoJ,EAAeC,EAE1B,EAEA3C,EAAM+G,cAAgB,SAASpE,GAC7B,IAAIpK,EACJ,GAAIoK,aAAaJ,MAAO,CACtB,GAAIsE,EAAclE,GAChB,OAEFpK,EAAUoK,EAAEvO,MACd,MACEmE,EAAUoK,EAEZ,OAAIxB,EAAQ5I,EAASyH,EAAMU,qBAClBkG,EAAkBrO,GAChB4I,EAAQ5I,EAASyH,EAAMW,wBAA0BQ,EAAQ5I,EAASyH,EAAMQ,oBAC1EkG,EAAkBnO,GAChB4I,EAAQ5I,EAASyH,EAAMK,oBACzBsG,EAAmBpO,QADrB,CAGT,EAEAyH,EAAMgH,eAAiB,SAASrE,GAC9B,IAAIpK,EAEJ,OADAA,EAAUoK,aAAaJ,MAAQI,EAAEvO,OAASuO,EACtCxB,EAAQ5I,EAASyH,EAAMU,qBAClB+F,EAAmBlO,GACjB4I,EAAQ5I,EAASyH,EAAMW,wBAA0BQ,EAAQ5I,EAASyH,EAAMO,qBAC1EgG,EAAmBhO,GACjB4I,EAAQ5I,EAASyH,EAAMK,oBACzBmG,EAAoBjO,QADtB,CAGT,EAEAkO,EAAqB,SAASlO,GAC5B,IAAI0O,EACJ,IAAIxF,EAAQlJ,EAAS,gBASrB,OALmB,OADnB0O,EAAc1O,EAAQI,aAAa,wBAEjC+I,EAAQnJ,EAAS,kBAAmBA,EAAQ2O,WAC5C3O,EAAQ2O,UAAYD,GAEtB1O,EAAQZ,iBAAiB,QAAS+K,GAC3BhB,EAAQnJ,EAAS,gBAAgB,EAC1C,EAEAqO,EAAoB,SAASrO,GAC3B,IAAI4O,EAOJ,OALoB,OADpBA,EAAe1F,EAAQlJ,EAAS,sBAE9BA,EAAQ2O,UAAYC,EACpBzF,EAAQnJ,EAAS,kBAAmB,OAEtCA,EAAQ6O,oBAAoB,QAAS1E,GAC9BhB,EAAQnJ,EAAS,eAAgB,KAC1C,EAEAiO,EAAsB,SAAS7I,GAC7B,OAAOqI,EAAarI,EAAMqC,EAAMO,qBAAqBnC,QAAQmI,EAC/D,EAEAA,EAAqB,SAAShO,GAC5B,IAAI0O,EACJ,IAAIxF,EAAQlJ,EAAS,gBAcrB,OAVmB,OADnB0O,EAAc1O,EAAQI,aAAa,wBAE7BwI,EAAQ5I,EAAS,WACnBmJ,EAAQnJ,EAAS,kBAAmBA,EAAQ2O,WAC5C3O,EAAQ2O,UAAYD,IAEpBvF,EAAQnJ,EAAS,kBAAmBA,EAAQnB,OAC5CmB,EAAQnB,MAAQ6P,IAGpB1O,EAAQe,UAAW,EACZoI,EAAQnJ,EAAS,gBAAgB,EAC1C,EAEAoO,EAAqB,SAAShJ,GAC5B,OAAOqI,EAAarI,EAAMqC,EAAMQ,oBAAoBpC,QAAQsI,EAC9D,EAEAA,EAAoB,SAASnO,GAC3B,IAAI4O,EAWJ,OAToB,OADpBA,EAAe1F,EAAQlJ,EAAS,sBAE1B4I,EAAQ5I,EAAS,UACnBA,EAAQ2O,UAAYC,EAEpB5O,EAAQnB,MAAQ+P,EAElBzF,EAAQnJ,EAAS,kBAAmB,OAEtCA,EAAQe,UAAW,EACZoI,EAAQnJ,EAAS,eAAgB,KAC1C,EAEAsO,EAAgB,SAASjP,GACvB,IAAIkJ,EAAKzG,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvByG,EAAMlJ,EAAM6B,QAAkBqH,EAAI,QAAK,GACxBzG,EAAIuJ,kBAAkB,uBAAoB,EAClE,CAED,EAAEpO,KAAKhC,MACR,WACE,IAAIkP,EAEJA,EAAiB1C,EAAM0C,eAEvB1C,EAAMqH,aAAe,SAAS1E,GAC5B,IAAIf,EAAWlH,EAAWiD,EAAM2J,EAAajD,EAAMkD,EAAMC,EAGzD,GADAA,GADAD,EAAO/T,MACOmF,aAAa,eAoB3B,OAhBA0L,EAAOrE,EAAMqE,KAAKkD,GAClB7M,EAAYsF,EAAMtF,YAClBkH,EAAY5B,EAAM4B,YAClBjE,EAAOlF,SAASmE,cAAc,QAC9B0K,EAAc,gCAAkCE,EAAS,qBACvC,MAAb5F,GAAoC,MAAblH,GAAuBsF,EAAMmF,cAAcd,KACrEiD,GAAe,gBAAkB1F,EAAY,YAAclH,EAAY,sBAEzE4M,GAAe,0BACf3J,EAAK6J,OAAS,OACd7J,EAAK8J,OAASpD,EACd1G,EAAKvJ,OAASmT,EAAKnT,OACnBuJ,EAAKuJ,UAAYI,EACjB3J,EAAK6B,MAAMC,QAAU,OACrBhH,SAASiP,KAAKhI,YAAY/B,GAC1BA,EAAK1E,cAAc,mBAAmBsG,QAC/BmD,EAAeC,EACxB,CAED,EAAEnN,KAAKhC,MACR,WACE,IAAIiQ,EAAMtB,EAAMV,EAAS0D,EAAewC,EAAUxG,EAASsE,EAAkB/D,EAASgB,EACpF/O,EAAQ,GAAGA,MAEbwN,EAAUnB,EAAMmB,QAASM,EAAUzB,EAAMyB,QAASC,EAAU1B,EAAM0B,QAASS,EAAOnC,EAAMmC,KAAMO,EAAiB1C,EAAM0C,eAAgBe,EAAOzD,EAAMyD,KAAM0B,EAAgBnF,EAAMmF,cAAeM,EAAmBzF,EAAMyF,iBAEtNkC,EAAW,SAASpP,GAClB,IAAInB,EAEJ,OAAiB,OADjBA,EAAQmB,EAAQI,aAAa,iBACO,UAAVvB,CAC5B,EAEA4I,EAAM4H,aAAe,SAASjF,GAC5B,IAAItD,EAAQoD,EAAM+B,EAAUjM,EAASiP,EAAQxN,EAAK4K,EAElD,OAAK+C,EADLpP,EAAU/E,QAIL2O,EAAK5J,EAAS,gBAInBqM,EAAkBrM,EAAQI,aAAa,yBACvC6L,EAAWjM,EAAQI,aAAa,cAAgB,SAC5CwI,EAAQ5I,EAASyH,EAAMK,qBACzBhB,EAASoC,EAAQlJ,EAAS,qBAC1BiP,EAAS/F,EAAQlJ,EAAS,iCAAmCA,EAAQiP,OACrExN,EAAMyH,EAAQlJ,EAAS,iCAAmCA,EAAQI,aAAa,WAAayL,SAASC,KACxE,QAAzBmD,EAAOlD,gBACTtK,EAAMA,EAAIiL,QAAQ,QAAS,KAEL,wBAApB1M,EAAQsP,SACVpF,EAAO,IAAIqF,SAASvP,GACN,MAAV8G,GACFoD,EAAKhO,OAAO4K,EAAOlH,KAAMkH,EAAOjI,QAGlCqL,EAAOgD,EAAiBlN,EAAS8G,GAEnCqC,EAAQnJ,EAAS,oBAAqB,MACtCmJ,EAAQnJ,EAAS,+BAAgC,MACjDmJ,EAAQnJ,EAAS,+BAAgC,OACxC4I,EAAQ5I,EAASyH,EAAME,sBAAwBiB,EAAQ5I,EAASyH,EAAMI,sBAC/EoH,EAASjP,EAAQI,aAAa,eAC9BqB,EAAMzB,EAAQI,aAAa,YAC3B8J,EAAOgD,EAAiBlN,EAASA,EAAQI,aAAa,kBAEtD6O,EAASjP,EAAQI,aAAa,eAC9BqB,EAAMgG,EAAMqE,KAAK9L,GACjBkK,EAAOlK,EAAQI,aAAa,gBAE9B8K,EAAK,CACHtK,KAAMqO,GAAU,MAChBxN,IAAKA,EACLyI,KAAMA,EACN+B,SAAUA,EACVP,WAAY,SAAS5J,EAAKqJ,GACxB,OAAIvB,EAAK5J,EAAS,kBAAmB,CAAC8B,EAAKqJ,IAClCvB,EAAK5J,EAAS,YAAa,CAAC8B,KAEnC8H,EAAK5J,EAAS,iBACP,EAEX,EACAuL,QAAS,WACP,IAAIiE,EAEJ,OADAA,EAAO,GAAK1O,UAAUzI,OAAS+C,EAAM6B,KAAK6D,UAAW,GAAK,GACnD8I,EAAK5J,EAAS,eAAgBwP,EACvC,EACAhM,MAAO,WACL,IAAIgM,EAEJ,OADAA,EAAO,GAAK1O,UAAUzI,OAAS+C,EAAM6B,KAAK6D,UAAW,GAAK,GACnD8I,EAAK5J,EAAS,aAAcwP,EACrC,EACA/D,SAAU,WACR,IAAI+D,EAEJ,OADAA,EAAO,GAAK1O,UAAUzI,OAAS+C,EAAM6B,KAAK6D,UAAW,GAAK,GACnD8I,EAAK5J,EAAS,gBAAiBwP,EACxC,EACApD,YAAaQ,EAAcnL,GAC3B4K,gBAAqC,MAAnBA,GAAgD,UAApBA,IAEzClC,EAAeC,KA/DpBR,EAAK5J,EAAS,iBACP,GA+DX,EAEAyH,EAAMgI,sBAAwB,SAASrF,GACrC,IAAItD,EAAQ1B,EAGZ,GADAA,GADA0B,EAAS7L,MACKmK,KAYd,OARI0B,EAAOlH,MACTuJ,EAAQ/D,EAAM,oBAAqB,CACjCxF,KAAMkH,EAAOlH,KACbf,MAAOiI,EAAOjI,QAGlBsK,EAAQ/D,EAAM,4BAA6B0B,EAAO4I,gBAClDvG,EAAQ/D,EAAM,+BAAgC0B,EAAO1G,aAAa,eAC3D+I,EAAQ/D,EAAM,+BAAgC0B,EAAO1G,aAAa,cAC3E,EAEAqH,EAAMkI,0BAA4B,SAASvF,GACzC,IAAIF,EAAM0F,EAAyCX,EAOnD,GANOhU,KACPgU,GADOhU,KACQmF,aAAa,gBAAkB,OAAO2L,cACrD7B,EAFOjP,KAEKmF,aAAa,eAEzBwP,GADYxF,EAAEyF,SAAWzF,EAAE0F,UACsB,QAAXb,IAAqB/E,EACvB,MAAZE,EAAEtD,QAAgC,IAAbsD,EAAEtD,QACnB8I,EAC1B,OAAOxF,EAAEE,0BAEb,CAED,EAAErN,KAAKhC,MACR,WACE,IAAImO,EAAGG,EAAgBhG,EAAUkL,EAAgBD,EAAe5E,EAAM6F,EAAuBvG,EAAS0E,EAAeW,EAAuBO,EAAcO,EAAc/G,EAAcqH,EAA2BlG,EAIjN,GAFAG,EAAOnC,EAAMmC,KAAMrG,EAAWkE,EAAMlE,SAAU2F,EAAUzB,EAAMyB,QAASE,EAAI3B,EAAM2B,EAAGK,EAAoBhC,EAAMgC,kBAAmBF,EAAiB9B,EAAM8B,eAAgBjB,EAAeb,EAAMa,aAAckG,EAAgB/G,EAAM+G,cAAeC,EAAiBhH,EAAMgH,eAAgBF,EAAwB9G,EAAM8G,sBAAuBX,EAAgBnG,EAAMmG,cAAe+B,EAA4BlI,EAAMkI,0BAA2BN,EAAe5H,EAAM4H,aAAcI,EAAwBhI,EAAMgI,sBAAuBX,EAAerH,EAAMqH,aAEpgB,qBAAXiB,QAAqC,OAAXA,QAAoC,MAAfA,OAAO7E,KAAe,CAC/E,GAAI6E,OAAOC,MACT,MAAM,IAAIC,MAAM,kEAElBF,OAAOC,MAAQvI,EACfsI,OAAOG,eAAc,SAAS/E,EAASgF,EAAiBrO,GACtD,IAAKqJ,EAAQiB,YACX,OAAO7C,EAAezH,EAE1B,GACF,CAEA2F,EAAM5H,MAAQ,WACZ,GAAIyH,OAAO8I,cACT,MAAM,IAAIH,MAAM,sCAgDlB,OA9CA3I,OAAOlI,iBAAiB,YAAY,WAMlC,OALAgK,EAAE3B,EAAMQ,oBAAoBpC,SAAQ,SAAS6H,GAC3C,GAAIxE,EAAQwE,EAAI,gBACd,OAAOc,EAAcd,EAEzB,IACOtE,EAAE3B,EAAMU,qBAAqBtC,SAAQ,SAAS6H,GACnD,GAAIxE,EAAQwE,EAAI,gBACd,OAAOc,EAAcd,EAEzB,GACF,IACAnK,EAASrD,SAAUuH,EAAMU,oBAAqB,gBAAiBqG,GAC/DjL,EAASrD,SAAUuH,EAAMU,oBAAqB,eAAgBqG,GAC9DjL,EAASrD,SAAUuH,EAAMW,sBAAuB,gBAAiBoG,GACjEjL,EAASrD,SAAUuH,EAAMW,sBAAuB,eAAgBoG,GAChEjL,EAASrD,SAAUuH,EAAMC,kBAAmB,QAASiI,GACrDpM,EAASrD,SAAUuH,EAAMC,kBAAmB,QAAS6G,GACrDhL,EAASrD,SAAUuH,EAAMC,kBAAmB,QAASkG,GACrDrK,EAASrD,SAAUuH,EAAMC,kBAAmB,QAAS+G,GACrDlL,EAASrD,SAAUuH,EAAMC,kBAAmB,QAAS2H,GACrD9L,EAASrD,SAAUuH,EAAMC,kBAAmB,QAASoH,GACrDvL,EAASrD,SAAUuH,EAAME,oBAAqB,QAASgI,GACvDpM,EAASrD,SAAUuH,EAAME,oBAAqB,QAAS4G,GACvDhL,EAASrD,SAAUuH,EAAME,oBAAqB,QAASiG,GACvDrK,EAASrD,SAAUuH,EAAME,oBAAqB,QAAS8G,GACvDlL,EAASrD,SAAUuH,EAAME,oBAAqB,QAAS0H,GACvD9L,EAASrD,SAAUuH,EAAMI,oBAAqB,SAAU0G,GACxDhL,EAASrD,SAAUuH,EAAMI,oBAAqB,SAAU+F,GACxDrK,EAASrD,SAAUuH,EAAMI,oBAAqB,SAAUwH,GACxD9L,EAASrD,SAAUuH,EAAMK,mBAAoB,SAAUyG,GACvDhL,EAASrD,SAAUuH,EAAMK,mBAAoB,SAAU8F,GACvDrK,EAASrD,SAAUuH,EAAMK,mBAAoB,SAAUuH,GACvD9L,EAASrD,SAAUuH,EAAMK,mBAAoB,UAAU,SAASsC,GAC9D,OAAO5C,YAAW,WAChB,OAAOiH,EAAerE,EACvB,GAAG,GACN,IACA7G,EAASrD,SAAUuH,EAAMK,mBAAoB,YAAa2G,GAC1DlL,EAASrD,SAAUuH,EAAMK,mBAAoB,gBAAiB0G,GAC9DjL,EAASrD,SAAUuH,EAAMM,uBAAwB,QAAS4H,GAC1DpM,EAASrD,SAAUuH,EAAMM,uBAAwB,QAASwG,GAC1DhL,EAASrD,SAAUuH,EAAMM,uBAAwB,QAAS6F,GAC1DrK,EAASrD,SAAUuH,EAAMM,uBAAwB,QAAS0H,GAC1DvP,SAASd,iBAAiB,mBAAoBqK,GAC9CvJ,SAASd,iBAAiB,mBAAoBkJ,GACvChB,OAAO8I,eAAgB,CAChC,EAEI9I,OAAOG,QAAUA,GAASmC,EAAK1J,SAAU,yBAC3CuH,EAAM5H,OAGT,EAAE5C,KAAKhC,KACT,GAAEgC,KAAKhC,MAE0B/D,EAAOH,QACvCG,EAAOH,QAAU0Q,OAEL,2BAAZ,KAAY,iCAEf,GAAExK,KAAKhC,yBCzuBR,SAAWmO,GACT,aAEA,IAAIiH,EAAiB,CACnBC,SAAU,SAASC,GACjB,MAAO,kBACT,EACAC,UAAW,SAASD,GAClB,OAAOA,EAAOA,EAAK1X,WAAa0X,CAClC,EACAE,SAAU,SAASF,GACjB,OAAOtV,KAAKuV,UAAUD,EACxB,EACAG,UAAW,SAASH,GAClB,OAAO,IACT,EACAI,WAAW,EACXC,WAAW,EACXC,aAASxZ,EACTyZ,cAAUzZ,EACV0Z,YAAa,CAAC,GAAI,IAClBC,UAAW,IACXC,eAAgB,KAChBC,0BAA0B,EAC1BC,YAAa,SAASZ,EAAMa,GAC1BA,EAAKC,OAAOC,QACd,EACAC,WAAW,EACXC,iBAAiB,GAMnB,SAASC,EAAUzR,EAASmL,GAC1BlQ,KAAKyW,QAAS,EACdzW,KAAK0W,WAAa,GAElB1W,KAAK2W,SAAWxI,EAAEpJ,GAClB/E,KAAK2W,SAASP,OAEdpW,KAAK4W,SAAgC,WAApB7R,EAAQqG,QACzBpL,KAAK6W,SAAY7W,KAAK4W,UAAY7R,EAAQuG,aAAa,YACvDtL,KAAK8W,YAAc5G,GAAWA,EAAQqF,UACtCvV,KAAK+W,gBAAkBhS,EAAQuG,aAAa,eAAiBtL,KAAK2W,SAASK,KAAK,eAAiB,GACjGhX,KAAKiX,UAAY3W,KAAKC,IAAI,EAAGP,KAAK+W,gBAAgB3Z,QAElD4C,KAAKkX,WAAa/I,EAAE,2CACpBnO,KAAKmX,OAAShJ,EAAE,mCAAqCnO,KAAK+W,gBAAkB,OAAOK,SAASpX,KAAKkX,YAEjGlX,KAAK2W,SAASU,OAAOrX,KAAKkX,YAE1BlX,KAAKsX,MAAMpH,GACXlQ,KAAKyW,QAAS,CAChB,CAmhBA,SAASc,EAAuBrH,EAASpN,GACvC,GAA4B,oBAAjBoN,EAAQpN,GAAqB,CACtC,IAAI0U,EAAetH,EAAQpN,GAC3BoN,EAAQpN,GAAO,SAASwS,GAAQ,OAAOA,EAAKkC,EAAe,CAC7D,CACF,CACA,SAASC,EAAmBvH,EAASpN,GACnC,GAA4B,oBAAjBoN,EAAQpN,GAAqB,CACtC,IAAIc,EAAQsM,EAAQpN,GACpBoN,EAAQpN,GAAO,WAAa,OAAOc,CAAO,CAC5C,CACF,CA5hBA4S,EAAUtW,UAAY,CACpBwX,YAAalB,EAMbmB,IAAK,SAASrC,EAAMsC,EAAa1H,GAC/B,IAAI2H,EAAO7X,KAEX,KAAI6X,EAAK3H,QAAQ0F,SAAWiC,EAAKnB,WAAWtZ,QAAUya,EAAK3H,QAAQ0F,YAItD,IAATN,GAAmBA,GAAvB,CASA,GALoB,kBAATA,GAAqBuC,EAAK3H,QAAQoG,YAC3ChB,EAAOnH,EAAE2J,KAAKxC,IAII,kBAATA,IAAsBuC,EAAKf,YACpC,KAAK,qDAGP,IAAIxB,EAAK1X,WAAWC,MAAM,SAA1B,CAOA,GAHIga,EAAKjB,WAAaiB,EAAKhB,UAAYgB,EAAKnB,WAAWtZ,OAAS,GAC9Dya,EAAKE,OAAOF,EAAKnB,WAAW,IAEV,kBAATpB,GAAkD,UAA7BtV,KAAK2W,SAAS,GAAGvL,QAAqB,CACpE,IAAI2K,EAAa8B,EAAK3H,QAAsB,eAAI2H,EAAK3H,QAAQ8F,eAAiB6B,EAAK3H,QAAQ6F,UACvFiC,EAAQ1C,EAAK2C,MAAMlC,GACvB,GAAIiC,EAAM5a,OAAS,EAAG,CACpB,IAAK,IAAIL,EAAI,EAAGA,EAAIib,EAAM5a,OAAQL,IAChCiD,KAAK2X,IAAIK,EAAMjb,IAAI,GAKrB,YAFK6a,GACHC,EAAKK,UAET,CACF,CAEA,IAAI3C,EAAYsC,EAAK3H,QAAQqF,UAAUD,GACnCE,EAAWqC,EAAK3H,QAAQsF,SAASF,GACjCD,EAAWwC,EAAK3H,QAAQmF,SAASC,GACjCG,EAAYoC,EAAK3H,QAAQuF,UAAUH,GAGnC6C,EAAWhK,EAAEiK,KAAKP,EAAKnB,YAAY,SAASpB,GAAQ,OAAOuC,EAAK3H,QAAQqF,UAAUD,KAAUC,CAAW,IAAI,GAC/G,IAAI4C,GAAaN,EAAK3H,QAAQqG,iBAU9B,KAAIsB,EAAKG,QAAQpa,WAAWR,OAASkY,EAAKlY,OAAS,EAAIya,EAAK3H,QAAQmI,gBAApE,CAIA,IAAIC,EAAqBnK,EAAEY,MAAM,gBAAiB,CAAEuG,KAAMA,EAAMiD,QAAQ,EAAOrI,QAASA,IAExF,GADA2H,EAAKlB,SAAS6B,QAAQF,IAClBA,EAAmBC,OAAvB,CAIAV,EAAKnB,WAAW7W,KAAKyV,GAIrB,IAAIa,EAAOhI,EAAE,oBAAsBsK,EAAWpD,IAA2B,OAAdI,EAAsB,YAAcA,EAAa,IAAM,KAAOgD,EAAWjD,GAAY,2CAChJW,EAAKlH,KAAK,OAAQqG,GAClBuC,EAAKa,mBAAmBrB,OAAOlB,GAC/BA,EAAKwC,MAAM,KAGX,IAAIC,EACFzK,EAAE,iBAAmBzP,mBAAmB6W,GAAa,KAAMsC,EAAKlB,UAAUvZ,QAC1E+Q,EAAE,iBAAmBsK,EAAWlD,GAAa,KAAMsC,EAAKlB,UAAUvZ,OAIpE,GAAIya,EAAKjB,WAAagC,EAAc,CAClC,IAAIC,EAAU1K,EAAE,oBAAsBsK,EAAWjD,GAAY,aAC7DqD,EAAQ5J,KAAK,OAAQqG,GACrBuD,EAAQ7B,KAAK,QAASzB,GACtBsC,EAAKlB,SAAS1V,OAAO4X,EACvB,CAEKjB,GACHC,EAAKK,UAGHL,EAAK3H,QAAQ0F,UAAYiC,EAAKnB,WAAWtZ,QAAUya,EAAKG,QAAQpa,WAAWR,SAAWya,EAAK3H,QAAQmI,gBACrGR,EAAKX,WAAW4B,SAAS,2BAGvB3K,EAAE,iCAAkC0J,EAAKX,YAAY9Z,QACvDya,EAAKV,OAAO4B,UAAU,MAAO,IAG3B/Y,KAAKyW,OACPoB,EAAKlB,SAAS6B,QAAQrK,EAAEY,MAAM,kBAAmB,CAAEuG,KAAMA,EAAMpF,QAASA,KAExE2H,EAAKlB,SAAS6B,QAAQrK,EAAEY,MAAM,YAAa,CAAEuG,KAAMA,EAAMpF,QAASA,IAzC5D,CANA,OATN,GAAI2H,EAAK3H,QAAQgG,YAAa,CAC5B,IAAI8C,EAAe7K,EAAE,OAAQ0J,EAAKX,YAAY7M,QAAO,WAAa,OAAO8D,EAAEnO,MAAMiP,KAAK,UAAYkJ,CAAU,IAC5GN,EAAK3H,QAAQgG,YAAYZ,EAAM0D,EACjC,CAhCM,CAbA,CAoGV,EAMAjB,OAAQ,SAASzC,EAAMsC,EAAa1H,GAClC,IAAI2H,EAAO7X,KAWX,GATI6X,EAAKf,cAMPxB,GAJEA,EADkB,kBAATA,EACFnH,EAAEiK,KAAKP,EAAKnB,YAAY,SAASuC,GAAS,OAAOpB,EAAK3H,QAAQqF,UAAU0D,IAAWpB,EAAK3H,QAAQqF,UAAUD,EAAO,IAEjHnH,EAAEiK,KAAKP,EAAKnB,YAAY,SAASuC,GAAS,OAAOpB,EAAK3H,QAAQqF,UAAU0D,IAAW3D,CAAM,KAEtFA,EAAKlY,OAAO,IAGtBkY,EAAM,CACR,IAAI4D,EAAwB/K,EAAEY,MAAM,mBAAoB,CAAEuG,KAAMA,EAAMiD,QAAQ,EAAOrI,QAASA,IAE9F,GADA2H,EAAKlB,SAAS6B,QAAQU,GAClBA,EAAsBX,OACxB,OAEFpK,EAAE,OAAQ0J,EAAKX,YAAY7M,QAAO,WAAa,OAAO8D,EAAEnO,MAAMiP,KAAK,UAAYqG,CAAM,IAAGyC,SACxF5J,EAAE,SAAU0J,EAAKlB,UAAUtM,QAAO,WAAa,OAAO8D,EAAEnO,MAAMiP,KAAK,UAAYqG,CAAM,IAAGyC,UAC/C,IAAtC5J,EAAEgL,QAAQ7D,EAAMuC,EAAKnB,aACtBmB,EAAKnB,WAAW0C,OAAOjL,EAAEgL,QAAQ7D,EAAMuC,EAAKnB,YAAa,EAC7D,CAEKkB,GACHC,EAAKK,UAGHL,EAAK3H,QAAQ0F,QAAUiC,EAAKnB,WAAWtZ,QACzCya,EAAKX,WAAWmC,YAAY,2BAE9BxB,EAAKlB,SAAS6B,QAAQrK,EAAEY,MAAM,cAAgB,CAAEuG,KAAMA,EAAMpF,QAASA,IACvE,EAKAoJ,UAAW,WACT,IAAIzB,EAAO7X,KAKX,IAHAmO,EAAE,OAAQ0J,EAAKX,YAAYa,SAC3B5J,EAAE,SAAU0J,EAAKlB,UAAUoB,SAErBF,EAAKnB,WAAWtZ,OAAS,GAC7Bya,EAAKnB,WAAW6C,MAElB1B,EAAKK,SACP,EAMAsB,QAAS,WACP,IAAI3B,EAAO7X,KACXmO,EAAE,OAAQ0J,EAAKX,YAAYuC,MAAK,WAC9B,IAAItD,EAAOhI,EAAEnO,MACTsV,EAAOa,EAAKlH,KAAK,QACjBsG,EAAYsC,EAAK3H,QAAQqF,UAAUD,GACnCE,EAAWqC,EAAK3H,QAAQsF,SAASF,GACjCD,EAAWwC,EAAK3H,QAAQmF,SAASC,IAGnCa,EAAKa,KAAK,QAAS,MACnBb,EAAK2C,SAAS,OAASL,EAAWpD,IAClCc,EAAKhV,WAAWkJ,QAAO,WACrB,OAAwB,GAAjBrK,KAAK0Z,QACd,IAAG,GAAGC,UAAYlB,EAAWjD,GAEzBqC,EAAKjB,WACMzI,EAAE,SAAU0J,EAAKlB,UAAUtM,QAAO,WAAa,OAAO8D,EAAEnO,MAAMiP,KAAK,UAAYqG,CAAM,IAC3F0B,KAAK,QAASzB,EAE3B,GACF,EAKAyC,MAAO,WACL,OAAOhY,KAAK0W,UACd,EAMAwB,QAAS,WACP,IAAIL,EAAO7X,KACPK,EAAM8N,EAAEoE,IAAIsF,EAAKG,SAAS,SAAS1C,GACjC,OAAOuC,EAAK3H,QAAQqF,UAAUD,GAAM1X,UACtC,IAEJia,EAAKlB,SAAStW,IAAIA,GAAK,GAAMmY,QAAQ,SACvC,EAKAlB,MAAO,SAASpH,GACd,IAAI2H,EAAO7X,KAYX,GAVA6X,EAAK3H,QAAU/B,EAAEyL,OAAO,CAAC,EAAGxE,EAAgBlF,GAExC2H,EAAKf,cACPe,EAAK3H,QAAQwF,WAAY,GAE3B6B,EAAuBM,EAAK3H,QAAS,aACrCqH,EAAuBM,EAAK3H,QAAS,YACrCuH,EAAmBI,EAAK3H,QAAS,YAG7B2H,EAAK3H,QAAQ6I,UAAW,CAC1B,IAAIA,EAAYlB,EAAK3H,QAAQ6I,WAAa,CAAC,EAE3CtB,EAAmBsB,EAAW,UAE9BlB,EAAKV,OAAO4B,UAAU5K,EAAEyL,OAAO,CAAC,EAAGb,EAAW,CAC5Cc,OAAQ,SAAUC,EAAOC,GACvB,SAASC,EAAahC,GAGpB,IAFA,IAAIiC,EAAQ,GAEHld,EAAI,EAAGA,EAAIib,EAAM5a,OAAQL,IAAK,CACrC,IAAI6S,EAAOiI,EAAK3H,QAAQsF,SAASwC,EAAMjb,IACvCwV,EAAI3C,GAAQoI,EAAMjb,GAClBkd,EAAMpa,KAAK+P,EACb,CACAmK,EAAQE,EACV,CAEAja,KAAKuS,IAAM,CAAC,EACZ,IAAIA,EAAMvS,KAAKuS,IACXtD,EAAO8J,EAAUc,OAAOC,GAExB3L,EAAE+L,WAAWjL,EAAKqB,SAEpBrB,EAAKqB,QAAQ0J,GACJ7L,EAAE+L,WAAWjL,EAAKkL,MAE3BlL,EAAKkL,KAAKH,GAGV7L,EAAEiM,KAAKnL,GACLkL,KAAKH,EAEX,EACAK,QAAS,SAAUzK,GAEjB,OADAiI,EAAKF,IAAI3X,KAAKuS,IAAI3C,IACX5P,KAAKuS,IAAI3C,EAClB,EACA0K,QAAS,SAAU1K,GACjB,OAAyE,IAAjEA,EAAK2K,cAAcxJ,QAAQ/Q,KAAK8Z,MAAMhC,OAAOyC,cACvD,EACAC,OAAQ,SAAUP,GAChB,OAAOA,EAAMQ,MACf,EACAC,YAAa,SAAU9K,GACrB,IAAI+K,EAAQ,IAAIC,OAAQ,IAAM5a,KAAK8Z,MAAQ,IAAK,MAChD,OAAOlK,EAAK6B,QAASkJ,EAAO,sBAC9B,IAEJ,CAGA,GAAI9C,EAAK3H,QAAQ2K,YAAa,CAC1B,IAAIC,EAAkB,KAClBC,EAAoB,CAAC,EAGrBF,EAAchD,EAAK3H,QAAQ2K,YAC3B1M,EAAE9H,QAAQwU,IACZC,EAAkBD,EAAY,GAC9BE,EAAoBF,EAAY,IAEhCE,EAAoBF,EAGtBhD,EAAKV,OAAO4B,UAAU+B,EAAiBC,GAAmBC,GAAG,qBAAsB7M,EAAE8M,OAAM,SAAUjM,EAAKkM,GACpGH,EAAkBI,SACpBtD,EAAKF,IAAIuD,EAAMH,EAAkBI,WAEjCtD,EAAKF,IAAIuD,GACXrD,EAAKV,OAAO4B,UAAU,MAAO,GAC/B,GAAGlB,GACP,CAEAA,EAAKX,WAAW8D,GAAG,QAAS7M,EAAE8M,OAAM,SAAS7W,GACrCyT,EAAKlB,SAASK,KAAK,aACvBa,EAAKV,OAAOiE,WAAW,YAEzBvD,EAAKV,OAAOrL,OACd,GAAG+L,IAEGA,EAAK3H,QAAQyF,WAAakC,EAAK3H,QAAQwF,WACzCmC,EAAKV,OAAO6D,GAAG,WAAY7M,EAAE8M,OAAM,SAAS7W,GAG4B,IAAhE+J,EAAE,iCAAkC0J,EAAKX,YAAY9Z,SACvDya,EAAKF,IAAIE,EAAKV,OAAO9W,OACrBwX,EAAKV,OAAO9W,IAAI,IAEtB,GAAGwX,IAIPA,EAAKX,WAAW8D,GAAG,UAAW,QAAS7M,EAAE8M,OAAM,SAAS7W,GACtD,IAAI+S,EAAShJ,EAAE/J,EAAMxD,QACjBya,EAAgBxD,EAAKa,mBAEzB,GAAIb,EAAKlB,SAASK,KAAK,YACrBa,EAAKV,OAAOH,KAAK,WAAY,gBAD/B,CAKA,OAAQ5S,EAAMkX,OAEZ,KAAK,EACH,GAAsC,IAAlCC,EAAmBpE,EAAO,IAAW,CACvC,IAAIqE,EAAOH,EAAcG,OACrBA,EAAKpe,QACPya,EAAKE,OAAOyD,EAAKvM,KAAK,QAE1B,CACA,MAGF,KAAK,GACH,GAAsC,IAAlCsM,EAAmBpE,EAAO,IAAW,CACvC,IAAIsE,EAAOJ,EAAcI,OACrBA,EAAKre,QACPya,EAAKE,OAAO0D,EAAKxM,KAAK,QAE1B,CACA,MAGF,KAAK,GAEH,IAAIyM,EAAWL,EAAcG,OACD,IAAxBrE,EAAO9W,MAAMjD,QAAgBse,EAAS,KACxCA,EAASrE,OAAOgE,GAChBlE,EAAOrL,SAET,MAEF,KAAK,GAEH,IAAI6P,EAAWN,EAAcI,OACD,IAAxBtE,EAAO9W,MAAMjD,QAAgBue,EAAS,KACxCA,EAAShD,MAAM0C,GACflE,EAAOrL,SAQb,IAAI8P,EAAazE,EAAO9W,MAAMjD,OACdkD,KAAKmD,KAAKmY,EAAa,GAEvCzE,EAAOH,KAAK,OAAQ1W,KAAKC,IAAIP,KAAKiX,UAAWE,EAAO9W,MAAMjD,QAjD1D,CAkDF,GAAGya,IAEHA,EAAKX,WAAW8D,GAAG,WAAY,QAAS7M,EAAE8M,OAAM,SAAS7W,GACtD,IAAI+S,EAAShJ,EAAE/J,EAAMxD,QAErB,GAAIiX,EAAKlB,SAASK,KAAK,YACpBa,EAAKV,OAAOH,KAAK,WAAY,gBADhC,CAKA,IAwLuB6E,EAAeC,EACrCC,EAzLGnM,EAAOuH,EAAO9W,MAClB2b,EAAmBnE,EAAK3H,QAAQ2F,UAAYjG,EAAKxS,QAAUya,EAAK3H,QAAQ2F,SACpEgC,EAAK3H,QAAQwF,YAsLMmG,EAtL6BzX,EAsLd0X,EAtLqBjE,EAAK3H,QAAQ4F,YAuLvEiG,GAAQ,EACZ5N,EAAEsL,KAAKqC,GAAY,SAAUG,EAAOC,GAChC,GAAgC,kBAArB,GAAiCL,EAAcP,QAAUY,EAEhE,OADAH,GAAQ,GACD,EAGX,GAAIF,EAAcP,QAAUY,EAAeZ,MAAO,CAC9C,IAAIa,GAAOD,EAAeE,eAAe,WAAaP,EAAcQ,SAAWH,EAAeG,OAC1F1R,GAASuR,EAAeE,eAAe,aAAeP,EAAcS,WAAaJ,EAAeI,SAChGC,GAAQL,EAAeE,eAAe,YAAcP,EAAchH,UAAYqH,EAAerH,QACjG,GAAIsH,GAAOxR,GAAS4R,EAEhB,OADAR,GAAQ,GACD,CAEf,CACJ,IAEOA,GAzMoFC,KAEjE,IAAhBpM,EAAKxS,SACNya,EAAKF,IAAIqE,EAAmBpM,EAAK9P,OAAO,EAAG+X,EAAK3H,QAAQ2F,UAAYjG,GACpEuH,EAAO9W,IAAI,MAIgC,IAA1CwX,EAAK3H,QAAQ+F,0BACb7R,EAAMmH,kBAKb,IAAIqQ,EAAazE,EAAO9W,MAAMjD,OACfkD,KAAKmD,KAAKmY,EAAa,GAEtCzE,EAAOH,KAAK,OAAQ1W,KAAKC,IAAIP,KAAKiX,UAAWE,EAAO9W,MAAMjD,QArB1D,CAsBH,GAAGya,IAGHA,EAAKX,WAAW8D,GAAG,QAAS,qBAAsB7M,EAAE8M,OAAM,SAAS7W,GAC7DyT,EAAKlB,SAASK,KAAK,aAGvBa,EAAKE,OAAO5J,EAAE/J,EAAMxD,QAAQ4b,QAAQ,QAAQvN,KAAK,QACnD,GAAG4I,IAGCA,EAAK3H,QAAQqF,YAAcH,EAAeG,YACX,UAA7BsC,EAAKlB,SAAS,GAAGvL,QACjByM,EAAKF,IAAIE,EAAKlB,SAAStW,OAEzB8N,EAAE,SAAU0J,EAAKlB,UAAU8C,MAAK,WAC9B5B,EAAKF,IAAIxJ,EAAEnO,MAAMgX,KAAK,UAAU,EAClC,IAGN,EAKAnV,QAAS,WACP,IAAIgW,EAAO7X,KAGX6X,EAAKX,WAAWuF,IAAI,WAAY,SAChC5E,EAAKX,WAAWuF,IAAI,QAAS,iBAE7B5E,EAAKX,WAAWa,SAChBF,EAAKlB,SAAS+F,WAAW,aACzB7E,EAAKlB,SAASgG,MAChB,EAKA7Q,MAAO,WACL9L,KAAKmX,OAAOrL,OACd,EAKA9C,MAAO,WACL,OAAOhJ,KAAKmX,MACd,EAMAuB,iBAAkB,WAGhB,IAFA,IAAIkE,EAAM5c,KAAKmX,OAAO,GAClB0F,EAAY7c,KAAKkX,WAAW,GAC1B0F,GAAOA,EAAItT,aAAeuT,GAC9BD,EAAMA,EAAItT,WAEZ,OAAO6E,EAAEyO,EACX,GAMFzO,EAAEnS,GAAG8gB,UAAY,SAASC,EAAMC,EAAMC,GACpC,IAAIC,EAAU,GAgCd,OA9BAld,KAAKyZ,MAAK,WACR,IAAIqD,EAAY3O,EAAEnO,MAAMiP,KAAK,aAE7B,GAAK6N,EAWE,GAAKC,GAASC,GAId,QAAuB5gB,IAApB0gB,EAAUC,GAAqB,CAEnC,GAA8B,IAA3BD,EAAUC,GAAM3f,aAAyBhB,IAAT6gB,EAChC,IAAIE,EAASL,EAAUC,GAAMC,EAAM,KAAMC,QAErCE,EAASL,EAAUC,GAAMC,QAEnB5gB,IAAX+gB,GACAD,EAAQrd,KAAKsd,EACrB,OAVID,EAAQrd,KAAKid,QAbbA,EAAY,IAAItG,EAAUxW,KAAM+c,GAChC5O,EAAEnO,MAAMiP,KAAK,YAAa6N,GAC1BI,EAAQrd,KAAKid,GAEQ,WAAjB9c,KAAKoL,SACL+C,EAAE,SAAUA,EAAEnO,OAAOgX,KAAK,WAAY,YAI1C7I,EAAEnO,MAAMK,IAAI8N,EAAEnO,MAAMK,MAe1B,IAEoB,iBAAR0c,EAEHG,EAAQ9f,OAAS,EAAI8f,EAAUA,EAAQ,GAEvCA,CAEX,EAEA/O,EAAEnS,GAAG8gB,UAAU3a,YAAcqU,EAsB7B,IAAI4G,EAAsBjP,EAAE,WAC5B,SAASsK,EAAW7U,GAClB,OAAIA,EACKwZ,EAAoBxN,KAAKhM,GAAOiM,OAEhC,EAEX,CAMA,SAAS0L,EAAmB8B,GAC1B,IAAIC,EAAY,EAChB,GAAIrY,SAASsY,UAAW,CACtBF,EAAOvR,QACP,IAAI0R,EAAOvY,SAASsY,UAAUE,cAC9BD,EAAKE,UAAW,aAAcL,EAAOzZ,MAAMxG,QAC3CkgB,EAAYE,EAAK5N,KAAKxS,MACxB,MAAWigB,EAAOM,gBAA2C,KAAzBN,EAAOM,kBACzCL,EAAYD,EAAOM,gBAErB,OAAO,CACT,CAmCAxP,GAAE,WACAA,EAAE,qEAAqE2O,WACzE,GACD,CAtpBD,CAspBGzQ,OAAOyI,+BCtpBV,IAAI8I,EAA6B,EAAQ,OAErCC,EADsC,EAAQ,OAEM,qBAA7CA,EAAuC,QAAmBA,EAAuC,MAAID,GAChH3hB,EAAOH,QAAU8hB,yBCJjB,IAAIA,EAA6B,EAAQ,OAErCC,EADsC,EAAQ,OAEM,qBAA7CA,EAAuC,QAAmBA,EAAuC,MAAID,GAChH3hB,EAAOH,QAAU8hB,sCCDjB3hB,EAAOH,QAAU,WACf,GAA0B,kBAAfgiB,WACT,OAAOA,WAET,IAAIC,EACJ,IAGEA,EAAI/d,MAAQ,IAAIge,SAAS,cAAb,EACd,CAAE,MAAO7O,GAEP,GAAsB,kBAAX9C,OACT,OAAOA,OAIT,GAAoB,kBAATwL,KACT,OAAOA,KAIT,GAAsB,qBAAX,EAAAkG,EACT,OAAO,EAAAA,CAEX,CACA,OAAOA,CACT,CA1BiB,wBCHjB,OAUA,SAAYE,EAAQ9hB,GAEnB,aAE6D,kBAAnBF,EAAOH,QAShDG,EAAOH,QAAUmiB,EAAOhZ,SACvB9I,EAAS8hB,GAAQ,GACjB,SAAUC,GACT,IAAMA,EAAEjZ,SACP,MAAM,IAAI+P,MAAO,4CAElB,OAAO7Y,EAAS+hB,EACjB,EAED/hB,EAAS8hB,EAIT,CA1BF,CA0BuB,qBAAX5R,OAAyBA,OAASrM,MAAM,SAAUqM,EAAQ8R,GAMtE,aAEA,IAAIpf,EAAM,GAENqf,EAAWxb,OAAOyb,eAElBle,EAAQpB,EAAIoB,MAEZme,EAAOvf,EAAIuf,KAAO,SAAUC,GAC/B,OAAOxf,EAAIuf,KAAKtc,KAAMuc,EACvB,EAAI,SAAUA,GACb,OAAOxf,EAAIyf,OAAOrf,MAAO,GAAIof,EAC9B,EAGI1e,EAAOd,EAAIc,KAEXkR,EAAUhS,EAAIgS,QAEd0N,EAAa,CAAC,EAEd7gB,EAAW6gB,EAAW7gB,SAEtB8gB,EAASD,EAAWrC,eAEpBuC,EAAaD,EAAO9gB,SAEpBghB,EAAuBD,EAAW3c,KAAMY,QAExCic,EAAU,CAAC,EAEX3E,EAAa,SAAqBlL,GASpC,MAAsB,oBAARA,GAA8C,kBAAjBA,EAAI0K,UAC1B,oBAAb1K,EAAIsG,IACb,EAGGwJ,EAAW,SAAmB9P,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAI3C,MACnC,EAGGpH,EAAWoH,EAAOpH,SAIjB8Z,EAA4B,CAC/BpZ,MAAM,EACNqZ,KAAK,EACL5R,OAAO,EACP6R,UAAU,GAGX,SAASC,EAASC,EAAMC,EAAMC,GAG7B,IAAItiB,EAAGsD,EACN2P,GAHDqP,EAAMA,GAAOpa,GAGCmE,cAAe,UAG7B,GADA4G,EAAOJ,KAAOuP,EACTC,EACJ,IAAMriB,KAAKgiB,GAYV1e,EAAM+e,EAAMriB,IAAOqiB,EAAKja,cAAgBia,EAAKja,aAAcpI,KAE1DiT,EAAOxE,aAAczO,EAAGsD,GAI3Bgf,EAAIna,KAAKgH,YAAa8D,GAAS1G,WAAWC,YAAayG,EACxD,CAGD,SAASsP,EAAQtQ,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,kBAARA,GAAmC,oBAARA,EACxCyP,EAAY7gB,EAASoE,KAAMgN,KAAW,gBAC/BA,CACT,CAOA,IAAIuQ,EAAU,QAEbC,EAAc,SAGd1K,EAAS,SAAUxP,EAAUma,GAI5B,OAAO,IAAI3K,EAAO9Y,GAAG0jB,KAAMpa,EAAUma,EACtC,EAkYD,SAASE,EAAa3Q,GAMrB,IAAI5R,IAAW4R,GAAO,WAAYA,GAAOA,EAAI5R,OAC5CuI,EAAO2Z,EAAQtQ,GAEhB,OAAKkL,EAAYlL,KAAS8P,EAAU9P,KAIpB,UAATrJ,GAA+B,IAAXvI,GACR,kBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAO4R,EAChE,CAGA,SAAS4Q,EAAUC,EAAMlb,GAExB,OAAOkb,EAAKD,UAAYC,EAAKD,SAASrF,gBAAkB5V,EAAK4V,aAE9D,CAtZAzF,EAAO9Y,GAAK8Y,EAAO5U,UAAY,CAG9B4f,OAAQP,EAER7H,YAAa5C,EAGb1X,OAAQ,EAER4U,QAAS,WACR,OAAO7R,EAAM6B,KAAMhC,KACpB,EAIA8H,IAAK,SAAUnH,GAGd,OAAY,MAAPA,EACGR,EAAM6B,KAAMhC,MAIbW,EAAM,EAAIX,KAAMW,EAAMX,KAAK5C,QAAW4C,KAAMW,EACpD,EAIAof,UAAW,SAAUC,GAGpB,IAAIxe,EAAMsT,EAAOmL,MAAOjgB,KAAK0X,cAAesI,GAM5C,OAHAxe,EAAI0e,WAAalgB,KAGVwB,CACR,EAGAiY,KAAM,SAAU5V,GACf,OAAOiR,EAAO2E,KAAMzZ,KAAM6D,EAC3B,EAEA0O,IAAK,SAAU1O,GACd,OAAO7D,KAAK+f,UAAWjL,EAAOvC,IAAKvS,MAAM,SAAU6f,EAAM9iB,GACxD,OAAO8G,EAAS7B,KAAM6d,EAAM9iB,EAAG8iB,EAChC,IACD,EAEA1f,MAAO,WACN,OAAOH,KAAK+f,UAAW5f,EAAMhB,MAAOa,KAAM6F,WAC3C,EAEAxG,MAAO,WACN,OAAOW,KAAKmgB,GAAI,EACjB,EAEAC,KAAM,WACL,OAAOpgB,KAAKmgB,IAAK,EAClB,EAEAE,KAAM,WACL,OAAOrgB,KAAK+f,UAAWjL,EAAOsD,KAAMpY,MAAM,SAAUsgB,EAAOvjB,GAC1D,OAASA,EAAI,GAAM,CACpB,IACD,EAEAwjB,IAAK,WACJ,OAAOvgB,KAAK+f,UAAWjL,EAAOsD,KAAMpY,MAAM,SAAUsgB,EAAOvjB,GAC1D,OAAOA,EAAI,CACZ,IACD,EAEAojB,GAAI,SAAUpjB,GACb,IAAIyjB,EAAMxgB,KAAK5C,OACde,GAAKpB,GAAMA,EAAI,EAAIyjB,EAAM,GAC1B,OAAOxgB,KAAK+f,UAAW5hB,GAAK,GAAKA,EAAIqiB,EAAM,CAAExgB,KAAM7B,IAAQ,GAC5D,EAEA6C,IAAK,WACJ,OAAOhB,KAAKkgB,YAAclgB,KAAK0X,aAChC,EAIA7X,KAAMA,EACN4a,KAAM1b,EAAI0b,KACVrB,OAAQra,EAAIqa,QAGbtE,EAAO8E,OAAS9E,EAAO9Y,GAAG4d,OAAS,WAClC,IAAI1J,EAASvL,EAAMqa,EAAKyB,EAAMC,EAAaC,EAC1C/f,EAASiF,UAAW,IAAO,CAAC,EAC5B9I,EAAI,EACJK,EAASyI,UAAUzI,OACnBwjB,GAAO,EAsBR,IAnBuB,mBAAXhgB,IACXggB,EAAOhgB,EAGPA,EAASiF,UAAW9I,IAAO,CAAC,EAC5BA,KAIsB,kBAAX6D,GAAwBsZ,EAAYtZ,KAC/CA,EAAS,CAAC,GAIN7D,IAAMK,IACVwD,EAASZ,KACTjD,KAGOA,EAAIK,EAAQL,IAGnB,GAAqC,OAA9BmT,EAAUrK,UAAW9I,IAG3B,IAAM4H,KAAQuL,EACbuQ,EAAOvQ,EAASvL,GAIF,cAATA,GAAwB/D,IAAW6f,IAKnCG,GAAQH,IAAU3L,EAAO+L,cAAeJ,KAC1CC,EAActa,MAAMC,QAASoa,MAC/BzB,EAAMpe,EAAQ+D,GAIbgc,EADID,IAAgBta,MAAMC,QAAS2Y,GAC3B,GACI0B,GAAgB5L,EAAO+L,cAAe7B,GAG1CA,EAFA,CAAC,EAIV0B,GAAc,EAGd9f,EAAQ+D,GAASmQ,EAAO8E,OAAQgH,EAAMD,EAAOF,SAGzBrkB,IAATqkB,IACX7f,EAAQ+D,GAAS8b,IAOrB,OAAO7f,CACR,EAEAkU,EAAO8E,OAAQ,CAGdpM,QAAS,UAAa+R,EAAUjf,KAAKwgB,UAAWrP,QAAS,MAAO,IAGhEsP,SAAS,EAETxY,MAAO,SAAUyY,GAChB,MAAM,IAAIhM,MAAOgM,EAClB,EAEAC,KAAM,WAAY,EAElBJ,cAAe,SAAU7R,GACxB,IAAIkS,EAAOC,EAIX,SAAMnS,GAAgC,oBAAzBpR,EAASoE,KAAMgN,QAI5BkS,EAAQ9C,EAAUpP,KASK,oBADvBmS,EAAOzC,EAAO1c,KAAMkf,EAAO,gBAAmBA,EAAMxJ,cACfiH,EAAW3c,KAAMmf,KAAWvC,EAClE,EAEAwC,cAAe,SAAUpS,GACxB,IAAIrK,EAEJ,IAAMA,KAAQqK,EACb,OAAO,EAER,OAAO,CACR,EAIAqS,WAAY,SAAUlC,EAAMjP,EAASmP,GACpCH,EAASC,EAAM,CAAE/R,MAAO8C,GAAWA,EAAQ9C,OAASiS,EACrD,EAEA5F,KAAM,SAAUzK,EAAKnL,GACpB,IAAIzG,EAAQL,EAAI,EAEhB,GAAK4iB,EAAa3Q,GAEjB,IADA5R,EAAS4R,EAAI5R,OACLL,EAAIK,IACqC,IAA3CyG,EAAS7B,KAAMgN,EAAKjS,GAAKA,EAAGiS,EAAKjS,IADnBA,UAMpB,IAAMA,KAAKiS,EACV,IAAgD,IAA3CnL,EAAS7B,KAAMgN,EAAKjS,GAAKA,EAAGiS,EAAKjS,IACrC,MAKH,OAAOiS,CACR,EAIAY,KAAM,SAAUiQ,GACf,IAAIT,EACH5d,EAAM,GACNzE,EAAI,EACJ2c,EAAWmG,EAAKnG,SAEjB,IAAMA,EAGL,KAAU0F,EAAOS,EAAM9iB,MAGtByE,GAAOsT,EAAOlF,KAAMwP,GAGtB,OAAkB,IAAb1F,GAA+B,KAAbA,EACfmG,EAAKyB,YAEK,IAAb5H,EACGmG,EAAK0B,gBAAgBD,YAEX,IAAb5H,GAA+B,IAAbA,EACfmG,EAAKlG,UAKNnY,CACR,EAGAggB,UAAW,SAAUziB,EAAKme,GACzB,IAAI1b,EAAM0b,GAAW,GAarB,OAXY,MAAPne,IACC4gB,EAAa/c,OAAQ7D,IACzB+V,EAAOmL,MAAOze,EACE,kBAARzC,EACN,CAAEA,GAAQA,GAGZc,EAAKmC,KAAMR,EAAKzC,IAIXyC,CACR,EAEA2X,QAAS,SAAU0G,EAAM9gB,EAAKhC,GAC7B,OAAc,MAAPgC,GAAe,EAAIgS,EAAQ/O,KAAMjD,EAAK8gB,EAAM9iB,EACpD,EAEA0kB,SAAU,SAAU5B,GACnB,IAAI6B,EAAY7B,GAAQA,EAAK8B,aAC5BC,EAAU/B,IAAUA,EAAKgC,eAAiBhC,GAAO0B,gBAIlD,OAAQ/B,EAAYhhB,KAAMkjB,GAAaE,GAAWA,EAAQhC,UAAY,OACvE,EAIAK,MAAO,SAAU5gB,EAAOC,GAKvB,IAJA,IAAIkhB,GAAOlhB,EAAOlC,OACjBe,EAAI,EACJpB,EAAIsC,EAAMjC,OAEHe,EAAIqiB,EAAKriB,IAChBkB,EAAOtC,KAAQuC,EAAQnB,GAKxB,OAFAkB,EAAMjC,OAASL,EAERsC,CACR,EAEA+Y,KAAM,SAAU4H,EAAOnc,EAAUie,GAShC,IARA,IACCnU,EAAU,GACV5Q,EAAI,EACJK,EAAS4iB,EAAM5iB,OACf2kB,GAAkBD,EAIX/kB,EAAIK,EAAQL,KACA8G,EAAUmc,EAAOjjB,GAAKA,KAChBglB,GACxBpU,EAAQ9N,KAAMmgB,EAAOjjB,IAIvB,OAAO4Q,CACR,EAGA4E,IAAK,SAAUyN,EAAOnc,EAAUme,GAC/B,IAAI5kB,EAAQwG,EACX7G,EAAI,EACJyE,EAAM,GAGP,GAAKme,EAAaK,GAEjB,IADA5iB,EAAS4iB,EAAM5iB,OACPL,EAAIK,EAAQL,IAGL,OAFd6G,EAAQC,EAAUmc,EAAOjjB,GAAKA,EAAGilB,KAGhCxgB,EAAI3B,KAAM+D,QAMZ,IAAM7G,KAAKijB,EAGI,OAFdpc,EAAQC,EAAUmc,EAAOjjB,GAAKA,EAAGilB,KAGhCxgB,EAAI3B,KAAM+D,GAMb,OAAO0a,EAAM9c,EACd,EAGAygB,KAAM,EAINpD,QAASA,IAGa,oBAAXqD,SACXpN,EAAO9Y,GAAIkmB,OAAOC,UAAapjB,EAAKmjB,OAAOC,WAI5CrN,EAAO2E,KAAM,uEAAuExB,MAAO,MAC1F,SAAUmK,EAAIzd,GACb8Z,EAAY,WAAa9Z,EAAO,KAAQA,EAAK4V,aAC9C,IAyBD,IAAIhB,EAAMxa,EAAIwa,IAGVkB,EAAO1b,EAAI0b,KAGXrB,EAASra,EAAIqa,OAGbiJ,EAAa,sBAGbC,EAAW,IAAI1H,OAClB,IAAMyH,EAAa,8BAAgCA,EAAa,KAChE,KAODvN,EAAOyN,SAAW,SAAU9lB,EAAGC,GAC9B,IAAI8lB,EAAM9lB,GAAKA,EAAE4M,WAEjB,OAAO7M,IAAM+lB,MAAWA,GAAwB,IAAjBA,EAAI9I,YAIlCjd,EAAE8lB,SACD9lB,EAAE8lB,SAAUC,GACZ/lB,EAAEgmB,yBAA8D,GAAnChmB,EAAEgmB,wBAAyBD,IAE3D,EAOA,IAAIE,EAAa,+CAEjB,SAASC,EAAYC,EAAIC,GACxB,OAAKA,EAGQ,OAAPD,EACG,SAIDA,EAAGziB,MAAO,GAAI,GAAM,KAAOyiB,EAAG3lB,WAAY2lB,EAAGxlB,OAAS,GAAIQ,SAAU,IAAO,IAI5E,KAAOglB,CACf,CAEA9N,EAAOgO,eAAiB,SAAUC,GACjC,OAASA,EAAM,IAAKtR,QAASiR,EAAYC,EAC1C,EAKA,IAAIK,EAAe/d,EAClBge,EAAapjB,GAEd,WAEA,IAAI9C,EACHmmB,EACAC,EACAC,EACAC,EAIApe,EACAsc,EACA+B,EACAC,EACA5V,EAPA9N,EAAOojB,EAUPzV,EAAUsH,EAAOtH,QACjBgW,EAAU,EACVtS,EAAO,EACPuS,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUrnB,EAAGC,GAIxB,OAHKD,IAAMC,IACV2mB,GAAe,GAET,CACR,EAEAU,EAAW,6HAMXC,EAAa,0BAA4B3B,EACxC,0CAGD5b,EAAa,MAAQ4b,EAAa,KAAO2B,EAAa,OAAS3B,EAG9D,gBAAkBA,EAGlB,2DAA6D2B,EAAa,OAC1E3B,EAAa,OAEd4B,EAAU,KAAOD,EAAP,wFAOoBvd,EAPpB,eAcVyd,EAAc,IAAItJ,OAAQyH,EAAa,IAAK,KAE5C8B,EAAS,IAAIvJ,OAAQ,IAAMyH,EAAa,KAAOA,EAAa,KAC5D+B,EAAqB,IAAIxJ,OAAQ,IAAMyH,EAAa,WAAaA,EAAa,IAC7EA,EAAa,KACdgC,EAAW,IAAIzJ,OAAQyH,EAAa,MAEpCiC,EAAU,IAAI1J,OAAQqJ,GACtBM,EAAc,IAAI3J,OAAQ,IAAMoJ,EAAa,KAE7CQ,EAAY,CACXC,GAAI,IAAI7J,OAAQ,MAAQoJ,EAAa,KACrCU,MAAO,IAAI9J,OAAQ,QAAUoJ,EAAa,KAC1CW,IAAK,IAAI/J,OAAQ,KAAOoJ,EAAa,SACrCY,KAAM,IAAIhK,OAAQ,IAAMnU,GACxBoe,OAAQ,IAAIjK,OAAQ,IAAMqJ,GAC1Ba,MAAO,IAAIlK,OACV,yDACCyH,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACrD0C,KAAM,IAAInK,OAAQ,OAASmJ,EAAW,KAAM,KAI5CiB,aAAc,IAAIpK,OAAQ,IAAMyH,EAC/B,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxD4C,EAAU,sCACVC,EAAU,SAGVC,EAAa,mCAEbC,EAAW,OAIXC,EAAY,IAAIzK,OAAQ,uBAAyByH,EAChD,uBAAwB,KACzBiD,EAAY,SAAUC,EAAQC,GAC7B,IAAIC,EAAO,KAAOF,EAAOplB,MAAO,GAAM,MAEtC,OAAKqlB,IAUEC,EAAO,EACbxmB,OAAOC,aAAcumB,EAAO,OAC5BxmB,OAAOC,aAAcumB,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAC3D,EAMAC,EAAgB,WACfC,IACD,EAEAC,EAAqBC,IACpB,SAAUhG,GACT,OAAyB,IAAlBA,EAAK/Z,UAAqB8Z,EAAUC,EAAM,WAClD,GACA,CAAEiG,IAAK,aAAcrK,KAAM,WAa7B,IACC5b,EAAKV,MACFJ,EAAMoB,EAAM6B,KAAMghB,EAAa+C,YACjC/C,EAAa+C,YAMdhnB,EAAKikB,EAAa+C,WAAW3oB,QAASsc,QACvC,CAAE,MAAQvK,IACTtP,EAAO,CACNV,MAAO,SAAUyB,EAAQolB,GACxB/C,EAAW9jB,MAAOyB,EAAQT,EAAM6B,KAAMgkB,GACvC,EACAhkB,KAAM,SAAUpB,GACfqiB,EAAW9jB,MAAOyB,EAAQT,EAAM6B,KAAM6D,UAAW,GAClD,EAEF,CAEA,SAASogB,EAAM3gB,EAAUma,EAASvC,EAASgJ,GAC1C,IAAIzY,EAAG1Q,EAAG8iB,EAAMsG,EAAKtoB,EAAOuoB,EAAQC,EACnCC,EAAa7G,GAAWA,EAAQoC,cAGhCnI,EAAW+F,EAAUA,EAAQ/F,SAAW,EAKzC,GAHAwD,EAAUA,GAAW,GAGI,kBAAb5X,IAA0BA,GACxB,IAAboU,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOwD,EAIR,IAAMgJ,IACLP,GAAalG,GACbA,EAAUA,GAAWxa,EAEhBqe,GAAiB,CAIrB,GAAkB,KAAb5J,IAAqB7b,EAAQsnB,EAAWoB,KAAMjhB,IAGlD,GAAOmI,EAAI5P,EAAO,IAGjB,GAAkB,IAAb6b,EAAiB,CACrB,KAAOmG,EAAOJ,EAAQ+G,eAAgB/Y,IASrC,OAAOyP,EALP,GAAK2C,EAAKzX,KAAOqF,EAEhB,OADA5N,EAAKmC,KAAMkb,EAAS2C,GACb3C,CAOV,MAIC,GAAKoJ,IAAgBzG,EAAOyG,EAAWE,eAAgB/Y,KACtDwY,EAAK1D,SAAU9C,EAASI,IACxBA,EAAKzX,KAAOqF,EAGZ,OADA5N,EAAKmC,KAAMkb,EAAS2C,GACb3C,MAKH,IAAKrf,EAAO,GAElB,OADAgC,EAAKV,MAAO+d,EAASuC,EAAQgH,qBAAsBnhB,IAC5C4X,EAGD,IAAOzP,EAAI5P,EAAO,KAAS4hB,EAAQiH,uBAEzC,OADA7mB,EAAKV,MAAO+d,EAASuC,EAAQiH,uBAAwBjZ,IAC9CyP,CACR,CAID,IAAM2G,EAAwBve,EAAW,QACrCie,IAAcA,EAAU/kB,KAAM8G,IAAe,CAYhD,GAVA+gB,EAAc/gB,EACdghB,EAAa7G,EASK,IAAb/F,IACF2K,EAAS7lB,KAAM8G,IAAc8e,EAAmB5lB,KAAM8G,IAAe,CAyBvE,KAtBAghB,EAAalB,EAAS5mB,KAAM8G,IAAcqhB,GAAalH,EAAQnW,aAC9DmW,IAQkBA,GAAYZ,EAAQ+H,SAG/BT,EAAM1G,EAAQta,aAAc,OAClCghB,EAAMrR,EAAOgO,eAAgBqD,GAE7B1G,EAAQjU,aAAc,KAAQ2a,EAAM3Y,IAMtCzQ,GADAqpB,EAASS,GAAUvhB,IACRlI,OACHL,KACPqpB,EAAQrpB,IAAQopB,EAAM,IAAMA,EAAM,UAAa,IAC9CW,GAAYV,EAAQrpB,IAEtBspB,EAAcD,EAAO/nB,KAAM,IAC5B,CAEA,IAIC,OAHAwB,EAAKV,MAAO+d,EACXoJ,EAAW9gB,iBAAkB6gB,IAEvBnJ,CACR,CAAE,MAAQ6J,GACTlD,EAAwBve,GAAU,EACnC,CAAE,QACI6gB,IAAQ3Y,GACZiS,EAAQ/T,gBAAiB,KAE3B,CACD,CACD,CAID,OAAOsb,GAAQ1hB,EAASmM,QAAS6Q,EAAU,MAAQ7C,EAASvC,EAASgJ,EACtE,CAQA,SAASxC,KACR,IAAIuD,EAAO,GAaX,OAXA,SAASC,EAAOpkB,EAAKc,GASpB,OALKqjB,EAAKpnB,KAAMiD,EAAM,KAAQogB,EAAKiE,oBAG3BD,EAAOD,EAAKtc,SAEXuc,EAAOpkB,EAAM,KAAQc,CAC/B,CAED,CAMA,SAASwjB,GAAcprB,GAEtB,OADAA,EAAIwR,IAAY,EACTxR,CACR,CAMA,SAASqrB,GAAQrrB,GAChB,IAAIyW,EAAKxN,EAASmE,cAAe,YAEjC,IACC,QAASpN,EAAIyW,EACd,CAAE,MAAQtD,IACT,OAAO,CACR,CAAE,QAGIsD,EAAGnJ,YACPmJ,EAAGnJ,WAAWC,YAAakJ,GAI5BA,EAAK,IACN,CACD,CAMA,SAAS6U,GAAmB3hB,GAC3B,OAAO,SAAUka,GAChB,OAAOD,EAAUC,EAAM,UAAaA,EAAKla,OAASA,CACnD,CACD,CAMA,SAAS4hB,GAAoB5hB,GAC5B,OAAO,SAAUka,GAChB,OAASD,EAAUC,EAAM,UAAaD,EAAUC,EAAM,YACrDA,EAAKla,OAASA,CAChB,CACD,CAMA,SAAS6hB,GAAsB1hB,GAG9B,OAAO,SAAU+Z,GAKhB,MAAK,SAAUA,EASTA,EAAKvW,aAAgC,IAAlBuW,EAAK/Z,SAGvB,UAAW+Z,EACV,UAAWA,EAAKvW,WACbuW,EAAKvW,WAAWxD,WAAaA,EAE7B+Z,EAAK/Z,WAAaA,EAMpB+Z,EAAK4H,aAAe3hB,GAG1B+Z,EAAK4H,cAAgB3hB,GACpB8f,EAAoB/F,KAAW/Z,EAG3B+Z,EAAK/Z,WAAaA,EAKd,UAAW+Z,GACfA,EAAK/Z,WAAaA,CAK3B,CACD,CAMA,SAAS4hB,GAAwB1rB,GAChC,OAAOorB,IAAc,SAAUO,GAE9B,OADAA,GAAYA,EACLP,IAAc,SAAUlB,EAAMvY,GAMpC,IALA,IAAIxP,EACHypB,EAAe5rB,EAAI,GAAIkqB,EAAK9oB,OAAQuqB,GACpC5qB,EAAI6qB,EAAaxqB,OAGVL,KACFmpB,EAAQ/nB,EAAIypB,EAAc7qB,MAC9BmpB,EAAM/nB,KAASwP,EAASxP,GAAM+nB,EAAM/nB,IAGvC,GACD,GACD,CAOA,SAASwoB,GAAalH,GACrB,OAAOA,GAAmD,qBAAjCA,EAAQgH,sBAAwChH,CAC1E,CAOA,SAASkG,GAAavG,GACrB,IAAIyI,EACHxI,EAAMD,EAAOA,EAAKyC,eAAiBzC,EAAO4D,EAO3C,OAAK3D,GAAOpa,GAA6B,IAAjBoa,EAAI3F,UAAmB2F,EAAIkC,iBAMnDA,GADAtc,EAAWoa,GACgBkC,gBAC3B+B,GAAkBxO,EAAO2M,SAAUxc,GAInC0I,EAAU4T,EAAgB5T,SACzB4T,EAAgBvT,uBAChBuT,EAAgBzT,kBAOZyT,EAAgBzT,mBAMpBkV,GAAgB/d,IACd4iB,EAAY5iB,EAAS6iB,cAAiBD,EAAUE,MAAQF,GAG1DA,EAAU1jB,iBAAkB,SAAUuhB,GAOvC7G,EAAQmJ,QAAUX,IAAQ,SAAU5U,GAEnC,OADA8O,EAAgBrV,YAAauG,GAAKrK,GAAK0M,EAAOtH,SACtCvI,EAASgjB,oBACfhjB,EAASgjB,kBAAmBnT,EAAOtH,SAAUpQ,MAChD,IAKAyhB,EAAQqJ,kBAAoBb,IAAQ,SAAU5U,GAC7C,OAAO9E,EAAQ3L,KAAMyQ,EAAI,IAC1B,IAIAoM,EAAQ+H,MAAQS,IAAQ,WACvB,OAAOpiB,EAASO,iBAAkB,SACnC,IAWAqZ,EAAQsJ,OAASd,IAAQ,WACxB,IAEC,OADApiB,EAASQ,cAAe,oBACjB,CACR,CAAE,MAAQ0J,IACT,OAAO,CACR,CACD,IAGK0P,EAAQmJ,SACZ9E,EAAK7Y,OAAOoa,GAAK,SAAUrc,GAC1B,IAAIggB,EAAShgB,EAAGqJ,QAAS4T,EAAWC,GACpC,OAAO,SAAUzF,GAChB,OAAOA,EAAK1a,aAAc,QAAWijB,CACtC,CACD,EACAlF,EAAK+C,KAAKxB,GAAK,SAAUrc,EAAIqX,GAC5B,GAAuC,qBAA3BA,EAAQ+G,gBAAkClD,EAAiB,CACtE,IAAIzD,EAAOJ,EAAQ+G,eAAgBpe,GACnC,OAAOyX,EAAO,CAAEA,GAAS,EAC1B,CACD,IAEAqD,EAAK7Y,OAAOoa,GAAM,SAAUrc,GAC3B,IAAIggB,EAAShgB,EAAGqJ,QAAS4T,EAAWC,GACpC,OAAO,SAAUzF,GAChB,IAAIT,EAAwC,qBAA1BS,EAAKwI,kBACtBxI,EAAKwI,iBAAkB,MACxB,OAAOjJ,GAAQA,EAAKxb,QAAUwkB,CAC/B,CACD,EAIAlF,EAAK+C,KAAKxB,GAAK,SAAUrc,EAAIqX,GAC5B,GAAuC,qBAA3BA,EAAQ+G,gBAAkClD,EAAiB,CACtE,IAAIlE,EAAMriB,EAAGijB,EACZH,EAAOJ,EAAQ+G,eAAgBpe,GAEhC,GAAKyX,EAAO,CAIX,IADAT,EAAOS,EAAKwI,iBAAkB,QACjBjJ,EAAKxb,QAAUwE,EAC3B,MAAO,CAAEyX,GAMV,IAFAG,EAAQP,EAAQwI,kBAAmB7f,GACnCrL,EAAI,EACM8iB,EAAOG,EAAOjjB,MAEvB,IADAqiB,EAAOS,EAAKwI,iBAAkB,QACjBjJ,EAAKxb,QAAUwE,EAC3B,MAAO,CAAEyX,EAGZ,CAEA,MAAO,EACR,CACD,GAIDqD,EAAK+C,KAAKtB,IAAM,SAAU2D,EAAK7I,GAC9B,MAA6C,qBAAjCA,EAAQgH,qBACZhH,EAAQgH,qBAAsB6B,GAI9B7I,EAAQja,iBAAkB8iB,EAEnC,EAGApF,EAAK+C,KAAKvB,MAAQ,SAAU6D,EAAW9I,GACtC,GAA+C,qBAAnCA,EAAQiH,wBAA0CpD,EAC7D,OAAO7D,EAAQiH,uBAAwB6B,EAEzC,EAOAhF,EAAY,GAIZ8D,IAAQ,SAAU5U,GAEjB,IAAIzJ,EAEJuY,EAAgBrV,YAAauG,GAAKiB,UACjC,UAAYlG,EAAZ,iDACiBA,EADjB,oEAMKiF,EAAGjN,iBAAkB,cAAepI,QACzCmmB,EAAU1jB,KAAM,MAAQwiB,EAAa,aAAe0B,EAAW,KAI1DtR,EAAGjN,iBAAkB,QAAUgI,EAAU,MAAOpQ,QACrDmmB,EAAU1jB,KAAM,MAMX4S,EAAGjN,iBAAkB,KAAOgI,EAAU,MAAOpQ,QAClDmmB,EAAU1jB,KAAM,YAOX4S,EAAGjN,iBAAkB,YAAapI,QACvCmmB,EAAU1jB,KAAM,aAKjBmJ,EAAQ/D,EAASmE,cAAe,UAC1BoC,aAAc,OAAQ,UAC5BiH,EAAGvG,YAAalD,GAAQwC,aAAc,OAAQ,KAQ9C+V,EAAgBrV,YAAauG,GAAK3M,UAAW,EACM,IAA9C2M,EAAGjN,iBAAkB,aAAcpI,QACvCmmB,EAAU1jB,KAAM,WAAY,cAQ7BmJ,EAAQ/D,EAASmE,cAAe,UAC1BoC,aAAc,OAAQ,IAC5BiH,EAAGvG,YAAalD,GACVyJ,EAAGjN,iBAAkB,aAAcpI,QACxCmmB,EAAU1jB,KAAM,MAAQwiB,EAAa,QAAUA,EAAa,KAC3DA,EAAa,eAEhB,IAEMxD,EAAQsJ,QAQb5E,EAAU1jB,KAAM,QAGjB0jB,EAAYA,EAAUnmB,QAAU,IAAIwd,OAAQ2I,EAAUllB,KAAM,MAM5DylB,EAAY,SAAUrnB,EAAGC,GAGxB,GAAKD,IAAMC,EAEV,OADA2mB,GAAe,EACR,EAIR,IAAImF,GAAW/rB,EAAEgmB,yBAA2B/lB,EAAE+lB,wBAC9C,OAAK+F,IAgBU,GAPfA,GAAY/rB,EAAEolB,eAAiBplB,KAASC,EAAEmlB,eAAiBnlB,GAC1DD,EAAEgmB,wBAAyB/lB,GAG3B,KAIGmiB,EAAQ4J,cAAgB/rB,EAAE+lB,wBAAyBhmB,KAAQ+rB,EAOzD/rB,IAAMwI,GAAYxI,EAAEolB,eAAiBmB,GACzCiD,EAAK1D,SAAUS,EAAcvmB,IACrB,EAOJC,IAAMuI,GAAYvI,EAAEmlB,eAAiBmB,GACzCiD,EAAK1D,SAAUS,EAActmB,GACtB,EAID0mB,EACJrS,EAAQ/O,KAAMohB,EAAW3mB,GAAMsU,EAAQ/O,KAAMohB,EAAW1mB,GAC1D,EAGe,EAAV8rB,GAAe,EAAI,EAC3B,EAEOvjB,GAvSCA,CAwST,CAopBA,IAAMlI,KAlpBNkpB,EAAKtY,QAAU,SAAU+a,EAAMvW,GAC9B,OAAO8T,EAAMyC,EAAM,KAAM,KAAMvW,EAChC,EAEA8T,EAAKrY,gBAAkB,SAAUiS,EAAM6I,GAGtC,GAFA/C,GAAa9F,GAERyD,IACHO,EAAwB6E,EAAO,QAC7BnF,IAAcA,EAAU/kB,KAAMkqB,IAEjC,IACC,IAAIlnB,EAAMmM,EAAQ3L,KAAM6d,EAAM6I,GAG9B,GAAKlnB,GAAOqd,EAAQqJ,mBAIlBrI,EAAK5a,UAAuC,KAA3B4a,EAAK5a,SAASyU,SAChC,OAAOlY,CAET,CAAE,MAAQ2N,IACT0U,EAAwB6E,GAAM,EAC/B,CAGD,OAAOzC,EAAMyC,EAAMzjB,EAAU,KAAM,CAAE4a,IAASziB,OAAS,CACxD,EAEA6oB,EAAK1D,SAAW,SAAU9C,EAASI,GAUlC,OAHOJ,EAAQoC,eAAiBpC,IAAaxa,GAC5C0gB,GAAalG,GAEP3K,EAAOyN,SAAU9C,EAASI,EAClC,EAGAoG,EAAKjP,KAAO,SAAU6I,EAAMlb,IAOpBkb,EAAKgC,eAAiBhC,IAAU5a,GACtC0gB,GAAa9F,GAGd,IAAI7jB,EAAKknB,EAAKyF,WAAYhkB,EAAK4V,eAG9Bla,EAAMrE,GAAM0iB,EAAO1c,KAAMkhB,EAAKyF,WAAYhkB,EAAK4V,eAC9Cve,EAAI6jB,EAAMlb,GAAO2e,QACjBlnB,EAEF,YAAaA,IAARiE,EACGA,EAGDwf,EAAK1a,aAAcR,EAC3B,EAEAshB,EAAK1d,MAAQ,SAAUyY,GACtB,MAAM,IAAIhM,MAAO,0CAA4CgM,EAC9D,EAMAlM,EAAO8T,WAAa,SAAU1L,GAC7B,IAAI2C,EACHgJ,EAAa,GACb1qB,EAAI,EACJpB,EAAI,EAWL,GAJAsmB,GAAgBxE,EAAQiK,WACxB1F,GAAavE,EAAQiK,YAAc3oB,EAAM6B,KAAMkb,EAAS,GACxDzC,EAAKzY,KAAMkb,EAAS4G,GAEfT,EAAe,CACnB,KAAUxD,EAAO3C,EAASngB,MACpB8iB,IAAS3C,EAASngB,KACtBoB,EAAI0qB,EAAWhpB,KAAM9C,IAGvB,KAAQoB,KACPib,EAAOpX,KAAMkb,EAAS2L,EAAY1qB,GAAK,EAEzC,CAMA,OAFAilB,EAAY,KAELlG,CACR,EAEApI,EAAO9Y,GAAG4sB,WAAa,WACtB,OAAO5oB,KAAK+f,UAAWjL,EAAO8T,WAAYzoB,EAAMhB,MAAOa,OACxD,EAEAkjB,EAAOpO,EAAO4T,KAAO,CAGpBvB,YAAa,GAEb4B,aAAc3B,GAEdvpB,MAAO2mB,EAEPmE,WAAY,CAAC,EAEb1C,KAAM,CAAC,EAEP+C,SAAU,CACT,IAAK,CAAElD,IAAK,aAAczmB,OAAO,GACjC,IAAK,CAAEymB,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBzmB,OAAO,GACtC,IAAK,CAAEymB,IAAK,oBAGbmD,UAAW,CACVrE,KAAM,SAAU/mB,GAWf,OAVAA,EAAO,GAAMA,EAAO,GAAI4T,QAAS4T,EAAWC,GAG5CznB,EAAO,IAAQA,EAAO,IAAOA,EAAO,IAAOA,EAAO,IAAO,IACvD4T,QAAS4T,EAAWC,GAEF,OAAfznB,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAMsC,MAAO,EAAG,EACxB,EAEA2kB,MAAO,SAAUjnB,GAkChB,OAtBAA,EAAO,GAAMA,EAAO,GAAI0c,cAEU,QAA7B1c,EAAO,GAAIsC,MAAO,EAAG,IAGnBtC,EAAO,IACZooB,EAAK1d,MAAO1K,EAAO,IAKpBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KAEvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClBooB,EAAK1d,MAAO1K,EAAO,IAGbA,CACR,EAEAgnB,OAAQ,SAAUhnB,GACjB,IAAIqrB,EACHC,GAAYtrB,EAAO,IAAOA,EAAO,GAElC,OAAK2mB,EAAUM,MAAMtmB,KAAMX,EAAO,IAC1B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9BsrB,GAAY7E,EAAQ9lB,KAAM2qB,KAGnCD,EAASrC,GAAUsC,GAAU,MAG7BD,EAASC,EAASpY,QAAS,IAAKoY,EAAS/rB,OAAS8rB,GAAWC,EAAS/rB,UAGxES,EAAO,GAAMA,EAAO,GAAIsC,MAAO,EAAG+oB,GAClCrrB,EAAO,GAAMsrB,EAAShpB,MAAO,EAAG+oB,IAI1BrrB,EAAMsC,MAAO,EAAG,GACxB,GAGDkK,OAAQ,CAEPsa,IAAK,SAAUyE,GACd,IAAIC,EAAmBD,EAAiB3X,QAAS4T,EAAWC,GAAY/K,cACxE,MAA4B,MAArB6O,EACN,WACC,OAAO,CACR,EACA,SAAUvJ,GACT,OAAOD,EAAUC,EAAMwJ,EACxB,CACF,EAEA3E,MAAO,SAAU6D,GAChB,IAAIe,EAAU7F,EAAY8E,EAAY,KAEtC,OAAOe,IACJA,EAAU,IAAI1O,OAAQ,MAAQyH,EAAa,IAAMkG,EAClD,IAAMlG,EAAa,SACpBoB,EAAY8E,GAAW,SAAU1I,GAChC,OAAOyJ,EAAQ9qB,KACY,kBAAnBqhB,EAAK0I,WAA0B1I,EAAK0I,WACb,qBAAtB1I,EAAK1a,cACX0a,EAAK1a,aAAc,UACpB,GAEH,GACF,EAEAyf,KAAM,SAAUjgB,EAAM4kB,EAAUC,GAC/B,OAAO,SAAU3J,GAChB,IAAItgB,EAAS0mB,EAAKjP,KAAM6I,EAAMlb,GAE9B,OAAe,MAAVpF,EACgB,OAAbgqB,GAEFA,IAINhqB,GAAU,GAEQ,MAAbgqB,EACGhqB,IAAWiqB,EAED,OAAbD,EACGhqB,IAAWiqB,EAED,OAAbD,EACGC,GAAqC,IAA5BjqB,EAAOwR,QAASyY,GAEf,OAAbD,EACGC,GAASjqB,EAAOwR,QAASyY,IAAW,EAE1B,OAAbD,EACGC,GAASjqB,EAAOY,OAAQqpB,EAAMpsB,UAAaosB,EAEjC,OAAbD,GACK,IAAMhqB,EAAOkS,QAASyS,EAAa,KAAQ,KAClDnT,QAASyY,IAAW,EAEL,OAAbD,IACGhqB,IAAWiqB,GAASjqB,EAAOY,MAAO,EAAGqpB,EAAMpsB,OAAS,KAAQosB,EAAQ,KAI7E,CACD,EAEA1E,MAAO,SAAUnf,EAAM8jB,EAAMC,EAAWrqB,EAAO+gB,GAC9C,IAAIuJ,EAAgC,QAAvBhkB,EAAKxF,MAAO,EAAG,GAC3BypB,EAA+B,SAArBjkB,EAAKxF,OAAQ,GACvB0pB,EAAkB,YAATJ,EAEV,OAAiB,IAAVpqB,GAAwB,IAAT+gB,EAGrB,SAAUP,GACT,QAASA,EAAKvW,UACf,EAEA,SAAUuW,EAAMiK,EAAUha,GACzB,IAAIoX,EAAO6C,EAAY3K,EAAM4K,EAAWplB,EACvCkhB,EAAM6D,IAAWC,EAAU,cAAgB,kBAC3CK,EAASpK,EAAKvW,WACd3E,EAAOklB,GAAUhK,EAAKD,SAASrF,cAC/B2P,GAAYpa,IAAQ+Z,EACpBM,GAAO,EAER,GAAKF,EAAS,CAGb,GAAKN,EAAS,CACb,KAAQ7D,GAAM,CAEb,IADA1G,EAAOS,EACGT,EAAOA,EAAM0G,IACtB,GAAK+D,EACJjK,EAAUR,EAAMza,GACE,IAAlBya,EAAK1F,SAEL,OAAO,EAKT9U,EAAQkhB,EAAe,SAATngB,IAAoBf,GAAS,aAC5C,CACA,OAAO,CACR,CAKA,GAHAA,EAAQ,CAAEglB,EAAUK,EAAOG,WAAaH,EAAOI,WAG1CT,GAAWM,GASf,IAHAC,GADAH,GADA9C,GADA6C,EAAaE,EAAQzc,KAAeyc,EAAQzc,GAAY,CAAC,IACrC7H,IAAU,IACX,KAAQ6d,GAAW0D,EAAO,KACzBA,EAAO,GAC3B9H,EAAO4K,GAAaC,EAAOlE,WAAYiE,GAE7B5K,IAAS4K,GAAa5K,GAAQA,EAAM0G,KAG3CqE,EAAOH,EAAY,IAAOplB,EAAM2U,OAGlC,GAAuB,IAAlB6F,EAAK1F,YAAoByQ,GAAQ/K,IAASS,EAAO,CACrDkK,EAAYpkB,GAAS,CAAE6d,EAASwG,EAAWG,GAC3C,KACD,OAeD,GATKD,IAIJC,EADAH,GADA9C,GADA6C,EAAalK,EAAMrS,KAAeqS,EAAMrS,GAAY,CAAC,IACjC7H,IAAU,IACX,KAAQ6d,GAAW0D,EAAO,KAMhC,IAATiD,EAGJ,MAAU/K,IAAS4K,GAAa5K,GAAQA,EAAM0G,KAC3CqE,EAAOH,EAAY,IAAOplB,EAAM2U,WAE3BsQ,EACNjK,EAAUR,EAAMza,GACE,IAAlBya,EAAK1F,cACHyQ,IAGGD,KACJH,EAAa3K,EAAM5R,KAChB4R,EAAM5R,GAAY,CAAC,IACV7H,GAAS,CAAE6d,EAAS2G,IAG5B/K,IAASS,MAUlB,OADAsK,GAAQ/J,KACQ/gB,GAAW8qB,EAAO9qB,IAAU,GAAK8qB,EAAO9qB,GAAS,CAClE,CACD,CACF,EAEAwlB,OAAQ,SAAUyF,EAAQ3C,GAMzB,IAAIpT,EACHvY,EAAKknB,EAAKe,QAASqG,IAAYpH,EAAKqH,WAAYD,EAAO/P,gBACtD0L,EAAK1d,MAAO,uBAAyB+hB,GAKvC,OAAKtuB,EAAIwR,GACDxR,EAAI2rB,GAIP3rB,EAAGoB,OAAS,GAChBmX,EAAO,CAAE+V,EAAQA,EAAQ,GAAI3C,GACtBzE,EAAKqH,WAAWnO,eAAgBkO,EAAO/P,eAC7C6M,IAAc,SAAUlB,EAAMvY,GAI7B,IAHA,IAAI6c,EACHC,EAAUzuB,EAAIkqB,EAAMyB,GACpB5qB,EAAI0tB,EAAQrtB,OACLL,KAEPmpB,EADAsE,EAAMzZ,EAAQ/O,KAAMkkB,EAAMuE,EAAS1tB,OAClB4Q,EAAS6c,GAAQC,EAAS1tB,GAE7C,IACA,SAAU8iB,GACT,OAAO7jB,EAAI6jB,EAAM,EAAGtL,EACrB,GAGKvY,CACR,GAGDioB,QAAS,CAGRyG,IAAKtD,IAAc,SAAU9hB,GAK5B,IAAI0D,EAAQ,GACXkU,EAAU,GACV5C,EAAUqQ,GAASrlB,EAASmM,QAAS6Q,EAAU,OAEhD,OAAOhI,EAAS9M,GACf4Z,IAAc,SAAUlB,EAAMvY,EAASmc,EAAUha,GAMhD,IALA,IAAI+P,EACH+K,EAAYtQ,EAAS4L,EAAM,KAAMpW,EAAK,IACtC/S,EAAImpB,EAAK9oB,OAGFL,MACA8iB,EAAO+K,EAAW7tB,MACxBmpB,EAAMnpB,KAAS4Q,EAAS5Q,GAAM8iB,GAGjC,IACA,SAAUA,EAAMiK,EAAUha,GAOzB,OANA9G,EAAO,GAAM6W,EACbvF,EAAStR,EAAO,KAAM8G,EAAKoN,GAI3BlU,EAAO,GAAM,MACLkU,EAAQ3D,KACjB,CACF,IAEAsR,IAAKzD,IAAc,SAAU9hB,GAC5B,OAAO,SAAUua,GAChB,OAAOoG,EAAM3gB,EAAUua,GAAOziB,OAAS,CACxC,CACD,IAEAmlB,SAAU6E,IAAc,SAAUxX,GAEjC,OADAA,EAAOA,EAAK6B,QAAS4T,EAAWC,GACzB,SAAUzF,GAChB,OAASA,EAAKyB,aAAexM,EAAOlF,KAAMiQ,IAAS9O,QAASnB,IAAU,CACvE,CACD,IASAkb,KAAM1D,IAAc,SAAU0D,GAO7B,OAJMvG,EAAY/lB,KAAMssB,GAAQ,KAC/B7E,EAAK1d,MAAO,qBAAuBuiB,GAEpCA,EAAOA,EAAKrZ,QAAS4T,EAAWC,GAAY/K,cACrC,SAAUsF,GAChB,IAAIkL,EACJ,GACC,GAAOA,EAAWzH,EACjBzD,EAAKiL,KACLjL,EAAK1a,aAAc,aAAgB0a,EAAK1a,aAAc,QAGtD,OADA4lB,EAAWA,EAASxQ,iBACAuQ,GAA2C,IAAnCC,EAASha,QAAS+Z,EAAO,YAE3CjL,EAAOA,EAAKvW,aAAkC,IAAlBuW,EAAKnG,UAC7C,OAAO,CACR,CACD,IAGA9Y,OAAQ,SAAUif,GACjB,IAAIle,EAAO0K,EAAOuE,UAAYvE,EAAOuE,SAASjP,KAC9C,OAAOA,GAAQA,EAAKxB,MAAO,KAAQ0f,EAAKzX,EACzC,EAEA/C,KAAM,SAAUwa,GACf,OAAOA,IAAS0B,CACjB,EAEAzV,MAAO,SAAU+T,GAChB,OAAOA,IA5oCV,WACC,IACC,OAAO5a,EAAS+lB,aACjB,CAAE,MAAQC,GAAQ,CACnB,CAwoCmBC,IACfjmB,EAASkmB,eACLtL,EAAKla,MAAQka,EAAKhP,OAASgP,EAAKuL,SACtC,EAGAC,QAAS7D,IAAsB,GAC/B1hB,SAAU0hB,IAAsB,GAEhClV,QAAS,SAAUuN,GAIlB,OAASD,EAAUC,EAAM,YAAeA,EAAKvN,SAC1CsN,EAAUC,EAAM,aAAgBA,EAAKxN,QACzC,EAEAA,SAAU,SAAUwN,GAWnB,OALKA,EAAKvW,YAETuW,EAAKvW,WAAWgiB,eAGQ,IAAlBzL,EAAKxN,QACb,EAGAkZ,MAAO,SAAU1L,GAMhB,IAAMA,EAAOA,EAAKuK,WAAYvK,EAAMA,EAAOA,EAAK2L,YAC/C,GAAK3L,EAAKnG,SAAW,EACpB,OAAO,EAGT,OAAO,CACR,EAEAuQ,OAAQ,SAAUpK,GACjB,OAAQqD,EAAKe,QAAQsH,MAAO1L,EAC7B,EAGA4L,OAAQ,SAAU5L,GACjB,OAAOqF,EAAQ1mB,KAAMqhB,EAAKD,SAC3B,EAEA5W,MAAO,SAAU6W,GAChB,OAAOoF,EAAQzmB,KAAMqhB,EAAKD,SAC3B,EAEA/T,OAAQ,SAAUgU,GACjB,OAAOD,EAAUC,EAAM,UAA2B,WAAdA,EAAKla,MACxCia,EAAUC,EAAM,SAClB,EAEAjQ,KAAM,SAAUiQ,GACf,IAAI7I,EACJ,OAAO4I,EAAUC,EAAM,UAA2B,SAAdA,EAAKla,OAKI,OAAxCqR,EAAO6I,EAAK1a,aAAc,UACN,SAAvB6R,EAAKuD,cACR,EAGAlb,MAAOqoB,IAAwB,WAC9B,MAAO,CAAE,EACV,IAEAtH,KAAMsH,IAAwB,SAAUgE,EAAetuB,GACtD,MAAO,CAAEA,EAAS,EACnB,IAEA+iB,GAAIuH,IAAwB,SAAUgE,EAAetuB,EAAQuqB,GAC5D,MAAO,CAAEA,EAAW,EAAIA,EAAWvqB,EAASuqB,EAC7C,IAEAtH,KAAMqH,IAAwB,SAAUE,EAAcxqB,GAErD,IADA,IAAIL,EAAI,EACAA,EAAIK,EAAQL,GAAK,EACxB6qB,EAAa/nB,KAAM9C,GAEpB,OAAO6qB,CACR,IAEArH,IAAKmH,IAAwB,SAAUE,EAAcxqB,GAEpD,IADA,IAAIL,EAAI,EACAA,EAAIK,EAAQL,GAAK,EACxB6qB,EAAa/nB,KAAM9C,GAEpB,OAAO6qB,CACR,IAEA+D,GAAIjE,IAAwB,SAAUE,EAAcxqB,EAAQuqB,GAC3D,IAAI5qB,EAUJ,IAPCA,EADI4qB,EAAW,EACXA,EAAWvqB,EACJuqB,EAAWvqB,EAClBA,EAEAuqB,IAGK5qB,GAAK,GACd6qB,EAAa/nB,KAAM9C,GAEpB,OAAO6qB,CACR,IAEAgE,GAAIlE,IAAwB,SAAUE,EAAcxqB,EAAQuqB,GAE3D,IADA,IAAI5qB,EAAI4qB,EAAW,EAAIA,EAAWvqB,EAASuqB,IACjC5qB,EAAIK,GACbwqB,EAAa/nB,KAAM9C,GAEpB,OAAO6qB,CACR,MAIF1E,EAAKe,QAAQ4H,IAAM3I,EAAKe,QAAQ9D,GAGrB,CAAE2L,OAAO,EAAMC,UAAU,EAAMzoB,MAAM,EAAM0oB,UAAU,EAAMC,OAAO,GAC5E/I,EAAKe,QAASlnB,GAAMuqB,GAAmBvqB,GAExC,IAAMA,IAAK,CAAEmvB,QAAQ,EAAMjsB,OAAO,GACjCijB,EAAKe,QAASlnB,GAAMwqB,GAAoBxqB,GAIzC,SAASwtB,KAAc,CAIvB,SAAS1D,GAAUvhB,EAAU6mB,GAC5B,IAAI1B,EAAS5sB,EAAOuuB,EAAQzmB,EAC3B0mB,EAAOjG,EAAQkG,EACfC,EAAS5I,EAAYre,EAAW,KAEjC,GAAKinB,EACJ,OAAOJ,EAAY,EAAII,EAAOpsB,MAAO,GAOtC,IAJAksB,EAAQ/mB,EACR8gB,EAAS,GACTkG,EAAapJ,EAAK+F,UAEVoD,GAAQ,CA2Bf,IAAM1mB,KAxBA8kB,KAAa5sB,EAAQsmB,EAAOoC,KAAM8F,MAClCxuB,IAGJwuB,EAAQA,EAAMlsB,MAAOtC,EAAO,GAAIT,SAAYivB,GAE7CjG,EAAOvmB,KAAQusB,EAAS,KAGzB3B,GAAU,GAGH5sB,EAAQumB,EAAmBmC,KAAM8F,MACvC5B,EAAU5sB,EAAM8M,QAChByhB,EAAOvsB,KAAM,CACZ+D,MAAO6mB,EAGP9kB,KAAM9H,EAAO,GAAI4T,QAAS6Q,EAAU,OAErC+J,EAAQA,EAAMlsB,MAAOsqB,EAAQrtB,SAIhB8lB,EAAK7Y,SACXxM,EAAQ2mB,EAAW7e,GAAO4gB,KAAM8F,KAAgBC,EAAY3mB,MAChE9H,EAAQyuB,EAAY3mB,GAAQ9H,MAC9B4sB,EAAU5sB,EAAM8M,QAChByhB,EAAOvsB,KAAM,CACZ+D,MAAO6mB,EACP9kB,KAAMA,EACNgI,QAAS9P,IAEVwuB,EAAQA,EAAMlsB,MAAOsqB,EAAQrtB,SAI/B,IAAMqtB,EACL,KAEF,CAKA,OAAK0B,EACGE,EAAMjvB,OAGPivB,EACNpG,EAAK1d,MAAOjD,GAGZqe,EAAYre,EAAU8gB,GAASjmB,MAAO,EACxC,CAEA,SAAS2mB,GAAYsF,GAIpB,IAHA,IAAIrvB,EAAI,EACPyjB,EAAM4L,EAAOhvB,OACbkI,EAAW,GACJvI,EAAIyjB,EAAKzjB,IAChBuI,GAAY8mB,EAAQrvB,GAAI6G,MAEzB,OAAO0B,CACR,CAEA,SAASugB,GAAevL,EAASkS,EAAYC,GAC5C,IAAI3G,EAAM0G,EAAW1G,IACpB4G,EAAOF,EAAW/Q,KAClB3Y,EAAM4pB,GAAQ5G,EACd6G,EAAmBF,GAAgB,eAAR3pB,EAC3B8pB,EAAW1b,IAEZ,OAAOsb,EAAWntB,MAGjB,SAAUwgB,EAAMJ,EAAS3P,GACxB,KAAU+P,EAAOA,EAAMiG,IACtB,GAAuB,IAAlBjG,EAAKnG,UAAkBiT,EAC3B,OAAOrS,EAASuF,EAAMJ,EAAS3P,GAGjC,OAAO,CACR,EAGA,SAAU+P,EAAMJ,EAAS3P,GACxB,IAAI+c,EAAU9C,EACb+C,EAAW,CAAEtJ,EAASoJ,GAGvB,GAAK9c,GACJ,KAAU+P,EAAOA,EAAMiG,IACtB,IAAuB,IAAlBjG,EAAKnG,UAAkBiT,IACtBrS,EAASuF,EAAMJ,EAAS3P,GAC5B,OAAO,OAKV,KAAU+P,EAAOA,EAAMiG,IACtB,GAAuB,IAAlBjG,EAAKnG,UAAkBiT,EAG3B,GAFA5C,EAAalK,EAAMrS,KAAeqS,EAAMrS,GAAY,CAAC,GAEhDkf,GAAQ9M,EAAUC,EAAM6M,GAC5B7M,EAAOA,EAAMiG,IAASjG,MAChB,KAAOgN,EAAW9C,EAAYjnB,KACpC+pB,EAAU,KAAQrJ,GAAWqJ,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHA9C,EAAYjnB,GAAQgqB,EAGbA,EAAU,GAAMxS,EAASuF,EAAMJ,EAAS3P,GAC9C,OAAO,CAET,CAIH,OAAO,CACR,CACF,CAEA,SAASid,GAAgBC,GACxB,OAAOA,EAAS5vB,OAAS,EACxB,SAAUyiB,EAAMJ,EAAS3P,GAExB,IADA,IAAI/S,EAAIiwB,EAAS5vB,OACTL,KACP,IAAMiwB,EAAUjwB,GAAK8iB,EAAMJ,EAAS3P,GACnC,OAAO,EAGT,OAAO,CACR,EACAkd,EAAU,EACZ,CAWA,SAASC,GAAUrC,EAAWrY,EAAKlI,EAAQoV,EAAS3P,GAOnD,IANA,IAAI+P,EACHqN,EAAe,GACfnwB,EAAI,EACJyjB,EAAMoK,EAAUxtB,OAChB+vB,EAAgB,MAAP5a,EAEFxV,EAAIyjB,EAAKzjB,KACT8iB,EAAO+K,EAAW7tB,MAClBsN,IAAUA,EAAQwV,EAAMJ,EAAS3P,KACtCod,EAAartB,KAAMggB,GACdsN,GACJ5a,EAAI1S,KAAM9C,KAMd,OAAOmwB,CACR,CAEA,SAASE,GAAYnE,EAAW3jB,EAAUgV,EAAS+S,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY7f,KAC/B6f,EAAaD,GAAYC,IAErBC,IAAeA,EAAY9f,KAC/B8f,EAAaF,GAAYE,EAAYC,IAE/BnG,IAAc,SAAUlB,EAAMhJ,EAASuC,EAAS3P,GACtD,IAAI0d,EAAMzwB,EAAG8iB,EAAM4N,EAClBC,EAAS,GACTC,EAAU,GACVC,EAAc1Q,EAAQ9f,OAGtB4iB,EAAQkG,GA5CX,SAA2B5gB,EAAUuoB,EAAU3Q,GAG9C,IAFA,IAAIngB,EAAI,EACPyjB,EAAMqN,EAASzwB,OACRL,EAAIyjB,EAAKzjB,IAChBkpB,EAAM3gB,EAAUuoB,EAAU9wB,GAAKmgB,GAEhC,OAAOA,CACR,CAsCI4Q,CAAkBxoB,GAAY,IAC7Bma,EAAQ/F,SAAW,CAAE+F,GAAYA,EAAS,IAG5CsO,GAAY9E,IAAe/C,GAAS5gB,EAEnC0a,EADAiN,GAAUjN,EAAO0N,EAAQzE,EAAWxJ,EAAS3P,GAsB/C,GAnBKwK,EAaJA,EAASyT,EATTN,EAAaH,IAAgBpH,EAAO+C,EAAY2E,GAAeP,GAG9D,GAGAnQ,EAG+BuC,EAAS3P,GAEzC2d,EAAaM,EAITV,EAMJ,IALAG,EAAOP,GAAUQ,EAAYE,GAC7BN,EAAYG,EAAM,GAAI/N,EAAS3P,GAG/B/S,EAAIywB,EAAKpwB,OACDL,MACA8iB,EAAO2N,EAAMzwB,MACnB0wB,EAAYE,EAAS5wB,MAAWgxB,EAAWJ,EAAS5wB,IAAQ8iB,IAK/D,GAAKqG,GACJ,GAAKoH,GAAcrE,EAAY,CAC9B,GAAKqE,EAAa,CAKjB,IAFAE,EAAO,GACPzwB,EAAI0wB,EAAWrwB,OACPL,MACA8iB,EAAO4N,EAAY1wB,KAGzBywB,EAAK3tB,KAAQkuB,EAAWhxB,GAAM8iB,GAGhCyN,EAAY,KAAQG,EAAa,GAAMD,EAAM1d,EAC9C,CAIA,IADA/S,EAAI0wB,EAAWrwB,OACPL,MACA8iB,EAAO4N,EAAY1wB,MACvBywB,EAAOF,EAAavc,EAAQ/O,KAAMkkB,EAAMrG,GAAS6N,EAAQ3wB,KAAS,IAEpEmpB,EAAMsH,KAAYtQ,EAASsQ,GAAS3N,GAGvC,OAIA4N,EAAaR,GACZQ,IAAevQ,EACduQ,EAAWrU,OAAQwU,EAAaH,EAAWrwB,QAC3CqwB,GAEGH,EACJA,EAAY,KAAMpQ,EAASuQ,EAAY3d,GAEvCjQ,EAAKV,MAAO+d,EAASuQ,EAGxB,GACD,CAEA,SAASO,GAAmB5B,GA+B3B,IA9BA,IAAI6B,EAAc3T,EAASnc,EAC1BqiB,EAAM4L,EAAOhvB,OACb8wB,EAAkBhL,EAAK8F,SAAUoD,EAAQ,GAAIzmB,MAC7CwoB,EAAmBD,GAAmBhL,EAAK8F,SAAU,KACrDjsB,EAAImxB,EAAkB,EAAI,EAG1BE,EAAevI,IAAe,SAAUhG,GACvC,OAAOA,IAASoO,CACjB,GAAGE,GAAkB,GACrBE,EAAkBxI,IAAe,SAAUhG,GAC1C,OAAO9O,EAAQ/O,KAAMisB,EAAcpO,IAAU,CAC9C,GAAGsO,GAAkB,GACrBnB,EAAW,CAAE,SAAUnN,EAAMJ,EAAS3P,GAMrC,IAAItO,GAAS0sB,IAAqBpe,GAAO2P,GAAW0D,MACjD8K,EAAexO,GAAU/F,SAC1B0U,EAAcvO,EAAMJ,EAAS3P,GAC7Bue,EAAiBxO,EAAMJ,EAAS3P,IAKlC,OADAme,EAAe,KACRzsB,CACR,GAEOzE,EAAIyjB,EAAKzjB,IAChB,GAAOud,EAAU4I,EAAK8F,SAAUoD,EAAQrvB,GAAI4I,MAC3CqnB,EAAW,CAAEnH,GAAekH,GAAgBC,GAAY1S,QAClD,CAIN,IAHAA,EAAU4I,EAAK7Y,OAAQ+hB,EAAQrvB,GAAI4I,MAAOxG,MAAO,KAAMitB,EAAQrvB,GAAI4Q,UAGrDH,GAAY,CAIzB,IADArP,IAAMpB,EACEoB,EAAIqiB,IACN0C,EAAK8F,SAAUoD,EAAQjuB,GAAIwH,MADhBxH,KAKjB,OAAOivB,GACNrwB,EAAI,GAAKgwB,GAAgBC,GACzBjwB,EAAI,GAAK+pB,GAGRsF,EAAOjsB,MAAO,EAAGpD,EAAI,GACnByhB,OAAQ,CAAE5a,MAAgC,MAAzBwoB,EAAQrvB,EAAI,GAAI4I,KAAe,IAAM,MACvD8L,QAAS6Q,EAAU,MACrBhI,EACAvd,EAAIoB,GAAK6vB,GAAmB5B,EAAOjsB,MAAOpD,EAAGoB,IAC7CA,EAAIqiB,GAAOwN,GAAqB5B,EAASA,EAAOjsB,MAAOhC,IACvDA,EAAIqiB,GAAOsG,GAAYsF,GAEzB,CACAY,EAASntB,KAAMya,EAChB,CAGD,OAAOyS,GAAgBC,EACxB,CAgIA,SAASrC,GAASrlB,EAAUzH,GAC3B,IAAId,EACHuxB,EAAc,GACdC,EAAkB,GAClBhC,EAAS3I,EAAete,EAAW,KAEpC,IAAMinB,EAAS,CAOd,IAJM1uB,IACLA,EAAQgpB,GAAUvhB,IAEnBvI,EAAIc,EAAMT,OACFL,MACPwvB,EAASyB,GAAmBnwB,EAAOd,KACtByQ,GACZ8gB,EAAYzuB,KAAM0sB,GAElBgC,EAAgB1uB,KAAM0sB,GAKxBA,EAAS3I,EAAete,EArJ1B,SAAmCipB,EAAiBD,GACnD,IAAIE,EAAQF,EAAYlxB,OAAS,EAChCqxB,EAAYF,EAAgBnxB,OAAS,EACrCsxB,EAAe,SAAUxI,EAAMzG,EAAS3P,EAAKoN,EAASyR,GACrD,IAAI9O,EAAM1hB,EAAGmc,EACZsU,EAAe,EACf7xB,EAAI,IACJ6tB,EAAY1E,GAAQ,GACpB2I,EAAa,GACbC,EAAgB3L,EAGhBnD,EAAQkG,GAAQuI,GAAavL,EAAK+C,KAAKtB,IAAK,IAAKgK,GAGjDI,EAAkBvL,GAA4B,MAAjBsL,EAAwB,EAAIxuB,KAAKwgB,UAAY,GAC1EN,EAAMR,EAAM5iB,OAeb,IAbKuxB,IAMJxL,EAAmB1D,GAAWxa,GAAYwa,GAAWkP,GAO9C5xB,IAAMyjB,GAAgC,OAAvBX,EAAOG,EAAOjjB,IAAeA,IAAM,CACzD,GAAK0xB,GAAa5O,EAAO,CAWxB,IAVA1hB,EAAI,EAMEshB,GAAWI,EAAKgC,eAAiB5c,IACtC0gB,GAAa9F,GACb/P,GAAOwT,GAEEhJ,EAAUiU,EAAiBpwB,MACpC,GAAKmc,EAASuF,EAAMJ,GAAWxa,EAAU6K,GAAQ,CAChDjQ,EAAKmC,KAAMkb,EAAS2C,GACpB,KACD,CAEI8O,IACJnL,EAAUuL,EAEZ,CAGKP,KAGG3O,GAAQvF,GAAWuF,IACzB+O,IAII1I,GACJ0E,EAAU/qB,KAAMggB,GAGnB,CAaA,GATA+O,GAAgB7xB,EASXyxB,GAASzxB,IAAM6xB,EAAe,CAElC,IADAzwB,EAAI,EACMmc,EAAUgU,EAAanwB,MAChCmc,EAASsQ,EAAWiE,EAAYpP,EAAS3P,GAG1C,GAAKoW,EAAO,CAGX,GAAK0I,EAAe,EACnB,KAAQ7xB,KACC6tB,EAAW7tB,IAAO8xB,EAAY9xB,KACrC8xB,EAAY9xB,GAAMwc,EAAIvX,KAAMkb,IAM/B2R,EAAa5B,GAAU4B,EACxB,CAGAhvB,EAAKV,MAAO+d,EAAS2R,GAGhBF,IAAczI,GAAQ2I,EAAWzxB,OAAS,GAC5CwxB,EAAeN,EAAYlxB,OAAW,GAExC0X,EAAO8T,WAAY1L,EAErB,CAQA,OALKyR,IACJnL,EAAUuL,EACV5L,EAAmB2L,GAGblE,CACR,EAED,OAAO4D,EACNpH,GAAcsH,GACdA,CACF,CA0BGM,CAA0BT,EAAiBD,IAG5C/B,EAAOjnB,SAAWA,CACnB,CACA,OAAOinB,CACR,CAWA,SAASvF,GAAQ1hB,EAAUma,EAASvC,EAASgJ,GAC5C,IAAInpB,EAAGqvB,EAAQ7d,EAAO5I,EAAMsgB,EAC3BgJ,EAA+B,oBAAb3pB,GAA2BA,EAC7CzH,GAASqoB,GAAQW,GAAYvhB,EAAW2pB,EAAS3pB,UAAYA,GAM9D,GAJA4X,EAAUA,GAAW,GAIC,IAAjBrf,EAAMT,OAAe,CAIzB,IADAgvB,EAASvuB,EAAO,GAAMA,EAAO,GAAIsC,MAAO,IAC5B/C,OAAS,GAAsC,QAA/BmR,EAAQ6d,EAAQ,IAAMzmB,MAC3B,IAArB8Z,EAAQ/F,UAAkB4J,GAAkBJ,EAAK8F,SAAUoD,EAAQ,GAAIzmB,MAAS,CAMjF,KAJA8Z,GAAYyD,EAAK+C,KAAKxB,GACrBlW,EAAMZ,QAAS,GAAI8D,QAAS4T,EAAWC,GACvC7F,IACI,IAAM,IAEV,OAAOvC,EAGI+R,IACXxP,EAAUA,EAAQnW,YAGnBhE,EAAWA,EAASnF,MAAOisB,EAAOzhB,QAAQ/G,MAAMxG,OACjD,CAIA,IADAL,EAAIynB,EAAUQ,aAAaxmB,KAAM8G,GAAa,EAAI8mB,EAAOhvB,OACjDL,MACPwR,EAAQ6d,EAAQrvB,IAGXmmB,EAAK8F,SAAYrjB,EAAO4I,EAAM5I,QAGnC,IAAOsgB,EAAO/C,EAAK+C,KAAMtgB,MAGjBugB,EAAOD,EACb1X,EAAMZ,QAAS,GAAI8D,QAAS4T,EAAWC,GACvCF,EAAS5mB,KAAM4tB,EAAQ,GAAIzmB,OAC1BghB,GAAalH,EAAQnW,aAAgBmW,IACjC,CAKL,GAFA2M,EAAOhT,OAAQrc,EAAG,KAClBuI,EAAW4gB,EAAK9oB,QAAU0pB,GAAYsF,IAGrC,OADAvsB,EAAKV,MAAO+d,EAASgJ,GACdhJ,EAGR,KACD,CAGH,CAWA,OAPE+R,GAAYtE,GAASrlB,EAAUzH,IAChCqoB,EACAzG,GACC6D,EACDpG,GACCuC,GAAW2F,EAAS5mB,KAAM8G,IAAcqhB,GAAalH,EAAQnW,aAAgBmW,GAExEvC,CACR,CAtlBAqN,GAAWrqB,UAAYgjB,EAAKgM,QAAUhM,EAAKe,QAC3Cf,EAAKqH,WAAa,IAAIA,GA2lBtB1L,EAAQiK,WAAatb,EAAQyK,MAAO,IAAKwC,KAAMqJ,GAAYzlB,KAAM,MAASmP,EAG1EmY,KAIA9G,EAAQ4J,aAAepB,IAAQ,SAAU5U,GAGxC,OAA4E,EAArEA,EAAGgQ,wBAAyBxd,EAASmE,cAAe,YAC5D,IAEA0L,EAAOmR,KAAOA,EAGdnR,EAAO4T,KAAM,KAAQ5T,EAAO4T,KAAKzE,QACjCnP,EAAOqa,OAASra,EAAO8T,WAIvB3C,EAAK0E,QAAUA,GACf1E,EAAKe,OAASA,GACdf,EAAKN,YAAcA,GACnBM,EAAKY,SAAWA,GAEhBZ,EAAKV,OAASzQ,EAAOgO,eACrBmD,EAAKmJ,QAAUta,EAAOlF,KACtBqW,EAAKoJ,MAAQva,EAAO2M,SACpBwE,EAAKqJ,UAAYxa,EAAO4T,KACxBzC,EAAKpH,QAAU/J,EAAO+J,QACtBoH,EAAK2C,WAAa9T,EAAO8T,UAIvB,CAviEF,GA0iEA,IAAI9C,EAAM,SAAUjG,EAAMiG,EAAKyJ,GAI9B,IAHA,IAAI9E,EAAU,GACb+E,OAAqBpzB,IAAVmzB,GAEF1P,EAAOA,EAAMiG,KAA6B,IAAlBjG,EAAKnG,UACtC,GAAuB,IAAlBmG,EAAKnG,SAAiB,CAC1B,GAAK8V,GAAY1a,EAAQ+K,GAAO4P,GAAIF,GACnC,MAED9E,EAAQ5qB,KAAMggB,EACf,CAED,OAAO4K,CACR,EAGIiF,EAAW,SAAUjyB,EAAGoiB,GAG3B,IAFA,IAAI4K,EAAU,GAENhtB,EAAGA,EAAIA,EAAE+tB,YACI,IAAf/tB,EAAEic,UAAkBjc,IAAMoiB,GAC9B4K,EAAQ5qB,KAAMpC,GAIhB,OAAOgtB,CACR,EAGIkF,EAAgB7a,EAAO4T,KAAK7qB,MAAMmnB,aAElC4K,EAAa,kEAKjB,SAASC,EAAQ1d,EAAU2d,EAAWpF,GACrC,OAAKxQ,EAAY4V,GACThb,EAAOsD,KAAMjG,GAAU,SAAU0N,EAAM9iB,GAC7C,QAAS+yB,EAAU9tB,KAAM6d,EAAM9iB,EAAG8iB,KAAW6K,CAC9C,IAIIoF,EAAUpW,SACP5E,EAAOsD,KAAMjG,GAAU,SAAU0N,GACvC,OAASA,IAASiQ,IAAgBpF,CACnC,IAIyB,kBAAdoF,EACJhb,EAAOsD,KAAMjG,GAAU,SAAU0N,GACvC,OAAS9O,EAAQ/O,KAAM8tB,EAAWjQ,IAAU,IAAQ6K,CACrD,IAIM5V,EAAOzK,OAAQylB,EAAW3d,EAAUuY,EAC5C,CAEA5V,EAAOzK,OAAS,SAAUqe,EAAM1I,EAAO0K,GACtC,IAAI7K,EAAOG,EAAO,GAMlB,OAJK0K,IACJhC,EAAO,QAAUA,EAAO,KAGH,IAAjB1I,EAAM5iB,QAAkC,IAAlByiB,EAAKnG,SACxB5E,EAAOmR,KAAKrY,gBAAiBiS,EAAM6I,GAAS,CAAE7I,GAAS,GAGxD/K,EAAOmR,KAAKtY,QAAS+a,EAAM5T,EAAOsD,KAAM4H,GAAO,SAAUH,GAC/D,OAAyB,IAAlBA,EAAKnG,QACb,IACD,EAEA5E,EAAO9Y,GAAG4d,OAAQ,CACjBqM,KAAM,SAAU3gB,GACf,IAAIvI,EAAGyE,EACNgf,EAAMxgB,KAAK5C,OACXya,EAAO7X,KAER,GAAyB,kBAAbsF,EACX,OAAOtF,KAAK+f,UAAWjL,EAAQxP,GAAW+E,QAAQ,WACjD,IAAMtN,EAAI,EAAGA,EAAIyjB,EAAKzjB,IACrB,GAAK+X,EAAOyN,SAAU1K,EAAM9a,GAAKiD,MAChC,OAAO,CAGV,KAKD,IAFAwB,EAAMxB,KAAK+f,UAAW,IAEhBhjB,EAAI,EAAGA,EAAIyjB,EAAKzjB,IACrB+X,EAAOmR,KAAM3gB,EAAUuS,EAAM9a,GAAKyE,GAGnC,OAAOgf,EAAM,EAAI1L,EAAO8T,WAAYpnB,GAAQA,CAC7C,EACA6I,OAAQ,SAAU/E,GACjB,OAAOtF,KAAK+f,UAAW8P,EAAQ7vB,KAAMsF,GAAY,IAAI,GACtD,EACAolB,IAAK,SAAUplB,GACd,OAAOtF,KAAK+f,UAAW8P,EAAQ7vB,KAAMsF,GAAY,IAAI,GACtD,EACAmqB,GAAI,SAAUnqB,GACb,QAASuqB,EACR7vB,KAIoB,kBAAbsF,GAAyBqqB,EAAcnxB,KAAM8G,GACnDwP,EAAQxP,GACRA,GAAY,IACb,GACClI,MACH,IAQD,IAAI2yB,EAMH5K,EAAa,uCAENrQ,EAAO9Y,GAAG0jB,KAAO,SAAUpa,EAAUma,EAASpa,GACpD,IAAIxH,EAAOgiB,EAGX,IAAMva,EACL,OAAOtF,KAQR,GAHAqF,EAAOA,GAAQ0qB,EAGU,kBAAbzqB,EAAwB,CAanC,KAPCzH,EALsB,MAAlByH,EAAU,IACsB,MAApCA,EAAUA,EAASlI,OAAS,IAC5BkI,EAASlI,QAAU,EAGX,CAAE,KAAMkI,EAAU,MAGlB6f,EAAWoB,KAAMjhB,MAIVzH,EAAO,IAAQ4hB,EA6CxB,OAAMA,GAAWA,EAAQK,QACtBL,GAAWpa,GAAO4gB,KAAM3gB,GAK1BtF,KAAK0X,YAAa+H,GAAUwG,KAAM3gB,GAhDzC,GAAKzH,EAAO,GAAM,CAYjB,GAXA4hB,EAAUA,aAAmB3K,EAAS2K,EAAS,GAAMA,EAIrD3K,EAAOmL,MAAOjgB,KAAM8U,EAAOkb,UAC1BnyB,EAAO,GACP4hB,GAAWA,EAAQ/F,SAAW+F,EAAQoC,eAAiBpC,EAAUxa,GACjE,IAII2qB,EAAWpxB,KAAMX,EAAO,KAASiX,EAAO+L,cAAepB,GAC3D,IAAM5hB,KAAS4hB,EAGTvF,EAAYla,KAAMnC,IACtBmC,KAAMnC,GAAS4hB,EAAS5hB,IAIxBmC,KAAKgX,KAAMnZ,EAAO4hB,EAAS5hB,IAK9B,OAAOmC,IAGR,CASC,OARA6f,EAAO5a,EAASuhB,eAAgB3oB,EAAO,OAKtCmC,KAAM,GAAM6f,EACZ7f,KAAK5C,OAAS,GAER4C,IAcV,CAAO,OAAKsF,EAASoU,UACpB1Z,KAAM,GAAMsF,EACZtF,KAAK5C,OAAS,EACP4C,MAIIka,EAAY5U,QACDlJ,IAAfiJ,EAAK4qB,MACX5qB,EAAK4qB,MAAO3qB,GAGZA,EAAUwP,GAGLA,EAAO0M,UAAWlc,EAAUtF,KACpC,GAGIE,UAAY4U,EAAO9Y,GAGxB+zB,EAAajb,EAAQ7P,GAGrB,IAAIirB,EAAe,iCAGlBC,EAAmB,CAClBC,UAAU,EACVjvB,UAAU,EACVsa,MAAM,EACND,MAAM,GAoFR,SAAS6U,EAASC,EAAKxK,GACtB,MAAUwK,EAAMA,EAAKxK,KAA4B,IAAjBwK,EAAI5W,WACpC,OAAO4W,CACR,CApFAxb,EAAO9Y,GAAG4d,OAAQ,CACjBiR,IAAK,SAAUjqB,GACd,IAAI2vB,EAAUzb,EAAQlU,EAAQZ,MAC7BwwB,EAAID,EAAQnzB,OAEb,OAAO4C,KAAKqK,QAAQ,WAEnB,IADA,IAAItN,EAAI,EACAA,EAAIyzB,EAAGzzB,IACd,GAAK+X,EAAOyN,SAAUviB,KAAMuwB,EAASxzB,IACpC,OAAO,CAGV,GACD,EAEAyf,QAAS,SAAU8S,EAAW7P,GAC7B,IAAI6Q,EACHvzB,EAAI,EACJyzB,EAAIxwB,KAAK5C,OACTqtB,EAAU,GACV8F,EAA+B,kBAAdjB,GAA0Bxa,EAAQwa,GAGpD,IAAMK,EAAcnxB,KAAM8wB,GACzB,KAAQvyB,EAAIyzB,EAAGzzB,IACd,IAAMuzB,EAAMtwB,KAAMjD,GAAKuzB,GAAOA,IAAQ7Q,EAAS6Q,EAAMA,EAAIhnB,WAGxD,GAAKgnB,EAAI5W,SAAW,KAAQ6W,EAC3BA,EAAQtU,MAAOqU,IAAS,EAGP,IAAjBA,EAAI5W,UACH5E,EAAOmR,KAAKrY,gBAAiB0iB,EAAKhB,IAAgB,CAEnD7E,EAAQ5qB,KAAMywB,GACd,KACD,CAKH,OAAOtwB,KAAK+f,UAAW0K,EAAQrtB,OAAS,EAAI0X,EAAO8T,WAAY6B,GAAYA,EAC5E,EAGAxO,MAAO,SAAU4D,GAGhB,OAAMA,EAKe,kBAATA,EACJ9O,EAAQ/O,KAAM8S,EAAQ+K,GAAQ7f,KAAM,IAIrC+Q,EAAQ/O,KAAMhC,KAGpB6f,EAAKC,OAASD,EAAM,GAAMA,GAZjB7f,KAAM,IAAOA,KAAM,GAAIsJ,WAAetJ,KAAKX,QAAQoxB,UAAUrzB,QAAU,CAclF,EAEAua,IAAK,SAAUrS,EAAUma,GACxB,OAAOzf,KAAK+f,UACXjL,EAAO8T,WACN9T,EAAOmL,MAAOjgB,KAAK8H,MAAOgN,EAAQxP,EAAUma,KAG/C,EAEAiR,QAAS,SAAUprB,GAClB,OAAOtF,KAAK2X,IAAiB,MAAZrS,EAChBtF,KAAKkgB,WAAalgB,KAAKkgB,WAAW7V,OAAQ/E,GAE5C,IAQDwP,EAAO2E,KAAM,CACZwQ,OAAQ,SAAUpK,GACjB,IAAIoK,EAASpK,EAAKvW,WAClB,OAAO2gB,GAA8B,KAApBA,EAAOvQ,SAAkBuQ,EAAS,IACpD,EACA0G,QAAS,SAAU9Q,GAClB,OAAOiG,EAAKjG,EAAM,aACnB,EACA+Q,aAAc,SAAU/Q,EAAMuC,EAAImN,GACjC,OAAOzJ,EAAKjG,EAAM,aAAc0P,EACjC,EACA9T,KAAM,SAAUoE,GACf,OAAOwQ,EAASxQ,EAAM,cACvB,EACArE,KAAM,SAAUqE,GACf,OAAOwQ,EAASxQ,EAAM,kBACvB,EACAgR,QAAS,SAAUhR,GAClB,OAAOiG,EAAKjG,EAAM,cACnB,EACA4Q,QAAS,SAAU5Q,GAClB,OAAOiG,EAAKjG,EAAM,kBACnB,EACAiR,UAAW,SAAUjR,EAAMuC,EAAImN,GAC9B,OAAOzJ,EAAKjG,EAAM,cAAe0P,EAClC,EACAwB,UAAW,SAAUlR,EAAMuC,EAAImN,GAC9B,OAAOzJ,EAAKjG,EAAM,kBAAmB0P,EACtC,EACAG,SAAU,SAAU7P,GACnB,OAAO6P,GAAY7P,EAAKvW,YAAc,CAAC,GAAI8gB,WAAYvK,EACxD,EACAuQ,SAAU,SAAUvQ,GACnB,OAAO6P,EAAU7P,EAAKuK,WACvB,EACAjpB,SAAU,SAAU0e,GACnB,OAA6B,MAAxBA,EAAKmR,iBAKT5S,EAAUyB,EAAKmR,iBAERnR,EAAKmR,iBAMRpR,EAAUC,EAAM,cACpBA,EAAOA,EAAK9d,SAAW8d,GAGjB/K,EAAOmL,MAAO,GAAIJ,EAAKkG,YAC/B,IACE,SAAUphB,EAAM3I,GAClB8Y,EAAO9Y,GAAI2I,GAAS,SAAU4qB,EAAOjqB,GACpC,IAAImlB,EAAU3V,EAAOvC,IAAKvS,KAAMhE,EAAIuzB,GAuBpC,MArB0B,UAArB5qB,EAAKxE,OAAQ,KACjBmF,EAAWiqB,GAGPjqB,GAAgC,kBAAbA,IACvBmlB,EAAU3V,EAAOzK,OAAQ/E,EAAUmlB,IAG/BzqB,KAAK5C,OAAS,IAGZ+yB,EAAkBxrB,IACvBmQ,EAAO8T,WAAY6B,GAIfyF,EAAa1xB,KAAMmG,IACvB8lB,EAAQwG,WAIHjxB,KAAK+f,UAAW0K,EACxB,CACD,IACA,IAAIyG,EAAgB,oBAsOpB,SAASC,EAAUC,GAClB,OAAOA,CACR,CACA,SAASC,EAASC,GACjB,MAAMA,CACP,CAEA,SAASC,EAAY3tB,EAAO4tB,EAASC,EAAQC,GAC5C,IAAI1d,EAEJ,IAGMpQ,GAASsW,EAAclG,EAASpQ,EAAM+tB,SAC1C3d,EAAOhS,KAAM4B,GAAQsN,KAAMsgB,GAAUI,KAAMH,GAGhC7tB,GAASsW,EAAclG,EAASpQ,EAAMuW,MACjDnG,EAAOhS,KAAM4B,EAAO4tB,EAASC,GAQ7BD,EAAQryB,WAAO/C,EAAW,CAAEwH,GAAQzD,MAAOuxB,GAM7C,CAAE,MAAQ9tB,GAIT6tB,EAAOtyB,WAAO/C,EAAW,CAAEwH,GAC5B,CACD,CAzOAkR,EAAO+c,UAAY,SAAU3hB,GAI5BA,EAA6B,kBAAZA,EAlClB,SAAwBA,GACvB,IAAIxH,EAAS,CAAC,EAId,OAHAoM,EAAO2E,KAAMvJ,EAAQrS,MAAOqzB,IAAmB,IAAI,SAAUY,EAAGC,GAC/DrpB,EAAQqpB,IAAS,CAClB,IACOrpB,CACR,CA6BEspB,CAAe9hB,GACf4E,EAAO8E,OAAQ,CAAC,EAAG1J,GAEpB,IACC+hB,EAGAC,EAGAC,EAGAC,EAGAC,EAAO,GAGPC,EAAQ,GAGRC,GAAe,EAGf5jB,EAAO,WAQN,IALAyjB,EAASA,GAAUliB,EAAQsiB,KAI3BL,EAAQF,GAAS,EACTK,EAAMl1B,OAAQm1B,GAAe,EAEpC,IADAL,EAASI,EAAM3nB,UACL4nB,EAAcF,EAAKj1B,SAGmC,IAA1Di1B,EAAME,GAAcpzB,MAAO+yB,EAAQ,GAAKA,EAAQ,KACpDhiB,EAAQuiB,cAGRF,EAAcF,EAAKj1B,OACnB80B,GAAS,GAMNhiB,EAAQgiB,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIHC,EADIH,EACG,GAIA,GAGV,EAGAra,EAAO,CAGNF,IAAK,WA2BJ,OA1BK0a,IAGCH,IAAWD,IACfM,EAAcF,EAAKj1B,OAAS,EAC5Bk1B,EAAMzyB,KAAMqyB,IAGb,SAAWva,EAAKpD,GACfO,EAAO2E,KAAMlF,GAAM,SAAUud,EAAG9P,GAC1B9H,EAAY8H,GACV9R,EAAQif,QAAWtX,EAAKgT,IAAK7I,IAClCqQ,EAAKxyB,KAAMmiB,GAEDA,GAAOA,EAAI5kB,QAA4B,WAAlBkiB,EAAQ0C,IAGxCrK,EAAKqK,EAEP,GACC,CAZF,CAYKnc,WAEAqsB,IAAWD,GACftjB,KAGK3O,IACR,EAGA+X,OAAQ,WAYP,OAXAjD,EAAO2E,KAAM5T,WAAW,SAAUisB,EAAG9P,GAEpC,IADA,IAAI/F,GACMA,EAAQnH,EAAOqE,QAAS6I,EAAKqQ,EAAMpW,KAAa,GACzDoW,EAAKjZ,OAAQ6C,EAAO,GAGfA,GAASsW,GACbA,GAGH,IACOvyB,IACR,EAIA6qB,IAAK,SAAU7uB,GACd,OAAOA,EACN8Y,EAAOqE,QAASnd,EAAIq2B,IAAU,EAC9BA,EAAKj1B,OAAS,CAChB,EAGAmuB,MAAO,WAIN,OAHK8G,IACJA,EAAO,IAEDryB,IACR,EAKAyL,QAAS,WAGR,OAFA2mB,EAASE,EAAQ,GACjBD,EAAOH,EAAS,GACTlyB,IACR,EACA8F,SAAU,WACT,OAAQusB,CACT,EAKAK,KAAM,WAKL,OAJAN,EAASE,EAAQ,GACXJ,GAAWD,IAChBI,EAAOH,EAAS,IAEVlyB,IACR,EACAoyB,OAAQ,WACP,QAASA,CACV,EAGAO,SAAU,SAAUlT,EAASlL,GAS5B,OARM6d,IAEL7d,EAAO,CAAEkL,GADTlL,EAAOA,GAAQ,IACQpU,MAAQoU,EAAKpU,QAAUoU,GAC9C+d,EAAMzyB,KAAM0U,GACN0d,GACLtjB,KAGK3O,IACR,EAGA2O,KAAM,WAEL,OADAkJ,EAAK8a,SAAU3yB,KAAM6F,WACd7F,IACR,EAGAmyB,MAAO,WACN,QAASA,CACV,GAGF,OAAOta,CACR,EA2CA/C,EAAO8E,OAAQ,CAEdgZ,SAAU,SAAUC,GACnB,IAAIC,EAAS,CAIX,CAAE,SAAU,WAAYhe,EAAO+c,UAAW,UACzC/c,EAAO+c,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQ/c,EAAO+c,UAAW,eACtC/c,EAAO+c,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQ/c,EAAO+c,UAAW,eACrC/c,EAAO+c,UAAW,eAAiB,EAAG,aAExCn0B,EAAQ,UACRi0B,EAAU,CACTj0B,MAAO,WACN,OAAOA,CACR,EACAq1B,OAAQ,WAEP,OADAC,EAAS9hB,KAAMrL,WAAY+rB,KAAM/rB,WAC1B7F,IACR,EACA,MAAS,SAAUhE,GAClB,OAAO21B,EAAQxX,KAAM,KAAMne,EAC5B,EAGAi3B,KAAM,WACL,IAAIC,EAAMrtB,UAEV,OAAOiP,EAAO8d,UAAU,SAAUO,GACjCre,EAAO2E,KAAMqZ,GAAQ,SAAU1Q,EAAIgR,GAGlC,IAAIp3B,EAAKke,EAAYgZ,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,KAAO,WACvB,IAAIC,EAAWr3B,GAAMA,EAAGmD,MAAOa,KAAM6F,WAChCwtB,GAAYnZ,EAAYmZ,EAAS1B,SACrC0B,EAAS1B,UACPjoB,SAAUypB,EAAS3qB,QACnB0I,KAAMiiB,EAAS3B,SACfI,KAAMuB,EAAS1B,QAEjB0B,EAAUC,EAAO,GAAM,QACtBpzB,KACAhE,EAAK,CAAEq3B,GAAaxtB,UAGvB,GACD,IACAqtB,EAAM,IACP,IAAIvB,SACL,EACAxX,KAAM,SAAUmZ,EAAaC,EAAYC,GACxC,IAAIC,EAAW,EACf,SAASjC,EAASkC,EAAOV,EAAUzjB,EAASokB,GAC3C,OAAO,WACN,IAAIC,EAAO5zB,KACVuU,EAAO1O,UACPguB,EAAa,WACZ,IAAIR,EAAUlZ,EAKd,KAAKuZ,EAAQD,GAAb,CAQA,IAJAJ,EAAW9jB,EAAQpQ,MAAOy0B,EAAMrf,MAIdye,EAASrB,UAC1B,MAAM,IAAIvvB,UAAW,4BAOtB+X,EAAOkZ,IAKgB,kBAAbA,GACY,oBAAbA,IACRA,EAASlZ,KAGLD,EAAYC,GAGXwZ,EACJxZ,EAAKnY,KACJqxB,EACA7B,EAASiC,EAAUT,EAAU7B,EAAUwC,GACvCnC,EAASiC,EAAUT,EAAU3B,EAASsC,KAOvCF,IAEAtZ,EAAKnY,KACJqxB,EACA7B,EAASiC,EAAUT,EAAU7B,EAAUwC,GACvCnC,EAASiC,EAAUT,EAAU3B,EAASsC,GACtCnC,EAASiC,EAAUT,EAAU7B,EAC5B6B,EAASc,eASPvkB,IAAY4hB,IAChByC,OAAOx3B,EACPmY,EAAO,CAAE8e,KAKRM,GAAWX,EAASe,aAAeH,EAAMrf,GA7D5C,CA+DD,EAGAwF,EAAU4Z,EACTE,EACA,WACC,IACCA,GACD,CAAE,MAAQ1kB,GAEJ2F,EAAO8d,SAASoB,eACpBlf,EAAO8d,SAASoB,cAAe7kB,EAC9B4K,EAAQxR,OAMLmrB,EAAQ,GAAKD,IAIZlkB,IAAY8hB,IAChBuC,OAAOx3B,EACPmY,EAAO,CAAEpF,IAGV6jB,EAASiB,WAAYL,EAAMrf,GAE7B,CACD,EAMGmf,EACJ3Z,KAKKjF,EAAO8d,SAASsB,aACpBna,EAAQxR,MAAQuM,EAAO8d,SAASsB,eAMrBpf,EAAO8d,SAASuB,eAC3Bpa,EAAQxR,MAAQuM,EAAO8d,SAASuB,gBAEjC9nB,EAAOE,WAAYwN,GAErB,CACD,CAEA,OAAOjF,EAAO8d,UAAU,SAAUO,GAGjCL,EAAQ,GAAK,GAAInb,IAChB6Z,EACC,EACA2B,EACAjZ,EAAYsZ,GACXA,EACArC,EACDgC,EAASW,aAKXhB,EAAQ,GAAK,GAAInb,IAChB6Z,EACC,EACA2B,EACAjZ,EAAYoZ,GACXA,EACAnC,IAKH2B,EAAQ,GAAK,GAAInb,IAChB6Z,EACC,EACA2B,EACAjZ,EAAYqZ,GACXA,EACAlC,GAGJ,IAAIM,SACL,EAIAA,QAAS,SAAU3iB,GAClB,OAAc,MAAPA,EAAc8F,EAAO8E,OAAQ5K,EAAK2iB,GAAYA,CACtD,GAEDqB,EAAW,CAAC,EAkEb,OA/DAle,EAAO2E,KAAMqZ,GAAQ,SAAU/1B,EAAGq2B,GACjC,IAAIf,EAAOe,EAAO,GACjBgB,EAAchB,EAAO,GAKtBzB,EAASyB,EAAO,IAAQf,EAAK1a,IAGxByc,GACJ/B,EAAK1a,KACJ,WAICja,EAAQ02B,CACT,GAIAtB,EAAQ,EAAI/1B,GAAK,GAAI0O,QAIrBqnB,EAAQ,EAAI/1B,GAAK,GAAI0O,QAGrBqnB,EAAQ,GAAK,GAAIJ,KAGjBI,EAAQ,GAAK,GAAIJ,MAOnBL,EAAK1a,IAAKyb,EAAO,GAAIzkB,MAKrBqkB,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAUpzB,OAASgzB,OAAW52B,EAAY4D,KAAM6F,WAChE7F,IACR,EAKAgzB,EAAUI,EAAO,GAAM,QAAWf,EAAKM,QACxC,IAGAhB,EAAQA,QAASqB,GAGZH,GACJA,EAAK7wB,KAAMgxB,EAAUA,GAIfA,CACR,EAGA5Y,KAAM,SAAUia,GACf,IAGCC,EAAYzuB,UAAUzI,OAGtBL,EAAIu3B,EAGJC,EAAkBnuB,MAAOrJ,GACzBy3B,EAAgBr0B,EAAM6B,KAAM6D,WAG5B4uB,EAAU3f,EAAO8d,WAGjB8B,EAAa,SAAU33B,GACtB,OAAO,SAAU6G,GAChB2wB,EAAiBx3B,GAAMiD,KACvBw0B,EAAez3B,GAAM8I,UAAUzI,OAAS,EAAI+C,EAAM6B,KAAM6D,WAAcjC,IAC5D0wB,GACTG,EAAQV,YAAaQ,EAAiBC,EAExC,CACD,EAGD,GAAKF,GAAa,IACjB/C,EAAY8C,EAAaI,EAAQvjB,KAAMwjB,EAAY33B,IAAMy0B,QAASiD,EAAQhD,QACxE6C,GAGuB,YAApBG,EAAQ/2B,SACZwc,EAAYsa,EAAez3B,IAAOy3B,EAAez3B,GAAIod,OAErD,OAAOsa,EAAQta,OAKjB,KAAQpd,KACPw0B,EAAYiD,EAAez3B,GAAK23B,EAAY33B,GAAK03B,EAAQhD,QAG1D,OAAOgD,EAAQ9C,SAChB,IAMD,IAAIgD,EAAc,yDAKlB7f,EAAO8d,SAASoB,cAAgB,SAAUzrB,EAAOqsB,GAI3CvoB,EAAOwoB,SAAWxoB,EAAOwoB,QAAQC,MAAQvsB,GAASosB,EAAYn2B,KAAM+J,EAAM5D,OAC9E0H,EAAOwoB,QAAQC,KAAM,8BAAgCvsB,EAAMsK,QAC1DtK,EAAMwsB,MAAOH,EAEhB,EAKA9f,EAAOkgB,eAAiB,SAAUzsB,GACjC8D,EAAOE,YAAY,WAClB,MAAMhE,CACP,GACD,EAMA,IAAI0sB,EAAYngB,EAAO8d,WAkDvB,SAASsC,IACRjwB,EAAS2O,oBAAqB,mBAAoBshB,GAClD7oB,EAAOuH,oBAAqB,OAAQshB,GACpCpgB,EAAOmb,OACR,CApDAnb,EAAO9Y,GAAGi0B,MAAQ,SAAUj0B,GAY3B,OAVAi5B,EACE9a,KAAMne,GAKNm5B,OAAO,SAAU5sB,GACjBuM,EAAOkgB,eAAgBzsB,EACxB,IAEMvI,IACR,EAEA8U,EAAO8E,OAAQ,CAGdmH,SAAS,EAITqU,UAAW,EAGXnF,MAAO,SAAUoF,KAGF,IAATA,IAAkBvgB,EAAOsgB,UAAYtgB,EAAOiM,WAKjDjM,EAAOiM,SAAU,GAGH,IAATsU,KAAmBvgB,EAAOsgB,UAAY,GAK3CH,EAAUlB,YAAa9uB,EAAU,CAAE6P,IACpC,IAGDA,EAAOmb,MAAM9V,KAAO8a,EAAU9a,KAaD,aAAxBlV,EAASyL,YACa,YAAxBzL,EAASyL,aAA6BzL,EAASsc,gBAAgB+T,SAGjEjpB,EAAOE,WAAYuI,EAAOmb,QAK1BhrB,EAASd,iBAAkB,mBAAoB+wB,GAG/C7oB,EAAOlI,iBAAkB,OAAQ+wB,IAQlC,IAAIK,GAAS,SAAUvV,EAAOhkB,EAAI8G,EAAKc,EAAO4xB,EAAWC,EAAUl0B,GAClE,IAAIxE,EAAI,EACPyjB,EAAMR,EAAM5iB,OACZs4B,EAAc,MAAP5yB,EAGR,GAAuB,WAAlBwc,EAAQxc,GAEZ,IAAM/F,KADNy4B,GAAY,EACD1yB,EACVyyB,GAAQvV,EAAOhkB,EAAIe,EAAG+F,EAAK/F,IAAK,EAAM04B,EAAUl0B,QAI3C,QAAenF,IAAVwH,IACX4xB,GAAY,EAENtb,EAAYtW,KACjBrC,GAAM,GAGFm0B,IAGCn0B,GACJvF,EAAGgG,KAAMge,EAAOpc,GAChB5H,EAAK,OAIL05B,EAAO15B,EACPA,EAAK,SAAU6jB,EAAM/W,EAAMlF,GAC1B,OAAO8xB,EAAK1zB,KAAM8S,EAAQ+K,GAAQjc,EACnC,IAIG5H,GACJ,KAAQe,EAAIyjB,EAAKzjB,IAChBf,EACCgkB,EAAOjjB,GAAK+F,EAAKvB,EAChBqC,EACAA,EAAM5B,KAAMge,EAAOjjB,GAAKA,EAAGf,EAAIgkB,EAAOjjB,GAAK+F,KAMhD,OAAK0yB,EACGxV,EAIH0V,EACG15B,EAAGgG,KAAMge,GAGVQ,EAAMxkB,EAAIgkB,EAAO,GAAKld,GAAQ2yB,CACtC,EAIIE,GAAY,QACfC,GAAa,YAGd,SAASC,GAAYC,EAAMC,GAC1B,OAAOA,EAAOjlB,aACf,CAKA,SAASklB,GAAWC,GACnB,OAAOA,EAAOxkB,QAASkkB,GAAW,OAAQlkB,QAASmkB,GAAYC,GAChE,CACA,IAAIK,GAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAMzc,UAAqC,IAAnByc,EAAMzc,YAAsByc,EAAMzc,QAClE,EAKA,SAAS0c,KACRp2B,KAAKwN,QAAUsH,EAAOtH,QAAU4oB,GAAKC,KACtC,CAEAD,GAAKC,IAAM,EAEXD,GAAKl2B,UAAY,CAEhBgnB,MAAO,SAAUiP,GAGhB,IAAIvyB,EAAQuyB,EAAOn2B,KAAKwN,SA4BxB,OAzBM5J,IACLA,EAAQ,CAAC,EAKJsyB,GAAYC,KAIXA,EAAMzc,SACVyc,EAAOn2B,KAAKwN,SAAY5J,EAMxBhB,OAAOC,eAAgBszB,EAAOn2B,KAAKwN,QAAS,CAC3C5J,MAAOA,EACPlB,cAAc,MAMXkB,CACR,EACAnE,IAAK,SAAU02B,EAAOlnB,EAAMrL,GAC3B,IAAI0yB,EACHpP,EAAQlnB,KAAKknB,MAAOiP,GAIrB,GAAqB,kBAATlnB,EACXiY,EAAO8O,GAAW/mB,IAAWrL,OAM7B,IAAM0yB,KAAQrnB,EACbiY,EAAO8O,GAAWM,IAAWrnB,EAAMqnB,GAGrC,OAAOpP,CACR,EACApf,IAAK,SAAUquB,EAAOrzB,GACrB,YAAe1G,IAAR0G,EACN9C,KAAKknB,MAAOiP,GAGZA,EAAOn2B,KAAKwN,UAAa2oB,EAAOn2B,KAAKwN,SAAWwoB,GAAWlzB,GAC7D,EACAyyB,OAAQ,SAAUY,EAAOrzB,EAAKc,GAa7B,YAAaxH,IAAR0G,GACCA,GAAsB,kBAARA,QAAgC1G,IAAVwH,EAElC5D,KAAK8H,IAAKquB,EAAOrzB,IASzB9C,KAAKP,IAAK02B,EAAOrzB,EAAKc,QAILxH,IAAVwH,EAAsBA,EAAQd,EACtC,EACAiV,OAAQ,SAAUoe,EAAOrzB,GACxB,IAAI/F,EACHmqB,EAAQiP,EAAOn2B,KAAKwN,SAErB,QAAepR,IAAV8qB,EAAL,CAIA,QAAa9qB,IAAR0G,EAAoB,CAkBxB/F,GAXC+F,EAJIsD,MAAMC,QAASvD,GAIbA,EAAIyP,IAAKyjB,KAEflzB,EAAMkzB,GAAWlzB,MAIJokB,EACZ,CAAEpkB,GACAA,EAAIjF,MAAOqzB,IAAmB,IAG1B9zB,OAER,KAAQL,YACAmqB,EAAOpkB,EAAK/F,GAErB,OAGaX,IAAR0G,GAAqBgS,EAAOsM,cAAe8F,MAM1CiP,EAAMzc,SACVyc,EAAOn2B,KAAKwN,cAAYpR,SAEjB+5B,EAAOn2B,KAAKwN,SArCrB,CAwCD,EACA+oB,QAAS,SAAUJ,GAClB,IAAIjP,EAAQiP,EAAOn2B,KAAKwN,SACxB,YAAiBpR,IAAV8qB,IAAwBpS,EAAOsM,cAAe8F,EACtD,GAED,IAAIsP,GAAW,IAAIJ,GAEfK,GAAW,IAAIL,GAcfM,GAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAU/W,EAAM/c,EAAKmM,GAC7B,IAAItK,EAIJ,QAAcvI,IAAT6S,GAAwC,IAAlB4Q,EAAKnG,SAI/B,GAHA/U,EAAO,QAAU7B,EAAI2O,QAASklB,GAAY,OAAQpc,cAG7B,kBAFrBtL,EAAO4Q,EAAK1a,aAAcR,IAEM,CAC/B,IACCsK,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJynB,GAAOl4B,KAAMyQ,GACV3H,KAAKU,MAAOiH,GAGbA,EACR,CAaWhB,CAASgB,EACjB,CAAE,MAAQE,GAAK,CAGfsnB,GAASh3B,IAAKogB,EAAM/c,EAAKmM,EAC1B,MACCA,OAAO7S,EAGT,OAAO6S,CACR,CAEA6F,EAAO8E,OAAQ,CACd2c,QAAS,SAAU1W,GAClB,OAAO4W,GAASF,QAAS1W,IAAU2W,GAASD,QAAS1W,EACtD,EAEA5Q,KAAM,SAAU4Q,EAAMlb,EAAMsK,GAC3B,OAAOwnB,GAASlB,OAAQ1V,EAAMlb,EAAMsK,EACrC,EAEAyN,WAAY,SAAUmD,EAAMlb,GAC3B8xB,GAAS1e,OAAQ8H,EAAMlb,EACxB,EAIAkyB,MAAO,SAAUhX,EAAMlb,EAAMsK,GAC5B,OAAOunB,GAASjB,OAAQ1V,EAAMlb,EAAMsK,EACrC,EAEA6nB,YAAa,SAAUjX,EAAMlb,GAC5B6xB,GAASze,OAAQ8H,EAAMlb,EACxB,IAGDmQ,EAAO9Y,GAAG4d,OAAQ,CACjB3K,KAAM,SAAUnM,EAAKc,GACpB,IAAI7G,EAAG4H,EAAMsK,EACZ4Q,EAAO7f,KAAM,GACb+2B,EAAQlX,GAAQA,EAAKpZ,WAGtB,QAAarK,IAAR0G,EAAoB,CACxB,GAAK9C,KAAK5C,SACT6R,EAAOwnB,GAAS3uB,IAAK+X,GAEE,IAAlBA,EAAKnG,WAAmB8c,GAAS1uB,IAAK+X,EAAM,iBAAmB,CAEnE,IADA9iB,EAAIg6B,EAAM35B,OACFL,KAIFg6B,EAAOh6B,IAEsB,KADjC4H,EAAOoyB,EAAOh6B,GAAI4H,MACRoM,QAAS,WAClBpM,EAAOqxB,GAAWrxB,EAAKxE,MAAO,IAC9By2B,GAAU/W,EAAMlb,EAAMsK,EAAMtK,KAI/B6xB,GAAS/2B,IAAKogB,EAAM,gBAAgB,EACrC,CAGD,OAAO5Q,CACR,CAGA,MAAoB,kBAARnM,EACJ9C,KAAKyZ,MAAM,WACjBgd,GAASh3B,IAAKO,KAAM8C,EACrB,IAGMyyB,GAAQv1B,MAAM,SAAU4D,GAC9B,IAAIqL,EAOJ,GAAK4Q,QAAkBzjB,IAAVwH,EAKZ,YAAcxH,KADd6S,EAAOwnB,GAAS3uB,IAAK+X,EAAM/c,UAQb1G,KADd6S,EAAO2nB,GAAU/W,EAAM/c,IALfmM,OAWR,EAIDjP,KAAKyZ,MAAM,WAGVgd,GAASh3B,IAAKO,KAAM8C,EAAKc,EAC1B,GACD,GAAG,KAAMA,EAAOiC,UAAUzI,OAAS,EAAG,MAAM,EAC7C,EAEAsf,WAAY,SAAU5Z,GACrB,OAAO9C,KAAKyZ,MAAM,WACjBgd,GAAS1e,OAAQ/X,KAAM8C,EACxB,GACD,IAIDgS,EAAO8E,OAAQ,CACd0Y,MAAO,SAAUzS,EAAMla,EAAMsJ,GAC5B,IAAIqjB,EAEJ,GAAKzS,EAYJ,OAXAla,GAASA,GAAQ,MAAS,QAC1B2sB,EAAQkE,GAAS1uB,IAAK+X,EAAMla,GAGvBsJ,KACEqjB,GAASlsB,MAAMC,QAAS4I,GAC7BqjB,EAAQkE,GAASjB,OAAQ1V,EAAMla,EAAMmP,EAAO0M,UAAWvS,IAEvDqjB,EAAMzyB,KAAMoP,IAGPqjB,GAAS,EAElB,EAEA0E,QAAS,SAAUnX,EAAMla,GACxBA,EAAOA,GAAQ,KAEf,IAAI2sB,EAAQxd,EAAOwd,MAAOzS,EAAMla,GAC/BsxB,EAAc3E,EAAMl1B,OACpBpB,EAAKs2B,EAAM3nB,QACXusB,EAAQpiB,EAAOqiB,YAAatX,EAAMla,GAMvB,eAAP3J,IACJA,EAAKs2B,EAAM3nB,QACXssB,KAGIj7B,IAIU,OAAT2J,GACJ2sB,EAAM8E,QAAS,qBAITF,EAAMG,KACbr7B,EAAGgG,KAAM6d,GApBF,WACN/K,EAAOkiB,QAASnX,EAAMla,EACvB,GAkBqBuxB,KAGhBD,GAAeC,GACpBA,EAAM3L,MAAM5c,MAEd,EAGAwoB,YAAa,SAAUtX,EAAMla,GAC5B,IAAI7C,EAAM6C,EAAO,aACjB,OAAO6wB,GAAS1uB,IAAK+X,EAAM/c,IAAS0zB,GAASjB,OAAQ1V,EAAM/c,EAAK,CAC/DyoB,MAAOzW,EAAO+c,UAAW,eAAgBla,KAAK,WAC7C6e,GAASze,OAAQ8H,EAAM,CAAEla,EAAO,QAAS7C,GAC1C,KAEF,IAGDgS,EAAO9Y,GAAG4d,OAAQ,CACjB0Y,MAAO,SAAU3sB,EAAMsJ,GACtB,IAAIqoB,EAAS,EAQb,MANqB,kBAAT3xB,IACXsJ,EAAOtJ,EACPA,EAAO,KACP2xB,KAGIzxB,UAAUzI,OAASk6B,EAChBxiB,EAAOwd,MAAOtyB,KAAM,GAAK2F,QAGjBvJ,IAAT6S,EACNjP,KACAA,KAAKyZ,MAAM,WACV,IAAI6Y,EAAQxd,EAAOwd,MAAOtyB,KAAM2F,EAAMsJ,GAGtC6F,EAAOqiB,YAAan3B,KAAM2F,GAEZ,OAATA,GAAgC,eAAf2sB,EAAO,IAC5Bxd,EAAOkiB,QAASh3B,KAAM2F,EAExB,GACF,EACAqxB,QAAS,SAAUrxB,GAClB,OAAO3F,KAAKyZ,MAAM,WACjB3E,EAAOkiB,QAASh3B,KAAM2F,EACvB,GACD,EACA4xB,WAAY,SAAU5xB,GACrB,OAAO3F,KAAKsyB,MAAO3sB,GAAQ,KAAM,GAClC,EAIAgsB,QAAS,SAAUhsB,EAAMqJ,GACxB,IAAI1R,EACHk6B,EAAQ,EACRC,EAAQ3iB,EAAO8d,WACfzgB,EAAWnS,KACXjD,EAAIiD,KAAK5C,OACTo0B,EAAU,aACCgG,GACTC,EAAM1D,YAAa5hB,EAAU,CAAEA,GAEjC,EAQD,IANqB,kBAATxM,IACXqJ,EAAMrJ,EACNA,OAAOvJ,GAERuJ,EAAOA,GAAQ,KAEP5I,MACPO,EAAMk5B,GAAS1uB,IAAKqK,EAAUpV,GAAK4I,EAAO,gBAC9BrI,EAAIiuB,QACfiM,IACAl6B,EAAIiuB,MAAM5T,IAAK6Z,IAIjB,OADAA,IACOiG,EAAM9F,QAAS3iB,EACvB,IAED,IAAI0oB,GAAO,sCAA0C7d,OAEjD8d,GAAU,IAAI/c,OAAQ,iBAAmB8c,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCrW,GAAkBtc,EAASsc,gBAI1BsW,GAAa,SAAUhY,GACzB,OAAO/K,EAAOyN,SAAU1C,EAAKgC,cAAehC,EAC7C,EACAiY,GAAW,CAAEA,UAAU,GAOnBvW,GAAgBwW,cACpBF,GAAa,SAAUhY,GACtB,OAAO/K,EAAOyN,SAAU1C,EAAKgC,cAAehC,IAC3CA,EAAKkY,YAAaD,MAAejY,EAAKgC,aACxC,GAEF,IAAImW,GAAqB,SAAUnY,EAAMpN,GAOvC,MAA8B,UAH9BoN,EAAOpN,GAAMoN,GAGD7T,MAAMC,SACM,KAAvB4T,EAAK7T,MAAMC,SAMX4rB,GAAYhY,IAEsB,SAAlC/K,EAAOmjB,IAAKpY,EAAM,UACpB,EAID,SAASqY,GAAWrY,EAAMyW,EAAM6B,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBC,EAAeJ,EACd,WACC,OAAOA,EAAM9H,KACd,EACA,WACC,OAAOxb,EAAOmjB,IAAKpY,EAAMyW,EAAM,GAChC,EACDmC,EAAUD,IACVE,EAAOP,GAAcA,EAAY,KAASrjB,EAAO6jB,UAAWrC,GAAS,GAAK,MAG1EsC,EAAgB/Y,EAAKnG,WAClB5E,EAAO6jB,UAAWrC,IAAmB,OAAToC,IAAkBD,IAChDd,GAAQpR,KAAMzR,EAAOmjB,IAAKpY,EAAMyW,IAElC,GAAKsC,GAAiBA,EAAe,KAAQF,EAAO,CAYnD,IARAD,GAAoB,EAGpBC,EAAOA,GAAQE,EAAe,GAG9BA,GAAiBH,GAAW,EAEpBF,KAIPzjB,EAAO9I,MAAO6T,EAAMyW,EAAMsC,EAAgBF,IACnC,EAAIJ,IAAY,GAAMA,EAAQE,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBK,GAAgCN,EAIjCM,GAAgC,EAChC9jB,EAAO9I,MAAO6T,EAAMyW,EAAMsC,EAAgBF,GAG1CP,EAAaA,GAAc,EAC5B,CAeA,OAbKA,IACJS,GAAiBA,IAAkBH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMM,KAAOA,EACbN,EAAMxzB,MAAQg0B,EACdR,EAAMp3B,IAAMq3B,IAGPA,CACR,CAGA,IAAIQ,GAAoB,CAAC,EAEzB,SAASC,GAAmBjZ,GAC3B,IAAI2N,EACHnO,EAAMQ,EAAKgC,cACXjC,EAAWC,EAAKD,SAChB3T,EAAU4sB,GAAmBjZ,GAE9B,OAAK3T,IAILuhB,EAAOnO,EAAInL,KAAKhI,YAAamT,EAAIjW,cAAewW,IAChD3T,EAAU6I,EAAOmjB,IAAKzK,EAAM,WAE5BA,EAAKlkB,WAAWC,YAAaikB,GAEZ,SAAZvhB,IACJA,EAAU,SAEX4sB,GAAmBjZ,GAAa3T,EAEzBA,EACR,CAEA,SAAS8sB,GAAU5mB,EAAUwK,GAO5B,IANA,IAAI1Q,EAAS4T,EACZmZ,EAAS,GACT/c,EAAQ,EACR7e,EAAS+U,EAAS/U,OAGX6e,EAAQ7e,EAAQ6e,KACvB4D,EAAO1N,EAAU8J,IACNjQ,QAIXC,EAAU4T,EAAK7T,MAAMC,QAChB0Q,GAKa,SAAZ1Q,IACJ+sB,EAAQ/c,GAAUua,GAAS1uB,IAAK+X,EAAM,YAAe,KAC/CmZ,EAAQ/c,KACb4D,EAAK7T,MAAMC,QAAU,KAGK,KAAvB4T,EAAK7T,MAAMC,SAAkB+rB,GAAoBnY,KACrDmZ,EAAQ/c,GAAU6c,GAAmBjZ,KAGrB,SAAZ5T,IACJ+sB,EAAQ/c,GAAU,OAGlBua,GAAS/2B,IAAKogB,EAAM,UAAW5T,KAMlC,IAAMgQ,EAAQ,EAAGA,EAAQ7e,EAAQ6e,IACR,MAAnB+c,EAAQ/c,KACZ9J,EAAU8J,GAAQjQ,MAAMC,QAAU+sB,EAAQ/c,IAI5C,OAAO9J,CACR,CAEA2C,EAAO9Y,GAAG4d,OAAQ,CACjB+C,KAAM,WACL,OAAOoc,GAAU/4B,MAAM,EACxB,EACAoW,KAAM,WACL,OAAO2iB,GAAU/4B,KAClB,EACAi5B,OAAQ,SAAUv7B,GACjB,MAAsB,mBAAVA,EACJA,EAAQsC,KAAK2c,OAAS3c,KAAKoW,OAG5BpW,KAAKyZ,MAAM,WACZue,GAAoBh4B,MACxB8U,EAAQ9U,MAAO2c,OAEf7H,EAAQ9U,MAAOoW,MAEjB,GACD,IAED,IAUE8iB,GACAlwB,GAXEmwB,GAAiB,wBAEjBC,GAAW,iCAEXC,GAAc,qCAMhBH,GADcj0B,EAASq0B,yBACRptB,YAAajH,EAASmE,cAAe,SACpDJ,GAAQ/D,EAASmE,cAAe,UAM3BoC,aAAc,OAAQ,SAC5BxC,GAAMwC,aAAc,UAAW,WAC/BxC,GAAMwC,aAAc,OAAQ,KAE5B0tB,GAAIhtB,YAAalD,IAIjB6V,EAAQ0a,WAAaL,GAAIM,WAAW,GAAOA,WAAW,GAAOnP,UAAU/X,QAIvE4mB,GAAIxlB,UAAY,yBAChBmL,EAAQ4a,iBAAmBP,GAAIM,WAAW,GAAOnP,UAAUqP,aAK3DR,GAAIxlB,UAAY,oBAChBmL,EAAQzM,SAAW8mB,GAAI7O,UAKxB,IAAIsP,GAAU,CAKbC,MAAO,CAAE,EAAG,UAAW,YACvBC,IAAK,CAAE,EAAG,oBAAqB,uBAC/BC,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,GAAI,CAAE,EAAG,qBAAsB,yBAE/BC,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQxa,EAAS6I,GAIzB,IAAI9mB,EAYJ,OATCA,EAD4C,qBAAjCie,EAAQgH,qBACbhH,EAAQgH,qBAAsB6B,GAAO,KAEI,qBAA7B7I,EAAQja,iBACpBia,EAAQja,iBAAkB8iB,GAAO,KAGjC,QAGMlsB,IAARksB,GAAqBA,GAAO1I,EAAUH,EAAS6I,GAC5CxT,EAAOmL,MAAO,CAAER,GAAWje,GAG5BA,CACR,CAIA,SAAS04B,GAAela,EAAOma,GAI9B,IAHA,IAAIp9B,EAAI,EACPyzB,EAAIxQ,EAAM5iB,OAEHL,EAAIyzB,EAAGzzB,IACdy5B,GAAS/2B,IACRugB,EAAOjjB,GACP,cACCo9B,GAAe3D,GAAS1uB,IAAKqyB,EAAap9B,GAAK,cAGnD,CA7CA48B,GAAQS,MAAQT,GAAQU,MAAQV,GAAQW,SAAWX,GAAQY,QAAUZ,GAAQC,MAC7ED,GAAQa,GAAKb,GAAQI,GAGflb,EAAQzM,SACbunB,GAAQc,SAAWd,GAAQvnB,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIsoB,GAAQ,YAEZ,SAASC,GAAe3a,EAAOP,EAASmb,EAASrd,EAAWsd,GAO3D,IANA,IAAIhb,EAAMviB,EAAKgrB,EAAKwS,EAAMC,EAAU58B,EACnC68B,EAAWvb,EAAQ6Z,yBACnB2B,EAAQ,GACRl+B,EAAI,EACJyzB,EAAIxQ,EAAM5iB,OAEHL,EAAIyzB,EAAGzzB,IAGd,IAFA8iB,EAAOG,EAAOjjB,KAEQ,IAAT8iB,EAGZ,GAAwB,WAAnBP,EAAQO,GAIZ/K,EAAOmL,MAAOgb,EAAOpb,EAAKnG,SAAW,CAAEmG,GAASA,QAG1C,GAAM6a,GAAMl8B,KAAMqhB,GAIlB,CAUN,IATAviB,EAAMA,GAAO09B,EAAS9uB,YAAauT,EAAQrW,cAAe,QAG1Dkf,GAAQ8Q,GAAS7S,KAAM1G,IAAU,CAAE,GAAI,KAAQ,GAAItF,cACnDugB,EAAOnB,GAASrR,IAASqR,GAAQK,SACjC18B,EAAIoW,UAAYonB,EAAM,GAAMhmB,EAAOomB,cAAerb,GAASib,EAAM,GAGjE38B,EAAI28B,EAAM,GACF38B,KACPb,EAAMA,EAAI+sB,UAKXvV,EAAOmL,MAAOgb,EAAO39B,EAAIyoB,aAGzBzoB,EAAM09B,EAAS5Q,YAGX9I,YAAc,EACnB,MA1BC2Z,EAAMp7B,KAAM4f,EAAQ0b,eAAgBtb,IAkCvC,IAHAmb,EAAS1Z,YAAc,GAEvBvkB,EAAI,EACM8iB,EAAOob,EAAOl+B,MAGvB,GAAKwgB,GAAazI,EAAOqE,QAAS0G,EAAMtC,IAAe,EACjDsd,GACJA,EAAQh7B,KAAMggB,QAgBhB,GAXAkb,EAAWlD,GAAYhY,GAGvBviB,EAAM28B,GAAQe,EAAS9uB,YAAa2T,GAAQ,UAGvCkb,GACJb,GAAe58B,GAIXs9B,EAEJ,IADAz8B,EAAI,EACM0hB,EAAOviB,EAAKa,MAChBk7B,GAAY76B,KAAMqhB,EAAKla,MAAQ,KACnCi1B,EAAQ/6B,KAAMggB,GAMlB,OAAOmb,CACR,CAGA,IAAII,GAAiB,sBAErB,SAASC,KACR,OAAO,CACR,CAEA,SAASC,KACR,OAAO,CACR,CAEA,SAAStgB,GAAI6E,EAAM0b,EAAOj2B,EAAU2J,EAAMjT,EAAIw/B,GAC7C,IAAIC,EAAQ91B,EAGZ,GAAsB,kBAAV41B,EAAqB,CAShC,IAAM51B,IANmB,kBAAbL,IAGX2J,EAAOA,GAAQ3J,EACfA,OAAWlJ,GAEEm/B,EACbvgB,GAAI6E,EAAMla,EAAML,EAAU2J,EAAMssB,EAAO51B,GAAQ61B,GAEhD,OAAO3b,CACR,CAqBA,GAnBa,MAAR5Q,GAAsB,MAANjT,GAGpBA,EAAKsJ,EACL2J,EAAO3J,OAAWlJ,GACD,MAANJ,IACc,kBAAbsJ,GAGXtJ,EAAKiT,EACLA,OAAO7S,IAIPJ,EAAKiT,EACLA,EAAO3J,EACPA,OAAWlJ,KAGD,IAAPJ,EACJA,EAAKs/B,QACC,IAAMt/B,EACZ,OAAO6jB,EAeR,OAZa,IAAR2b,IACJC,EAASz/B,EACTA,EAAK,SAAUoI,GAId,OADA0Q,IAAS2H,IAAKrY,GACPq3B,EAAOt8B,MAAOa,KAAM6F,UAC5B,EAGA7J,EAAGimB,KAAOwZ,EAAOxZ,OAAUwZ,EAAOxZ,KAAOnN,EAAOmN,SAE1CpC,EAAKpG,MAAM,WACjB3E,EAAO1Q,MAAMuT,IAAK3X,KAAMu7B,EAAOv/B,EAAIiT,EAAM3J,EAC1C,GACD,CA6aA,SAASo2B,GAAgBjpB,EAAI9M,EAAMg2B,GAG5BA,GAQNnF,GAAS/2B,IAAKgT,EAAI9M,GAAM,GACxBmP,EAAO1Q,MAAMuT,IAAKlF,EAAI9M,EAAM,CAC3B+b,WAAW,EACXnS,QAAS,SAAUnL,GAClB,IAAI7E,EACHq8B,EAAQpF,GAAS1uB,IAAK9H,KAAM2F,GAE7B,GAAyB,EAAlBvB,EAAMy3B,WAAmB77B,KAAM2F,IAGrC,GAAMi2B,GA4BQ9mB,EAAO1Q,MAAMuvB,QAAShuB,IAAU,CAAC,GAAIm2B,cAClD13B,EAAMgL,uBAhBN,GARAwsB,EAAQz7B,EAAM6B,KAAM6D,WACpB2wB,GAAS/2B,IAAKO,KAAM2F,EAAMi2B,GAG1B57B,KAAM2F,KACNpG,EAASi3B,GAAS1uB,IAAK9H,KAAM2F,GAC7B6wB,GAAS/2B,IAAKO,KAAM2F,GAAM,GAErBi2B,IAAUr8B,EAMd,OAHA6E,EAAMiL,2BACNjL,EAAMmH,iBAEChM,OAeEq8B,IAGXpF,GAAS/2B,IAAKO,KAAM2F,EAAMmP,EAAO1Q,MAAMoU,QACtCojB,EAAO,GACPA,EAAMz7B,MAAO,GACbH,OAWDoE,EAAMgL,kBACNhL,EAAM23B,8BAAgCV,GAExC,UAvEkCj/B,IAA7Bo6B,GAAS1uB,IAAK2K,EAAI9M,IACtBmP,EAAO1Q,MAAMuT,IAAKlF,EAAI9M,EAAM01B,GAwE/B,CApfAvmB,EAAO1Q,MAAQ,CAEd6Z,OAAQ,CAAC,EAETtG,IAAK,SAAUkI,EAAM0b,EAAOhsB,EAASN,EAAM3J,GAE1C,IAAI02B,EAAaC,EAAa3+B,EAC7B4+B,EAAQC,EAAGC,EACXzI,EAAS0I,EAAU12B,EAAM22B,EAAYC,EACrCC,EAAWhG,GAAS1uB,IAAK+X,GAG1B,GAAMqW,GAAYrW,GAuClB,IAlCKtQ,EAAQA,UAEZA,GADAysB,EAAczsB,GACQA,QACtBjK,EAAW02B,EAAY12B,UAKnBA,GACJwP,EAAOmR,KAAKrY,gBAAiB2T,GAAiBjc,GAIzCiK,EAAQ0S,OACb1S,EAAQ0S,KAAOnN,EAAOmN,SAIfia,EAASM,EAASN,UACzBA,EAASM,EAASN,OAASt5B,OAAOkB,OAAQ,QAEnCm4B,EAAcO,EAASC,UAC9BR,EAAcO,EAASC,OAAS,SAAUttB,GAIzC,MAAyB,qBAAX2F,GAA0BA,EAAO1Q,MAAMs4B,YAAcvtB,EAAExJ,KACpEmP,EAAO1Q,MAAM8E,SAAS/J,MAAO0gB,EAAMha,gBAAczJ,CACnD,GAKD+/B,GADAZ,GAAUA,GAAS,IAAK19B,MAAOqzB,IAAmB,CAAE,KAC1C9zB,OACF++B,KAEPx2B,EAAO42B,GADPj/B,EAAM89B,GAAe7U,KAAMgV,EAAOY,KAAS,IACpB,GACvBG,GAAeh/B,EAAK,IAAO,IAAK2a,MAAO,KAAMwC,OAGvC9U,IAKNguB,EAAU7e,EAAO1Q,MAAMuvB,QAAShuB,IAAU,CAAC,EAG3CA,GAASL,EAAWquB,EAAQmI,aAAenI,EAAQgJ,WAAch3B,EAGjEguB,EAAU7e,EAAO1Q,MAAMuvB,QAAShuB,IAAU,CAAC,EAG3Cy2B,EAAYtnB,EAAO8E,OAAQ,CAC1BjU,KAAMA,EACN42B,SAAUA,EACVttB,KAAMA,EACNM,QAASA,EACT0S,KAAM1S,EAAQ0S,KACd3c,SAAUA,EACV0f,aAAc1f,GAAYwP,EAAO4T,KAAK7qB,MAAMmnB,aAAaxmB,KAAM8G,GAC/Doc,UAAW4a,EAAWj+B,KAAM,MAC1B29B,IAGKK,EAAWH,EAAQv2B,OAC1B02B,EAAWH,EAAQv2B,GAAS,IACnBi3B,cAAgB,EAGnBjJ,EAAQkJ,QACiD,IAA9DlJ,EAAQkJ,MAAM76B,KAAM6d,EAAM5Q,EAAMqtB,EAAYL,IAEvCpc,EAAK1b,kBACT0b,EAAK1b,iBAAkBwB,EAAMs2B,IAK3BtI,EAAQhc,MACZgc,EAAQhc,IAAI3V,KAAM6d,EAAMuc,GAElBA,EAAU7sB,QAAQ0S,OACvBma,EAAU7sB,QAAQ0S,KAAO1S,EAAQ0S,OAK9B3c,EACJ+2B,EAASjjB,OAAQijB,EAASO,gBAAiB,EAAGR,GAE9CC,EAASx8B,KAAMu8B,GAIhBtnB,EAAO1Q,MAAM6Z,OAAQtY,IAAS,EAGhC,EAGAoS,OAAQ,SAAU8H,EAAM0b,EAAOhsB,EAASjK,EAAUw3B,GAEjD,IAAI3+B,EAAG4+B,EAAWz/B,EACjB4+B,EAAQC,EAAGC,EACXzI,EAAS0I,EAAU12B,EAAM22B,EAAYC,EACrCC,EAAWhG,GAASD,QAAS1W,IAAU2W,GAAS1uB,IAAK+X,GAEtD,GAAM2c,IAAeN,EAASM,EAASN,QAAvC,CAOA,IADAC,GADAZ,GAAUA,GAAS,IAAK19B,MAAOqzB,IAAmB,CAAE,KAC1C9zB,OACF++B,KAMP,GAJAx2B,EAAO42B,GADPj/B,EAAM89B,GAAe7U,KAAMgV,EAAOY,KAAS,IACpB,GACvBG,GAAeh/B,EAAK,IAAO,IAAK2a,MAAO,KAAMwC,OAGvC9U,EAAN,CAeA,IARAguB,EAAU7e,EAAO1Q,MAAMuvB,QAAShuB,IAAU,CAAC,EAE3C02B,EAAWH,EADXv2B,GAASL,EAAWquB,EAAQmI,aAAenI,EAAQgJ,WAAch3B,IACpC,GAC7BrI,EAAMA,EAAK,IACV,IAAIsd,OAAQ,UAAY0hB,EAAWj+B,KAAM,iBAAoB,WAG9D0+B,EAAY5+B,EAAIk+B,EAASj/B,OACjBe,KACPi+B,EAAYC,EAAUl+B,IAEf2+B,GAAeP,IAAaH,EAAUG,UACzChtB,GAAWA,EAAQ0S,OAASma,EAAUna,MACtC3kB,IAAOA,EAAIkB,KAAM49B,EAAU1a,YAC3Bpc,GAAYA,IAAa82B,EAAU92B,WACxB,OAAbA,IAAqB82B,EAAU92B,YAChC+2B,EAASjjB,OAAQjb,EAAG,GAEfi+B,EAAU92B,UACd+2B,EAASO,gBAELjJ,EAAQ5b,QACZ4b,EAAQ5b,OAAO/V,KAAM6d,EAAMuc,IAOzBW,IAAcV,EAASj/B,SACrBu2B,EAAQqJ,WACkD,IAA/DrJ,EAAQqJ,SAASh7B,KAAM6d,EAAMyc,EAAYE,EAASC,SAElD3nB,EAAOmoB,YAAapd,EAAMla,EAAM62B,EAASC,eAGnCP,EAAQv2B,GAtChB,MAJC,IAAMA,KAAQu2B,EACbpnB,EAAO1Q,MAAM2T,OAAQ8H,EAAMla,EAAO41B,EAAOY,GAAK5sB,EAASjK,GAAU,GA8C/DwP,EAAOsM,cAAe8a,IAC1B1F,GAASze,OAAQ8H,EAAM,gBA5DxB,CA8DD,EAEA3W,SAAU,SAAUg0B,GAEnB,IAAIngC,EAAGoB,EAAGqD,EAAKipB,EAAS2R,EAAWe,EAClC5oB,EAAO,IAAInO,MAAOP,UAAUzI,QAG5BgH,EAAQ0Q,EAAO1Q,MAAMg5B,IAAKF,GAE1Bb,GACC7F,GAAS1uB,IAAK9H,KAAM,WAAc4C,OAAOkB,OAAQ,OAC/CM,EAAMuB,OAAU,GACnBguB,EAAU7e,EAAO1Q,MAAMuvB,QAASvvB,EAAMuB,OAAU,CAAC,EAKlD,IAFA4O,EAAM,GAAMnQ,EAENrH,EAAI,EAAGA,EAAI8I,UAAUzI,OAAQL,IAClCwX,EAAMxX,GAAM8I,UAAW9I,GAMxB,GAHAqH,EAAMi5B,eAAiBr9B,MAGlB2zB,EAAQ2J,cAA2D,IAA5C3J,EAAQ2J,YAAYt7B,KAAMhC,KAAMoE,GAA5D,CASA,IAJA+4B,EAAeroB,EAAO1Q,MAAMi4B,SAASr6B,KAAMhC,KAAMoE,EAAOi4B,GAGxDt/B,EAAI,GACM0tB,EAAU0S,EAAcpgC,QAAYqH,EAAMm5B,wBAInD,IAHAn5B,EAAMo5B,cAAgB/S,EAAQ5K,KAE9B1hB,EAAI,GACMi+B,EAAY3R,EAAQ4R,SAAUl+B,QACtCiG,EAAM23B,iCAID33B,EAAMq5B,aAAsC,IAAxBrB,EAAU1a,YACnCtd,EAAMq5B,WAAWj/B,KAAM49B,EAAU1a,aAEjCtd,EAAMg4B,UAAYA,EAClBh4B,EAAM6K,KAAOmtB,EAAUntB,UAKV7S,KAHboF,IAAUsT,EAAO1Q,MAAMuvB,QAASyI,EAAUG,WAAc,CAAC,GAAIE,QAC5DL,EAAU7sB,SAAUpQ,MAAOsrB,EAAQ5K,KAAMtL,MAGT,KAAzBnQ,EAAM7E,OAASiC,KACrB4C,EAAMmH,iBACNnH,EAAMgL,oBAYX,OAJKukB,EAAQ+J,cACZ/J,EAAQ+J,aAAa17B,KAAMhC,KAAMoE,GAG3BA,EAAM7E,MAxCb,CAyCD,EAEA88B,SAAU,SAAUj4B,EAAOi4B,GAC1B,IAAIt/B,EAAGq/B,EAAWrZ,EAAK4a,EAAiBC,EACvCT,EAAe,GACfP,EAAgBP,EAASO,cACzBtM,EAAMlsB,EAAMxD,OAGb,GAAKg8B,GAIJtM,EAAI5W,YAOc,UAAftV,EAAMuB,MAAoBvB,EAAMyH,QAAU,GAE7C,KAAQykB,IAAQtwB,KAAMswB,EAAMA,EAAIhnB,YAActJ,KAI7C,GAAsB,IAAjBswB,EAAI5W,WAAoC,UAAftV,EAAMuB,OAAqC,IAAjB2qB,EAAIxqB,UAAsB,CAGjF,IAFA63B,EAAkB,GAClBC,EAAmB,CAAC,EACd7gC,EAAI,EAAGA,EAAI6/B,EAAe7/B,SAMEX,IAA5BwhC,EAFL7a,GAHAqZ,EAAYC,EAAUt/B,IAGNuI,SAAW,OAG1Bs4B,EAAkB7a,GAAQqZ,EAAUpX,aACnClQ,EAAQiO,EAAK/iB,MAAOic,MAAOqU,IAAS,EACpCxb,EAAOmR,KAAMlD,EAAK/iB,KAAM,KAAM,CAAEswB,IAAQlzB,QAErCwgC,EAAkB7a,IACtB4a,EAAgB99B,KAAMu8B,GAGnBuB,EAAgBvgC,QACpB+/B,EAAat9B,KAAM,CAAEggB,KAAMyQ,EAAK+L,SAAUsB,GAE5C,CAUF,OALArN,EAAMtwB,KACD48B,EAAgBP,EAASj/B,QAC7B+/B,EAAat9B,KAAM,CAAEggB,KAAMyQ,EAAK+L,SAAUA,EAASl8B,MAAOy8B,KAGpDO,CACR,EAEAU,QAAS,SAAUl5B,EAAMm5B,GACxBl7B,OAAOC,eAAgBiS,EAAO/F,MAAM7O,UAAWyE,EAAM,CACpDlC,YAAY,EACZC,cAAc,EAEdoF,IAAKoS,EAAY4jB,GAChB,WACC,GAAK99B,KAAK+9B,cACT,OAAOD,EAAM99B,KAAK+9B,cAEpB,EACA,WACC,GAAK/9B,KAAK+9B,cACT,OAAO/9B,KAAK+9B,cAAep5B,EAE7B,EAEDlF,IAAK,SAAUmE,GACdhB,OAAOC,eAAgB7C,KAAM2E,EAAM,CAClClC,YAAY,EACZC,cAAc,EACdC,UAAU,EACViB,MAAOA,GAET,GAEF,EAEAw5B,IAAK,SAAUW,GACd,OAAOA,EAAejpB,EAAOtH,SAC5BuwB,EACA,IAAIjpB,EAAO/F,MAAOgvB,EACpB,EAEApK,QAAS,CACRqK,KAAM,CAGLC,UAAU,GAEXlyB,MAAO,CAGN8wB,MAAO,SAAU5tB,GAIhB,IAAIwD,EAAKzS,MAAQiP,EAWjB,OARKkqB,GAAe36B,KAAMiU,EAAG9M,OAC5B8M,EAAG1G,OAAS6T,EAAUnN,EAAI,UAG1BipB,GAAgBjpB,EAAI,SAAS,IAIvB,CACR,EACA+F,QAAS,SAAUvJ,GAIlB,IAAIwD,EAAKzS,MAAQiP,EAUjB,OAPKkqB,GAAe36B,KAAMiU,EAAG9M,OAC5B8M,EAAG1G,OAAS6T,EAAUnN,EAAI,UAE1BipB,GAAgBjpB,EAAI,UAId,CACR,EAIAunB,SAAU,SAAU51B,GACnB,IAAIxD,EAASwD,EAAMxD,OACnB,OAAOu4B,GAAe36B,KAAMoC,EAAO+E,OAClC/E,EAAOmL,OAAS6T,EAAUhf,EAAQ,UAClC41B,GAAS1uB,IAAKlH,EAAQ,UACtBgf,EAAUhf,EAAQ,IACpB,GAGDs9B,aAAc,CACbR,aAAc,SAAUt5B,QAIDhI,IAAjBgI,EAAM7E,QAAwB6E,EAAM25B,gBACxC35B,EAAM25B,cAAcI,YAAc/5B,EAAM7E,OAE1C,KAwFHuV,EAAOmoB,YAAc,SAAUpd,EAAMla,EAAM82B,GAGrC5c,EAAKjM,qBACTiM,EAAKjM,oBAAqBjO,EAAM82B,EAElC,EAEA3nB,EAAO/F,MAAQ,SAAUiQ,EAAKzc,GAG7B,KAAQvC,gBAAgB8U,EAAO/F,OAC9B,OAAO,IAAI+F,EAAO/F,MAAOiQ,EAAKzc,GAI1Byc,GAAOA,EAAIrZ,MACf3F,KAAK+9B,cAAgB/e,EACrBhf,KAAK2F,KAAOqZ,EAAIrZ,KAIhB3F,KAAKo+B,mBAAqBpf,EAAInV,uBACHzN,IAAzB4iB,EAAInV,mBAGgB,IAApBmV,EAAImf,YACL9C,GACAC,GAKDt7B,KAAKY,OAAWoe,EAAIpe,QAAkC,IAAxBoe,EAAIpe,OAAO8Y,SACxCsF,EAAIpe,OAAO0I,WACX0V,EAAIpe,OAELZ,KAAKw9B,cAAgBxe,EAAIwe,cACzBx9B,KAAKq+B,cAAgBrf,EAAIqf,eAIzBr+B,KAAK2F,KAAOqZ,EAIRzc,GACJuS,EAAO8E,OAAQ5Z,KAAMuC,GAItBvC,KAAKs+B,UAAYtf,GAAOA,EAAIsf,WAAaC,KAAKC,MAG9Cx+B,KAAM8U,EAAOtH,UAAY,CAC1B,EAIAsH,EAAO/F,MAAM7O,UAAY,CACxBwX,YAAa5C,EAAO/F,MACpBqvB,mBAAoB9C,GACpBiC,qBAAsBjC,GACtBS,8BAA+BT,GAC/BmD,aAAa,EAEblzB,eAAgB,WACf,IAAI4D,EAAInP,KAAK+9B,cAEb/9B,KAAKo+B,mBAAqB/C,GAErBlsB,IAAMnP,KAAKy+B,aACftvB,EAAE5D,gBAEJ,EACA6D,gBAAiB,WAChB,IAAID,EAAInP,KAAK+9B,cAEb/9B,KAAKu9B,qBAAuBlC,GAEvBlsB,IAAMnP,KAAKy+B,aACftvB,EAAEC,iBAEJ,EACAC,yBAA0B,WACzB,IAAIF,EAAInP,KAAK+9B,cAEb/9B,KAAK+7B,8BAAgCV,GAEhClsB,IAAMnP,KAAKy+B,aACftvB,EAAEE,2BAGHrP,KAAKoP,iBACN,GAID0F,EAAO2E,KAAM,CACZ4C,QAAQ,EACRtW,SAAS,EACTC,YAAY,EACZ04B,gBAAgB,EAChB7pB,SAAS,EACT5O,QAAQ,EACR04B,YAAY,EACZ/pB,SAAS,EACTgqB,OAAO,EACPC,OAAO,EACPviB,UAAU,EACVwiB,MAAM,EACN,MAAQ,EACR3f,MAAM,EACN4f,UAAU,EACVj8B,KAAK,EACLk8B,SAAS,EACTnzB,QAAQ,EACRozB,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTtkB,OAAO,GACLxG,EAAO1Q,MAAMy5B,SAEhB/oB,EAAO2E,KAAM,CAAE3N,MAAO,UAAW+zB,KAAM,aAAc,SAAUl6B,EAAMm2B,GAEpE,SAASgE,EAAoB5C,GAC5B,GAAKj4B,EAAS86B,aAAe,CAS5B,IAAItD,EAASjG,GAAS1uB,IAAK9H,KAAM,UAChCoE,EAAQ0Q,EAAO1Q,MAAMg5B,IAAKF,GAC3B94B,EAAMuB,KAA4B,YAArBu3B,EAAYv3B,KAAqB,QAAU,OACxDvB,EAAMq6B,aAAc,EAGpBhC,EAAQS,GAMH94B,EAAMxD,SAAWwD,EAAMo5B,eAK3Bf,EAAQr4B,EAEV,MAIC0Q,EAAO1Q,MAAM47B,SAAUlE,EAAcoB,EAAYt8B,OAChDkU,EAAO1Q,MAAMg5B,IAAKF,GAErB,CAEApoB,EAAO1Q,MAAMuvB,QAAShuB,GAAS,CAG9Bk3B,MAAO,WAEN,IAAIoD,EAOJ,GAFAvE,GAAgB17B,KAAM2F,GAAM,IAEvBV,EAAS86B,aAcb,OAAO,GARPE,EAAWzJ,GAAS1uB,IAAK9H,KAAM87B,KAE9B97B,KAAKmE,iBAAkB23B,EAAcgE,GAEtCtJ,GAAS/2B,IAAKO,KAAM87B,GAAgBmE,GAAY,GAAM,EAMxD,EACAznB,QAAS,WAMR,OAHAkjB,GAAgB17B,KAAM2F,IAGf,CACR,EAEAq3B,SAAU,WACT,IAAIiD,EAEJ,IAAKh7B,EAAS86B,aAWb,OAAO,GAVPE,EAAWzJ,GAAS1uB,IAAK9H,KAAM87B,GAAiB,GAK/CtF,GAAS/2B,IAAKO,KAAM87B,EAAcmE,IAHlCjgC,KAAK4T,oBAAqBkoB,EAAcgE,GACxCtJ,GAASze,OAAQ/X,KAAM87B,GAS1B,EAIA9B,SAAU,SAAU51B,GACnB,OAAOoyB,GAAS1uB,IAAK1D,EAAMxD,OAAQ+E,EACpC,EAEAm2B,aAAcA,GAefhnB,EAAO1Q,MAAMuvB,QAASmI,GAAiB,CACtCe,MAAO,WAIN,IAAIxd,EAAMrf,KAAK6hB,eAAiB7hB,KAAKiF,UAAYjF,KAChDkgC,EAAaj7B,EAAS86B,aAAe//B,KAAOqf,EAC5C4gB,EAAWzJ,GAAS1uB,IAAKo4B,EAAYpE,GAMhCmE,IACAh7B,EAAS86B,aACb//B,KAAKmE,iBAAkB23B,EAAcgE,GAErCzgB,EAAIlb,iBAAkBwB,EAAMm6B,GAAoB,IAGlDtJ,GAAS/2B,IAAKygC,EAAYpE,GAAgBmE,GAAY,GAAM,EAC7D,EACAjD,SAAU,WACT,IAAI3d,EAAMrf,KAAK6hB,eAAiB7hB,KAAKiF,UAAYjF,KAChDkgC,EAAaj7B,EAAS86B,aAAe//B,KAAOqf,EAC5C4gB,EAAWzJ,GAAS1uB,IAAKo4B,EAAYpE,GAAiB,EAEjDmE,EAQLzJ,GAAS/2B,IAAKygC,EAAYpE,EAAcmE,IAPnCh7B,EAAS86B,aACb//B,KAAK4T,oBAAqBkoB,EAAcgE,GAExCzgB,EAAIzL,oBAAqBjO,EAAMm6B,GAAoB,GAEpDtJ,GAASze,OAAQmoB,EAAYpE,GAI/B,EAEF,IAUAhnB,EAAO2E,KAAM,CACZ0mB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAMnD,GAClBtoB,EAAO1Q,MAAMuvB,QAAS4M,GAAS,CAC9BzE,aAAcsB,EACdT,SAAUS,EAEVX,OAAQ,SAAUr4B,GACjB,IAAI5C,EAEHg/B,EAAUp8B,EAAMi6B,cAChBjC,EAAYh4B,EAAMg4B,UASnB,OALMoE,IAAaA,IANTxgC,MAMgC8U,EAAOyN,SANvCviB,KAMyDwgC,MAClEp8B,EAAMuB,KAAOy2B,EAAUG,SACvB/6B,EAAM46B,EAAU7sB,QAAQpQ,MAAOa,KAAM6F,WACrCzB,EAAMuB,KAAOy3B,GAEP57B,CACR,EAEF,IAEAsT,EAAO9Y,GAAG4d,OAAQ,CAEjBoB,GAAI,SAAUugB,EAAOj2B,EAAU2J,EAAMjT,GACpC,OAAOgf,GAAIhb,KAAMu7B,EAAOj2B,EAAU2J,EAAMjT,EACzC,EACAw/B,IAAK,SAAUD,EAAOj2B,EAAU2J,EAAMjT,GACrC,OAAOgf,GAAIhb,KAAMu7B,EAAOj2B,EAAU2J,EAAMjT,EAAI,EAC7C,EACAygB,IAAK,SAAU8e,EAAOj2B,EAAUtJ,GAC/B,IAAIogC,EAAWz2B,EACf,GAAK41B,GAASA,EAAMhwB,gBAAkBgwB,EAAMa,UAW3C,OARAA,EAAYb,EAAMa,UAClBtnB,EAAQymB,EAAM8B,gBAAiB5gB,IAC9B2f,EAAU1a,UACT0a,EAAUG,SAAW,IAAMH,EAAU1a,UACrC0a,EAAUG,SACXH,EAAU92B,SACV82B,EAAU7sB,SAEJvP,KAER,GAAsB,kBAAVu7B,EAAqB,CAGhC,IAAM51B,KAAQ41B,EACbv7B,KAAKyc,IAAK9W,EAAML,EAAUi2B,EAAO51B,IAElC,OAAO3F,IACR,CAUA,OATkB,IAAbsF,GAA0C,oBAAbA,IAGjCtJ,EAAKsJ,EACLA,OAAWlJ,IAEA,IAAPJ,IACJA,EAAKs/B,IAECt7B,KAAKyZ,MAAM,WACjB3E,EAAO1Q,MAAM2T,OAAQ/X,KAAMu7B,EAAOv/B,EAAIsJ,EACvC,GACD,IAID,IAKCm7B,GAAe,wBAGfC,GAAW,oCAEXC,GAAe,6BAGhB,SAASC,GAAoB/gB,EAAM9d,GAClC,OAAK6d,EAAUC,EAAM,UACpBD,EAA+B,KAArB7d,EAAQ2X,SAAkB3X,EAAUA,EAAQqoB,WAAY,OAE3DtV,EAAQ+K,GAAOuQ,SAAU,SAAW,IAGrCvQ,CACR,CAGA,SAASghB,GAAehhB,GAEvB,OADAA,EAAKla,MAAyC,OAAhCka,EAAK1a,aAAc,SAAsB,IAAM0a,EAAKla,KAC3Dka,CACR,CACA,SAASihB,GAAejhB,GAOvB,MAN2C,WAApCA,EAAKla,MAAQ,IAAKxF,MAAO,EAAG,GAClC0f,EAAKla,KAAOka,EAAKla,KAAKxF,MAAO,GAE7B0f,EAAKnU,gBAAiB,QAGhBmU,CACR,CAEA,SAASkhB,GAAgB/hB,EAAKgiB,GAC7B,IAAIjkC,EAAGyzB,EAAG7qB,EAAgBs7B,EAAUC,EAAUhF,EAE9C,GAAuB,IAAlB8E,EAAKtnB,SAAV,CAKA,GAAK8c,GAASD,QAASvX,KAEtBkd,EADW1F,GAAS1uB,IAAKkX,GACPkd,QAKjB,IAAMv2B,KAFN6wB,GAASze,OAAQipB,EAAM,iBAET9E,EACb,IAAMn/B,EAAI,EAAGyzB,EAAI0L,EAAQv2B,GAAOvI,OAAQL,EAAIyzB,EAAGzzB,IAC9C+X,EAAO1Q,MAAMuT,IAAKqpB,EAAMr7B,EAAMu2B,EAAQv2B,GAAQ5I,IAO7C05B,GAASF,QAASvX,KACtBiiB,EAAWxK,GAASlB,OAAQvW,GAC5BkiB,EAAWpsB,EAAO8E,OAAQ,CAAC,EAAGqnB,GAE9BxK,GAASh3B,IAAKuhC,EAAME,GAvBrB,CAyBD,CAGA,SAASC,GAAUniB,EAAKgiB,GACvB,IAAIphB,EAAWohB,EAAKphB,SAASrF,cAGX,UAAbqF,GAAwBuZ,GAAe36B,KAAMwgB,EAAIrZ,MACrDq7B,EAAK1uB,QAAU0M,EAAI1M,QAGK,UAAbsN,GAAqC,aAAbA,IACnCohB,EAAKtH,aAAe1a,EAAI0a,aAE1B,CAEA,SAAS0H,GAAUC,EAAY9sB,EAAM1Q,EAAUg3B,GAG9CtmB,EAAO+J,EAAM/J,GAEb,IAAIymB,EAAU37B,EAAOu7B,EAAS0G,EAAYliB,EAAMC,EAC/CtiB,EAAI,EACJyzB,EAAI6Q,EAAWjkC,OACfmkC,EAAW/Q,EAAI,EACf5sB,EAAQ2Q,EAAM,GACditB,EAAkBtnB,EAAYtW,GAG/B,GAAK49B,GACDhR,EAAI,GAAsB,kBAAV5sB,IAChBib,EAAQ0a,YAAcmH,GAASliC,KAAMoF,GACxC,OAAOy9B,EAAW5nB,MAAM,SAAUwC,GACjC,IAAIpE,EAAOwpB,EAAWlhB,GAAIlE,GACrBulB,IACJjtB,EAAM,GAAM3Q,EAAM5B,KAAMhC,KAAMic,EAAOpE,EAAKhI,SAE3CuxB,GAAUvpB,EAAMtD,EAAM1Q,EAAUg3B,EACjC,IAGD,GAAKrK,IAEJnxB,GADA27B,EAAWL,GAAepmB,EAAM8sB,EAAY,GAAIxf,eAAe,EAAOwf,EAAYxG,IACjEzQ,WAEmB,IAA/B4Q,EAASjV,WAAW3oB,SACxB49B,EAAW37B,GAIPA,GAASw7B,GAAU,CAOvB,IALAyG,GADA1G,EAAU9lB,EAAOvC,IAAK0nB,GAAQe,EAAU,UAAY6F,KAC/BzjC,OAKbL,EAAIyzB,EAAGzzB,IACdqiB,EAAO4b,EAEFj+B,IAAMwkC,IACVniB,EAAOtK,EAAO6L,MAAOvB,GAAM,GAAM,GAG5BkiB,GAIJxsB,EAAOmL,MAAO2a,EAASX,GAAQ7a,EAAM,YAIvCvb,EAAS7B,KAAMq/B,EAAYtkC,GAAKqiB,EAAMriB,GAGvC,GAAKukC,EAOJ,IANAjiB,EAAMub,EAASA,EAAQx9B,OAAS,GAAIykB,cAGpC/M,EAAOvC,IAAKqoB,EAASkG,IAGf/jC,EAAI,EAAGA,EAAIukC,EAAYvkC,IAC5BqiB,EAAOwb,EAAS79B,GACXs8B,GAAY76B,KAAM4gB,EAAKzZ,MAAQ,MAClC6wB,GAASjB,OAAQnW,EAAM,eACxBtK,EAAOyN,SAAUlD,EAAKD,KAEjBA,EAAKJ,KAA8C,YAArCI,EAAKzZ,MAAQ,IAAK4U,cAG/BzF,EAAO2sB,WAAariB,EAAKH,UAC7BnK,EAAO2sB,SAAUriB,EAAKJ,IAAK,CAC1B5R,MAAOgS,EAAKhS,OAASgS,EAAKja,aAAc,UACtCka,GASJH,EAASE,EAAKkC,YAAY7P,QAASkvB,GAAc,IAAMvhB,EAAMC,GAKlE,CAGD,OAAOgiB,CACR,CAEA,SAAStpB,GAAQ8H,EAAMva,EAAUo8B,GAKhC,IAJA,IAAItiB,EACH6b,EAAQ31B,EAAWwP,EAAOzK,OAAQ/E,EAAUua,GAASA,EACrD9iB,EAAI,EAE4B,OAAvBqiB,EAAO6b,EAAOl+B,IAAeA,IAChC2kC,GAA8B,IAAlBtiB,EAAK1F,UACtB5E,EAAO6sB,UAAW1H,GAAQ7a,IAGtBA,EAAK9V,aACJo4B,GAAY7J,GAAYzY,IAC5B8a,GAAeD,GAAQ7a,EAAM,WAE9BA,EAAK9V,WAAWC,YAAa6V,IAI/B,OAAOS,CACR,CAEA/K,EAAO8E,OAAQ,CACdshB,cAAe,SAAUrrB,GACxB,OAAOA,CACR,EAEA8Q,MAAO,SAAUd,EAAM+hB,EAAeC,GACrC,IAAI9kC,EAAGyzB,EAAGsR,EAAaC,EACtBphB,EAAQd,EAAK2Z,WAAW,GACxBwI,EAASnK,GAAYhY,GAGtB,IAAMhB,EAAQ4a,iBAAsC,IAAlB5Z,EAAKnG,UAAoC,KAAlBmG,EAAKnG,YAC3D5E,EAAO2M,SAAU5B,GAOnB,IAHAkiB,EAAe9H,GAAQtZ,GAGjB5jB,EAAI,EAAGyzB,GAFbsR,EAAc7H,GAAQpa,IAEOziB,OAAQL,EAAIyzB,EAAGzzB,IAC3CokC,GAAUW,EAAa/kC,GAAKglC,EAAchlC,IAK5C,GAAK6kC,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAe7H,GAAQpa,GACrCkiB,EAAeA,GAAgB9H,GAAQtZ,GAEjC5jB,EAAI,EAAGyzB,EAAIsR,EAAY1kC,OAAQL,EAAIyzB,EAAGzzB,IAC3CgkC,GAAgBe,EAAa/kC,GAAKglC,EAAchlC,SAGjDgkC,GAAgBlhB,EAAMc,GAWxB,OANAohB,EAAe9H,GAAQtZ,EAAO,WACZvjB,OAAS,GAC1B88B,GAAe6H,GAAeC,GAAU/H,GAAQpa,EAAM,WAIhDc,CACR,EAEAghB,UAAW,SAAU3hB,GAKpB,IAJA,IAAI/Q,EAAM4Q,EAAMla,EACfguB,EAAU7e,EAAO1Q,MAAMuvB,QACvB52B,EAAI,OAE6BX,KAAxByjB,EAAOG,EAAOjjB,IAAqBA,IAC5C,GAAKm5B,GAAYrW,GAAS,CACzB,GAAO5Q,EAAO4Q,EAAM2W,GAAShpB,SAAc,CAC1C,GAAKyB,EAAKitB,OACT,IAAMv2B,KAAQsJ,EAAKitB,OACbvI,EAAShuB,GACbmP,EAAO1Q,MAAM2T,OAAQ8H,EAAMla,GAI3BmP,EAAOmoB,YAAapd,EAAMla,EAAMsJ,EAAKwtB,QAOxC5c,EAAM2W,GAAShpB,cAAYpR,CAC5B,CACKyjB,EAAM4W,GAASjpB,WAInBqS,EAAM4W,GAASjpB,cAAYpR,EAE7B,CAEF,IAGD0Y,EAAO9Y,GAAG4d,OAAQ,CACjBqoB,OAAQ,SAAU38B,GACjB,OAAOyS,GAAQ/X,KAAMsF,GAAU,EAChC,EAEAyS,OAAQ,SAAUzS,GACjB,OAAOyS,GAAQ/X,KAAMsF,EACtB,EAEAsK,KAAM,SAAUhM,GACf,OAAO2xB,GAAQv1B,MAAM,SAAU4D,GAC9B,YAAiBxH,IAAVwH,EACNkR,EAAOlF,KAAM5P,MACbA,KAAKurB,QAAQ9R,MAAM,WACK,IAAlBzZ,KAAK0Z,UAAoC,KAAlB1Z,KAAK0Z,UAAqC,IAAlB1Z,KAAK0Z,WACxD1Z,KAAKshB,YAAc1d,EAErB,GACF,GAAG,KAAMA,EAAOiC,UAAUzI,OAC3B,EAEA6D,OAAQ,WACP,OAAOmgC,GAAUphC,KAAM6F,WAAW,SAAUga,GACpB,IAAlB7f,KAAK0Z,UAAoC,KAAlB1Z,KAAK0Z,UAAqC,IAAlB1Z,KAAK0Z,UAC3CknB,GAAoB5gC,KAAM6f,GAChC3T,YAAa2T,EAEtB,GACD,EAEAqiB,QAAS,WACR,OAAOd,GAAUphC,KAAM6F,WAAW,SAAUga,GAC3C,GAAuB,IAAlB7f,KAAK0Z,UAAoC,KAAlB1Z,KAAK0Z,UAAqC,IAAlB1Z,KAAK0Z,SAAiB,CACzE,IAAI9Y,EAASggC,GAAoB5gC,KAAM6f,GACvCjf,EAAOuhC,aAActiB,EAAMjf,EAAOwpB,WACnC,CACD,GACD,EAEA/S,OAAQ,WACP,OAAO+pB,GAAUphC,KAAM6F,WAAW,SAAUga,GACtC7f,KAAKsJ,YACTtJ,KAAKsJ,WAAW64B,aAActiB,EAAM7f,KAEtC,GACD,EAEA2Y,MAAO,WACN,OAAOyoB,GAAUphC,KAAM6F,WAAW,SAAUga,GACtC7f,KAAKsJ,YACTtJ,KAAKsJ,WAAW64B,aAActiB,EAAM7f,KAAKwrB,YAE3C,GACD,EAEAD,MAAO,WAIN,IAHA,IAAI1L,EACH9iB,EAAI,EAE2B,OAAtB8iB,EAAO7f,KAAMjD,IAAeA,IACd,IAAlB8iB,EAAKnG,WAGT5E,EAAO6sB,UAAW1H,GAAQpa,GAAM,IAGhCA,EAAKyB,YAAc,IAIrB,OAAOthB,IACR,EAEA2gB,MAAO,SAAUihB,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD7hC,KAAKuS,KAAK,WAChB,OAAOuC,EAAO6L,MAAO3gB,KAAM4hC,EAAeC,EAC3C,GACD,EAEAhyB,KAAM,SAAUjM,GACf,OAAO2xB,GAAQv1B,MAAM,SAAU4D,GAC9B,IAAIic,EAAO7f,KAAM,IAAO,CAAC,EACxBjD,EAAI,EACJyzB,EAAIxwB,KAAK5C,OAEV,QAAehB,IAAVwH,GAAyC,IAAlBic,EAAKnG,SAChC,OAAOmG,EAAKnM,UAIb,GAAsB,kBAAV9P,IAAuB68B,GAAajiC,KAAMoF,KACpD+1B,IAAWP,GAAS7S,KAAM3iB,IAAW,CAAE,GAAI,KAAQ,GAAI2W,eAAkB,CAE1E3W,EAAQkR,EAAOomB,cAAet3B,GAE9B,IACC,KAAQ7G,EAAIyzB,EAAGzzB,IAIS,KAHvB8iB,EAAO7f,KAAMjD,IAAO,CAAC,GAGX2c,WACT5E,EAAO6sB,UAAW1H,GAAQpa,GAAM,IAChCA,EAAKnM,UAAY9P,GAInBic,EAAO,CAGR,CAAE,MAAQ1Q,GAAK,CAChB,CAEK0Q,GACJ7f,KAAKurB,QAAQtqB,OAAQ2C,EAEvB,GAAG,KAAMA,EAAOiC,UAAUzI,OAC3B,EAEAglC,YAAa,WACZ,IAAIvH,EAAU,GAGd,OAAOuG,GAAUphC,KAAM6F,WAAW,SAAUga,GAC3C,IAAIoK,EAASjqB,KAAKsJ,WAEbwL,EAAOqE,QAASnZ,KAAM66B,GAAY,IACtC/lB,EAAO6sB,UAAW1H,GAAQj6B,OACrBiqB,GACJA,EAAOoY,aAAcxiB,EAAM7f,MAK9B,GAAG66B,EACJ,IAGD/lB,EAAO2E,KAAM,CACZrC,SAAU,SACVkrB,UAAW,UACXH,aAAc,SACdI,YAAa,QACbC,WAAY,gBACV,SAAU79B,EAAM89B,GAClB3tB,EAAO9Y,GAAI2I,GAAS,SAAUW,GAO7B,IANA,IAAI0a,EACHxe,EAAM,GACNkhC,EAAS5tB,EAAQxP,GACjB8a,EAAOsiB,EAAOtlC,OAAS,EACvBL,EAAI,EAEGA,GAAKqjB,EAAMrjB,IAClBijB,EAAQjjB,IAAMqjB,EAAOpgB,KAAOA,KAAK2gB,OAAO,GACxC7L,EAAQ4tB,EAAQ3lC,IAAO0lC,GAAYziB,GAInCngB,EAAKV,MAAOqC,EAAKwe,EAAMlY,OAGxB,OAAO9H,KAAK+f,UAAWve,EACxB,CACD,IACA,IAAImhC,GAAY,IAAI/nB,OAAQ,KAAO8c,GAAO,kBAAmB,KAEzDkL,GAAc,MAGdC,GAAY,SAAUhjB,GAKxB,IAAIif,EAAOjf,EAAKgC,cAAciG,YAM9B,OAJMgX,GAASA,EAAKgE,SACnBhE,EAAOzyB,GAGDyyB,EAAKiE,iBAAkBljB,EAC/B,EAEGmjB,GAAO,SAAUnjB,EAAM3P,EAASrM,GACnC,IAAIrC,EAAKmD,EACRs+B,EAAM,CAAC,EAGR,IAAMt+B,KAAQuL,EACb+yB,EAAKt+B,GAASkb,EAAK7T,MAAOrH,GAC1Bkb,EAAK7T,MAAOrH,GAASuL,EAASvL,GAM/B,IAAMA,KAHNnD,EAAMqC,EAAS7B,KAAM6d,GAGP3P,EACb2P,EAAK7T,MAAOrH,GAASs+B,EAAKt+B,GAG3B,OAAOnD,CACR,EAGI0hC,GAAY,IAAItoB,OAAQgd,GAAUv5B,KAAM,KAAO,KAiJnD,SAAS8kC,GAAQtjB,EAAMlb,EAAMy+B,GAC5B,IAAIC,EAAOC,EAAUC,EAAU/hC,EAC9BgiC,EAAeZ,GAAYpkC,KAAMmG,GAMjCqH,EAAQ6T,EAAK7T,MAoEd,OAlEAo3B,EAAWA,GAAYP,GAAWhjB,MAgBjCre,EAAM4hC,EAASK,iBAAkB9+B,IAAUy+B,EAAUz+B,GAEhD6+B,GAAgBhiC,IAkBpBA,EAAMA,EAAIiQ,QAAS6Q,EAAU,YAAUlmB,GAG3B,KAARoF,GAAeq2B,GAAYhY,KAC/Bre,EAAMsT,EAAO9I,MAAO6T,EAAMlb,KAQrBka,EAAQ6kB,kBAAoBf,GAAUnkC,KAAMgD,IAAS0hC,GAAU1kC,KAAMmG,KAG1E0+B,EAAQr3B,EAAMq3B,MACdC,EAAWt3B,EAAMs3B,SACjBC,EAAWv3B,EAAMu3B,SAGjBv3B,EAAMs3B,SAAWt3B,EAAMu3B,SAAWv3B,EAAMq3B,MAAQ7hC,EAChDA,EAAM4hC,EAASC,MAGfr3B,EAAMq3B,MAAQA,EACdr3B,EAAMs3B,SAAWA,EACjBt3B,EAAMu3B,SAAWA,SAIJnnC,IAARoF,EAINA,EAAM,GACNA,CACF,CAGA,SAASmiC,GAAcC,EAAaC,GAGnC,MAAO,CACN/7B,IAAK,WACJ,IAAK87B,IASL,OAAS5jC,KAAK8H,IAAM+7B,GAAS1kC,MAAOa,KAAM6F,kBALlC7F,KAAK8H,GAMd,EAEF,EAnPA,WAIC,SAASg8B,IAGR,GAAM5K,EAAN,CAIArc,EAAU7Q,MAAM+3B,QAAU,+EAE1B7K,EAAIltB,MAAM+3B,QACT,4HAGDxiB,GAAgBrV,YAAa2Q,GAAY3Q,YAAagtB,GAEtD,IAAI8K,EAAW33B,EAAO02B,iBAAkB7J,GACxC+K,EAAoC,OAAjBD,EAASjc,IAG5Bmc,EAAsE,KAA9CC,EAAoBH,EAASI,YAIrDlL,EAAIltB,MAAMq4B,MAAQ,MAClBC,EAA6D,KAAzCH,EAAoBH,EAASK,OAIjDE,EAAgE,KAAzCJ,EAAoBH,EAASX,OAMpDnK,EAAIltB,MAAMw4B,SAAW,WACrBC,EAAiE,KAA9CN,EAAoBjL,EAAIwL,YAAc,GAEzDnjB,GAAgBhY,YAAasT,GAI7Bqc,EAAM,IApCN,CAqCD,CAEA,SAASiL,EAAoBQ,GAC5B,OAAOrkC,KAAKskC,MAAOC,WAAYF,GAChC,CAEA,IAAIV,EAAkBM,EAAsBE,EAAkBH,EAC7DQ,EAAyBZ,EACzBrnB,EAAY5X,EAASmE,cAAe,OACpC8vB,EAAMj0B,EAASmE,cAAe,OAGzB8vB,EAAIltB,QAMVktB,EAAIltB,MAAM+4B,eAAiB,cAC3B7L,EAAIM,WAAW,GAAOxtB,MAAM+4B,eAAiB,GAC7ClmB,EAAQmmB,gBAA+C,gBAA7B9L,EAAIltB,MAAM+4B,eAEpCjwB,EAAO8E,OAAQiF,EAAS,CACvBomB,kBAAmB,WAElB,OADAnB,IACOS,CACR,EACAb,eAAgB,WAEf,OADAI,IACOQ,CACR,EACAY,cAAe,WAEd,OADApB,IACOG,CACR,EACAkB,mBAAoB,WAEnB,OADArB,IACOI,CACR,EACAkB,cAAe,WAEd,OADAtB,IACOW,CACR,EAWAY,qBAAsB,WACrB,IAAIC,EAAOxL,EAAIyL,EAASC,EAmCxB,OAlCgC,MAA3BV,IACJQ,EAAQrgC,EAASmE,cAAe,SAChC0wB,EAAK70B,EAASmE,cAAe,MAC7Bm8B,EAAUtgC,EAASmE,cAAe,OAElCk8B,EAAMt5B,MAAM+3B,QAAU,2DACtBjK,EAAG9tB,MAAM+3B,QAAU,0CAKnBjK,EAAG9tB,MAAMy5B,OAAS,MAClBF,EAAQv5B,MAAMy5B,OAAS,MAQvBF,EAAQv5B,MAAMC,QAAU,QAExBsV,GACErV,YAAao5B,GACbp5B,YAAa4tB,GACb5tB,YAAaq5B,GAEfC,EAAUn5B,EAAO02B,iBAAkBjJ,GACnCgL,EAA4BhnC,SAAU0nC,EAAQC,OAAQ,IACrD3nC,SAAU0nC,EAAQE,eAAgB,IAClC5nC,SAAU0nC,EAAQG,kBAAmB,MAAW7L,EAAG8L,aAEpDrkB,GAAgBhY,YAAa+7B,IAEvBR,CACR,IAEA,CA1IF,GAsPA,IAAIe,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAa7gC,EAASmE,cAAe,OAAQ4C,MAC7C+5B,GAAc,CAAC,EAkBhB,SAASC,GAAerhC,GACvB,IAAIshC,EAAQnxB,EAAOoxB,SAAUvhC,IAAUohC,GAAaphC,GAEpD,OAAKshC,IAGAthC,KAAQmhC,GACLnhC,EAEDohC,GAAaphC,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIwhC,EAAUxhC,EAAM,GAAImM,cAAgBnM,EAAKxE,MAAO,GACnDpD,EAAI8oC,GAAYzoC,OAETL,KAEP,IADA4H,EAAOkhC,GAAa9oC,GAAMopC,KACbL,GACZ,OAAOnhC,CAGV,CAY8ByhC,CAAgBzhC,IAAUA,EACxD,CAGA,IAKC0hC,GAAe,4BACfC,GAAU,CAAE9B,SAAU,WAAY+B,WAAY,SAAUt6B,QAAS,SACjEu6B,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmBrmB,EAAO1c,EAAOgjC,GAIzC,IAAIj5B,EAAUgqB,GAAQpR,KAAM3iB,GAC5B,OAAO+J,EAGNrN,KAAKC,IAAK,EAAGoN,EAAS,IAAQi5B,GAAY,KAAUj5B,EAAS,IAAO,MACpE/J,CACF,CAEA,SAASijC,GAAoBhnB,EAAMinB,EAAWC,EAAKC,EAAaC,EAAQC,GACvE,IAAInqC,EAAkB,UAAd+pC,EAAwB,EAAI,EACnCK,EAAQ,EACRC,EAAQ,EACRC,EAAc,EAGf,GAAKN,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQjqC,EAAI,EAAGA,GAAK,EAKN,WAARgqC,IACJM,GAAevyB,EAAOmjB,IAAKpY,EAAMknB,EAAMnP,GAAW76B,IAAK,EAAMkqC,IAIxDD,GAmBQ,YAARD,IACJK,GAAStyB,EAAOmjB,IAAKpY,EAAM,UAAY+X,GAAW76B,IAAK,EAAMkqC,IAIjD,WAARF,IACJK,GAAStyB,EAAOmjB,IAAKpY,EAAM,SAAW+X,GAAW76B,GAAM,SAAS,EAAMkqC,MAtBvEG,GAAStyB,EAAOmjB,IAAKpY,EAAM,UAAY+X,GAAW76B,IAAK,EAAMkqC,GAGhD,YAARF,EACJK,GAAStyB,EAAOmjB,IAAKpY,EAAM,SAAW+X,GAAW76B,GAAM,SAAS,EAAMkqC,GAItEE,GAASryB,EAAOmjB,IAAKpY,EAAM,SAAW+X,GAAW76B,GAAM,SAAS,EAAMkqC,IAoCzE,OAhBMD,GAAeE,GAAe,IAInCE,GAAS9mC,KAAKC,IAAK,EAAGD,KAAKmD,KAC1Boc,EAAM,SAAWinB,EAAW,GAAIh2B,cAAgBg2B,EAAU3mC,MAAO,IACjE+mC,EACAE,EACAD,EACA,MAIM,GAGDC,EAAQC,CAChB,CAEA,SAASC,GAAkBznB,EAAMinB,EAAWK,GAG3C,IAAIF,EAASpE,GAAWhjB,GAKvBmnB,IADmBnoB,EAAQomB,qBAAuBkC,IAEE,eAAnDryB,EAAOmjB,IAAKpY,EAAM,aAAa,EAAOonB,GACvCM,EAAmBP,EAEnB3mC,EAAM8iC,GAAQtjB,EAAMinB,EAAWG,GAC/BO,EAAa,SAAWV,EAAW,GAAIh2B,cAAgBg2B,EAAU3mC,MAAO,GAIzE,GAAKwiC,GAAUnkC,KAAM6B,GAAQ,CAC5B,IAAM8mC,EACL,OAAO9mC,EAERA,EAAM,MACP,CAwCA,QAlCQwe,EAAQomB,qBAAuB+B,IAMrCnoB,EAAQwmB,wBAA0BzlB,EAAUC,EAAM,OAI3C,SAARxf,IAICwkC,WAAYxkC,IAA0D,WAAjDyU,EAAOmjB,IAAKpY,EAAM,WAAW,EAAOonB,KAG1DpnB,EAAK4nB,iBAAiBrqC,SAEtB4pC,EAAiE,eAAnDlyB,EAAOmjB,IAAKpY,EAAM,aAAa,EAAOonB,IAKpDM,EAAmBC,KAAc3nB,KAEhCxf,EAAMwf,EAAM2nB,MAKdnnC,EAAMwkC,WAAYxkC,IAAS,GAI1BwmC,GACChnB,EACAinB,EACAK,IAAWH,EAAc,SAAW,WACpCO,EACAN,EAGA5mC,GAEE,IACL,CAuTA,SAASqnC,GAAO7nB,EAAM3P,EAASomB,EAAMt1B,EAAK2mC,GACzC,OAAO,IAAID,GAAMxnC,UAAUwf,KAAMG,EAAM3P,EAASomB,EAAMt1B,EAAK2mC,EAC5D,CAvTA7yB,EAAO8E,OAAQ,CAIdguB,SAAU,CACTC,QAAS,CACR//B,IAAK,SAAU+X,EAAMujB,GACpB,GAAKA,EAAW,CAGf,IAAI5hC,EAAM2hC,GAAQtjB,EAAM,WACxB,MAAe,KAARre,EAAa,IAAMA,CAC3B,CACD,IAKFm3B,UAAW,CACVmP,yBAAyB,EACzBC,aAAa,EACbC,kBAAkB,EAClBC,aAAa,EACbC,UAAU,EACVC,YAAY,EACZzB,YAAY,EACZ0B,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBC,SAAS,EACTC,YAAY,EACZC,cAAc,EACdC,YAAY,EACZd,SAAS,EACTe,OAAO,EACPC,SAAS,EACTvQ,OAAO,EACPwQ,QAAQ,EACRC,QAAQ,EACRC,MAAM,EAGNC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,kBAAkB,EAClBC,eAAe,GAKhBnD,SAAU,CAAC,EAGXl6B,MAAO,SAAU6T,EAAMlb,EAAMf,EAAOujC,GAGnC,GAAMtnB,GAA0B,IAAlBA,EAAKnG,UAAoC,IAAlBmG,EAAKnG,UAAmBmG,EAAK7T,MAAlE,CAKA,IAAIxK,EAAKmE,EAAMuxB,EACdoS,EAAWtT,GAAWrxB,GACtB6+B,EAAeZ,GAAYpkC,KAAMmG,GACjCqH,EAAQ6T,EAAK7T,MAad,GARMw3B,IACL7+B,EAAOqhC,GAAesD,IAIvBpS,EAAQpiB,EAAO8yB,SAAUjjC,IAAUmQ,EAAO8yB,SAAU0B,QAGrCltC,IAAVwH,EA0CJ,OAAKszB,GAAS,QAASA,QACwB96B,KAA5CoF,EAAM01B,EAAMpvB,IAAK+X,GAAM,EAAOsnB,IAEzB3lC,EAIDwK,EAAOrH,GA7CA,YAHdgB,SAAc/B,KAGcpC,EAAMm2B,GAAQpR,KAAM3iB,KAAapC,EAAK,KACjEoC,EAAQs0B,GAAWrY,EAAMlb,EAAMnD,GAG/BmE,EAAO,UAIM,MAAT/B,GAAiBA,IAAUA,IAOlB,WAAT+B,GAAsB69B,IAC1B5/B,GAASpC,GAAOA,EAAK,KAASsT,EAAO6jB,UAAW2Q,GAAa,GAAK,OAI7DzqB,EAAQmmB,iBAA6B,KAAVphC,GAAiD,IAAjCe,EAAKoM,QAAS,gBAC9D/E,EAAOrH,GAAS,WAIXuyB,GAAY,QAASA,QACsB96B,KAA9CwH,EAAQszB,EAAMz3B,IAAKogB,EAAMjc,EAAOujC,MAE7B3D,EACJx3B,EAAMu9B,YAAa5kC,EAAMf,GAEzBoI,EAAOrH,GAASf,GAtDnB,CAsED,EAEAq0B,IAAK,SAAUpY,EAAMlb,EAAMwiC,EAAOF,GACjC,IAAI5mC,EAAKM,EAAKu2B,EACboS,EAAWtT,GAAWrxB,GA6BvB,OA5BgBi+B,GAAYpkC,KAAMmG,KAMjCA,EAAOqhC,GAAesD,KAIvBpS,EAAQpiB,EAAO8yB,SAAUjjC,IAAUmQ,EAAO8yB,SAAU0B,KAGtC,QAASpS,IACtB72B,EAAM62B,EAAMpvB,IAAK+X,GAAM,EAAMsnB,SAIjB/qC,IAARiE,IACJA,EAAM8iC,GAAQtjB,EAAMlb,EAAMsiC,IAId,WAAR5mC,GAAoBsE,KAAQ6hC,KAChCnmC,EAAMmmC,GAAoB7hC,IAIZ,KAAVwiC,GAAgBA,GACpBxmC,EAAMkkC,WAAYxkC,IACD,IAAV8mC,GAAkBqC,SAAU7oC,GAAQA,GAAO,EAAIN,GAGhDA,CACR,IAGDyU,EAAO2E,KAAM,CAAE,SAAU,UAAW,SAAU2I,EAAI0kB,GACjDhyB,EAAO8yB,SAAUd,GAAc,CAC9Bh/B,IAAK,SAAU+X,EAAMujB,EAAU+D,GAC9B,GAAK/D,EAIJ,OAAOiD,GAAa7nC,KAAMsW,EAAOmjB,IAAKpY,EAAM,aAQxCA,EAAK4nB,iBAAiBrqC,QAAWyiB,EAAK4pB,wBAAwBpG,MAIjEiE,GAAkBznB,EAAMinB,EAAWK,GAHnCnE,GAAMnjB,EAAMymB,IAAS,WACpB,OAAOgB,GAAkBznB,EAAMinB,EAAWK,EAC3C,GAGH,EAEA1nC,IAAK,SAAUogB,EAAMjc,EAAOujC,GAC3B,IAAIx5B,EACHs5B,EAASpE,GAAWhjB,GAIpB6pB,GAAsB7qB,EAAQumB,iBACT,aAApB6B,EAAOzC,SAIRwC,GADkB0C,GAAsBvC,IAEY,eAAnDryB,EAAOmjB,IAAKpY,EAAM,aAAa,EAAOonB,GACvCL,EAAWO,EACVN,GACChnB,EACAinB,EACAK,EACAH,EACAC,GAED,EAqBF,OAjBKD,GAAe0C,IACnB9C,GAAYtmC,KAAKmD,KAChBoc,EAAM,SAAWinB,EAAW,GAAIh2B,cAAgBg2B,EAAU3mC,MAAO,IACjE0kC,WAAYoC,EAAQH,IACpBD,GAAoBhnB,EAAMinB,EAAW,UAAU,EAAOG,GACtD,KAKGL,IAAcj5B,EAAUgqB,GAAQpR,KAAM3iB,KACb,QAA3B+J,EAAS,IAAO,QAElBkS,EAAK7T,MAAO86B,GAAcljC,EAC1BA,EAAQkR,EAAOmjB,IAAKpY,EAAMinB,IAGpBH,GAAmB9mB,EAAMjc,EAAOgjC,EACxC,EAEF,IAEA9xB,EAAO8yB,SAASxD,WAAaT,GAAc9kB,EAAQsmB,oBAClD,SAAUtlB,EAAMujB,GACf,GAAKA,EACJ,OAASyB,WAAY1B,GAAQtjB,EAAM,gBAClCA,EAAK4pB,wBAAwBE,KAC5B3G,GAAMnjB,EAAM,CAAEukB,WAAY,IAAK,WAC9B,OAAOvkB,EAAK4pB,wBAAwBE,IACrC,KACE,IAEN,IAID70B,EAAO2E,KAAM,CACZmwB,OAAQ,GACRC,QAAS,GACTC,OAAQ,UACN,SAAUC,EAAQC,GACpBl1B,EAAO8yB,SAAUmC,EAASC,GAAW,CACpCC,OAAQ,SAAUrmC,GAOjB,IANA,IAAI7G,EAAI,EACPmtC,EAAW,CAAC,EAGZC,EAAyB,kBAAVvmC,EAAqBA,EAAMqU,MAAO,KAAQ,CAAErU,GAEpD7G,EAAI,EAAGA,IACdmtC,EAAUH,EAASnS,GAAW76B,GAAMitC,GACnCG,EAAOptC,IAAOotC,EAAOptC,EAAI,IAAOotC,EAAO,GAGzC,OAAOD,CACR,GAGe,WAAXH,IACJj1B,EAAO8yB,SAAUmC,EAASC,GAASvqC,IAAMknC,GAE3C,IAEA7xB,EAAO9Y,GAAG4d,OAAQ,CACjBqe,IAAK,SAAUtzB,EAAMf,GACpB,OAAO2xB,GAAQv1B,MAAM,SAAU6f,EAAMlb,EAAMf,GAC1C,IAAIqjC,EAAQzmB,EACXjO,EAAM,CAAC,EACPxV,EAAI,EAEL,GAAKqJ,MAAMC,QAAS1B,GAAS,CAI5B,IAHAsiC,EAASpE,GAAWhjB,GACpBW,EAAM7b,EAAKvH,OAEHL,EAAIyjB,EAAKzjB,IAChBwV,EAAK5N,EAAM5H,IAAQ+X,EAAOmjB,IAAKpY,EAAMlb,EAAM5H,IAAK,EAAOkqC,GAGxD,OAAO10B,CACR,CAEA,YAAiBnW,IAAVwH,EACNkR,EAAO9I,MAAO6T,EAAMlb,EAAMf,GAC1BkR,EAAOmjB,IAAKpY,EAAMlb,EACpB,GAAGA,EAAMf,EAAOiC,UAAUzI,OAAS,EACpC,IAOD0X,EAAO4yB,MAAQA,GAEfA,GAAMxnC,UAAY,CACjBwX,YAAagwB,GACbhoB,KAAM,SAAUG,EAAM3P,EAASomB,EAAMt1B,EAAK2mC,EAAQjP,GACjD14B,KAAK6f,KAAOA,EACZ7f,KAAKs2B,KAAOA,EACZt2B,KAAK2nC,OAASA,GAAU7yB,EAAO6yB,OAAO3N,SACtCh6B,KAAKkQ,QAAUA,EACflQ,KAAK4E,MAAQ5E,KAAKw+B,IAAMx+B,KAAKswB,MAC7BtwB,KAAKgB,IAAMA,EACXhB,KAAK04B,KAAOA,IAAU5jB,EAAO6jB,UAAWrC,GAAS,GAAK,KACvD,EACAhG,IAAK,WACJ,IAAI4G,EAAQwQ,GAAM0C,UAAWpqC,KAAKs2B,MAElC,OAAOY,GAASA,EAAMpvB,IACrBovB,EAAMpvB,IAAK9H,MACX0nC,GAAM0C,UAAUpQ,SAASlyB,IAAK9H,KAChC,EACAqqC,IAAK,SAAUC,GACd,IAAIC,EACHrT,EAAQwQ,GAAM0C,UAAWpqC,KAAKs2B,MAoB/B,OAlBKt2B,KAAKkQ,QAAQs6B,SACjBxqC,KAAKyqC,IAAMF,EAAQz1B,EAAO6yB,OAAQ3nC,KAAK2nC,QACtC2C,EAAStqC,KAAKkQ,QAAQs6B,SAAWF,EAAS,EAAG,EAAGtqC,KAAKkQ,QAAQs6B,UAG9DxqC,KAAKyqC,IAAMF,EAAQD,EAEpBtqC,KAAKw+B,KAAQx+B,KAAKgB,IAAMhB,KAAK4E,OAAU2lC,EAAQvqC,KAAK4E,MAE/C5E,KAAKkQ,QAAQw6B,MACjB1qC,KAAKkQ,QAAQw6B,KAAK1oC,KAAMhC,KAAK6f,KAAM7f,KAAKw+B,IAAKx+B,MAGzCk3B,GAASA,EAAMz3B,IACnBy3B,EAAMz3B,IAAKO,MAEX0nC,GAAM0C,UAAUpQ,SAASv6B,IAAKO,MAExBA,IACR,GAGD0nC,GAAMxnC,UAAUwf,KAAKxf,UAAYwnC,GAAMxnC,UAEvCwnC,GAAM0C,UAAY,CACjBpQ,SAAU,CACTlyB,IAAK,SAAUswB,GACd,IAAI74B,EAIJ,OAA6B,IAAxB64B,EAAMvY,KAAKnG,UACa,MAA5B0e,EAAMvY,KAAMuY,EAAM9B,OAAoD,MAAlC8B,EAAMvY,KAAK7T,MAAOosB,EAAM9B,MACrD8B,EAAMvY,KAAMuY,EAAM9B,OAO1B/2B,EAASuV,EAAOmjB,IAAKG,EAAMvY,KAAMuY,EAAM9B,KAAM,MAGhB,SAAX/2B,EAAwBA,EAAJ,CACvC,EACAE,IAAK,SAAU24B,GAKTtjB,EAAO61B,GAAGD,KAAMtS,EAAM9B,MAC1BxhB,EAAO61B,GAAGD,KAAMtS,EAAM9B,MAAQ8B,GACK,IAAxBA,EAAMvY,KAAKnG,WACtB5E,EAAO8yB,SAAUxP,EAAM9B,OAC6B,MAAnD8B,EAAMvY,KAAK7T,MAAOg6B,GAAe5N,EAAM9B,OAGxC8B,EAAMvY,KAAMuY,EAAM9B,MAAS8B,EAAMoG,IAFjC1pB,EAAO9I,MAAOosB,EAAMvY,KAAMuY,EAAM9B,KAAM8B,EAAMoG,IAAMpG,EAAMM,KAI1D,IAMFgP,GAAM0C,UAAUQ,UAAYlD,GAAM0C,UAAUS,WAAa,CACxDprC,IAAK,SAAU24B,GACTA,EAAMvY,KAAKnG,UAAY0e,EAAMvY,KAAKvW,aACtC8uB,EAAMvY,KAAMuY,EAAM9B,MAAS8B,EAAMoG,IAEnC,GAGD1pB,EAAO6yB,OAAS,CACfmD,OAAQ,SAAUC,GACjB,OAAOA,CACR,EACAC,MAAO,SAAUD,GAChB,MAAO,GAAMzqC,KAAK2qC,IAAKF,EAAIzqC,KAAK4qC,IAAO,CACxC,EACAlR,SAAU,SAGXllB,EAAO61B,GAAKjD,GAAMxnC,UAAUwf,KAG5B5K,EAAO61B,GAAGD,KAAO,CAAC,EAKlB,IACCS,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApBnmC,EAASumC,QAAoBn/B,EAAOo/B,sBACxCp/B,EAAOo/B,sBAAuBF,IAE9Bl/B,EAAOE,WAAYg/B,GAAUz2B,EAAO61B,GAAGe,UAGxC52B,EAAO61B,GAAGgB,OAEZ,CAGA,SAASC,KAIR,OAHAv/B,EAAOE,YAAY,WAClB4+B,QAAQ/uC,CACT,IACS+uC,GAAQ5M,KAAKC,KACvB,CAGA,SAASqN,GAAOlmC,EAAMmmC,GACrB,IAAIxwB,EACHve,EAAI,EACJg6B,EAAQ,CAAE0O,OAAQ9/B,GAKnB,IADAmmC,EAAeA,EAAe,EAAI,EAC1B/uC,EAAI,EAAGA,GAAK,EAAI+uC,EAEvB/U,EAAO,UADPzb,EAAQsc,GAAW76B,KACSg6B,EAAO,UAAYzb,GAAU3V,EAO1D,OAJKmmC,IACJ/U,EAAM8Q,QAAU9Q,EAAMsM,MAAQ19B,GAGxBoxB,CACR,CAEA,SAASgV,GAAanoC,EAAO0yB,EAAM0V,GAKlC,IAJA,IAAI5T,EACHiJ,GAAe4K,GAAUC,SAAU5V,IAAU,IAAK9X,OAAQytB,GAAUC,SAAU,MAC9EjwB,EAAQ,EACR7e,EAASikC,EAAWjkC,OACb6e,EAAQ7e,EAAQ6e,IACvB,GAAOmc,EAAQiJ,EAAYplB,GAAQja,KAAMgqC,EAAW1V,EAAM1yB,GAGzD,OAAOw0B,CAGV,CAmNA,SAAS6T,GAAWpsB,EAAMssB,EAAYj8B,GACrC,IAAI3Q,EACH6sC,EACAnwB,EAAQ,EACR7e,EAAS6uC,GAAUI,WAAWjvC,OAC9B41B,EAAWle,EAAO8d,WAAWG,QAAQ,kBAG7B4Y,EAAK9rB,IACb,IACA8rB,EAAO,WACN,GAAKS,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAcnB,IAASS,KAC1BtX,EAAYh0B,KAAKC,IAAK,EAAGyrC,EAAUO,UAAYP,EAAUxB,SAAW8B,GAKpEhC,EAAU,GADHhW,EAAY0X,EAAUxB,UAAY,GAEzCvuB,EAAQ,EACR7e,EAAS4uC,EAAUQ,OAAOpvC,OAEnB6e,EAAQ7e,EAAQ6e,IACvB+vB,EAAUQ,OAAQvwB,GAAQouB,IAAKC,GAMhC,OAHAtX,EAASc,WAAYjU,EAAM,CAAEmsB,EAAW1B,EAAShW,IAG5CgW,EAAU,GAAKltC,EACZk3B,GAIFl3B,GACL41B,EAASc,WAAYjU,EAAM,CAAEmsB,EAAW,EAAG,IAI5ChZ,EAASe,YAAalU,EAAM,CAAEmsB,KACvB,EACR,EACAA,EAAYhZ,EAASrB,QAAS,CAC7B9R,KAAMA,EACNtd,MAAOuS,EAAO8E,OAAQ,CAAC,EAAGuyB,GAC1BM,KAAM33B,EAAO8E,QAAQ,EAAM,CAC1B8yB,cAAe,CAAC,EAChB/E,OAAQ7yB,EAAO6yB,OAAO3N,UACpB9pB,GACHy8B,mBAAoBR,EACpBj3B,gBAAiBhF,EACjBq8B,UAAWpB,IAASS,KACpBpB,SAAUt6B,EAAQs6B,SAClBgC,OAAQ,GACRT,YAAa,SAAUzV,EAAMt1B,GAC5B,IAAIo3B,EAAQtjB,EAAO4yB,MAAO7nB,EAAMmsB,EAAUS,KAAMnW,EAAMt1B,EACrDgrC,EAAUS,KAAKC,cAAepW,IAAU0V,EAAUS,KAAK9E,QAExD,OADAqE,EAAUQ,OAAO3sC,KAAMu4B,GAChBA,CACR,EACAf,KAAM,SAAUuV,GACf,IAAI3wB,EAAQ,EAIX7e,EAASwvC,EAAUZ,EAAUQ,OAAOpvC,OAAS,EAC9C,GAAKgvC,EACJ,OAAOpsC,KAGR,IADAosC,GAAU,EACFnwB,EAAQ7e,EAAQ6e,IACvB+vB,EAAUQ,OAAQvwB,GAAQouB,IAAK,GAUhC,OANKuC,GACJ5Z,EAASc,WAAYjU,EAAM,CAAEmsB,EAAW,EAAG,IAC3ChZ,EAASe,YAAalU,EAAM,CAAEmsB,EAAWY,KAEzC5Z,EAASiB,WAAYpU,EAAM,CAAEmsB,EAAWY,IAElC5sC,IACR,IAEDuC,EAAQypC,EAAUzpC,MAInB,KA/HD,SAAqBA,EAAOmqC,GAC3B,IAAIzwB,EAAOtX,EAAMgjC,EAAQ/jC,EAAOszB,EAGhC,IAAMjb,KAAS1Z,EAed,GAbAolC,EAAS+E,EADT/nC,EAAOqxB,GAAW/Z,IAElBrY,EAAQrB,EAAO0Z,GACV7V,MAAMC,QAASzC,KACnB+jC,EAAS/jC,EAAO,GAChBA,EAAQrB,EAAO0Z,GAAUrY,EAAO,IAG5BqY,IAAUtX,IACdpC,EAAOoC,GAASf,SACTrB,EAAO0Z,KAGfib,EAAQpiB,EAAO8yB,SAAUjjC,KACX,WAAYuyB,EAMzB,IAAMjb,KALNrY,EAAQszB,EAAM+S,OAAQrmC,UACfrB,EAAOoC,GAICf,EACNqY,KAAS1Z,IAChBA,EAAO0Z,GAAUrY,EAAOqY,GACxBywB,EAAezwB,GAAU0rB,QAI3B+E,EAAe/nC,GAASgjC,CAG3B,CA0FCkF,CAAYtqC,EAAOypC,EAAUS,KAAKC,eAE1BzwB,EAAQ7e,EAAQ6e,IAEvB,GADA1c,EAAS0sC,GAAUI,WAAYpwB,GAAQja,KAAMgqC,EAAWnsB,EAAMtd,EAAOypC,EAAUS,MAM9E,OAJKvyB,EAAY3a,EAAO83B,QACvBviB,EAAOqiB,YAAa6U,EAAUnsB,KAAMmsB,EAAUS,KAAKna,OAAQ+E,KAC1D93B,EAAO83B,KAAKyV,KAAMvtC,IAEbA,EAyBT,OArBAuV,EAAOvC,IAAKhQ,EAAOwpC,GAAaC,GAE3B9xB,EAAY8xB,EAAUS,KAAK7nC,QAC/BonC,EAAUS,KAAK7nC,MAAM5C,KAAM6d,EAAMmsB,GAIlCA,EACEtiC,SAAUsiC,EAAUS,KAAK/iC,UACzBwH,KAAM86B,EAAUS,KAAKv7B,KAAM86B,EAAUS,KAAKj8B,UAC1CohB,KAAMoa,EAAUS,KAAK7a,MACrBmB,OAAQiZ,EAAUS,KAAK1Z,QAEzBje,EAAO61B,GAAGoC,MACTj4B,EAAO8E,OAAQ+xB,EAAM,CACpB9rB,KAAMA,EACNmtB,KAAMhB,EACN1Z,MAAO0Z,EAAUS,KAAKna,SAIjB0Z,CACR,CAEAl3B,EAAOm3B,UAAYn3B,EAAO8E,OAAQqyB,GAAW,CAE5CC,SAAU,CACT,IAAK,CAAE,SAAU5V,EAAM1yB,GACtB,IAAIw0B,EAAQp4B,KAAK+rC,YAAazV,EAAM1yB,GAEpC,OADAs0B,GAAWE,EAAMvY,KAAMyW,EAAMqB,GAAQpR,KAAM3iB,GAASw0B,GAC7CA,CACR,IAGD6U,QAAS,SAAU1qC,EAAOsB,GACpBqW,EAAY3X,IAChBsB,EAAWtB,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAM1E,MAAOqzB,GAOtB,IAJA,IAAIoF,EACHra,EAAQ,EACR7e,EAASmF,EAAMnF,OAER6e,EAAQ7e,EAAQ6e,IACvBqa,EAAO/zB,EAAO0Z,GACdgwB,GAAUC,SAAU5V,GAAS2V,GAAUC,SAAU5V,IAAU,GAC3D2V,GAAUC,SAAU5V,GAAOc,QAASvzB,EAEtC,EAEAwoC,WAAY,CA3Wb,SAA2BxsB,EAAMtd,EAAOkqC,GACvC,IAAInW,EAAM1yB,EAAOq1B,EAAQ/B,EAAOgW,EAASC,EAAWC,EAAgBnhC,EACnEohC,EAAQ,UAAW9qC,GAAS,WAAYA,EACxCyqC,EAAOhtC,KACPugC,EAAO,CAAC,EACRv0B,EAAQ6T,EAAK7T,MACbw/B,EAAS3rB,EAAKnG,UAAYse,GAAoBnY,GAC9CytB,EAAW9W,GAAS1uB,IAAK+X,EAAM,UA6BhC,IAAMyW,KA1BAmW,EAAKna,QAEa,OADvB4E,EAAQpiB,EAAOqiB,YAAatX,EAAM,OACvB0tB,WACVrW,EAAMqW,SAAW,EACjBL,EAAUhW,EAAM3L,MAAM5c,KACtBuoB,EAAM3L,MAAM5c,KAAO,WACZuoB,EAAMqW,UACXL,GAEF,GAEDhW,EAAMqW,WAENP,EAAKja,QAAQ,WAGZia,EAAKja,QAAQ,WACZmE,EAAMqW,WACAz4B,EAAOwd,MAAOzS,EAAM,MAAOziB,QAChC85B,EAAM3L,MAAM5c,MAEd,GACD,KAIapM,EAEb,GADAqB,EAAQrB,EAAO+zB,GACV+U,GAAS7sC,KAAMoF,GAAU,CAG7B,UAFOrB,EAAO+zB,GACd2C,EAASA,GAAoB,WAAVr1B,EACdA,KAAY4nC,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAV5nC,IAAoB0pC,QAAiClxC,IAArBkxC,EAAUhX,GAK9C,SAJAkV,GAAS,CAMX,CACAjL,EAAMjK,GAASgX,GAAYA,EAAUhX,IAAUxhB,EAAO9I,MAAO6T,EAAMyW,EACpE,CAKD,IADA6W,GAAar4B,EAAOsM,cAAe7e,MAChBuS,EAAOsM,cAAemf,GA8DzC,IAAMjK,KAzDD+W,GAA2B,IAAlBxtB,EAAKnG,WAMlB+yB,EAAKe,SAAW,CAAExhC,EAAMwhC,SAAUxhC,EAAMyhC,UAAWzhC,EAAM0hC,WAIlC,OADvBN,EAAiBE,GAAYA,EAASrhC,WAErCmhC,EAAiB5W,GAAS1uB,IAAK+X,EAAM,YAGrB,UADjB5T,EAAU6I,EAAOmjB,IAAKpY,EAAM,cAEtButB,EACJnhC,EAAUmhC,GAIVrU,GAAU,CAAElZ,IAAQ,GACpButB,EAAiBvtB,EAAK7T,MAAMC,SAAWmhC,EACvCnhC,EAAU6I,EAAOmjB,IAAKpY,EAAM,WAC5BkZ,GAAU,CAAElZ,OAKG,WAAZ5T,GAAoC,iBAAZA,GAAgD,MAAlBmhC,IACrB,SAAhCt4B,EAAOmjB,IAAKpY,EAAM,WAGhBstB,IACLH,EAAK97B,MAAM,WACVlF,EAAMC,QAAUmhC,CACjB,IACuB,MAAlBA,IACJnhC,EAAUD,EAAMC,QAChBmhC,EAA6B,SAAZnhC,EAAqB,GAAKA,IAG7CD,EAAMC,QAAU,iBAKdwgC,EAAKe,WACTxhC,EAAMwhC,SAAW,SACjBR,EAAKja,QAAQ,WACZ/mB,EAAMwhC,SAAWf,EAAKe,SAAU,GAChCxhC,EAAMyhC,UAAYhB,EAAKe,SAAU,GACjCxhC,EAAM0hC,UAAYjB,EAAKe,SAAU,EAClC,KAIDL,GAAY,EACE5M,EAGP4M,IACAG,EACC,WAAYA,IAChB9B,EAAS8B,EAAS9B,QAGnB8B,EAAW9W,GAASjB,OAAQ1V,EAAM,SAAU,CAAE5T,QAASmhC,IAInDnU,IACJqU,EAAS9B,QAAUA,GAIfA,GACJzS,GAAU,CAAElZ,IAAQ,GAKrBmtB,EAAK97B,MAAM,WASV,IAAMolB,KAJAkV,GACLzS,GAAU,CAAElZ,IAEb2W,GAASze,OAAQ8H,EAAM,UACT0gB,EACbzrB,EAAO9I,MAAO6T,EAAMyW,EAAMiK,EAAMjK,GAElC,KAID6W,EAAYpB,GAAaP,EAAS8B,EAAUhX,GAAS,EAAGA,EAAM0W,GACtD1W,KAAQgX,IACfA,EAAUhX,GAAS6W,EAAUvoC,MACxB4mC,IACJ2B,EAAUnsC,IAAMmsC,EAAUvoC,MAC1BuoC,EAAUvoC,MAAQ,GAItB,GAmMC+oC,UAAW,SAAU9pC,EAAUq+B,GACzBA,EACJ+J,GAAUI,WAAWjV,QAASvzB,GAE9BooC,GAAUI,WAAWxsC,KAAMgE,EAE7B,IAGDiR,EAAO84B,MAAQ,SAAUA,EAAOjG,EAAQ3rC,GACvC,IAAI6xC,EAAMD,GAA0B,kBAAVA,EAAqB94B,EAAO8E,OAAQ,CAAC,EAAGg0B,GAAU,CAC3Ep9B,SAAUxU,IAAOA,GAAM2rC,GACtBztB,EAAY0zB,IAAWA,EACxBpD,SAAUoD,EACVjG,OAAQ3rC,GAAM2rC,GAAUA,IAAWztB,EAAYytB,IAAYA,GAoC5D,OAhCK7yB,EAAO61B,GAAGluB,IACdoxB,EAAIrD,SAAW,EAGc,kBAAjBqD,EAAIrD,WACVqD,EAAIrD,YAAY11B,EAAO61B,GAAGmD,OAC9BD,EAAIrD,SAAW11B,EAAO61B,GAAGmD,OAAQD,EAAIrD,UAGrCqD,EAAIrD,SAAW11B,EAAO61B,GAAGmD,OAAO9T,UAMjB,MAAb6T,EAAIvb,QAA+B,IAAdub,EAAIvb,QAC7Bub,EAAIvb,MAAQ,MAIbub,EAAI5K,IAAM4K,EAAIr9B,SAEdq9B,EAAIr9B,SAAW,WACT0J,EAAY2zB,EAAI5K,MACpB4K,EAAI5K,IAAIjhC,KAAMhC,MAGV6tC,EAAIvb,OACRxd,EAAOkiB,QAASh3B,KAAM6tC,EAAIvb,MAE5B,EAEOub,CACR,EAEA/4B,EAAO9Y,GAAG4d,OAAQ,CACjBm0B,OAAQ,SAAUH,EAAOltC,EAAIinC,EAAQ9jC,GAGpC,OAAO7D,KAAKqK,OAAQ2tB,IAAqBC,IAAK,UAAW,GAAItb,OAG3D3b,MAAMgtC,QAAS,CAAEnG,QAASnnC,GAAMktC,EAAOjG,EAAQ9jC,EAClD,EACAmqC,QAAS,SAAU1X,EAAMsX,EAAOjG,EAAQ9jC,GACvC,IAAI0nB,EAAQzW,EAAOsM,cAAekV,GACjC2X,EAASn5B,EAAO84B,MAAOA,EAAOjG,EAAQ9jC,GACtCqqC,EAAc,WAGb,IAAIlB,EAAOf,GAAWjsC,KAAM8U,EAAO8E,OAAQ,CAAC,EAAG0c,GAAQ2X,IAGlD1iB,GAASiL,GAAS1uB,IAAK9H,KAAM,YACjCgtC,EAAK3V,MAAM,EAEb,EAID,OAFA6W,EAAYC,OAASD,EAEd3iB,IAA0B,IAAjB0iB,EAAO3b,MACtBtyB,KAAKyZ,KAAMy0B,GACXluC,KAAKsyB,MAAO2b,EAAO3b,MAAO4b,EAC5B,EACA7W,KAAM,SAAU1xB,EAAM4xB,EAAYqV,GACjC,IAAIwB,EAAY,SAAUlX,GACzB,IAAIG,EAAOH,EAAMG,YACVH,EAAMG,KACbA,EAAMuV,EACP,EAWA,MATqB,kBAATjnC,IACXinC,EAAUrV,EACVA,EAAa5xB,EACbA,OAAOvJ,GAEHm7B,GACJv3B,KAAKsyB,MAAO3sB,GAAQ,KAAM,IAGpB3F,KAAKyZ,MAAM,WACjB,IAAIud,GAAU,EACb/a,EAAgB,MAARtW,GAAgBA,EAAO,aAC/B0oC,EAASv5B,EAAOu5B,OAChBp/B,EAAOunB,GAAS1uB,IAAK9H,MAEtB,GAAKic,EACChN,EAAMgN,IAAWhN,EAAMgN,GAAQob,MACnC+W,EAAWn/B,EAAMgN,SAGlB,IAAMA,KAAShN,EACTA,EAAMgN,IAAWhN,EAAMgN,GAAQob,MAAQiU,GAAK9sC,KAAMyd,IACtDmyB,EAAWn/B,EAAMgN,IAKpB,IAAMA,EAAQoyB,EAAOjxC,OAAQ6e,KACvBoyB,EAAQpyB,GAAQ4D,OAAS7f,MACnB,MAAR2F,GAAgB0oC,EAAQpyB,GAAQqW,QAAU3sB,IAE5C0oC,EAAQpyB,GAAQ+wB,KAAK3V,KAAMuV,GAC3B5V,GAAU,EACVqX,EAAOj1B,OAAQ6C,EAAO,KAOnB+a,GAAY4V,GAChB93B,EAAOkiB,QAASh3B,KAAM2F,EAExB,GACD,EACAwoC,OAAQ,SAAUxoC,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAET3F,KAAKyZ,MAAM,WACjB,IAAIwC,EACHhN,EAAOunB,GAAS1uB,IAAK9H,MACrBsyB,EAAQrjB,EAAMtJ,EAAO,SACrBuxB,EAAQjoB,EAAMtJ,EAAO,cACrB0oC,EAASv5B,EAAOu5B,OAChBjxC,EAASk1B,EAAQA,EAAMl1B,OAAS,EAajC,IAVA6R,EAAKk/B,QAAS,EAGdr5B,EAAOwd,MAAOtyB,KAAM2F,EAAM,IAErBuxB,GAASA,EAAMG,MACnBH,EAAMG,KAAKr1B,KAAMhC,MAAM,GAIlBic,EAAQoyB,EAAOjxC,OAAQ6e,KACvBoyB,EAAQpyB,GAAQ4D,OAAS7f,MAAQquC,EAAQpyB,GAAQqW,QAAU3sB,IAC/D0oC,EAAQpyB,GAAQ+wB,KAAK3V,MAAM,GAC3BgX,EAAOj1B,OAAQ6C,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQ7e,EAAQ6e,IAC3BqW,EAAOrW,IAAWqW,EAAOrW,GAAQkyB,QACrC7b,EAAOrW,GAAQkyB,OAAOnsC,KAAMhC,aAKvBiP,EAAKk/B,MACb,GACD,IAGDr5B,EAAO2E,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAU2I,EAAIzd,GACxD,IAAI2pC,EAAQx5B,EAAO9Y,GAAI2I,GACvBmQ,EAAO9Y,GAAI2I,GAAS,SAAUipC,EAAOjG,EAAQ9jC,GAC5C,OAAgB,MAAT+pC,GAAkC,mBAAVA,EAC9BU,EAAMnvC,MAAOa,KAAM6F,WACnB7F,KAAKguC,QAASnC,GAAOlnC,GAAM,GAAQipC,EAAOjG,EAAQ9jC,EACpD,CACD,IAGAiR,EAAO2E,KAAM,CACZ80B,UAAW1C,GAAO,QAClB2C,QAAS3C,GAAO,QAChB4C,YAAa5C,GAAO,UACpBx1B,OAAQ,CAAEwxB,QAAS,QACnB6G,QAAS,CAAE7G,QAAS,QACpB8G,WAAY,CAAE9G,QAAS,YACrB,SAAUljC,EAAMpC,GAClBuS,EAAO9Y,GAAI2I,GAAS,SAAUipC,EAAOjG,EAAQ9jC,GAC5C,OAAO7D,KAAKguC,QAASzrC,EAAOqrC,EAAOjG,EAAQ9jC,EAC5C,CACD,IAEAiR,EAAOu5B,OAAS,GAChBv5B,EAAO61B,GAAGgB,KAAO,WAChB,IAAIoB,EACHhwC,EAAI,EACJsxC,EAASv5B,EAAOu5B,OAIjB,IAFAlD,GAAQ5M,KAAKC,MAELzhC,EAAIsxC,EAAOjxC,OAAQL,KAC1BgwC,EAAQsB,EAAQtxC,OAGCsxC,EAAQtxC,KAAQgwC,GAChCsB,EAAOj1B,OAAQrc,IAAK,GAIhBsxC,EAAOjxC,QACZ0X,EAAO61B,GAAGtT,OAEX8T,QAAQ/uC,CACT,EAEA0Y,EAAO61B,GAAGoC,MAAQ,SAAUA,GAC3Bj4B,EAAOu5B,OAAOxuC,KAAMktC,GACpBj4B,EAAO61B,GAAG/lC,OACX,EAEAkQ,EAAO61B,GAAGe,SAAW,GACrB52B,EAAO61B,GAAG/lC,MAAQ,WACZwmC,KAILA,IAAa,EACbG,KACD,EAEAz2B,EAAO61B,GAAGtT,KAAO,WAChB+T,GAAa,IACd,EAEAt2B,EAAO61B,GAAGmD,OAAS,CAClBc,KAAM,IACNC,KAAM,IAGN7U,SAAU,KAKXllB,EAAO9Y,GAAG8yC,MAAQ,SAAUC,EAAMppC,GAIjC,OAHAopC,EAAOj6B,EAAO61B,IAAK71B,EAAO61B,GAAGmD,OAAQiB,IAAiBA,EACtDppC,EAAOA,GAAQ,KAER3F,KAAKsyB,MAAO3sB,GAAM,SAAU8V,EAAMyb,GACxC,IAAI8X,EAAU3iC,EAAOE,WAAYkP,EAAMszB,GACvC7X,EAAMG,KAAO,WACZhrB,EAAO4iC,aAAcD,EACtB,CACD,GACD,EAGA,WACC,IAAIhmC,EAAQ/D,EAASmE,cAAe,SAEnCykC,EADS5oC,EAASmE,cAAe,UACpB8C,YAAajH,EAASmE,cAAe,WAEnDJ,EAAMrD,KAAO,WAIbkZ,EAAQqwB,QAA0B,KAAhBlmC,EAAMpF,MAIxBib,EAAQswB,YAActB,EAAIx7B,UAI1BrJ,EAAQ/D,EAASmE,cAAe,UAC1BxF,MAAQ,IACdoF,EAAMrD,KAAO,QACbkZ,EAAQuwB,WAA6B,MAAhBpmC,EAAMpF,KAC1B,CArBF,GAwBA,IAAIyrC,GACH1mB,GAAa7T,EAAO4T,KAAKC,WAE1B7T,EAAO9Y,GAAG4d,OAAQ,CACjB5C,KAAM,SAAUrS,EAAMf,GACrB,OAAO2xB,GAAQv1B,KAAM8U,EAAOkC,KAAMrS,EAAMf,EAAOiC,UAAUzI,OAAS,EACnE,EAEAge,WAAY,SAAUzW,GACrB,OAAO3E,KAAKyZ,MAAM,WACjB3E,EAAOsG,WAAYpb,KAAM2E,EAC1B,GACD,IAGDmQ,EAAO8E,OAAQ,CACd5C,KAAM,SAAU6I,EAAMlb,EAAMf,GAC3B,IAAIpC,EAAK01B,EACRoY,EAAQzvB,EAAKnG,SAGd,GAAe,IAAV41B,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,MAAkC,qBAAtBzvB,EAAK1a,aACT2P,EAAOwhB,KAAMzW,EAAMlb,EAAMf,IAKlB,IAAV0rC,GAAgBx6B,EAAO2M,SAAU5B,KACrCqX,EAAQpiB,EAAOy6B,UAAW5qC,EAAK4V,iBAC5BzF,EAAO4T,KAAK7qB,MAAMknB,KAAKvmB,KAAMmG,GAAS0qC,QAAWjzC,SAGtCA,IAAVwH,EACW,OAAVA,OACJkR,EAAOsG,WAAYyE,EAAMlb,GAIrBuyB,GAAS,QAASA,QACuB96B,KAA3CoF,EAAM01B,EAAMz3B,IAAKogB,EAAMjc,EAAOe,IACzBnD,GAGRqe,EAAKrU,aAAc7G,EAAMf,EAAQ,IAC1BA,GAGHszB,GAAS,QAASA,GAA+C,QAApC11B,EAAM01B,EAAMpvB,IAAK+X,EAAMlb,IACjDnD,EAMM,OAHdA,EAAMsT,EAAOmR,KAAKjP,KAAM6I,EAAMlb,SAGTvI,EAAYoF,EAClC,EAEA+tC,UAAW,CACV5pC,KAAM,CACLlG,IAAK,SAAUogB,EAAMjc,GACpB,IAAMib,EAAQuwB,YAAwB,UAAVxrC,GAC3Bgc,EAAUC,EAAM,SAAY,CAC5B,IAAIxf,EAAMwf,EAAKjc,MAKf,OAJAic,EAAKrU,aAAc,OAAQ5H,GACtBvD,IACJwf,EAAKjc,MAAQvD,GAEPuD,CACR,CACD,IAIFwX,WAAY,SAAUyE,EAAMjc,GAC3B,IAAIe,EACH5H,EAAI,EAIJyyC,EAAY5rC,GAASA,EAAM/F,MAAOqzB,GAEnC,GAAKse,GAA+B,IAAlB3vB,EAAKnG,SACtB,KAAU/U,EAAO6qC,EAAWzyC,MAC3B8iB,EAAKnU,gBAAiB/G,EAGzB,IAID0qC,GAAW,CACV5vC,IAAK,SAAUogB,EAAMjc,EAAOe,GAQ3B,OAPe,IAAVf,EAGJkR,EAAOsG,WAAYyE,EAAMlb,GAEzBkb,EAAKrU,aAAc7G,EAAMA,GAEnBA,CACR,GAGDmQ,EAAO2E,KAAM3E,EAAO4T,KAAK7qB,MAAMknB,KAAKlL,OAAOhc,MAAO,SAAU,SAAUukB,EAAIzd,GACzE,IAAI8qC,EAAS9mB,GAAYhkB,IAAUmQ,EAAOmR,KAAKjP,KAE/C2R,GAAYhkB,GAAS,SAAUkb,EAAMlb,EAAM0qB,GAC1C,IAAI7tB,EAAKi7B,EACRiT,EAAgB/qC,EAAK4V,cAYtB,OAVM8U,IAGLoN,EAAS9T,GAAY+mB,GACrB/mB,GAAY+mB,GAAkBluC,EAC9BA,EAAqC,MAA/BiuC,EAAQ5vB,EAAMlb,EAAM0qB,GACzBqgB,EACA,KACD/mB,GAAY+mB,GAAkBjT,GAExBj7B,CACR,CACD,IAKA,IAAImuC,GAAa,sCAChBC,GAAa,gBAwIb,SAASC,GAAkBjsC,GAE1B,OADaA,EAAM/F,MAAOqzB,IAAmB,IAC/B7yB,KAAM,IACrB,CAGD,SAASyxC,GAAUjwB,GAClB,OAAOA,EAAK1a,cAAgB0a,EAAK1a,aAAc,UAAa,EAC7D,CAEA,SAAS4qC,GAAgBnsC,GACxB,OAAKwC,MAAMC,QAASzC,GACZA,EAEc,kBAAVA,GACJA,EAAM/F,MAAOqzB,IAEd,EACR,CAxJApc,EAAO9Y,GAAG4d,OAAQ,CACjB0c,KAAM,SAAU3xB,EAAMf,GACrB,OAAO2xB,GAAQv1B,KAAM8U,EAAOwhB,KAAM3xB,EAAMf,EAAOiC,UAAUzI,OAAS,EACnE,EAEA4yC,WAAY,SAAUrrC,GACrB,OAAO3E,KAAKyZ,MAAM,kBACVzZ,KAAM8U,EAAOm7B,QAAStrC,IAAUA,EACxC,GACD,IAGDmQ,EAAO8E,OAAQ,CACd0c,KAAM,SAAUzW,EAAMlb,EAAMf,GAC3B,IAAIpC,EAAK01B,EACRoY,EAAQzvB,EAAKnG,SAGd,GAAe,IAAV41B,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgBx6B,EAAO2M,SAAU5B,KAGrClb,EAAOmQ,EAAOm7B,QAAStrC,IAAUA,EACjCuyB,EAAQpiB,EAAOs1B,UAAWzlC,SAGZvI,IAAVwH,EACCszB,GAAS,QAASA,QACuB96B,KAA3CoF,EAAM01B,EAAMz3B,IAAKogB,EAAMjc,EAAOe,IACzBnD,EAGCqe,EAAMlb,GAASf,EAGpBszB,GAAS,QAASA,GAA+C,QAApC11B,EAAM01B,EAAMpvB,IAAK+X,EAAMlb,IACjDnD,EAGDqe,EAAMlb,EACd,EAEAylC,UAAW,CACVhf,SAAU,CACTtjB,IAAK,SAAU+X,GAMd,IAAIqwB,EAAWp7B,EAAOmR,KAAKjP,KAAM6I,EAAM,YAEvC,OAAKqwB,EACGpyC,SAAUoyC,EAAU,IAI3BP,GAAWnxC,KAAMqhB,EAAKD,WACtBgwB,GAAWpxC,KAAMqhB,EAAKD,WACtBC,EAAKhP,KAEE,GAGA,CACT,IAIFo/B,QAAS,CACR,IAAO,UACP,MAAS,eAYLpxB,EAAQswB,cACbr6B,EAAOs1B,UAAU/3B,SAAW,CAC3BvK,IAAK,SAAU+X,GAId,IAAIoK,EAASpK,EAAKvW,WAIlB,OAHK2gB,GAAUA,EAAO3gB,YACrB2gB,EAAO3gB,WAAWgiB,cAEZ,IACR,EACA7rB,IAAK,SAAUogB,GAId,IAAIoK,EAASpK,EAAKvW,WACb2gB,IACJA,EAAOqB,cAEFrB,EAAO3gB,YACX2gB,EAAO3gB,WAAWgiB,cAGrB,IAIFxW,EAAO2E,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACF3E,EAAOm7B,QAASjwC,KAAKua,eAAkBva,IACxC,IA2BA8U,EAAO9Y,GAAG4d,OAAQ,CACjBd,SAAU,SAAUlV,GACnB,IAAIusC,EAAY7f,EAAK8f,EAAU7nB,EAAWxrB,EAAGszC,EAE7C,OAAKn2B,EAAYtW,GACT5D,KAAKyZ,MAAM,SAAUtb,GAC3B2W,EAAQ9U,MAAO8Y,SAAUlV,EAAM5B,KAAMhC,KAAM7B,EAAG2xC,GAAU9vC,OACzD,KAGDmwC,EAAaJ,GAAgBnsC,IAEbxG,OACR4C,KAAKyZ,MAAM,WAIjB,GAHA22B,EAAWN,GAAU9vC,MACrBswB,EAAwB,IAAlBtwB,KAAK0Z,UAAoB,IAAMm2B,GAAkBO,GAAa,IAEzD,CACV,IAAMrzC,EAAI,EAAGA,EAAIozC,EAAW/yC,OAAQL,IACnCwrB,EAAY4nB,EAAYpzC,GACnBuzB,EAAIvf,QAAS,IAAMwX,EAAY,KAAQ,IAC3C+H,GAAO/H,EAAY,KAKrB8nB,EAAaR,GAAkBvf,GAC1B8f,IAAaC,GACjBrwC,KAAKwL,aAAc,QAAS6kC,EAE9B,CACD,IAGMrwC,IACR,EAEAqZ,YAAa,SAAUzV,GACtB,IAAIusC,EAAY7f,EAAK8f,EAAU7nB,EAAWxrB,EAAGszC,EAE7C,OAAKn2B,EAAYtW,GACT5D,KAAKyZ,MAAM,SAAUtb,GAC3B2W,EAAQ9U,MAAOqZ,YAAazV,EAAM5B,KAAMhC,KAAM7B,EAAG2xC,GAAU9vC,OAC5D,IAGK6F,UAAUzI,QAIhB+yC,EAAaJ,GAAgBnsC,IAEbxG,OACR4C,KAAKyZ,MAAM,WAMjB,GALA22B,EAAWN,GAAU9vC,MAGrBswB,EAAwB,IAAlBtwB,KAAK0Z,UAAoB,IAAMm2B,GAAkBO,GAAa,IAEzD,CACV,IAAMrzC,EAAI,EAAGA,EAAIozC,EAAW/yC,OAAQL,IAInC,IAHAwrB,EAAY4nB,EAAYpzC,GAGhBuzB,EAAIvf,QAAS,IAAMwX,EAAY,MAAS,GAC/C+H,EAAMA,EAAI7e,QAAS,IAAM8W,EAAY,IAAK,KAK5C8nB,EAAaR,GAAkBvf,GAC1B8f,IAAaC,GACjBrwC,KAAKwL,aAAc,QAAS6kC,EAE9B,CACD,IAGMrwC,KA/BCA,KAAKgX,KAAM,QAAS,GAgC7B,EAEAs5B,YAAa,SAAU1sC,EAAO2sC,GAC7B,IAAIJ,EAAY5nB,EAAWxrB,EAAG8a,EAC7BlS,SAAc/B,EACd4sC,EAAwB,WAAT7qC,GAAqBS,MAAMC,QAASzC,GAEpD,OAAKsW,EAAYtW,GACT5D,KAAKyZ,MAAM,SAAU1c,GAC3B+X,EAAQ9U,MAAOswC,YACd1sC,EAAM5B,KAAMhC,KAAMjD,EAAG+yC,GAAU9vC,MAAQuwC,GACvCA,EAEF,IAGwB,mBAAbA,GAA0BC,EAC9BD,EAAWvwC,KAAK8Y,SAAUlV,GAAU5D,KAAKqZ,YAAazV,IAG9DusC,EAAaJ,GAAgBnsC,GAEtB5D,KAAKyZ,MAAM,WACjB,GAAK+2B,EAKJ,IAFA34B,EAAO/C,EAAQ9U,MAETjD,EAAI,EAAGA,EAAIozC,EAAW/yC,OAAQL,IACnCwrB,EAAY4nB,EAAYpzC,GAGnB8a,EAAK44B,SAAUloB,GACnB1Q,EAAKwB,YAAakP,GAElB1Q,EAAKiB,SAAUyP,aAKInsB,IAAVwH,GAAgC,YAAT+B,KAClC4iB,EAAYunB,GAAU9vC,QAIrBw2B,GAAS/2B,IAAKO,KAAM,gBAAiBuoB,GAOjCvoB,KAAKwL,cACTxL,KAAKwL,aAAc,QAClB+c,IAAuB,IAAV3kB,EACZ,GACA4yB,GAAS1uB,IAAK9H,KAAM,kBAAqB,IAI9C,IACD,EAEAywC,SAAU,SAAUnrC,GACnB,IAAIijB,EAAW1I,EACd9iB,EAAI,EAGL,IADAwrB,EAAY,IAAMjjB,EAAW,IACnBua,EAAO7f,KAAMjD,MACtB,GAAuB,IAAlB8iB,EAAKnG,WACP,IAAMm2B,GAAkBC,GAAUjwB,IAAW,KAAM9O,QAASwX,IAAe,EAC7E,OAAO,EAIT,OAAO,CACR,IAMD,IAAImoB,GAAU,MAEd57B,EAAO9Y,GAAG4d,OAAQ,CACjBvZ,IAAK,SAAUuD,GACd,IAAIszB,EAAO11B,EAAKggC,EACf3hB,EAAO7f,KAAM,GAEd,OAAM6F,UAAUzI,QA0BhBokC,EAAkBtnB,EAAYtW,GAEvB5D,KAAKyZ,MAAM,SAAU1c,GAC3B,IAAIsD,EAEmB,IAAlBL,KAAK0Z,WAWE,OANXrZ,EADImhC,EACE59B,EAAM5B,KAAMhC,KAAMjD,EAAG+X,EAAQ9U,MAAOK,OAEpCuD,GAKNvD,EAAM,GAEoB,kBAARA,EAClBA,GAAO,GAEI+F,MAAMC,QAAShG,KAC1BA,EAAMyU,EAAOvC,IAAKlS,GAAK,SAAUuD,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACrC,MAGDszB,EAAQpiB,EAAO67B,SAAU3wC,KAAK2F,OAAUmP,EAAO67B,SAAU3wC,KAAK4f,SAASrF,iBAGrD,QAAS2c,QAA+C96B,IAApC86B,EAAMz3B,IAAKO,KAAMK,EAAK,WAC3DL,KAAK4D,MAAQvD,GAEf,KA3DMwf,GACJqX,EAAQpiB,EAAO67B,SAAU9wB,EAAKla,OAC7BmP,EAAO67B,SAAU9wB,EAAKD,SAASrF,iBAG/B,QAAS2c,QACgC96B,KAAvCoF,EAAM01B,EAAMpvB,IAAK+X,EAAM,UAElBre,EAMY,kBAHpBA,EAAMqe,EAAKjc,OAIHpC,EAAIiQ,QAASi/B,GAAS,IAIhB,MAAPlvC,EAAc,GAAKA,OAG3B,CAsCF,IAGDsT,EAAO8E,OAAQ,CACd+2B,SAAU,CACTv+B,OAAQ,CACPtK,IAAK,SAAU+X,GAEd,IAAIxf,EAAMyU,EAAOmR,KAAKjP,KAAM6I,EAAM,SAClC,OAAc,MAAPxf,EACNA,EAMAwvC,GAAkB/6B,EAAOlF,KAAMiQ,GACjC,GAEDmH,OAAQ,CACPlf,IAAK,SAAU+X,GACd,IAAIjc,EAAOwO,EAAQrV,EAClBmT,EAAU2P,EAAK3P,QACf+L,EAAQ4D,EAAKyL,cACbkQ,EAAoB,eAAd3b,EAAKla,KACXqzB,EAASwC,EAAM,KAAO,GACtBj7B,EAAMi7B,EAAMvf,EAAQ,EAAI/L,EAAQ9S,OAUjC,IAPCL,EADIkf,EAAQ,EACR1b,EAGAi7B,EAAMvf,EAAQ,EAIXlf,EAAIwD,EAAKxD,IAKhB,KAJAqV,EAASlC,EAASnT,IAIJsV,UAAYtV,IAAMkf,KAG7B7J,EAAOtM,YACLsM,EAAO9I,WAAWxD,WACnB8Z,EAAUxN,EAAO9I,WAAY,aAAiB,CAMjD,GAHA1F,EAAQkR,EAAQ1C,GAAS/R,MAGpBm7B,EACJ,OAAO53B,EAIRo1B,EAAOn5B,KAAM+D,EACd,CAGD,OAAOo1B,CACR,EAEAv5B,IAAK,SAAUogB,EAAMjc,GAMpB,IALA,IAAIgtC,EAAWx+B,EACdlC,EAAU2P,EAAK3P,QACf8oB,EAASlkB,EAAO0M,UAAW5d,GAC3B7G,EAAImT,EAAQ9S,OAELL,OACPqV,EAASlC,EAASnT,IAINsV,SACXyC,EAAOqE,QAASrE,EAAO67B,SAASv+B,OAAOtK,IAAKsK,GAAU4mB,IAAY,KAElE4X,GAAY,GAUd,OAHMA,IACL/wB,EAAKyL,eAAiB,GAEhB0N,CACR,MAMHlkB,EAAO2E,KAAM,CAAE,QAAS,aAAc,WACrC3E,EAAO67B,SAAU3wC,MAAS,CACzBP,IAAK,SAAUogB,EAAMjc,GACpB,GAAKwC,MAAMC,QAASzC,GACnB,OAASic,EAAKvN,QAAUwC,EAAOqE,QAASrE,EAAQ+K,GAAOxf,MAAOuD,IAAW,CAE3E,GAEKib,EAAQqwB,UACbp6B,EAAO67B,SAAU3wC,MAAO8H,IAAM,SAAU+X,GACvC,OAAwC,OAAjCA,EAAK1a,aAAc,SAAqB,KAAO0a,EAAKjc,KAC5D,EAEF,IAMA,IAAIgN,GAAWvE,EAAOuE,SAElBxD,GAAQ,CAAE6U,KAAMsc,KAAKC,OAErBqS,GAAS,KAKb/7B,EAAOg8B,SAAW,SAAU7hC,GAC3B,IAAIa,EAAKihC,EACT,IAAM9hC,GAAwB,kBAATA,EACpB,OAAO,KAKR,IACCa,GAAM,IAAMzD,EAAOmF,WAAcE,gBAAiBzC,EAAM,WACzD,CAAE,MAAQE,GAAK,CAYf,OAVA4hC,EAAkBjhC,GAAOA,EAAI2W,qBAAsB,eAAiB,GAC9D3W,IAAOihC,GACZj8B,EAAOvM,MAAO,iBACbwoC,EACCj8B,EAAOvC,IAAKw+B,EAAgBhrB,YAAY,SAAUtT,GACjD,OAAOA,EAAG6O,WACX,IAAIjjB,KAAM,MACV4Q,IAGIa,CACR,EAGA,IAAIkhC,GAAc,kCACjBC,GAA0B,SAAU9hC,GACnCA,EAAEC,iBACH,EAED0F,EAAO8E,OAAQ9E,EAAO1Q,MAAO,CAE5BoU,QAAS,SAAUpU,EAAO6K,EAAM4Q,EAAMqxB,GAErC,IAAIn0C,EAAGuzB,EAAKhzB,EAAK6zC,EAAYC,EAAQ3U,EAAQ9I,EAAS0d,EACrDC,EAAY,CAAEzxB,GAAQ5a,GACtBU,EAAO+Y,EAAO1c,KAAMoC,EAAO,QAAWA,EAAMuB,KAAOvB,EACnDk4B,EAAa5d,EAAO1c,KAAMoC,EAAO,aAAgBA,EAAMsd,UAAUzJ,MAAO,KAAQ,GAKjF,GAHAqY,EAAM+gB,EAAc/zC,EAAMuiB,EAAOA,GAAQ5a,EAGlB,IAAlB4a,EAAKnG,UAAoC,IAAlBmG,EAAKnG,WAK5Bs3B,GAAYxyC,KAAMmH,EAAOmP,EAAO1Q,MAAMs4B,aAItC/2B,EAAKoL,QAAS,MAAS,IAG3BurB,EAAa32B,EAAKsS,MAAO,KACzBtS,EAAO22B,EAAW3xB,QAClB2xB,EAAW7hB,QAEZ22B,EAASzrC,EAAKoL,QAAS,KAAQ,GAAK,KAAOpL,GAG3CvB,EAAQA,EAAO0Q,EAAOtH,SACrBpJ,EACA,IAAI0Q,EAAO/F,MAAOpJ,EAAuB,kBAAVvB,GAAsBA,IAGhDy3B,UAAYqV,EAAe,EAAI,EACrC9sC,EAAMsd,UAAY4a,EAAWj+B,KAAM,KACnC+F,EAAMq5B,WAAar5B,EAAMsd,UACxB,IAAI9G,OAAQ,UAAY0hB,EAAWj+B,KAAM,iBAAoB,WAC7D,KAGD+F,EAAM7E,YAASnD,EACTgI,EAAMxD,SACXwD,EAAMxD,OAASif,GAIhB5Q,EAAe,MAARA,EACN,CAAE7K,GACF0Q,EAAO0M,UAAWvS,EAAM,CAAE7K,IAG3BuvB,EAAU7e,EAAO1Q,MAAMuvB,QAAShuB,IAAU,CAAC,EACrCurC,IAAgBvd,EAAQnb,UAAmD,IAAxCmb,EAAQnb,QAAQrZ,MAAO0gB,EAAM5Q,IAAtE,CAMA,IAAMiiC,IAAiBvd,EAAQsK,WAAanf,EAAUe,GAAS,CAM9D,IAJAsxB,EAAaxd,EAAQmI,cAAgBn2B,EAC/BqrC,GAAYxyC,KAAM2yC,EAAaxrC,KACpC2qB,EAAMA,EAAIhnB,YAEHgnB,EAAKA,EAAMA,EAAIhnB,WACtBgoC,EAAUzxC,KAAMywB,GAChBhzB,EAAMgzB,EAIFhzB,KAAUuiB,EAAKgC,eAAiB5c,IACpCqsC,EAAUzxC,KAAMvC,EAAIwqB,aAAexqB,EAAIi0C,cAAgBllC,EAEzD,CAIA,IADAtP,EAAI,GACMuzB,EAAMghB,EAAWv0C,QAAYqH,EAAMm5B,wBAC5C8T,EAAc/gB,EACdlsB,EAAMuB,KAAO5I,EAAI,EAChBo0C,EACAxd,EAAQgJ,UAAYh3B,GAGrB82B,GAAWjG,GAAS1uB,IAAKwoB,EAAK,WAAc1tB,OAAOkB,OAAQ,OAAUM,EAAMuB,OAC1E6wB,GAAS1uB,IAAKwoB,EAAK,YAEnBmM,EAAOt9B,MAAOmxB,EAAKrhB,IAIpBwtB,EAAS2U,GAAU9gB,EAAK8gB,KACT3U,EAAOt9B,OAAS+2B,GAAY5F,KAC1ClsB,EAAM7E,OAASk9B,EAAOt9B,MAAOmxB,EAAKrhB,IACZ,IAAjB7K,EAAM7E,QACV6E,EAAMmH,kBA8CT,OA1CAnH,EAAMuB,KAAOA,EAGPurC,GAAiB9sC,EAAMg6B,sBAEpBzK,EAAQqG,WACqC,IAApDrG,EAAQqG,SAAS76B,MAAOmyC,EAAU/3B,MAAOtK,KACzCinB,GAAYrW,IAIPuxB,GAAUl3B,EAAY2F,EAAMla,MAAamZ,EAAUe,MAGvDviB,EAAMuiB,EAAMuxB,MAGXvxB,EAAMuxB,GAAW,MAIlBt8B,EAAO1Q,MAAMs4B,UAAY/2B,EAEpBvB,EAAMm5B,wBACV8T,EAAYltC,iBAAkBwB,EAAMsrC,IAGrCpxB,EAAMla,KAEDvB,EAAMm5B,wBACV8T,EAAYz9B,oBAAqBjO,EAAMsrC,IAGxCn8B,EAAO1Q,MAAMs4B,eAAYtgC,EAEpBkB,IACJuiB,EAAMuxB,GAAW9zC,IAMd8G,EAAM7E,MAvFb,CAwFD,EAIAygC,SAAU,SAAUr6B,EAAMka,EAAMzb,GAC/B,IAAI+K,EAAI2F,EAAO8E,OACd,IAAI9E,EAAO/F,MACX3K,EACA,CACCuB,KAAMA,EACN84B,aAAa,IAIf3pB,EAAO1Q,MAAMoU,QAASrJ,EAAG,KAAM0Q,EAChC,IAID/K,EAAO9Y,GAAG4d,OAAQ,CAEjBpB,QAAS,SAAU7S,EAAMsJ,GACxB,OAAOjP,KAAKyZ,MAAM,WACjB3E,EAAO1Q,MAAMoU,QAAS7S,EAAMsJ,EAAMjP,KACnC,GACD,EACAwxC,eAAgB,SAAU7rC,EAAMsJ,GAC/B,IAAI4Q,EAAO7f,KAAM,GACjB,GAAK6f,EACJ,OAAO/K,EAAO1Q,MAAMoU,QAAS7S,EAAMsJ,EAAM4Q,GAAM,EAEjD,IAID,IACC4xB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAa9H,EAAQ/6B,EAAK8iC,EAAan6B,GAC/C,IAAIhT,EAEJ,GAAKyB,MAAMC,QAAS2I,GAGnB8F,EAAO2E,KAAMzK,GAAK,SAAUjS,EAAGq0B,GACzB0gB,GAAeL,GAASjzC,KAAMurC,GAGlCpyB,EAAKoyB,EAAQ3Y,GAKbygB,GACC9H,EAAS,KAAqB,kBAAN3Y,GAAuB,MAALA,EAAYr0B,EAAI,IAAO,IACjEq0B,EACA0gB,EACAn6B,EAGH,SAEM,GAAMm6B,GAAiC,WAAlBxyB,EAAQtQ,GAUnC2I,EAAKoyB,EAAQ/6B,QAPb,IAAMrK,KAAQqK,EACb6iC,GAAa9H,EAAS,IAAMplC,EAAO,IAAKqK,EAAKrK,GAAQmtC,EAAan6B,EAQrE,CAIA7C,EAAOrG,MAAQ,SAAUhS,EAAGq1C,GAC3B,IAAI/H,EACHjtC,EAAI,GACJ6a,EAAM,SAAU7U,EAAKivC,GAGpB,IAAInuC,EAAQsW,EAAY63B,GACvBA,IACAA,EAEDj1C,EAAGA,EAAEM,QAAWsB,mBAAoBoE,GAAQ,IAC3CpE,mBAA6B,MAATkF,EAAgB,GAAKA,EAC3C,EAED,GAAU,MAALnH,EACJ,MAAO,GAIR,GAAK2J,MAAMC,QAAS5J,IAASA,EAAEqjB,SAAWhL,EAAO+L,cAAepkB,GAG/DqY,EAAO2E,KAAMhd,GAAG,WACfkb,EAAK3X,KAAK2E,KAAM3E,KAAK4D,MACtB,SAMA,IAAMmmC,KAAUttC,EACfo1C,GAAa9H,EAAQttC,EAAGstC,GAAU+H,EAAan6B,GAKjD,OAAO7a,EAAEuB,KAAM,IAChB,EAEAyW,EAAO9Y,GAAG4d,OAAQ,CACjBo4B,UAAW,WACV,OAAOl9B,EAAOrG,MAAOzO,KAAKiyC,iBAC3B,EACAA,eAAgB,WACf,OAAOjyC,KAAKuS,KAAK,WAGhB,IAAIJ,EAAW2C,EAAOwhB,KAAMt2B,KAAM,YAClC,OAAOmS,EAAW2C,EAAO0M,UAAWrP,GAAanS,IAClD,IAAIqK,QAAQ,WACX,IAAI1E,EAAO3F,KAAK2F,KAGhB,OAAO3F,KAAK2E,OAASmQ,EAAQ9U,MAAOyvB,GAAI,cACvCmiB,GAAapzC,KAAMwB,KAAK4f,YAAe+xB,GAAgBnzC,KAAMmH,KAC3D3F,KAAKsS,UAAY6mB,GAAe36B,KAAMmH,GAC1C,IAAI4M,KAAK,SAAU6P,EAAIvC,GACtB,IAAIxf,EAAMyU,EAAQ9U,MAAOK,MAEzB,OAAY,MAAPA,EACG,KAGH+F,MAAMC,QAAShG,GACZyU,EAAOvC,IAAKlS,GAAK,SAAUA,GACjC,MAAO,CAAEsE,KAAMkb,EAAKlb,KAAMf,MAAOvD,EAAIoR,QAASigC,GAAO,QACtD,IAGM,CAAE/sC,KAAMkb,EAAKlb,KAAMf,MAAOvD,EAAIoR,QAASigC,GAAO,QACtD,IAAI5pC,KACL,IAID,IACCoqC,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZlG,GAAa,CAAC,EAOdmG,GAAa,CAAC,EAGdC,GAAW,KAAKj0B,OAAQ,KAGxB5M,GAAe3M,EAASmE,cAAe,KAKxC,SAASspC,GAA6BC,GAGrC,OAAO,SAAUC,EAAoB/f,GAED,kBAAvB+f,IACX/f,EAAO+f,EACPA,EAAqB,KAGtB,IAAI5hC,EACHjU,EAAI,EACJ81C,EAAYD,EAAmBr4B,cAAc1c,MAAOqzB,IAAmB,GAExE,GAAKhX,EAAY2Y,GAGhB,KAAU7hB,EAAW6hC,EAAW91C,MAGR,MAAlBiU,EAAU,IACdA,EAAWA,EAAS7Q,MAAO,IAAO,KAChCwyC,EAAW3hC,GAAa2hC,EAAW3hC,IAAc,IAAKomB,QAASvE,KAI/D8f,EAAW3hC,GAAa2hC,EAAW3hC,IAAc,IAAKnR,KAAMgzB,EAIlE,CACD,CAGA,SAASigB,GAA+BH,EAAWziC,EAASgF,EAAiB69B,GAE5E,IAAIC,EAAY,CAAC,EAChBC,EAAqBN,IAAcH,GAEpC,SAASU,EAASliC,GACjB,IAAIqB,EAcJ,OAbA2gC,EAAWhiC,IAAa,EACxB8D,EAAO2E,KAAMk5B,EAAW3hC,IAAc,IAAI,SAAU8gB,EAAGqhB,GACtD,IAAIC,EAAsBD,EAAoBjjC,EAASgF,EAAiB69B,GACxE,MAAoC,kBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD5gC,EAAW+gC,QADf,GAHNljC,EAAQ2iC,UAAUzb,QAASgc,GAC3BF,EAASE,IACF,EAIT,IACO/gC,CACR,CAEA,OAAO6gC,EAAShjC,EAAQ2iC,UAAW,MAAUG,EAAW,MAASE,EAAS,IAC3E,CAKA,SAASG,GAAYzyC,EAAQoe,GAC5B,IAAIlc,EAAK8d,EACR0yB,EAAcx+B,EAAOy+B,aAAaD,aAAe,CAAC,EAEnD,IAAMxwC,KAAOkc,OACQ5iB,IAAf4iB,EAAKlc,MACPwwC,EAAaxwC,GAAQlC,EAAWggB,IAAUA,EAAO,CAAC,IAAS9d,GAAQkc,EAAKlc,IAO5E,OAJK8d,GACJ9L,EAAO8E,QAAQ,EAAMhZ,EAAQggB,GAGvBhgB,CACR,CAhFAgR,GAAaf,KAAOD,GAASC,KAgP7BiE,EAAO8E,OAAQ,CAGd45B,OAAQ,EAGRC,aAAc,CAAC,EACfC,KAAM,CAAC,EAEPH,aAAc,CACb/sC,IAAKoK,GAASC,KACdlL,KAAM,MACNguC,QAxRgB,4DAwRQn1C,KAAMoS,GAASkB,UACvCmM,QAAQ,EACR21B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAcbC,QAAS,CACR,IAAKtB,GACL7iC,KAAM,aACNC,KAAM,YACNC,IAAK,4BACLC,KAAM,qCAGP5O,SAAU,CACT2O,IAAK,UACLD,KAAM,SACNE,KAAM,YAGPikC,eAAgB,CACflkC,IAAK,cACLF,KAAM,eACNG,KAAM,gBAKPkkC,WAAY,CAGX,SAAUh1C,OAGV,aAAa,EAGb,YAAaqI,KAAKU,MAGlB,WAAY8M,EAAOg8B,UAOpBwC,YAAa,CACZ9sC,KAAK,EACLiZ,SAAS,IAOXy0B,UAAW,SAAUtzC,EAAQuzC,GAC5B,OAAOA,EAGNd,GAAYA,GAAYzyC,EAAQkU,EAAOy+B,cAAgBY,GAGvDd,GAAYv+B,EAAOy+B,aAAc3yC,EACnC,EAEAqU,cAAey9B,GAA6BrG,IAC5C+H,cAAe1B,GAA6BF,IAG5CviC,KAAM,SAAUzJ,EAAK0J,GAGA,kBAAR1J,IACX0J,EAAU1J,EACVA,OAAMpK,GAIP8T,EAAUA,GAAW,CAAC,EAEtB,IAAImkC,EAGHC,EAGAC,EACAC,EAGAC,EAGA5iC,EAGAqjB,EAGAwf,EAGA33C,EAGA43C,EAGA73C,EAAIgY,EAAOo/B,UAAW,CAAC,EAAGhkC,GAG1B0kC,EAAkB93C,EAAE2iB,SAAW3iB,EAG/B+3C,EAAqB/3C,EAAE2iB,UACpBm1B,EAAgBl7B,UAAYk7B,EAAgB90B,QAC9ChL,EAAQ8/B,GACR9/B,EAAO1Q,MAGR4uB,EAAWle,EAAO8d,WAClBkiB,EAAmBhgC,EAAO+c,UAAW,eAGrCkjB,EAAaj4C,EAAEi4C,YAAc,CAAC,EAG9BC,EAAiB,CAAC,EAClBC,EAAsB,CAAC,EAGvBC,EAAW,WAGXnC,EAAQ,CACPriC,WAAY,EAGZN,kBAAmB,SAAUtN,GAC5B,IAAIjF,EACJ,GAAKq3B,EAAY,CAChB,IAAMsf,EAEL,IADAA,EAAkB,CAAC,EACT32C,EAAQw0C,GAAS9rB,KAAMguB,IAChCC,EAAiB32C,EAAO,GAAI0c,cAAgB,MACzCi6B,EAAiB32C,EAAO,GAAI0c,cAAgB,MAAS,IACrDiE,OAAQ3gB,EAAO,IAGpBA,EAAQ22C,EAAiB1xC,EAAIyX,cAAgB,IAC9C,CACA,OAAgB,MAAT1c,EAAgB,KAAOA,EAAMQ,KAAM,KAC3C,EAGA82C,sBAAuB,WACtB,OAAOjgB,EAAYqf,EAAwB,IAC5C,EAGAttC,iBAAkB,SAAUtC,EAAMf,GAMjC,OALkB,MAAbsxB,IACJvwB,EAAOswC,EAAqBtwC,EAAK4V,eAChC06B,EAAqBtwC,EAAK4V,gBAAmB5V,EAC9CqwC,EAAgBrwC,GAASf,GAEnB5D,IACR,EAGAo1C,iBAAkB,SAAUzvC,GAI3B,OAHkB,MAAbuvB,IACJp4B,EAAEu4C,SAAW1vC,GAEP3F,IACR,EAGA+0C,WAAY,SAAUxiC,GACrB,IAAI4M,EACJ,GAAK5M,EACJ,GAAK2iB,EAGJ6d,EAAMhgB,OAAQxgB,EAAKwgC,EAAMtrC,cAIzB,IAAM0X,KAAQ5M,EACbwiC,EAAY51B,GAAS,CAAE41B,EAAY51B,GAAQ5M,EAAK4M,IAInD,OAAOnf,IACR,EAGAs1C,MAAO,SAAU/kC,GAChB,IAAIglC,EAAYhlC,GAAc2kC,EAK9B,OAJKb,GACJA,EAAUiB,MAAOC,GAElBrkC,EAAM,EAAGqkC,GACFv1C,IACR,GAmBF,GAfAgzB,EAASrB,QAASohB,GAKlBj2C,EAAE0J,MAAUA,GAAO1J,EAAE0J,KAAOoK,GAASC,MAAS,IAC5CY,QAAS8gC,GAAW3hC,GAASkB,SAAW,MAG1ChV,EAAE6I,KAAOuK,EAAQ8D,QAAU9D,EAAQvK,MAAQ7I,EAAEkX,QAAUlX,EAAE6I,KAGzD7I,EAAE+1C,WAAc/1C,EAAEkU,UAAY,KAAMuJ,cAAc1c,MAAOqzB,IAAmB,CAAE,IAGxD,MAAjBp0B,EAAEqU,YAAsB,CAC5BU,EAAY5M,EAASmE,cAAe,KAKpC,IACCyI,EAAUhB,KAAO/T,EAAE0J,IAInBqL,EAAUhB,KAAOgB,EAAUhB,KAC3B/T,EAAEqU,YAAcS,GAAaE,SAAW,KAAOF,GAAaG,OAC3DF,EAAUC,SAAW,KAAOD,EAAUE,IACxC,CAAE,MAAQ5C,GAITrS,EAAEqU,aAAc,CACjB,CACD,CAWA,GARKrU,EAAEmS,MAAQnS,EAAE82C,aAAiC,kBAAX92C,EAAEmS,OACxCnS,EAAEmS,KAAO6F,EAAOrG,MAAO3R,EAAEmS,KAAMnS,EAAEg1C,cAIlCgB,GAA+BzG,GAAYvvC,EAAGoT,EAAS6iC,GAGlD7d,EACJ,OAAO6d,EA8ER,IAAMh2C,KAzEN23C,EAAc5/B,EAAO1Q,OAAStH,EAAEmhB,SAGQ,IAApBnJ,EAAO0+B,UAC1B1+B,EAAO1Q,MAAMoU,QAAS,aAIvB1b,EAAE6I,KAAO7I,EAAE6I,KAAKmL,cAGhBhU,EAAE04C,YAAclD,GAAW9zC,KAAM1B,EAAE6I,MAKnC2uC,EAAWx3C,EAAE0J,IAAIiL,QAAS0gC,GAAO,IAG3Br1C,EAAE04C,WAwBI14C,EAAEmS,MAAQnS,EAAE82C,aACoD,KAAzE92C,EAAEg3C,aAAe,IAAK/iC,QAAS,uCACjCjU,EAAEmS,KAAOnS,EAAEmS,KAAKwC,QAASygC,GAAK,OAvB9ByC,EAAW73C,EAAE0J,IAAIrG,MAAOm0C,EAASl3C,QAG5BN,EAAEmS,OAAUnS,EAAE82C,aAAiC,kBAAX92C,EAAEmS,QAC1CqlC,IAAczD,GAAOryC,KAAM81C,GAAa,IAAM,KAAQx3C,EAAEmS,YAGjDnS,EAAEmS,OAIO,IAAZnS,EAAEoqB,QACNotB,EAAWA,EAAS7iC,QAAS2gC,GAAY,MACzCuC,GAAa9D,GAAOryC,KAAM81C,GAAa,IAAM,KAAQ,KAASlnC,GAAM6U,OACnE0yB,GAIF73C,EAAE0J,IAAM8tC,EAAWK,GASf73C,EAAE24C,aACD3gC,EAAO2+B,aAAca,IACzBvB,EAAM9rC,iBAAkB,oBAAqB6N,EAAO2+B,aAAca,IAE9Dx/B,EAAO4+B,KAAMY,IACjBvB,EAAM9rC,iBAAkB,gBAAiB6N,EAAO4+B,KAAMY,MAKnDx3C,EAAEmS,MAAQnS,EAAE04C,aAAgC,IAAlB14C,EAAEg3C,aAAyB5jC,EAAQ4jC,cACjEf,EAAM9rC,iBAAkB,eAAgBnK,EAAEg3C,aAI3Cf,EAAM9rC,iBACL,SACAnK,EAAE+1C,UAAW,IAAO/1C,EAAEi3C,QAASj3C,EAAE+1C,UAAW,IAC3C/1C,EAAEi3C,QAASj3C,EAAE+1C,UAAW,KACA,MAArB/1C,EAAE+1C,UAAW,GAAc,KAAOJ,GAAW,WAAa,IAC7D31C,EAAEi3C,QAAS,MAIFj3C,EAAEqL,QACZ4qC,EAAM9rC,iBAAkBlK,EAAGD,EAAEqL,QAASpL,IAIvC,GAAKD,EAAE2T,cAC+C,IAAnD3T,EAAE2T,WAAWzO,KAAM4yC,EAAiB7B,EAAOj2C,IAAiBo4B,GAG9D,OAAO6d,EAAMuC,QAed,GAXAJ,EAAW,QAGXJ,EAAiBn9B,IAAK7a,EAAE0T,UACxBuiC,EAAM7hC,KAAMpU,EAAEwT,SACdyiC,EAAMnhB,KAAM90B,EAAEyL,OAGd8rC,EAAYvB,GAA+BN,GAAY11C,EAAGoT,EAAS6iC,GAK5D,CASN,GARAA,EAAMriC,WAAa,EAGdgkC,GACJG,EAAmBr8B,QAAS,WAAY,CAAEu6B,EAAOj2C,IAI7Co4B,EACJ,OAAO6d,EAIHj2C,EAAE+2C,OAAS/2C,EAAEkyC,QAAU,IAC3ByF,EAAepoC,EAAOE,YAAY,WACjCwmC,EAAMuC,MAAO,UACd,GAAGx4C,EAAEkyC,UAGN,IACC9Z,GAAY,EACZmf,EAAUhtC,KAAM2tC,EAAgB9jC,EACjC,CAAE,MAAQ/B,GAGT,GAAK+lB,EACJ,MAAM/lB,EAIP+B,GAAO,EAAG/B,EACX,CACD,MAlCC+B,GAAO,EAAG,gBAqCX,SAASA,EAAMzJ,EAAQiuC,EAAkBC,EAAWxtC,GACnD,IAAIytC,EAAWtlC,EAAS/H,EAAOb,EAAUmuC,EACxCtlC,EAAamlC,EAGTxgB,IAILA,GAAY,EAGPuf,GACJpoC,EAAO4iC,aAAcwF,GAKtBJ,OAAYj4C,EAGZm4C,EAAwBpsC,GAAW,GAGnC4qC,EAAMriC,WAAajJ,EAAS,EAAI,EAAI,EAGpCmuC,EAAYnuC,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCkuC,IACJjuC,EA7lBJ,SAA8B5K,EAAGi2C,EAAO4C,GAOvC,IALA,IAAIG,EAAInwC,EAAMowC,EAAeC,EAC5B70C,EAAWrE,EAAEqE,SACb0xC,EAAY/1C,EAAE+1C,UAGY,MAAnBA,EAAW,IAClBA,EAAUloC,aACEvO,IAAP05C,IACJA,EAAKh5C,EAAEu4C,UAAYtC,EAAM3iC,kBAAmB,iBAK9C,GAAK0lC,EACJ,IAAMnwC,KAAQxE,EACb,GAAKA,EAAUwE,IAAUxE,EAAUwE,GAAOnH,KAAMs3C,GAAO,CACtDjD,EAAUzb,QAASzxB,GACnB,KACD,CAKF,GAAKktC,EAAW,KAAO8C,EACtBI,EAAgBlD,EAAW,OACrB,CAGN,IAAMltC,KAAQgwC,EAAY,CACzB,IAAM9C,EAAW,IAAO/1C,EAAEm3C,WAAYtuC,EAAO,IAAMktC,EAAW,IAAQ,CACrEkD,EAAgBpwC,EAChB,KACD,CACMqwC,IACLA,EAAgBrwC,EAElB,CAGAowC,EAAgBA,GAAiBC,CAClC,CAKA,GAAKD,EAIJ,OAHKA,IAAkBlD,EAAW,IACjCA,EAAUzb,QAAS2e,GAEbJ,EAAWI,EAEpB,CAwiBeE,CAAqBn5C,EAAGi2C,EAAO4C,KAIrCC,GACL9gC,EAAOqE,QAAS,SAAUrc,EAAE+1C,YAAe,GAC3C/9B,EAAOqE,QAAS,OAAQrc,EAAE+1C,WAAc,IACxC/1C,EAAEm3C,WAAY,eAAkB,WAAY,GAI7CvsC,EA9iBH,SAAsB5K,EAAG4K,EAAUqrC,EAAO6C,GACzC,IAAIM,EAAOC,EAASC,EAAM94C,EAAKke,EAC9By4B,EAAa,CAAC,EAGdpB,EAAY/1C,EAAE+1C,UAAU1yC,QAGzB,GAAK0yC,EAAW,GACf,IAAMuD,KAAQt5C,EAAEm3C,WACfA,EAAYmC,EAAK77B,eAAkBzd,EAAEm3C,WAAYmC,GAOnD,IAHAD,EAAUtD,EAAUloC,QAGZwrC,GAcP,GAZKr5C,EAAEk3C,eAAgBmC,KACtBpD,EAAOj2C,EAAEk3C,eAAgBmC,IAAczuC,IAIlC8T,GAAQo6B,GAAa94C,EAAEu5C,aAC5B3uC,EAAW5K,EAAEu5C,WAAY3uC,EAAU5K,EAAEkU,WAGtCwK,EAAO26B,EACPA,EAAUtD,EAAUloC,QAKnB,GAAiB,MAAZwrC,EAEJA,EAAU36B,OAGJ,GAAc,MAATA,GAAgBA,IAAS26B,EAAU,CAM9C,KAHAC,EAAOnC,EAAYz4B,EAAO,IAAM26B,IAAalC,EAAY,KAAOkC,IAI/D,IAAMD,KAASjC,EAId,IADA32C,EAAM44C,EAAMj+B,MAAO,MACT,KAAQk+B,IAGjBC,EAAOnC,EAAYz4B,EAAO,IAAMle,EAAK,KACpC22C,EAAY,KAAO32C,EAAK,KACb,EAGG,IAAT84C,EACJA,EAAOnC,EAAYiC,IAGgB,IAAxBjC,EAAYiC,KACvBC,EAAU74C,EAAK,GACfu1C,EAAUzb,QAAS95B,EAAK,KAEzB,KACD,CAMH,IAAc,IAAT84C,EAGJ,GAAKA,GAAQt5C,EAAEw5C,OACd5uC,EAAW0uC,EAAM1uC,QAEjB,IACCA,EAAW0uC,EAAM1uC,EAClB,CAAE,MAAQyH,GACT,MAAO,CACNzR,MAAO,cACP6K,MAAO6tC,EAAOjnC,EAAI,sBAAwBqM,EAAO,OAAS26B,EAE5D,CAGH,CAIF,MAAO,CAAEz4C,MAAO,UAAWuR,KAAMvH,EAClC,CAgdc6uC,CAAaz5C,EAAG4K,EAAUqrC,EAAO6C,GAGvCA,GAGC94C,EAAE24C,cACNI,EAAW9C,EAAM3iC,kBAAmB,oBAEnC0E,EAAO2+B,aAAca,GAAauB,IAEnCA,EAAW9C,EAAM3iC,kBAAmB,WAEnC0E,EAAO4+B,KAAMY,GAAauB,IAKZ,MAAXpuC,GAA6B,SAAX3K,EAAE6I,KACxB4K,EAAa,YAGS,MAAX9I,EACX8I,EAAa,eAIbA,EAAa7I,EAAShK,MACtB4S,EAAU5I,EAASuH,KAEnB2mC,IADArtC,EAAQb,EAASa,UAMlBA,EAAQgI,GACH9I,GAAW8I,IACfA,EAAa,QACR9I,EAAS,IACbA,EAAS,KAMZsrC,EAAMtrC,OAASA,EACfsrC,EAAMxiC,YAAemlC,GAAoBnlC,GAAe,GAGnDqlC,EACJ5iB,EAASe,YAAa6gB,EAAiB,CAAEtkC,EAASC,EAAYwiC,IAE9D/f,EAASiB,WAAY2gB,EAAiB,CAAE7B,EAAOxiC,EAAYhI,IAI5DwqC,EAAMgC,WAAYA,GAClBA,OAAa34C,EAERs4C,GACJG,EAAmBr8B,QAASo9B,EAAY,cAAgB,YACvD,CAAE7C,EAAOj2C,EAAG84C,EAAYtlC,EAAU/H,IAIpCusC,EAAiBniB,SAAUiiB,EAAiB,CAAE7B,EAAOxiC,IAEhDmkC,IACJG,EAAmBr8B,QAAS,eAAgB,CAAEu6B,EAAOj2C,MAG3CgY,EAAO0+B,QAChB1+B,EAAO1Q,MAAMoU,QAAS,aAGzB,CAEA,OAAOu6B,CACR,EAEAyD,QAAS,SAAUhwC,EAAKyI,EAAMpL,GAC7B,OAAOiR,EAAOhN,IAAKtB,EAAKyI,EAAMpL,EAAU,OACzC,EAEA4yC,UAAW,SAAUjwC,EAAK3C,GACzB,OAAOiR,EAAOhN,IAAKtB,OAAKpK,EAAWyH,EAAU,SAC9C,IAGDiR,EAAO2E,KAAM,CAAE,MAAO,SAAU,SAAU2I,EAAIpO,GAC7Cc,EAAQd,GAAW,SAAUxN,EAAKyI,EAAMpL,EAAU8B,GAUjD,OAPKuU,EAAYjL,KAChBtJ,EAAOA,GAAQ9B,EACfA,EAAWoL,EACXA,OAAO7S,GAID0Y,EAAO7E,KAAM6E,EAAO8E,OAAQ,CAClCpT,IAAKA,EACLb,KAAMqO,EACNhD,SAAUrL,EACVsJ,KAAMA,EACNqB,QAASzM,GACPiR,EAAO+L,cAAera,IAASA,GACnC,CACD,IAEAsO,EAAOG,eAAe,SAAUnY,GAC/B,IAAIC,EACJ,IAAMA,KAAKD,EAAEqL,QACa,iBAApBpL,EAAEwd,gBACNzd,EAAEg3C,YAAch3C,EAAEqL,QAASpL,IAAO,GAGrC,IAGA+X,EAAO2sB,SAAW,SAAUj7B,EAAK0J,EAASmP,GACzC,OAAOvK,EAAO7E,KAAM,CACnBzJ,IAAKA,EAGLb,KAAM,MACNqL,SAAU,SACVkW,OAAO,EACP2sB,OAAO,EACP51B,QAAQ,EAKRg2B,WAAY,CACX,cAAe,WAAY,GAE5BoC,WAAY,SAAU3uC,GACrBoN,EAAOuM,WAAY3Z,EAAUwI,EAASmP,EACvC,GAEF,EAGAvK,EAAO9Y,GAAG4d,OAAQ,CACjB88B,QAAS,SAAU7mC,GAClB,IAAIirB,EAyBJ,OAvBK96B,KAAM,KACLka,EAAYrK,KAChBA,EAAOA,EAAK7N,KAAMhC,KAAM,KAIzB86B,EAAOhmB,EAAQjF,EAAM7P,KAAM,GAAI6hB,eAAgB1B,GAAI,GAAIQ,OAAO,GAEzD3gB,KAAM,GAAIsJ,YACdwxB,EAAKqH,aAAcniC,KAAM,IAG1B86B,EAAKvoB,KAAK,WAGT,IAFA,IAAIsN,EAAO7f,KAEH6f,EAAK82B,mBACZ92B,EAAOA,EAAK82B,kBAGb,OAAO92B,CACR,IAAI5e,OAAQjB,OAGNA,IACR,EAEA42C,UAAW,SAAU/mC,GACpB,OAAKqK,EAAYrK,GACT7P,KAAKyZ,MAAM,SAAU1c,GAC3B+X,EAAQ9U,MAAO42C,UAAW/mC,EAAK7N,KAAMhC,KAAMjD,GAC5C,IAGMiD,KAAKyZ,MAAM,WACjB,IAAI5B,EAAO/C,EAAQ9U,MAClBmB,EAAW0W,EAAK1W,WAEZA,EAAS/D,OACb+D,EAASu1C,QAAS7mC,GAGlBgI,EAAK5W,OAAQ4O,EAEf,GACD,EAEAirB,KAAM,SAAUjrB,GACf,IAAIgnC,EAAiB38B,EAAYrK,GAEjC,OAAO7P,KAAKyZ,MAAM,SAAU1c,GAC3B+X,EAAQ9U,MAAO02C,QAASG,EAAiBhnC,EAAK7N,KAAMhC,KAAMjD,GAAM8S,EACjE,GACD,EAEAinC,OAAQ,SAAUxxC,GAIjB,OAHAtF,KAAKiqB,OAAQ3kB,GAAWolB,IAAK,QAASjR,MAAM,WAC3C3E,EAAQ9U,MAAOoiC,YAAapiC,KAAK+lB,WAClC,IACO/lB,IACR,IAID8U,EAAO4T,KAAKzE,QAAQunB,OAAS,SAAU3rB,GACtC,OAAQ/K,EAAO4T,KAAKzE,QAAQ8yB,QAASl3B,EACtC,EACA/K,EAAO4T,KAAKzE,QAAQ8yB,QAAU,SAAUl3B,GACvC,SAAWA,EAAK6kB,aAAe7kB,EAAK+lB,cAAgB/lB,EAAK4nB,iBAAiBrqC,OAC3E,EAKA0X,EAAOy+B,aAAa1sC,IAAM,WACzB,IACC,OAAO,IAAIwF,EAAOvF,cACnB,CAAE,MAAQqI,GAAK,CAChB,EAEA,IAAI6nC,GAAmB,CAGrB,EAAG,IAIH,KAAM,KAEPC,GAAeniC,EAAOy+B,aAAa1sC,MAEpCgY,EAAQq4B,OAASD,IAAkB,oBAAqBA,GACxDp4B,EAAQ5O,KAAOgnC,KAAiBA,GAEhCniC,EAAOs/B,eAAe,SAAUlkC,GAC/B,IAAIrM,EAAUszC,EAGd,GAAKt4B,EAAQq4B,MAAQD,KAAiB/mC,EAAQiB,YAC7C,MAAO,CACN9J,KAAM,SAAUc,EAASqI,GACxB,IAAIzT,EACH8J,EAAMqJ,EAAQrJ,MAWf,GATAA,EAAIE,KACHmJ,EAAQvK,KACRuK,EAAQ1J,IACR0J,EAAQ2jC,MACR3jC,EAAQknC,SACRlnC,EAAQ8b,UAIJ9b,EAAQmnC,UACZ,IAAMt6C,KAAKmT,EAAQmnC,UAClBxwC,EAAK9J,GAAMmT,EAAQmnC,UAAWt6C,GAmBhC,IAAMA,KAdDmT,EAAQmlC,UAAYxuC,EAAIuuC,kBAC5BvuC,EAAIuuC,iBAAkBllC,EAAQmlC,UAQzBnlC,EAAQiB,aAAgBhJ,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACVtB,EAAII,iBAAkBlK,EAAGoL,EAASpL,IAInC8G,EAAW,SAAU8B,GACpB,OAAO,WACD9B,IACJA,EAAWszC,EAAgBtwC,EAAIywC,OAC9BzwC,EAAI0wC,QAAU1wC,EAAI2wC,QAAU3wC,EAAI4wC,UAC/B5wC,EAAIwK,mBAAqB,KAEb,UAAT1L,EACJkB,EAAIyuC,QACgB,UAAT3vC,EAKgB,kBAAfkB,EAAIY,OACf+I,EAAU,EAAG,SAEbA,EAGC3J,EAAIY,OACJZ,EAAI0J,YAINC,EACCwmC,GAAkBnwC,EAAIY,SAAYZ,EAAIY,OACtCZ,EAAI0J,WAK+B,UAAjC1J,EAAIG,cAAgB,SACM,kBAArBH,EAAIsJ,aACV,CAAEunC,OAAQ7wC,EAAIa,UACd,CAAEkI,KAAM/I,EAAIsJ,cACbtJ,EAAIsuC,yBAIR,CACD,EAGAtuC,EAAIywC,OAASzzC,IACbszC,EAAgBtwC,EAAI0wC,QAAU1wC,EAAI4wC,UAAY5zC,EAAU,cAKnCzH,IAAhByK,EAAI2wC,QACR3wC,EAAI2wC,QAAUL,EAEdtwC,EAAIwK,mBAAqB,WAGA,IAAnBxK,EAAI6J,YAMRrE,EAAOE,YAAY,WACb1I,GACJszC,GAEF,GAEF,EAIDtzC,EAAWA,EAAU,SAErB,IAGCgD,EAAIQ,KAAM6I,EAAQslC,YAActlC,EAAQjB,MAAQ,KACjD,CAAE,MAAQE,GAGT,GAAKtL,EACJ,MAAMsL,CAER,CACD,EAEAmmC,MAAO,WACDzxC,GACJA,GAEF,EAGH,IAMAiR,EAAOG,eAAe,SAAUnY,GAC1BA,EAAEqU,cACNrU,EAAEqE,SAAS6O,QAAS,EAEtB,IAGA8E,EAAOo/B,UAAW,CACjBH,QAAS,CACR/jC,OAAQ,6FAGT7O,SAAU,CACT6O,OAAQ,2BAETikC,WAAY,CACX,cAAe,SAAUrkC,GAExB,OADAkF,EAAOuM,WAAYzR,GACZA,CACR,KAKFkF,EAAOG,cAAe,UAAU,SAAUnY,QACxBV,IAAZU,EAAEoqB,QACNpqB,EAAEoqB,OAAQ,GAENpqB,EAAEqU,cACNrU,EAAE6I,KAAO,MAEX,IAGAmP,EAAOs/B,cAAe,UAAU,SAAUt3C,GAIxC,IAAIkT,EAAQnM,EADb,GAAK/G,EAAEqU,aAAerU,EAAE66C,YAEvB,MAAO,CACNtwC,KAAM,SAAUyqB,EAAGthB,GAClBR,EAAS8E,EAAQ,YACfkC,KAAMla,EAAE66C,aAAe,CAAC,GACxBrhB,KAAM,CAAEshB,QAAS96C,EAAE+6C,cAAe74B,IAAKliB,EAAE0J,MACzCwU,GAAI,aAAcnX,EAAW,SAAUgL,GACvCmB,EAAO+H,SACPlU,EAAW,KACNgL,GACJ2B,EAAuB,UAAb3B,EAAIlJ,KAAmB,IAAM,IAAKkJ,EAAIlJ,KAElD,GAGDV,EAASC,KAAKgH,YAAa8D,EAAQ,GACpC,EACAslC,MAAO,WACDzxC,GACJA,GAEF,EAGH,IAKA,IAqGKqQ,GArGD4jC,GAAe,GAClBC,GAAS,oBAGVjjC,EAAOo/B,UAAW,CACjB8D,MAAO,WACPC,cAAe,WACd,IAAIp0C,EAAWi0C,GAAav+B,OAAWzE,EAAOtH,QAAU,IAAQJ,GAAM6U,OAEtE,OADAjiB,KAAM6D,IAAa,EACZA,CACR,IAIDiR,EAAOG,cAAe,cAAc,SAAUnY,EAAGo7C,EAAkBnF,GAElE,IAAIoF,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZx7C,EAAEk7C,QAAqBD,GAAOv5C,KAAM1B,EAAE0J,KAChD,MACkB,kBAAX1J,EAAEmS,MAE6C,KADnDnS,EAAEg3C,aAAe,IACjB/iC,QAAS,sCACXgnC,GAAOv5C,KAAM1B,EAAEmS,OAAU,QAI5B,GAAKqpC,GAAiC,UAArBx7C,EAAE+1C,UAAW,GA8D7B,OA3DAsF,EAAer7C,EAAEm7C,cAAgB/9B,EAAYpd,EAAEm7C,eAC9Cn7C,EAAEm7C,gBACFn7C,EAAEm7C,cAGEK,EACJx7C,EAAGw7C,GAAax7C,EAAGw7C,GAAW7mC,QAASsmC,GAAQ,KAAOI,IAC/B,IAAZr7C,EAAEk7C,QACbl7C,EAAE0J,MAASqqC,GAAOryC,KAAM1B,EAAE0J,KAAQ,IAAM,KAAQ1J,EAAEk7C,MAAQ,IAAMG,GAIjEr7C,EAAEm3C,WAAY,eAAkB,WAI/B,OAHMoE,GACLvjC,EAAOvM,MAAO4vC,EAAe,mBAEvBE,EAAmB,EAC3B,EAGAv7C,EAAE+1C,UAAW,GAAM,OAGnBuF,EAAc/rC,EAAQ8rC,GACtB9rC,EAAQ8rC,GAAiB,WACxBE,EAAoBxyC,SACrB,EAGAktC,EAAMhgB,QAAQ,gBAGQ32B,IAAhBg8C,EACJtjC,EAAQzI,GAAS2jC,WAAYmI,GAI7B9rC,EAAQ8rC,GAAiBC,EAIrBt7C,EAAGq7C,KAGPr7C,EAAEm7C,cAAgBC,EAAiBD,cAGnCH,GAAaj4C,KAAMs4C,IAIfE,GAAqBn+B,EAAYk+B,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAch8C,CACnC,IAGO,QAET,IAUAyiB,EAAQ05B,qBACHrkC,GAAOjP,EAASuzC,eAAeD,mBAAoB,IAAKrkC,MACvDR,UAAY,6BACiB,IAA3BQ,GAAK6R,WAAW3oB,QAQxB0X,EAAOkb,UAAY,SAAU/gB,EAAMwQ,EAASg5B,GAC3C,MAAqB,kBAATxpC,EACJ,IAEgB,mBAAZwQ,IACXg5B,EAAch5B,EACdA,GAAU,GAKLA,IAIAZ,EAAQ05B,qBAMZ9rB,GALAhN,EAAUxa,EAASuzC,eAAeD,mBAAoB,KAKvCnvC,cAAe,SACzByH,KAAO5L,EAAS2L,SAASC,KAC9B4O,EAAQva,KAAKgH,YAAaugB,IAE1BhN,EAAUxa,GAKZ21B,GAAW6d,GAAe,IAD1BC,EAAS9oB,EAAWrJ,KAAMtX,IAKlB,CAAEwQ,EAAQrW,cAAesvC,EAAQ,MAGzCA,EAAS/d,GAAe,CAAE1rB,GAAQwQ,EAASmb,GAEtCA,GAAWA,EAAQx9B,QACvB0X,EAAQ8lB,GAAU7iB,SAGZjD,EAAOmL,MAAO,GAAIy4B,EAAO3yB,cAlChC,IAAI0G,EAAMisB,EAAQ9d,CAmCnB,EAMA9lB,EAAO9Y,GAAGgiC,KAAO,SAAUx3B,EAAKoI,EAAQ/K,GACvC,IAAIyB,EAAUK,EAAM+B,EACnBmQ,EAAO7X,KACPyc,EAAMjW,EAAIuK,QAAS,KAsDpB,OApDK0L,GAAO,IACXnX,EAAWuqC,GAAkBrpC,EAAIrG,MAAOsc,IACxCjW,EAAMA,EAAIrG,MAAO,EAAGsc,IAIhBvC,EAAYtL,IAGhB/K,EAAW+K,EACXA,OAASxS,GAGEwS,GAA4B,kBAAXA,IAC5BjJ,EAAO,QAIHkS,EAAKza,OAAS,GAClB0X,EAAO7E,KAAM,CACZzJ,IAAKA,EAKLb,KAAMA,GAAQ,MACdqL,SAAU,OACV/B,KAAML,IACHsC,MAAM,SAAUf,GAGnBzI,EAAW7B,UAEXgS,EAAKhI,KAAMvK,EAIVwP,EAAQ,SAAU7T,OAAQ6T,EAAOkb,UAAW7f,IAAiB8V,KAAM3gB,GAGnE6K,EAKF,IAAI4iB,OAAQlvB,GAAY,SAAUkvC,EAAOtrC,GACxCoQ,EAAK4B,MAAM,WACV5V,EAAS1E,MAAOa,KAAM0H,GAAY,CAAEqrC,EAAM5iC,aAAc1I,EAAQsrC,GACjE,GACD,GAGM/yC,IACR,EAKA8U,EAAO4T,KAAKzE,QAAQ00B,SAAW,SAAU94B,GACxC,OAAO/K,EAAOsD,KAAMtD,EAAOu5B,QAAQ,SAAUryC,GAC5C,OAAO6jB,IAAS7jB,EAAG6jB,IACpB,IAAIziB,MACL,EAKA0X,EAAO8jC,OAAS,CACfC,UAAW,SAAUh5B,EAAM3P,EAASnT,GACnC,IAAI+7C,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvD3U,EAAW1vB,EAAOmjB,IAAKpY,EAAM,YAC7Bu5B,EAAUtkC,EAAQ+K,GAClBtd,EAAQ,CAAC,EAGQ,WAAbiiC,IACJ3kB,EAAK7T,MAAMw4B,SAAW,YAGvB0U,EAAYE,EAAQR,SACpBI,EAAYlkC,EAAOmjB,IAAKpY,EAAM,OAC9Bs5B,EAAarkC,EAAOmjB,IAAKpY,EAAM,SACI,aAAb2kB,GAAwC,UAAbA,KAC9CwU,EAAYG,GAAapoC,QAAS,SAAY,GAMhDkoC,GADAH,EAAcM,EAAQ5U,YACDzc,IACrBgxB,EAAUD,EAAYnP,OAGtBsP,EAASpU,WAAYmU,IAAe,EACpCD,EAAUlU,WAAYsU,IAAgB,GAGlCj/B,EAAYhK,KAGhBA,EAAUA,EAAQlO,KAAM6d,EAAM9iB,EAAG+X,EAAO8E,OAAQ,CAAC,EAAGs/B,KAGjC,MAAfhpC,EAAQ6X,MACZxlB,EAAMwlB,IAAQ7X,EAAQ6X,IAAMmxB,EAAUnxB,IAAQkxB,GAE1B,MAAhB/oC,EAAQy5B,OACZpnC,EAAMonC,KAASz5B,EAAQy5B,KAAOuP,EAAUvP,KAASoP,GAG7C,UAAW7oC,EACfA,EAAQmpC,MAAMr3C,KAAM6d,EAAMtd,GAG1B62C,EAAQnhB,IAAK11B,EAEf,GAGDuS,EAAO9Y,GAAG4d,OAAQ,CAGjBg/B,OAAQ,SAAU1oC,GAGjB,GAAKrK,UAAUzI,OACd,YAAmBhB,IAAZ8T,EACNlQ,KACAA,KAAKyZ,MAAM,SAAU1c,GACpB+X,EAAO8jC,OAAOC,UAAW74C,KAAMkQ,EAASnT,EACzC,IAGF,IAAIu8C,EAAMC,EACT15B,EAAO7f,KAAM,GAEd,OAAM6f,EAQAA,EAAK4nB,iBAAiBrqC,QAK5Bk8C,EAAOz5B,EAAK4pB,wBACZ8P,EAAM15B,EAAKgC,cAAciG,YAClB,CACNC,IAAKuxB,EAAKvxB,IAAMwxB,EAAIC,YACpB7P,KAAM2P,EAAK3P,KAAO4P,EAAIE,cARf,CAAE1xB,IAAK,EAAG4hB,KAAM,QATxB,CAmBD,EAIAnF,SAAU,WACT,GAAMxkC,KAAM,GAAZ,CAIA,IAAI05C,EAAcd,EAAQv5B,EACzBQ,EAAO7f,KAAM,GACb25C,EAAe,CAAE5xB,IAAK,EAAG4hB,KAAM,GAGhC,GAAwC,UAAnC70B,EAAOmjB,IAAKpY,EAAM,YAGtB+4B,EAAS/4B,EAAK4pB,4BAER,CAON,IANAmP,EAAS54C,KAAK44C,SAIdv5B,EAAMQ,EAAKgC,cACX63B,EAAe75B,EAAK65B,cAAgBr6B,EAAIkC,gBAChCm4B,IACLA,IAAiBr6B,EAAInL,MAAQwlC,IAAiBr6B,EAAIkC,kBACT,WAA3CzM,EAAOmjB,IAAKyhB,EAAc,aAE1BA,EAAeA,EAAapwC,WAExBowC,GAAgBA,IAAiB75B,GAAkC,IAA1B65B,EAAahgC,YAG1DigC,EAAe7kC,EAAQ4kC,GAAed,UACzB7wB,KAAOjT,EAAOmjB,IAAKyhB,EAAc,kBAAkB,GAChEC,EAAahQ,MAAQ70B,EAAOmjB,IAAKyhB,EAAc,mBAAmB,GAEpE,CAGA,MAAO,CACN3xB,IAAK6wB,EAAO7wB,IAAM4xB,EAAa5xB,IAAMjT,EAAOmjB,IAAKpY,EAAM,aAAa,GACpE8pB,KAAMiP,EAAOjP,KAAOgQ,EAAahQ,KAAO70B,EAAOmjB,IAAKpY,EAAM,cAAc,GArCzE,CAuCD,EAYA65B,aAAc,WACb,OAAO15C,KAAKuS,KAAK,WAGhB,IAFA,IAAImnC,EAAe15C,KAAK05C,aAEhBA,GAA2D,WAA3C5kC,EAAOmjB,IAAKyhB,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBn4B,EACxB,GACD,IAIDzM,EAAO2E,KAAM,CAAEoxB,WAAY,cAAeD,UAAW,gBAAiB,SAAU52B,EAAQsiB,GACvF,IAAIvO,EAAM,gBAAkBuO,EAE5BxhB,EAAO9Y,GAAIgY,GAAW,SAAU3T,GAC/B,OAAOk1B,GAAQv1B,MAAM,SAAU6f,EAAM7L,EAAQ3T,GAG5C,IAAIk5C,EAOJ,GANKz6B,EAAUe,GACd05B,EAAM15B,EACuB,IAAlBA,EAAKnG,WAChB6/B,EAAM15B,EAAKiI,kBAGC1rB,IAARiE,EACJ,OAAOk5C,EAAMA,EAAKjjB,GAASzW,EAAM7L,GAG7BulC,EACJA,EAAIK,SACF7xB,EAAYwxB,EAAIE,YAAVp5C,EACP0nB,EAAM1nB,EAAMk5C,EAAIC,aAIjB35B,EAAM7L,GAAW3T,CAEnB,GAAG2T,EAAQ3T,EAAKwF,UAAUzI,OAC3B,CACD,IAQA0X,EAAO2E,KAAM,CAAE,MAAO,SAAU,SAAU2I,EAAIkU,GAC7CxhB,EAAO8yB,SAAUtR,GAASqN,GAAc9kB,EAAQqmB,eAC/C,SAAUrlB,EAAMujB,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQtjB,EAAMyW,GAGlBqM,GAAUnkC,KAAM4kC,GACtBtuB,EAAQ+K,GAAO2kB,WAAYlO,GAAS,KACpC8M,CAEH,GAEF,IAIAtuB,EAAO2E,KAAM,CAAEogC,OAAQ,SAAUC,MAAO,UAAW,SAAUn1C,EAAMgB,GAClEmP,EAAO2E,KAAM,CACZowB,QAAS,QAAUllC,EACnB5C,QAAS4D,EACT,GAAI,QAAUhB,IACZ,SAAUo1C,EAAcC,GAG1BllC,EAAO9Y,GAAIg+C,GAAa,SAAUpQ,EAAQhmC,GACzC,IAAI4xB,EAAY3vB,UAAUzI,SAAY28C,GAAkC,mBAAXnQ,GAC5DzC,EAAQ4S,KAA6B,IAAXnQ,IAA6B,IAAVhmC,EAAiB,SAAW,UAE1E,OAAO2xB,GAAQv1B,MAAM,SAAU6f,EAAMla,EAAM/B,GAC1C,IAAIyb,EAEJ,OAAKP,EAAUe,GAGyB,IAAhCm6B,EAASjpC,QAAS,SACxB8O,EAAM,QAAUlb,GAChBkb,EAAK5a,SAASsc,gBAAiB,SAAW5c,GAIrB,IAAlBkb,EAAKnG,UACT2F,EAAMQ,EAAK0B,gBAIJjhB,KAAKC,IACXsf,EAAK3L,KAAM,SAAWvP,GAAQ0a,EAAK,SAAW1a,GAC9Ckb,EAAK3L,KAAM,SAAWvP,GAAQ0a,EAAK,SAAW1a,GAC9C0a,EAAK,SAAW1a,UAIDvI,IAAVwH,EAGNkR,EAAOmjB,IAAKpY,EAAMla,EAAMwhC,GAGxBryB,EAAO9I,MAAO6T,EAAMla,EAAM/B,EAAOujC,EACnC,GAAGxhC,EAAM6vB,EAAYoU,OAASxtC,EAAWo5B,EAC1C,CACD,GACD,IAGA1gB,EAAO2E,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAU2I,EAAIzc,GAChBmP,EAAO9Y,GAAI2J,GAAS,SAAU3J,GAC7B,OAAOgE,KAAKgb,GAAIrV,EAAM3J,EACvB,CACD,IAKA8Y,EAAO9Y,GAAG4d,OAAQ,CAEjBkzB,KAAM,SAAUvR,EAAOtsB,EAAMjT,GAC5B,OAAOgE,KAAKgb,GAAIugB,EAAO,KAAMtsB,EAAMjT,EACpC,EACAi+C,OAAQ,SAAU1e,EAAOv/B,GACxB,OAAOgE,KAAKyc,IAAK8e,EAAO,KAAMv/B,EAC/B,EAEAsM,SAAU,SAAUhD,EAAUi2B,EAAOtsB,EAAMjT,GAC1C,OAAOgE,KAAKgb,GAAIugB,EAAOj2B,EAAU2J,EAAMjT,EACxC,EACAk+C,WAAY,SAAU50C,EAAUi2B,EAAOv/B,GAGtC,OAA4B,IAArB6J,UAAUzI,OAChB4C,KAAKyc,IAAKnX,EAAU,MACpBtF,KAAKyc,IAAK8e,EAAOj2B,GAAY,KAAMtJ,EACrC,EAEAm+C,MAAO,SAAUC,EAAQC,GACxB,OAAOr6C,KACLgb,GAAI,aAAco/B,GAClBp/B,GAAI,aAAcq/B,GAASD,EAC9B,IAGDtlC,EAAO2E,KACN,wLAE4DxB,MAAO,MACnE,SAAUmK,EAAIzd,GAGbmQ,EAAO9Y,GAAI2I,GAAS,SAAUsK,EAAMjT,GACnC,OAAO6J,UAAUzI,OAAS,EACzB4C,KAAKgb,GAAIrW,EAAM,KAAMsK,EAAMjT,GAC3BgE,KAAKwY,QAAS7T,EAChB,CACD,IAUD,IAAI21C,GAAQ,sDAMZxlC,EAAOmG,MAAQ,SAAUjf,EAAIyjB,GAC5B,IAAIniB,EAAKiX,EAAM0G,EAUf,GARwB,kBAAZwE,IACXniB,EAAMtB,EAAIyjB,GACVA,EAAUzjB,EACVA,EAAKsB,GAKA4c,EAAYle,GAalB,OARAuY,EAAOpU,EAAM6B,KAAM6D,UAAW,GAC9BoV,EAAQ,WACP,OAAOjf,EAAGmD,MAAOsgB,GAAWzf,KAAMuU,EAAKiK,OAAQre,EAAM6B,KAAM6D,YAC5D,EAGAoV,EAAMgH,KAAOjmB,EAAGimB,KAAOjmB,EAAGimB,MAAQnN,EAAOmN,OAElChH,CACR,EAEAnG,EAAOylC,UAAY,SAAUC,GACvBA,EACJ1lC,EAAOsgB,YAEPtgB,EAAOmb,OAAO,EAEhB,EACAnb,EAAOzO,QAAUD,MAAMC,QACvByO,EAAO2lC,UAAYnzC,KAAKU,MACxB8M,EAAO8K,SAAWA,EAClB9K,EAAOoF,WAAaA,EACpBpF,EAAOgK,SAAWA,EAClBhK,EAAOkhB,UAAYA,GACnBlhB,EAAOnP,KAAO2Z,EAEdxK,EAAO0pB,IAAMD,KAAKC,IAElB1pB,EAAO4lC,UAAY,SAAU1rC,GAK5B,IAAIrJ,EAAOmP,EAAOnP,KAAMqJ,GACxB,OAAkB,WAATrJ,GAA8B,WAATA,KAK5Bg1C,MAAO3rC,EAAM61B,WAAY71B,GAC5B,EAEA8F,EAAOgD,KAAO,SAAUlI,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK6B,QAAS6oC,GAAO,KAChC,OAoBE,KAFqB,EAAF,WACnB,OAAOxlC,CACP,UAFiB,OAEjB,aAMF,IAGC8lC,GAAUvuC,EAAOyI,OAGjB+lC,GAAKxuC,EAAO8B,EAwBb,OAtBA2G,EAAOgmC,WAAa,SAAUl6B,GAS7B,OARKvU,EAAO8B,IAAM2G,IACjBzI,EAAO8B,EAAI0sC,IAGPj6B,GAAQvU,EAAOyI,SAAWA,IAC9BzI,EAAOyI,OAAS8lC,IAGV9lC,CACR,EAKyB,qBAAbqJ,IACX9R,EAAOyI,OAASzI,EAAO8B,EAAI2G,GAMrBA,CACP,uBCr9UA,IAAiD3Y,EAS9B,qBAAT0b,MAAuBA,KATgB1b,EASH,WAC9C,OAAgB,SAAU4+C,GAEhB,IAAIC,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUn/C,QAGnC,IAAIG,EAAS++C,EAAiBC,GAAY,CACzCl+C,EAAGk+C,EACHzqB,GAAG,EACH10B,QAAS,CAAC,GAUX,OANAi/C,EAAQE,GAAUj5C,KAAK/F,EAAOH,QAASG,EAAQA,EAAOH,QAAS,GAG/DG,EAAOu0B,GAAI,EAGJv0B,EAAOH,OACf,CAoCA,OAhCA,EAAoB2R,EAAIstC,EAGxB,EAAoBp+C,EAAIq+C,EAGxB,EAAoBp+C,EAAI,SAASd,EAAS6I,EAAM8qC,GAC3C,EAAoByL,EAAEp/C,EAAS6I,IAClC/B,OAAOC,eAAe/G,EAAS6I,EAAM,CACpCjC,cAAc,EACdD,YAAY,EACZqF,IAAK2nC,GAGR,EAGA,EAAoBhyC,EAAI,SAASxB,GAChC,IAAIwzC,EAASxzC,GAAUA,EAAOk/C,WAC7B,WAAwB,OAAOl/C,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBW,EAAE6yC,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoByL,EAAI,SAASxyC,EAAQ0yC,GAAY,OAAOx4C,OAAO1C,UAAUkc,eAAepa,KAAK0G,EAAQ0yC,EAAW,EAGpH,EAAoBrQ,EAAI,GAGjB,EAAoB,EAAoBjuC,EAAI,IACnD,CA/DM,CAiEN,CAEJ,SAAUb,EAAQH,EAAS,GAEjC,aAEA8G,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIy3C,EAAc,EAAoB,IAClCC,EAAW,EAAoB,IAC/BC,EAAS,EAAoB,IAC7BC,EAAW,EAAoB,IAC/BC,EAAW,EAAoB,IAC/BC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BC,EAAS,EAAoB,IAC7BC,EAAe,EAAoB,IACnCC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BC,EAAW,EAAoB,GAC/BC,EAAY,CACZC,MAAOF,EAASE,MAChBr4C,OAAQm4C,EAASn4C,OACjBmiB,KAAMg2B,EAASh2B,KACfnM,MAAOmiC,EAASniC,MAChBsiC,SAAUH,EAASG,SACnBC,UAAWhB,EAAYiB,QACvBC,OAAQjB,EAASgB,QACjBE,KAAMjB,EAAOe,QACbG,MAAOd,EAAQW,QACfI,OAAQlB,EAASc,QACjBK,MAAOjB,EAAQY,QACfM,OAAQnB,EAASa,QACjBO,KAAMjB,EAAOU,QACbQ,WAAY,CACRC,UAAWlB,EAAaS,QACxBU,MAAOlB,EAAQQ,QACfW,MAAOlB,EAAQO,QACfY,MAAOlB,EAAQM,UAGvBxgD,EAAQwgD,QAAUJ,CAGX,EAED,SAAUjgD,EAAQH,EAASqhD,GAEjC,aAEA,IACQC,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAI65C,EAAgC,SAAUC,GAE1C,SAASD,EAAe5qC,GACpB,IAAI9O,EAAQ/D,KAKZ,OAJA6S,EAAU,eAAiBA,GAC3B9O,EAAQ25C,EAAO17C,KAAKhC,KAAM6S,IAAY7S,MAChC6S,QAAUA,EAChB9O,EAAMY,KAAOZ,EAAM2T,YAAY/S,KACxBZ,CACX,CACA,OATAs5C,EAAUI,EAAgBC,GASnBD,CACX,CAXmC,CAWjCzoC,OACFlZ,EAAQ2hD,eAAiBA,EACzB,IAKItB,EALA11C,EAAa,CAAC,EACdk3C,EAAU,CAAC,EACXC,EAAO,CAAC,EACRriB,EAAQ,CAAC,EAwCb,SAASzhB,EAAMA,EAAO8M,GAElB,IAAI/oB,EACJ,QAFc,IAAV+oB,IAAoBA,EAAQu1B,EAAM0B,KAEjB,kBAAV/jC,EACPjc,EAAQ09B,EAAMzhB,IAAUrT,EAAWqT,QAGlC,GAAIA,aAAiB+iC,MAAQ/iC,EAAgB,WAAMgkC,KAAKC,UACzDlgD,EAAQ09B,EAAY,UAEnB,GAAqB,kBAAVzhB,EACRA,EAAQqiC,EAAM6B,MAAQ7B,EAAM8B,MAC5BpgD,EAAQ09B,EAAa,MAEhBzhB,EAAQqiC,EAAM6B,MAAQ7B,EAAM+B,SACjCrgD,EAAQ09B,EAAc,aAGzB,GAAIzhB,aAAiBqkC,YAAa,CACnC,IAAIC,GAAStkC,EAAM3U,aAAa,UAAY,IAAI8S,MAAM,OACtD,IAAK,IAAIlb,KAAKqhD,EAEV,GADAvgD,EAAQ8/C,EAAQS,EAAMrhD,IAElB,MAERc,EAAQA,GAAS+/C,EAAK9jC,EAAM1O,QAChC,CACA,OAAa,MAATvN,EACO,KAEP+oB,EAAQu1B,EAAM6B,MAAQngD,EAAM+oB,OAASA,EAAQu1B,EAAMkC,KAAOxgD,EAAM+oB,MACzD/oB,EACJ,IACX,CAxEA/B,EAAQwiD,SAAW,SAEnB,SAAWnC,GACPA,EAAMA,EAAY,KAAI,GAAK,OAC3BA,EAAMA,EAAa,MAAI,IAAM,QAC7BA,EAAMA,EAAiB,UAAI,IAAM,YACjCA,EAAMA,EAAY,KAAI,IAAM,OAC5BA,EAAMA,EAAc,OAAI,GAAK,SAC7BA,EAAMA,EAAa,MAAI,IAAM,QAC7BA,EAAMA,EAAkB,WAAI,IAAM,aAClCA,EAAMA,EAAmB,YAAI,GAAK,cAClCA,EAAMA,EAAuB,gBAAI,GAAK,kBACtCA,EAAMA,EAAwB,iBAAI,GAAK,mBACvCA,EAAMA,EAAW,IAAI,IAAM,KAC9B,CAZD,CAYGA,EAAQrgD,EAAQqgD,QAAUrgD,EAAQqgD,MAAQ,CAAC,IAY9CrgD,EAAQgI,OAXR,SAAgBkF,EAAOpF,GACnB,IAAI/F,EAAQic,EAAM9Q,GAClB,GAAa,MAATnL,EACA,MAAM,IAAI4/C,EAAe,oBAAsBz0C,EAAQ,SAE3D,IAAIu1C,EAAY1gD,EACZuhB,EAEJpW,aAAiB80C,MAAQ90C,EAAgB,WAAM80C,KAAKC,UAAY/0C,EAAQu1C,EAAUz6C,OAAOF,GACzF,OAAO,IAAI26C,EAAUn/B,EAAMxb,EAC/B,EAaA9H,EAAQmqB,KAXR,SAASA,EAAK7G,EAAMo/B,GAEhB,YADe,IAAXA,IAAqBA,GAAS,GACtB,MAARp/B,EACO,KAEmB,MAA1BA,EAAKtjB,EAAQwiD,UACNl/B,EAAKtjB,EAAQwiD,UAAUG,KAC9BD,EACOv4B,EAAK7G,EAAK9V,WAAYk1C,GAC1B,IACX,EAoCA1iD,EAAQge,MAAQA,EA6ChBhe,EAAQsgD,SA5CR,SAASA,IAEL,IADA,IAAIsC,EAAc,GACTt8B,EAAK,EAAGA,EAAKvc,UAAUzI,OAAQglB,IACpCs8B,EAAYt8B,GAAMvc,UAAUuc,GAEhC,GAAIs8B,EAAYthD,OAAS,EACrB,OAAOshD,EAAYnsC,KAAI,SAAU3V,GAC7B,OAAOw/C,EAASx/C,EACpB,IAEJ,IAAI+hD,EAAaD,EAAY,GAC7B,GAAmC,kBAAxBC,EAAWC,UAAwD,kBAAxBD,EAAWE,SAC7D,MAAM,IAAIpB,EAAe,sBAExB,GAA4B,aAAxBkB,EAAWC,SAChB,MAAM,IAAInB,EAAe,kCA2B7B,OAzBAliB,EAAMojB,EAAWC,UAAYD,EAAWE,UAAYF,EAClB,kBAAvBA,EAAWG,QAClBr4C,EAAWk4C,EAAWG,SAAWH,GAGL,MAAxBA,EAAWp2B,YACXo1B,EAAQgB,EAAWp2B,WAAao2B,GAEV,MAAtBA,EAAWvzC,UACPhF,MAAMC,QAAQs4C,EAAWvzC,SACzBuzC,EAAWvzC,QAAUuzC,EAAWvzC,QAAQmH,KAAI,SAAUnH,GAClD,OAAOA,EAAQ0F,aACnB,IAGA6tC,EAAWvzC,QAAUuzC,EAAWvzC,QAAQ0F,eAE7B1K,MAAMC,QAAQs4C,EAAWvzC,SAAWuzC,EAAWvzC,QAAU,CAACuzC,EAAWvzC,UAC3ER,SAAQ,SAAU0d,GACN,MAAbs1B,EAAKt1B,IAAwC,MAAxBq2B,EAAWp2B,YAChCq1B,EAAKt1B,GAAOq2B,EAEpB,MAGDA,CACX,CAIO,EAED,SAAU1iD,EAAQH,EAAS,GAEjC,IAAIquB,EAAO,EAAoB,IAC3B40B,EAAQ,EAAoB,IAC5BnlC,EAAS,EAAoB,GAC7BolC,EAAK,EAAoB,IAGzBC,EAAiBhgD,OAAOC,aAAa,GAGrCggD,EAAQ,SAAUC,GAEhB/4C,MAAMC,QAAQ84C,GAChBn/C,KAAKm/C,IAAMA,EACK,MAAPA,GAAe/4C,MAAMC,QAAQ84C,EAAIA,KAC1Cn/C,KAAKm/C,IAAMA,EAAIA,IAEfn/C,KAAKm/C,IAAM,EAEf,EAGAD,EAAMh/C,UAAUwiC,OAAS,SAAU9yB,EAAMnJ,GACvC,IAAI24C,EAAQ,CAAC,EACb,OAAoB,IAAhBxvC,EAAKxS,OAAqB4C,MAC9Bo/C,EAAM1c,OAAS9yB,EACG,MAAdnJ,GAA4C,kBAAfA,GAA2B7D,OAAOqkB,KAAKxgB,GAAYrJ,OAAS,IAC3FgiD,EAAM34C,WAAaA,GAEdzG,KAAKH,KAAKu/C,GACnB,EAEAF,EAAMh/C,UAAkB,OAAI,SAAU9C,GACpC,OAAIA,GAAU,EAAU4C,KACjBA,KAAKH,KAAK,CAAE,OAAUzC,GAC/B,EAEA8hD,EAAMh/C,UAAUm/C,OAAS,SAAUjiD,EAAQqJ,GACzC,GAAIrJ,GAAU,EAAG,OAAO4C,KACxB,IAAIo/C,EAAQ,CAAEC,OAAQjiD,GAItB,OAHkB,MAAdqJ,GAA4C,kBAAfA,GAA2B7D,OAAOqkB,KAAKxgB,GAAYrJ,OAAS,IAC3FgiD,EAAM34C,WAAaA,GAEdzG,KAAKH,KAAKu/C,EACnB,EAEAF,EAAMh/C,UAAUL,KAAO,SAAUu/C,GAC/B,IAAInjC,EAAQjc,KAAKm/C,IAAI/hD,OACjBkiD,EAASt/C,KAAKm/C,IAAIljC,EAAQ,GAE9B,GADAmjC,EAAQxlC,GAAO,EAAM,CAAC,EAAGwlC,GACH,kBAAXE,EAAqB,CAC9B,GAA+B,kBAApBF,EAAc,QAA8C,kBAArBE,EAAe,OAE/D,OADAt/C,KAAKm/C,IAAIljC,EAAQ,GAAK,CAAE,OAAUqjC,EAAe,OAAIF,EAAc,QAC5Dp/C,KAIT,GAAgC,kBAArBs/C,EAAe,QAAkC,MAAhBF,EAAM1c,SAChDzmB,GAAS,EAEa,kBADtBqjC,EAASt/C,KAAKm/C,IAAIljC,EAAQ,KAGxB,OADAjc,KAAKm/C,IAAI/nB,QAAQgoB,GACVp/C,KAGX,GAAI++C,EAAMK,EAAM34C,WAAY64C,EAAO74C,YAAa,CAC9C,GAA4B,kBAAjB24C,EAAM1c,QAAgD,kBAAlB4c,EAAO5c,OAGpD,OAFA1iC,KAAKm/C,IAAIljC,EAAQ,GAAK,CAAEymB,OAAQ4c,EAAO5c,OAAS0c,EAAM1c,QACtB,kBAArB0c,EAAM34C,aAAyBzG,KAAKm/C,IAAIljC,EAAQ,GAAGxV,WAAa24C,EAAM34C,YAC1EzG,KACF,GAA4B,kBAAjBo/C,EAAMC,QAAgD,kBAAlBC,EAAOD,OAG3D,OAFAr/C,KAAKm/C,IAAIljC,EAAQ,GAAK,CAAEojC,OAAQC,EAAOD,OAASD,EAAMC,QACtB,kBAArBD,EAAM34C,aAAyBzG,KAAKm/C,IAAIljC,EAAQ,GAAGxV,WAAa24C,EAAM34C,YAC1EzG,IAEX,CACF,CAMA,OALIic,IAAUjc,KAAKm/C,IAAI/hD,OACrB4C,KAAKm/C,IAAIt/C,KAAKu/C,GAEdp/C,KAAKm/C,IAAI/lC,OAAO6C,EAAO,EAAGmjC,GAErBp/C,IACT,EAEAk/C,EAAMh/C,UAAUq/C,KAAO,WACrB,IAAID,EAASt/C,KAAKm/C,IAAIn/C,KAAKm/C,IAAI/hD,OAAS,GAIxC,OAHIkiD,GAAUA,EAAOD,SAAWC,EAAO74C,YACrCzG,KAAKm/C,IAAI5lC,MAEJvZ,IACT,EAEAk/C,EAAMh/C,UAAUmK,OAAS,SAAUm1C,GACjC,OAAOx/C,KAAKm/C,IAAI90C,OAAOm1C,EACzB,EAEAN,EAAMh/C,UAAU0K,QAAU,SAAU40C,GAClCx/C,KAAKm/C,IAAIv0C,QAAQ40C,EACnB,EAEAN,EAAMh/C,UAAUqS,IAAM,SAAUitC,GAC9B,OAAOx/C,KAAKm/C,IAAI5sC,IAAIitC,EACtB,EAEAN,EAAMh/C,UAAUu/C,UAAY,SAAUD,GACpC,IAAIE,EAAS,GAAIC,EAAS,GAK1B,OAJA3/C,KAAK4K,SAAQ,SAASo0C,IACPQ,EAAUR,GAAMU,EAASC,GAC/B9/C,KAAKm/C,EACd,IACO,CAACU,EAAQC,EAClB,EAEAT,EAAMh/C,UAAU0/C,OAAS,SAAUJ,EAAW/mB,GAC5C,OAAOz4B,KAAKm/C,IAAIS,OAAOJ,EAAW/mB,EACpC,EAEAymB,EAAMh/C,UAAU2/C,aAAe,WAC7B,OAAO7/C,KAAK4/C,QAAO,SAAUxiD,EAAQyiB,GACnC,OAAIA,EAAK6iB,OACAtlC,EAAS4hD,EAAG5hD,OAAOyiB,GACjBA,EAAK1T,OACP/O,EAASyiB,EAAK1T,OAEhB/O,CACT,GAAG,EACL,EAEA8hD,EAAMh/C,UAAU9C,OAAS,WACvB,OAAO4C,KAAK4/C,QAAO,SAAUxiD,EAAQyiB,GACnC,OAAOziB,EAAS4hD,EAAG5hD,OAAOyiB,EAC5B,GAAG,EACL,EAEAq/B,EAAMh/C,UAAUC,MAAQ,SAAUyE,EAAO5D,GACvC4D,EAAQA,GAAS,EACE,kBAAR5D,IAAkBA,EAAM8+C,KAInC,IAHA,IAAIX,EAAM,GACNY,EAAOf,EAAG78B,SAASniB,KAAKm/C,KACxBljC,EAAQ,EACLA,EAAQjb,GAAO++C,EAAKC,WAAW,CACpC,IAAIC,EACAhkC,EAAQrX,EACVq7C,EAASF,EAAKtkC,KAAK7W,EAAQqX,IAE3BgkC,EAASF,EAAKtkC,KAAKza,EAAMib,GACzBkjC,EAAIt/C,KAAKogD,IAEXhkC,GAAS+iC,EAAG5hD,OAAO6iD,EACrB,CACA,OAAO,IAAIf,EAAMC,EACnB,EAGAD,EAAMh/C,UAAUggD,QAAU,SAAUjnC,GAClC,IAAIknC,EAAWnB,EAAG78B,SAASniB,KAAKm/C,KAC5BiB,EAAYpB,EAAG78B,SAASlJ,EAAMkmC,KAC9BA,EAAM,GACNkB,EAAaD,EAAUE,OAC3B,GAAkB,MAAdD,GAAmD,kBAAtBA,EAAWhB,QAAgD,MAAzBgB,EAAW55C,WAAoB,CAEhG,IADA,IAAI85C,EAAYF,EAAWhB,OACI,WAAxBc,EAASK,YAA2BL,EAASM,cAAgBF,GAClEA,GAAaJ,EAASM,aACtBtB,EAAIt/C,KAAKsgD,EAAS1kC,QAEhB4kC,EAAWhB,OAASkB,EAAY,GAClCH,EAAU3kC,KAAK4kC,EAAWhB,OAASkB,EAEvC,CAEA,IADA,IAAInZ,EAAQ,IAAI8X,EAAMC,GACfgB,EAASH,WAAaI,EAAUJ,WACrC,GAA6B,WAAzBI,EAAUI,WACZpZ,EAAMvnC,KAAKugD,EAAU3kC,aAChB,GAA4B,WAAxB0kC,EAASK,WAClBpZ,EAAMvnC,KAAKsgD,EAAS1kC,YACf,CACL,IAAIre,EAASkD,KAAKE,IAAI2/C,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAAS1kC,KAAKre,GACvBujD,EAAUP,EAAU3kC,KAAKre,GAC7B,GAA8B,kBAAnBujD,EAAQtB,OAAqB,CACtC,IAAID,EAAQ,CAAC,EACgB,kBAAlBsB,EAAOrB,OAChBD,EAAMC,OAASjiD,EAEfgiD,EAAM1c,OAASge,EAAOhe,OAGxB,IAAIj8B,EAAau4C,EAAGv4C,WAAWy5C,QAAQQ,EAAOj6C,WAAYk6C,EAAQl6C,WAAqC,kBAAlBi6C,EAAOrB,QAK5F,GAJI54C,IAAY24C,EAAM34C,WAAaA,GACnC2gC,EAAMvnC,KAAKu/C,IAGNgB,EAAUJ,WAAajB,EAAM3X,EAAM+X,IAAI/X,EAAM+X,IAAI/hD,OAAS,GAAIgiD,GAAQ,CACzE,IAAIwB,EAAO,IAAI1B,EAAMiB,EAASS,QAC9B,OAAOxZ,EAAM5oB,OAAOoiC,GAAMrB,MAC5B,CAIF,KAAwC,kBAAtBoB,EAAgB,QAA2C,kBAAlBD,EAAOrB,QAChEjY,EAAMvnC,KAAK8gD,EAEf,CAEF,OAAOvZ,EAAMmY,MACf,EAEAL,EAAMh/C,UAAUse,OAAS,SAAUvF,GACjC,IAAImuB,EAAQ,IAAI8X,EAAMl/C,KAAKm/C,IAAIh/C,SAK/B,OAJI8Y,EAAMkmC,IAAI/hD,OAAS,IACrBgqC,EAAMvnC,KAAKoZ,EAAMkmC,IAAI,IACrB/X,EAAM+X,IAAM/X,EAAM+X,IAAI3gC,OAAOvF,EAAMkmC,IAAIh/C,MAAM,KAExCinC,CACT,EAEA8X,EAAMh/C,UAAUiqB,KAAO,SAAUlR,EAAOgD,GACtC,GAAIjc,KAAKm/C,MAAQlmC,EAAMkmC,IACrB,OAAO,IAAID,EAEb,IAAI2B,EAAU,CAAC7gD,KAAMiZ,GAAO1G,KAAI,SAAU60B,GACxC,OAAOA,EAAM70B,KAAI,SAAUysC,GACzB,GAAiB,MAAbA,EAAGtc,OACL,MAA4B,kBAAdsc,EAAGtc,OAAsBsc,EAAGtc,OAASuc,EAGrD,MAAM,IAAIjqC,MAAM,kBADJoyB,IAAUnuB,EAAS,KAAO,QACI,gBAC5C,IAAG5a,KAAK,GACV,IACI+oC,EAAQ,IAAI8X,EACZ4B,EAAa32B,EAAK02B,EAAQ,GAAIA,EAAQ,GAAI5kC,GAC1CkkC,EAAWnB,EAAG78B,SAASniB,KAAKm/C,KAC5BiB,EAAYpB,EAAG78B,SAASlJ,EAAMkmC,KA6BlC,OA5BA2B,EAAWl2C,SAAQ,SAAUm2C,GAE3B,IADA,IAAI3jD,EAAS2jD,EAAU,GAAG3jD,OACnBA,EAAS,GAAG,CACjB,IAAI4jD,EAAW,EACf,OAAQD,EAAU,IAChB,KAAK52B,EAAK82B,OACRD,EAAW1gD,KAAKE,IAAI4/C,EAAUK,aAAcrjD,GAC5CgqC,EAAMvnC,KAAKugD,EAAU3kC,KAAKulC,IAC1B,MACF,KAAK72B,EAAK+2B,OACRF,EAAW1gD,KAAKE,IAAIpD,EAAQ+iD,EAASM,cACrCN,EAAS1kC,KAAKulC,GACd5Z,EAAc,OAAE4Z,GAChB,MACF,KAAK72B,EAAKg3B,MACRH,EAAW1gD,KAAKE,IAAI2/C,EAASM,aAAcL,EAAUK,aAAcrjD,GACnE,IAAIsjD,EAASP,EAAS1kC,KAAKulC,GACvBL,EAAUP,EAAU3kC,KAAKulC,GACzBjC,EAAM2B,EAAOhe,OAAQie,EAAQje,QAC/B0E,EAAMiY,OAAO2B,EAAUhC,EAAGv4C,WAAW0jB,KAAKu2B,EAAOj6C,WAAYk6C,EAAQl6C,aAErE2gC,EAAMvnC,KAAK8gD,GAAiB,OAAEK,GAIpC5jD,GAAU4jD,CACZ,CACF,IACO5Z,EAAMmY,MACf,EAEAL,EAAMh/C,UAAUkhD,SAAW,SAAU5B,EAAW6B,GAC9CA,EAAUA,GAAW,KAIrB,IAHA,IAAItB,EAAOf,EAAG78B,SAASniB,KAAKm/C,KACxBmC,EAAO,IAAIpC,EACXniD,EAAI,EACDgjD,EAAKC,WAAW,CACrB,GAAwB,WAApBD,EAAKS,WAAyB,OAClC,IAAIE,EAASX,EAAKO,OACd17C,EAAQo6C,EAAG5hD,OAAOsjD,GAAUX,EAAKU,aACjCxkC,EAAiC,kBAAlBykC,EAAOhe,OACxBge,EAAOhe,OAAO3xB,QAAQswC,EAASz8C,GAASA,GAAS,EACnD,GAAIqX,EAAQ,EACVqlC,EAAKzhD,KAAKkgD,EAAKtkC,aACV,GAAIQ,EAAQ,EACjBqlC,EAAKzhD,KAAKkgD,EAAKtkC,KAAKQ,QACf,CACL,IAA0D,IAAtDujC,EAAU8B,EAAMvB,EAAKtkC,KAAK,GAAGhV,YAAc,CAAC,EAAG1J,GACjD,OAEFA,GAAK,EACLukD,EAAO,IAAIpC,CACb,CACF,CACIoC,EAAKlkD,SAAW,GAClBoiD,EAAU8B,EAAM,CAAC,EAAGvkD,EAExB,EAEAmiD,EAAMh/C,UAAUqhD,UAAY,SAAUtoC,EAAOuoC,GAE3C,GADAA,IAAaA,EACQ,kBAAVvoC,EACT,OAAOjZ,KAAKyhD,kBAAkBxoC,EAAOuoC,GAKvC,IAHA,IAAIrB,EAAWnB,EAAG78B,SAASniB,KAAKm/C,KAC5BiB,EAAYpB,EAAG78B,SAASlJ,EAAMkmC,KAC9B/X,EAAQ,IAAI8X,EACTiB,EAASH,WAAaI,EAAUJ,WACrC,GAA4B,WAAxBG,EAASK,aAA4BgB,GAAqC,WAAzBpB,EAAUI,WAExD,GAA6B,WAAzBJ,EAAUI,WACnBpZ,EAAMvnC,KAAKugD,EAAU3kC,YAChB,CACL,IAAIre,EAASkD,KAAKE,IAAI2/C,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAAS1kC,KAAKre,GACvBujD,EAAUP,EAAU3kC,KAAKre,GAC7B,GAAIsjD,EAAe,OAEjB,SACSC,EAAgB,OACzBvZ,EAAMvnC,KAAK8gD,GAGXvZ,EAAMiY,OAAOjiD,EAAQ4hD,EAAGv4C,WAAW86C,UAAUb,EAAOj6C,WAAYk6C,EAAQl6C,WAAY+6C,GAExF,MAhBEpa,EAAMiY,OAAOL,EAAG5hD,OAAO+iD,EAAS1kC,SAkBpC,OAAO2rB,EAAMmY,MACf,EAEAL,EAAMh/C,UAAUuhD,kBAAoB,SAAUxlC,EAAOulC,GACnDA,IAAaA,EAGb,IAFA,IAAIrB,EAAWnB,EAAG78B,SAASniB,KAAKm/C,KAC5BvG,EAAS,EACNuH,EAASH,WAAapH,GAAU38B,GAAO,CAC5C,IAAI7e,EAAS+iD,EAASM,aAClBiB,EAAWvB,EAASK,WACxBL,EAAS1kC,OACQ,WAAbimC,GAGoB,WAAbA,IAA0B9I,EAAS38B,IAAUulC,KACtDvlC,GAAS7e,GAEXw7C,GAAUx7C,GALR6e,GAAS3b,KAAKE,IAAIpD,EAAQ6e,EAAQ28B,EAMtC,CACA,OAAO38B,CACT,EAGAhgB,EAAOH,QAAUojD,CAGV,EAED,SAAUjjD,EAAQH,GAExB,aAEA,IAAI4iB,EAAS9b,OAAO1C,UAAUkc,eAC1BulC,EAAQ/+C,OAAO1C,UAAUtC,SACzBiF,EAAiBD,OAAOC,eACxB++C,EAAOh/C,OAAOi/C,yBAEdx7C,EAAU,SAAiBtH,GAC9B,MAA6B,oBAAlBqH,MAAMC,QACTD,MAAMC,QAAQtH,GAGK,mBAApB4iD,EAAM3/C,KAAKjD,EACnB,EAEI8hB,EAAgB,SAAuB7R,GAC1C,IAAKA,GAA2B,oBAApB2yC,EAAM3/C,KAAKgN,GACtB,OAAO,EAGR,IASIlM,EATAg/C,EAAoBpjC,EAAO1c,KAAKgN,EAAK,eACrC+yC,EAAmB/yC,EAAI0I,aAAe1I,EAAI0I,YAAYxX,WAAawe,EAAO1c,KAAKgN,EAAI0I,YAAYxX,UAAW,iBAE9G,GAAI8O,EAAI0I,cAAgBoqC,IAAsBC,EAC7C,OAAO,EAMR,IAAKj/C,KAAOkM,GAEZ,MAAsB,qBAARlM,GAAuB4b,EAAO1c,KAAKgN,EAAKlM,EACvD,EAGIymC,EAAc,SAAqB3oC,EAAQsP,GAC1CrN,GAAmC,cAAjBqN,EAAQvL,KAC7B9B,EAAejC,EAAQsP,EAAQvL,KAAM,CACpClC,YAAY,EACZC,cAAc,EACdkB,MAAOsM,EAAQ8xC,SACfr/C,UAAU,IAGX/B,EAAOsP,EAAQvL,MAAQuL,EAAQ8xC,QAEjC,EAGIC,EAAc,SAAqBjzC,EAAKrK,GAC3C,GAAa,cAATA,EAAsB,CACzB,IAAK+Z,EAAO1c,KAAKgN,EAAKrK,GACrB,OACM,GAAIi9C,EAGV,OAAOA,EAAK5yC,EAAKrK,GAAMf,KAEzB,CAEA,OAAOoL,EAAIrK,EACZ,EAEA1I,EAAOH,QAAU,SAAS8d,IACzB,IAAI1J,EAASvL,EAAMqa,EAAKyB,EAAMC,EAAaC,EACvC/f,EAASiF,UAAU,GACnB9I,EAAI,EACJK,EAASyI,UAAUzI,OACnBwjB,GAAO,EAaX,IAVsB,mBAAXhgB,IACVggB,EAAOhgB,EACPA,EAASiF,UAAU,IAAM,CAAC,EAE1B9I,EAAI,IAES,MAAV6D,GAAqC,kBAAXA,GAAyC,oBAAXA,KAC3DA,EAAS,CAAC,GAGJ7D,EAAIK,IAAUL,EAGpB,GAAe,OAFfmT,EAAUrK,UAAU9I,IAInB,IAAK4H,KAAQuL,EACZ8O,EAAMijC,EAAYrhD,EAAQ+D,GAItB/D,KAHJ6f,EAAOwhC,EAAY/xC,EAASvL,MAKvBic,GAAQH,IAASI,EAAcJ,KAAUC,EAAcra,EAAQoa,MAC9DC,GACHA,GAAc,EACdC,EAAQ3B,GAAO3Y,EAAQ2Y,GAAOA,EAAM,IAEpC2B,EAAQ3B,GAAO6B,EAAc7B,GAAOA,EAAM,CAAC,EAI5CuqB,EAAY3oC,EAAQ,CAAE+D,KAAMA,EAAMq9C,SAAUpoC,EAAOgH,EAAMD,EAAOF,MAGtC,qBAATA,GACjB8oB,EAAY3oC,EAAQ,CAAE+D,KAAMA,EAAMq9C,SAAUvhC,KAQjD,OAAO7f,CACR,CAGO,EAED,SAAU3E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQomD,WAAapmD,EAAQqmD,mBAAgB/lD,EAE/D,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreE,EAAWC,EAFD,EAAoB,IAM9BC,EAAeD,EAFD,EAAoB,IAMlCE,EAAcF,EAFD,EAAoB,IAMjCG,EAAUH,EAFD,EAAoB,KAM7BI,EAAWJ,EAFD,EAAoB,IAM9BK,EAASL,EAFD,EAAoB,IAIhC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAEIlB,EAAa,SAAUmB,GAGzB,SAASnB,IAGP,OAFAa,EAAgB/iD,KAAMkiD,GAEfc,EAA2BhjD,MAAOkiD,EAAW3E,WAAa36C,OAAOyb,eAAe6jC,IAAa/iD,MAAMa,KAAM6F,WAClH,CAuCA,OA7CAq9C,EAAUhB,EAAYmB,GAQtBjB,EAAaF,EAAY,CAAC,CACxBp/C,IAAK,SACLc,MAAO,WACLy+C,EAAKH,EAAWhiD,UAAUq9C,WAAa36C,OAAOyb,eAAe6jC,EAAWhiD,WAAY,SAAUF,MAAMgC,KAAKhC,MACzGA,KAAKyG,WAAa,IAAIk8C,EAAYrG,QAAQQ,WAAWI,MAAMl9C,KAAKsjD,QAClE,GACC,CACDxgD,IAAK,QACLc,MAAO,WACL,OAAO,IAAI8+C,EAAapG,SAAU5Z,OAAO1iC,KAAK4D,SAAS,EAAI4+C,EAASlG,SAASt8C,KAAKujD,UAAWvjD,KAAKyG,WAAWuyB,UAC/G,GACC,CACDl2B,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GAC3B,IAAI4/C,EAAYb,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAMsH,iBACzD,MAAbD,GACFxjD,KAAKyG,WAAW+8C,UAAUA,EAAW5/C,EAEzC,GACC,CACDd,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,EAAQuH,EAAMf,GAC5C5D,KAAK0jD,OAAO/+C,EAAMf,EACpB,GACC,CACDd,IAAK,WACLc,MAAO,SAAkBqY,EAAOrY,EAAO+/C,GACrC,GAAqB,kBAAV//C,GAAsBA,EAAMggD,SAAS,MAAO,CACrD,IAAIC,EAAQlB,EAAYrG,QAAQx4C,OAAO64C,EAAMiC,UAC7C5+C,KAAKiqB,OAAOkY,aAAa0hB,EAAiB,IAAV5nC,EAAcjc,KAAOA,KAAKyb,MAC1DooC,EAAMC,SAAS,EAAGlgD,EAAMzD,MAAM,GAAI,GACpC,MACEkiD,EAAKH,EAAWhiD,UAAUq9C,WAAa36C,OAAOyb,eAAe6jC,EAAWhiD,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAOrY,EAAO+/C,EAEnI,KAGKzB,CACT,CA/CiB,CA+CfS,EAAYrG,QAAQG,OAEtByF,EAAWt7B,MAAQ+7B,EAAYrG,QAAQH,MAAM4H,WAI7C,IAAIpH,EAAQ,SAAUqH,GAGpB,SAASrH,EAAM2G,GACbP,EAAgB/iD,KAAM28C,GAEtB,IAAI5yC,EAASi5C,EAA2BhjD,MAAO28C,EAAMY,WAAa36C,OAAOyb,eAAes+B,IAAQ36C,KAAKhC,KAAMsjD,IAG3G,OADAv5C,EAAOmd,MAAQ,CAAC,EACTnd,CACT,CAwHA,OAjIAm5C,EAAUvG,EAAOqH,GAWjB5B,EAAazF,EAAO,CAAC,CACnB75C,IAAK,QACLc,MAAO,WAUL,OATwB,MAApB5D,KAAKknB,MAAMkgB,QACbpnC,KAAKknB,MAAMkgB,MAAQpnC,KAAKikD,YAAYtB,EAAYrG,QAAQE,MAAMoD,QAAO,SAAUxY,EAAO8c,GACpF,OAAsB,IAAlBA,EAAK9mD,SACAgqC,EAEAA,EAAM1E,OAAOwhB,EAAKtgD,QAASu+C,EAAc+B,GAEpD,GAAG,IAAIxB,EAAapG,SAAW5Z,OAAO,KAAMyf,EAAcniD,QAErDA,KAAKknB,MAAMkgB,KACpB,GACC,CACDtkC,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,GAC9BilD,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAO7e,GAC9G4C,KAAKknB,MAAQ,CAAC,CAChB,GACC,CACDpkB,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,EAAQuH,EAAMf,GACxCxG,GAAU,IACVulD,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAM8B,OACxDhiC,EAAQ7e,IAAW4C,KAAK5C,UAC1B4C,KAAK0jD,OAAO/+C,EAAMf,GAGpBy+C,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAO3b,KAAKE,IAAIpD,EAAQ4C,KAAK5C,SAAW6e,EAAQ,GAAItX,EAAMf,GAEnK5D,KAAKknB,MAAQ,CAAC,EAChB,GACC,CACDpkB,IAAK,WACLc,MAAO,SAAkBqY,EAAOrY,EAAO+/C,GACrC,GAAW,MAAPA,EAAa,OAAOtB,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAOrY,EAAO+/C,GAC7I,GAAqB,IAAjB//C,EAAMxG,OAAV,CACA,IAAI+mD,EAAQvgD,EAAMqU,MAAM,MACpBrI,EAAOu0C,EAAMx5C,QACbiF,EAAKxS,OAAS,IACZ6e,EAAQjc,KAAK5C,SAAW,GAA2B,MAAtB4C,KAAKowB,SAAS/yB,KAC7CglD,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMM,KAAKE,IAAIyb,EAAOjc,KAAK5C,SAAW,GAAIwS,GAE3I5P,KAAKowB,SAAS/yB,KAAKymD,SAAS9jD,KAAKowB,SAAS/yB,KAAKD,SAAUwS,GAE3D5P,KAAKknB,MAAQ,CAAC,GAEhB,IAAI28B,EAAQ7jD,KACZmkD,EAAMvE,QAAO,SAAU3jC,EAAOqlC,GAG5B,OAFAuC,EAAQA,EAAM5rC,MAAMgE,GAAO,IACrB6nC,SAAS,EAAGxC,GACXA,EAAKlkD,MACd,GAAG6e,EAAQrM,EAAKxS,OAhBc,CAiBhC,GACC,CACD0F,IAAK,eACLc,MAAO,SAAsB66C,EAAMnxC,GACjC,IAAIpI,EAAOlF,KAAKowB,SAASlrB,KACzBm9C,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,eAAgBF,MAAMgC,KAAKhC,KAAMy+C,EAAMnxC,GAC7GpI,aAAgB09C,EAAQtG,SAC1Bp3C,EAAK6S,SAEP/X,KAAKknB,MAAQ,CAAC,CAChB,GACC,CACDpkB,IAAK,SACLc,MAAO,WAIL,OAHyB,MAArB5D,KAAKknB,MAAM9pB,SACb4C,KAAKknB,MAAM9pB,OAASilD,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,SAAUF,MAAMgC,KAAKhC,MAxItG,GA0IRA,KAAKknB,MAAM9pB,MACpB,GACC,CACD0F,IAAK,eACLc,MAAO,SAAsBhD,EAAQ0M,GACnC+0C,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,eAAgBF,MAAMgC,KAAKhC,KAAMY,EAAQ0M,GACnHtN,KAAKknB,MAAQ,CAAC,CAChB,GACC,CACDpkB,IAAK,WACLc,MAAO,SAAkB6b,GACvB4iC,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMyf,GACvGzf,KAAKknB,MAAQ,CAAC,CAChB,GACC,CACDpkB,IAAK,OACLc,MAAO,SAAcqY,GACnB,OAAOomC,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,OAAQF,MAAMgC,KAAKhC,KAAMic,GAAO,EACnH,GACC,CACDnZ,IAAK,cACLc,MAAO,SAAqBwgD,GAC1B/B,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,cAAeF,MAAMgC,KAAKhC,KAAMokD,GAC1GpkD,KAAKknB,MAAQ,CAAC,CAChB,GACC,CACDpkB,IAAK,QACLc,MAAO,SAAeqY,GACpB,IAAIooC,EAAQx+C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAE3E,GAAIw+C,IAAoB,IAAVpoC,GAAeA,GAASjc,KAAK5C,SAxK5B,GAwKwD,CACrE,IAAIujB,EAAQ3gB,KAAK2gB,QACjB,OAAc,IAAV1E,GACFjc,KAAKiqB,OAAOkY,aAAaxhB,EAAO3gB,MACzBA,OAEPA,KAAKiqB,OAAOkY,aAAaxhB,EAAO3gB,KAAKyb,MAC9BkF,EAEX,CACE,IAAIlF,EAAO4mC,EAAK1F,EAAMz8C,UAAUq9C,WAAa36C,OAAOyb,eAAes+B,EAAMz8C,WAAY,QAASF,MAAMgC,KAAKhC,KAAMic,EAAOooC,GAEtH,OADArkD,KAAKknB,MAAQ,CAAC,EACPzL,CAEX,KAGKkhC,CACT,CAnIY,CAmIVgG,EAAYrG,QAAQK,OAOtB,SAASwF,EAAc1D,GACrB,IAAI8E,EAAU19C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,OAAY,MAAR44C,EAAqB8E,GACG,oBAAjB9E,EAAK8E,UACdA,GAAU,EAAIf,EAASlG,SAASiH,EAAS9E,EAAK8E,YAE7B,MAAf9E,EAAKx0B,QAA0C,UAAxBw0B,EAAKx0B,OAAO20B,UAAwBH,EAAKx0B,OAAOq6B,QAAQ19B,QAAU63B,EAAK6F,QAAQ19B,MACjG28B,EAEFpB,EAAc1D,EAAKx0B,OAAQs5B,GACpC,CAhBA5G,EAAMiC,SAAW,QACjBjC,EAAMvxC,QAAU,IAChBuxC,EAAM4H,aAAe,QACrB5H,EAAM6H,gBAAkB,CAAC3B,EAASvG,QAASqG,EAAYrG,QAAQG,MAAOqG,EAAOxG,SAe7ExgD,EAAQqmD,cAAgBA,EACxBrmD,EAAQomD,WAAaA,EACrBpmD,EAAQwgD,QAAUK,CAEX,EAED,SAAU1gD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQ2oD,SAAW3oD,EAAQ4oD,kBAAetoD,EAE5D,IAAIuoD,EAA4B,oBAAXziC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUnT,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXkT,QAAyBlT,EAAI0I,cAAgBwK,QAAUlT,IAAQkT,OAAOhiB,UAAY,gBAAkB8O,CAAK,EAEvQ41C,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEnB,EAAoB,IAEpB,IAEIugD,EAAeD,EAFD,EAAoB,IAMlC0C,EAAW1C,EAFD,EAAoB,KAM9B2C,EAAY3C,EAFA,EAAoB,IAMhC4C,EAAW5C,EAFD,EAAoB,IAM9BE,EAAcF,EAFD,EAAoB,IAIjC6C,EAAa,EAAoB,IAEjCC,EAAc9C,EAAuB6C,GAIrC9C,EAAWC,EAFD,EAAoB,IAM9B+C,EAAW/C,EAFD,EAAoB,KAM9BgD,EAAUhD,EAFD,EAAoB,KAIjC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS02C,EAAgB12C,EAAKlM,EAAKc,GAAiK,OAApJd,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,CAAK,CAIhN,IAAI22C,GAAQ,EAAIH,EAASlJ,SAAS,SAE9BsJ,EAAQ,WAqDV,SAASA,EAAM/oC,GACb,IAAI9S,EAAS/J,KAETkQ,EAAUrK,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAMnF,GAlEJ,SAAyB3D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CA8DpJ2gD,CAAgB/iD,KAAM4lD,GAEtB5lD,KAAKkQ,QAAUw0C,EAAa7nC,EAAW3M,GACvClQ,KAAK6c,UAAY7c,KAAKkQ,QAAQ2M,UACR,MAAlB7c,KAAK6c,UACP,OAAO8oC,EAAMp9C,MAAM,0BAA2BsU,GAE5C7c,KAAKkQ,QAAQy1C,OACfC,EAAMD,MAAM3lD,KAAKkQ,QAAQy1C,OAE3B,IAAI91C,EAAO7P,KAAK6c,UAAUnJ,UAAUoE,OACpC9X,KAAK6c,UAAUgpC,UAAUluC,IAAI,gBAC7B3X,KAAK6c,UAAUnJ,UAAY,GAC3B1T,KAAK6c,UAAUipC,QAAU9lD,KACzBA,KAAKqF,KAAOrF,KAAK+lD,aAAa,aAC9B/lD,KAAKqF,KAAKwgD,UAAUluC,IAAI,YACxB3X,KAAKqF,KAAKmG,aAAa,cAAc,GACrCxL,KAAKgmD,mBAAqBhmD,KAAKkQ,QAAQ81C,oBAAsBhmD,KAAKqF,KAClErF,KAAKimD,QAAU,IAAIb,EAAU9I,QAC7Bt8C,KAAKkmD,OAASvD,EAAYrG,QAAQx4C,OAAO9D,KAAKqF,KAAM,CAClD4gD,QAASjmD,KAAKimD,QACdE,UAAWnmD,KAAKkQ,QAAQqzC,UAE1BvjD,KAAKomD,OAAS,IAAIjB,EAAS7I,QAAQt8C,KAAKkmD,QACxClmD,KAAKud,UAAY,IAAIgoC,EAAYjJ,QAAQt8C,KAAKkmD,OAAQlmD,KAAKimD,SAC3DjmD,KAAKqmD,MAAQ,IAAIrmD,KAAKkQ,QAAQm2C,MAAMrmD,KAAMA,KAAKkQ,SAC/ClQ,KAAKsmD,SAAWtmD,KAAKqmD,MAAME,UAAU,YACrCvmD,KAAKwmD,UAAYxmD,KAAKqmD,MAAME,UAAU,aACtCvmD,KAAKymD,QAAUzmD,KAAKqmD,MAAME,UAAU,WACpCvmD,KAAKqmD,MAAM3mC,OACX1f,KAAKimD,QAAQjrC,GAAGoqC,EAAU9I,QAAQpgB,OAAOwqB,eAAe,SAAU/gD,GAC5DA,IAASy/C,EAAU9I,QAAQpgB,OAAOyqB,aACpC58C,EAAO1E,KAAKwgD,UAAU5sB,OAAO,WAAYlvB,EAAOq8C,OAAOQ,UAE3D,IACA5mD,KAAKimD,QAAQjrC,GAAGoqC,EAAU9I,QAAQpgB,OAAO2qB,eAAe,SAAUhtC,EAAQitC,GACxE,IAAIC,EAAQh9C,EAAOwT,UAAUypC,UACzB/qC,EAAQ8qC,GAA0B,IAAjBA,EAAM3pD,OAAe2pD,EAAM9qC,WAAQ7f,EACxD6qD,EAAOjlD,KAAK+H,GAAQ,WAClB,OAAOA,EAAOq8C,OAAOc,OAAO,KAAMJ,EAAW7qC,EAC/C,GAAGpC,EACL,IACA,IAAI1Y,EAAWnB,KAAKwmD,UAAUW,QAAQ,yDAA2Dt3C,EAAO,qBACxG7P,KAAKonD,YAAYjmD,GACjBnB,KAAKymD,QAAQY,QACTrnD,KAAKkQ,QAAQo3C,aACftnD,KAAKqF,KAAKmG,aAAa,mBAAoBxL,KAAKkQ,QAAQo3C,aAEtDtnD,KAAKkQ,QAAQq3C,UACfvnD,KAAKyL,SAET,CAiYA,OA7eA22C,EAAawD,EAAO,KAAM,CAAC,CACzB9iD,IAAK,QACLc,MAAO,SAAe4jD,IACN,IAAVA,IACFA,EAAQ,OAEVhC,EAASlJ,QAAQmL,MAAMD,EACzB,GACC,CACD1kD,IAAK,OACLc,MAAO,SAAcwb,GACnB,OAAOA,EAAK0mC,SAAWnD,EAAYrG,QAAQr2B,KAAK7G,EAClD,GACC,CACDtc,IAAK,SACLc,MAAO,SAAiBe,GAItB,OAH0B,MAAtB3E,KAAK0nD,QAAQ/iD,IACfghD,EAAMp9C,MAAM,iBAAmB5D,EAAO,qCAEjC3E,KAAK0nD,QAAQ/iD,EACtB,GACC,CACD7B,IAAK,WACLc,MAAO,SAAkB+jD,EAAM/mD,GAC7B,IAAImD,EAAQ/D,KAER4nD,EAAY/hD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAE/E,GAAoB,kBAAT8hD,EAAmB,CAC5B,IAAIhjD,EAAOgjD,EAAK9I,UAAY8I,EAAK/I,SACb,kBAATj6C,EAET3E,KAAKo8C,SAAS,WAAaz3C,EAAMgjD,EAAM/mD,GAEvCgC,OAAOqkB,KAAK0gC,GAAM/8C,SAAQ,SAAU9H,GAClCiB,EAAMq4C,SAASt5C,EAAK6kD,EAAK7kD,GAAMlC,EACjC,GAEJ,MAC4B,MAAtBZ,KAAK0nD,QAAQC,IAAkBC,GACjCjC,EAAM7wB,KAAK,eAAiB6yB,EAAO,QAAS/mD,GAE9CZ,KAAK0nD,QAAQC,GAAQ/mD,GAChB+mD,EAAKE,WAAW,WAAaF,EAAKE,WAAW,cAAoC,aAApBjnD,EAAOg+C,SACvE+D,EAAYrG,QAAQF,SAASx7C,GACpB+mD,EAAKE,WAAW,YAAyC,oBAApBjnD,EAAOw7C,UACrDx7C,EAAOw7C,UAGb,KA6DFgG,EAAawD,EAAO,CAAC,CACnB9iD,IAAK,eACLc,MAAO,SAAsBiZ,GAC3B,IAAIirC,EAAUjiD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,KAElF,GAAyB,kBAAdgX,EAAwB,CACjC,IAAI0L,EAAY1L,GAChBA,EAAY5X,SAASmE,cAAc,QACzBy8C,UAAUluC,IAAI4Q,EAC1B,CAEA,OADAvoB,KAAK6c,UAAUslB,aAAatlB,EAAWirC,GAChCjrC,CACT,GACC,CACD/Z,IAAK,OACLc,MAAO,WACL5D,KAAKud,UAAUwqC,SAAS,KAC1B,GACC,CACDjlD,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,EAAQyc,GACxC,IAAImuC,EAAShoD,KAETioD,EAAYxD,EAASxoC,EAAO7e,EAAQyc,GAEpCquC,EAAatD,EAAeqD,EAAW,GAM3C,OAJAhsC,EAAQisC,EAAW,GACnB9qD,EAAS8qD,EAAW,GACpBruC,EAASquC,EAAW,GAEbjB,EAAOjlD,KAAKhC,MAAM,WACvB,OAAOgoD,EAAO5B,OAAO+B,WAAWlsC,EAAO7e,EACzC,GAAGyc,EAAQoC,GAAQ,EAAI7e,EACzB,GACC,CACD0F,IAAK,UACLc,MAAO,WACL5D,KAAK2L,QAAO,EACd,GACC,CACD7I,IAAK,SACLc,MAAO,WACL,IAAIynB,IAAUxlB,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,KAAmBA,UAAU,GAE7E7F,KAAKkmD,OAAOv6C,OAAO0f,GACnBrrB,KAAK6c,UAAUgpC,UAAU5sB,OAAO,eAAgB5N,EAClD,GACC,CACDvoB,IAAK,QACLc,MAAO,WACL,IAAIgnC,EAAY5qC,KAAKgmD,mBAAmBpb,UACxC5qC,KAAKud,UAAUzR,QACf9L,KAAKgmD,mBAAmBpb,UAAYA,EACpC5qC,KAAKooD,gBACP,GACC,CACDtlD,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GAC3B,IAAIykD,EAASroD,KAET6Z,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQC,IAE3G,OAAOtB,EAAOjlD,KAAKhC,MAAM,WACvB,IAAI+mD,EAAQsB,EAAOG,cAAa,GAC5BC,EAAS,IAAI/F,EAAapG,QAC9B,GAAa,MAATyK,EACF,OAAO0B,EACF,GAAI9F,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAM8B,OACnEwK,EAASJ,EAAOjC,OAAOsC,WAAW3B,EAAM9qC,MAAO8qC,EAAM3pD,OAAQsoD,EAAgB,CAAC,EAAG/gD,EAAMf,QAClF,IAAqB,IAAjBmjD,EAAM3pD,OAEf,OADAirD,EAAO9qC,UAAUmmC,OAAO/+C,EAAMf,GACvB6kD,EAEPA,EAASJ,EAAOjC,OAAOuC,WAAW5B,EAAM9qC,MAAO8qC,EAAM3pD,OAAQsoD,EAAgB,CAAC,EAAG/gD,EAAMf,GACzF,CAEA,OADAykD,EAAOO,aAAa7B,EAAO3B,EAAU9I,QAAQgM,QAAQO,QAC9CJ,CACT,GAAG5uC,EACL,GACC,CACD/W,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,EAAQuH,EAAMf,EAAOiW,GACrD,IAEI0pC,EAFAuF,EAAS9oD,KAIT+oD,EAAatE,EAASxoC,EAAO7e,EAAQuH,EAAMf,EAAOiW,GAElDmvC,EAAapE,EAAemE,EAAY,GAO5C,OALA9sC,EAAQ+sC,EAAW,GACnB5rD,EAAS4rD,EAAW,GACpBzF,EAAUyF,EAAW,GACrBnvC,EAASmvC,EAAW,GAEb/B,EAAOjlD,KAAKhC,MAAM,WACvB,OAAO8oD,EAAO1C,OAAOsC,WAAWzsC,EAAO7e,EAAQmmD,EACjD,GAAG1pC,EAAQoC,EAAO,EACpB,GACC,CACDnZ,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,EAAQuH,EAAMf,EAAOiW,GACrD,IAEI0pC,EAFA0F,EAASjpD,KAITkpD,EAAazE,EAASxoC,EAAO7e,EAAQuH,EAAMf,EAAOiW,GAElDsvC,EAAavE,EAAesE,EAAY,GAO5C,OALAjtC,EAAQktC,EAAW,GACnB/rD,EAAS+rD,EAAW,GACpB5F,EAAU4F,EAAW,GACrBtvC,EAASsvC,EAAW,GAEblC,EAAOjlD,KAAKhC,MAAM,WACvB,OAAOipD,EAAO7C,OAAOuC,WAAW1sC,EAAO7e,EAAQmmD,EACjD,GAAG1pC,EAAQoC,EAAO,EACpB,GACC,CACDnZ,IAAK,YACLc,MAAO,SAAmBqY,GACxB,IAAI7e,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAE7EujD,OAAS,EAEXA,EADmB,kBAAVntC,EACAjc,KAAKud,UAAU8rC,UAAUptC,EAAO7e,GAEhC4C,KAAKud,UAAU8rC,UAAUptC,EAAMA,MAAOA,EAAM7e,QAEvD,IAAIksD,EAAkBtpD,KAAK6c,UAAU4sB,wBACrC,MAAO,CACL8f,OAAQH,EAAOG,OAASD,EAAgBvhC,IACxC0d,OAAQ2jB,EAAO3jB,OACfkE,KAAMyf,EAAOzf,KAAO2f,EAAgB3f,KACpCtF,MAAO+kB,EAAO/kB,MAAQilB,EAAgB3f,KACtC5hB,IAAKqhC,EAAOrhC,IAAMuhC,EAAgBvhC,IAClCsb,MAAO+lB,EAAO/lB,MAElB,GACC,CACDvgC,IAAK,cACLc,MAAO,WACL,IAAIqY,EAAQpW,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAC5EzI,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK7F,KAAKwpD,YAAcvtC,EAEhGwtC,EAAahF,EAASxoC,EAAO7e,GAE7BssD,EAAa9E,EAAe6E,EAAY,GAK5C,OAHAxtC,EAAQytC,EAAW,GACnBtsD,EAASssD,EAAW,GAEb1pD,KAAKomD,OAAOuD,YAAY1tC,EAAO7e,EACxC,GACC,CACD0F,IAAK,YACLc,MAAO,WACL,IAAIqY,EAAQpW,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK7F,KAAKwoD,cAAa,GAC9FprD,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAEjF,MAAqB,kBAAVoW,EACFjc,KAAKomD,OAAOwD,UAAU3tC,EAAO7e,GAE7B4C,KAAKomD,OAAOwD,UAAU3tC,EAAMA,MAAOA,EAAM7e,OAEpD,GACC,CACD0F,IAAK,WACLc,MAAO,SAAkB66C,GACvB,OAAOA,EAAK7F,OAAO54C,KAAKkmD,OAC1B,GACC,CACDpjD,IAAK,YACLc,MAAO,WACL,OAAO5D,KAAKkmD,OAAO9oD,QACrB,GACC,CACD0F,IAAK,UACLc,MAAO,SAAiBqY,GACtB,OAAOjc,KAAKkmD,OAAOhC,KAAKjoC,EAC1B,GACC,CACDnZ,IAAK,UACLc,MAAO,SAAiBqY,GACtB,OAAOjc,KAAKkmD,OAAO5E,KAAKrlC,EAC1B,GACC,CACDnZ,IAAK,WACLc,MAAO,WACL,IAAIqY,EAAQpW,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAC5EzI,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKgkD,OAAOC,UAExF,MAAqB,kBAAV7tC,EACFjc,KAAKkmD,OAAO/B,MAAMloC,EAAMA,MAAOA,EAAM7e,QAErC4C,KAAKkmD,OAAO/B,MAAMloC,EAAO7e,EAEpC,GACC,CACD0F,IAAK,YACLc,MAAO,SAAmBe,GACxB,OAAO3E,KAAKqmD,MAAMtL,QAAQp2C,EAC5B,GACC,CACD7B,IAAK,eACLc,MAAO,WAKL,OAJYiC,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,IAEhE7F,KAAK8L,QAChB9L,KAAKknD,SACElnD,KAAKud,UAAUwsC,WAAW,EACnC,GACC,CACDjnD,IAAK,UACLc,MAAO,WACL,IAAIqY,EAAQpW,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAC5EzI,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK7F,KAAKwpD,YAAcvtC,EAEhG+tC,EAAavF,EAASxoC,EAAO7e,GAE7B6sD,EAAcrF,EAAeoF,EAAY,GAK7C,OAHA/tC,EAAQguC,EAAY,GACpB7sD,EAAS6sD,EAAY,GAEdjqD,KAAKomD,OAAOh3B,QAAQnT,EAAO7e,EACpC,GACC,CACD0F,IAAK,WACLc,MAAO,WACL,OAAO5D,KAAKud,UAAU4N,UACxB,GACC,CACDroB,IAAK,cACLc,MAAO,SAAqBqY,EAAOiuC,EAAOtmD,GACxC,IAAIumD,EAASnqD,KAET6Z,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK+/C,EAAM0C,QAAQC,IAE/F,OAAOtB,EAAOjlD,KAAKhC,MAAM,WACvB,OAAOmqD,EAAO/D,OAAOgE,YAAYnuC,EAAOiuC,EAAOtmD,EACjD,GAAGiW,EAAQoC,EACb,GACC,CACDnZ,IAAK,aACLc,MAAO,SAAoBqY,EAAOrM,EAAMjL,EAAMf,EAAOiW,GACnD,IAEI0pC,EAFA8G,EAASrqD,KAITsqD,EAAc7F,EAASxoC,EAAO,EAAGtX,EAAMf,EAAOiW,GAE9C0wC,EAAc3F,EAAe0F,EAAa,GAM9C,OAJAruC,EAAQsuC,EAAY,GACpBhH,EAAUgH,EAAY,GACtB1wC,EAAS0wC,EAAY,GAEdtD,EAAOjlD,KAAKhC,MAAM,WACvB,OAAOqqD,EAAOjE,OAAOoE,WAAWvuC,EAAOrM,EAAM2zC,EAC/C,GAAG1pC,EAAQoC,EAAOrM,EAAKxS,OACzB,GACC,CACD0F,IAAK,YACLc,MAAO,WACL,OAAQ5D,KAAK6c,UAAUgpC,UAAUtjC,SAAS,cAC5C,GACC,CACDzf,IAAK,MACLc,MAAO,WACL,OAAO5D,KAAKimD,QAAQxpC,IAAItd,MAAMa,KAAKimD,QAASpgD,UAC9C,GACC,CACD/C,IAAK,KACLc,MAAO,WACL,OAAO5D,KAAKimD,QAAQjrC,GAAG7b,MAAMa,KAAKimD,QAASpgD,UAC7C,GACC,CACD/C,IAAK,OACLc,MAAO,WACL,OAAO5D,KAAKimD,QAAQzzB,KAAKrzB,MAAMa,KAAKimD,QAASpgD,UAC/C,GACC,CACD/C,IAAK,YACLc,MAAO,SAAmBqY,EAAOpM,EAAMgK,GACrC7Z,KAAKwmD,UAAUiE,qBAAqBxuC,EAAOpM,EAAMgK,EACnD,GACC,CACD/W,IAAK,eACLc,MAAO,SAAsBqY,EAAO7e,EAAQyc,GAC1C,IAAI6wC,EAAS1qD,KAET2qD,EAAclG,EAASxoC,EAAO7e,EAAQyc,GAEtC+wC,EAAchG,EAAe+F,EAAa,GAM9C,OAJA1uC,EAAQ2uC,EAAY,GACpBxtD,EAASwtD,EAAY,GACrB/wC,EAAS+wC,EAAY,GAEd3D,EAAOjlD,KAAKhC,MAAM,WACvB,OAAO0qD,EAAOtE,OAAOyE,aAAa5uC,EAAO7e,EAC3C,GAAGyc,EAAQoC,EACb,GACC,CACDnZ,IAAK,iBACLc,MAAO,WACL5D,KAAKud,UAAU6qC,eAAepoD,KAAKgmD,mBACrC,GACC,CACDljD,IAAK,cACLc,MAAO,SAAqBwjC,GAC1B,IAAI0jB,EAAU9qD,KAEV6Z,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQC,IAE3G,OAAOtB,EAAOjlD,KAAKhC,MAAM,WACvBonC,EAAQ,IAAIsb,EAAapG,QAAQlV,GACjC,IAAIhqC,EAAS0tD,EAAQtB,YACjBuB,EAAUD,EAAQ1E,OAAO+B,WAAW,EAAG/qD,GACvC4tD,EAAUF,EAAQ1E,OAAO6E,WAAW7jB,GACpCkY,EAAS0L,EAAQ7L,IAAI6L,EAAQ7L,IAAI/hD,OAAS,GAM9C,OALc,MAAVkiD,GAA2C,kBAAlBA,EAAO5c,QAAmE,OAA5C4c,EAAO5c,OAAO4c,EAAO5c,OAAOtlC,OAAS,KAC9F0tD,EAAQ1E,OAAO+B,WAAW2C,EAAQtB,YAAc,EAAG,GACnDwB,EAAQ7+C,OAAO,IAEP4+C,EAAQ7K,QAAQ8K,EAE5B,GAAGnxC,EACL,GACC,CACD/W,IAAK,eACLc,MAAO,SAAsBqY,EAAO7e,EAAQyc,GAC1C,GAAa,MAAToC,EACFjc,KAAKud,UAAUwqC,SAAS,KAAM3qD,GAAUwoD,EAAM0C,QAAQC,SACjD,CACL,IAAI2C,EAAczG,EAASxoC,EAAO7e,EAAQyc,GAEtCsxC,EAAcvG,EAAesG,EAAa,GAE9CjvC,EAAQkvC,EAAY,GACpB/tD,EAAS+tD,EAAY,GACrBtxC,EAASsxC,EAAY,GAErBnrD,KAAKud,UAAUwqC,SAAS,IAAIzC,EAAW8F,MAAMnvC,EAAO7e,GAASyc,GACzDA,IAAWurC,EAAU9I,QAAQgM,QAAQO,QACvC7oD,KAAKud,UAAU6qC,eAAepoD,KAAKgmD,mBAEvC,CACF,GACC,CACDljD,IAAK,UACLc,MAAO,SAAiBgM,GACtB,IAAIiK,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQC,IAEvGnhB,GAAQ,IAAIsb,EAAapG,SAAU5Z,OAAO9yB,GAC9C,OAAO5P,KAAKonD,YAAYhgB,EAAOvtB,EACjC,GACC,CACD/W,IAAK,SACLc,MAAO,WACL,IAAIiW,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQ+C,KAEvG5C,EAASzoD,KAAKkmD,OAAOgB,OAAOrtC,GAEhC,OADA7Z,KAAKud,UAAU2pC,OAAOrtC,GACf4uC,CACT,GACC,CACD3lD,IAAK,iBACLc,MAAO,SAAwBwjC,GAC7B,IAAIkkB,EAAUtrD,KAEV6Z,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQC,IAE3G,OAAOtB,EAAOjlD,KAAKhC,MAAM,WAEvB,OADAonC,EAAQ,IAAIsb,EAAapG,QAAQlV,GAC1BkkB,EAAQlF,OAAO6E,WAAW7jB,EAAOvtB,EAC1C,GAAGA,GAAQ,EACb,KAGK+rC,CACT,CA/eY,GAugBZ,SAASlB,EAAa7nC,EAAW0uC,GAS/B,IARAA,GAAa,EAAI/I,EAASlG,UAAS,EAAM,CACvCz/B,UAAWA,EACXk+B,QAAS,CACPyL,WAAW,EACXF,UAAU,EACVG,SAAS,IAEV8E,IACalF,OAASkF,EAAWlF,QAAUT,EAAM4F,SAASnF,OAI3D,GADAkF,EAAWlF,MAAQT,EAAM6F,OAAO,UAAYF,EAAWlF,OAC/B,MAApBkF,EAAWlF,MACb,MAAM,IAAIrxC,MAAM,iBAAmBu2C,EAAWlF,MAAQ,+BAJxDkF,EAAWlF,MAAQZ,EAAQnJ,QAO7B,IAAIoP,GAAc,EAAIlJ,EAASlG,UAAS,EAAM,CAAC,EAAGiP,EAAWlF,MAAMmF,UACnE,CAACE,EAAaH,GAAY3gD,SAAQ,SAAU+gD,GAC1CA,EAAO5Q,QAAU4Q,EAAO5Q,SAAW,CAAC,EACpCn4C,OAAOqkB,KAAK0kC,EAAO5Q,SAASnwC,SAAQ,SAAU3O,IACb,IAA3B0vD,EAAO5Q,QAAQ9+C,KACjB0vD,EAAO5Q,QAAQ9+C,GAAU,CAAC,EAE9B,GACF,IACA,IACI2vD,EADchpD,OAAOqkB,KAAKykC,EAAY3Q,SAASv8B,OAAO5b,OAAOqkB,KAAKskC,EAAWxQ,UAClD6E,QAAO,SAAU+L,EAAQhnD,GACtD,IAAIknD,EAAcjG,EAAM6F,OAAO,WAAa9mD,GAM5C,OALmB,MAAfknD,EACFlG,EAAMp9C,MAAM,eAAiB5D,EAAO,4CAEpCgnD,EAAOhnD,GAAQknD,EAAYL,UAAY,CAAC,EAEnCG,CACT,GAAG,CAAC,GAmBJ,OAjB0B,MAAtBJ,EAAWxQ,SAAmBwQ,EAAWxQ,QAAQ+Q,SAAWP,EAAWxQ,QAAQ+Q,QAAQp0C,cAAgB9U,SACzG2oD,EAAWxQ,QAAQ+Q,QAAU,CAC3BjvC,UAAW0uC,EAAWxQ,QAAQ+Q,UAGlCP,GAAa,EAAI/I,EAASlG,UAAS,EAAM,CAAC,EAAGsJ,EAAM4F,SAAU,CAAEzQ,QAAS6Q,GAAgBF,EAAaH,GACrG,CAAC,SAAU,YAAa,sBAAsB3gD,SAAQ,SAAU9H,GAC/B,kBAApByoD,EAAWzoD,KACpByoD,EAAWzoD,GAAOmC,SAASQ,cAAc8lD,EAAWzoD,IAExD,IACAyoD,EAAWxQ,QAAUn4C,OAAOqkB,KAAKskC,EAAWxQ,SAAS6E,QAAO,SAAU+L,EAAQhnD,GAI5E,OAHI4mD,EAAWxQ,QAAQp2C,KACrBgnD,EAAOhnD,GAAQ4mD,EAAWxQ,QAAQp2C,IAE7BgnD,CACT,GAAG,CAAC,GACGJ,CACT,CAIA,SAAStE,EAAO8E,EAAUlyC,EAAQoC,EAAOtR,GACvC,GAAI3K,KAAKkQ,QAAQ87C,SAAWhsD,KAAKisD,aAAepyC,IAAWurC,EAAU9I,QAAQgM,QAAQ+C,KACnF,OAAO,IAAI3I,EAAapG,QAE1B,IAAIyK,EAAiB,MAAT9qC,EAAgB,KAAOjc,KAAKwoD,eACpC0D,EAAWlsD,KAAKomD,OAAOhf,MACvBqhB,EAASsD,IAUb,GATa,MAAThF,KACY,IAAV9qC,IAAgBA,EAAQ8qC,EAAM9qC,OACrB,MAATtR,EACFo8C,EAAQoF,EAAWpF,EAAO0B,EAAQ5uC,GACf,IAAVlP,IACTo8C,EAAQoF,EAAWpF,EAAO9qC,EAAOtR,EAAOkP,IAE1C7Z,KAAK4oD,aAAa7B,EAAO3B,EAAU9I,QAAQgM,QAAQO,SAEjDJ,EAAOrrD,SAAW,EAAG,CACvB,IAAIgvD,EAKEC,EAHF93C,EAAO,CAAC6wC,EAAU9I,QAAQpgB,OAAOyqB,YAAa8B,EAAQyD,EAAUryC,IACnEuyC,EAAWpsD,KAAKimD,SAASqG,KAAKntD,MAAMitD,EAAU,CAAChH,EAAU9I,QAAQpgB,OAAOwqB,eAAeloC,OAAOjK,IAC3FsF,IAAWurC,EAAU9I,QAAQgM,QAAQO,SAGtCwD,EAAYrsD,KAAKimD,SAASqG,KAAKntD,MAAMktD,EAAW93C,EAErD,CACA,OAAOk0C,CACT,CAEA,SAAShE,EAASxoC,EAAO7e,EAAQuH,EAAMf,EAAOiW,GAC5C,IAAI0pC,EAAU,CAAC,EAwBf,MAvB2B,kBAAhBtnC,EAAMA,OAA8C,kBAAjBA,EAAM7e,OAE5B,kBAAXA,GACTyc,EAASjW,EAAOA,EAAQe,EAAMA,EAAOvH,EAAQA,EAAS6e,EAAM7e,OAAQ6e,EAAQA,EAAMA,QAElF7e,EAAS6e,EAAM7e,OAAQ6e,EAAQA,EAAMA,OAEZ,kBAAX7e,IAChByc,EAASjW,EAAOA,EAAQe,EAAMA,EAAOvH,EAAQA,EAAS,GAGY,YAA/C,qBAATuH,EAAuB,YAAcggD,EAAQhgD,KACvD4+C,EAAU5+C,EACVkV,EAASjW,GACgB,kBAATe,IACH,MAATf,EACF2/C,EAAQ5+C,GAAQf,EAEhBiW,EAASlV,GAKN,CAACsX,EAAO7e,EAAQmmD,EADvB1pC,EAASA,GAAUurC,EAAU9I,QAAQgM,QAAQC,IAE/C,CAEA,SAAS4D,EAAWpF,EAAO9qC,EAAO7e,EAAQyc,GACxC,GAAa,MAATktC,EAAe,OAAO,KAC1B,IAAIniD,OAAQ,EACR5D,OAAM,EACV,GAAIib,aAAiBymC,EAAapG,QAAS,CACzC,IAAIiQ,EAAO,CAACxF,EAAM9qC,MAAO8qC,EAAM9qC,MAAQ8qC,EAAM3pD,QAAQmV,KAAI,SAAUk4B,GACjE,OAAOxuB,EAAMwlC,kBAAkBhX,EAAK5wB,IAAWurC,EAAU9I,QAAQgM,QAAQ+C,KAC3E,IAEImB,EAAQ5H,EAAe2H,EAAM,GAEjC3nD,EAAQ4nD,EAAM,GACdxrD,EAAMwrD,EAAM,EACd,KAAO,CACL,IAAIC,EAAQ,CAAC1F,EAAM9qC,MAAO8qC,EAAM9qC,MAAQ8qC,EAAM3pD,QAAQmV,KAAI,SAAUk4B,GAClE,OAAIA,EAAMxuB,GAASwuB,IAAQxuB,GAASpC,IAAWurC,EAAU9I,QAAQgM,QAAQ+C,KAAa5gB,EAClFrtC,GAAU,EACLqtC,EAAMrtC,EAENkD,KAAKC,IAAI0b,EAAOwuB,EAAMrtC,EAEjC,IAEIsvD,EAAQ9H,EAAe6H,EAAO,GAElC7nD,EAAQ8nD,EAAM,GACd1rD,EAAM0rD,EAAM,EACd,CACA,OAAO,IAAIpH,EAAW8F,MAAMxmD,EAAO5D,EAAM4D,EAC3C,CAxKAghD,EAAM4F,SAAW,CACfpC,OAAQ,KACR7F,QAAS,KACTxI,QAAS,CAAC,EACVuM,YAAa,GACbC,UAAU,EACVvB,mBAAoB,KACpBgG,QAAQ,EACR3F,MAAO,WAETT,EAAM1pB,OAASkpB,EAAU9I,QAAQpgB,OACjC0pB,EAAM0C,QAAUlD,EAAU9I,QAAQgM,QAElC1C,EAAMrmC,QAA2B,QAEjCqmC,EAAM8B,QAAU,CACd,MAAShF,EAAapG,QACtB,UAAaqG,EAAYrG,QACzB,cAAe+I,EAAS/I,QACxB,aAAcmJ,EAAQnJ,SAuJxBxgD,EAAQ4oD,aAAeA,EACvB5oD,EAAQ2oD,SAAWA,EACnB3oD,EAAQwgD,QAAUsJ,CAEX,EAED,SAAU3pD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIw+C,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreQ,EAASL,EAFD,EAAoB,IAM5BE,EAAcF,EAFD,EAAoB,IAIrC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAI4tC,EAAS,SAAU+P,GAGrB,SAAS/P,IAGP,OAZJ,SAAyB16C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAM48C,GAR1B,SAAoC/kC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAO48C,EAAOW,WAAa36C,OAAOyb,eAAeu+B,IAASz9C,MAAMa,KAAM6F,WAC1G,CAyCA,OAlDF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUtG,EAAQ+P,GAQlBvK,EAAaxF,EAAQ,CAAC,CACpB95C,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,EAAQuH,EAAMf,GAC5C,GAAIg5C,EAAOp0B,QAAQxoB,KAAKskD,QAAQ1F,SAAUj6C,GAAQ,GAAKg+C,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAMyQ,MAAO,CACtH,IAAInO,EAAOz+C,KAAK6sD,QAAQ5wC,EAAO7e,GAC3BwG,GACF66C,EAAK3jB,KAAKn2B,EAAMf,EAEpB,MACEy+C,EAAKzF,EAAO18C,UAAUq9C,WAAa36C,OAAOyb,eAAeu+B,EAAO18C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAO7e,EAAQuH,EAAMf,EAElI,GACC,CACDd,IAAK,WACLc,MAAO,SAAkB6b,GAEvB,GADA4iC,EAAKzF,EAAO18C,UAAUq9C,WAAa36C,OAAOyb,eAAeu+B,EAAO18C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMyf,GACrGzf,KAAKiqB,kBAAkB2yB,GAAUA,EAAOp0B,QAAQxoB,KAAKskD,QAAQ1F,SAAU5+C,KAAKiqB,OAAOq6B,QAAQ1F,UAAY,EAAG,CAC5G,IAAI30B,EAASjqB,KAAKiqB,OAAO4iC,QAAQ7sD,KAAK44C,SAAU54C,KAAK5C,UACrD4C,KAAK8sD,aAAa7iC,GAClBA,EAAO6Q,KAAK96B,KACd,CACF,IACE,CAAC,CACH8C,IAAK,UACLc,MAAO,SAAiBiU,EAAMoB,GAC5B,IAAI8zC,EAAYnQ,EAAOhU,MAAM73B,QAAQ8G,GACjCm1C,EAAapQ,EAAOhU,MAAM73B,QAAQkI,GACtC,OAAI8zC,GAAa,GAAKC,GAAc,EAC3BD,EAAYC,EACVn1C,IAASoB,EACX,EACEpB,EAAOoB,GACR,EAED,CAEX,KAGK2jC,CACT,CAjDa,CAiDX+F,EAAYrG,QAAQM,QAEtBA,EAAO4H,gBAAkB,CAAC5H,EAAQ+F,EAAYrG,QAAQG,MAAOqG,EAAOxG,SAEpEM,EAAOhU,MAAQ,CAAC,SAAU,SAC1B,YAAa,SAAU,SAAU,OAAQ,SAAU,OAAQ,QAG3D9sC,EAAQwgD,QAAUM,CAEX,EAED,SAAU3gD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAIgCoL,EAJ5Bi+C,EAAa,EAAoB,GAYjCC,EAAW,SAAUC,GAGvB,SAASD,IAGP,OAZJ,SAAyBhrD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMktD,GAR1B,SAAoCr1C,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOktD,EAAS3P,WAAa36C,OAAOyb,eAAe6uC,IAAW/tD,MAAMa,KAAM6F,WAC9G,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUgK,EAAUC,GAQbD,CACT,CAVe,GARiBl+C,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAkBzEstC,QAAQO,MAEtB/gD,EAAQwgD,QAAU4Q,CAEX,EAED,SAAUjxD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIw+C,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIre8K,EAAiB3K,EAFD,EAAoB,KAQxC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAI22C,GAAQ,EAVGlD,EAFD,EAAoB,KAYTnG,SAAS,gBAErB,CAAC,kBAAmB,YAAa,UAAW,SAElD1xC,SAAQ,SAAUyiD,GACvBpoD,SAASd,iBAAiBkpD,GAAW,WACnC,IAAK,IAAIzkD,EAAO/C,UAAUzI,OAAQmX,EAAOnO,MAAMwC,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC3EyL,EAAKzL,GAAQjD,UAAUiD,GAGzB,GAAG3I,MAAM6B,KAAKiD,SAASO,iBAAiB,kBAAkBoF,SAAQ,SAAUwU,GAGxE,IAAIkuC,EADFluC,EAAK0mC,SAAW1mC,EAAK0mC,QAAQG,UAG9BqH,EAAwBluC,EAAK0mC,QAAQG,SAASsH,UAAUpuD,MAAMmuD,EAAuB/4C,EAE1F,GACF,GACF,IAEA,IAAIi5C,EAAU,SAAUC,GAGtB,SAASD,KA9BX,SAAyBtrD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CA+BpJ2gD,CAAgB/iD,KAAMwtD,GAEtB,IAAIzpD,EA/BR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CA+B/NghD,CAA2BhjD,MAAOwtD,EAAQjQ,WAAa36C,OAAOyb,eAAemvC,IAAUxrD,KAAKhC,OAIxG,OAFA+D,EAAM2pD,UAAY,CAAC,EACnB3pD,EAAMiX,GAAG,QAAS2qC,EAAMp9C,OACjBxE,CACT,CAkCA,OApEF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAwB3eF,CAAUsK,EAASC,GAYnBrL,EAAaoL,EAAS,CAAC,CACrB1qD,IAAK,OACLc,MAAO,WACL+hD,EAAMgI,IAAIxuD,MAAMwmD,EAAO9/C,WACvBw8C,EAAKmL,EAAQttD,UAAUq9C,WAAa36C,OAAOyb,eAAemvC,EAAQttD,WAAY,OAAQF,MAAMb,MAAMa,KAAM6F,UAC1G,GACC,CACD/C,IAAK,YACLc,MAAO,SAAmBQ,GACxB,IAAK,IAAIwpD,EAAQ/nD,UAAUzI,OAAQmX,EAAOnO,MAAMwnD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGt5C,EAAKs5C,EAAQ,GAAKhoD,UAAUgoD,IAG7B7tD,KAAK0tD,UAAUtpD,EAAMuB,OAAS,IAAIiF,SAAQ,SAAUkjD,GACnD,IAAI1uC,EAAO0uC,EAAK1uC,KACZ7P,EAAUu+C,EAAKv+C,SAEfnL,EAAMxD,SAAWwe,GAAQA,EAAKmD,SAASne,EAAMxD,UAC/C2O,EAAQpQ,WAAM/C,EAAW,CAACgI,GAAOoa,OAAOjK,GAE5C,GACF,GACC,CACDzR,IAAK,YACLc,MAAO,SAAmBypD,EAAWjuC,EAAM7P,GACpCvP,KAAK0tD,UAAUL,KAClBrtD,KAAK0tD,UAAUL,GAAa,IAE9BrtD,KAAK0tD,UAAUL,GAAWxtD,KAAK,CAAEuf,KAAMA,EAAM7P,QAASA,GACxD,KAGKi+C,CACT,CA9Cc,CA8CZJ,EAAe9Q,SAEjBkR,EAAQtxB,OAAS,CACfwqB,cAAe,gBACfqH,qBAAsB,uBACtBC,gBAAiB,kBACjBnH,cAAe,gBACfoH,iBAAkB,mBAClBtH,YAAa,eAEf6G,EAAQlF,QAAU,CAChBC,IAAK,MACLM,OAAQ,SACRwC,KAAM,QAGRvvD,EAAQwgD,QAAUkR,CAEX,EAED,SAAUvxD,EAAQH,EAASqhD,GAEjC,aAGAv6C,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAKT,IAAIsqD,EAAS,SAASA,EAAOC,GAC3B,IAAIj+C,EAAUrK,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAHrF,SAAyB3D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAKtJ2gD,CAAgB/iD,KAAMkuD,GAEtBluD,KAAKmuD,MAAQA,EACbnuD,KAAKkQ,QAAUA,CACjB,EAEAg+C,EAAO1C,SAAW,CAAC,EAEnB1vD,EAAQwgD,QAAU4R,CAEX,EAED,SAAUjyD,EAAQH,EAASqhD,GAEjC,aAGAv6C,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET,IAAIwqD,EAAS,CAAC,QAAS,OAAQ,MAAO,QAClC3G,EAAQ,OAEZ,SAAS9B,EAAM3xC,GACb,GAAIo6C,EAAOr9C,QAAQiD,IAAWo6C,EAAOr9C,QAAQ02C,GAAQ,CAGnD,IAFA,IAAI4G,EAEKzlD,EAAO/C,UAAUzI,OAAQmX,EAAOnO,MAAMwC,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC9FyL,EAAKzL,EAAO,GAAKjD,UAAUiD,IAG5BulD,EAAWx5B,SAAS7gB,GAAQ7U,MAAMkvD,EAAU95C,EAC/C,CACF,CAEA,SAASmN,EAAU4sC,GACjB,OAAOF,EAAOxO,QAAO,SAAU2O,EAAQv6C,GAErC,OADAu6C,EAAOv6C,GAAU2xC,EAAM7Y,KAAKjY,QAAS7gB,EAAQs6C,GACtCC,CACT,GAAG,CAAC,EACN,CAEA5I,EAAM8B,MAAQ/lC,EAAU+lC,MAAQ,SAAU+G,GACxC/G,EAAQ+G,CACV,EAEA1yD,EAAQwgD,QAAU56B,CAEX,EAED,SAAUzlB,EAAQH,EAAS,GAEjC,IAAI2yD,EAASroD,MAAMlG,UAAUC,MACzBuuD,EAAa,EAAoB,IACjCC,EAAc,EAAoB,IAElCC,EAAY3yD,EAAOH,QAAU,SAAU+yD,EAAQC,EAAUriB,GAG3D,OAFKA,IAAMA,EAAO,CAAC,GAEfoiB,IAAWC,IAGJD,aAAkBtwB,MAAQuwB,aAAoBvwB,KAChDswB,EAAOE,YAAcD,EAASC,WAI3BF,IAAWC,GAA6B,iBAAVD,GAAyC,iBAAZC,EAC9DriB,EAAKuf,OAAS6C,IAAWC,EAAWD,GAAUC,EA0BzD,SAAkBryD,EAAGC,EAAG+vC,GACtB,IAAI1vC,EAAG+F,EACP,GAAIksD,EAAkBvyD,IAAMuyD,EAAkBtyD,GAC5C,OAAO,EAET,GAAID,EAAEyD,YAAcxD,EAAEwD,UAAW,OAAO,EAGxC,GAAIyuD,EAAYlyD,GACd,QAAKkyD,EAAYjyD,KAGjBD,EAAIgyD,EAAOzsD,KAAKvF,GAChBC,EAAI+xD,EAAOzsD,KAAKtF,GACTkyD,EAAUnyD,EAAGC,EAAG+vC,IAEzB,GAAIwiB,EAASxyD,GAAI,CACf,IAAKwyD,EAASvyD,GACZ,OAAO,EAET,GAAID,EAAEW,SAAWV,EAAEU,OAAQ,OAAO,EAClC,IAAKL,EAAI,EAAGA,EAAIN,EAAEW,OAAQL,IACxB,GAAIN,EAAEM,KAAOL,EAAEK,GAAI,OAAO,EAE5B,OAAO,CACT,CACA,IACE,IAAImyD,EAAKR,EAAWjyD,GAChB0yD,EAAKT,EAAWhyD,EACtB,CAAE,MAAOyS,GACP,OAAO,CACT,CAGA,GAAI+/C,EAAG9xD,QAAU+xD,EAAG/xD,OAClB,OAAO,EAKT,IAHA8xD,EAAGz0C,OACH00C,EAAG10C,OAEE1d,EAAImyD,EAAG9xD,OAAS,EAAGL,GAAK,EAAGA,IAC9B,GAAImyD,EAAGnyD,IAAMoyD,EAAGpyD,GACd,OAAO,EAIX,IAAKA,EAAImyD,EAAG9xD,OAAS,EAAGL,GAAK,EAAGA,IAE9B,GADA+F,EAAMosD,EAAGnyD,IACJ6xD,EAAUnyD,EAAEqG,GAAMpG,EAAEoG,GAAM2pC,GAAO,OAAO,EAE/C,cAAchwC,WAAaC,CAC7B,CApEW0yD,CAASP,EAAQC,EAAUriB,GAEtC,EAEA,SAASuiB,EAAkBprD,GACzB,OAAiB,OAAVA,QAA4BxH,IAAVwH,CAC3B,CAEA,SAASqrD,EAAU1yD,GACjB,SAAKA,GAAkB,kBAANA,GAAsC,kBAAbA,EAAEa,SACtB,oBAAXb,EAAEkkB,MAA0C,oBAAZlkB,EAAE4D,SAGzC5D,EAAEa,OAAS,GAAqB,kBAATb,EAAE,GAE/B,CAwDO,EAED,SAAUN,EAAQH,EAAS,GAEjC,aAEA8G,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIq4C,EAAW,EAAoB,GAC/Ba,EAA4B,WAC5B,SAASA,EAAW+B,EAAUC,EAAS5uC,QACnB,IAAZA,IAAsBA,EAAU,CAAC,GACrClQ,KAAK6+C,SAAWA,EAChB7+C,KAAK8+C,QAAUA,EACf,IAAIuQ,EAAepT,EAASE,MAAMkC,KAAOpC,EAASE,MAAMmT,UACnC,MAAjBp/C,EAAQ0W,MAER5mB,KAAK4mB,MAAS1W,EAAQ0W,MAAQq1B,EAASE,MAAM6B,MAASqR,EAGtDrvD,KAAK4mB,MAAQq1B,EAASE,MAAMmT,UAEP,MAArBp/C,EAAQi2C,YACRnmD,KAAKmmD,UAAYj2C,EAAQi2C,UACjC,CAmCA,OAlCArJ,EAAW71B,KAAO,SAAU7H,GACxB,MAAO,GAAG7M,IAAIvQ,KAAKod,EAAK3Y,YAAY,SAAU6O,GAC1C,OAAOA,EAAK3Q,IAChB,GACJ,EACAm4C,EAAW58C,UAAUyX,IAAM,SAAUyH,EAAMxb,GACvC,QAAK5D,KAAKuvD,OAAOnwC,EAAMxb,KAEvBwb,EAAK5T,aAAaxL,KAAK8+C,QAASl7C,IACzB,EACX,EACAk5C,EAAW58C,UAAUqvD,OAAS,SAAUnwC,EAAMxb,GAE1C,OAAa,MADDq4C,EAASniC,MAAMsF,EAAM68B,EAASE,MAAMyQ,MAAQ5sD,KAAK4mB,MAAQq1B,EAASE,MAAMkC,SAG9D,MAAlBr+C,KAAKmmD,YAEY,kBAAVviD,EACA5D,KAAKmmD,UAAUp1C,QAAQnN,EAAM6N,QAAQ,QAAS,MAAQ,EAGtDzR,KAAKmmD,UAAUp1C,QAAQnN,IAAU,GAEhD,EACAk5C,EAAW58C,UAAU6X,OAAS,SAAUqH,GACpCA,EAAK1T,gBAAgB1L,KAAK8+C,QAC9B,EACAhC,EAAW58C,UAAU0D,MAAQ,SAAUwb,GACnC,IAAIxb,EAAQwb,EAAKja,aAAanF,KAAK8+C,SACnC,OAAI9+C,KAAKuvD,OAAOnwC,EAAMxb,IAAUA,EACrBA,EAEJ,EACX,EACOk5C,CACX,CAnD+B,GAoD/BhhD,EAAQwgD,QAAUQ,CAGX,EAED,SAAU7gD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQ0zD,UAAOpzD,EAEjC,IAAIwoD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreI,EAAeD,EAFD,EAAoB,IAMlCE,EAAcF,EAFD,EAAoB,IAMjCgN,EAAUhN,EAFD,EAAoB,IAM7BI,EAAWJ,EAFD,EAAoB,IAM9BK,EAASL,EAFD,EAAoB,IAIhC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAIoM,EAAO,SAAUE,GAGnB,SAASF,IAGP,OAFAzM,EAAgB/iD,KAAMwvD,GAEfxM,EAA2BhjD,MAAOwvD,EAAKjS,WAAa36C,OAAOyb,eAAemxC,IAAOrwD,MAAMa,KAAM6F,WACtG,CAEA,OARAq9C,EAAUsM,EAAME,GAQTF,CACT,CAVW,CAUT3M,EAASvG,SAEXkT,EAAK5Q,SAAW,OAChB4Q,EAAKpkD,QAAU,OAEf,IAAIukD,EAAY,SAAUC,GAGxB,SAASD,IAGP,OAFA5M,EAAgB/iD,KAAM2vD,GAEf3M,EAA2BhjD,MAAO2vD,EAAUpS,WAAa36C,OAAOyb,eAAesxC,IAAYxwD,MAAMa,KAAM6F,WAChH,CA4HA,OAlIAq9C,EAAUyM,EAAWC,GAQrBxN,EAAauN,EAAW,CAAC,CACvB7sD,IAAK,QACLc,MAAO,WACL,IAAIokD,EAAShoD,KAET4P,EAAO5P,KAAKsjD,QAAQhiC,YAKxB,OAJI1R,EAAKg0C,SAAS,QAEhBh0C,EAAOA,EAAKzP,MAAM,GAAI,IAEjByP,EAAKqI,MAAM,MAAM2nC,QAAO,SAAUxY,EAAOyoB,GAC9C,OAAOzoB,EAAM1E,OAAOmtB,GAAMntB,OAAO,KAAMslB,EAAOzE,UAChD,GAAG,IAAIb,EAAapG,QACtB,GACC,CACDx5C,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GAC3B,GAAIe,IAAS3E,KAAKskD,QAAQ1F,WAAYh7C,EAAtC,CAEA,IAAIksD,EAAc9vD,KAAK+vD,WAAWjN,EAAOxG,QAASt8C,KAAK5C,SAAW,GAE9DwS,EADeg1C,EAAekL,EAAa,GACvB,GAEZ,MAARlgD,GACFA,EAAKogD,SAASpgD,EAAKxS,SAAW,EAAG,GAEnCilD,EAAKsN,EAAUzvD,UAAUq9C,WAAa36C,OAAOyb,eAAesxC,EAAUzvD,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,EAThE,CAUrD,GACC,CACDd,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,EAAQuH,EAAMf,GAC5C,GAAe,IAAXxG,GACoE,MAApEulD,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAM8B,SAAkBt5C,IAAS3E,KAAKskD,QAAQ1F,UAAYh7C,IAAU5D,KAAKskD,QAAQf,QAAQvjD,KAAKsjD,UAAtJ,CAGA,IAAI2M,EAAcjwD,KAAKkwD,aAAaj0C,GACpC,KAAIg0C,EAAc,GAAKA,GAAeh0C,EAAQ7e,GAA9C,CACA,IAAI+yD,EAAcnwD,KAAKkwD,aAAaj0C,GAAO,GAAQ,EAC/Cm0C,EAAgBH,EAAcE,EAAc,EAC5C1R,EAAOz+C,KAAK6sD,QAAQsD,EAAaC,GACjC30C,EAAOgjC,EAAKhjC,KAChBgjC,EAAKiF,OAAO/+C,EAAMf,GACd6X,aAAgBk0C,GAClBl0C,EAAK40C,SAAS,EAAGp0C,EAAQk0C,EAAc/yD,EAASgzD,EAAezrD,EAAMf,EAPX,CAF5D,CAWF,GACC,CACDd,IAAK,WACLc,MAAO,SAAkBqY,EAAOrY,EAAO+/C,GACrC,GAAW,MAAPA,EAAJ,CAEA,IAAI2M,EAAetwD,KAAK+vD,WAAWjN,EAAOxG,QAASrgC,GAC/Cs0C,EAAe3L,EAAe0L,EAAc,GAC5C1gD,EAAO2gD,EAAa,GACpB3X,EAAS2X,EAAa,GAE1B3gD,EAAKk0C,SAASlL,EAAQh1C,EAPC,CAQzB,GACC,CACDd,IAAK,SACLc,MAAO,WACL,IAAIxG,EAAS4C,KAAKsjD,QAAQhiC,YAAYlkB,OACtC,OAAK4C,KAAKsjD,QAAQhiC,YAAYsiC,SAAS,MAGhCxmD,EAFEA,EAAS,CAGpB,GACC,CACD0F,IAAK,eACLc,MAAO,SAAsB4sD,GAG3B,GAFc3qD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAM3E,OAAO7F,KAAKsjD,QAAQhiC,YAAYnhB,MAAM,EAAGqwD,GAAaC,YAAY,MAHlE,IAAI7X,EAAS54C,KAAKsjD,QAAQhiC,YAAYnhB,MAAMqwD,GAAaz/C,QAAQ,MACjE,OAAO6nC,GAAU,EAAI4X,EAAc5X,GAAU,CAIjD,GACC,CACD91C,IAAK,WACLc,MAAO,SAAkB6b,GAClBzf,KAAKsjD,QAAQhiC,YAAYsiC,SAAS,OACrC5jD,KAAKkM,YAAYy2C,EAAYrG,QAAQx4C,OAAO,OAAQ,OAEtDu+C,EAAKsN,EAAUzvD,UAAUq9C,WAAa36C,OAAOyb,eAAesxC,EAAUzvD,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMyf,GAC/G,IAAIhE,EAAOzb,KAAKyb,KACJ,MAARA,GAAgBA,EAAKD,OAASxb,MAAQyb,EAAK6oC,QAAQ1F,WAAa5+C,KAAKskD,QAAQ1F,UAAY5+C,KAAKskD,QAAQf,QAAQvjD,KAAKsjD,WAAa7nC,EAAK6oC,QAAQf,QAAQ9nC,EAAK6nC,WAC5J7nC,EAAKi1C,SAASjxC,GACdhE,EAAKqxC,aAAa9sD,MAClByb,EAAK1D,SAET,GACC,CACDjV,IAAK,UACLc,MAAO,SAAiBhD,GACtByhD,EAAKsN,EAAUzvD,UAAUq9C,WAAa36C,OAAOyb,eAAesxC,EAAUzvD,WAAY,UAAWF,MAAMgC,KAAKhC,KAAMY,GAC9G,GAAGT,MAAM6B,KAAKhC,KAAKsjD,QAAQ99C,iBAAiB,MAAMoF,SAAQ,SAAUwU,GAClE,IAAIq/B,EAAOkE,EAAYrG,QAAQr2B,KAAK7G,GACxB,MAARq/B,EACFr/B,EAAK9V,WAAWC,YAAY6V,GACnBq/B,aAAgBkE,EAAYrG,QAAQG,MAC7CgC,EAAK1mC,SAEL0mC,EAAK3H,QAET,GACF,IACE,CAAC,CACHh0C,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAI0/C,EAAUjB,EAAKsN,EAAUpS,WAAa36C,OAAOyb,eAAesxC,GAAY,SAAU3vD,MAAMgC,KAAKhC,KAAM4D,GAEvG,OADA0/C,EAAQ93C,aAAa,cAAc,GAC5B83C,CACT,GACC,CACDxgD,IAAK,UACLc,MAAO,WACL,OAAO,CACT,KAGK+rD,CACT,CApIgB,CAoIdF,EAAQnT,SAEVqT,EAAU/Q,SAAW,aACrB+Q,EAAUvkD,QAAU,MACpBukD,EAAUgB,IAAM,KAEhB70D,EAAQ0zD,KAAOA,EACf1zD,EAAQwgD,QAAUqT,CAEX,EAED,SAAU1zD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAI+gD,EAA4B,oBAAXziC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUnT,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXkT,QAAyBlT,EAAI0I,cAAgBwK,QAAUlT,IAAQkT,OAAOhiB,UAAY,gBAAkB8O,CAAK,EAEvQ41C,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfugD,EAAeD,EAFD,EAAoB,IAMlCmO,EAAOnO,EAFD,EAAoB,KAM1BE,EAAcF,EAFD,EAAoB,IAMjCoO,EAASpO,EAFD,EAAoB,KAM5BqO,EAAWrO,EAFD,EAAoB,KAI9BsO,EAAS,EAAoB,GAE7BtB,EAAUhN,EAAuBsO,GAIjCnO,EAAUH,EAFD,EAAoB,KAM7BuO,EAAUvO,EAFD,EAAoB,KAM7BwO,EAAcxO,EAFD,EAAoB,KAMjCD,EAAWC,EAFD,EAAoB,IAIlC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAM9F,IAAIkiD,EAAQ,WAERC,EAAS,WACX,SAASA,EAAOjL,IALlB,SAAyBhkD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAMpJ2gD,CAAgB/iD,KAAMmxD,GAEtBnxD,KAAKkmD,OAASA,EACdlmD,KAAKonC,MAAQpnC,KAAKoxD,UACpB,CA4PA,OA1PAhP,EAAa+O,EAAQ,CAAC,CACpBruD,IAAK,aACLc,MAAO,SAAoBwjC,GACzB,IAAIrjC,EAAQ/D,KAERqxD,GAAqB,EACzBrxD,KAAKkmD,OAAOgB,SACZ,IAAIoK,EAAetxD,KAAKkmD,OAAO9oD,SAoD/B,OAnDA4C,KAAKkmD,OAAOqL,cACZnqB,EAoQN,SAAwBA,GACtB,OAAOA,EAAMwY,QAAO,SAAUxY,EAAO4X,GACnC,GAAkB,IAAdA,EAAGtc,OAAc,CACnB,IAAIj8B,GAAa,EAAIuqD,EAAQ1U,SAAS0C,EAAGv4C,YAEzC,cADOA,EAAkB,MAClB2gC,EAAM1E,OAAO,CAAEzW,MAAO+yB,EAAGv4C,WAAWwlB,OAASxlB,EACtD,CAUA,GATqB,MAAjBu4C,EAAGv4C,aAA8C,IAAvBu4C,EAAGv4C,WAAW4rB,OAA0C,IAAzB2sB,EAAGv4C,WAAW+qD,UACzExS,GAAK,EAAIgS,EAAQ1U,SAAS0C,IACnBv4C,WAAW4rB,KAChB2sB,EAAGv4C,WAAW4rB,KAAO,WAErB2sB,EAAGv4C,WAAW4rB,KAAO,gBACd2sB,EAAGv4C,WAAW+qD,SAGA,kBAAdxS,EAAGtc,OAAqB,CACjC,IAAI9yB,EAAOovC,EAAGtc,OAAOjxB,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAC3D,OAAO21B,EAAM1E,OAAO9yB,EAAMovC,EAAGv4C,WAC/B,CACA,OAAO2gC,EAAMvnC,KAAKm/C,EACpB,GAAG,IAAI0D,EAAapG,QACtB,CA1RcmV,CAAerqB,IACjBwY,QAAO,SAAU3jC,EAAO+iC,GAC5B,IAAI5hD,EAAS4hD,EAAGK,QAAUL,EAAG7yC,QAAU6yC,EAAGtc,OAAOtlC,QAAU,EACvDqJ,EAAau4C,EAAGv4C,YAAc,CAAC,EACnC,GAAiB,MAAbu4C,EAAGtc,OAAgB,CACrB,GAAyB,kBAAdsc,EAAGtc,OAAqB,CACjC,IAAI9yB,EAAOovC,EAAGtc,OACV9yB,EAAKg0C,SAAS,OAASyN,IACzBA,GAAqB,EACrBzhD,EAAOA,EAAKzP,MAAM,GAAI,IAEpB8b,GAASq1C,IAAiB1hD,EAAKg0C,SAAS,QAC1CyN,GAAqB,GAEvBttD,EAAMmiD,OAAOpC,SAAS7nC,EAAOrM,GAE7B,IAAI8hD,EAAe3tD,EAAMmiD,OAAO5E,KAAKrlC,GACjC01C,EAAgB/M,EAAe8M,EAAc,GAC7CpQ,EAAOqQ,EAAc,GACrB/Y,EAAS+Y,EAAc,GAEvBpO,GAAU,EAAIf,EAASlG,SAAS,CAAC,GAAG,EAAIyU,EAAO5O,eAAeb,IAClE,GAAIA,aAAgBmO,EAAQnT,QAAS,CACnC,IAAIsV,EAAmBtQ,EAAKyO,WAAWpN,EAAYrG,QAAQE,KAAM5D,GAE7DsL,EADoBU,EAAegN,EAAkB,GAC5B,GAE7BrO,GAAU,EAAIf,EAASlG,SAASiH,GAAS,EAAIwN,EAAO5O,eAAe+B,GACrE,CACAz9C,EAAamqD,EAAKtU,QAAQ71C,WAAW0jB,KAAKo5B,EAAS98C,IAAe,CAAC,CACrE,MAAO,GAA2B,WAAvBk+C,EAAQ3F,EAAGtc,QAAsB,CAC1C,IAAI5/B,EAAMF,OAAOqkB,KAAK+3B,EAAGtc,QAAQ,GACjC,GAAW,MAAP5/B,EAAa,OAAOmZ,EACxBlY,EAAMmiD,OAAOpC,SAAS7nC,EAAOnZ,EAAKk8C,EAAGtc,OAAO5/B,GAC9C,CACAwuD,GAAgBl0D,CAClB,CAIA,OAHAwF,OAAOqkB,KAAKxgB,GAAYmE,SAAQ,SAAUjG,GACxCZ,EAAMmiD,OAAOmK,SAASp0C,EAAO7e,EAAQuH,EAAM8B,EAAW9B,GACxD,IACOsX,EAAQ7e,CACjB,GAAG,GACHgqC,EAAMwY,QAAO,SAAU3jC,EAAO+iC,GAC5B,MAAyB,kBAAdA,EAAG7yC,QACZpI,EAAMmiD,OAAO8J,SAAS/zC,EAAO+iC,EAAG7yC,QACzB8P,GAEFA,GAAS+iC,EAAGK,QAAUL,EAAGtc,OAAOtlC,QAAU,EACnD,GAAG,GACH4C,KAAKkmD,OAAO2L,WACL7xD,KAAKknD,OAAO9f,EACrB,GACC,CACDtkC,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,GAEhC,OADA4C,KAAKkmD,OAAO8J,SAAS/zC,EAAO7e,GACrB4C,KAAKknD,QAAO,IAAIxE,EAAapG,SAAU+C,OAAOpjC,GAAO9P,OAAO/O,GACrE,GACC,CACD0F,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,GAChC,IAAI2M,EAAS/J,KAETujD,EAAU19C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAoBnF,OAlBA7F,KAAKkmD,OAAOgB,SACZtkD,OAAOqkB,KAAKs8B,GAAS34C,SAAQ,SAAU84C,GACrC,GAA+B,MAA3B35C,EAAOm8C,OAAOC,WAAsBp8C,EAAOm8C,OAAOC,UAAUzC,GAAhE,CACA,IAAIS,EAAQp6C,EAAOm8C,OAAO/B,MAAMloC,EAAO3b,KAAKC,IAAInD,EAAQ,IACpD00D,EAAkB10D,EACtB+mD,EAAMv5C,SAAQ,SAAU02C,GACtB,IAAIyQ,EAAazQ,EAAKlkD,SACtB,GAAMkkD,aAAgBuP,EAAOvU,QAEtB,CACL,IAAI0V,EAAY/1C,EAAQqlC,EAAK1I,OAAO7uC,EAAOm8C,QACvC+L,EAAa3Q,EAAK4O,aAAa8B,EAAYF,GAAmBE,EAAY,EAC9E1Q,EAAK+O,SAAS2B,EAAWC,EAAYvO,EAAQH,EAAQG,GACvD,MALEpC,EAAKoC,OAAOA,EAAQH,EAAQG,IAM9BoO,GAAmBC,CACrB,GAb+E,CAcjF,IACA/xD,KAAKkmD,OAAOwK,WACL1wD,KAAKknD,QAAO,IAAIxE,EAAapG,SAAU+C,OAAOpjC,GAAOojC,OAAOjiD,GAAQ,EAAI4zD,EAAQ1U,SAASiH,IAClG,GACC,CACDzgD,IAAK,aACLc,MAAO,SAAoBqY,EAAO7e,GAChC,IAAI4qD,EAAShoD,KAETujD,EAAU19C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAKnF,OAHAjD,OAAOqkB,KAAKs8B,GAAS34C,SAAQ,SAAU84C,GACrCsE,EAAO9B,OAAOmK,SAASp0C,EAAO7e,EAAQsmD,EAAQH,EAAQG,GACxD,IACO1jD,KAAKknD,QAAO,IAAIxE,EAAapG,SAAU+C,OAAOpjC,GAAOojC,OAAOjiD,GAAQ,EAAI4zD,EAAQ1U,SAASiH,IAClG,GACC,CACDzgD,IAAK,cACLc,MAAO,SAAqBqY,EAAO7e,GACjC,OAAO4C,KAAKonC,MAAMjnC,MAAM8b,EAAOA,EAAQ7e,EACzC,GACC,CACD0F,IAAK,WACLc,MAAO,WACL,OAAO5D,KAAKkmD,OAAO/B,QAAQvE,QAAO,SAAUxY,EAAOka,GACjD,OAAOla,EAAM5oB,OAAO8iC,EAAKla,QAC3B,GAAG,IAAIsb,EAAapG,QACtB,GACC,CACDx5C,IAAK,YACLc,MAAO,SAAmBqY,GACxB,IAAI7e,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAE7Es+C,EAAQ,GACR+N,EAAS,GACE,IAAX90D,EACF4C,KAAKkmD,OAAOyB,KAAK1rC,GAAOrR,SAAQ,SAAU+8C,GACxC,IACIlJ,EADQmG,EAAe+C,EAAM,GAChB,GAEblJ,aAAgBgR,EAAQnT,QAC1B6H,EAAMtkD,KAAK4+C,GACFA,aAAgBkE,EAAYrG,QAAQE,MAC7C0V,EAAOryD,KAAK4+C,EAEhB,KAEA0F,EAAQnkD,KAAKkmD,OAAO/B,MAAMloC,EAAO7e,GACjC80D,EAASlyD,KAAKkmD,OAAOjC,YAAYtB,EAAYrG,QAAQE,KAAMvgC,EAAO7e,IAEpE,IAAI+0D,EAAa,CAAChO,EAAO+N,GAAQ3/C,KAAI,SAAU6/C,GAC7C,GAAqB,IAAjBA,EAAMh1D,OAAc,MAAO,CAAC,EAEhC,IADA,IAAImmD,GAAU,EAAIwN,EAAO5O,eAAeiQ,EAAMznD,SACvC/H,OAAOqkB,KAAKs8B,GAASnmD,OAAS,GAAG,CACtC,IAAIqhD,EAAO2T,EAAMznD,QACjB,GAAY,MAAR8zC,EAAc,OAAO8E,EACzBA,EAAU8O,GAAe,EAAItB,EAAO5O,eAAe1D,GAAO8E,EAC5D,CACA,OAAOA,CACT,IACA,OAAOf,EAASlG,QAAQn9C,MAAMqjD,EAASlG,QAAS6V,EAClD,GACC,CACDrvD,IAAK,UACLc,MAAO,SAAiBqY,EAAO7e,GAC7B,OAAO4C,KAAK2pD,YAAY1tC,EAAO7e,GAAQiN,QAAO,SAAU20C,GACtD,MAA4B,kBAAdA,EAAGtc,MACnB,IAAGnwB,KAAI,SAAUysC,GACf,OAAOA,EAAGtc,MACZ,IAAGrkC,KAAK,GACV,GACC,CACDyE,IAAK,cACLc,MAAO,SAAqBqY,EAAOiuC,EAAOtmD,GAExC,OADA5D,KAAKkmD,OAAOpC,SAAS7nC,EAAOiuC,EAAOtmD,GAC5B5D,KAAKknD,QAAO,IAAIxE,EAAapG,SAAU+C,OAAOpjC,GAAOymB,OAnLlE,SAAyB1zB,EAAKlM,EAAKc,GAAiK,OAApJd,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,CAAK,CAmLvI02C,CAAgB,CAAC,EAAGwE,EAAOtmD,IAChG,GACC,CACDd,IAAK,aACLc,MAAO,SAAoBqY,EAAOrM,GAChC,IAAIy4C,EAASroD,KAETujD,EAAU19C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAOnF,OALA+J,EAAOA,EAAK6B,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAClDzR,KAAKkmD,OAAOpC,SAAS7nC,EAAOrM,GAC5BhN,OAAOqkB,KAAKs8B,GAAS34C,SAAQ,SAAU84C,GACrC2E,EAAOnC,OAAOmK,SAASp0C,EAAOrM,EAAKxS,OAAQsmD,EAAQH,EAAQG,GAC7D,IACO1jD,KAAKknD,QAAO,IAAIxE,EAAapG,SAAU+C,OAAOpjC,GAAOymB,OAAO9yB,GAAM,EAAIohD,EAAQ1U,SAASiH,IAChG,GACC,CACDzgD,IAAK,UACLc,MAAO,WACL,GAAmC,GAA/B5D,KAAKkmD,OAAO91B,SAAShzB,OAAa,OAAO,EAC7C,GAAI4C,KAAKkmD,OAAO91B,SAAShzB,OAAS,EAAG,OAAO,EAC5C,IAAIymD,EAAQ7jD,KAAKkmD,OAAO91B,SAASlrB,KACjC,OAAI2+C,EAAMS,QAAQ1F,WAAa6Q,EAAQnT,QAAQsC,YAC3CiF,EAAMzzB,SAAShzB,OAAS,IACrBymD,EAAMzzB,SAASlrB,gBAAgB09C,EAAQtG,OAChD,GACC,CACDx5C,IAAK,eACLc,MAAO,SAAsBqY,EAAO7e,GAClC,IAAIwS,EAAO5P,KAAKovB,QAAQnT,EAAO7e,GAE3Bk1D,EAAgBtyD,KAAKkmD,OAAO5E,KAAKrlC,EAAQ7e,GACzCm1D,EAAgB3N,EAAe0N,EAAe,GAC9ChR,EAAOiR,EAAc,GACrB3Z,EAAS2Z,EAAc,GAEvBC,EAAe,EACfxoB,EAAS,IAAI0Y,EAAapG,QAClB,MAARgF,IAIAkR,EAHIlR,aAAgBuP,EAAOvU,QAGZgF,EAAK4O,aAAatX,GAAUA,EAAS,EAFrC0I,EAAKlkD,SAAWw7C,EAIjC5O,EAASsX,EAAKla,QAAQjnC,MAAMy4C,EAAQA,EAAS4Z,EAAe,GAAG9vB,OAAO,OAExE,IACIvY,EADWnqB,KAAK2pD,YAAY1tC,EAAO7e,EAASo1D,GAC5BroC,MAAK,IAAIu4B,EAAapG,SAAU5Z,OAAO9yB,GAAM4O,OAAOwrB,IACpE5C,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAOpjC,GAAOuC,OAAO2L,GAC5D,OAAOnqB,KAAKirD,WAAW7jB,EACzB,GACC,CACDtkC,IAAK,SACLc,MAAO,SAAgB6kD,GACrB,IAAI3B,EAAYjhD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,GAChF4sD,EAAc5sD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,QAAKzJ,EAElF8vD,EAAWlsD,KAAKonC,MACpB,GAAyB,IAArB0f,EAAU1pD,QAAsC,kBAAtB0pD,EAAU,GAAGnhD,MAA4BmhD,EAAU,GAAGlmD,OAAOqO,KAAKpR,MAAMqzD,IAAUvO,EAAYrG,QAAQr2B,KAAK6gC,EAAU,GAAGlmD,QAAS,CAE7J,IAAI8xD,EAAW/P,EAAYrG,QAAQr2B,KAAK6gC,EAAU,GAAGlmD,QACjD2iD,GAAU,EAAIwN,EAAO5O,eAAeuQ,GACpCz2C,EAAQy2C,EAAS9Z,OAAO54C,KAAKkmD,QAC7ByM,EAAW7L,EAAU,GAAG6L,SAASlhD,QAAQq/C,EAASxU,QAAQsW,SAAU,IACpEC,GAAU,IAAInQ,EAAapG,SAAU5Z,OAAOiwB,GAC5CG,GAAU,IAAIpQ,EAAapG,SAAU5Z,OAAOgwB,EAAS9uD,SAEzD6kD,GADgB,IAAI/F,EAAapG,SAAU+C,OAAOpjC,GAAOuC,OAAOq0C,EAAQ1oC,KAAK2oC,EAASL,IACnE7S,QAAO,SAAUxY,EAAO4X,GACzC,OAAIA,EAAGtc,OACE0E,EAAM1E,OAAOsc,EAAGtc,OAAQ6gB,GAExBnc,EAAMvnC,KAAKm/C,EAEtB,GAAG,IAAI0D,EAAapG,SACpBt8C,KAAKonC,MAAQ8kB,EAAShM,QAAQuI,EAChC,MACEzoD,KAAKonC,MAAQpnC,KAAKoxD,WACb3I,IAAW,EAAIwI,EAAY3U,SAAS4P,EAAShM,QAAQuI,GAASzoD,KAAKonC,SACtEqhB,EAASyD,EAAS/hC,KAAKnqB,KAAKonC,MAAOqrB,IAGvC,OAAOhK,CACT,KAGK0I,CACT,CAnQa,GAqQb,SAASkB,EAAe9O,EAASwP,GAC/B,OAAOnwD,OAAOqkB,KAAK8rC,GAAUnT,QAAO,SAAUoT,EAAQruD,GACpD,OAAqB,MAAjB4+C,EAAQ5+C,KACRouD,EAASpuD,KAAU4+C,EAAQ5+C,GAC7BquD,EAAOruD,GAAQouD,EAASpuD,GACfyB,MAAMC,QAAQ0sD,EAASpuD,IAC5BouD,EAASpuD,GAAMoM,QAAQwyC,EAAQ5+C,IAAS,IAC1CquD,EAAOruD,GAAQouD,EAASpuD,GAAM6Z,OAAO,CAAC+kC,EAAQ5+C,MAGhDquD,EAAOruD,GAAQ,CAACouD,EAASpuD,GAAO4+C,EAAQ5+C,KARRquD,CAWpC,GAAG,CAAC,EACN,CA0BAl3D,EAAQwgD,QAAU6U,CAEX,EAED,SAAUl1D,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQsvD,WAAQhvD,EAElC,IAAIwoD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfwgD,EAAcF,EAFD,EAAoB,IAMjCuO,EAAUvO,EAFD,EAAoB,KAM7BwO,EAAcxO,EAFD,EAAoB,KAMjC2C,EAAY3C,EAFA,EAAoB,IAQpC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAASikD,EAAmBl0D,GAAO,GAAIqH,MAAMC,QAAQtH,GAAM,CAAE,IAAK,IAAIhC,EAAI,EAAGm2D,EAAO9sD,MAAMrH,EAAI3B,QAASL,EAAIgC,EAAI3B,OAAQL,IAAOm2D,EAAKn2D,GAAKgC,EAAIhC,GAAM,OAAOm2D,CAAM,CAAS,OAAO9sD,MAAM3F,KAAK1B,EAAQ,CAElM,SAASgkD,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,IAAIujD,GAAQ,EARGlD,EAFD,EAAoB,KAUTnG,SAAS,mBAE9B8O,EAAQ,SAASA,EAAMnvC,GACzB,IAAI7e,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAEjFk9C,EAAgB/iD,KAAMorD,GAEtBprD,KAAKic,MAAQA,EACbjc,KAAK5C,OAASA,CAChB,EAEI+1D,EAAY,WACd,SAASA,EAAUjN,EAAQD,GACzB,IAAIliD,EAAQ/D,KAEZ+iD,EAAgB/iD,KAAMmzD,GAEtBnzD,KAAKimD,QAAUA,EACfjmD,KAAKkmD,OAASA,EACdlmD,KAAKozD,WAAY,EACjBpzD,KAAKqzD,WAAY,EACjBrzD,KAAKqF,KAAOrF,KAAKkmD,OAAO5C,QACxBtjD,KAAKszD,OAAS3Q,EAAYrG,QAAQx4C,OAAO,SAAU9D,MAEnDA,KAAKgnD,UAAYhnD,KAAKuzD,WAAa,IAAInI,EAAM,EAAG,GAChDprD,KAAKwzD,oBACLxzD,KAAKyzD,iBACLzzD,KAAKimD,QAAQyN,UAAU,kBAAmBzuD,UAAU,WAC7ClB,EAAMsvD,WACT9mD,WAAWxI,EAAMmjD,OAAOpa,KAAK/oC,EAAOqhD,EAAU9I,QAAQgM,QAAQ+C,MAAO,EAEzE,IACArrD,KAAKimD,QAAQjrC,GAAGoqC,EAAU9I,QAAQpgB,OAAOwqB,eAAe,SAAU/gD,EAAMyhC,GAClEzhC,IAASy/C,EAAU9I,QAAQpgB,OAAOyqB,aAAevf,EAAMhqC,SAAW,GACpE2G,EAAMmjD,OAAO9B,EAAU9I,QAAQgM,QAAQO,OAE3C,IACA7oD,KAAKimD,QAAQjrC,GAAGoqC,EAAU9I,QAAQpgB,OAAO6xB,sBAAsB,WAC7D,GAAKhqD,EAAMonB,WAAX,CACA,IAAIwoC,EAAS5vD,EAAM6vD,iBACL,MAAVD,GACAA,EAAO/uD,MAAMwa,OAASrb,EAAMuvD,OAAOO,UAEvC9vD,EAAMkiD,QAAQzzB,KAAK4yB,EAAU9I,QAAQpgB,OAAO2qB,eAAe,WACzD,IACE9iD,EAAM+vD,eAAeH,EAAO/uD,MAAMwa,KAAMu0C,EAAO/uD,MAAMg0C,OAAQ+a,EAAO3yD,IAAIoe,KAAMu0C,EAAO3yD,IAAI43C,OAC3F,CAAE,MAAO/d,GAAU,CACrB,GAT6B,CAU/B,IACA76B,KAAKimD,QAAQjrC,GAAGoqC,EAAU9I,QAAQpgB,OAAO8xB,iBAAiB,SAAUlH,EAAWrnC,GAC7E,GAAIA,EAAQsnC,MAAO,CACjB,IAAIgN,EAAiBt0C,EAAQsnC,MACzBiN,EAAYD,EAAeC,UAC3BC,EAAcF,EAAeE,YAC7BC,EAAUH,EAAeG,QACzBC,EAAYJ,EAAeI,UAE/BpwD,EAAM+vD,eAAeE,EAAWC,EAAaC,EAASC,EACxD,CACF,IACAn0D,KAAKknD,OAAO9B,EAAU9I,QAAQgM,QAAQO,OACxC,CA6WA,OA3WAzG,EAAa+Q,EAAW,CAAC,CACvBrwD,IAAK,oBACLc,MAAO,WACL,IAAImG,EAAS/J,KAEbA,KAAKqF,KAAKlB,iBAAiB,oBAAoB,WAC7C4F,EAAOqpD,WAAY,CACrB,IACApzD,KAAKqF,KAAKlB,iBAAiB,kBAAkB,WAE3C,GADA4F,EAAOqpD,WAAY,EACfrpD,EAAOupD,OAAOrpC,OAAQ,CACxB,IAAI88B,EAAQh9C,EAAOupD,OAAOc,UAC1B,IAAKrN,EAAO,OACZx6C,YAAW,WACTxC,EAAO+pD,eAAe/M,EAAMiN,UAAWjN,EAAMkN,YAAalN,EAAMmN,QAASnN,EAAMoN,UACjF,GAAG,EACL,CACF,GACF,GACC,CACDrxD,IAAK,iBACLc,MAAO,WACL,IAAIokD,EAAShoD,KAEbA,KAAKimD,QAAQyN,UAAU,YAAazuD,SAASiP,MAAM,WACjD8zC,EAAOqL,WAAY,CACrB,IACArzD,KAAKimD,QAAQyN,UAAU,UAAWzuD,SAASiP,MAAM,WAC/C8zC,EAAOqL,WAAY,EACnBrL,EAAOd,OAAO9B,EAAU9I,QAAQgM,QAAQ+C,KAC1C,GACF,GACC,CACDvoD,IAAK,QACLc,MAAO,WACD5D,KAAKmrB,aACTnrB,KAAKqF,KAAKyG,QACV9L,KAAK+nD,SAAS/nD,KAAKuzD,YACrB,GACC,CACDzwD,IAAK,SACLc,MAAO,SAAgBywD,EAASzwD,GAC9B,GAA6B,MAAzB5D,KAAKkmD,OAAOC,WAAsBnmD,KAAKkmD,OAAOC,UAAUkO,GAA5D,CACAr0D,KAAKkmD,OAAOgB,SACZ,IAAIoN,EAAct0D,KAAK4zD,iBACvB,GAAmB,MAAfU,GAAwBA,EAAYX,OAAOY,YAAa5R,EAAYrG,QAAQxiC,MAAMu6C,EAAS1R,EAAYrG,QAAQH,MAAM8B,OAAzH,CACA,GAAIqW,EAAY1vD,MAAMwa,OAASpf,KAAKszD,OAAOO,SAAU,CACnD,IAAIpV,EAAOkE,EAAYrG,QAAQr2B,KAAKquC,EAAY1vD,MAAMwa,MAAM,GAC5D,GAAY,MAARq/B,EAAc,OAElB,GAAIA,aAAgBkE,EAAYrG,QAAQE,KAAM,CAC5C,IAAI7jC,EAAQ8lC,EAAKxmC,MAAMq8C,EAAY1vD,MAAMg0C,QACzC6F,EAAKx0B,OAAOkY,aAAaniC,KAAKszD,OAAQ36C,EACxC,MACE8lC,EAAKtc,aAAaniC,KAAKszD,OAAQgB,EAAY1vD,MAAMwa,MAEnDpf,KAAKszD,OAAOkB,QACd,CACAx0D,KAAKszD,OAAO5P,OAAO2Q,EAASzwD,GAC5B5D,KAAKkmD,OAAOwK,WACZ1wD,KAAK8zD,eAAe9zD,KAAKszD,OAAOO,SAAU7zD,KAAKszD,OAAOO,SAAS5kD,KAAK7R,QACpE4C,KAAKknD,QAhBkI,CAH3D,CAoB9E,GACC,CACDpkD,IAAK,YACLc,MAAO,SAAmBqY,GACxB,IAAI7e,EAASyI,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EAE7EyrD,EAAetxD,KAAKkmD,OAAO9oD,SAC/B6e,EAAQ3b,KAAKE,IAAIyb,EAAOq1C,EAAe,GACvCl0D,EAASkD,KAAKE,IAAIyb,EAAQ7e,EAAQk0D,EAAe,GAAKr1C,EACtD,IAAImD,OAAO,EACPq1C,EAAez0D,KAAKkmD,OAAOhC,KAAKjoC,GAChCy4C,EAAgB9P,EAAe6P,EAAc,GAC7CvQ,EAAOwQ,EAAc,GACrB9b,EAAS8b,EAAc,GAC3B,GAAY,MAARxQ,EAAc,OAAO,KAEzB,IAAIyQ,EAAiBzQ,EAAK1f,SAASoU,GAAQ,GAEvCgc,EAAkBhQ,EAAe+P,EAAgB,GAErDv1C,EAAOw1C,EAAgB,GACvBhc,EAASgc,EAAgB,GAEzB,IAAI7N,EAAQ9hD,SAASwY,cACrB,GAAIrgB,EAAS,EAAG,CACd2pD,EAAM8N,SAASz1C,EAAMw5B,GAErB,IAAIkc,EAAgB90D,KAAKkmD,OAAOhC,KAAKjoC,EAAQ7e,GAEzC23D,EAAgBnQ,EAAekQ,EAAe,GAKlD,GAHA5Q,EAAO6Q,EAAc,GACrBnc,EAASmc,EAAc,GAEX,MAAR7Q,EAAc,OAAO,KAEzB,IAAI8Q,EAAkB9Q,EAAK1f,SAASoU,GAAQ,GAExCqc,EAAkBrQ,EAAeoQ,EAAiB,GAMtD,OAJA51C,EAAO61C,EAAgB,GACvBrc,EAASqc,EAAgB,GAEzBlO,EAAMmO,OAAO91C,EAAMw5B,GACZmO,EAAMtd,uBACf,CACE,IAAI0rB,EAAO,OACP7b,OAAO,EAeX,OAdIl6B,aAAgBy9B,MACdjE,EAASx5B,EAAKnQ,KAAK7R,QACrB2pD,EAAM8N,SAASz1C,EAAMw5B,GACrBmO,EAAMmO,OAAO91C,EAAMw5B,EAAS,KAE5BmO,EAAM8N,SAASz1C,EAAMw5B,EAAS,GAC9BmO,EAAMmO,OAAO91C,EAAMw5B,GACnBuc,EAAO,SAET7b,EAAOyN,EAAMtd,0BAEb6P,EAAO4K,EAAKZ,QAAQ7Z,wBAChBmP,EAAS,IAAGuc,EAAO,UAElB,CACL5L,OAAQjQ,EAAKvxB,IAAMuxB,EAAK7T,OACxBA,OAAQ6T,EAAK7T,OACbkE,KAAM2P,EAAK6b,GACX9wB,MAAOiV,EAAK6b,GACZptC,IAAKuxB,EAAKvxB,IACVsb,MAAO,EAGb,GACC,CACDvgC,IAAK,iBACLc,MAAO,WACL,IAAI2Z,EAAYtY,SAASujD,eACzB,GAAiB,MAAbjrC,GAAqBA,EAAU63C,YAAc,EAAG,OAAO,KAC3D,IAAId,EAAc/2C,EAAU83C,WAAW,GACvC,GAAmB,MAAff,EAAqB,OAAO,KAChC,IAAIvN,EAAQ/mD,KAAKs1D,gBAAgBhB,GAEjC,OADA3O,EAAM4P,KAAK,iBAAkBxO,GACtBA,CACT,GACC,CACDjkD,IAAK,WACLc,MAAO,WACL,IAAI4xD,EAAax1D,KAAK4zD,iBACtB,OAAkB,MAAd4B,EAA2B,CAAC,KAAM,MAE/B,CADKx1D,KAAKy1D,kBAAkBD,GACpBA,EACjB,GACC,CACD1yD,IAAK,WACLc,MAAO,WACL,OAAOqB,SAAS+lB,gBAAkBhrB,KAAKqF,IACzC,GACC,CACDvC,IAAK,oBACLc,MAAO,SAA2BmjD,GAChC,IAAIsB,EAASroD,KAET01D,EAAY,CAAC,CAAC3O,EAAMniD,MAAMwa,KAAM2nC,EAAMniD,MAAMg0C,SAC3CmO,EAAM4M,OAAOY,WAChBmB,EAAU71D,KAAK,CAACknD,EAAM/lD,IAAIoe,KAAM2nC,EAAM/lD,IAAI43C,SAE5C,IAAI+c,EAAUD,EAAUnjD,KAAI,SAAUiyB,GACpC,IAAIoxB,EAAYhR,EAAepgB,EAAU,GACrCplB,EAAOw2C,EAAU,GACjBhd,EAASgd,EAAU,GAEnBnX,EAAOkE,EAAYrG,QAAQr2B,KAAK7G,GAAM,GACtCnD,EAAQwiC,EAAK7F,OAAOyP,EAAOnC,QAC/B,OAAe,IAAXtN,EACK38B,EACEwiC,aAAgBkE,EAAYrG,QAAQD,UACtCpgC,EAAQwiC,EAAKrhD,SAEb6e,EAAQwiC,EAAKxiC,MAAMmD,EAAMw5B,EAEpC,IACI53C,EAAMV,KAAKE,IAAIF,KAAKC,IAAIpB,MAAMmB,KAAM2yD,EAAmB0C,IAAW31D,KAAKkmD,OAAO9oD,SAAW,GACzFwH,EAAQtE,KAAKE,IAAIrB,MAAMmB,KAAM,CAACU,GAAKwd,OAAOy0C,EAAmB0C,KACjE,OAAO,IAAIvK,EAAMxmD,EAAO5D,EAAM4D,EAChC,GACC,CACD9B,IAAK,kBACLc,MAAO,SAAyB0wD,GAC9B,IAAK/xC,EAASviB,KAAKqF,KAAMivD,EAAYuB,kBAAoBvB,EAAYC,YAAchyC,EAASviB,KAAKqF,KAAMivD,EAAYwB,cACjH,OAAO,KAET,IAAI/O,EAAQ,CACVniD,MAAO,CAAEwa,KAAMk1C,EAAYuB,eAAgBjd,OAAQ0b,EAAYL,aAC/DjzD,IAAK,CAAEoe,KAAMk1C,EAAYwB,aAAcld,OAAQ0b,EAAYH,WAC3DR,OAAQW,GAkBV,MAhBA,CAACvN,EAAMniD,MAAOmiD,EAAM/lD,KAAK4J,SAAQ,SAAU45B,GAGzC,IAFA,IAAIplB,EAAOolB,EAASplB,KAChBw5B,EAASpU,EAASoU,SACbx5B,aAAgBy9B,OAASz9B,EAAK2G,WAAW3oB,OAAS,GACzD,GAAIgiB,EAAK2G,WAAW3oB,OAASw7C,EAC3Bx5B,EAAOA,EAAK2G,WAAW6yB,GACvBA,EAAS,MACJ,IAAIx5B,EAAK2G,WAAW3oB,SAAWw7C,EAIpC,MAFAA,GADAx5B,EAAOA,EAAKiL,qBACawyB,KAAOz9B,EAAKnQ,KAAK7R,OAASgiB,EAAK2G,WAAW3oB,OAAS,CAG9E,CAEFonC,EAASplB,KAAOA,EAAMolB,EAASoU,OAASA,CAC1C,IACOmO,CACT,GACC,CACDjkD,IAAK,gBACLc,MAAO,SAAuBmjD,GAC5B,IAAI+B,EAAS9oD,KAET21D,EAAU5O,EAAMwN,UAAY,CAACxN,EAAM9qC,OAAS,CAAC8qC,EAAM9qC,MAAO8qC,EAAM9qC,MAAQ8qC,EAAM3pD,QAC9EmX,EAAO,GACP+8C,EAAetxD,KAAKkmD,OAAO9oD,SAoB/B,OAnBAu4D,EAAQ/qD,SAAQ,SAAUqR,EAAOlf,GAC/Bkf,EAAQ3b,KAAKE,IAAI8wD,EAAe,EAAGr1C,GACnC,IAAImD,EACA22C,EAAgBjN,EAAO5C,OAAOhC,KAAKjoC,GACnC+5C,EAAgBpR,EAAemR,EAAe,GAC9C7R,EAAO8R,EAAc,GACrBpd,EAASod,EAAc,GACvBC,EAAkB/R,EAAK1f,SAASoU,EAAc,IAAN77C,GAExCm5D,EAAkBtR,EAAeqR,EAAiB,GAEtD72C,EAAO82C,EAAgB,GACvBtd,EAASsd,EAAgB,GAEzB3hD,EAAK1U,KAAKuf,EAAMw5B,EAClB,IACIrkC,EAAKnX,OAAS,IAChBmX,EAAOA,EAAKiK,OAAOjK,IAEdA,CACT,GACC,CACDzR,IAAK,iBACLc,MAAO,SAAwBoiD,GAC7B,IAAIe,EAAQ/mD,KAAKgnD,UACjB,GAAa,MAATD,EAAJ,CACA,IAAIqC,EAASppD,KAAKqpD,UAAUtC,EAAM9qC,MAAO8qC,EAAM3pD,QAC/C,GAAc,MAAVgsD,EAAJ,CACA,IAAI5B,EAAQxnD,KAAKkmD,OAAO9oD,SAAW,EAE/Bs0D,EAAe1xD,KAAKkmD,OAAO5E,KAAKhhD,KAAKE,IAAIumD,EAAM9qC,MAAOurC,IAEtDnoD,EADgBulD,EAAe8M,EAAc,GACvB,GAEtBtxC,EAAO/gB,EACX,GAAI0nD,EAAM3pD,OAAS,EAAG,CACpB,IAAIk1D,EAAgBtyD,KAAKkmD,OAAO5E,KAAKhhD,KAAKE,IAAIumD,EAAM9qC,MAAQ8qC,EAAM3pD,OAAQoqD,IAI1EpnC,EAFoBwkC,EAAe0N,EAAe,GAE7B,EACvB,CACA,GAAa,MAATjzD,GAAyB,MAAR+gB,EAArB,CACA,IAAI+1C,EAAenQ,EAAmBvc,wBAClC2f,EAAOrhC,IAAMouC,EAAapuC,IAC5Bi+B,EAAmBpb,WAAaurB,EAAapuC,IAAMqhC,EAAOrhC,IACjDqhC,EAAOG,OAAS4M,EAAa5M,SACtCvD,EAAmBpb,WAAawe,EAAOG,OAAS4M,EAAa5M,OALtB,CAff,CAFD,CAwB3B,GACC,CACDzmD,IAAK,iBACLc,MAAO,SAAwBowD,EAAWC,GACxC,IAAIC,EAAUruD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKmuD,EAC9EG,EAAYtuD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKouD,EAChF5P,EAAQx+C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAG3E,GADA8/C,EAAM4P,KAAK,iBAAkBvB,EAAWC,EAAaC,EAASC,GAC7C,MAAbH,GAA8C,MAAxBh0D,KAAKqF,KAAKiE,YAA8C,MAAxB0qD,EAAU1qD,YAA4C,MAAtB4qD,EAAQ5qD,WAAlG,CAGA,IAAIiU,EAAYtY,SAASujD,eACzB,GAAiB,MAAbjrC,EACJ,GAAiB,MAAby2C,EAAmB,CAChBh0D,KAAKmrB,YAAYnrB,KAAKqF,KAAKyG,QAChC,IAAI6nD,GAAU3zD,KAAK4zD,kBAAoB,CAAC,GAAGD,OAC3C,GAAc,MAAVA,GAAkBtP,GAAS2P,IAAcL,EAAOkC,gBAAkB5B,IAAgBN,EAAOM,aAAeC,IAAYP,EAAOmC,cAAgB3B,IAAcR,EAAOQ,UAAW,CAEpJ,MAArBH,EAAU5oD,UACZ6oD,EAAc,GAAGljD,QAAQ/O,KAAKgyD,EAAU1qD,WAAWyc,WAAYiuC,GAC/DA,EAAYA,EAAU1qD,YAED,MAAnB4qD,EAAQ9oD,UACV+oD,EAAY,GAAGpjD,QAAQ/O,KAAKkyD,EAAQ5qD,WAAWyc,WAAYmuC,GAC3DA,EAAUA,EAAQ5qD,YAEpB,IAAIy9C,EAAQ9hD,SAASwY,cACrBspC,EAAM8N,SAASb,EAAWC,GAC1BlN,EAAMmO,OAAOhB,EAASC,GACtB52C,EAAU64C,kBACV74C,EAAU84C,SAAStP,EACrB,CACF,MACExpC,EAAU64C,kBACVp2D,KAAKqF,KAAKw6B,OACV56B,SAASiP,KAAKpI,OAzBhB,CA2BF,GACC,CACDhJ,IAAK,WACLc,MAAO,SAAkBmjD,GACvB,IAAI1C,EAAQx+C,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GACvEgU,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQC,IAO3G,GALqB,kBAAVlE,IACTxqC,EAASwqC,EACTA,GAAQ,GAEVsB,EAAM4P,KAAK,WAAYxO,GACV,MAATA,EAAe,CACjB,IAAIxyC,EAAOvU,KAAKs2D,cAAcvP,GAC9B/mD,KAAK8zD,eAAe30D,MAAMa,KAAMizD,EAAmB1+C,GAAMiK,OAAO,CAAC6lC,IACnE,MACErkD,KAAK8zD,eAAe,MAEtB9zD,KAAKknD,OAAOrtC,EACd,GACC,CACD/W,IAAK,SACLc,MAAO,WACL,IAAIiW,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKu/C,EAAU9I,QAAQgM,QAAQ+C,KAEvGkL,EAAWv2D,KAAKgnD,UAEhBwP,EAAYx2D,KAAK+pD,WACjB0M,EAAa7R,EAAe4R,EAAW,GACvCxP,EAAYyP,EAAW,GACvBnC,EAAcmC,EAAW,GAM7B,GAJAz2D,KAAKgnD,UAAYA,EACK,MAAlBhnD,KAAKgnD,YACPhnD,KAAKuzD,WAAavzD,KAAKgnD,aAEpB,EAAIiK,EAAY3U,SAASia,EAAUv2D,KAAKgnD,WAAY,CACvD,IAAIoF,GAECpsD,KAAKozD,WAA4B,MAAfkB,GAAuBA,EAAYX,OAAOY,WAAaD,EAAY1vD,MAAMwa,OAASpf,KAAKszD,OAAOO,UACnH7zD,KAAKszD,OAAOc,UAEd,IAGM/H,EAHF93C,EAAO,CAAC6wC,EAAU9I,QAAQpgB,OAAO+xB,kBAAkB,EAAI+C,EAAQ1U,SAASt8C,KAAKgnD,YAAY,EAAIgK,EAAQ1U,SAASia,GAAW18C,IAC5HuyC,EAAWpsD,KAAKimD,SAASqG,KAAKntD,MAAMitD,EAAU,CAAChH,EAAU9I,QAAQpgB,OAAOwqB,eAAeloC,OAAOjK,IAC3FsF,IAAWurC,EAAU9I,QAAQgM,QAAQO,SAGtCwD,EAAYrsD,KAAKimD,SAASqG,KAAKntD,MAAMktD,EAAW93C,EAErD,CACF,KAGK4+C,CACT,CAhagB,GAkahB,SAAS5wC,EAAS0H,EAAQ8lC,GACxB,IAEEA,EAAWzmD,UACb,CAAE,MAAO6F,GACP,OAAO,CACT,CAMA,OAHI4gD,aAAsBlT,OACxBkT,EAAaA,EAAWzmD,YAEnB2gB,EAAO1H,SAASwtC,EACzB,CAEAj0D,EAAQsvD,MAAQA,EAChBtvD,EAAQwgD,QAAU6W,CAEX,EAED,SAAUl3D,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAQgCoL,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre2K,EAAa,EAAoB,GAYjCyJ,EAAQ,SAAUrT,GAGpB,SAASqT,IAGP,OAZJ,SAAyBx0D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAM02D,GAR1B,SAAoC7+C,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAO02D,EAAMnZ,WAAa36C,OAAOyb,eAAeq4C,IAAQv3D,MAAMa,KAAM6F,WACxG,CA4BA,OArCF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUwT,EAAOrT,GAQjBjB,EAAasU,EAAO,CAAC,CACnB5zD,IAAK,aACLc,MAAO,SAAoBqmB,EAAQ3c,GACF,IAA3B2c,EAAOmG,SAAShzB,OAClBilD,EAAKqU,EAAMx2D,UAAUq9C,WAAa36C,OAAOyb,eAAeq4C,EAAMx2D,WAAY,aAAcF,MAAMgC,KAAKhC,KAAMiqB,EAAQ3c,GAEjHtN,KAAK+X,QAET,GACC,CACDjV,IAAK,SACLc,MAAO,WACL,OAAO,CACT,GACC,CACDd,IAAK,QACLc,MAAO,WACL,MAAO,EACT,IACE,CAAC,CACHd,IAAK,QACLc,MAAO,WAEP,KAGK8yD,CACT,CApCY,GARoB1nD,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IA4CzEstC,QAAQG,OAEtBia,EAAM9X,SAAW,QACjB8X,EAAMtrD,QAAU,KAEhBtP,EAAQwgD,QAAUoa,CAEX,EAED,SAAUz6D,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAI+yD,EAAgB,EAAoB,IACpCC,EAAW,EAAoB,IAC/B3a,EAAW,EAAoB,GAC/B4a,EAA+B,SAAUnZ,GAEzC,SAASmZ,EAAcvT,GACnB,IAAIv/C,EAAQ25C,EAAO17C,KAAKhC,KAAMsjD,IAAYtjD,KAE1C,OADA+D,EAAMuT,QACCvT,CACX,CAuNA,OA5NAs5C,EAAUwZ,EAAenZ,GAMzBmZ,EAAc32D,UAAUgM,YAAc,SAAU+M,GAC5CjZ,KAAKmiC,aAAalpB,EACtB,EACA49C,EAAc32D,UAAUs0D,OAAS,WAC7B9W,EAAOx9C,UAAUs0D,OAAOxyD,KAAKhC,MAC7BA,KAAKowB,SAASxlB,SAAQ,SAAUw5C,GAC5BA,EAAMoQ,QACV,GACJ,EACAqC,EAAc32D,UAAUoX,MAAQ,WAC5B,IAAIvT,EAAQ/D,KACZA,KAAKowB,SAAW,IAAIumC,EAAcra,QAElC,GAAGn8C,MACE6B,KAAKhC,KAAKsjD,QAAQv9B,YAClBkL,UACArmB,SAAQ,SAAUwU,GACnB,IACI,IAAIglC,EAAQ0S,EAAS13C,GACrBrb,EAAMo+B,aAAaiiB,EAAOrgD,EAAMqsB,SAASlrB,WAAQ9I,EACrD,CACA,MAAO6uB,GACH,GAAIA,aAAegxB,EAASwB,eACxB,OAEA,MAAMxyB,CACd,CACJ,GACJ,EACA4rC,EAAc32D,UAAU8vD,SAAW,SAAU/zC,EAAO7e,GAChD,GAAc,IAAV6e,GAAe7e,IAAW4C,KAAK5C,SAC/B,OAAO4C,KAAK+X,SAEhB/X,KAAKowB,SAAS2mC,UAAU96C,EAAO7e,GAAQ,SAAUgnD,EAAOxL,EAAQx7C,GAC5DgnD,EAAM4L,SAASpX,EAAQx7C,EAC3B,GACJ,EACAy5D,EAAc32D,UAAU6vD,WAAa,SAAUiH,EAAU/6C,GACrD,IAAIg7C,EAAKj3D,KAAKowB,SAASnK,KAAKhK,GAAQmoC,EAAQ6S,EAAG,GAAIre,EAASqe,EAAG,GAC/D,OAA0B,MAArBD,EAASpY,UAAoBoY,EAAS5S,IACjB,MAArB4S,EAASpY,UAAoBwF,aAAiB4S,EACxC,CAAC5S,EAAOxL,GAEVwL,aAAiByS,EACfzS,EAAM2L,WAAWiH,EAAUpe,GAG3B,CAAC,MAAO,EAEvB,EACAie,EAAc32D,UAAU+jD,YAAc,SAAU+S,EAAU/6C,EAAO7e,QAC/C,IAAV6e,IAAoBA,EAAQ,QACjB,IAAX7e,IAAqBA,EAASysD,OAAOC,WACzC,IAAI7F,EAAc,GACdiT,EAAa95D,EAWjB,OAVA4C,KAAKowB,SAAS2mC,UAAU96C,EAAO7e,GAAQ,SAAUgnD,EAAOnoC,EAAO7e,IACjC,MAArB45D,EAASpY,UAAoBoY,EAAS5S,IACjB,MAArB4S,EAASpY,UAAoBwF,aAAiB4S,IAC/C/S,EAAYpkD,KAAKukD,GAEjBA,aAAiByS,IACjB5S,EAAcA,EAAYzlC,OAAO4lC,EAAMH,YAAY+S,EAAU/6C,EAAOi7C,KAExEA,GAAc95D,CAClB,IACO6mD,CACX,EACA4S,EAAc32D,UAAU+hC,OAAS,WAC7BjiC,KAAKowB,SAASxlB,SAAQ,SAAUw5C,GAC5BA,EAAMniB,QACV,IACAyb,EAAOx9C,UAAU+hC,OAAOjgC,KAAKhC,KACjC,EACA62D,EAAc32D,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GAC9D5D,KAAKowB,SAAS2mC,UAAU96C,EAAO7e,GAAQ,SAAUgnD,EAAOxL,EAAQx7C,GAC5DgnD,EAAMiM,SAASzX,EAAQx7C,EAAQuH,EAAMf,EACzC,GACJ,EACAizD,EAAc32D,UAAU4jD,SAAW,SAAU7nC,EAAOrY,EAAO+/C,GACvD,IAAIsT,EAAKj3D,KAAKowB,SAASnK,KAAKhK,GAAQmoC,EAAQ6S,EAAG,GAAIre,EAASqe,EAAG,GAC/D,GAAI7S,EACAA,EAAMN,SAASlL,EAAQh1C,EAAO+/C,OAE7B,CACD,IAAIlF,EAAc,MAAPkF,EAAc1H,EAASn4C,OAAO,OAAQF,GAASq4C,EAASn4C,OAAOF,EAAO+/C,GACjF3jD,KAAKkM,YAAYuyC,EACrB,CACJ,EACAoY,EAAc32D,UAAUiiC,aAAe,SAAUg1B,EAAWC,GACxD,GAAoC,MAAhCp3D,KAAKskD,QAAQE,kBACZxkD,KAAKskD,QAAQE,gBAAgB6S,MAAK,SAAUjT,GACzC,OAAO+S,aAAqB/S,CAChC,IACA,MAAM,IAAInI,EAASwB,eAAe,iBAAmB0Z,EAAU7S,QAAQ1F,SAAW,SAAW5+C,KAAKskD,QAAQ1F,UAE9GuY,EAAUG,WAAWt3D,KAAMo3D,EAC/B,EACAP,EAAc32D,UAAU9C,OAAS,WAC7B,OAAO4C,KAAKowB,SAASwvB,QAAO,SAAU2X,EAAMnT,GACxC,OAAOmT,EAAOnT,EAAMhnD,QACxB,GAAG,EACP,EACAy5D,EAAc32D,UAAU4sD,aAAe,SAAU0K,EAAc1P,GAC3D9nD,KAAKowB,SAASxlB,SAAQ,SAAUw5C,GAC5BoT,EAAar1B,aAAaiiB,EAAO0D,EACrC,GACJ,EACA+O,EAAc32D,UAAUwwD,SAAW,SAAUjxC,GAEzC,GADAi+B,EAAOx9C,UAAUwwD,SAAS1uD,KAAKhC,KAAMyf,GACR,IAAzBzf,KAAKowB,SAAShzB,OACd,GAAiC,MAA7B4C,KAAKskD,QAAQC,aAAsB,CACnC,IAAIH,EAAQnI,EAASn4C,OAAO9D,KAAKskD,QAAQC,cACzCvkD,KAAKkM,YAAYk4C,GACjBA,EAAMsM,SAASjxC,EACnB,MAEIzf,KAAK+X,QAGjB,EACA8+C,EAAc32D,UAAUynD,KAAO,SAAU1rC,EAAOw7C,QAC1B,IAAdA,IAAwBA,GAAY,GACxC,IAAIR,EAAKj3D,KAAKowB,SAASnK,KAAKhK,EAAOw7C,GAAYrT,EAAQ6S,EAAG,GAAIre,EAASqe,EAAG,GACtEzyB,EAAW,CAAC,CAACxkC,KAAMic,IACvB,OAAImoC,aAAiByS,EACVryB,EAAShmB,OAAO4lC,EAAMuD,KAAK/O,EAAQ6e,KAE5B,MAATrT,GACL5f,EAAS3kC,KAAK,CAACukD,EAAOxL,IAEnBpU,EACX,EACAqyB,EAAc32D,UAAUqJ,YAAc,SAAU66C,GAC5CpkD,KAAKowB,SAASrY,OAAOqsC,EACzB,EACAyS,EAAc32D,UAAUuR,QAAU,SAAU7Q,GACpCA,aAAkBi2D,GAClBj2D,EAAOksD,aAAa9sD,MAExB09C,EAAOx9C,UAAUuR,QAAQzP,KAAKhC,KAAMY,EACxC,EACAi2D,EAAc32D,UAAU+X,MAAQ,SAAUgE,EAAOooC,GAE7C,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAVpoC,EACA,OAAOjc,KACX,GAAIic,IAAUjc,KAAK5C,SACf,OAAO4C,KAAKyb,IACpB,CACA,IAAI9C,EAAQ3Y,KAAK2gB,QAMjB,OALA3gB,KAAKiqB,OAAOkY,aAAaxpB,EAAO3Y,KAAKyb,MACrCzb,KAAKowB,SAAS2mC,UAAU96C,EAAOjc,KAAK5C,UAAU,SAAUgnD,EAAOxL,EAAQx7C,GACnEgnD,EAAQA,EAAMnsC,MAAM2gC,EAAQyL,GAC5B1rC,EAAMzM,YAAYk4C,EACtB,IACOzrC,CACX,EACAk+C,EAAc32D,UAAU42C,OAAS,WAC7B92C,KAAK8sD,aAAa9sD,KAAKiqB,OAAQjqB,KAAKyb,MACpCzb,KAAK+X,QACT,EACA8+C,EAAc32D,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAClD,IAAI1b,EAAQ/D,KACR03D,EAAa,GACbC,EAAe,GACnB7Q,EAAUl8C,SAAQ,SAAUgtD,GACpBA,EAASh3D,SAAWmD,EAAMu/C,SAA6B,cAAlBsU,EAASjyD,OAC9C+xD,EAAW73D,KAAKV,MAAMu4D,EAAYE,EAASF,YAC3CC,EAAa93D,KAAKV,MAAMw4D,EAAcC,EAASD,cAEvD,IACAA,EAAa/sD,SAAQ,SAAUwU,GAI3B,KAAuB,MAAnBA,EAAK9V,YAEY,WAAjB8V,EAAKhU,SACLnG,SAASiP,KAAKuO,wBAAwBrD,GAAQ0+B,KAAK+Z,gCAHvD,CAMA,IAAIpZ,EAAOxC,EAASh2B,KAAK7G,GACb,MAARq/B,IAE2B,MAA3BA,EAAK6E,QAAQh6C,YAAsBm1C,EAAK6E,QAAQh6C,aAAevF,EAAMu/C,SACrE7E,EAAKxc,SALT,CAOJ,IACAy1B,EACKrtD,QAAO,SAAU+U,GAClB,OAAOA,EAAK9V,YAAcvF,EAAMu/C,OACpC,IACK7oC,MAAK,SAAUhe,EAAGC,GACnB,OAAID,IAAMC,EACC,EACPD,EAAEgmB,wBAAwB/lB,GAAKohD,KAAKga,4BAC7B,GAEH,CACZ,IACKltD,SAAQ,SAAUwU,GACnB,IAAIg4C,EAAU,KACU,MAApBh4C,EAAKoM,cACL4rC,EAAUnb,EAASh2B,KAAK7G,EAAKoM,cAEjC,IAAIizB,EAAOqY,EAAS13C,GAChBq/B,EAAKhjC,MAAQ27C,GAAwB,MAAb3Y,EAAKhjC,OACV,MAAfgjC,EAAKx0B,QACLw0B,EAAKx0B,OAAO1gB,YAAYxF,GAE5BA,EAAMo+B,aAAasc,EAAM2Y,QAAWh7D,GAE5C,GACJ,EACOy6D,CACX,CA9NkC,CA8NhCD,EAASta,SACX,SAASwa,EAAS13C,GACd,IAAIq/B,EAAOxC,EAASh2B,KAAK7G,GACzB,GAAY,MAARq/B,EACA,IACIA,EAAOxC,EAASn4C,OAAOsb,EAC3B,CACA,MAAOjQ,GACHsvC,EAAOxC,EAASn4C,OAAOm4C,EAASE,MAAM+B,QACtC,GAAG/9C,MAAM6B,KAAKod,EAAK2G,YAAYnb,SAAQ,SAAUw5C,GAE7C3F,EAAK6E,QAAQp3C,YAAYk4C,EAC7B,IACIhlC,EAAK9V,YACL8V,EAAK9V,WAAW+4B,aAAaoc,EAAK6E,QAASlkC,GAE/Cq/B,EAAK+V,QACT,CAEJ,OAAO/V,CACX,CACA3iD,EAAQwgD,QAAUua,CAGX,EAED,SAAU56D,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIi4C,EAAe,EAAoB,IACnCG,EAAU,EAAoB,IAC9BX,EAAc,EAAoB,IAClCY,EAAW,EAAoB,GAC/B8b,EAA4B,SAAUra,GAEtC,SAASqa,EAAWzU,GAChB,IAAIv/C,EAAQ25C,EAAO17C,KAAKhC,KAAMsjD,IAAYtjD,KAE1C,OADA+D,EAAM0C,WAAa,IAAIu1C,EAAQM,QAAQv4C,EAAMu/C,SACtCv/C,CACX,CAkDA,OAvDAs5C,EAAU0a,EAAYra,GAMtBqa,EAAWxU,QAAU,SAAUD,GAC3B,MAA4B,kBAAjBtjD,KAAKoL,UAGPhF,MAAMC,QAAQrG,KAAKoL,SACjBk4C,EAAQl4C,QAAQmP,mBADtB,EAIT,EACAw9C,EAAW73D,UAAUwjD,OAAS,SAAU/+C,EAAMf,GAC1C,IAAI8/C,EAASzH,EAASniC,MAAMnV,GACxB++C,aAAkB7H,EAAaS,QAC/Bt8C,KAAKyG,WAAW+8C,UAAUE,EAAQ9/C,GAE7BA,IACS,MAAV8/C,GAAmB/+C,IAAS3E,KAAKskD,QAAQ1F,UAAY5+C,KAAKujD,UAAU5+C,KAAUf,GAC9E5D,KAAKoiC,YAAYz9B,EAAMf,GAGnC,EACAm0D,EAAW73D,UAAUqjD,QAAU,WAC3B,IAAIA,EAAUvjD,KAAKyG,WAAWuyB,SAC1B0qB,EAAS1jD,KAAKskD,QAAQf,QAAQvjD,KAAKsjD,SAIvC,OAHc,MAAVI,IACAH,EAAQvjD,KAAKskD,QAAQ1F,UAAY8E,GAE9BH,CACX,EACAwU,EAAW73D,UAAUkiC,YAAc,SAAUz9B,EAAMf,GAC/C,IAAI6P,EAAciqC,EAAOx9C,UAAUkiC,YAAYpgC,KAAKhC,KAAM2E,EAAMf,GAEhE,OADA5D,KAAKyG,WAAWga,KAAKhN,GACdA,CACX,EACAskD,EAAW73D,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAC/C,IAAI1b,EAAQ/D,KACZ09C,EAAOx9C,UAAUgnD,OAAOllD,KAAKhC,KAAM8mD,EAAWrnC,GAC1CqnC,EAAUuQ,MAAK,SAAUO,GACzB,OAAOA,EAASh3D,SAAWmD,EAAMu/C,SAA6B,eAAlBsU,EAASjyD,IACzD,KACI3F,KAAKyG,WAAW6Q,OAExB,EACAygD,EAAW73D,UAAU46B,KAAO,SAAUn2B,EAAMf,GACxC,IAAIo0D,EAAUta,EAAOx9C,UAAU46B,KAAK94B,KAAKhC,KAAM2E,EAAMf,GAIrD,OAHIo0D,aAAmBD,GAAcC,EAAQ1T,QAAQ19B,QAAU5mB,KAAKskD,QAAQ19B,OACxE5mB,KAAKyG,WAAWwxD,KAAKD,GAElBA,CACX,EACOD,CACX,CAzD+B,CAyD7B1c,EAAYiB,SACdxgD,EAAQwgD,QAAUyb,CAGX,EAED,SAAU97D,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIgzD,EAAW,EAAoB,IAC/B3a,EAAW,EAAoB,GAC/Bic,EAA0B,SAAUxa,GAEpC,SAASwa,IACL,OAAkB,OAAXxa,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CAsBA,OAzBAq9C,EAAU6a,EAAUxa,GAIpBwa,EAASt0D,MAAQ,SAAU0/C,GACvB,OAAO,CACX,EACA4U,EAASh4D,UAAU+b,MAAQ,SAAUmD,EAAMw5B,GACvC,OAAI54C,KAAKsjD,UAAYlkC,GACjBpf,KAAKsjD,QAAQ7gC,wBAAwBrD,GAAQ0+B,KAAK+Z,+BAC3Cv3D,KAAKE,IAAIo4C,EAAQ,IAEpB,CACZ,EACAsf,EAASh4D,UAAUskC,SAAW,SAAUvoB,EAAOw7C,GAC3C,IAAI7e,EAAS,GAAG7nC,QAAQ/O,KAAKhC,KAAKiqB,OAAOq5B,QAAQv9B,WAAY/lB,KAAKsjD,SAGlE,OAFIrnC,EAAQ,IACR28B,GAAU,GACP,CAAC54C,KAAKiqB,OAAOq5B,QAAS1K,EACjC,EACAsf,EAASh4D,UAAU0D,MAAQ,WACvB,IAAIqzD,EACJ,OAAOA,EAAK,CAAC,GAAMj3D,KAAKskD,QAAQ1F,UAAY5+C,KAAKskD,QAAQ1gD,MAAM5D,KAAKsjD,WAAY,EAAM2T,CAC1F,EACAiB,EAAStxC,MAAQq1B,EAASE,MAAMgc,YACzBD,CACX,CA3B6B,CA2B3BtB,EAASta,SACXxgD,EAAQwgD,QAAU4b,CAGX,EAED,SAAUj8D,EAAQH,EAAS,GAEjC,IAAIijD,EAAQ,EAAoB,IAC5BnlC,EAAS,EAAoB,GAG7Bw+C,EAAM,CACR3xD,WAAY,CACVy5C,QAAS,SAAUzjD,EAAGC,EAAG27D,GACN,kBAAN57D,IAAgBA,EAAI,CAAC,GACf,kBAANC,IAAgBA,EAAI,CAAC,GAChC,IAAI+J,EAAamT,GAAO,EAAM,CAAC,EAAGld,GASlC,IAAK,IAAIoG,KARJu1D,IACH5xD,EAAa7D,OAAOqkB,KAAKxgB,GAAYm5C,QAAO,SAAUn/B,EAAM3d,GAI1D,OAHuB,MAAnB2D,EAAW3D,KACb2d,EAAK3d,GAAO2D,EAAW3D,IAElB2d,CACT,GAAG,CAAC,IAEUhkB,OACCL,IAAXK,EAAEqG,SAAiC1G,IAAXM,EAAEoG,KAC5B2D,EAAW3D,GAAOrG,EAAEqG,IAGxB,OAAOF,OAAOqkB,KAAKxgB,GAAYrJ,OAAS,EAAIqJ,OAAarK,CAC3D,EAEA+tB,KAAM,SAAS1tB,EAAGC,GACC,kBAAND,IAAgBA,EAAI,CAAC,GACf,kBAANC,IAAgBA,EAAI,CAAC,GAChC,IAAI+J,EAAa7D,OAAOqkB,KAAKxqB,GAAG+hB,OAAO5b,OAAOqkB,KAAKvqB,IAAIkjD,QAAO,SAAUn5C,EAAY3D,GAIlF,OAHKi8C,EAAMtiD,EAAEqG,GAAMpG,EAAEoG,MACnB2D,EAAW3D,QAAkB1G,IAAXM,EAAEoG,GAAqB,KAAOpG,EAAEoG,IAE7C2D,CACT,GAAG,CAAC,GACJ,OAAO7D,OAAOqkB,KAAKxgB,GAAYrJ,OAAS,EAAIqJ,OAAarK,CAC3D,EAEAmlD,UAAW,SAAU9kD,EAAGC,EAAG8kD,GACzB,GAAiB,kBAAN/kD,EAAgB,OAAOC,EAClC,GAAiB,kBAANA,EAAX,CACA,IAAK8kD,EAAU,OAAO9kD,EACtB,IAAI+J,EAAa7D,OAAOqkB,KAAKvqB,GAAGkjD,QAAO,SAAUn5C,EAAY3D,GAE3D,YADe1G,IAAXK,EAAEqG,KAAoB2D,EAAW3D,GAAOpG,EAAEoG,IACvC2D,CACT,GAAG,CAAC,GACJ,OAAO7D,OAAOqkB,KAAKxgB,GAAYrJ,OAAS,EAAIqJ,OAAarK,CANd,CAO7C,GAGF+lB,SAAU,SAAUg9B,GAClB,OAAO,IAAImZ,EAASnZ,EACtB,EAEA/hD,OAAQ,SAAU4hD,GAChB,MAA4B,kBAAjBA,EAAW,OACbA,EAAW,OACY,kBAAdA,EAAGK,OACZL,EAAGK,OAEkB,kBAAdL,EAAGtc,OAAsBsc,EAAGtc,OAAOtlC,OAAS,CAE9D,GAIF,SAASk7D,EAASnZ,GAChBn/C,KAAKm/C,IAAMA,EACXn/C,KAAKic,MAAQ,EACbjc,KAAK44C,OAAS,CAChB,CAEA0f,EAASp4D,UAAU8/C,QAAU,WAC3B,OAAOhgD,KAAKygD,aAAeX,GAC7B,EAEAwY,EAASp4D,UAAUub,KAAO,SAAUre,GAC7BA,IAAQA,EAAS0iD,KACtB,IAAIG,EAASjgD,KAAKm/C,IAAIn/C,KAAKic,OAC3B,GAAIgkC,EAAQ,CACV,IAAIrH,EAAS54C,KAAK44C,OACdoI,EAAWoX,EAAIh7D,OAAO6iD,GAQ1B,GAPI7iD,GAAU4jD,EAAWpI,GACvBx7C,EAAS4jD,EAAWpI,EACpB54C,KAAKic,OAAS,EACdjc,KAAK44C,OAAS,GAEd54C,KAAK44C,QAAUx7C,EAEe,kBAArB6iD,EAAe,OACxB,MAAO,CAAE,OAAU7iD,GAEnB,IAAIm7D,EAAQ,CAAC,EAYb,OAXItY,EAAOx5C,aACT8xD,EAAM9xD,WAAaw5C,EAAOx5C,YAEC,kBAAlBw5C,EAAOZ,OAChBkZ,EAAMlZ,OAASjiD,EACmB,kBAAlB6iD,EAAOvd,OACvB61B,EAAM71B,OAASud,EAAOvd,OAAO5iC,OAAO84C,EAAQx7C,GAG5Cm7D,EAAM71B,OAASud,EAAOvd,OAEjB61B,CAEX,CACE,MAAO,CAAElZ,OAAQS,IAErB,EAEAwY,EAASp4D,UAAUogD,KAAO,WACxB,OAAOtgD,KAAKm/C,IAAIn/C,KAAKic,MACvB,EAEAq8C,EAASp4D,UAAUugD,WAAa,WAC9B,OAAIzgD,KAAKm/C,IAAIn/C,KAAKic,OAETm8C,EAAIh7D,OAAO4C,KAAKm/C,IAAIn/C,KAAKic,QAAUjc,KAAK44C,OAExCkH,GAEX,EAEAwY,EAASp4D,UAAUsgD,SAAW,WAC5B,OAAIxgD,KAAKm/C,IAAIn/C,KAAKic,OAC8B,kBAAnCjc,KAAKm/C,IAAIn/C,KAAKic,OAAe,OAC/B,SACyC,kBAAhCjc,KAAKm/C,IAAIn/C,KAAKic,OAAOojC,OAC9B,SAEA,SAGJ,QACT,EAEAiZ,EAASp4D,UAAU0gD,KAAO,WACxB,GAAK5gD,KAAKggD,UAEH,IAAoB,IAAhBhgD,KAAK44C,OACd,OAAO54C,KAAKm/C,IAAIh/C,MAAMH,KAAKic,OAE3B,IAAI28B,EAAS54C,KAAK44C,OACd38B,EAAQjc,KAAKic,MACbR,EAAOzb,KAAKyb,OACZmlC,EAAO5gD,KAAKm/C,IAAIh/C,MAAMH,KAAKic,OAG/B,OAFAjc,KAAK44C,OAASA,EACd54C,KAAKic,MAAQA,EACN,CAACR,GAAM+C,OAAOoiC,EACvB,CAXE,MAAO,EAYX,EAGA3kD,EAAOH,QAAUs8D,CAGV,EAED,SAAUn8D,EAAQH,GAExB,IAAI6kB,EAAQ,WACZ,aAEA,SAAS63C,EAAYxpD,EAAKrJ,GACxB,OAAe,MAARA,GAAgBqJ,aAAerJ,CACxC,CAEA,IAAI8yD,EASAC,EAOAC,EAfJ,IACEF,EAAYG,GACd,CAAE,MAAM9mC,GAGN2mC,EAAY,WAAY,CAC1B,CAGA,IACEC,EAAYG,GACd,CAAE,MAAM/mC,GACN4mC,EAAY,WAAY,CAC1B,CAGA,IACEC,EAAgBG,OAClB,CAAE,MAAMhnC,GACN6mC,EAAgB,WAAY,CAC9B,CAuBA,SAASh4C,EAAMsJ,EAAQ8uC,EAAUrlC,EAAOxzB,EAAW84D,GACzB,kBAAbD,IACTrlC,EAAQqlC,EAASrlC,MACjBxzB,EAAY64D,EAAS74D,UACrB84D,EAAuBD,EAASC,qBAChCD,EAAWA,EAASA,UAItB,IAAIE,EAAa,GACbC,EAAc,GAEdC,EAA6B,oBAAVC,OA0IvB,MAxIuB,oBAAZL,IACTA,GAAW,GAEO,oBAATrlC,IACTA,EAAQosB,KAGV,SAASuZ,EAAOpvC,EAAQyJ,GAEtB,GAAe,OAAXzJ,EACF,OAAO,KAET,GAAc,IAAVyJ,EACF,OAAOzJ,EAET,IAAIm6B,EACAljC,EACJ,GAAqB,iBAAV+I,EACT,OAAOA,EAGT,GAAIuuC,EAAYvuC,EAAQwuC,GACtBrU,EAAQ,IAAIqU,OACP,GAAID,EAAYvuC,EAAQyuC,GAC7BtU,EAAQ,IAAIsU,OACP,GAAIF,EAAYvuC,EAAQ0uC,GAC7BvU,EAAQ,IAAIuU,GAAc,SAAUnnC,EAASC,GAC3CxH,EAAO9P,MAAK,SAASvW,GACnB4tB,EAAQ6nC,EAAOz1D,EAAO8vB,EAAQ,GAChC,IAAG,SAASzI,GACVwG,EAAO4nC,EAAOpuC,EAAKyI,EAAQ,GAC7B,GACF,SACK,GAAI/S,EAAM24C,UAAUrvC,GACzBm6B,EAAQ,QACH,GAAIzjC,EAAM44C,WAAWtvC,GAC1Bm6B,EAAQ,IAAIxpC,OAAOqP,EAAOpQ,OAAQ2/C,EAAiBvvC,IAC/CA,EAAOwvC,YAAWrV,EAAMqV,UAAYxvC,EAAOwvC,gBAC1C,GAAI94C,EAAM+4C,SAASzvC,GACxBm6B,EAAQ,IAAI7lB,KAAKtU,EAAO8kC,eACnB,IAAIoK,GAAaC,OAAOnK,SAAShlC,GAStC,OANEm6B,EAFEgV,OAAOO,YAEDP,OAAOO,YAAY1vC,EAAO7sB,QAG1B,IAAIg8D,OAAOnvC,EAAO7sB,QAE5B6sB,EAAOxJ,KAAK2jC,GACLA,EACEoU,EAAYvuC,EAAQjV,OAC7BovC,EAAQxhD,OAAOkB,OAAOmmB,GAEE,oBAAb/pB,GACTghB,EAAQte,OAAOyb,eAAe4L,GAC9Bm6B,EAAQxhD,OAAOkB,OAAOod,KAGtBkjC,EAAQxhD,OAAOkB,OAAO5D,GACtBghB,EAAQhhB,EAEZ,CAEA,GAAI64D,EAAU,CACZ,IAAI98C,EAAQg9C,EAAWloD,QAAQkZ,GAE/B,IAAc,GAAVhO,EACF,OAAOi9C,EAAYj9C,GAErBg9C,EAAWp5D,KAAKoqB,GAChBivC,EAAYr5D,KAAKukD,EACnB,CAgBA,IAAK,IAAIrnD,KAdLy7D,EAAYvuC,EAAQwuC,IACtBxuC,EAAOrf,SAAQ,SAAShH,EAAOd,GAC7B,IAAI82D,EAAWP,EAAOv2D,EAAK4wB,EAAQ,GAC/BmmC,EAAaR,EAAOz1D,EAAO8vB,EAAQ,GACvC0wB,EAAM3kD,IAAIm6D,EAAUC,EACtB,IAEErB,EAAYvuC,EAAQyuC,IACtBzuC,EAAOrf,SAAQ,SAAShH,GACtB,IAAIk2D,EAAaT,EAAOz1D,EAAO8vB,EAAQ,GACvC0wB,EAAMzsC,IAAImiD,EACZ,IAGY7vC,EAAQ,CACpB,IAAI8M,EACA7V,IACF6V,EAAQn0B,OAAOi/C,yBAAyB3gC,EAAOnkB,IAG7Cg6B,GAAsB,MAAbA,EAAMt3B,MAGnB2kD,EAAMrnD,GAAKs8D,EAAOpvC,EAAOltB,GAAI22B,EAAQ,GACvC,CAEA,GAAI9wB,OAAOm3D,sBACT,KAAIC,EAAUp3D,OAAOm3D,sBAAsB9vC,GAC3C,IAASltB,EAAI,EAAGA,EAAIi9D,EAAQ58D,OAAQL,IAAK,CAGvC,IAAIk9D,EAASD,EAAQj9D,MACjByF,EAAaI,OAAOi/C,yBAAyB53B,EAAQgwC,KACtCz3D,EAAWC,YAAeu2D,KAG7C5U,EAAM6V,GAAUZ,EAAOpvC,EAAOgwC,GAASvmC,EAAQ,GAC1ClxB,EAAWC,YACdG,OAAOC,eAAeuhD,EAAO6V,EAAQ,CACnCx3D,YAAY,IAGlB,CAfkD,CAkBpD,GAAIu2D,EACF,KAAIkB,EAAmBt3D,OAAOu3D,oBAAoBlwC,GAClD,IAASltB,EAAI,EAAGA,EAAIm9D,EAAiB98D,OAAQL,IAAK,CAChD,IACIyF,EADAgV,EAAe0iD,EAAiBn9D,IAChCyF,EAAaI,OAAOi/C,yBAAyB53B,EAAQzS,KACvChV,EAAWC,aAG7B2hD,EAAM5sC,GAAgB6hD,EAAOpvC,EAAOzS,GAAekc,EAAQ,GAC3D9wB,OAAOC,eAAeuhD,EAAO5sC,EAAc,CACzC/U,YAAY,IAEhB,CAXyD,CAc3D,OAAO2hD,CACT,CAEOiV,CAAOpvC,EAAQyJ,EACxB,CAoBA,SAAS0mC,EAAWlf,GAClB,OAAOt4C,OAAO1C,UAAUtC,SAASoE,KAAKk5C,EACxC,CAkBA,SAASse,EAAiBa,GACxB,IAAIC,EAAQ,GAIZ,OAHID,EAAGp8C,SAAQq8C,GAAS,KACpBD,EAAGE,aAAYD,GAAS,KACxBD,EAAGG,YAAWF,GAAS,KACpBA,CACT,CAGA,OAxCA35C,EAAM85C,eAAiB,SAAwBxwC,GAC7C,GAAe,OAAXA,EACF,OAAO,KAET,IAAIttB,EAAI,WAAa,EAErB,OADAA,EAAEuD,UAAY+pB,EACP,IAAIttB,CACb,EAOAgkB,EAAMy5C,WAAaA,EAKnBz5C,EAAM+4C,SAHN,SAAkBxe,GAChB,MAAoB,kBAANA,GAAoC,kBAAlBkf,EAAWlf,EAC7C,EAMAv6B,EAAM24C,UAHN,SAAmBpe,GACjB,MAAoB,kBAANA,GAAoC,mBAAlBkf,EAAWlf,EAC7C,EAMAv6B,EAAM44C,WAHN,SAAoBre,GAClB,MAAoB,kBAANA,GAAoC,oBAAlBkf,EAAWlf,EAC7C,EAUAv6B,EAAM64C,iBAAmBA,EAElB74C,CACN,CA5PW,GA8PU,kBAAX1kB,GAAuBA,EAAOH,UACvCG,EAAOH,QAAU6kB,EAIZ,EAED,SAAU1kB,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIghD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreK,EAAcF,EAFD,EAAoB,IAMjC4J,EAAY5J,EAFD,EAAoB,IAI/BsO,EAAS,EAAoB,GAE7BtB,EAAUhN,EAAuBsO,GAIjCnO,EAAUH,EAFD,EAAoB,KAM7BoO,EAASpO,EAFD,EAAoB,KAM5BiY,EAAcjY,EAFD,EAAoB,KAIrC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,SAAS2rD,EAAOlc,GACd,OAAOA,aAAgBgR,EAAQnT,SAAWmC,aAAgBsS,EAAO7O,UACnE,CAEA,IAAIxF,EAAS,SAAUke,GAGrB,SAASle,EAAO4G,EAASqI,IAb3B,SAAyBzpD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAcpJ2gD,CAAgB/iD,KAAM08C,GAEtB,IAAI34C,EAdR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAc/NghD,CAA2BhjD,MAAO08C,EAAOa,WAAa36C,OAAOyb,eAAeq+B,IAAS16C,KAAKhC,KAAMsjD,IAa5G,OAXAv/C,EAAMkiD,QAAU0F,EAAO1F,QACnB7/C,MAAMC,QAAQslD,EAAOxF,aACvBpiD,EAAMoiD,UAAYwF,EAAOxF,UAAUvG,QAAO,SAAUuG,EAAWzC,GAE7D,OADAyC,EAAUzC,IAAU,EACbyC,CACT,GAAG,CAAC,IAGNpiD,EAAMu/C,QAAQn/C,iBAAiB,mBAAmB,WAAa,IAC/DJ,EAAM2sD,WACN3sD,EAAM4H,SACC5H,CACT,CAyKA,OAnMF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAO3eF,CAAUxG,EAAQke,GAqBlBxY,EAAa1F,EAAQ,CAAC,CACpB55C,IAAK,aACLc,MAAO,WACL5D,KAAK66D,OAAQ,CACf,GACC,CACD/3D,IAAK,WACLc,MAAO,WACL5D,KAAK66D,OAAQ,EACb76D,KAAK0wD,UACP,GACC,CACD5tD,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,GAC9B,IAAI09D,EAAQ96D,KAAKshD,KAAKrlC,GAClB8+C,EAASnW,EAAekW,EAAO,GAC/Bz7D,EAAQ07D,EAAO,GACfniB,EAASmiB,EAAO,GAEhBC,EAASh7D,KAAKshD,KAAKrlC,EAAQ7e,GAE3BgjB,EADSwkC,EAAeoW,EAAQ,GAClB,GAGlB,GADA3Y,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAO7e,GACpG,MAARgjB,GAAgB/gB,IAAU+gB,GAAQw4B,EAAS,EAAG,CAChD,GAAIv5C,aAAiB0xD,EAAO7O,YAAc9hC,aAAgB2wC,EAAO7O,WAE/D,YADAliD,KAAK0wD,WAGP,GAAIrxD,aAAiBwxD,EAAOvU,QAAS,CACnC,IAAI4T,EAAe7wD,EAAM6wD,aAAa7wD,EAAMjC,UAAU,GACtD,GAAI8yD,GAAgB,IAClB7wD,EAAQA,EAAM4Y,MAAMi4C,EAAe,MACrB9vC,EAEZ,YADApgB,KAAK0wD,UAIX,MAAO,GAAItwC,aAAgBywC,EAAOvU,QAAS,CACzC,IAAI2e,EAAgB76C,EAAK8vC,aAAa,GAClC+K,GAAiB,GACnB76C,EAAKnI,MAAMgjD,EAAgB,EAE/B,CACA,IAAI3tD,EAAM8S,EAAKgQ,SAASlrB,gBAAgB09C,EAAQtG,QAAU,KAAOl8B,EAAKgQ,SAASlrB,KAC/E7F,EAAMytD,aAAa1sC,EAAM9S,GACzBjO,EAAM0Y,QACR,CACA/X,KAAK0wD,UACP,GACC,CACD5tD,IAAK,SACLc,MAAO,WACL,IAAIynB,IAAUxlB,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,KAAmBA,UAAU,GAE7E7F,KAAKsjD,QAAQ93C,aAAa,kBAAmB6f,EAC/C,GACC,CACDvoB,IAAK,WACLc,MAAO,SAAkBqY,EAAO7e,EAAQsmD,EAAQ9/C,IACxB,MAAlB5D,KAAKmmD,WAAsBnmD,KAAKmmD,UAAUzC,MAC9CrB,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAO7e,EAAQsmD,EAAQ9/C,GAChI5D,KAAK0wD,WACP,GACC,CACD5tD,IAAK,WACLc,MAAO,SAAkBqY,EAAOrY,EAAO+/C,GACrC,GAAW,MAAPA,GAAiC,MAAlB3jD,KAAKmmD,WAAsBnmD,KAAKmmD,UAAUviD,GAA7D,CACA,GAAIqY,GAASjc,KAAK5C,SAChB,GAAW,MAAPumD,GAAoF,MAArEhB,EAAYrG,QAAQxiC,MAAMlW,EAAO++C,EAAYrG,QAAQH,MAAM8B,OAAgB,CAC5F,IAAIQ,EAAOkE,EAAYrG,QAAQx4C,OAAO9D,KAAKskD,QAAQC,cACnDvkD,KAAKkM,YAAYuyC,GACN,MAAPkF,GAAe//C,EAAMggD,SAAS,QAChChgD,EAAQA,EAAMzD,MAAM,GAAI,IAE1Bs+C,EAAKqF,SAAS,EAAGlgD,EAAO+/C,EAC1B,KAAO,CACL,IAAIuG,EAAQvH,EAAYrG,QAAQx4C,OAAOF,EAAO+/C,GAC9C3jD,KAAKkM,YAAYg+C,EACnB,MAEA7H,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMic,EAAOrY,EAAO+/C,GAEzH3jD,KAAK0wD,UAhBsE,CAiB7E,GACC,CACD5tD,IAAK,eACLc,MAAO,SAAsB66C,EAAMnxC,GACjC,GAAImxC,EAAK6F,QAAQ19B,QAAU+7B,EAAYrG,QAAQH,MAAMgc,YAAa,CAChE,IAAIH,EAAUrV,EAAYrG,QAAQx4C,OAAO9D,KAAKskD,QAAQC,cACtDyT,EAAQ9rD,YAAYuyC,GACpBA,EAAOuZ,CACT,CACA3V,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,eAAgBF,MAAMgC,KAAKhC,KAAMy+C,EAAMnxC,EACrH,GACC,CACDxK,IAAK,OACLc,MAAO,SAAcqY,GACnB,OAAOjc,KAAK2nD,KAAK1rC,GAAO1C,OAAS,CAAC,MAAO,EAC3C,GACC,CACDzW,IAAK,OACLc,MAAO,SAAcqY,GACnB,OAAIA,IAAUjc,KAAK5C,SACV4C,KAAKshD,KAAKrlC,EAAQ,GAEpBjc,KAAK+vD,WAAW4K,EAAQ1+C,EACjC,GACC,CACDnZ,IAAK,QACLc,MAAO,WAiBL,OAbe,SAASs3D,EAASzc,EAAMxiC,EAAO7e,GAC5C,IAAI+mD,EAAQ,GACR+S,EAAa95D,EASjB,OARAqhD,EAAKruB,SAAS2mC,UAAU96C,EAAO7e,GAAQ,SAAUgnD,EAAOnoC,EAAO7e,GACzDu9D,EAAOvW,GACTD,EAAMtkD,KAAKukD,GACFA,aAAiBzB,EAAYrG,QAAQD,YAC9C8H,EAAQA,EAAM3lC,OAAO08C,EAAS9W,EAAOnoC,EAAOi7C,KAE9CA,GAAc95D,CAChB,IACO+mD,CACT,CACO+W,CAASl7D,KAhBJ6F,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,EACnEA,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKgkD,OAAOC,UAgB1F,GACC,CACDhnD,IAAK,WACLc,MAAO,WACL,IAAIkjD,EAAYjhD,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,GAChF4Z,EAAU5Z,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEhE,IAAf7F,KAAK66D,QACTxY,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,WAAYF,MAAMgC,KAAKhC,KAAM8mD,EAAWrnC,GAChHqnC,EAAU1pD,OAAS,GACrB4C,KAAKimD,QAAQqG,KAAKD,EAAU/P,QAAQpgB,OAAO8xB,gBAAiBlH,EAAWrnC,GAE3E,GACC,CACD3c,IAAK,OACLc,MAAO,SAAcqY,GACnB,OAAOomC,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,OAAQF,MAAMgC,KAAKhC,KAAMic,GAAO9b,MAAM,EAC3H,GACC,CACD2C,IAAK,SACLc,MAAO,SAAgBkjD,GACrB,IAAmB,IAAf9mD,KAAK66D,MAAT,CACA,IAAIhhD,EAASwyC,EAAU/P,QAAQgM,QAAQ+C,KACd,kBAAdvE,IACTjtC,EAASitC,GAEN1gD,MAAMC,QAAQygD,KACjBA,EAAY9mD,KAAKm7D,SAASC,eAExBtU,EAAU1pD,OAAS,GACrB4C,KAAKimD,QAAQqG,KAAKD,EAAU/P,QAAQpgB,OAAO6xB,qBAAsBl0C,EAAQitC,GAE3EzE,EAAK3F,EAAOx8C,UAAUq9C,WAAa36C,OAAOyb,eAAeq+B,EAAOx8C,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM8mD,EAAUtoC,OAAO,KACpHsoC,EAAU1pD,OAAS,GACrB4C,KAAKimD,QAAQqG,KAAKD,EAAU/P,QAAQpgB,OAAO2qB,cAAehtC,EAAQitC,EAbrC,CAejC,KAGKpK,CACT,CA9La,CA8LXiG,EAAYrG,QAAQI,QAEtBA,EAAOkC,SAAW,SAClBlC,EAAOn0B,UAAY,YACnBm0B,EAAOtxC,QAAU,MACjBsxC,EAAO6H,aAAe,QACtB7H,EAAO8H,gBAAkB,CAACiL,EAAQnT,QAASyU,EAAO7O,WAAYwY,EAAYpe,SAE1ExgD,EAAQwgD,QAAUI,CAEX,EAED,SAAUzgD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQu/D,SAAWv/D,EAAQwgD,aAAUlgD,EAErC,IAAIuoD,EAA4B,oBAAXziC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUnT,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXkT,QAAyBlT,EAAI0I,cAAgBwK,QAAUlT,IAAQkT,OAAOhiB,UAAY,gBAAkB8O,CAAK,EAEvQ41C,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIf6uD,EAAUvO,EAFD,EAAoB,KAM7BwO,EAAcxO,EAFD,EAAoB,KAMjCD,EAAWC,EAFD,EAAoB,IAM9BC,EAAeD,EAFD,EAAoB,IAMlCmO,EAAOnO,EAFD,EAAoB,KAM1BE,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAM7B+C,EAAW/C,EAFD,EAAoB,KAM9B4C,EAAW5C,EAFD,EAAoB,IAIlC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS02C,EAAgB12C,EAAKlM,EAAKc,GAAiK,OAApJd,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,CAAK,CAQhN,IAAI22C,GAAQ,EAAIH,EAASlJ,SAAS,kBAE9B+e,EAAW,OAAO78D,KAAK+8D,UAAUC,UAAY,UAAY,UAEzDC,EAAW,SAAUC,GAgBvB,SAASD,EAAStN,EAAOj+C,IA1B3B,SAAyBhO,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CA2BpJ2gD,CAAgB/iD,KAAMy7D,GAEtB,IAAI13D,EA3BR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CA2B/NghD,CAA2BhjD,MAAOy7D,EAASle,WAAa36C,OAAOyb,eAAeo9C,IAAWz5D,KAAKhC,KAAMmuD,EAAOj+C,IAyBvH,OAvBAnM,EAAM43D,SAAW,CAAC,EAClB/4D,OAAOqkB,KAAKljB,EAAMmM,QAAQyrD,UAAU/wD,SAAQ,SAAUjG,IACvC,kBAATA,GAAsD,MAA1BwpD,EAAMjI,OAAOC,WAAsBgI,EAAMjI,OAAOC,UAAgB,OAG5FpiD,EAAMmM,QAAQyrD,SAASh3D,IACzBZ,EAAM63D,WAAW73D,EAAMmM,QAAQyrD,SAASh3D,GAE5C,IACAZ,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK40C,MAAOv/C,SAAU,MAAQw/C,GAC/D/3D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK40C,MAAOjnD,QAAS,KAAMC,QAAS,KAAMwH,OAAQ,OAAQ,WAAa,IACpG,WAAW7d,KAAK+8D,UAAUQ,YAE5Bh4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK+0C,WAAa,CAAEzH,WAAW,GAAQ0H,GACxEl4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAKi6B,QAAU,CAAEqT,WAAW,GAAQ2H,KAErEn4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK+0C,WAAa,CAAEzH,WAAW,EAAMxqB,OAAQ,QAAUkyB,GACxFl4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAKi6B,QAAU,CAAEqT,WAAW,EAAMvqB,OAAQ,QAAUkyB,IAEvFn4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK+0C,WAAa,CAAEzH,WAAW,GAAS4H,GACzEp4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAKi6B,QAAU,CAAEqT,WAAW,GAAS4H,GACtEp4D,EAAM63D,WAAW,CAAE94D,IAAK24D,EAASx0C,KAAK+0C,UAAW3/C,OAAQ,KAAMxH,QAAS,KAAMD,QAAS,KAAM0H,SAAU,MAAQ,CAAEi4C,WAAW,EAAM3b,OAAQ,GAAKqjB,GAC/Il4D,EAAMq4D,SACCr4D,CACT,CA8FA,OAjJF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAO3eF,CAAUuY,EAAUC,GAEpBtZ,EAAaqZ,EAAU,KAAM,CAAC,CAC5B34D,IAAK,QACLc,MAAO,SAAeiL,EAAKwtD,GAEzB,OADAA,EAAUC,EAAUD,IAChB,CAAC,SAAU,UAAW,UAAW,YAAYhF,MAAK,SAAUv0D,GAC9D,QAASu5D,EAAQv5D,KAAS+L,EAAI/L,IAAyB,OAAjBu5D,EAAQv5D,EAChD,KAGOu5D,EAAQv5D,OAAS+L,EAAIyM,OAASzM,EAAImwB,QAC3C,KAkCFojB,EAAaqZ,EAAU,CAAC,CACtB34D,IAAK,aACLc,MAAO,SAAoBd,GACzB,IAAI2c,EAAU5Z,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E0J,EAAU1J,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/Ew2D,EAAUC,EAAUx5D,GACxB,GAAe,MAAXu5D,GAAkC,MAAfA,EAAQv5D,IAC7B,OAAO6iD,EAAM7wB,KAAK,4CAA6CunC,GAE1C,oBAAZ58C,IACTA,EAAU,CAAElQ,QAASkQ,IAEA,oBAAZlQ,IACTA,EAAU,CAAEA,QAASA,IAEvB8sD,GAAU,EAAI7Z,EAASlG,SAAS+f,EAAS58C,EAASlQ,GAClDvP,KAAK27D,SAASU,EAAQv5D,KAAO9C,KAAK27D,SAASU,EAAQv5D,MAAQ,GAC3D9C,KAAK27D,SAASU,EAAQv5D,KAAKjD,KAAKw8D,EAClC,GACC,CACDv5D,IAAK,SACLc,MAAO,WACL,IAAImG,EAAS/J,KAEbA,KAAKmuD,MAAM9oD,KAAKlB,iBAAiB,WAAW,SAAU0K,GACpD,IAAIA,EAAIhF,iBAAR,CACA,IAAIyR,EAAQzM,EAAIyM,OAASzM,EAAImwB,QACzB28B,GAAY5xD,EAAO4xD,SAASrgD,IAAU,IAAIjR,QAAO,SAAUgyD,GAC7D,OAAOZ,EAAS59D,MAAMgR,EAAKwtD,EAC7B,IACA,GAAwB,IAApBV,EAASv+D,OAAb,CACA,IAAI2pD,EAAQh9C,EAAOokD,MAAM3F,eACzB,GAAa,MAATzB,GAAkBh9C,EAAOokD,MAAMhjC,WAAnC,CAEA,IAAIoxC,EAAiBxyD,EAAOokD,MAAMqO,QAAQzV,EAAM9qC,OAC5CwgD,EAAkB7X,EAAe2X,EAAgB,GACjDjb,EAAOmb,EAAgB,GACvB7jB,EAAS6jB,EAAgB,GAEzBC,EAAiB3yD,EAAOokD,MAAMwO,QAAQ5V,EAAM9qC,OAC5C2gD,EAAkBhY,EAAe8X,EAAgB,GACjDG,EAAYD,EAAgB,GAC5BE,EAAcF,EAAgB,GAE9B9O,EAAwB,IAAjB/G,EAAM3pD,OAAe,CAACy/D,EAAWC,GAAe/yD,EAAOokD,MAAMwO,QAAQ5V,EAAM9qC,MAAQ8qC,EAAM3pD,QAChG2/D,EAAQnY,EAAekJ,EAAM,GAC7BkP,EAAUD,EAAM,GAChBE,EAAYF,EAAM,GAElBG,EAAaL,aAAqBla,EAAYrG,QAAQO,KAAOggB,EAAUj5D,QAAQzD,MAAM,EAAG28D,GAAe,GACvGK,EAAaH,aAAmBra,EAAYrG,QAAQO,KAAOmgB,EAAQp5D,QAAQzD,MAAM88D,GAAa,GAC9FG,EAAa,CACf7I,UAA4B,IAAjBxN,EAAM3pD,OACjBmuB,MAAwB,IAAjBw7B,EAAM3pD,QAAgBkkD,EAAKlkD,UAAY,EAC9CsmD,OAAQ35C,EAAOokD,MAAMvE,UAAU7C,GAC/BnO,OAAQA,EACR7O,OAAQmzB,EACRlzB,OAAQmzB,GAEMxB,EAAStE,MAAK,SAAUgF,GACtC,GAAyB,MAArBA,EAAQ9H,WAAqB8H,EAAQ9H,YAAc6I,EAAW7I,UAAW,OAAO,EACpF,GAAqB,MAAjB8H,EAAQ9wC,OAAiB8wC,EAAQ9wC,QAAU6xC,EAAW7xC,MAAO,OAAO,EACxE,GAAsB,MAAlB8wC,EAAQzjB,QAAkByjB,EAAQzjB,SAAWwkB,EAAWxkB,OAAQ,OAAO,EAC3E,GAAIxyC,MAAMC,QAAQg2D,EAAQ3Y,SAExB,GAAI2Y,EAAQ3Y,OAAO2Z,OAAM,SAAU14D,GACjC,OAAkC,MAA3By4D,EAAW1Z,OAAO/+C,EAC3B,IACE,OAAO,OAEJ,GAAgC,WAA5BggD,EAAQ0X,EAAQ3Y,UAEpB9gD,OAAOqkB,KAAKo1C,EAAQ3Y,QAAQ2Z,OAAM,SAAU14D,GAC/C,OAA6B,IAAzB03D,EAAQ3Y,OAAO/+C,GAAkD,MAA3By4D,EAAW1Z,OAAO/+C,IAC/B,IAAzB03D,EAAQ3Y,OAAO/+C,GAAmD,MAA3By4D,EAAW1Z,OAAO/+C,IACtD,EAAIssD,EAAY3U,SAAS+f,EAAQ3Y,OAAO/+C,GAAOy4D,EAAW1Z,OAAO/+C,GAC1E,IACE,OAAO,EAGX,QAAsB,MAAlB03D,EAAQtyB,SAAmBsyB,EAAQtyB,OAAOvrC,KAAK4+D,EAAWrzB,YACxC,MAAlBsyB,EAAQryB,SAAmBqyB,EAAQryB,OAAOxrC,KAAK4+D,EAAWpzB,WACH,IAApDqyB,EAAQ9sD,QAAQvN,KAAK+H,EAAQg9C,EAAOqW,EAC7C,KAEEvuD,EAAItD,gBArD+C,CAFpB,CALD,CA8DlC,GACF,KAGKkwD,CACT,CA5Ie,CA4IbpW,EAAS/I,SAqLX,SAASghB,EAAsBx6D,EAAKwZ,GAClC,IAAIihD,EAEAC,EAAQ16D,IAAQ24D,EAASx0C,KAAKw2C,KAAO,SAAW,SACpD,OAIG/X,EAJI6X,EAAQ,CACbz6D,IAAKA,EACLwZ,SAAUA,EACVD,OAAQ,MACgBmhD,EAAO,MAAO9X,EAAgB6X,EAAO,WAAW,SAAiBxW,GACzF,IAAI9qC,EAAQ8qC,EAAM9qC,MACdnZ,IAAQ24D,EAASx0C,KAAKy2C,QACxBzhD,GAAS8qC,EAAM3pD,OAAS,GAG1B,IAAIugE,EAAkB39D,KAAKmuD,MAAMwO,QAAQ1gD,GAIzC,QAHsB2oC,EAAe+Y,EAAiB,GAC3B,aAELhb,EAAYrG,QAAQG,SACtC35C,IAAQ24D,EAASx0C,KAAKw2C,KACpBnhD,EACFtc,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAG8qC,EAAM3pD,OAAS,EAAGk+D,EAAQhf,QAAQgM,QAAQ+C,MAEnFrrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGq/C,EAAQhf,QAAQgM,QAAQ+C,MAG/D/uC,EACFtc,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAO8qC,EAAM3pD,OAAS,EAAGk+D,EAAQhf,QAAQgM,QAAQ+C,MAE/ErrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ8qC,EAAM3pD,OAAS,EAAGk+D,EAAQhf,QAAQgM,QAAQ+C,OAG7E,EACT,IAAIkS,CACN,CAEA,SAAStB,EAAgBlV,EAAOtnC,GAC9B,KAAoB,IAAhBsnC,EAAM9qC,OAAejc,KAAKmuD,MAAM3E,aAAe,GAAnD,CAEA,IAAIoU,EAAmB59D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAE5CqlC,EADmBsD,EAAegZ,EAAkB,GAC5B,GAExBra,EAAU,CAAC,EACf,GAAuB,IAAnB9jC,EAAQm5B,OAAc,CACxB,IAAIilB,EAAmB79D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,MAAQ,GAEpDT,EADmBopC,EAAeiZ,EAAkB,GAC5B,GAE5B,GAAY,MAARriD,GAAgBA,EAAKpe,SAAW,EAAG,CACrC,IAAI0gE,EAAaxc,EAAKiC,UAClBwa,EAAc/9D,KAAKmuD,MAAMvE,UAAU7C,EAAM9qC,MAAQ,EAAG,GACxDsnC,EAAUqN,EAAKtU,QAAQ71C,WAAW0jB,KAAK2zC,EAAYC,IAAgB,CAAC,CACtE,CACF,CAEA,IAAI3gE,EAAS,kCAAkCoB,KAAKihB,EAAQsqB,QAAU,EAAI,EAC1E/pC,KAAKmuD,MAAMhG,WAAWpB,EAAM9qC,MAAQ7e,EAAQA,EAAQk+D,EAAQhf,QAAQgM,QAAQ+C,MACxEzoD,OAAOqkB,KAAKs8B,GAASnmD,OAAS,GAChC4C,KAAKmuD,MAAMzF,WAAW3B,EAAM9qC,MAAQ7e,EAAQA,EAAQmmD,EAAS+X,EAAQhf,QAAQgM,QAAQ+C,MAEvFrrD,KAAKmuD,MAAMriD,OAxBiD,CAyB9D,CAEA,SAASowD,EAAanV,EAAOtnC,GAE3B,IAAIriB,EAAS,kCAAkCoB,KAAKihB,EAAQuqB,QAAU,EAAI,EAC1E,KAAI+c,EAAM9qC,OAASjc,KAAKmuD,MAAM3E,YAAcpsD,GAA5C,CACA,IAAImmD,EAAU,CAAC,EACXya,EAAa,EAEbC,EAAmBj+D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAE5CqlC,EADmBsD,EAAeqZ,EAAkB,GAC5B,GAE5B,GAAIx+C,EAAQm5B,QAAU0I,EAAKlkD,SAAW,EAAG,CACvC,IAAI8gE,EAAmBl+D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,MAAQ,GAEpDR,EADmBmpC,EAAesZ,EAAkB,GAC5B,GAE5B,GAAIziD,EAAM,CACR,IAAIqiD,EAAaxc,EAAKiC,UAClB4a,EAAcn+D,KAAKmuD,MAAMvE,UAAU7C,EAAM9qC,MAAO,GACpDsnC,EAAUqN,EAAKtU,QAAQ71C,WAAW0jB,KAAK2zC,EAAYK,IAAgB,CAAC,EACpEH,EAAaviD,EAAKre,QACpB,CACF,CACA4C,KAAKmuD,MAAMhG,WAAWpB,EAAM9qC,MAAO7e,EAAQk+D,EAAQhf,QAAQgM,QAAQ+C,MAC/DzoD,OAAOqkB,KAAKs8B,GAASnmD,OAAS,GAChC4C,KAAKmuD,MAAMzF,WAAW3B,EAAM9qC,MAAQ+hD,EAAa,EAAG5gE,EAAQmmD,EAAS+X,EAAQhf,QAAQgM,QAAQ+C,KAtBrC,CAwB5D,CAEA,SAAS8Q,EAAkBpV,GACzB,IAAI5C,EAAQnkD,KAAKmuD,MAAM+M,SAASnU,GAC5BxD,EAAU,CAAC,EACf,GAAIY,EAAM/mD,OAAS,EAAG,CACpB,IAAIghE,EAAeja,EAAM,GAAGZ,UACxB8a,EAAcla,EAAMA,EAAM/mD,OAAS,GAAGmmD,UAC1CA,EAAUqN,EAAKtU,QAAQ71C,WAAW0jB,KAAKk0C,EAAaD,IAAiB,CAAC,CACxE,CACAp+D,KAAKmuD,MAAMhG,WAAWpB,EAAOuU,EAAQhf,QAAQgM,QAAQ+C,MACjDzoD,OAAOqkB,KAAKs8B,GAASnmD,OAAS,GAChC4C,KAAKmuD,MAAMzF,WAAW3B,EAAM9qC,MAAO,EAAGsnC,EAAS+X,EAAQhf,QAAQgM,QAAQ+C,MAEzErrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAOq/C,EAAQhf,QAAQgM,QAAQO,QAC7D7oD,KAAKmuD,MAAMriD,OACb,CAEA,SAASgwD,EAAY/U,EAAOtnC,GAC1B,IAAIuoC,EAAShoD,KAET+mD,EAAM3pD,OAAS,GACjB4C,KAAKmuD,MAAMjI,OAAO8J,SAASjJ,EAAM9qC,MAAO8qC,EAAM3pD,QAEhD,IAAIkhE,EAAc17D,OAAOqkB,KAAKxH,EAAQikC,QAAQ9D,QAAO,SAAU0e,EAAa5a,GAI1E,OAHIf,EAAYrG,QAAQxiC,MAAM4pC,EAAQf,EAAYrG,QAAQH,MAAM8B,SAAW73C,MAAMC,QAAQoZ,EAAQikC,OAAOA,MACtG4a,EAAY5a,GAAUjkC,EAAQikC,OAAOA,IAEhC4a,CACT,GAAG,CAAC,GACJt+D,KAAKmuD,MAAM3D,WAAWzD,EAAM9qC,MAAO,KAAMqiD,EAAahD,EAAQhf,QAAQgM,QAAQ+C,MAG9ErrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGq/C,EAAQhf,QAAQgM,QAAQO,QACjE7oD,KAAKmuD,MAAMriD,QACXlJ,OAAOqkB,KAAKxH,EAAQikC,QAAQ94C,SAAQ,SAAUjG,GACnB,MAArB25D,EAAY35D,KACZyB,MAAMC,QAAQoZ,EAAQikC,OAAO/+C,KACpB,SAATA,GACJqjD,EAAOmG,MAAMzK,OAAO/+C,EAAM8a,EAAQikC,OAAO/+C,GAAO22D,EAAQhf,QAAQgM,QAAQ+C,MAC1E,GACF,CAEA,SAASkT,EAAqBC,GAC5B,MAAO,CACL17D,IAAK24D,EAASx0C,KAAK0pC,IACnBr0C,UAAWkiD,EACX9a,OAAQ,CAAE,cAAc,GACxBn0C,QAAS,SAAiBw3C,GACxB,IAAI4I,EAAYhN,EAAYrG,QAAQxiC,MAAM,cACtCmC,EAAQ8qC,EAAM9qC,MACd7e,EAAS2pD,EAAM3pD,OAEfqhE,EAAwBz+D,KAAKmuD,MAAMjI,OAAO6J,WAAWJ,EAAW1zC,GAChEyiD,EAAyB9Z,EAAe6Z,EAAuB,GAC/D5a,EAAQ6a,EAAuB,GAC/B9lB,EAAS8lB,EAAuB,GAEpC,GAAa,MAAT7a,EAAJ,CACA,IAAI8a,EAAc3+D,KAAKmuD,MAAMyQ,SAAS/a,GAClCj/C,EAAQi/C,EAAMqM,aAAatX,GAAQ,GAAQ,EAC3C53C,EAAM6iD,EAAMqM,aAAayO,EAAc/lB,EAASx7C,GAChD+mD,EAAQN,EAAMP,QAAQhiC,YAAYnhB,MAAMyE,EAAO5D,GAAKiX,MAAM,MAC9D2gC,EAAS,EACTuL,EAAMv5C,SAAQ,SAAU02C,EAAMvkD,GACxByhE,GACF3a,EAAMC,SAASl/C,EAAQg0C,EAAQ+W,EAAUgB,KACzC/X,GAAU+W,EAAUgB,IAAIvzD,OACd,IAANL,EACFkf,GAAS0zC,EAAUgB,IAAIvzD,OAEvBA,GAAUuyD,EAAUgB,IAAIvzD,QAEjBkkD,EAAKuG,WAAW8H,EAAUgB,OACnC9M,EAAMmM,SAASprD,EAAQg0C,EAAQ+W,EAAUgB,IAAIvzD,QAC7Cw7C,GAAU+W,EAAUgB,IAAIvzD,OACd,IAANL,EACFkf,GAAS0zC,EAAUgB,IAAIvzD,OAEvBA,GAAUuyD,EAAUgB,IAAIvzD,QAG5Bw7C,GAAU0I,EAAKlkD,OAAS,CAC1B,IACA4C,KAAKmuD,MAAMjH,OAAOoU,EAAQhf,QAAQgM,QAAQ+C,MAC1CrrD,KAAKmuD,MAAMvF,aAAa3sC,EAAO7e,EAAQk+D,EAAQhf,QAAQgM,QAAQO,OA3BtC,CA4B3B,EAEJ,CAEA,SAASgW,EAAkBnb,GACzB,MAAO,CACL5gD,IAAK4gD,EAAO,GAAG5yC,cACfguD,UAAU,EACVvvD,QAAS,SAAiBw3C,EAAOtnC,GAC/Bzf,KAAKmuD,MAAMzK,OAAOA,GAASjkC,EAAQikC,OAAOA,GAAS4X,EAAQhf,QAAQgM,QAAQ+C,KAC7E,EAEJ,CAEA,SAASiR,EAAUD,GACjB,GAAuB,kBAAZA,GAA2C,kBAAZA,EACxC,OAAOC,EAAU,CAAEx5D,IAAKu5D,IAK1B,GAH0E,YAAlD,qBAAZA,EAA0B,YAAc1X,EAAQ0X,MAC1DA,GAAU,EAAIrL,EAAQ1U,SAAS+f,GAAS,IAEf,kBAAhBA,EAAQv5D,IACjB,GAAgD,MAA5C24D,EAASx0C,KAAKo1C,EAAQv5D,IAAIgO,eAC5BurD,EAAQv5D,IAAM24D,EAASx0C,KAAKo1C,EAAQv5D,IAAIgO,mBACnC,IAA2B,IAAvBurD,EAAQv5D,IAAI1F,OAGrB,OAAO,KAFPi/D,EAAQv5D,IAAMu5D,EAAQv5D,IAAIgO,cAAc7T,WAAW,EAGrD,CAMF,OAJIo/D,EAAQyC,WACVzC,EAAQhB,GAAYgB,EAAQyC,gBACrBzC,EAAQyC,UAEVzC,CACT,CAvYAZ,EAASx0C,KAAO,CACd+0C,UAAW,EACXrL,IAAK,EACLkL,MAAO,GACPkD,OAAQ,GACRtB,KAAM,GACNuB,GAAI,GACJtB,MAAO,GACPuB,KAAM,GACN/d,OAAQ,IAGVua,EAASjQ,SAAW,CAClBmQ,SAAU,CACR,KAAQkD,EAAkB,QAC1B,OAAUA,EAAkB,UAC5B,UAAaA,EAAkB,aAC/B,OAAU,CAER/7D,IAAK24D,EAASx0C,KAAK0pC,IACnBjN,OAAQ,CAAC,aAAc,SAAU,QACjCn0C,QAAS,SAAiBw3C,EAAOtnC,GAC/B,GAAIA,EAAQ80C,WAAgC,IAAnB90C,EAAQm5B,OAAc,OAAO,EACtD54C,KAAKmuD,MAAMzK,OAAO,SAAU,KAAM4X,EAAQhf,QAAQgM,QAAQ+C,KAC5D,GAEF,QAAW,CACTvoD,IAAK24D,EAASx0C,KAAK0pC,IACnBr0C,UAAU,EACVonC,OAAQ,CAAC,aAAc,SAAU,QAEjCn0C,QAAS,SAAiBw3C,EAAOtnC,GAC/B,GAAIA,EAAQ80C,WAAgC,IAAnB90C,EAAQm5B,OAAc,OAAO,EACtD54C,KAAKmuD,MAAMzK,OAAO,SAAU,KAAM4X,EAAQhf,QAAQgM,QAAQ+C,KAC5D,GAEF,oBAAqB,CACnBvoD,IAAK24D,EAASx0C,KAAK+0C,UACnBzH,WAAW,EACXj4C,SAAU,KACV1H,QAAS,KACTC,QAAS,KACTwH,OAAQ,KACRqnC,OAAQ,CAAC,SAAU,QACnB9K,OAAQ,EACRrpC,QAAS,SAAiBw3C,EAAOtnC,GACF,MAAzBA,EAAQikC,OAAO8a,OACjBx+D,KAAKmuD,MAAMzK,OAAO,SAAU,KAAM4X,EAAQhf,QAAQgM,QAAQ+C,MAC1B,MAAvB5rC,EAAQikC,OAAOrxB,MACxBryB,KAAKmuD,MAAMzK,OAAO,QAAQ,EAAO4X,EAAQhf,QAAQgM,QAAQ+C,KAE7D,GAEF,oBAAqBkT,GAAqB,GAC1C,qBAAsBA,GAAqB,GAC3C,aAAc,CACZz7D,IAAK24D,EAASx0C,KAAK0pC,IACnBr0C,UAAU,EACVi4C,WAAW,EACXxqB,OAAQ,MACRx6B,QAAS,SAAiBw3C,GACxB/mD,KAAKmuD,MAAMhG,WAAWpB,EAAM9qC,MAAQ,EAAG,EAAGq/C,EAAQhf,QAAQgM,QAAQ+C,KACpE,GAEF,IAAO,CACLvoD,IAAK24D,EAASx0C,KAAK0pC,IACnBphD,QAAS,SAAiBw3C,GACxB/mD,KAAKmuD,MAAM1H,QAAQyY,SACnB,IAAI93B,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAAO9P,OAAO46C,EAAM3pD,QAAQslC,OAAO,MACvF1iC,KAAKmuD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,MACzDrrD,KAAKmuD,MAAM1H,QAAQyY,SACnBl/D,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGq/C,EAAQhf,QAAQgM,QAAQO,OACnE,GAEF,mBAAoB,CAClB/lD,IAAK24D,EAASx0C,KAAK40C,MACnBtH,WAAW,EACX7Q,OAAQ,CAAC,QACTn4B,OAAO,EACPhc,QAAS,SAAiBw3C,EAAOtnC,GAC/Bzf,KAAKmuD,MAAMzK,OAAO,QAAQ,EAAO4X,EAAQhf,QAAQgM,QAAQ+C,MACrD5rC,EAAQikC,OAAO8a,QACjBx+D,KAAKmuD,MAAMzK,OAAO,UAAU,EAAO4X,EAAQhf,QAAQgM,QAAQ+C,KAE/D,GAEF,kBAAmB,CACjBvoD,IAAK24D,EAASx0C,KAAK40C,MACnBtH,WAAW,EACX7Q,OAAQ,CAAErxB,KAAM,WAChB9iB,QAAS,SAAiBw3C,GACxB,IAAIqY,EAAkBp/D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAC3CojD,EAAkBza,EAAewa,EAAiB,GAClD9d,EAAO+d,EAAgB,GACvBzmB,EAASymB,EAAgB,GAEzB9b,GAAU,EAAIf,EAASlG,SAAS,CAAC,EAAGgF,EAAKiC,UAAW,CAAElxB,KAAM,YAC5D+U,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAAOymB,OAAO,KAAM6gB,GAASlE,OAAOiC,EAAKlkD,SAAWw7C,EAAS,GAAGyG,OAAO,EAAG,CAAEhtB,KAAM,cACtIryB,KAAKmuD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,MACzDrrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGq/C,EAAQhf,QAAQgM,QAAQO,QACjE7oD,KAAKmuD,MAAM/F,gBACb,GAEF,eAAgB,CACdtlD,IAAK24D,EAASx0C,KAAK40C,MACnBtH,WAAW,EACX7Q,OAAQ,CAAC,UACT1Z,OAAQ,KACRz6B,QAAS,SAAiBw3C,EAAOtnC,GAC/B,IAAI6/C,EAAkBt/D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAC3CsjD,EAAkB3a,EAAe0a,EAAiB,GAClDhe,EAAOie,EAAgB,GACvB3mB,EAAS2mB,EAAgB,GAEzBn4B,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAAOymB,OAAO,KAAMjjB,EAAQikC,QAAQrE,OAAOiC,EAAKlkD,SAAWw7C,EAAS,GAAGyG,OAAO,EAAG,CAAE5zB,OAAQ,OAC/IzrB,KAAKmuD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,MACzDrrD,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGq/C,EAAQhf,QAAQgM,QAAQO,QACjE7oD,KAAKmuD,MAAM/F,gBACb,GAEF,gBAAiB,CACftlD,IAAK,IACLyxD,WAAW,EACX7Q,OAAQ,CAAErxB,MAAM,GAChB0X,OAAQ,kCACRx6B,QAAS,SAAiBw3C,EAAOtnC,GAC/B,IAAIriB,EAASqiB,EAAQsqB,OAAO3sC,OAExBoiE,EAAkBx/D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAC3CwjD,EAAkB7a,EAAe4a,EAAiB,GAClDle,EAAOme,EAAgB,GACvB7mB,EAAS6mB,EAAgB,GAE7B,GAAI7mB,EAASx7C,EAAQ,OAAO,EAC5B,IAAIwG,OAAQ,EACZ,OAAQ6b,EAAQsqB,OAAOjyB,QACrB,IAAK,KAAK,IAAK,MACblU,EAAQ,YACR,MACF,IAAK,MACHA,EAAQ,UACR,MACF,IAAK,IAAI,IAAK,IACZA,EAAQ,SACR,MACF,QACEA,EAAQ,UAEZ5D,KAAKmuD,MAAM3D,WAAWzD,EAAM9qC,MAAO,IAAKq/C,EAAQhf,QAAQgM,QAAQ+C,MAChErrD,KAAKmuD,MAAM1H,QAAQyY,SACnB,IAAI93B,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,MAAQ28B,GAAQzsC,OAAO/O,EAAS,GAAGiiD,OAAOiC,EAAKlkD,SAAW,EAAIw7C,GAAQyG,OAAO,EAAG,CAAEhtB,KAAMzuB,IAC5I5D,KAAKmuD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,MACzDrrD,KAAKmuD,MAAM1H,QAAQyY,SACnBl/D,KAAKmuD,MAAMvF,aAAa7B,EAAM9qC,MAAQ7e,EAAQk+D,EAAQhf,QAAQgM,QAAQO,OACxE,GAEF,YAAa,CACX/lD,IAAK24D,EAASx0C,KAAK40C,MACnBtH,WAAW,EACX7Q,OAAQ,CAAC,cACT3Z,OAAQ,QACRC,OAAQ,QACRz6B,QAAS,SAAiBw3C,GACxB,IAAI2Y,EAAkB1/D,KAAKmuD,MAAMqO,QAAQzV,EAAM9qC,OAC3C0jD,EAAmB/a,EAAe8a,EAAiB,GACnDpe,EAAOqe,EAAiB,GACxB/mB,EAAS+mB,EAAiB,GAE1Bv4B,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,MAAQqlC,EAAKlkD,SAAWw7C,EAAS,GAAGyG,OAAO,EAAG,CAAE,aAAc,OAAQlzC,OAAO,GACjInM,KAAKmuD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,KAC3D,GAEF,aAAciS,EAAsB7B,EAASx0C,KAAKw2C,MAAM,GACxD,mBAAoBH,EAAsB7B,EAASx0C,KAAKw2C,MAAM,GAC9D,cAAeH,EAAsB7B,EAASx0C,KAAKy2C,OAAO,GAC1D,oBAAqBJ,EAAsB7B,EAASx0C,KAAKy2C,OAAO,KA0NpE5hE,EAAQwgD,QAAUmf,EAClB3/D,EAAQu/D,SAAWA,CAEZ,EAED,SAAUp/D,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIghD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBigD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEreF,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfwgD,EAAcF,EAFD,EAAoB,IAMjCK,EAASL,EAFD,EAAoB,IAIhC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAI4wD,EAAS,SAAUvc,GAUrB,SAASuc,EAAOtc,EAAS/lC,IAhB3B,SAAyBrb,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAiBpJ2gD,CAAgB/iD,KAAM4/D,GAEtB,IAAI77D,EAjBR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAiB/NghD,CAA2BhjD,MAAO4/D,EAAOriB,WAAa36C,OAAOyb,eAAeuhD,IAAS59D,KAAKhC,KAAMsjD,IAM5G,OAJAv/C,EAAMwZ,UAAYA,EAClBxZ,EAAM8vD,SAAW5uD,SAASk2B,eAAeykC,EAAOhN,UAChD7uD,EAAMu/C,QAAQp3C,YAAYnI,EAAM8vD,UAChC9vD,EAAM1C,QAAU,EACT0C,CACT,CAuHA,OA7IF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU0c,EAAQvc,GAElBjB,EAAawd,EAAQ,KAAM,CAAC,CAC1B98D,IAAK,QACLc,MAAO,WAEP,KAeFw+C,EAAawd,EAAQ,CAAC,CACpB98D,IAAK,SACLc,MAAO,WAEc,MAAf5D,KAAKiqB,QAAgBjqB,KAAKiqB,OAAO1gB,YAAYvJ,KACnD,GACC,CACD8C,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GAC3B,GAAqB,IAAjB5D,KAAKqB,QACP,OAAOghD,EAAKud,EAAO1/D,UAAUq9C,WAAa36C,OAAOyb,eAAeuhD,EAAO1/D,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,GAItH,IAFA,IAAIhD,EAASZ,KACTic,EAAQ,EACK,MAAVrb,GAAkBA,EAAO0jD,QAAQ19B,QAAU+7B,EAAYrG,QAAQH,MAAM4H,YAC1E9nC,GAASrb,EAAOg4C,OAAOh4C,EAAOqpB,QAC9BrpB,EAASA,EAAOqpB,OAEJ,MAAVrpB,IACFZ,KAAKqB,QAAUu+D,EAAOhN,SAASx1D,OAC/BwD,EAAO8vD,WACP9vD,EAAOyvD,SAASp0C,EAAO2jD,EAAOhN,SAASx1D,OAAQuH,EAAMf,GACrD5D,KAAKqB,QAAU,EAEnB,GACC,CACDyB,IAAK,QACLc,MAAO,SAAewb,EAAMw5B,GAC1B,OAAIx5B,IAASpf,KAAK6zD,SAAiB,EAC5BxR,EAAKud,EAAO1/D,UAAUq9C,WAAa36C,OAAOyb,eAAeuhD,EAAO1/D,WAAY,QAASF,MAAMgC,KAAKhC,KAAMof,EAAMw5B,EACrH,GACC,CACD91C,IAAK,SACLc,MAAO,WACL,OAAO5D,KAAKqB,OACd,GACC,CACDyB,IAAK,WACLc,MAAO,WACL,MAAO,CAAC5D,KAAK6zD,SAAU7zD,KAAK6zD,SAAS5kD,KAAK7R,OAC5C,GACC,CACD0F,IAAK,SACLc,MAAO,WACLy+C,EAAKud,EAAO1/D,UAAUq9C,WAAa36C,OAAOyb,eAAeuhD,EAAO1/D,WAAY,SAAUF,MAAMgC,KAAKhC,MACjGA,KAAKiqB,OAAS,IAChB,GACC,CACDnnB,IAAK,UACLc,MAAO,WACL,IAAI5D,KAAKud,UAAU61C,WAA4B,MAAfpzD,KAAKiqB,OAArC,CACA,IAAI4pC,EAAW7zD,KAAK6zD,SAChB9M,EAAQ/mD,KAAKud,UAAUq2C,iBACvBiM,OAAc,EACdj7D,OAAQ,EACR5D,OAAM,EACV,GAAa,MAAT+lD,GAAiBA,EAAMniD,MAAMwa,OAASy0C,GAAY9M,EAAM/lD,IAAIoe,OAASy0C,EAAU,CACjF,IAAI/F,EAAO,CAAC+F,EAAU9M,EAAMniD,MAAMg0C,OAAQmO,EAAM/lD,IAAI43C,QACpDinB,EAAc/R,EAAK,GACnBlpD,EAAQkpD,EAAK,GACb9sD,EAAM8sD,EAAK,EACb,CAEA,KAAiC,MAA1B9tD,KAAKsjD,QAAQj5B,WAAqBrqB,KAAKsjD,QAAQj5B,YAAcrqB,KAAK6zD,UACvE7zD,KAAKsjD,QAAQh6C,WAAW64B,aAAaniC,KAAKsjD,QAAQj5B,UAAWrqB,KAAKsjD,SAEpE,GAAItjD,KAAK6zD,SAAS5kD,OAAS2wD,EAAOhN,SAAU,CAC1C,IAAIhjD,EAAO5P,KAAK6zD,SAAS5kD,KAAKgJ,MAAM2nD,EAAOhN,UAAUv0D,KAAK,IACtD2B,KAAKyb,gBAAgBqnC,EAAOxG,SAC9BujB,EAAc7/D,KAAKyb,KAAK6nC,QACxBtjD,KAAKyb,KAAKqoC,SAAS,EAAGl0C,GACtB5P,KAAK6zD,SAAS5kD,KAAO2wD,EAAOhN,WAE5B5yD,KAAK6zD,SAAS5kD,KAAOW,EACrB5P,KAAKiqB,OAAOkY,aAAawgB,EAAYrG,QAAQx4C,OAAO9D,KAAK6zD,UAAW7zD,MACpEA,KAAK6zD,SAAW5uD,SAASk2B,eAAeykC,EAAOhN,UAC/C5yD,KAAKsjD,QAAQp3C,YAAYlM,KAAK6zD,UAElC,CAEA,GADA7zD,KAAK+X,SACQ,MAATnT,EAAe,CACjB,IAAI2nD,EAAO,CAAC3nD,EAAO5D,GAAKuR,KAAI,SAAUqmC,GACpC,OAAOt4C,KAAKC,IAAI,EAAGD,KAAKE,IAAIq/D,EAAY5wD,KAAK7R,OAAQw7C,EAAS,GAChE,IAEI4T,EAAQ5H,EAAe2H,EAAM,GAKjC,OAHA3nD,EAAQ4nD,EAAM,GACdxrD,EAAMwrD,EAAM,GAEL,CACLwH,UAAW6L,EACX5L,YAAarvD,EACbsvD,QAAS2L,EACT1L,UAAWnzD,EAEf,CA9C2D,CA+C7D,GACC,CACD8B,IAAK,SACLc,MAAO,SAAgBkjD,EAAWrnC,GAChC,IAAI1V,EAAS/J,KAEb,GAAI8mD,EAAUuQ,MAAK,SAAUO,GAC3B,MAAyB,kBAAlBA,EAASjyD,MAA4BiyD,EAASh3D,SAAWmJ,EAAO8pD,QACzE,IAAI,CACF,IAAI9M,EAAQ/mD,KAAKo0D,UACbrN,IAAOtnC,EAAQsnC,MAAQA,EAC7B,CACF,GACC,CACDjkD,IAAK,QACLc,MAAO,WACL,MAAO,EACT,KAGKg8D,CACT,CA5Ia,CA4IXjd,EAAYrG,QAAQG,OAEtBmjB,EAAOhhB,SAAW,SAClBghB,EAAOr3C,UAAY,YACnBq3C,EAAOx0D,QAAU,OACjBw0D,EAAOhN,SAAW,SAGlB92D,EAAQwgD,QAAUsjB,CAEX,EAED,SAAU3jE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAEI++C,EAAcF,EAFD,EAAoB,IAIjCsO,EAAS,EAAoB,GAE7BtB,EAAUhN,EAAuBsO,GAErC,SAAStO,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAIqtC,EAAY,SAAUyjB,GAGxB,SAASzjB,IAGP,OAZJ,SAAyBn6C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMq8C,GAR1B,SAAoCxkC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOq8C,EAAUkB,WAAa36C,OAAOyb,eAAeg+B,IAAYl9C,MAAMa,KAAM6F,WAChH,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU7G,EAAWyjB,GAQdzjB,CACT,CAVgB,CAUdsG,EAAYrG,QAAQD,WAEtBA,EAAUmI,gBAAkB,CAACiL,EAAQnT,QAASyU,EAAO7O,WAAY7F,GAEjEvgD,EAAQwgD,QAAUD,CAEX,EAED,SAAUpgD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQikE,WAAajkE,EAAQkkE,WAAalkE,EAAQmkE,qBAAkB7jE,EAEpE,IAQgC4S,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre2K,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAQnFixD,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAZJ,SAAyB/9D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMigE,GAR1B,SAAoCpoD,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOigE,EAAgB1iB,WAAa36C,OAAOyb,eAAe4hD,IAAkB9gE,MAAMa,KAAM6F,WAC5H,CAcA,OAvBF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU+c,EAAiBC,GAQ3B9d,EAAa6d,EAAiB,CAAC,CAC7Bn9D,IAAK,QACLc,MAAO,SAAe0/C,GACpB,IAAI1/C,EAAQy+C,EAAK4d,EAAgB//D,UAAUq9C,WAAa36C,OAAOyb,eAAe4hD,EAAgB//D,WAAY,QAASF,MAAMgC,KAAKhC,KAAMsjD,GACpI,OAAK1/C,EAAMikD,WAAW,SACtBjkD,EAAQA,EAAM6N,QAAQ,UAAW,IAAIA,QAAQ,UAAW,IACjD,IAAM7N,EAAMqU,MAAM,KAAK1F,KAAI,SAAUwuC,GAC1C,OAAQ,KAAOjjD,SAASijD,GAAWnjD,SAAS,KAAKuC,OAAO,EAC1D,IAAG9B,KAAK,KAJ8BuF,CAKxC,KAGKq8D,CACT,CAtBsB,CAsBpBtd,EAAYrG,QAAQQ,WAAWG,OAE7B+iB,EAAa,IAAIrd,EAAYrG,QAAQQ,WAAWE,MAAM,QAAS,WAAY,CAC7Ep2B,MAAO+7B,EAAYrG,QAAQH,MAAM+B,SAE/B6hB,EAAa,IAAIE,EAAgB,QAAS,QAAS,CACrDr5C,MAAO+7B,EAAYrG,QAAQH,MAAM+B,SAGnCpiD,EAAQmkE,gBAAkBA,EAC1BnkE,EAAQkkE,WAAaA,EACrBlkE,EAAQikE,WAAaA,CAEd,EAED,SAAU9jE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQqkE,SAAWrkE,EAAQwgD,aAAUlgD,EAErC,IAQgC4S,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre8d,EAAU,EAAoB,GAY9BC,EAAO,SAAU3Q,GAGnB,SAAS2Q,IAGP,OAZJ,SAAyBn+D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMqgE,GAR1B,SAAoCxoD,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOqgE,EAAK9iB,WAAa36C,OAAOyb,eAAegiD,IAAOlhE,MAAMa,KAAM6F,WACtG,CA+BA,OAxCF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUmd,EAAM3Q,GAQhBtN,EAAaie,EAAM,CAAC,CAClBv9D,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GAC3B,GAAIe,IAAS3E,KAAKskD,QAAQ1F,WAAah7C,EAAO,OAAOy+C,EAAKge,EAAKngE,UAAUq9C,WAAa36C,OAAOyb,eAAegiD,EAAKngE,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,GAC9JA,EAAQ5D,KAAK0X,YAAYyoD,SAASv8D,GAClC5D,KAAKsjD,QAAQ93C,aAAa,OAAQ5H,EACpC,IACE,CAAC,CACHd,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAIwb,EAAOijC,EAAKge,EAAK9iB,WAAa36C,OAAOyb,eAAegiD,GAAO,SAAUrgE,MAAMgC,KAAKhC,KAAM4D,GAK1F,OAJAA,EAAQ5D,KAAKmgE,SAASv8D,GACtBwb,EAAK5T,aAAa,OAAQ5H,GAC1Bwb,EAAK5T,aAAa,MAAO,uBACzB4T,EAAK5T,aAAa,SAAU,UACrB4T,CACT,GACC,CACDtc,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,OAAOA,EAAQn+C,aAAa,OAC9B,GACC,CACDrC,IAAK,WACLc,MAAO,SAAkB4C,GACvB,OAAO85D,EAAU95D,EAAKxG,KAAKugE,oBAAsB/5D,EAAMxG,KAAKwgE,aAC9D,KAGKH,CACT,CAvCW,GARqBrxD,EAFMoxD,IAEepxD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IA+C5EstC,SAOX,SAASgkB,EAAU95D,EAAKi6D,GACtB,IAAIC,EAASz7D,SAASmE,cAAc,KACpCs3D,EAAO7vD,KAAOrK,EACd,IAAIsL,EAAW4uD,EAAO7vD,KAAK1Q,MAAM,EAAGugE,EAAO7vD,KAAKE,QAAQ,MACxD,OAAO0vD,EAAU1vD,QAAQe,IAAa,CACxC,CAVAuuD,EAAKzhB,SAAW,OAChByhB,EAAKj1D,QAAU,IACfi1D,EAAKG,cAAgB,cACrBH,EAAKE,mBAAqB,CAAC,OAAQ,QAAS,SAAU,OAStDzkE,EAAQwgD,QAAU+jB,EAClBvkE,EAAQqkE,SAAWG,CAEZ,EAED,SAAUrkE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAI+gD,EAA4B,oBAAXziC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUnT,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXkT,QAAyBlT,EAAI0I,cAAgBwK,QAAUlT,IAAQkT,OAAOhiB,UAAY,gBAAkB8O,CAAK,EAEvQozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfw+D,EAAale,EAFD,EAAoB,KAMhCme,EAAane,EAFD,EAAoB,MAIpC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAI9F,IAAI6xD,EAAiB,EAErB,SAASC,EAAoB/7D,EAASy+C,GACpCz+C,EAAQyG,aAAag4C,IAAiD,SAApCz+C,EAAQI,aAAaq+C,IACzD,CAEA,IAAIud,EAAS,WACX,SAASA,EAAO/5C,GACd,IAAIjjB,EAAQ/D,MAVhB,SAAyBkC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAYpJ2gD,CAAgB/iD,KAAM+gE,GAEtB/gE,KAAKgnB,OAASA,EACdhnB,KAAK6c,UAAY5X,SAASmE,cAAc,QACxCpJ,KAAKghE,cACLhhE,KAAKgnB,OAAOhb,MAAMC,QAAU,OAC5BjM,KAAKgnB,OAAO1d,WAAW64B,aAAaniC,KAAK6c,UAAW7c,KAAKgnB,QAEzDhnB,KAAKihE,MAAM98D,iBAAiB,aAAa,WACvCJ,EAAMm9D,cACR,IACAlhE,KAAKihE,MAAM98D,iBAAiB,WAAW,SAAUC,GAC/C,OAAQA,EAAM46B,SAEZ,KAAK2hC,EAAWrkB,QAAQr1B,KAAK40C,MAC3B93D,EAAMm9D,eACN,MAGF,KAAKP,EAAWrkB,QAAQr1B,KAAK83C,OAC3Bh7D,EAAMwhB,SACNnhB,EAAMmH,iBAIZ,IACAvL,KAAKgnB,OAAO7iB,iBAAiB,SAAUnE,KAAKknD,OAAOpa,KAAK9sC,MAC1D,CA2KA,OAzKAoiD,EAAa2e,EAAQ,CAAC,CACpBj+D,IAAK,eACLc,MAAO,WACL5D,KAAK6c,UAAUgpC,UAAU5sB,OAAO,eAEhC6nC,EAAoB9gE,KAAKihE,MAAO,iBAChCH,EAAoB9gE,KAAKkQ,QAAS,cACpC,GACC,CACDpN,IAAK,YACLc,MAAO,SAAmBwO,GACxB,IAAIrI,EAAS/J,KAETsV,EAAOrQ,SAASmE,cAAc,QA+BlC,OA9BAkM,EAAK8V,SAAW,IAChB9V,EAAK9J,aAAa,OAAQ,UAE1B8J,EAAKuwC,UAAUluC,IAAI,kBACfvF,EAAO9G,aAAa,UACtBgK,EAAK9J,aAAa,aAAc4G,EAAOjN,aAAa,UAElDiN,EAAOkP,aACThM,EAAK9J,aAAa,aAAc4G,EAAOkP,aAEzChM,EAAKnR,iBAAiB,SAAS,WAC7B4F,EAAOo3D,WAAW7rD,GAAM,EAC1B,IACAA,EAAKnR,iBAAiB,WAAW,SAAUC,GACzC,OAAQA,EAAM46B,SAEZ,KAAK2hC,EAAWrkB,QAAQr1B,KAAK40C,MAC3B9xD,EAAOo3D,WAAW7rD,GAAM,GACxBlR,EAAMmH,iBACN,MAGF,KAAKo1D,EAAWrkB,QAAQr1B,KAAK83C,OAC3Bh1D,EAAOwb,SACPnhB,EAAMmH,iBAIZ,IAEO+J,CACT,GACC,CACDxS,IAAK,aACLc,MAAO,WACL,IAAIq9D,EAAQh8D,SAASmE,cAAc,QAOnC,OANA63D,EAAMpb,UAAUluC,IAAI,mBACpBspD,EAAMvtD,UAAYktD,EAAWtkB,QAC7B2kB,EAAM71C,SAAW,IACjB61C,EAAMz1D,aAAa,OAAQ,UAC3By1D,EAAMz1D,aAAa,gBAAiB,SACpCxL,KAAK6c,UAAU3Q,YAAY+0D,GACpBA,CACT,GACC,CACDn+D,IAAK,eACLc,MAAO,WACL,IAAIokD,EAAShoD,KAETkQ,EAAUjL,SAASmE,cAAc,QACrC8G,EAAQ21C,UAAUluC,IAAI,qBAGtBzH,EAAQ1E,aAAa,cAAe,QACpC0E,EAAQkb,SAAW,KAGnBlb,EAAQ9H,GAAK,qBAAuBy4D,EACpCA,GAAkB,EAClB7gE,KAAKihE,MAAMz1D,aAAa,gBAAiB0E,EAAQ9H,IAEjDpI,KAAKkQ,QAAUA,EAEf,GAAG/P,MAAM6B,KAAKhC,KAAKgnB,OAAO9W,SAAStF,SAAQ,SAAUwH,GACnD,IAAIkD,EAAO0yC,EAAOoZ,UAAUhvD,GAC5BlC,EAAQhE,YAAYoJ,IACI,IAApBlD,EAAOC,UACT21C,EAAOmZ,WAAW7rD,EAEtB,IACAtV,KAAK6c,UAAU3Q,YAAYgE,EAC7B,GACC,CACDpN,IAAK,cACLc,MAAO,WACL,IAAIykD,EAASroD,KAEb,GAAGG,MAAM6B,KAAKhC,KAAKgnB,OAAOvgB,YAAYmE,SAAQ,SAAU0K,GACtD+yC,EAAOxrC,UAAUrR,aAAa8J,EAAK3Q,KAAM2Q,EAAK1R,MAChD,IACA5D,KAAK6c,UAAUgpC,UAAUluC,IAAI,aAC7B3X,KAAKihE,MAAQjhE,KAAKqhE,aAClBrhE,KAAKshE,cACP,GACC,CACDx+D,IAAK,SACLc,MAAO,WACL,IAAIklD,EAAS9oD,KAGbA,KAAKuhE,QAGLh1D,YAAW,WACT,OAAOu8C,EAAOmY,MAAMn1D,OACtB,GAAG,EACL,GACC,CACDhJ,IAAK,QACLc,MAAO,WACL5D,KAAK6c,UAAUgpC,UAAU9tC,OAAO,eAChC/X,KAAKihE,MAAMz1D,aAAa,gBAAiB,SACzCxL,KAAKkQ,QAAQ1E,aAAa,cAAe,OAC3C,GACC,CACD1I,IAAK,aACLc,MAAO,SAAoB0R,GACzB,IAAIkD,EAAU3S,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAEzEwM,EAAWrS,KAAK6c,UAAUpX,cAAc,gBAC5C,GAAI6P,IAASjD,IACG,MAAZA,GACFA,EAASwzC,UAAU9tC,OAAO,eAEhB,MAARzC,IACJA,EAAKuwC,UAAUluC,IAAI,eACnB3X,KAAKgnB,OAAOsE,cAAgB,GAAGva,QAAQ/O,KAAKsT,EAAKhM,WAAW8mB,SAAU9a,GAClEA,EAAKhK,aAAa,cACpBtL,KAAKihE,MAAMz1D,aAAa,aAAc8J,EAAKnQ,aAAa,eAExDnF,KAAKihE,MAAMv1D,gBAAgB,cAEzB4J,EAAKhK,aAAa,cACpBtL,KAAKihE,MAAMz1D,aAAa,aAAc8J,EAAKnQ,aAAa,eAExDnF,KAAKihE,MAAMv1D,gBAAgB,cAEzB8M,IAAS,CACX,GAAqB,oBAAVzJ,MACT/O,KAAKgnB,OAAOthB,cAAc,IAAIqJ,MAAM,gBAC/B,GAAsE,YAAhD,qBAAVA,MAAwB,YAAc41C,EAAQ51C,QAAsB,CAErF,IAAI3K,EAAQa,SAASiB,YAAY,SACjC9B,EAAM+B,UAAU,UAAU,GAAM,GAChCnG,KAAKgnB,OAAOthB,cAActB,EAC5B,CACApE,KAAKuhE,OACP,CACF,GACC,CACDz+D,IAAK,SACLc,MAAO,WACL,IAAIwO,OAAS,EACb,GAAIpS,KAAKgnB,OAAOsE,eAAiB,EAAG,CAClC,IAAIhW,EAAOtV,KAAK6c,UAAUpX,cAAc,sBAAsB2qB,SAASpwB,KAAKgnB,OAAOsE,eACnFlZ,EAASpS,KAAKgnB,OAAO9W,QAAQlQ,KAAKgnB,OAAOsE,eACzCtrB,KAAKmhE,WAAW7rD,EAClB,MACEtV,KAAKmhE,WAAW,MAElB,IAAIK,EAAqB,MAAVpvD,GAAkBA,IAAWpS,KAAKgnB,OAAOvhB,cAAc,oBACtEzF,KAAKihE,MAAMpb,UAAU5sB,OAAO,YAAauoC,EAC3C,KAGKT,CACT,CA3Ma,GA6MbjlE,EAAQwgD,QAAUykB,CAEX,EAED,SAAU9kE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAEI++C,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAI7BsO,EAAS,EAAoB,GAE7BtB,EAAUhN,EAAuBsO,GAIjCnO,EAAUH,EAFD,EAAoB,KAM7BiY,EAAcjY,EAFD,EAAoB,KAMjCqO,EAAWrO,EAFD,EAAoB,KAM9Bgf,EAAUhf,EAFD,EAAoB,KAM7BI,EAAWJ,EAFD,EAAoB,IAM9Bif,EAAWjf,EAFD,EAAoB,KAM9BK,EAASL,EAFD,EAAoB,IAM5Bkf,EAAclf,EAFD,EAAoB,KAMjCmf,EAAYnf,EAFD,EAAoB,KAM/Bke,EAAale,EAFD,EAAoB,KAIpC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9FssD,EAAQhf,QAAQF,SAAS,CACvB,cAAeqT,EAAQnT,QACvB,oBAAqByU,EAAO7O,WAC5B,cAAeU,EAAQtG,QACvB,kBAAmBoe,EAAYpe,QAC/B,eAAgBwU,EAASxU,QACzB,cAAemlB,EAAQnlB,QACvB,eAAgBuG,EAASvG,QACzB,eAAgBolB,EAASplB,QACzB,aAAcwG,EAAOxG,QAErB,oBAAqBqlB,EAAYrlB,QACjC,kBAAmBslB,EAAUtlB,QAC7B,mBAAoBqkB,EAAWrkB,UAGjCqG,EAAYrG,QAAQF,SAASqT,EAAQnT,QAASsG,EAAQtG,QAASwU,EAASxU,QAASuG,EAASvG,QAASolB,EAASplB,QAASwG,EAAOxG,SAE5HxgD,EAAQwgD,QAAUgf,EAAQhf,OAEnB,EAED,SAAUrgD,EAAQH,EAAS,GAEjC,aAEA8G,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIq4C,EAAW,EAAoB,GAC/B4lB,EAA4B,WAC5B,SAASA,EAAWve,GAChBtjD,KAAKsjD,QAAUA,EAEftjD,KAAKsjD,QAAQrH,EAASqC,UAAY,CAAEG,KAAMz+C,KAC9C,CAiJA,OAhJA4C,OAAOC,eAAeg/D,EAAW3hE,UAAW,UAAW,CAEnD4H,IAAK,WACD,OAAO9H,KAAK0X,WAChB,EACAjV,YAAY,EACZC,cAAc,IAElBm/D,EAAW/9D,OAAS,SAAUF,GAC1B,GAAoB,MAAhB5D,KAAKoL,QACL,MAAM,IAAI6wC,EAASwB,eAAe,mCAEtC,IAAIr+B,EAwBJ,OAvBIhZ,MAAMC,QAAQrG,KAAKoL,UACE,kBAAVxH,IACPA,EAAQA,EAAMkN,cACVhT,SAAS8F,GAAOhG,aAAegG,IAC/BA,EAAQ9F,SAAS8F,KAIrBwb,EADiB,kBAAVxb,EACAqB,SAASmE,cAAcpJ,KAAKoL,QAAQxH,EAAQ,IAE9C5D,KAAKoL,QAAQ2F,QAAQnN,IAAU,EAC7BqB,SAASmE,cAAcxF,GAGvBqB,SAASmE,cAAcpJ,KAAKoL,QAAQ,KAI/CgU,EAAOna,SAASmE,cAAcpJ,KAAKoL,SAEnCpL,KAAKuoB,WACLnJ,EAAKymC,UAAUluC,IAAI3X,KAAKuoB,WAErBnJ,CACX,EACAyiD,EAAW3hE,UAAUs0D,OAAS,WACP,MAAfx0D,KAAKiqB,SACLjqB,KAAKkmD,OAASlmD,KAAKiqB,OAAOi8B,OAElC,EACA2b,EAAW3hE,UAAUygB,MAAQ,WACzB,IAAI2iC,EAAUtjD,KAAKsjD,QAAQ9pB,WAAU,GACrC,OAAOyiB,EAASn4C,OAAOw/C,EAC3B,EACAue,EAAW3hE,UAAU+hC,OAAS,WACP,MAAfjiC,KAAKiqB,QACLjqB,KAAKiqB,OAAO1gB,YAAYvJ,aAErBA,KAAKsjD,QAAQrH,EAASqC,SACjC,EACAujB,EAAW3hE,UAAU8vD,SAAW,SAAU/zC,EAAO7e,GAClC4C,KAAK6sD,QAAQ5wC,EAAO7e,GAC1B2a,QACT,EACA8pD,EAAW3hE,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GAC3D,IAAI66C,EAAOz+C,KAAK6sD,QAAQ5wC,EAAO7e,GAC/B,GAAiD,MAA7C6+C,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAMyQ,OAAiBhpD,EACrD66C,EAAK3jB,KAAKn2B,EAAMf,QAEf,GAAsD,MAAlDq4C,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAMmT,WAAoB,CAC7D,IAAIrlC,EAASgyB,EAASn4C,OAAO9D,KAAKskD,QAAQ19B,OAC1C63B,EAAK3jB,KAAK7Q,GACVA,EAAOy5B,OAAO/+C,EAAMf,EACxB,CACJ,EACAi+D,EAAW3hE,UAAU4jD,SAAW,SAAU7nC,EAAOrY,EAAO+/C,GACpD,IAAIlF,EAAc,MAAPkF,EAAc1H,EAASn4C,OAAO,OAAQF,GAASq4C,EAASn4C,OAAOF,EAAO+/C,GAC7Er2C,EAAMtN,KAAKiY,MAAMgE,GACrBjc,KAAKiqB,OAAOkY,aAAasc,EAAMnxC,EACnC,EACAu0D,EAAW3hE,UAAUo3D,WAAa,SAAUwK,EAAY1K,QACpC,IAAZA,IAAsBA,EAAU,MACjB,MAAfp3D,KAAKiqB,QACLjqB,KAAKiqB,OAAOmG,SAASrY,OAAO/X,MAEhC,IAAI+hE,EAAa,KACjBD,EAAW1xC,SAAS+R,aAAaniC,KAAMo3D,GACxB,MAAXA,IACA2K,EAAa3K,EAAQ9T,SAErBtjD,KAAKsjD,QAAQh6C,YAAcw4D,EAAWxe,SACtCtjD,KAAKsjD,QAAQ93B,aAAeu2C,GAC5BD,EAAWxe,QAAQnhB,aAAaniC,KAAKsjD,QAASye,GAElD/hE,KAAKiqB,OAAS63C,EACd9hE,KAAKw0D,QACT,EACAqN,EAAW3hE,UAAU2sD,QAAU,SAAU5wC,EAAO7e,GAC5C,IAAIwD,EAASZ,KAAKiY,MAAMgE,GAExB,OADArb,EAAOqX,MAAM7a,GACNwD,CACX,EACAihE,EAAW3hE,UAAU9C,OAAS,WAC1B,OAAO,CACX,EACAykE,EAAW3hE,UAAU04C,OAAS,SAAUvzC,GAEpC,YADa,IAATA,IAAmBA,EAAOrF,KAAKiqB,QAChB,MAAfjqB,KAAKiqB,QAAkBjqB,MAAQqF,EACxB,EACJrF,KAAKiqB,OAAOmG,SAASwoB,OAAO54C,MAAQA,KAAKiqB,OAAO2uB,OAAOvzC,EAClE,EACAw8D,EAAW3hE,UAAUwwD,SAAW,SAAUjxC,GAGC,MAAnCzf,KAAKsjD,QAAQrH,EAASqC,kBAEft+C,KAAKsjD,QAAQrH,EAASqC,UAAUwI,SAE/C,EACA+a,EAAW3hE,UAAU6X,OAAS,WACK,MAA3B/X,KAAKsjD,QAAQh6C,YACbtJ,KAAKsjD,QAAQh6C,WAAWC,YAAYvJ,KAAKsjD,SAE7CtjD,KAAKiiC,QACT,EACA4/B,EAAW3hE,UAAUuR,QAAU,SAAU7Q,GAChB,MAAjBA,EAAOqpB,SAEXrpB,EAAOqpB,OAAOkY,aAAaniC,KAAMY,EAAO6a,MACxC7a,EAAOmX,SACX,EACA8pD,EAAW3hE,UAAUkiC,YAAc,SAAUz9B,EAAMf,GAC/C,IAAI6P,EAA8B,kBAAT9O,EAAoBs3C,EAASn4C,OAAOa,EAAMf,GAASe,EAE5E,OADA8O,EAAYhC,QAAQzR,MACbyT,CACX,EACAouD,EAAW3hE,UAAU+X,MAAQ,SAAUgE,EAAOooC,GAC1C,OAAiB,IAAVpoC,EAAcjc,KAAOA,KAAKyb,IACrC,EACAomD,EAAW3hE,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAEnD,EACAoiD,EAAW3hE,UAAU46B,KAAO,SAAUn2B,EAAMf,GACxC,IAAIo0D,EAA0B,kBAATrzD,EAAoBs3C,EAASn4C,OAAOa,EAAMf,GAASe,EAKxE,OAJmB,MAAf3E,KAAKiqB,QACLjqB,KAAKiqB,OAAOkY,aAAa61B,EAASh4D,KAAKyb,MAE3Cu8C,EAAQ9rD,YAAYlM,MACbg4D,CACX,EACA6J,EAAWjjB,SAAW,WACfijB,CACX,CAvJ+B,GAwJ/B/lE,EAAQwgD,QAAUulB,CAGX,EAED,SAAU5lE,EAAQH,EAAS,GAEjC,aAEA8G,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIi4C,EAAe,EAAoB,IACnCC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BE,EAAW,EAAoB,GAC/B+lB,EAAiC,WACjC,SAASA,EAAgB1e,GACrBtjD,KAAKyG,WAAa,CAAC,EACnBzG,KAAKsjD,QAAUA,EACftjD,KAAKsX,OACT,CAwDA,OAvDA0qD,EAAgB9hE,UAAUsjD,UAAY,SAAUA,EAAW5/C,GAEnDA,EACI4/C,EAAU7rC,IAAI3X,KAAKsjD,QAAS1/C,KACS,MAAjC4/C,EAAU5/C,MAAM5D,KAAKsjD,SACrBtjD,KAAKyG,WAAW+8C,EAAU3E,UAAY2E,SAG/BxjD,KAAKyG,WAAW+8C,EAAU3E,YAKzC2E,EAAUzrC,OAAO/X,KAAKsjD,gBACftjD,KAAKyG,WAAW+8C,EAAU3E,UAEzC,EACAmjB,EAAgB9hE,UAAUoX,MAAQ,WAC9B,IAAIvT,EAAQ/D,KACZA,KAAKyG,WAAa,CAAC,EACnB,IAAIA,EAAao1C,EAAaS,QAAQr1B,KAAKjnB,KAAKsjD,SAC5C3F,EAAU7B,EAAQQ,QAAQr1B,KAAKjnB,KAAKsjD,SACpCrc,EAAS8U,EAAQO,QAAQr1B,KAAKjnB,KAAKsjD,SACvC78C,EACK+X,OAAOm/B,GACPn/B,OAAOyoB,GACPr8B,SAAQ,SAAUjG,GACnB,IAAIqS,EAAOilC,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAMmT,WAC3Ct4C,aAAgB6kC,EAAaS,UAC7Bv4C,EAAM0C,WAAWuQ,EAAK6nC,UAAY7nC,EAE1C,GACJ,EACAgrD,EAAgB9hE,UAAUugB,KAAO,SAAU7f,GACvC,IAAImD,EAAQ/D,KACZ4C,OAAOqkB,KAAKjnB,KAAKyG,YAAYmE,SAAQ,SAAU9H,GAC3C,IAAIc,EAAQG,EAAM0C,WAAW3D,GAAKc,MAAMG,EAAMu/C,SAC9C1iD,EAAO8iD,OAAO5gD,EAAKc,EACvB,GACJ,EACAo+D,EAAgB9hE,UAAU+3D,KAAO,SAAUr3D,GACvC,IAAImD,EAAQ/D,KACZA,KAAKygB,KAAK7f,GACVgC,OAAOqkB,KAAKjnB,KAAKyG,YAAYmE,SAAQ,SAAU9H,GAC3CiB,EAAM0C,WAAW3D,GAAKiV,OAAOhU,EAAMu/C,QACvC,IACAtjD,KAAKyG,WAAa,CAAC,CACvB,EACAu7D,EAAgB9hE,UAAU84B,OAAS,WAC/B,IAAIj1B,EAAQ/D,KACZ,OAAO4C,OAAOqkB,KAAKjnB,KAAKyG,YAAYm5C,QAAO,SAAUn5C,EAAY9B,GAE7D,OADA8B,EAAW9B,GAAQZ,EAAM0C,WAAW9B,GAAMf,MAAMG,EAAMu/C,SAC/C78C,CACX,GAAG,CAAC,EACR,EACOu7D,CACX,CA9DoC,GA+DpClmE,EAAQwgD,QAAU0lB,CAGX,EAED,SAAU/lE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAIJ,SAAS3/C,EAAMuhB,EAAM2qB,GAEjB,OADgB3qB,EAAKja,aAAa,UAAY,IAC7B8S,MAAM,OAAO5N,QAAO,SAAU1F,GAC3C,OAAsC,IAA/BA,EAAKoM,QAAQg5B,EAAS,IACjC,GACJ,CAPAnnC,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IAQtD,IAAIq+D,EAAiC,SAAUvkB,GAE3C,SAASukB,IACL,OAAkB,OAAXvkB,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CA8BA,OAjCAq9C,EAAU4kB,EAAiBvkB,GAI3BukB,EAAgBh7C,KAAO,SAAU7H,GAC7B,OAAQA,EAAKja,aAAa,UAAY,IAAI8S,MAAM,OAAO1F,KAAI,SAAU5N,GACjE,OAAOA,EACFsT,MAAM,KACN9X,MAAM,GAAI,GACV9B,KAAK,IACd,GACJ,EACA4jE,EAAgB/hE,UAAUyX,IAAM,SAAUyH,EAAMxb,GAC5C,QAAK5D,KAAKuvD,OAAOnwC,EAAMxb,KAEvB5D,KAAK+X,OAAOqH,GACZA,EAAKymC,UAAUluC,IAAI3X,KAAK8+C,QAAU,IAAMl7C,IACjC,EACX,EACAq+D,EAAgB/hE,UAAU6X,OAAS,SAAUqH,GAC3BvhB,EAAMuhB,EAAMpf,KAAK8+C,SACvBl0C,SAAQ,SAAUjG,GACtBya,EAAKymC,UAAU9tC,OAAOpT,EAC1B,IAC8B,IAA1Bya,EAAKymC,UAAUzoD,QACfgiB,EAAK1T,gBAAgB,QAE7B,EACAu2D,EAAgB/hE,UAAU0D,MAAQ,SAAUwb,GACxC,IACIxb,GADS/F,EAAMuhB,EAAMpf,KAAK8+C,SAAS,IAAM,IAC1B3+C,MAAMH,KAAK8+C,QAAQ1hD,OAAS,GAC/C,OAAO4C,KAAKuvD,OAAOnwC,EAAMxb,GAASA,EAAQ,EAC9C,EACOq+D,CACX,CAnCoC,CAPjB,EAAoB,IA0CxB3lB,SACfxgD,EAAQwgD,QAAU2lB,CAGX,EAED,SAAUhmE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAIJ,SAAS0kB,EAASv9D,GACd,IAAIwlC,EAAQxlC,EAAKsT,MAAM,KACnB2oC,EAAOzW,EACNhqC,MAAM,GACNoS,KAAI,SAAU4vD,GACf,OAAOA,EAAK,GAAGrxD,cAAgBqxD,EAAKhiE,MAAM,EAC9C,IACK9B,KAAK,IACV,OAAO8rC,EAAM,GAAKyW,CACtB,CAXAh+C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IAYtD,IAAIw+D,EAAiC,SAAU1kB,GAE3C,SAAS0kB,IACL,OAAkB,OAAX1kB,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CA0BA,OA7BAq9C,EAAU+kB,EAAiB1kB,GAI3B0kB,EAAgBn7C,KAAO,SAAU7H,GAC7B,OAAQA,EAAKja,aAAa,UAAY,IAAI8S,MAAM,KAAK1F,KAAI,SAAU3O,GAE/D,OADUA,EAAMqU,MAAM,KACX,GAAGH,MAClB,GACJ,EACAsqD,EAAgBliE,UAAUyX,IAAM,SAAUyH,EAAMxb,GAC5C,QAAK5D,KAAKuvD,OAAOnwC,EAAMxb,KAGvBwb,EAAKpT,MAAMk2D,EAASliE,KAAK8+C,UAAYl7C,GAC9B,EACX,EACAw+D,EAAgBliE,UAAU6X,OAAS,SAAUqH,GAEzCA,EAAKpT,MAAMk2D,EAASliE,KAAK8+C,UAAY,GAChC1/B,EAAKja,aAAa,UACnBia,EAAK1T,gBAAgB,QAE7B,EACA02D,EAAgBliE,UAAU0D,MAAQ,SAAUwb,GAExC,IAAIxb,EAAQwb,EAAKpT,MAAMk2D,EAASliE,KAAK8+C,UACrC,OAAO9+C,KAAKuvD,OAAOnwC,EAAMxb,GAASA,EAAQ,EAC9C,EACOw+D,CACX,CA/BoC,CAXjB,EAAoB,IA0CxB9lB,SACfxgD,EAAQwgD,QAAU8lB,CAGX,EAED,SAAUnmE,EAAQH,EAASqhD,GAEjC,aAGAv6C,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIw+C,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfkgE,EAAQ,WACV,SAASA,EAAMlU,EAAOj+C,IAHxB,SAAyBhO,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAIpJ2gD,CAAgB/iD,KAAMqiE,GAEtBriE,KAAKmuD,MAAQA,EACbnuD,KAAKkQ,QAAUA,EACflQ,KAAK+6C,QAAU,CAAC,CAClB,CAsBA,OApBAqH,EAAaigB,EAAO,CAAC,CACnBv/D,IAAK,OACLc,MAAO,WACL,IAAIG,EAAQ/D,KAEZ4C,OAAOqkB,KAAKjnB,KAAKkQ,QAAQ6qC,SAASnwC,SAAQ,SAAUjG,GACvB,MAAvBZ,EAAMg3C,QAAQp2C,IAChBZ,EAAMwiD,UAAU5hD,EAEpB,GACF,GACC,CACD7B,IAAK,YACLc,MAAO,SAAmBe,GACxB,IAAIknD,EAAc7rD,KAAKmuD,MAAMz2C,YAAY+zC,OAAO,WAAa9mD,GAE7D,OADA3E,KAAK+6C,QAAQp2C,GAAQ,IAAIknD,EAAY7rD,KAAKmuD,MAAOnuD,KAAKkQ,QAAQ6qC,QAAQp2C,IAAS,CAAC,GACzE3E,KAAK+6C,QAAQp2C,EACtB,KAGK09D,CACT,CA9BY,GAgCZA,EAAM7W,SAAW,CACfzQ,QAAS,CAAC,GAEZsnB,EAAMC,OAAS,CACb,QAAWD,GAGbvmE,EAAQwgD,QAAU+lB,CAEX,EAED,SAAUpmE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIw+C,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreK,EAAcF,EAFD,EAAoB,IAMjCK,EAASL,EAFD,EAAoB,IAIhC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAIuzD,EAAa,SAEb9lB,EAAQ,SAAU4G,GAGpB,SAAS5G,EAAMr9B,IAXjB,SAAyBld,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAYpJ2gD,CAAgB/iD,KAAMy8C,GAEtB,IAAI14C,EAZR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAY/NghD,CAA2BhjD,MAAOy8C,EAAMc,WAAa36C,OAAOyb,eAAeo+B,IAAQz6C,KAAKhC,KAAMof,IAY1G,OAVArb,EAAMy+D,YAAcv9D,SAASmE,cAAc,QAC3CrF,EAAMy+D,YAAYh3D,aAAa,mBAAmB,GAClD,GAAGrL,MAAM6B,KAAK+B,EAAMu/C,QAAQv9B,YAAYnb,SAAQ,SAAU63D,GACxD1+D,EAAMy+D,YAAYt2D,YAAYu2D,EAChC,IACA1+D,EAAM2+D,UAAYz9D,SAASk2B,eAAeonC,GAC1Cx+D,EAAM4+D,WAAa19D,SAASk2B,eAAeonC,GAC3Cx+D,EAAMu/C,QAAQp3C,YAAYnI,EAAM2+D,WAChC3+D,EAAMu/C,QAAQp3C,YAAYnI,EAAMy+D,aAChCz+D,EAAMu/C,QAAQp3C,YAAYnI,EAAM4+D,YACzB5+D,CACT,CAgEA,OAvFF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAK3eF,CAAUzG,EAAO4G,GAoBjBjB,EAAa3F,EAAO,CAAC,CACnB35C,IAAK,QACLc,MAAO,SAAewb,EAAMw5B,GAC1B,OAAIx5B,IAASpf,KAAK0iE,UAAkB,EAChCtjD,IAASpf,KAAK2iE,WAAmB,EAC9BtgB,EAAK5F,EAAMv8C,UAAUq9C,WAAa36C,OAAOyb,eAAeo+B,EAAMv8C,WAAY,QAASF,MAAMgC,KAAKhC,KAAMof,EAAMw5B,EACnH,GACC,CACD91C,IAAK,UACLc,MAAO,SAAiBwb,GACtB,IAAI2nC,OAAQ,EACR8M,OAAW,EACXjkD,EAAOwP,EAAKnQ,KAAKgJ,MAAMsqD,GAAYlkE,KAAK,IAC5C,GAAI+gB,IAASpf,KAAK0iE,UAChB,GAAI1iE,KAAKwb,gBAAgBsnC,EAAOxG,QAAS,CACvC,IAAIsmB,EAAa5iE,KAAKwb,KAAKpe,SAC3B4C,KAAKwb,KAAKsoC,SAAS8e,EAAYhzD,GAC/Bm3C,EAAQ,CACNiN,UAAWh0D,KAAKwb,KAAK8nC,QACrB2Q,YAAa2O,EAAahzD,EAAKxS,OAEnC,MACEy2D,EAAW5uD,SAASk2B,eAAevrB,GACnC5P,KAAKiqB,OAAOkY,aAAawgB,EAAYrG,QAAQx4C,OAAO+vD,GAAW7zD,MAC/D+mD,EAAQ,CACNiN,UAAWH,EACXI,YAAarkD,EAAKxS,aAGbgiB,IAASpf,KAAK2iE,aACnB3iE,KAAKyb,gBAAgBqnC,EAAOxG,SAC9Bt8C,KAAKyb,KAAKqoC,SAAS,EAAGl0C,GACtBm3C,EAAQ,CACNiN,UAAWh0D,KAAKyb,KAAK6nC,QACrB2Q,YAAarkD,EAAKxS,UAGpBy2D,EAAW5uD,SAASk2B,eAAevrB,GACnC5P,KAAKiqB,OAAOkY,aAAawgB,EAAYrG,QAAQx4C,OAAO+vD,GAAW7zD,KAAKyb,MACpEsrC,EAAQ,CACNiN,UAAWH,EACXI,YAAarkD,EAAKxS,UAKxB,OADAgiB,EAAKnQ,KAAOszD,EACLxb,CACT,GACC,CACDjkD,IAAK,SACLc,MAAO,SAAgBkjD,EAAWrnC,GAChC,IAAI1V,EAAS/J,KAEb8mD,EAAUl8C,SAAQ,SAAUgtD,GAC1B,GAAsB,kBAAlBA,EAASjyD,OAA6BiyD,EAASh3D,SAAWmJ,EAAO24D,WAAa9K,EAASh3D,SAAWmJ,EAAO44D,YAAa,CACxH,IAAI5b,EAAQh9C,EAAOqqD,QAAQwD,EAASh3D,QAChCmmD,IAAOtnC,EAAQsnC,MAAQA,EAC7B,CACF,GACF,KAGKtK,CACT,CApFY,CAoFVkG,EAAYrG,QAAQG,OAEtB3gD,EAAQwgD,QAAUG,CAEX,EAED,SAAUxgD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQ+mE,WAAa/mE,EAAQgnE,WAAahnE,EAAQinE,oBAAiB3mE,EAEnE,IAIgC4S,EAJ5Bi+C,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAEnF28C,EAAS,CACX/kC,MAAO+7B,EAAYrG,QAAQH,MAAM8B,MACjCkI,UAAW,CAAC,QAAS,SAAU,YAG7B4c,EAAiB,IAAIpgB,EAAYrG,QAAQQ,WAAWC,UAAU,QAAS,QAAS4O,GAChFmX,EAAa,IAAIngB,EAAYrG,QAAQQ,WAAWE,MAAM,QAAS,WAAY2O,GAC3EkX,EAAa,IAAIlgB,EAAYrG,QAAQQ,WAAWG,MAAM,QAAS,aAAc0O,GAEjF7vD,EAAQinE,eAAiBA,EACzBjnE,EAAQgnE,WAAaA,EACrBhnE,EAAQ+mE,WAAaA,CAEd,EAED,SAAU5mE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQknE,gBAAkBlnE,EAAQmnE,qBAAkB7mE,EAEpD,IAMgC4S,EAN5Bi+C,EAAa,EAAoB,GAEjCtK,GAI4B3zC,EAJSi+C,IAIYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAFnFk0D,EAAS,EAAoB,IAI7BD,EAAkB,IAAItgB,EAAYrG,QAAQQ,WAAWE,MAAM,aAAc,QAAS,CACpFp2B,MAAO+7B,EAAYrG,QAAQH,MAAM+B,SAE/B8kB,EAAkB,IAAIE,EAAOjD,gBAAgB,aAAc,mBAAoB,CACjFr5C,MAAO+7B,EAAYrG,QAAQH,MAAM+B,SAGnCpiD,EAAQmnE,gBAAkBA,EAC1BnnE,EAAQknE,gBAAkBA,CAEnB,EAED,SAAU/mE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQqnE,eAAiBrnE,EAAQsnE,eAAiBtnE,EAAQunE,wBAAqBjnE,EAE/E,IAIgC4S,EAJ5Bi+C,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAEnF28C,EAAS,CACX/kC,MAAO+7B,EAAYrG,QAAQH,MAAM8B,MACjCkI,UAAW,CAAC,QAGVkd,EAAqB,IAAI1gB,EAAYrG,QAAQQ,WAAWC,UAAU,YAAa,MAAO4O,GACtFyX,EAAiB,IAAIzgB,EAAYrG,QAAQQ,WAAWE,MAAM,YAAa,eAAgB2O,GACvFwX,EAAiB,IAAIxgB,EAAYrG,QAAQQ,WAAWG,MAAM,YAAa,YAAa0O,GAExF7vD,EAAQunE,mBAAqBA,EAC7BvnE,EAAQsnE,eAAiBA,EACzBtnE,EAAQqnE,eAAiBA,CAElB,EAED,SAAUlnE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwnE,UAAYxnE,EAAQynE,eAAYnnE,EAExC,IAQgC4S,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre2K,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAQnF28C,EAAS,CACX/kC,MAAO+7B,EAAYrG,QAAQH,MAAM+B,OACjCiI,UAAW,CAAC,QAAS,cAGnBmd,EAAY,IAAI3gB,EAAYrG,QAAQQ,WAAWE,MAAM,OAAQ,UAAW2O,GAExE6X,EAAsB,SAAUtD,GAGlC,SAASsD,IAGP,OAnBJ,SAAyBthE,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAiBpJ2gD,CAAgB/iD,KAAMwjE,GAf1B,SAAoC3rD,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAiBpOghD,CAA2BhjD,MAAOwjE,EAAoBjmB,WAAa36C,OAAOyb,eAAemlD,IAAsBrkE,MAAMa,KAAM6F,WACpI,CASA,OAzBF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAU3eF,CAAUsgB,EAAqBtD,GAQ/B9d,EAAaohB,EAAqB,CAAC,CACjC1gE,IAAK,QACLc,MAAO,SAAewb,GACpB,OAAOijC,EAAKmhB,EAAoBtjE,UAAUq9C,WAAa36C,OAAOyb,eAAemlD,EAAoBtjE,WAAY,QAASF,MAAMgC,KAAKhC,KAAMof,GAAM3N,QAAQ,QAAS,GAChK,KAGK+xD,CACT,CAjB0B,CAiBxB7gB,EAAYrG,QAAQQ,WAAWG,OAE7BsmB,EAAY,IAAIC,EAAoB,OAAQ,cAAe7X,GAE/D7vD,EAAQynE,UAAYA,EACpBznE,EAAQwnE,UAAYA,CAEb,EAED,SAAUrnE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQ2nE,UAAY3nE,EAAQ4nE,eAAYtnE,EAExC,IAIgC4S,EAJ5Bi+C,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAEnF00D,EAAY,IAAI/gB,EAAYrG,QAAQQ,WAAWE,MAAM,OAAQ,UAAW,CAC1Ep2B,MAAO+7B,EAAYrG,QAAQH,MAAM+B,OACjCiI,UAAW,CAAC,QAAS,QAAS,UAE5Bsd,EAAY,IAAI9gB,EAAYrG,QAAQQ,WAAWG,MAAM,OAAQ,YAAa,CAC5Er2B,MAAO+7B,EAAYrG,QAAQH,MAAM+B,OACjCiI,UAAW,CAAC,OAAQ,OAAQ,UAG9BrqD,EAAQ4nE,UAAYA,EACpB5nE,EAAQ2nE,UAAYA,CAEb,EAED,SAAUxnE,EAAQH,EAAS,GAEjC,aAGAG,EAAOH,QAAU,CACf,MAAS,CACP,GAAI,EAAoB,IACxB,OAAU,EAAoB,IAC9B,MAAS,EAAoB,IAC7B,QAAW,EAAoB,KAEjC,WAAc,EAAoB,IAClC,WAAc,EAAoB,IAClC,KAAQ,EAAoB,IAC5B,MAAS,EAAoB,IAC7B,KAAQ,EAAoB,IAC5B,aAAc,EAAoB,IAClC,MAAS,EAAoB,IAC7B,UAAa,CACX,GAAI,EAAoB,IACxB,IAAO,EAAoB,KAE7B,MAAS,CACP,OAAU,EAAoB,IAC9B,KAAQ,EAAoB,IAC5B,KAAQ,EAAoB,IAC5B,MAAS,EAAoB,KAE/B,QAAW,EAAoB,IAC/B,OAAU,CACR,EAAK,EAAoB,IACzB,EAAK,EAAoB,KAE3B,OAAU,EAAoB,IAC9B,MAAS,EAAoB,IAC7B,OAAU,CACR,KAAM,EAAoB,IAC1B,KAAM,EAAoB,KAE5B,KAAQ,EAAoB,IAC5B,KAAQ,CACN,QAAW,EAAoB,IAC/B,OAAU,EAAoB,KAC9B,MAAS,EAAoB,MAE/B,OAAU,CACR,IAAO,EAAoB,KAC3B,MAAS,EAAoB,MAE/B,OAAU,EAAoB,KAC9B,UAAa,EAAoB,KACjC,MAAS,EAAoB,KAGxB,EAED,SAAUG,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQ6nE,mBAAqB7nE,EAAQwgD,aAAUlgD,EAE/C,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfwgD,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAQjC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAQ9F,IAAI40D,EAAU,SAAUlI,GAGtB,SAASkI,EAAQzV,EAAOj+C,IAT1B,SAAyBhO,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAM4jE,GAEtB,IAAI7/D,EAVR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAU/NghD,CAA2BhjD,MAAO4jE,EAAQrmB,WAAa36C,OAAOyb,eAAeulD,IAAU5hE,KAAKhC,KAAMmuD,EAAOj+C,IAkBrH,OAhBAnM,EAAM8/D,aAAe,EACrB9/D,EAAM+/D,cAAe,EACrB//D,EAAMsjD,QACNtjD,EAAMoqD,MAAMnzC,GAAGsgD,EAAQhf,QAAQpgB,OAAOwqB,eAAe,SAAU2G,EAAWjmB,EAAO8kB,EAAUryC,GACrFwzC,IAAciO,EAAQhf,QAAQpgB,OAAOyqB,aAAe5iD,EAAM+/D,eACzD//D,EAAMmM,QAAQ6zD,UAAYlqD,IAAWyhD,EAAQhf,QAAQgM,QAAQ+C,KAGhEtnD,EAAMw9C,UAAUna,GAFhBrjC,EAAMigE,OAAO58B,EAAO8kB,GAIxB,IACAnoD,EAAMoqD,MAAM7H,SAASsV,WAAW,CAAE94D,IAAK,IAAKg8D,UAAU,GAAQ/6D,EAAMkgE,KAAKn3B,KAAK/oC,IAC9EA,EAAMoqD,MAAM7H,SAASsV,WAAW,CAAE94D,IAAK,IAAKg8D,UAAU,EAAMxiD,UAAU,GAAQvY,EAAMmgE,KAAKp3B,KAAK/oC,IAC1F,OAAOvF,KAAK+8D,UAAUC,WACxBz3D,EAAMoqD,MAAM7H,SAASsV,WAAW,CAAE94D,IAAK,IAAKg8D,UAAU,GAAQ/6D,EAAMmgE,KAAKp3B,KAAK/oC,IAEzEA,CACT,CAuEA,OAlGF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU0gB,EAASlI,GA0BnBtZ,EAAawhB,EAAS,CAAC,CACrB9gE,IAAK,SACLc,MAAO,SAAgBiW,EAAQmnB,GAC7B,GAAkC,IAA9BhhC,KAAK+0B,MAAMlb,GAAQzc,OAAvB,CACA,IAAIgqC,EAAQpnC,KAAK+0B,MAAMlb,GAAQN,MAC/BvZ,KAAK+0B,MAAMiM,GAAMnhC,KAAKunC,GACtBpnC,KAAK6jE,aAAe,EACpB7jE,KAAK8jE,cAAe,EACpB9jE,KAAKmuD,MAAMgR,eAAe/3B,EAAMvtB,GAASyhD,EAAQhf,QAAQgM,QAAQ+C,MACjErrD,KAAK8jE,cAAe,EACpB,IAAI7nD,EAAQ0nD,EAAmBv8B,EAAMvtB,IACrC7Z,KAAKmuD,MAAMvF,aAAa3sC,EARmB,CAS7C,GACC,CACDnZ,IAAK,QACLc,MAAO,WACL5D,KAAK+0B,MAAQ,CAAEkvC,KAAM,GAAIC,KAAM,GACjC,GACC,CACDphE,IAAK,SACLc,MAAO,WACL5D,KAAK6jE,aAAe,CACtB,GACC,CACD/gE,IAAK,SACLc,MAAO,SAAgBugE,EAAajY,GAClC,GAA+B,IAA3BiY,EAAYhlB,IAAI/hD,OAApB,CACA4C,KAAK+0B,MAAMmvC,KAAO,GAClB,IAAIE,EAAYpkE,KAAKmuD,MAAMxE,cAAcx/B,KAAK+hC,GAC1CmY,EAAY9lC,KAAKC,MACrB,GAAIx+B,KAAK6jE,aAAe7jE,KAAKkQ,QAAQ4+B,MAAQu1B,GAAarkE,KAAK+0B,MAAMkvC,KAAK7mE,OAAS,EAAG,CACpF,IAAIgqC,EAAQpnC,KAAK+0B,MAAMkvC,KAAK1qD,MAC5B6qD,EAAYA,EAAUlkB,QAAQ9Y,EAAM68B,MACpCE,EAAc/8B,EAAM88B,KAAKhkB,QAAQikB,EACnC,MACEnkE,KAAK6jE,aAAeQ,EAEtBrkE,KAAK+0B,MAAMkvC,KAAKpkE,KAAK,CACnBqkE,KAAMC,EACNF,KAAMG,IAEJpkE,KAAK+0B,MAAMkvC,KAAK7mE,OAAS4C,KAAKkQ,QAAQo0D,UACxCtkE,KAAK+0B,MAAMkvC,KAAKt5D,OAhBsB,CAkB1C,GACC,CACD7H,IAAK,OACLc,MAAO,WACL5D,KAAKyoD,OAAO,OAAQ,OACtB,GACC,CACD3lD,IAAK,YACLc,MAAO,SAAmBwjC,GACxBpnC,KAAK+0B,MAAMkvC,KAAKr5D,SAAQ,SAAU69C,GAChCA,EAAOwb,KAAO78B,EAAMma,UAAUkH,EAAOwb,MAAM,GAC3Cxb,EAAOyb,KAAO98B,EAAMma,UAAUkH,EAAOyb,MAAM,EAC7C,IACAlkE,KAAK+0B,MAAMmvC,KAAKt5D,SAAQ,SAAU69C,GAChCA,EAAOwb,KAAO78B,EAAMma,UAAUkH,EAAOwb,MAAM,GAC3Cxb,EAAOyb,KAAO98B,EAAMma,UAAUkH,EAAOyb,MAAM,EAC7C,GACF,GACC,CACDphE,IAAK,OACLc,MAAO,WACL5D,KAAKyoD,OAAO,OAAQ,OACtB,KAGKmb,CACT,CAjGc,CAVCnhB,EAFD,EAAoB,IA6GvBnG,SAsBX,SAASqnB,EAAmBv8B,GAC1B,IAAIm9B,EAAen9B,EAAMwY,QAAO,SAAUxiD,EAAQ4hD,GAEhD,OADA5hD,GAAU4hD,EAAG7yC,QAAU,CAEzB,GAAG,GACCq4D,EAAcp9B,EAAMhqC,SAAWmnE,EAInC,OAvBF,SAA+Bn9B,GAC7B,IAAIkY,EAASlY,EAAM+X,IAAI/X,EAAM+X,IAAI/hD,OAAS,GAC1C,OAAc,MAAVkiD,IACiB,MAAjBA,EAAO5c,OACuB,kBAAlB4c,EAAO5c,QAAuB4c,EAAO5c,OAAOkhB,SAAS,MAE5C,MAArBtE,EAAO74C,YACF7D,OAAOqkB,KAAKq4B,EAAO74C,YAAY4wD,MAAK,SAAUrgD,GACnD,OAA2E,MAApE2rC,EAAYrG,QAAQxiC,MAAM9C,EAAM2rC,EAAYrG,QAAQH,MAAM8B,MACnE,IAGJ,CAQMwmB,CAAsBr9B,KACxBo9B,GAAe,GAEVA,CACT,CA9BAZ,EAAQpY,SAAW,CACjB1c,MAAO,IACPw1B,SAAU,IACVP,UAAU,GA6BZjoE,EAAQwgD,QAAUsnB,EAClB9nE,EAAQ6nE,mBAAqBA,CAEtB,EAED,SAAU1nE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQ4oE,iBAActoE,EAExC,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreE,EAAWC,EAFD,EAAoB,IAM9BC,EAAeD,EAFD,EAAoB,IAMlC4J,EAAY5J,EAFD,EAAoB,IAM/Bke,EAAale,EAFD,EAAoB,KAMhCgD,EAAUhD,EAFD,EAAoB,KAM7BkiB,EAAgBliB,EAFD,EAAoB,KAMnCmiB,EAAeniB,EAFD,EAAoB,KAMlCoiB,EAAWpiB,EAFD,EAAoB,KAM9BqiB,EAAYriB,EAFD,EAAoB,KAInC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAI2hB,EAAS,EAAC,EAAO,SAAU,QAAS,WAEpCC,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEhYC,EAAQ,EAAC,EAAO,QAAS,aAEzBC,EAAU,CAAC,IAAK,IAAK,KAAK,GAE1BC,EAAQ,CAAC,SAAS,EAAO,QAAS,QAElCC,EAAY,SAAUC,GAGxB,SAASD,EAAUjX,EAAOj+C,GACxB6yC,EAAgB/iD,KAAMolE,GAEtB,IAAIrhE,EAAQi/C,EAA2BhjD,MAAOolE,EAAU7nB,WAAa36C,OAAOyb,eAAe+mD,IAAYpjE,KAAKhC,KAAMmuD,EAAOj+C,IAkBzH,OADAi+C,EAAMlI,QAAQyN,UAAU,QAASzuD,SAASiP,MAf3B,SAASoxD,EAASn2D,GAC/B,IAAKlK,SAASiP,KAAKqO,SAAS4rC,EAAM9oD,MAChC,OAAOJ,SAASiP,KAAKN,oBAAoB,QAAS0xD,GAE/B,MAAjBvhE,EAAMwhE,SAAoBxhE,EAAMwhE,QAAQlgE,KAAKkd,SAASpT,EAAEvO,SAAWqE,SAAS+lB,gBAAkBjnB,EAAMwhE,QAAQC,SAAYzhE,EAAMoqD,MAAMhjC,YACtIpnB,EAAMwhE,QAAQnvD,OAEK,MAAjBrS,EAAM0hE,SACR1hE,EAAM0hE,QAAQ76D,SAAQ,SAAU86D,GACzBA,EAAO7oD,UAAU0F,SAASpT,EAAEvO,SAC/B8kE,EAAOnE,OAEX,GAEJ,IAEOx9D,CACT,CAwEA,OAhGAm/C,EAAUkiB,EAAWC,GA0BrBjjB,EAAagjB,EAAW,CAAC,CACvBtiE,IAAK,YACLc,MAAO,SAAmBe,GACxB,IAAI1I,EAASomD,EAAK+iB,EAAUllE,UAAUq9C,WAAa36C,OAAOyb,eAAe+mD,EAAUllE,WAAY,YAAaF,MAAMgC,KAAKhC,KAAM2E,GAI7H,MAHa,YAATA,GACF3E,KAAK2lE,cAAc1pE,GAEdA,CACT,GACC,CACD6G,IAAK,eACLc,MAAO,SAAsBq7B,EAAS2mC,GACpC3mC,EAAQr0B,SAAQ,SAAUiB,IACRA,EAAO1G,aAAa,UAAY,IACtC8S,MAAM,OAAOrN,SAAQ,SAAUjG,GACvC,GAAKA,EAAKkjD,WAAW,SACrBljD,EAAOA,EAAKxE,MAAM,GACC,MAAfylE,EAAMjhE,IACV,GAAa,cAATA,EACFkH,EAAO6H,UAAYkyD,EAAMjhE,GAAM,IAAMihE,EAAMjhE,GAAW,SACjD,GAA2B,kBAAhBihE,EAAMjhE,GACtBkH,EAAO6H,UAAYkyD,EAAMjhE,OACpB,CACL,IAAIf,EAAQiI,EAAOjI,OAAS,GACf,MAATA,GAAiBgiE,EAAMjhE,GAAMf,KAC/BiI,EAAO6H,UAAYkyD,EAAMjhE,GAAMf,GAEnC,CACF,GACF,GACF,GACC,CACDd,IAAK,eACLc,MAAO,SAAsBiiE,EAASD,GACpC,IAAI77D,EAAS/J,KAEbA,KAAKylE,QAAUI,EAAQtzD,KAAI,SAAUyU,GACnC,GAAIA,EAAO6+B,UAAUtjC,SAAS,YAI5B,OAHsC,MAAlCyE,EAAOvhB,cAAc,WACvBqgE,EAAW9+C,EAAQ+9C,GAEd,IAAIH,EAAatoB,QAAQt1B,EAAQ4+C,EAAMG,OACzC,GAAI/+C,EAAO6+B,UAAUtjC,SAAS,kBAAoByE,EAAO6+B,UAAUtjC,SAAS,YAAa,CAC9F,IAAImhC,EAAS18B,EAAO6+B,UAAUtjC,SAAS,iBAAmB,aAAe,QAIzE,OAHsC,MAAlCyE,EAAOvhB,cAAc,WACvBqgE,EAAW9+C,EAAQg+C,EAAmB,eAAXthB,EAA0B,UAAY,WAE5D,IAAIihB,EAAcroB,QAAQt1B,EAAQ4+C,EAAMliB,GACjD,CAUE,OATsC,MAAlC18B,EAAOvhB,cAAc,YACnBuhB,EAAO6+B,UAAUtjC,SAAS,WAC5BujD,EAAW9+C,EAAQi+C,GACVj+C,EAAO6+B,UAAUtjC,SAAS,aACnCujD,EAAW9+C,EAAQk+C,GACVl+C,EAAO6+B,UAAUtjC,SAAS,YACnCujD,EAAW9+C,EAAQm+C,IAGhB,IAAIN,EAASvoB,QAAQt1B,EAEhC,IAMAhnB,KAAKmuD,MAAMnzC,GAAGqxC,EAAU/P,QAAQpgB,OAAOwqB,eAL1B,WACX38C,EAAO07D,QAAQ76D,SAAQ,SAAU86D,GAC/BA,EAAOxe,QACT,GACF,GAEF,KAGKke,CACT,CAlGgB,CAkGd3f,EAAQnJ,SAEV8oB,EAAU5Z,UAAW,EAAIhJ,EAASlG,UAAS,EAAM,CAAC,EAAGmJ,EAAQnJ,QAAQkP,SAAU,CAC7EzQ,QAAS,CACP+Q,QAAS,CACPzvB,SAAU,CACR2pC,QAAS,WACPhmE,KAAKmuD,MAAM9H,MAAMkf,QAAQU,KAAK,UAChC,EACAh6C,MAAO,WACL,IAAI+7B,EAAShoD,KAETkmE,EAAYlmE,KAAK6c,UAAUpX,cAAc,6BAC5B,MAAbygE,KACFA,EAAYjhE,SAASmE,cAAc,UACzBoC,aAAa,OAAQ,QAC/B06D,EAAU16D,aAAa,SAAU,6DACjC06D,EAAUrgB,UAAUluC,IAAI,YACxBuuD,EAAU/hE,iBAAiB,UAAU,WACnC,GAAuB,MAAnB+hE,EAAU57D,OAAuC,MAAtB47D,EAAU57D,MAAM,GAAY,CACzD,IAAI67D,EAAS,IAAIjiE,WACjBiiE,EAAO7uB,OAAS,SAAUnoC,GACxB,IAAI43C,EAAQiB,EAAOmG,MAAM3F,cAAa,GACtCR,EAAOmG,MAAMgR,gBAAe,IAAIzc,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAAO9P,OAAO46C,EAAM3pD,QAAQslC,OAAO,CAAEzW,MAAO9c,EAAEvO,OAAOrB,SAAW8sD,EAAU/P,QAAQgM,QAAQ+C,MAC9JrD,EAAOmG,MAAMvF,aAAa7B,EAAM9qC,MAAQ,EAAGowC,EAAU/P,QAAQgM,QAAQO,QACrEqd,EAAUtiE,MAAQ,EACpB,EACAuiE,EAAOC,cAAcF,EAAU57D,MAAM,GACvC,CACF,IACAtK,KAAK6c,UAAU3Q,YAAYg6D,IAE7BA,EAAUn6D,OACZ,EACAs6D,MAAO,WACLrmE,KAAKmuD,MAAM9H,MAAMkf,QAAQU,KAAK,QAChC,OAMR,IAAIvB,EAAc,SAAU4B,GAG1B,SAAS5B,EAAYvW,EAAOoY,GAC1BxjB,EAAgB/iD,KAAM0kE,GAEtB,IAAIrc,EAASrF,EAA2BhjD,MAAO0kE,EAAYnnB,WAAa36C,OAAOyb,eAAeqmD,IAAc1iE,KAAKhC,KAAMmuD,EAAOoY,IAI9H,OAFAle,EAAOmd,QAAUnd,EAAOhjD,KAAKI,cAAc,sBAC3C4iD,EAAO+T,SACA/T,CACT,CA0FA,OApGAnF,EAAUwhB,EAAa4B,GAYvBlkB,EAAasiB,EAAa,CAAC,CACzB5hE,IAAK,SACLc,MAAO,WACL,IAAIklD,EAAS9oD,KAEbA,KAAKwlE,QAAQrhE,iBAAiB,WAAW,SAAUC,GAC7Cu8D,EAAWrkB,QAAQz+C,MAAMuG,EAAO,UAClC0kD,EAAO0d,OACPpiE,EAAMmH,kBACGo1D,EAAWrkB,QAAQz+C,MAAMuG,EAAO,YACzC0kD,EAAOvwC,SACPnU,EAAMmH,iBAEV,GACF,GACC,CACDzI,IAAK,SACLc,MAAO,WACL5D,KAAKoW,MACP,GACC,CACDtT,IAAK,OACLc,MAAO,WACL,IAAI6iE,EAAO5gE,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,OAC3E6gE,EAAU7gE,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAK,KAElF7F,KAAKqF,KAAKwgD,UAAU9tC,OAAO,aAC3B/X,KAAKqF,KAAKwgD,UAAUluC,IAAI,cACT,MAAX+uD,EACF1mE,KAAKwlE,QAAQ5hE,MAAQ8iE,EACZD,IAASzmE,KAAKqF,KAAKF,aAAa,eACzCnF,KAAKwlE,QAAQ5hE,MAAQ,IAEvB5D,KAAKwkC,SAASxkC,KAAKmuD,MAAM9E,UAAUrpD,KAAKmuD,MAAM5wC,UAAUg2C,aACxDvzD,KAAKwlE,QAAQx+C,SACbhnB,KAAKwlE,QAAQh6D,aAAa,cAAexL,KAAKwlE,QAAQrgE,aAAa,QAAUshE,IAAS,IACtFzmE,KAAKqF,KAAKmG,aAAa,YAAai7D,EACtC,GACC,CACD3jE,IAAK,eACLc,MAAO,WACL,IAAIgnC,EAAY5qC,KAAKmuD,MAAMnI,mBAAmBpb,UAC9C5qC,KAAKmuD,MAAMriD,QACX9L,KAAKmuD,MAAMnI,mBAAmBpb,UAAYA,CAC5C,GACC,CACD9nC,IAAK,OACLc,MAAO,WACL,IA2CmB4C,EACnB3I,EA5CI+F,EAAQ5D,KAAKwlE,QAAQ5hE,MACzB,OAAQ5D,KAAKqF,KAAKF,aAAa,cAC7B,IAAK,OAED,IAAIylC,EAAY5qC,KAAKmuD,MAAM9oD,KAAKulC,UAC5B5qC,KAAK2mE,WACP3mE,KAAKmuD,MAAMxF,WAAW3oD,KAAK2mE,UAAW,OAAQ/iE,EAAOyoD,EAAU/P,QAAQgM,QAAQ+C,aACxErrD,KAAK2mE,YAEZ3mE,KAAK4mE,eACL5mE,KAAKmuD,MAAMzK,OAAO,OAAQ9/C,EAAOyoD,EAAU/P,QAAQgM,QAAQ+C,OAE7DrrD,KAAKmuD,MAAM9oD,KAAKulC,UAAYA,EAC5B,MAEJ,IAAK,QAEDhnC,GA2BN/F,GADmB2I,EA1BW5C,GA2BlB/F,MAAM,+EAAiF2I,EAAI3I,MAAM,oEAEvGA,EAAM,IAAM,SAAW,4BAA8BA,EAAM,GAAK,eAEtEA,EAAQ2I,EAAI3I,MAAM,oDAEZA,EAAM,IAAM,SAAW,6BAA+BA,EAAM,GAAK,IAEpE2I,EAjCD,IAAK,UAED,IAAK5C,EAAO,MACZ,IAAImjD,EAAQ/mD,KAAKmuD,MAAM3F,cAAa,GACpC,GAAa,MAATzB,EAAe,CACjB,IAAI9qC,EAAQ8qC,EAAM9qC,MAAQ8qC,EAAM3pD,OAChC4C,KAAKmuD,MAAM/D,YAAYnuC,EAAOjc,KAAKqF,KAAKF,aAAa,aAAcvB,EAAOyoD,EAAU/P,QAAQgM,QAAQ+C,MACxD,YAAxCrrD,KAAKqF,KAAKF,aAAa,cACzBnF,KAAKmuD,MAAM3D,WAAWvuC,EAAQ,EAAG,IAAKowC,EAAU/P,QAAQgM,QAAQ+C,MAElErrD,KAAKmuD,MAAMvF,aAAa3sC,EAAQ,EAAGowC,EAAU/P,QAAQgM,QAAQ+C,KAC/D,EAKNrrD,KAAKwlE,QAAQ5hE,MAAQ,GACrB5D,KAAKoW,MACP,KAGKsuD,CACT,CAtGkB,CAsGhBI,EAAUxoB,SAcZ,SAASwpB,EAAW9+C,EAAQgS,GAC1B,IAAIU,EAAe7zB,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,IAAmBA,UAAU,GAElFmzB,EAAOpuB,SAAQ,SAAUhH,GACvB,IAAIwO,EAASnN,SAASmE,cAAc,UAChCxF,IAAU81B,EACZtnB,EAAO5G,aAAa,WAAY,YAEhC4G,EAAO5G,aAAa,QAAS5H,GAE/BojB,EAAO9a,YAAYkG,EACrB,GACF,CAEAtW,EAAQ4oE,YAAcA,EACtB5oE,EAAQwgD,QAAU8oB,CAEX,EAED,SAAUnpE,EAAQH,EAASqhD,GAEjC,aAEAv6C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIijE,EAA4B,WAC5B,SAASA,IACL7mE,KAAKkF,KAAOlF,KAAK3C,KAAO,KACxB2C,KAAK5C,OAAS,CAClB,CA6HA,OA5HAypE,EAAW3mE,UAAUe,OAAS,WAE1B,IADA,IAAIg6B,EAAQ,GACH7Y,EAAK,EAAGA,EAAKvc,UAAUzI,OAAQglB,IACpC6Y,EAAM7Y,GAAMvc,UAAUuc,GAE1BpiB,KAAKmiC,aAAalH,EAAM,GAAI,MACxBA,EAAM79B,OAAS,GACf4C,KAAKiB,OAAO9B,MAAMa,KAAMi7B,EAAM96B,MAAM,GAE5C,EACA0mE,EAAW3mE,UAAUqiB,SAAW,SAAUnD,GAEtC,IADA,IAAIkR,EAAK7U,EAAOzb,KAAKmiB,WACbmO,EAAM7U,KACV,GAAI6U,IAAQlR,EACR,OAAO,EAEf,OAAO,CACX,EACAynD,EAAW3mE,UAAUiiC,aAAe,SAAU/iB,EAAM0oC,GAC3C1oC,IAELA,EAAK3D,KAAOqsC,EACG,MAAXA,GACA1oC,EAAK5D,KAAOssC,EAAQtsC,KACA,MAAhBssC,EAAQtsC,OACRssC,EAAQtsC,KAAKC,KAAO2D,GAExB0oC,EAAQtsC,KAAO4D,EACX0oC,IAAY9nD,KAAKkF,OACjBlF,KAAKkF,KAAOka,IAGE,MAAbpf,KAAK3C,MACV2C,KAAK3C,KAAKoe,KAAO2D,EACjBA,EAAK5D,KAAOxb,KAAK3C,KACjB2C,KAAK3C,KAAO+hB,IAGZA,EAAK5D,KAAO,KACZxb,KAAKkF,KAAOlF,KAAK3C,KAAO+hB,GAE5Bpf,KAAK5C,QAAU,EACnB,EACAypE,EAAW3mE,UAAU04C,OAAS,SAAUh4C,GAEpC,IADA,IAAIqb,EAAQ,EAAGqU,EAAMtwB,KAAKkF,KACZ,MAAPorB,GAAa,CAChB,GAAIA,IAAQ1vB,EACR,OAAOqb,EACXA,GAASqU,EAAIlzB,SACbkzB,EAAMA,EAAI7U,IACd,CACA,OAAQ,CACZ,EACAorD,EAAW3mE,UAAU6X,OAAS,SAAUqH,GAC/Bpf,KAAKuiB,SAASnD,KAEF,MAAbA,EAAK5D,OACL4D,EAAK5D,KAAKC,KAAO2D,EAAK3D,MACT,MAAb2D,EAAK3D,OACL2D,EAAK3D,KAAKD,KAAO4D,EAAK5D,MACtB4D,IAASpf,KAAKkF,OACdlF,KAAKkF,KAAOka,EAAK3D,MACjB2D,IAASpf,KAAK3C,OACd2C,KAAK3C,KAAO+hB,EAAK5D,MACrBxb,KAAK5C,QAAU,EACnB,EACAypE,EAAW3mE,UAAUiiB,SAAW,SAAU2kD,GAGtC,YAFgB,IAAZA,IAAsBA,EAAU9mE,KAAKkF,MAElC,WACH,IAAI1D,EAAMslE,EAGV,OAFe,MAAXA,IACAA,EAAUA,EAAQrrD,MACfja,CACX,CACJ,EACAqlE,EAAW3mE,UAAU+lB,KAAO,SAAUhK,EAAOw7C,QACvB,IAAdA,IAAwBA,GAAY,GAExC,IADA,IAAInnC,EAAK7U,EAAOzb,KAAKmiB,WACbmO,EAAM7U,KAAS,CACnB,IAAIre,EAASkzB,EAAIlzB,SACjB,GAAI6e,EAAQ7e,GACPq6D,GAAax7C,IAAU7e,IAAuB,MAAZkzB,EAAI7U,MAAsC,IAAtB6U,EAAI7U,KAAKre,UAChE,MAAO,CAACkzB,EAAKrU,GAEjBA,GAAS7e,CACb,CACA,MAAO,CAAC,KAAM,EAClB,EACAypE,EAAW3mE,UAAU0K,QAAU,SAAU/G,GAErC,IADA,IAAIysB,EAAK7U,EAAOzb,KAAKmiB,WACbmO,EAAM7U,KACV5X,EAASysB,EAEjB,EACAu2C,EAAW3mE,UAAU62D,UAAY,SAAU96C,EAAO7e,EAAQyG,GACtD,KAAIzG,GAAU,GAId,IAFA,IACIkzB,EADA2mC,EAAKj3D,KAAKimB,KAAKhK,GAAQ+3C,EAAYiD,EAAG,GACjC8P,EAAW9qD,EADmCg7C,EAAG,GACtBx7C,EAAOzb,KAAKmiB,SAAS6xC,IACjD1jC,EAAM7U,MAAWsrD,EAAW9qD,EAAQ7e,GAAQ,CAChD,IAAI4pE,EAAY12C,EAAIlzB,SAChB6e,EAAQ8qD,EACRljE,EAASysB,EAAKrU,EAAQ8qD,EAAUzmE,KAAKE,IAAIpD,EAAQ2pE,EAAWC,EAAY/qD,IAGxEpY,EAASysB,EAAK,EAAGhwB,KAAKE,IAAIwmE,EAAW/qD,EAAQ7e,EAAS2pE,IAE1DA,GAAYC,CAChB,CACJ,EACAH,EAAW3mE,UAAUqS,IAAM,SAAU1O,GACjC,OAAO7D,KAAK4/C,QAAO,SAAU2X,EAAMjnC,GAE/B,OADAinC,EAAK13D,KAAKgE,EAASysB,IACZinC,CACX,GAAG,GACP,EACAsP,EAAW3mE,UAAU0/C,OAAS,SAAU/7C,EAAU0zD,GAE9C,IADA,IAAIjnC,EAAK7U,EAAOzb,KAAKmiB,WACbmO,EAAM7U,KACV87C,EAAO1zD,EAAS0zD,EAAMjnC,GAE1B,OAAOinC,CACX,EACOsP,CACX,CAlI+B,GAmI/B/qE,EAAQwgD,QAAUuqB,CAGX,EAED,SAAU5qE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAIy3C,EAAc,EAAoB,IAClCY,EAAW,EAAoB,GAC/BgrB,EAAkB,CAClBxgE,YAAY,EACZygE,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,GAGTC,EAA4B,SAAU5pB,GAEtC,SAAS4pB,EAAWloD,GAChB,IAAIrb,EAAQ25C,EAAO17C,KAAKhC,KAAMof,IAASpf,KAOvC,OANA+D,EAAMmiD,OAASniD,EACfA,EAAMo3D,SAAW,IAAIoM,kBAAiB,SAAUzgB,GAC5C/iD,EAAMmjD,OAAOJ,EACjB,IACA/iD,EAAMo3D,SAASqM,QAAQzjE,EAAMu/C,QAAS2jB,GACtCljE,EAAMywD,SACCzwD,CACX,CA6IA,OAvJAs5C,EAAUiqB,EAAY5pB,GAWtB4pB,EAAWpnE,UAAU+hC,OAAS,WAC1Byb,EAAOx9C,UAAU+hC,OAAOjgC,KAAKhC,MAC7BA,KAAKm7D,SAASsM,YAClB,EACAH,EAAWpnE,UAAU8vD,SAAW,SAAU/zC,EAAO7e,GAC7C4C,KAAKknD,SACS,IAAVjrC,GAAe7e,IAAW4C,KAAK5C,SAC/B4C,KAAKowB,SAASxlB,SAAQ,SAAUw5C,GAC5BA,EAAMrsC,QACV,IAGA2lC,EAAOx9C,UAAU8vD,SAAShuD,KAAKhC,KAAMic,EAAO7e,EAEpD,EACAkqE,EAAWpnE,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GAC3D5D,KAAKknD,SACLxJ,EAAOx9C,UAAUmwD,SAASruD,KAAKhC,KAAMic,EAAO7e,EAAQuH,EAAMf,EAC9D,EACA0jE,EAAWpnE,UAAU4jD,SAAW,SAAU7nC,EAAOrY,EAAO+/C,GACpD3jD,KAAKknD,SACLxJ,EAAOx9C,UAAU4jD,SAAS9hD,KAAKhC,KAAMic,EAAOrY,EAAO+/C,EACvD,EACA2jB,EAAWpnE,UAAUwwD,SAAW,SAAU5J,EAAWrnC,GACjD,IAAI1b,EAAQ/D,UACM,IAAd8mD,IAAwBA,EAAY,SACxB,IAAZrnC,IAAsBA,EAAU,CAAC,GACrCi+B,EAAOx9C,UAAUwwD,SAAS1uD,KAAKhC,KAAMyf,GAKrC,IAHA,IAAIioD,EAAU,GAAGvnE,MAAM6B,KAAKhC,KAAKm7D,SAASC,eAGnCsM,EAAQtqE,OAAS,GACpB0pD,EAAUjnD,KAAK6nE,EAAQnuD,OA+B3B,IA7BA,IAAIouD,EAAO,SAAUlpB,EAAMmpB,QACJ,IAAfA,IAAyBA,GAAa,GAC9B,MAARnpB,GAAgBA,IAAS16C,GAEE,MAA3B06C,EAAK6E,QAAQh6C,aAGgC,MAA7Cm1C,EAAK6E,QAAQrH,EAASqC,UAAUwI,YAEhCrI,EAAK6E,QAAQrH,EAASqC,UAAUwI,UAAY,IAE5C8gB,GACAD,EAAKlpB,EAAKx0B,QAClB,EACIymC,EAAW,SAAUjS,GAIc,MAAnCA,EAAK6E,QAAQrH,EAASqC,WAE2B,MAA7CG,EAAK6E,QAAQrH,EAASqC,UAAUwI,YAGhCrI,aAAgBpD,EAAYiB,SAC5BmC,EAAKruB,SAASxlB,QAAQ8lD,GAE1BjS,EAAKiS,SAASjxC,GAClB,EACI6U,EAAYwyB,EACP/pD,EAAI,EAAGu3B,EAAUl3B,OAAS,EAAGL,GAAK,EAAG,CAC1C,GAAIA,GA9Ec,IA+Ed,MAAM,IAAIiY,MAAM,mDA4BpB,IA1BAsf,EAAU1pB,SAAQ,SAAUgtD,GACxB,IAAInZ,EAAOxC,EAASh2B,KAAK2xC,EAASh3D,QAAQ,GAC9B,MAAR69C,IAEAA,EAAK6E,UAAYsU,EAASh3D,SACJ,cAAlBg3D,EAASjyD,MACTgiE,EAAK1rB,EAASh2B,KAAK2xC,EAASiQ,iBAAiB,IAC7C,GAAGj9D,QAAQ5I,KAAK41D,EAASF,YAAY,SAAUt4C,GAC3C,IAAIglC,EAAQnI,EAASh2B,KAAK7G,GAAM,GAChCuoD,EAAKvjB,GAAO,GACRA,aAAiB/I,EAAYiB,SAC7B8H,EAAMh0B,SAASxlB,SAAQ,SAAUk9D,GAC7BH,EAAKG,GAAY,EACrB,GAER,KAEuB,eAAlBlQ,EAASjyD,MACdgiE,EAAKlpB,EAAKjjC,OAGlBmsD,EAAKlpB,GACT,IACAz+C,KAAKowB,SAASxlB,QAAQ8lD,GAEtBgX,GADApzC,EAAY,GAAGn0B,MAAM6B,KAAKhC,KAAKm7D,SAASC,gBACpBj7D,QACbunE,EAAQtqE,OAAS,GACpB0pD,EAAUjnD,KAAK6nE,EAAQnuD,MAC/B,CACJ,EACA+tD,EAAWpnE,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAC/C,IAAI1b,EAAQ/D,UACI,IAAZyf,IAAsBA,EAAU,CAAC,IACrCqnC,EAAYA,GAAa9mD,KAAKm7D,SAASC,eAGlC7oD,KAAI,SAAUqlD,GACf,IAAInZ,EAAOxC,EAASh2B,KAAK2xC,EAASh3D,QAAQ,GAC1C,OAAY,MAAR69C,EACO,KAEsC,MAA7CA,EAAK6E,QAAQrH,EAASqC,UAAUwI,WAEhCrI,EAAK6E,QAAQrH,EAASqC,UAAUwI,UAAY,CAAC8Q,GACtCnZ,IAIPA,EAAK6E,QAAQrH,EAASqC,UAAUwI,UAAUjnD,KAAK+3D,GACxC,KAEf,IACKhtD,SAAQ,SAAU6zC,GACP,MAARA,GACAA,IAAS16C,GAE0B,MAAnC06C,EAAK6E,QAAQrH,EAASqC,WAG1BG,EAAKyI,OAAOzI,EAAK6E,QAAQrH,EAASqC,UAAUwI,WAAa,GAAIrnC,EACjE,IAEiD,MAA7Czf,KAAKsjD,QAAQrH,EAASqC,UAAUwI,WAEhCpJ,EAAOx9C,UAAUgnD,OAAOllD,KAAKhC,KAAMA,KAAKsjD,QAAQrH,EAASqC,UAAUwI,UAAWrnC,GAElFzf,KAAK0wD,SAAS5J,EAAWrnC,EAC7B,EACA6nD,EAAW1oB,SAAW,SACtB0oB,EAAW/iB,aAAe,QAC1B+iB,EAAW1gD,MAAQq1B,EAASE,MAAM4H,WAClCujB,EAAWl8D,QAAU,MACdk8D,CACX,CAzJ+B,CAyJ7BjsB,EAAYiB,SACdxgD,EAAQwgD,QAAUgrB,CAGX,EAED,SAAUrrE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAI03C,EAAW,EAAoB,IAC/BW,EAAW,EAAoB,GAa/B8rB,EAA4B,SAAUrqB,GAEtC,SAASqqB,IACL,OAAkB,OAAXrqB,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CA6CA,OAhDAq9C,EAAU0qB,EAAYrqB,GAItBqqB,EAAWxkB,QAAU,SAAUD,GAC3B,GAAIA,EAAQl4C,UAAY28D,EAAW38D,QAEnC,OAAOsyC,EAAO6F,QAAQvhD,KAAKhC,KAAMsjD,EACrC,EACAykB,EAAW7nE,UAAUwjD,OAAS,SAAU/+C,EAAMf,GAC1C,IAAIG,EAAQ/D,KACR2E,IAAS3E,KAAKskD,QAAQ1F,UAAah7C,EAUnC85C,EAAOx9C,UAAUwjD,OAAO1hD,KAAKhC,KAAM2E,EAAMf,IATzC5D,KAAKowB,SAASxlB,SAAQ,SAAUw5C,GACtBA,aAAiB9I,EAASgB,UAC5B8H,EAAQA,EAAMtpB,KAAKitC,EAAWnpB,UAAU,IAE5C76C,EAAM0C,WAAWga,KAAK2jC,EAC1B,IACApkD,KAAK82C,SAKb,EACAixB,EAAW7nE,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GAC/B,MAAxB5D,KAAKujD,UAAU5+C,IAAiBs3C,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAMmT,WACzDtvD,KAAK6sD,QAAQ5wC,EAAO7e,GAC1BsmD,OAAO/+C,EAAMf,GAGlB85C,EAAOx9C,UAAUmwD,SAASruD,KAAKhC,KAAMic,EAAO7e,EAAQuH,EAAMf,EAElE,EACAmkE,EAAW7nE,UAAUwwD,SAAW,SAAUjxC,GACtCi+B,EAAOx9C,UAAUwwD,SAAS1uD,KAAKhC,KAAMyf,GACrC,IAAI8jC,EAAUvjD,KAAKujD,UACnB,GAAoC,IAAhC3gD,OAAOqkB,KAAKs8B,GAASnmD,OACrB,OAAO4C,KAAK82C,SAEhB,IAAIr7B,EAAOzb,KAAKyb,KACZA,aAAgBssD,GAActsD,EAAKD,OAASxb,MApDxD,SAAiBgoE,EAAMC,GACnB,GAAIrlE,OAAOqkB,KAAK+gD,GAAM5qE,SAAWwF,OAAOqkB,KAAKghD,GAAM7qE,OAC/C,OAAO,EAEX,IAAK,IAAIk5B,KAAQ0xC,EAEb,GAAIA,EAAK1xC,KAAU2xC,EAAK3xC,GACpB,OAAO,EAEf,OAAO,CACX,CA0CgE4xC,CAAQ3kB,EAAS9nC,EAAK8nC,aAC1E9nC,EAAKqxC,aAAa9sD,MAClByb,EAAK1D,SAEb,EACAgwD,EAAWnpB,SAAW,SACtBmpB,EAAWnhD,MAAQq1B,EAASE,MAAMgc,YAClC4P,EAAW38D,QAAU,OACd28D,CACX,CAlD+B,CAkD7BzsB,EAASgB,SACXxgD,EAAQwgD,QAAUyrB,CAGX,EAED,SAAU9rE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAI03C,EAAW,EAAoB,IAC/BW,EAAW,EAAoB,GAC/BksB,EAA2B,SAAUzqB,GAErC,SAASyqB,IACL,OAAkB,OAAXzqB,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CAgDA,OAnDAq9C,EAAU8qB,EAAWzqB,GAIrByqB,EAAU5kB,QAAU,SAAUD,GAC1B,IAAIl4C,EAAU6wC,EAASniC,MAAMquD,EAAUvpB,UAAUxzC,QACjD,GAAIk4C,EAAQl4C,UAAYA,EAExB,OAAOsyC,EAAO6F,QAAQvhD,KAAKhC,KAAMsjD,EACrC,EACA6kB,EAAUjoE,UAAUwjD,OAAS,SAAU/+C,EAAMf,GACS,MAA9Cq4C,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAM8B,SAG/Bt5C,IAAS3E,KAAKskD,QAAQ1F,UAAah7C,EAIxC85C,EAAOx9C,UAAUwjD,OAAO1hD,KAAKhC,KAAM2E,EAAMf,GAHzC5D,KAAKoiC,YAAY+lC,EAAUvpB,UAKnC,EACAupB,EAAUjoE,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GACR,MAA9Cq4C,EAASniC,MAAMnV,EAAMs3C,EAASE,MAAM8B,OACpCj+C,KAAK0jD,OAAO/+C,EAAMf,GAGlB85C,EAAOx9C,UAAUmwD,SAASruD,KAAKhC,KAAMic,EAAO7e,EAAQuH,EAAMf,EAElE,EACAukE,EAAUjoE,UAAU4jD,SAAW,SAAU7nC,EAAOrY,EAAO+/C,GACnD,GAAW,MAAPA,GAA+D,MAAhD1H,EAASniC,MAAMlW,EAAOq4C,EAASE,MAAM+B,QAEpDR,EAAOx9C,UAAU4jD,SAAS9hD,KAAKhC,KAAMic,EAAOrY,EAAO+/C,OAElD,CACD,IAAIhrC,EAAQ3Y,KAAKiY,MAAMgE,GACnBwiC,EAAOxC,EAASn4C,OAAOF,EAAO+/C,GAClChrC,EAAMsR,OAAOkY,aAAasc,EAAM9lC,EACpC,CACJ,EACAwvD,EAAUjoE,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAC1C87C,UAAUQ,UAAUl+D,MAAM,WAC1BmC,KAAKsX,QAGLomC,EAAOx9C,UAAUgnD,OAAOllD,KAAKhC,KAAM8mD,EAAWrnC,EAEtD,EACA0oD,EAAUvpB,SAAW,QACrBupB,EAAUvhD,MAAQq1B,EAASE,MAAM4H,WACjCokB,EAAU/8D,QAAU,IACb+8D,CACX,CArD8B,CAqD5B7sB,EAASgB,SACXxgD,EAAQwgD,QAAU6rB,CAGX,EAED,SAAUlsE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IACIwkE,EAA2B,SAAU1qB,GAErC,SAAS0qB,IACL,OAAkB,OAAX1qB,GAAmBA,EAAOv+C,MAAMa,KAAM6F,YAAc7F,IAC/D,CAqBA,OAxBAq9C,EAAU+qB,EAAW1qB,GAIrB0qB,EAAU7kB,QAAU,SAAUD,GAE9B,EACA8kB,EAAUloE,UAAUwjD,OAAS,SAAU/+C,EAAMf,GAIzC85C,EAAOx9C,UAAUmwD,SAASruD,KAAKhC,KAAM,EAAGA,KAAK5C,SAAUuH,EAAMf,EACjE,EACAwkE,EAAUloE,UAAUmwD,SAAW,SAAUp0C,EAAO7e,EAAQuH,EAAMf,GAC5C,IAAVqY,GAAe7e,IAAW4C,KAAK5C,SAC/B4C,KAAK0jD,OAAO/+C,EAAMf,GAGlB85C,EAAOx9C,UAAUmwD,SAASruD,KAAKhC,KAAMic,EAAO7e,EAAQuH,EAAMf,EAElE,EACAwkE,EAAUloE,UAAUqjD,QAAU,WAC1B,OAAOvjD,KAAKskD,QAAQf,QAAQvjD,KAAKsjD,QACrC,EACO8kB,CACX,CA1B8B,CADjB,EAAoB,IA2BxB9rB,SACTxgD,EAAQwgD,QAAU8rB,CAGX,EAED,SAAUnsE,EAAQH,EAAS,GAEjC,aAEA,IACQshD,EADJC,EAAar9C,MAAQA,KAAKq9C,YACtBD,EAAgBx6C,OAAO06C,gBACtB,CAAEC,UAAW,cAAgBn3C,OAAS,SAAUxJ,EAAGF,GAAKE,EAAE2gD,UAAY7gD,CAAG,GAC1E,SAAUE,EAAGF,GAAK,IAAK,IAAIquC,KAAKruC,EAAOA,EAAE0f,eAAe2uB,KAAInuC,EAAEmuC,GAAKruC,EAAEquC,GAAI,EACtE,SAAUnuC,EAAGF,GAEhB,SAAS8gD,IAAOx9C,KAAK0X,YAAc9a,CAAG,CADtCwgD,EAAcxgD,EAAGF,GAEjBE,EAAEsD,UAAkB,OAANxD,EAAakG,OAAOkB,OAAOpH,IAAM8gD,EAAGt9C,UAAYxD,EAAEwD,UAAW,IAAIs9C,EACnF,GAEJ56C,OAAOC,eAAe/G,EAAS,aAAc,CAAE8H,OAAO,IACtD,IAAI23C,EAAS,EAAoB,IAC7BU,EAAW,EAAoB,GAC/BiR,EAA0B,SAAUxP,GAEpC,SAASwP,EAAS9tC,GACd,IAAIrb,EAAQ25C,EAAO17C,KAAKhC,KAAMof,IAASpf,KAEvC,OADA+D,EAAM6L,KAAO7L,EAAMugD,QAAQ1gD,MAAMG,EAAMu/C,SAChCv/C,CACX,CAyEA,OA9EAs5C,EAAU6P,EAAUxP,GAMpBwP,EAASppD,OAAS,SAAUF,GACxB,OAAOqB,SAASk2B,eAAev3B,EACnC,EACAspD,EAAStpD,MAAQ,SAAU0/C,GACvB,IAAI1zC,EAAO0zC,EAAQr0C,KAInB,OAFIW,EAAgB,YAChBA,EAAOA,EAAgB,aACpBA,CACX,EACAs9C,EAAShtD,UAAU8vD,SAAW,SAAU/zC,EAAO7e,GAC3C4C,KAAKsjD,QAAQr0C,KAAOjP,KAAK4P,KAAO5P,KAAK4P,KAAKzP,MAAM,EAAG8b,GAASjc,KAAK4P,KAAKzP,MAAM8b,EAAQ7e,EACxF,EACA8vD,EAAShtD,UAAU+b,MAAQ,SAAUmD,EAAMw5B,GACvC,OAAI54C,KAAKsjD,UAAYlkC,EACVw5B,GAEH,CACZ,EACAsU,EAAShtD,UAAU4jD,SAAW,SAAU7nC,EAAOrY,EAAO+/C,GACvC,MAAPA,GACA3jD,KAAK4P,KAAO5P,KAAK4P,KAAKzP,MAAM,EAAG8b,GAASrY,EAAQ5D,KAAK4P,KAAKzP,MAAM8b,GAChEjc,KAAKsjD,QAAQr0C,KAAOjP,KAAK4P,MAGzB8tC,EAAOx9C,UAAU4jD,SAAS9hD,KAAKhC,KAAMic,EAAOrY,EAAO+/C,EAE3D,EACAuJ,EAAShtD,UAAU9C,OAAS,WACxB,OAAO4C,KAAK4P,KAAKxS,MACrB,EACA8vD,EAAShtD,UAAUwwD,SAAW,SAAUjxC,GACpCi+B,EAAOx9C,UAAUwwD,SAAS1uD,KAAKhC,KAAMyf,GACrCzf,KAAK4P,KAAO5P,KAAKskD,QAAQ1gD,MAAM5D,KAAKsjD,SACX,IAArBtjD,KAAK4P,KAAKxS,OACV4C,KAAK+X,SAEA/X,KAAKyb,gBAAgByxC,GAAYltD,KAAKyb,KAAKD,OAASxb,OACzDA,KAAK8jD,SAAS9jD,KAAK5C,SAAU4C,KAAKyb,KAAK7X,SACvC5D,KAAKyb,KAAK1D,SAElB,EACAm1C,EAAShtD,UAAUskC,SAAW,SAAUvoB,EAAOw7C,GAE3C,YADkB,IAAdA,IAAwBA,GAAY,GACjC,CAACz3D,KAAKsjD,QAASrnC,EAC1B,EACAixC,EAAShtD,UAAU+X,MAAQ,SAAUgE,EAAOooC,GAExC,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAVpoC,EACA,OAAOjc,KACX,GAAIic,IAAUjc,KAAK5C,SACf,OAAO4C,KAAKyb,IACpB,CACA,IAAI9C,EAAQsjC,EAASn4C,OAAO9D,KAAKsjD,QAAQ+kB,UAAUpsD,IAGnD,OAFAjc,KAAKiqB,OAAOkY,aAAaxpB,EAAO3Y,KAAKyb,MACrCzb,KAAK4P,KAAO5P,KAAKskD,QAAQ1gD,MAAM5D,KAAKsjD,SAC7B3qC,CACX,EACAu0C,EAAShtD,UAAUgnD,OAAS,SAAUJ,EAAWrnC,GAC7C,IAAI1b,EAAQ/D,KACR8mD,EAAUuQ,MAAK,SAAUO,GACzB,MAAyB,kBAAlBA,EAASjyD,MAA4BiyD,EAASh3D,SAAWmD,EAAMu/C,OAC1E,MACItjD,KAAK4P,KAAO5P,KAAKskD,QAAQ1gD,MAAM5D,KAAKsjD,SAE5C,EACA4J,EAAShtD,UAAU0D,MAAQ,WACvB,OAAO5D,KAAK4P,IAChB,EACAs9C,EAAStO,SAAW,OACpBsO,EAAStmC,MAAQq1B,EAASE,MAAMgc,YACzBjL,CACX,CAhF6B,CAgF3B3R,EAAOe,SACTxgD,EAAQwgD,QAAU4Q,CAGX,EAED,SAAUjxD,EAAQH,EAASqhD,GAEjC,aAGA,IAAIt9B,EAAO5a,SAASmE,cAAc,OAElC,GADAyW,EAAKgmC,UAAU5sB,OAAO,cAAc,GAChCpZ,EAAKgmC,UAAUtjC,SAAS,cAAe,CACzC,IAAI+lD,EAAUC,aAAaroE,UAAU+4B,OACrCsvC,aAAaroE,UAAU+4B,OAAS,SAAU1qB,EAAO81C,GAC/C,OAAIx+C,UAAUzI,OAAS,IAAM4C,KAAKuiB,SAAShU,MAAY81C,EAC9CA,EAEAikB,EAAQtmE,KAAKhC,KAAMuO,EAE9B,CACF,CAEKtP,OAAOiB,UAAU2nD,aACpB5oD,OAAOiB,UAAU2nD,WAAa,SAAU2gB,EAAchkC,GAEpD,OADAA,EAAWA,GAAY,EAChBxkC,KAAKF,OAAO0kC,EAAUgkC,EAAaprE,UAAYorE,CACxD,GAGGvpE,OAAOiB,UAAU0jD,WACpB3kD,OAAOiB,UAAU0jD,SAAW,SAAU4kB,EAAchkC,GAClD,IAAIikC,EAAgBzoE,KAAKpC,YACD,kBAAb4mC,IAA0BgF,SAAShF,IAAalkC,KAAK+P,MAAMm0B,KAAcA,GAAYA,EAAWikC,EAAcrrE,UACvHonC,EAAWikC,EAAcrrE,QAE3BonC,GAAYgkC,EAAaprE,OACzB,IAAIq8D,EAAYgP,EAAc13D,QAAQy3D,EAAchkC,GACpD,OAAsB,IAAfi1B,GAAoBA,IAAcj1B,CAC3C,GAGGp+B,MAAMlG,UAAU+lB,MACnBrjB,OAAOC,eAAeuD,MAAMlG,UAAW,OAAQ,CAC7C0D,MAAO,SAAe47C,GACpB,GAAa,OAATx/C,KACF,MAAM,IAAIoC,UAAU,oDAEtB,GAAyB,oBAAdo9C,EACT,MAAM,IAAIp9C,UAAU,gCAOtB,IALA,IAGIwB,EAHAyuB,EAAOzvB,OAAO5C,MACd5C,EAASi1B,EAAKj1B,SAAW,EACzBsrE,EAAU7iE,UAAU,GAGf9I,EAAI,EAAGA,EAAIK,EAAQL,IAE1B,GADA6G,EAAQyuB,EAAKt1B,GACTyiD,EAAUx9C,KAAK0mE,EAAS9kE,EAAO7G,EAAGs1B,GACpC,OAAOzuB,CAIb,IAIJqB,SAASd,iBAAiB,oBAAoB,WAE5Cc,SAAS0jE,YAAY,wBAAwB,GAAO,GAEpD1jE,SAAS0jE,YAAY,iBAAiB,GAAO,EAC/C,GAEO,EAED,SAAU1sE,EAAQH,GAiCxB,IAAI8sE,GAAe,EACfC,EAAc,EACdC,EAAa,EAWjB,SAASC,EAAUC,EAAOC,EAAOC,GAE/B,GAAIF,GAASC,EACX,OAAID,EACK,CAAC,CAACF,EAAYE,IAEhB,IAILE,EAAa,GAAKF,EAAM5rE,OAAS8rE,KACnCA,EAAa,MAIf,IAAIC,EAAeC,EAAkBJ,EAAOC,GACxCI,EAAeL,EAAMrrE,UAAU,EAAGwrE,GAKtCA,EAAeG,EAJfN,EAAQA,EAAMrrE,UAAUwrE,GACxBF,EAAQA,EAAMtrE,UAAUwrE,IAIxB,IAAII,EAAeP,EAAMrrE,UAAUqrE,EAAM5rE,OAAS+rE,GAK9CK,EAyBN,SAAuBR,EAAOC,GAC5B,IAAIO,EAEJ,IAAKR,EAEH,MAAO,CAAC,CAACH,EAAaI,IAGxB,IAAKA,EAEH,MAAO,CAAC,CAACL,EAAaI,IAGxB,IAAIS,EAAWT,EAAM5rE,OAAS6rE,EAAM7rE,OAAS4rE,EAAQC,EACjDS,EAAYV,EAAM5rE,OAAS6rE,EAAM7rE,OAAS6rE,EAAQD,EAClDjsE,EAAI0sE,EAAS14D,QAAQ24D,GACzB,IAAU,GAAN3sE,EASF,OAPAysE,EAAQ,CAAC,CAACX,EAAaY,EAAS9rE,UAAU,EAAGZ,IACpC,CAAC+rE,EAAYY,GACb,CAACb,EAAaY,EAAS9rE,UAAUZ,EAAI2sE,EAAUtsE,UAEpD4rE,EAAM5rE,OAAS6rE,EAAM7rE,SACvBosE,EAAM,GAAG,GAAKA,EAAM,GAAG,GAAKZ,GAEvBY,EAGT,GAAwB,GAApBE,EAAUtsE,OAGZ,MAAO,CAAC,CAACwrE,EAAaI,GAAQ,CAACH,EAAaI,IAI9C,IAAIU,EAwON,SAAyBX,EAAOC,GAC9B,IAAIQ,EAAWT,EAAM5rE,OAAS6rE,EAAM7rE,OAAS4rE,EAAQC,EACjDS,EAAYV,EAAM5rE,OAAS6rE,EAAM7rE,OAAS6rE,EAAQD,EACtD,GAAIS,EAASrsE,OAAS,GAAwB,EAAnBssE,EAAUtsE,OAAaqsE,EAASrsE,OACzD,OAAO,KAeT,SAASwsE,EAAiBH,EAAUC,EAAW3sE,GAM7C,IAJA,IAGI8sE,EAAiBC,EAAiBC,EAAkBC,EAHpD9jD,EAAOujD,EAAS9rE,UAAUZ,EAAGA,EAAIuD,KAAK+P,MAAMo5D,EAASrsE,OAAS,IAC9De,GAAK,EACL8rE,EAAc,IAE8B,IAAxC9rE,EAAIurE,EAAU34D,QAAQmV,EAAM/nB,EAAI,KAAW,CACjD,IAAI+rE,EAAed,EAAkBK,EAAS9rE,UAAUZ,GACnB2sE,EAAU/rE,UAAUQ,IACrDq0D,EAAe8W,EAAkBG,EAAS9rE,UAAU,EAAGZ,GACtB2sE,EAAU/rE,UAAU,EAAGQ,IACxD8rE,EAAY7sE,OAASo1D,EAAe0X,IACtCD,EAAcP,EAAU/rE,UAAUQ,EAAIq0D,EAAcr0D,GAChDurE,EAAU/rE,UAAUQ,EAAGA,EAAI+rE,GAC/BL,EAAkBJ,EAAS9rE,UAAU,EAAGZ,EAAIy1D,GAC5CsX,EAAkBL,EAAS9rE,UAAUZ,EAAImtE,GACzCH,EAAmBL,EAAU/rE,UAAU,EAAGQ,EAAIq0D,GAC9CwX,EAAmBN,EAAU/rE,UAAUQ,EAAI+rE,GAE/C,CACA,OAAyB,EAArBD,EAAY7sE,QAAcqsE,EAASrsE,OAC9B,CAACysE,EAAiBC,EACjBC,EAAkBC,EAAkBC,GAErC,IAEX,CAGA,IAKIN,EAaAQ,EAASC,EAASC,EAASC,EAlB3BC,EAAMX,EAAiBH,EAAUC,EACVppE,KAAKmD,KAAKgmE,EAASrsE,OAAS,IAEnDotE,EAAMZ,EAAiBH,EAAUC,EACVppE,KAAKmD,KAAKgmE,EAASrsE,OAAS,IAEvD,IAAKmtE,IAAQC,EACX,OAAO,KAOPb,EANUa,EAEAD,GAILA,EAAI,GAAGntE,OAASotE,EAAI,GAAGptE,OAASmtE,EAHhCC,EAFAD,EAUHvB,EAAM5rE,OAAS6rE,EAAM7rE,QACvB+sE,EAAUR,EAAG,GACbS,EAAUT,EAAG,GACbU,EAAUV,EAAG,GACbW,EAAUX,EAAG,KAEbU,EAAUV,EAAG,GACbW,EAAUX,EAAG,GACbQ,EAAUR,EAAG,GACbS,EAAUT,EAAG,IAEf,IAAIc,EAAad,EAAG,GACpB,MAAO,CAACQ,EAASC,EAASC,EAASC,EAASG,EAC9C,CAxTWC,CAAgB1B,EAAOC,GAChC,GAAIU,EAAI,CAEN,IAAIQ,EAAUR,EAAG,GACbS,EAAUT,EAAG,GACbU,EAAUV,EAAG,GACbW,EAAUX,EAAG,GACbc,EAAad,EAAG,GAEhBgB,EAAU5B,EAAUoB,EAASE,GAC7BO,EAAU7B,EAAUqB,EAASE,GAEjC,OAAOK,EAAQnsD,OAAO,CAAC,CAACsqD,EAAY2B,IAAcG,EACpD,CAEA,OAaF,SAAsB5B,EAAOC,GAW3B,IATA,IAAI4B,EAAe7B,EAAM5rE,OACrB0tE,EAAe7B,EAAM7rE,OACrB2tE,EAAQzqE,KAAKmD,MAAMonE,EAAeC,GAAgB,GAClDE,EAAWD,EACXE,EAAW,EAAIF,EACfG,EAAK,IAAI9kE,MAAM6kE,GACfE,EAAK,IAAI/kE,MAAM6kE,GAGV1uE,EAAI,EAAGA,EAAI0uE,EAAU1uE,IAC5B2uE,EAAG3uE,IAAM,EACT4uE,EAAG5uE,IAAM,EAEX2uE,EAAGF,EAAW,GAAK,EACnBG,EAAGH,EAAW,GAAK,EAWnB,IAVA,IAAI5jC,EAAQyjC,EAAeC,EAGvBM,EAAShkC,EAAQ,GAAK,EAGtBikC,EAAU,EACVC,EAAQ,EACRC,EAAU,EACVC,EAAQ,EACH5uE,EAAI,EAAGA,EAAImuE,EAAOnuE,IAAK,CAE9B,IAAK,IAAI6uE,GAAM7uE,EAAIyuE,EAASI,GAAM7uE,EAAI0uE,EAAOG,GAAM,EAAG,CASpD,IARA,IAAIC,EAAYV,EAAWS,EAOvBE,GAJFC,EADEH,IAAO7uE,GAAM6uE,GAAM7uE,GAAKsuE,EAAGQ,EAAY,GAAKR,EAAGQ,EAAY,GACxDR,EAAGQ,EAAY,GAEfR,EAAGQ,EAAY,GAAK,GAEbD,EACPG,EAAKf,GAAgBc,EAAKb,GAC1B9B,EAAM6C,OAAOD,IAAO3C,EAAM4C,OAAOF,IACtCC,IACAD,IAGF,GADAT,EAAGQ,GAAaE,EACZA,EAAKf,EAEPS,GAAS,OACJ,GAAIK,EAAKb,EAEdO,GAAW,OACN,GAAID,IACLU,EAAYd,EAAW5jC,EAAQqkC,IAClB,GAAKK,EAAYb,IAA8B,GAAlBE,EAAGW,IAG3CF,IADAG,EAAKlB,EAAeM,EAAGW,IAGzB,OAAOE,EAAkBhD,EAAOC,EAAO2C,EAAID,EAInD,CAGA,IAAK,IAAIM,GAAMrvE,EAAI2uE,EAASU,GAAMrvE,EAAI4uE,EAAOS,GAAM,EAAG,CASpD,IARA,IACIF,EADAD,EAAYd,EAAWiB,EAOvBC,GAJFH,EADEE,IAAOrvE,GAAMqvE,GAAMrvE,GAAKuuE,EAAGW,EAAY,GAAKX,EAAGW,EAAY,GACxDX,EAAGW,EAAY,GAEfX,EAAGW,EAAY,GAAK,GAEbG,EACPF,EAAKlB,GAAgBqB,EAAKpB,GAC1B9B,EAAM6C,OAAOhB,EAAekB,EAAK,IACjC9C,EAAM4C,OAAOf,EAAeoB,EAAK,IACtCH,IACAG,IAGF,GADAf,EAAGW,GAAaC,EACZA,EAAKlB,EAEPW,GAAS,OACJ,GAAIU,EAAKpB,EAEdS,GAAW,OACN,IAAKH,EAAO,CAGf,IAAIQ,EADN,IADIF,EAAYV,EAAW5jC,EAAQ6kC,IAClB,GAAKP,EAAYT,IAA8B,GAAlBC,EAAGQ,GAK/C,GAHIC,EAAKX,GADLY,EAAKV,EAAGQ,IACaA,EAGrBE,IADJG,EAAKlB,EAAekB,GAGlB,OAAOC,EAAkBhD,EAAOC,EAAO2C,EAAID,EAGjD,CACF,CACF,CAGA,MAAO,CAAC,CAAC/C,EAAaI,GAAQ,CAACH,EAAaI,GAC9C,CArHSkD,CAAanD,EAAOC,EAC7B,CA5EcmD,CAJZpD,EAAQA,EAAMrrE,UAAU,EAAGqrE,EAAM5rE,OAAS+rE,GAC1CF,EAAQA,EAAMtrE,UAAU,EAAGsrE,EAAM7rE,OAAS+rE,IAiB1C,OAXIE,GACFG,EAAMpyC,QAAQ,CAAC0xC,EAAYO,IAEzBE,GACFC,EAAM3pE,KAAK,CAACipE,EAAYS,IAE1B8C,EAAkB7C,GACA,MAAdN,IACFM,EA2iBJ,SAAqBA,EAAON,GAC1B,IAAIoD,EA9CN,SAAgC9C,EAAON,GACrC,GAAmB,IAAfA,EACF,MAAO,CAACJ,EAAYU,GAEtB,IAAK,IAAI+C,EAAc,EAAGxvE,EAAI,EAAGA,EAAIysE,EAAMpsE,OAAQL,IAAK,CACtD,IAAIH,EAAI4sE,EAAMzsE,GACd,GAAIH,EAAE,KAAOgsE,GAAehsE,EAAE,KAAOksE,EAAY,CAC/C,IAAI0D,EAAWD,EAAc3vE,EAAE,GAAGQ,OAClC,GAAI8rE,IAAesD,EACjB,MAAO,CAACzvE,EAAI,EAAGysE,GACV,GAAIN,EAAasD,EAAU,CAEhChD,EAAQA,EAAMrpE,QAEd,IAAIssE,EAAYvD,EAAaqD,EACzBG,EAAS,CAAC9vE,EAAE,GAAIA,EAAE,GAAGuD,MAAM,EAAGssE,IAC9BE,EAAU,CAAC/vE,EAAE,GAAIA,EAAE,GAAGuD,MAAMssE,IAEhC,OADAjD,EAAMpwD,OAAOrc,EAAG,EAAG2vE,EAAQC,GACpB,CAAC5vE,EAAI,EAAGysE,EACjB,CACE+C,EAAcC,CAElB,CACF,CACA,MAAM,IAAIx3D,MAAM,+BAClB,CAqBa43D,CAAsBpD,EAAON,GACpC2D,EAASP,EAAK,GACdQ,EAAiBR,EAAK,GACtB1vE,EAAIiwE,EAAOC,GACXC,EAASF,EAAOC,EAAiB,GAErC,GAAS,MAALlwE,EAGF,OAAO4sE,EACF,GAAI5sE,EAAE,KAAOksE,EAGlB,OAAOU,EAEP,GAAc,MAAVuD,GAAkBnwE,EAAE,GAAKmwE,EAAO,KAAOA,EAAO,GAAKnwE,EAAE,GAIvD,OADAiwE,EAAOzzD,OAAO0zD,EAAgB,EAAGC,EAAQnwE,GAClCowE,EAAaH,EAAQC,EAAgB,GACvC,GAAc,MAAVC,GAA8C,IAA5BA,EAAO,GAAGh8D,QAAQnU,EAAE,IAAW,CAK1DiwE,EAAOzzD,OAAO0zD,EAAgB,EAAG,CAACC,EAAO,GAAInwE,EAAE,IAAK,CAAC,EAAGA,EAAE,KAC1D,IAAIotC,EAAS+iC,EAAO,GAAG5sE,MAAMvD,EAAE,GAAGQ,QAIlC,OAHI4sC,EAAO5sC,OAAS,GAClByvE,EAAOzzD,OAAO0zD,EAAiB,EAAG,EAAG,CAACC,EAAO,GAAI/iC,IAE5CgjC,EAAaH,EAAQC,EAAgB,EAC9C,CAEE,OAAOtD,CAGb,CAhlBYyD,CAAWzD,EAAON,IAE5BM,EAwlBF,SAAoBA,GAQlB,IAPA,IAAI0D,GAAU,EACVC,EAAuB,SAAS5uE,GAClC,OAAOA,EAAItB,WAAW,IAAM,OAAUsB,EAAItB,WAAW,IAAM,KAC7D,EACImwE,EAAuB,SAAS7uE,GAClC,OAAOA,EAAItB,WAAWsB,EAAInB,OAAO,IAAM,OAAUmB,EAAItB,WAAWsB,EAAInB,OAAO,IAAM,KACnF,EACSL,EAAI,EAAGA,EAAIysE,EAAMpsE,OAAQL,GAAK,EACjCysE,EAAMzsE,EAAE,GAAG,KAAO+rE,GAAcsE,EAAqB5D,EAAMzsE,EAAE,GAAG,KAChEysE,EAAMzsE,EAAE,GAAG,KAAO6rE,GAAeuE,EAAqB3D,EAAMzsE,EAAE,GAAG,KACjEysE,EAAMzsE,GAAG,KAAO8rE,GAAesE,EAAqB3D,EAAMzsE,GAAG,MAC/DmwE,GAAU,EAEV1D,EAAMzsE,EAAE,GAAG,GAAKysE,EAAMzsE,EAAE,GAAG,GAAGoD,OAAO,GAAKqpE,EAAMzsE,EAAE,GAAG,GACrDysE,EAAMzsE,GAAG,GAAKysE,EAAMzsE,EAAE,GAAG,GAAGoD,OAAO,GAAKqpE,EAAMzsE,GAAG,GAEjDysE,EAAMzsE,EAAE,GAAG,GAAKysE,EAAMzsE,EAAE,GAAG,GAAGoD,MAAM,GAAI,IAG5C,IAAK+sE,EACH,OAAO1D,EAET,IAAI6D,EAAc,GAClB,IAAStwE,EAAI,EAAGA,EAAIysE,EAAMpsE,OAAQL,GAAK,EACjCysE,EAAMzsE,GAAG,GAAGK,OAAS,GACvBiwE,EAAYxtE,KAAK2pE,EAAMzsE,IAG3B,OAAOswE,CACT,CAtnBUC,CAAU9D,EAEpB,CA6LA,SAASwC,EAAkBhD,EAAOC,EAAO1sE,EAAGgxE,GAC1C,IAAIC,EAASxE,EAAMrrE,UAAU,EAAGpB,GAC5BkxE,EAASxE,EAAMtrE,UAAU,EAAG4vE,GAC5BG,EAAS1E,EAAMrrE,UAAUpB,GACzBoxE,EAAS1E,EAAMtrE,UAAU4vE,GAGzB/D,EAAQT,EAAUyE,EAAQC,GAC1BG,EAAS7E,EAAU2E,EAAQC,GAE/B,OAAOnE,EAAMhrD,OAAOovD,EACtB,CAUA,SAASxE,EAAkBJ,EAAOC,GAEhC,IAAKD,IAAUC,GAASD,EAAM6C,OAAO,IAAM5C,EAAM4C,OAAO,GACtD,OAAO,EAQT,IAJA,IAAIgC,EAAa,EACbC,EAAaxtE,KAAKE,IAAIwoE,EAAM5rE,OAAQ6rE,EAAM7rE,QAC1C2wE,EAAaD,EACbE,EAAe,EACZH,EAAaE,GACd/E,EAAMrrE,UAAUqwE,EAAcD,IAC9B9E,EAAMtrE,UAAUqwE,EAAcD,GAEhCC,EADAH,EAAaE,EAGbD,EAAaC,EAEfA,EAAaztE,KAAK+P,OAAOy9D,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,CACT,CASA,SAASzE,EAAkBN,EAAOC,GAEhC,IAAKD,IAAUC,GACXD,EAAM6C,OAAO7C,EAAM5rE,OAAS,IAAM6rE,EAAM4C,OAAO5C,EAAM7rE,OAAS,GAChE,OAAO,EAQT,IAJA,IAAIywE,EAAa,EACbC,EAAaxtE,KAAKE,IAAIwoE,EAAM5rE,OAAQ6rE,EAAM7rE,QAC1C2wE,EAAaD,EACbG,EAAa,EACVJ,EAAaE,GACd/E,EAAMrrE,UAAUqrE,EAAM5rE,OAAS2wE,EAAY/E,EAAM5rE,OAAS6wE,IAC1DhF,EAAMtrE,UAAUsrE,EAAM7rE,OAAS2wE,EAAY9E,EAAM7rE,OAAS6wE,GAE5DA,EADAJ,EAAaE,EAGbD,EAAaC,EAEfA,EAAaztE,KAAK+P,OAAOy9D,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,CACT,CAqGA,SAAS1B,EAAkB7C,GACzBA,EAAM3pE,KAAK,CAACipE,EAAY,KAOxB,IANA,IAKIK,EALA+E,EAAU,EACVC,EAAe,EACfC,EAAe,EACfC,EAAc,GACdC,EAAc,GAEXJ,EAAU1E,EAAMpsE,QACrB,OAAQosE,EAAM0E,GAAS,IACrB,KAAKrF,EACHuF,IACAE,GAAe9E,EAAM0E,GAAS,GAC9BA,IACA,MACF,KAAKtF,EACHuF,IACAE,GAAe7E,EAAM0E,GAAS,GAC9BA,IACA,MACF,KAAKpF,EAECqF,EAAeC,EAAe,GACX,IAAjBD,GAAuC,IAAjBC,IAGH,KADrBjF,EAAeC,EAAkBkF,EAAaD,MAEvCH,EAAUC,EAAeC,EAAgB,GAC1C5E,EAAM0E,EAAUC,EAAeC,EAAe,GAAG,IACjDtF,EACFU,EAAM0E,EAAUC,EAAeC,EAAe,GAAG,IAC7CE,EAAY3wE,UAAU,EAAGwrE,IAE7BK,EAAMpwD,OAAO,EAAG,EAAG,CAAC0vD,EACAwF,EAAY3wE,UAAU,EAAGwrE,KAC7C+E,KAEFI,EAAcA,EAAY3wE,UAAUwrE,GACpCkF,EAAcA,EAAY1wE,UAAUwrE,IAIjB,KADrBA,EAAeG,EAAkBgF,EAAaD,MAE5C7E,EAAM0E,GAAS,GAAKI,EAAY3wE,UAAU2wE,EAAYlxE,OAClD+rE,GAAgBK,EAAM0E,GAAS,GACnCI,EAAcA,EAAY3wE,UAAU,EAAG2wE,EAAYlxE,OAC/C+rE,GACJkF,EAAcA,EAAY1wE,UAAU,EAAG0wE,EAAYjxE,OAC/C+rE,KAIa,IAAjBgF,EACF3E,EAAMpwD,OAAO80D,EAAUE,EACnBD,EAAeC,EAAc,CAACvF,EAAayF,IACrB,IAAjBF,EACT5E,EAAMpwD,OAAO80D,EAAUC,EACnBA,EAAeC,EAAc,CAACxF,EAAayF,IAE/C7E,EAAMpwD,OAAO80D,EAAUC,EAAeC,EAClCD,EAAeC,EAAc,CAACxF,EAAayF,GAC3C,CAACxF,EAAayF,IAEpBJ,EAAUA,EAAUC,EAAeC,GACxBD,EAAe,EAAI,IAAMC,EAAe,EAAI,GAAK,GACvC,IAAZF,GAAiB1E,EAAM0E,EAAU,GAAG,IAAMpF,GAEnDU,EAAM0E,EAAU,GAAG,IAAM1E,EAAM0E,GAAS,GACxC1E,EAAMpwD,OAAO80D,EAAS,IAEtBA,IAEFE,EAAe,EACfD,EAAe,EACfE,EAAc,GACdC,EAAc,GAIe,KAA/B9E,EAAMA,EAAMpsE,OAAS,GAAG,IAC1BosE,EAAMjwD,MAMR,IAAIg1D,GAAU,EAGd,IAFAL,EAAU,EAEHA,EAAU1E,EAAMpsE,OAAS,GAC1BosE,EAAM0E,EAAU,GAAG,IAAMpF,GACzBU,EAAM0E,EAAU,GAAG,IAAMpF,IAEvBU,EAAM0E,GAAS,GAAGvwE,UAAU6rE,EAAM0E,GAAS,GAAG9wE,OAC9CosE,EAAM0E,EAAU,GAAG,GAAG9wE,SAAWosE,EAAM0E,EAAU,GAAG,IAEtD1E,EAAM0E,GAAS,GAAK1E,EAAM0E,EAAU,GAAG,GACnC1E,EAAM0E,GAAS,GAAGvwE,UAAU,EAAG6rE,EAAM0E,GAAS,GAAG9wE,OACrBosE,EAAM0E,EAAU,GAAG,GAAG9wE,QACtDosE,EAAM0E,EAAU,GAAG,GAAK1E,EAAM0E,EAAU,GAAG,GAAK1E,EAAM0E,EAAU,GAAG,GACnE1E,EAAMpwD,OAAO80D,EAAU,EAAG,GAC1BK,GAAU,GACD/E,EAAM0E,GAAS,GAAGvwE,UAAU,EAAG6rE,EAAM0E,EAAU,GAAG,GAAG9wE,SAC5DosE,EAAM0E,EAAU,GAAG,KAErB1E,EAAM0E,EAAU,GAAG,IAAM1E,EAAM0E,EAAU,GAAG,GAC5C1E,EAAM0E,GAAS,GACX1E,EAAM0E,GAAS,GAAGvwE,UAAU6rE,EAAM0E,EAAU,GAAG,GAAG9wE,QAClDosE,EAAM0E,EAAU,GAAG,GACvB1E,EAAMpwD,OAAO80D,EAAU,EAAG,GAC1BK,GAAU,IAGdL,IAGEK,GACFlC,EAAkB7C,EAEtB,CAGA,IAAIr/C,EAAO4+C,EAwJX,SAASiE,EAAcxD,EAAO5kE,EAAOxH,GAEnC,IAAK,IAAIL,EAAI6H,EAAQxH,EAAS,EAAGL,GAAK,GAAKA,GAAK6H,EAAQ,EAAG7H,IACzD,GAAIA,EAAI,EAAIysE,EAAMpsE,OAAQ,CACxB,IAAIoxE,EAAShF,EAAMzsE,GACf0xE,EAAUjF,EAAMzsE,EAAE,GAClByxE,EAAO,KAAOC,EAAQ,IACxBjF,EAAMpwD,OAAOrc,EAAG,EAAG,CAACyxE,EAAO,GAAIA,EAAO,GAAKC,EAAQ,IAEvD,CAEF,OAAOjF,CACT,CAnKAr/C,EAAK82B,OAAS4nB,EACd1+C,EAAK+2B,OAAS0nB,EACdz+C,EAAKg3B,MAAQ2nB,EAEb7sE,EAAOH,QAAUquB,CAkKV,EAED,SAAUluB,EAAQH,GAMxB,SAAS4yE,EAAM1/D,GACb,IAAIiY,EAAO,GACX,IAAK,IAAInkB,KAAOkM,EAAKiY,EAAKpnB,KAAKiD,GAC/B,OAAOmkB,CACT,EARUhrB,EAAOH,QAAiC,oBAAhB8G,OAAOqkB,KACrCrkB,OAAOqkB,KAAOynD,GAEVA,KAAOA,CAQR,EAED,SAAUzyE,EAAQH,GAExB,IAAI6yE,EAEI,sBAFqB,WAC3B,OAAO/rE,OAAO1C,UAAUtC,SAASoE,KAAK6D,UACvC,CAF4B,GAO7B,SAAS+oE,EAAUlmE,GACjB,MAAiD,sBAA1C9F,OAAO1C,UAAUtC,SAASoE,KAAK0G,EACxC,CAGA,SAASmmE,EAAYnmE,GACnB,OAAOA,GACY,iBAAVA,GACiB,iBAAjBA,EAAOtL,QACdwF,OAAO1C,UAAUkc,eAAepa,KAAK0G,EAAQ,YAC5C9F,OAAO1C,UAAU4uE,qBAAqB9sE,KAAK0G,EAAQ,YACpD,CACJ,EAfA5M,EAAUG,EAAOH,QAAU6yE,EAAyBC,EAAYC,GAExDD,UAAYA,EAKpB9yE,EAAQ+yE,YAAcA,CAWf,EAED,SAAU5yE,EAAQH,GAExB,aAEA,IAAI+uB,EAAMjoB,OAAO1C,UAAUkc,eACvB2tB,EAAS,IASb,SAASglC,IAAU,CA4BnB,SAASC,EAAGhzE,EAAIyjB,EAAS+S,GACvBxyB,KAAKhE,GAAKA,EACVgE,KAAKyf,QAAUA,EACfzf,KAAKwyB,KAAOA,IAAQ,CACtB,CASA,SAASy8C,IACPjvE,KAAKkvE,QAAU,IAAIH,EACnB/uE,KAAKmvE,aAAe,CACtB,CAnCIvsE,OAAOkB,SACTirE,EAAO7uE,UAAY0C,OAAOkB,OAAO,OAM5B,IAAIirE,GAASxxB,YAAWxT,GAAS,IAqCxCklC,EAAa/uE,UAAUkvE,WAAa,WAClC,IACIlzC,EACAv3B,EAFAy5C,EAAQ,GAIZ,GAA0B,IAAtBp+C,KAAKmvE,aAAoB,OAAO/wB,EAEpC,IAAKz5C,KAASu3B,EAASl8B,KAAKkvE,QACtBrkD,EAAI7oB,KAAKk6B,EAAQv3B,IAAOy5C,EAAMv+C,KAAKkqC,EAASplC,EAAKxE,MAAM,GAAKwE,GAGlE,OAAI/B,OAAOm3D,sBACF3b,EAAM5/B,OAAO5b,OAAOm3D,sBAAsB79B,IAG5CkiB,CACT,EAUA6wB,EAAa/uE,UAAUwtD,UAAY,SAAmBtpD,EAAOirE,GAC3D,IAAIxgE,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAChCkrE,EAAYtvE,KAAKkvE,QAAQrgE,GAE7B,GAAIwgE,EAAQ,QAASC,EACrB,IAAKA,EAAW,MAAO,GACvB,GAAIA,EAAUtzE,GAAI,MAAO,CAACszE,EAAUtzE,IAEpC,IAAK,IAAIe,EAAI,EAAGyzB,EAAI8+C,EAAUlyE,OAAQmyE,EAAK,IAAInpE,MAAMoqB,GAAIzzB,EAAIyzB,EAAGzzB,IAC9DwyE,EAAGxyE,GAAKuyE,EAAUvyE,GAAGf,GAGvB,OAAOuzE,CACT,EASAN,EAAa/uE,UAAUosD,KAAO,SAAcloD,EAAOorE,EAAIC,EAAIC,EAAIC,EAAIC,GACjE,IAAI/gE,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAEpC,IAAKpE,KAAKkvE,QAAQrgE,GAAM,OAAO,EAE/B,IAEI0F,EACAxX,EAHA2wD,EAAY1tD,KAAKkvE,QAAQrgE,GACzB2R,EAAM3a,UAAUzI,OAIpB,GAAIswD,EAAU1xD,GAAI,CAGhB,OAFI0xD,EAAUl7B,MAAMxyB,KAAK6vE,eAAezrE,EAAOspD,EAAU1xD,QAAII,GAAW,GAEhEokB,GACN,KAAK,EAAG,OAAOktC,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,UAAU,EACrD,KAAK,EAAG,OAAOiuC,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,QAAS+vD,IAAK,EACzD,KAAK,EAAG,OAAO9hB,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,QAAS+vD,EAAIC,IAAK,EAC7D,KAAK,EAAG,OAAO/hB,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,QAAS+vD,EAAIC,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAOhiB,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,QAAS+vD,EAAIC,EAAIC,EAAIC,IAAK,EACrE,KAAK,EAAG,OAAOjiB,EAAU1xD,GAAGgG,KAAK0rD,EAAUjuC,QAAS+vD,EAAIC,EAAIC,EAAIC,EAAIC,IAAK,EAG3E,IAAK7yE,EAAI,EAAGwX,EAAO,IAAInO,MAAMoa,EAAK,GAAIzjB,EAAIyjB,EAAKzjB,IAC7CwX,EAAKxX,EAAI,GAAK8I,UAAU9I,GAG1B2wD,EAAU1xD,GAAGmD,MAAMuuD,EAAUjuC,QAASlL,EACxC,KAAO,CACL,IACIpW,EADAf,EAASswD,EAAUtwD,OAGvB,IAAKL,EAAI,EAAGA,EAAIK,EAAQL,IAGtB,OAFI2wD,EAAU3wD,GAAGy1B,MAAMxyB,KAAK6vE,eAAezrE,EAAOspD,EAAU3wD,GAAGf,QAAII,GAAW,GAEtEokB,GACN,KAAK,EAAGktC,EAAU3wD,GAAGf,GAAGgG,KAAK0rD,EAAU3wD,GAAG0iB,SAAU,MACpD,KAAK,EAAGiuC,EAAU3wD,GAAGf,GAAGgG,KAAK0rD,EAAU3wD,GAAG0iB,QAAS+vD,GAAK,MACxD,KAAK,EAAG9hB,EAAU3wD,GAAGf,GAAGgG,KAAK0rD,EAAU3wD,GAAG0iB,QAAS+vD,EAAIC,GAAK,MAC5D,KAAK,EAAG/hB,EAAU3wD,GAAGf,GAAGgG,KAAK0rD,EAAU3wD,GAAG0iB,QAAS+vD,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAKn7D,EAAM,IAAKpW,EAAI,EAAGoW,EAAO,IAAInO,MAAMoa,EAAK,GAAIriB,EAAIqiB,EAAKriB,IACxDoW,EAAKpW,EAAI,GAAK0H,UAAU1H,GAG1BuvD,EAAU3wD,GAAGf,GAAGmD,MAAMuuD,EAAU3wD,GAAG0iB,QAASlL,GAGpD,CAEA,OAAO,CACT,EAWA06D,EAAa/uE,UAAU8a,GAAK,SAAY5W,EAAOpI,EAAIyjB,GACjD,IAAI6lD,EAAW,IAAI0J,EAAGhzE,EAAIyjB,GAAWzf,MACjC6O,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAMpC,OAJKpE,KAAKkvE,QAAQrgE,GACR7O,KAAKkvE,QAAQrgE,GAAK7S,GACvBgE,KAAKkvE,QAAQrgE,GAAO,CAAC7O,KAAKkvE,QAAQrgE,GAAMy2D,GADbtlE,KAAKkvE,QAAQrgE,GAAKhP,KAAKylE,IAD/BtlE,KAAKkvE,QAAQrgE,GAAOy2D,EAAUtlE,KAAKmvE,gBAIpDnvE,IACT,EAWAivE,EAAa/uE,UAAUsyB,KAAO,SAAcpuB,EAAOpI,EAAIyjB,GACrD,IAAI6lD,EAAW,IAAI0J,EAAGhzE,EAAIyjB,GAAWzf,MAAM,GACvC6O,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAMpC,OAJKpE,KAAKkvE,QAAQrgE,GACR7O,KAAKkvE,QAAQrgE,GAAK7S,GACvBgE,KAAKkvE,QAAQrgE,GAAO,CAAC7O,KAAKkvE,QAAQrgE,GAAMy2D,GADbtlE,KAAKkvE,QAAQrgE,GAAKhP,KAAKylE,IAD/BtlE,KAAKkvE,QAAQrgE,GAAOy2D,EAAUtlE,KAAKmvE,gBAIpDnvE,IACT,EAYAivE,EAAa/uE,UAAU2vE,eAAiB,SAAwBzrE,EAAOpI,EAAIyjB,EAAS+S,GAClF,IAAI3jB,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAEpC,IAAKpE,KAAKkvE,QAAQrgE,GAAM,OAAO7O,KAC/B,IAAKhE,EAGH,OAF4B,MAAtBgE,KAAKmvE,aAAoBnvE,KAAKkvE,QAAU,IAAIH,SACtC/uE,KAAKkvE,QAAQrgE,GAClB7O,KAGT,IAAI0tD,EAAY1tD,KAAKkvE,QAAQrgE,GAE7B,GAAI6+C,EAAU1xD,GAEP0xD,EAAU1xD,KAAOA,GACfw2B,IAAQk7B,EAAUl7B,MAClB/S,GAAWiuC,EAAUjuC,UAAYA,IAEV,MAAtBzf,KAAKmvE,aAAoBnvE,KAAKkvE,QAAU,IAAIH,SACtC/uE,KAAKkvE,QAAQrgE,QAEtB,CACL,IAAK,IAAI9R,EAAI,EAAGm/B,EAAS,GAAI9+B,EAASswD,EAAUtwD,OAAQL,EAAIK,EAAQL,KAE7D2wD,EAAU3wD,GAAGf,KAAOA,GACnBw2B,IAASk7B,EAAU3wD,GAAGy1B,MACtB/S,GAAWiuC,EAAU3wD,GAAG0iB,UAAYA,IAExCyc,EAAOr8B,KAAK6tD,EAAU3wD,IAOtBm/B,EAAO9+B,OAAQ4C,KAAKkvE,QAAQrgE,GAAyB,IAAlBqtB,EAAO9+B,OAAe8+B,EAAO,GAAKA,EACxC,MAAtBl8B,KAAKmvE,aAAoBnvE,KAAKkvE,QAAU,IAAIH,SAC3C/uE,KAAKkvE,QAAQrgE,EAC3B,CAEA,OAAO7O,IACT,EASAivE,EAAa/uE,UAAU4vE,mBAAqB,SAA4B1rE,GACtE,IAAIyK,EAaJ,OAXIzK,GACFyK,EAAMk7B,EAASA,EAAS3lC,EAAQA,EAC5BpE,KAAKkvE,QAAQrgE,KACa,MAAtB7O,KAAKmvE,aAAoBnvE,KAAKkvE,QAAU,IAAIH,SACtC/uE,KAAKkvE,QAAQrgE,MAG3B7O,KAAKkvE,QAAU,IAAIH,EACnB/uE,KAAKmvE,aAAe,GAGfnvE,IACT,EAKAivE,EAAa/uE,UAAUuc,IAAMwyD,EAAa/uE,UAAU2vE,eACpDZ,EAAa/uE,UAAU6vE,YAAcd,EAAa/uE,UAAU8a,GAK5Di0D,EAAa/uE,UAAU8vE,gBAAkB,WACvC,OAAOhwE,IACT,EAKAivE,EAAagB,SAAWlmC,EAKxBklC,EAAaA,aAAeA,EAKxB,qBAAuBhzE,IACzBA,EAAOH,QAAUmzE,EAIZ,EAED,SAAUhzE,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQo0E,UAAYp0E,EAAQq0E,aAAer0E,EAAQs0E,aAAet0E,EAAQu0E,UAAYv0E,EAAQw0E,gBAAkBx0E,EAAQwgD,aAAUlgD,EAElI,IAAIuoD,EAA4B,oBAAXziC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUnT,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXkT,QAAyBlT,EAAI0I,cAAgBwK,QAAUlT,IAAQkT,OAAOhiB,UAAY,gBAAkB8O,CAAK,EAEvQ41C,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfouE,EAAW9tB,EAFA,EAAoB,IAM/BC,EAAeD,EAFD,EAAoB,IAMlCE,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAM7B+C,EAAW/C,EAFD,EAAoB,KAM9B4C,EAAW5C,EAFD,EAAoB,IAI9B+tB,EAAS,EAAoB,IAE7BC,EAAc,EAAoB,IAIlC5f,EAASpO,EAFD,EAAoB,KAI5BygB,EAAS,EAAoB,IAE7BwN,EAAa,EAAoB,IAEjCC,EAAQ,EAAoB,IAE5BC,EAAQ,EAAoB,IAEhC,SAASnuB,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS02C,EAAgB12C,EAAKlM,EAAKc,GAAiK,OAApJd,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,CAAK,CAQhN,IAAI22C,GAAQ,EAAIH,EAASlJ,SAAS,mBAE9Bu0B,EAAU,eAEVC,EAAmB,CAAC,CAAChzB,KAAKC,UAAWmyB,GAAY,CAACpyB,KAAKC,UAAWqyB,GAAe,CAAC,KA4PtF,SAAoBhxD,EAAMgoB,GAIxB,OAHK2pC,EAAc3pC,EAAO,OACxBA,EAAM1E,OAAO,MAER0E,CACT,GAjQyG,CAAC0W,KAAKkzB,aAAcZ,GAAe,CAACtyB,KAAKkzB,aAAcX,GAAY,CAACvyB,KAAKkzB,aAAcb,GAAe,CAACryB,KAAKkzB,aAAcV,GAAkB,CAACxyB,KAAKkzB,aA2S3P,SAAqB5xD,EAAMgoB,GACzB,IAAImc,EAAU,CAAC,EACXv3C,EAAQoT,EAAKpT,OAAS,CAAC,EAc3B,OAbIA,EAAMilE,WAA8C,WAAjCC,EAAa9xD,GAAM6xD,YACxC1tB,EAAQ4tB,QAAS,GAEfnlE,EAAM06B,aAAewqC,EAAa9xD,GAAMsnB,WAAWmhB,WAAW,SAAW/pD,SAASozE,EAAa9xD,GAAMsnB,aAAe,OACtH6c,EAAQ6tB,MAAO,GAEbxuE,OAAOqkB,KAAKs8B,GAASnmD,OAAS,IAChCgqC,EAAQiqC,EAAYjqC,EAAOmc,IAEzB1e,WAAW74B,EAAMslE,YAAc,GAAK,IAEtClqC,GAAQ,IAAIsb,EAAapG,SAAU5Z,OAAO,MAAMlkB,OAAO4oB,IAElDA,CACT,GA5TuR,CAAC,KAuQxR,SAAqBhoB,EAAMgoB,GACzB,IAAIvpC,EAAQ8kD,EAAYrG,QAAQxiC,MAAMsF,GACtC,GAAa,MAATvhB,GAAoC,cAAnBA,EAAM+gD,WAA6BmyB,EAAc3pC,EAAO,MAC3E,OAAOA,EAIT,IAFA,IAAIo3B,GAAU,EACVv0C,EAAS7K,EAAK9V,YACV2gB,EAAO47B,UAAUtjC,SAAS,iBAC2B,UAAtDogC,EAAYrG,QAAQxiC,MAAMmQ,IAAW,CAAC,GAAG20B,WAC5C4f,GAAU,GAEZv0C,EAASA,EAAO3gB,WAElB,OAAIk1D,GAAU,EAAUp3B,EACjBA,EAAM8Y,SAAQ,IAAIwC,EAAapG,SAAU+C,OAAOjY,EAAMhqC,SAAW,GAAGiiD,OAAO,EAAG,CAAEmf,OAAQA,IACjG,GAtR4S,CAAC,IAAK+S,EAAWzkC,KAAKykC,EAAY,SAAU,CAAC,IAAKA,EAAWzkC,KAAKykC,EAAY,WAAY,CAAC,QAmQvY,WACE,OAAO,IAAI7uB,EAAapG,OAC1B,IAnQIk1B,EAAwB,CAAChB,EAAOzN,eAAgB2N,EAAWrN,oBAAoBzjB,QAAO,SAAU2X,EAAMvgD,GAExG,OADAugD,EAAKvgD,EAAK8nC,SAAW9nC,EACdugD,CACT,GAAG,CAAC,GAEAka,EAAoB,CAACjB,EAAO3N,WAAY4N,EAAYzN,gBAAiBE,EAAOnD,WAAY2Q,EAAWvN,eAAgBwN,EAAMpN,UAAWqN,EAAMnN,WAAW7jB,QAAO,SAAU2X,EAAMvgD,GAE9K,OADAugD,EAAKvgD,EAAK8nC,SAAW9nC,EACdugD,CACT,GAAG,CAAC,GAEAma,EAAY,SAAUhW,GAGxB,SAASgW,EAAUvjB,EAAOj+C,IAzB5B,SAAyBhO,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CA0BpJ2gD,CAAgB/iD,KAAM0xE,GAEtB,IAAI3tE,EA1BR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CA0B/NghD,CAA2BhjD,MAAO0xE,EAAUn0B,WAAa36C,OAAOyb,eAAeqzD,IAAY1vE,KAAKhC,KAAMmuD,EAAOj+C,IAezH,OAbAnM,EAAMoqD,MAAM9oD,KAAKlB,iBAAiB,QAASJ,EAAM4tE,QAAQ7kC,KAAK/oC,IAC9DA,EAAM8Y,UAAY9Y,EAAMoqD,MAAMpI,aAAa,gBAC3ChiD,EAAM8Y,UAAUrR,aAAa,mBAAmB,GAChDzH,EAAM8Y,UAAUrR,aAAa,YAAa,GAC1CzH,EAAMipB,SAAW,GACjB8jD,EAAiBtyD,OAAOza,EAAMmM,QAAQ8c,UAAUpiB,SAAQ,SAAUkjD,GAChE,IAAIiP,EAAQnY,EAAekJ,EAAM,GAC7BxoD,EAAWy3D,EAAM,GACjBziD,EAAUyiD,EAAM,IAEf7sD,EAAQ0hE,aAAet3D,IAAY61D,IACxCpsE,EAAM8tE,WAAWvsE,EAAUgV,EAC7B,IACOvW,CACT,CAqGA,OA7IF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAmB3eF,CAAUwuB,EAAWhW,GAuBrBtZ,EAAasvB,EAAW,CAAC,CACvB5uE,IAAK,aACLc,MAAO,SAAoB0B,EAAUgV,GACnCta,KAAKgtB,SAASntB,KAAK,CAACyF,EAAUgV,GAChC,GACC,CACDxX,IAAK,UACLc,MAAO,SAAiBiM,GACtB,GAAoB,kBAATA,EAET,OADA7P,KAAK6c,UAAUnJ,UAAY7D,EAAK4B,QAAQ,eAAgB,MACjDzR,KAAKmnD,UAEd,IAAI5D,EAAUvjD,KAAKmuD,MAAMvE,UAAU5pD,KAAKmuD,MAAM5wC,UAAUg2C,WAAWt3C,OACnE,GAAIsnC,EAAQsN,EAAOvU,QAAQsC,UAAW,CACpC,IAAIhvC,EAAO5P,KAAK6c,UAAUi1D,UAE1B,OADA9xE,KAAK6c,UAAUnJ,UAAY,IACpB,IAAIgvC,EAAapG,SAAU5Z,OAAO9yB,EAAM81C,EAAgB,CAAC,EAAGmL,EAAOvU,QAAQsC,SAAU2E,EAAQsN,EAAOvU,QAAQsC,WACrH,CAEA,IAAImzB,EAAmB/xE,KAAKgyE,kBACxBC,EAAoBrtB,EAAemtB,EAAkB,GACrDxjD,EAAkB0jD,EAAkB,GACpCC,EAAeD,EAAkB,GAEjC7qC,EAAQ+qC,EAASnyE,KAAK6c,UAAW0R,EAAiB2jD,GAOtD,OALInB,EAAc3pC,EAAO,OAAuD,MAA9CA,EAAM+X,IAAI/X,EAAM+X,IAAI/hD,OAAS,GAAGqJ,aAChE2gC,EAAQA,EAAM8Y,SAAQ,IAAIwC,EAAapG,SAAU+C,OAAOjY,EAAMhqC,SAAW,GAAG+O,OAAO,KAErFw5C,EAAMgI,IAAI,UAAW3tD,KAAK6c,UAAUnJ,UAAW0zB,GAC/CpnC,KAAK6c,UAAUnJ,UAAY,GACpB0zB,CACT,GACC,CACDtkC,IAAK,uBACLc,MAAO,SAA8BqY,EAAOpM,GAC1C,IAAIgK,EAAShU,UAAUzI,OAAS,QAAsBhB,IAAjByJ,UAAU,GAAmBA,UAAU,GAAKy1D,EAAQhf,QAAQgM,QAAQC,IAEzG,GAAqB,kBAAVtsC,EACTjc,KAAKmuD,MAAM/G,YAAYpnD,KAAKmnD,QAAQlrC,GAAQpM,GAC5C7P,KAAKmuD,MAAMvF,aAAa,EAAG0S,EAAQhf,QAAQgM,QAAQO,YAC9C,CACL,IAAIupB,EAAQpyE,KAAKmnD,QAAQt3C,GACzB7P,KAAKmuD,MAAMgR,gBAAe,IAAIzc,EAAapG,SAAU+C,OAAOpjC,GAAOuC,OAAO4zD,GAAQv4D,GAClF7Z,KAAKmuD,MAAMvF,aAAa3sC,EAAQm2D,EAAMh1E,SAAUk+D,EAAQhf,QAAQgM,QAAQO,OAC1E,CACF,GACC,CACD/lD,IAAK,UACLc,MAAO,SAAiBuL,GACtB,IAAIpF,EAAS/J,KAEb,IAAImP,EAAEtF,kBAAqB7J,KAAKmuD,MAAMlC,YAAtC,CACA,IAAIlF,EAAQ/mD,KAAKmuD,MAAM3F,eACnBphB,GAAQ,IAAIsb,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAChD2uB,EAAY5qC,KAAKmuD,MAAMnI,mBAAmBpb,UAC9C5qC,KAAK6c,UAAU/Q,QACf9L,KAAKmuD,MAAM5wC,UAAU2pC,OAAOoU,EAAQhf,QAAQgM,QAAQO,QACpDt8C,YAAW,WACT66B,EAAQA,EAAM5oB,OAAOzU,EAAOo9C,WAAWh7C,OAAO46C,EAAM3pD,QACpD2M,EAAOokD,MAAMgR,eAAe/3B,EAAOk0B,EAAQhf,QAAQgM,QAAQ+C,MAE3DthD,EAAOokD,MAAMvF,aAAaxhB,EAAMhqC,SAAW2pD,EAAM3pD,OAAQk+D,EAAQhf,QAAQgM,QAAQO,QACjF9+C,EAAOokD,MAAMnI,mBAAmBpb,UAAYA,EAC5C7gC,EAAOokD,MAAMriD,OACf,GAAG,EAbsD,CAc3D,GACC,CACDhJ,IAAK,kBACLc,MAAO,WACL,IAAIokD,EAAShoD,KAETuuB,EAAkB,GAClB2jD,EAAe,GAsBnB,OArBAlyE,KAAKgtB,SAASpiB,SAAQ,SAAUynE,GAC9B,IAAIC,EAAQ1tB,EAAeytB,EAAM,GAC7B/sE,EAAWgtE,EAAM,GACjBh4D,EAAUg4D,EAAM,GAEpB,OAAQhtE,GACN,KAAKw4C,KAAKC,UACRm0B,EAAaryE,KAAKya,GAClB,MACF,KAAKwjC,KAAKkzB,aACRziD,EAAgB1uB,KAAKya,GACrB,MACF,QACE,GAAG1P,QAAQ5I,KAAKgmD,EAAOnrC,UAAUrX,iBAAiBF,IAAW,SAAU8Z,GAErEA,EAAKyxD,GAAWzxD,EAAKyxD,IAAY,GACjCzxD,EAAKyxD,GAAShxE,KAAKya,EACrB,IAGN,IACO,CAACiU,EAAiB2jD,EAC3B,KAGKR,CACT,CA5HgB,CA4HdrsB,EAAS/I,SAOX,SAAS+0B,EAAYjqC,EAAOsc,EAAQ9/C,GAClC,MAAwE,YAAjD,qBAAX8/C,EAAyB,YAAciB,EAAQjB,IAClD9gD,OAAOqkB,KAAKy8B,GAAQ9D,QAAO,SAAUxY,EAAOtkC,GACjD,OAAOuuE,EAAYjqC,EAAOtkC,EAAK4gD,EAAO5gD,GACxC,GAAGskC,GAEIA,EAAMwY,QAAO,SAAUxY,EAAO4X,GACnC,OAAIA,EAAGv4C,YAAcu4C,EAAGv4C,WAAWi9C,GAC1Btc,EAAMvnC,KAAKm/C,GAEX5X,EAAM1E,OAAOsc,EAAGtc,QAAQ,EAAI6tC,EAASj0B,SAAS,CAAC,EAAGoJ,EAAgB,CAAC,EAAGhC,EAAQ9/C,GAAQo7C,EAAGv4C,YAEpG,GAAG,IAAIi8C,EAAapG,QAExB,CAEA,SAAS40B,EAAa9xD,GACpB,GAAIA,EAAK1F,WAAaokC,KAAKkzB,aAAc,MAAO,CAAC,EACjD,IAAIH,EAAU,sBACd,OAAOzxD,EAAKyxD,KAAazxD,EAAKyxD,GAAWxkE,OAAO02B,iBAAiB3jB,GACnE,CAEA,SAAS2xD,EAAc3pC,EAAOx3B,GAE5B,IADA,IAAI2iE,EAAU,GACLx1E,EAAIqqC,EAAM+X,IAAI/hD,OAAS,EAAGL,GAAK,GAAKw1E,EAAQn1E,OAASwS,EAAKxS,SAAUL,EAAG,CAC9E,IAAIiiD,EAAK5X,EAAM+X,IAAIpiD,GACnB,GAAyB,kBAAdiiD,EAAGtc,OAAqB,MACnC6vC,EAAUvzB,EAAGtc,OAAS6vC,CACxB,CACA,OAAOA,EAAQpyE,OAAO,EAAIyP,EAAKxS,UAAYwS,CAC7C,CAEA,SAAS+qD,EAAOv7C,GACd,GAA+B,IAA3BA,EAAK2G,WAAW3oB,OAAc,OAAO,EACzC,IAAI4O,EAAQklE,EAAa9xD,GACzB,MAAO,CAAC,QAAS,aAAarO,QAAQ/E,EAAMC,UAAY,CAC1D,CAEA,SAASkmE,EAAS/yD,EAAMmP,EAAiB2jD,GAEvC,OAAI9yD,EAAK1F,WAAa0F,EAAK2+B,UAClBm0B,EAAatyB,QAAO,SAAUxY,EAAO9sB,GAC1C,OAAOA,EAAQ8E,EAAMgoB,EACvB,GAAG,IAAIsb,EAAapG,SACXl9B,EAAK1F,WAAa0F,EAAK4xD,aACzB,GAAGpxB,OAAO59C,KAAKod,EAAK2G,YAAc,IAAI,SAAUqhB,EAAOq7B,GAC5D,IAAI+P,EAAgBL,EAAS1P,EAAWl0C,EAAiB2jD,GASzD,OARIzP,EAAU/oD,WAAa0F,EAAK4xD,eAC9BwB,EAAgBjkD,EAAgBqxB,QAAO,SAAU4yB,EAAel4D,GAC9D,OAAOA,EAAQmoD,EAAW+P,EAC5B,GAAGA,GACHA,GAAiB/P,EAAUoO,IAAY,IAAIjxB,QAAO,SAAU4yB,EAAel4D,GACzE,OAAOA,EAAQmoD,EAAW+P,EAC5B,GAAGA,IAEEprC,EAAM5oB,OAAOg0D,EACtB,GAAG,IAAI9vB,EAAapG,SAEb,IAAIoG,EAAapG,OAE5B,CAEA,SAASi1B,EAAW7tB,EAAQtkC,EAAMgoB,GAChC,OAAOiqC,EAAYjqC,EAAOsc,GAAQ,EACpC,CAEA,SAAS4sB,EAAgBlxD,EAAMgoB,GAC7B,IAAI3gC,EAAak8C,EAAYrG,QAAQQ,WAAWC,UAAU91B,KAAK7H,GAC3Du+B,EAAUgF,EAAYrG,QAAQQ,WAAWE,MAAM/1B,KAAK7H,GACpD6nB,EAAS0b,EAAYrG,QAAQQ,WAAWG,MAAMh2B,KAAK7H,GACnDmkC,EAAU,CAAC,EAoBf,OAnBA98C,EAAW+X,OAAOm/B,GAASn/B,OAAOyoB,GAAQr8B,SAAQ,SAAUjG,GAC1D,IAAIqS,EAAO2rC,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAMmT,WACzD,MAARt4C,IACFusC,EAAQvsC,EAAK6nC,UAAY7nC,EAAKpT,MAAMwb,GAChCmkC,EAAQvsC,EAAK6nC,aAGP,OADZ7nC,EAAOw6D,EAAsB7sE,KACRqS,EAAK6nC,WAAal6C,GAAQqS,EAAK8nC,UAAYn6C,IAC9D4+C,EAAQvsC,EAAK6nC,UAAY7nC,EAAKpT,MAAMwb,SAAShjB,GAGnC,OADZ4a,EAAOy6D,EAAkB9sE,KACJqS,EAAK6nC,WAAal6C,GAAQqS,EAAK8nC,UAAYn6C,IAC9DqS,EAAOy6D,EAAkB9sE,GACzB4+C,EAAQvsC,EAAK6nC,UAAY7nC,EAAKpT,MAAMwb,SAAShjB,GAEjD,IACIwG,OAAOqkB,KAAKs8B,GAASnmD,OAAS,IAChCgqC,EAAQiqC,EAAYjqC,EAAOmc,IAEtBnc,CACT,CAEA,SAASipC,EAAUjxD,EAAMgoB,GACvB,IAAIvpC,EAAQ8kD,EAAYrG,QAAQxiC,MAAMsF,GACtC,GAAa,MAATvhB,EAAe,OAAOupC,EAC1B,GAAIvpC,EAAMqC,qBAAqByiD,EAAYrG,QAAQG,MAAO,CACxD,IAAIyN,EAAQ,CAAC,EACTtmD,EAAQ/F,EAAM+F,MAAMwb,GACX,MAATxb,IACFsmD,EAAMrsD,EAAM+gD,UAAYh7C,EACxBwjC,GAAQ,IAAIsb,EAAapG,SAAU5Z,OAAOwnB,EAAOrsD,EAAM0lD,QAAQnkC,IAEnE,KAAoC,oBAAlBvhB,EAAM0lD,UACtBnc,EAAQiqC,EAAYjqC,EAAOvpC,EAAM+gD,SAAU/gD,EAAM0lD,QAAQnkC,KAE3D,OAAOgoB,CACT,CA8BA,SAASgpC,EAAahxD,EAAMgoB,GAM1B,OALK2pC,EAAc3pC,EAAO,QACpBuzB,EAAOv7C,IAASgoB,EAAMhqC,SAAW,GAAKgiB,EAAKoM,aAAemvC,EAAOv7C,EAAKoM,eACxE4b,EAAM1E,OAAO,MAGV0E,CACT,CAEA,SAAS+oC,EAAa/wD,EAAMgoB,GAC1B,GAAIuzB,EAAOv7C,IAAoC,MAA3BA,EAAKqzD,qBAA+B1B,EAAc3pC,EAAO,QAAS,CACpF,IAAIsrC,EAAatzD,EAAKwmB,aAAef,WAAWqsC,EAAa9xD,GAAMuzD,WAAa9tC,WAAWqsC,EAAa9xD,GAAMwzD,cAC1GxzD,EAAKqzD,mBAAmBI,UAAYzzD,EAAKyzD,UAAyB,IAAbH,GACvDtrC,EAAM1E,OAAO,KAEjB,CACA,OAAO0E,CACT,CAqBA,SAAS8oC,EAAU9wD,EAAMgoB,GACvB,IAAIx3B,EAAOwP,EAAKnQ,KAEhB,GAAgC,QAA5BmQ,EAAK9V,WAAW8B,QAClB,OAAOg8B,EAAM1E,OAAO9yB,EAAKkI,QAE3B,GAA2B,IAAvBlI,EAAKkI,OAAO1a,QAAgBgiB,EAAK9V,WAAWu8C,UAAUtjC,SAAS,gBACjE,OAAO6kB,EAET,IAAK8pC,EAAa9xD,EAAK9V,YAAYwpE,WAAWjrB,WAAW,OAAQ,CAE/D,IAAIkrB,EAAW,SAAkBC,EAAUn1E,GAEzC,OADAA,EAAQA,EAAM4T,QAAQ,aAAc,KACvBrU,OAAS,GAAK41E,EAAW,IAAMn1E,CAC9C,EAEA+R,GADAA,EAAOA,EAAK6B,QAAQ,QAAS,KAAKA,QAAQ,MAAO,MACrCA,QAAQ,SAAUshE,EAASjmC,KAAKimC,GAAU,KAC1B,MAAxB3zD,EAAKyoD,iBAA2BlN,EAAOv7C,EAAK9V,aAAuC,MAAxB8V,EAAKyoD,iBAA2BlN,EAAOv7C,EAAKyoD,oBACzGj4D,EAAOA,EAAK6B,QAAQ,OAAQshE,EAASjmC,KAAKimC,GAAU,MAE9B,MAApB3zD,EAAKoM,aAAuBmvC,EAAOv7C,EAAK9V,aAAmC,MAApB8V,EAAKoM,aAAuBmvC,EAAOv7C,EAAKoM,gBACjG5b,EAAOA,EAAK6B,QAAQ,OAAQshE,EAASjmC,KAAKimC,GAAU,IAExD,CACA,OAAO3rC,EAAM1E,OAAO9yB,EACtB,CA7MA8hE,EAAUlmB,SAAW,CACnBx+B,SAAU,GACV4kD,aAAa,GA6Mf91E,EAAQwgD,QAAUo1B,EAClB51E,EAAQw0E,gBAAkBA,EAC1Bx0E,EAAQu0E,UAAYA,EACpBv0E,EAAQs0E,aAAeA,EACvBt0E,EAAQq0E,aAAeA,EACvBr0E,EAAQo0E,UAAYA,CAEb,EAED,SAAUj0E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAQgCoL,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre8d,EAAU,EAAoB,GAY9B6S,EAAO,SAAUvjB,GAGnB,SAASujB,IAGP,OAZJ,SAAyB/wE,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMizE,GAR1B,SAAoCp7D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOizE,EAAK11B,WAAa36C,OAAOyb,eAAe40D,IAAO9zE,MAAMa,KAAM6F,WACtG,CAsBA,OA/BF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU+vB,EAAMvjB,GAQhBtN,EAAa6wB,EAAM,CAAC,CAClBnwE,IAAK,WACLc,MAAO,SAAkB6b,GACvB4iC,EAAK4wB,EAAK/yE,UAAUq9C,WAAa36C,OAAOyb,eAAe40D,EAAK/yE,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMyf,GACjGzf,KAAKsjD,QAAQl4C,UAAYpL,KAAKskD,QAAQl5C,QAAQ,IAChDpL,KAAKoiC,YAAYpiC,KAAKskD,QAAQ1F,SAElC,IACE,CAAC,CACH97C,IAAK,SACLc,MAAO,WACL,OAAOy+C,EAAK4wB,EAAK11B,WAAa36C,OAAOyb,eAAe40D,GAAO,SAAUjzE,MAAMgC,KAAKhC,KAClF,GACC,CACD8C,IAAK,UACLc,MAAO,WACL,OAAO,CACT,KAGKqvE,CACT,CA9BW,GARqBjkE,EAFMoxD,IAEepxD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAsC5EstC,SAEX22B,EAAKr0B,SAAW,OAChBq0B,EAAK7nE,QAAU,CAAC,SAAU,KAE1BtP,EAAQwgD,QAAU22B,CAEX,EAED,SAAUh3E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQo3E,YAAcp3E,EAAQwgD,aAAUlgD,EAExC,IAAIwoD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBggD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfugD,EAAeD,EAFD,EAAoB,IAMlCE,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAM7B+C,EAAW/C,EAFD,EAAoB,KAM9B4C,EAAW5C,EAFD,EAAoB,IAIlC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAM9F,SAASg0C,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAI/O,IAAI2jD,GAAQ,EAAIH,EAASlJ,SAAS,iBAE9B62B,EAAU,SAAUzX,GAGtB,SAASyX,EAAQhlB,EAAOj+C,IAX1B,SAAyBhO,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAYpJ2gD,CAAgB/iD,KAAMmzE,GAEtB,IAaMC,EAbFrvE,EAAQi/C,EAA2BhjD,MAAOmzE,EAAQ51B,WAAa36C,OAAOyb,eAAe80D,IAAUnxE,KAAKhC,KAAMmuD,EAAOj+C,IAErH,GAAI9J,MAAMC,QAAQtC,EAAMmM,QAAQ2M,WAAY,CAC1C,IAAIA,EAAY5X,SAASmE,cAAc,OACvC8pE,EAAYr2D,EAAW9Y,EAAMmM,QAAQ2M,WACrCsxC,EAAMtxC,UAAUvT,WAAW64B,aAAatlB,EAAWsxC,EAAMtxC,WACzD9Y,EAAM8Y,UAAYA,CACpB,KAA8C,kBAA5B9Y,EAAMmM,QAAQ2M,UAC9B9Y,EAAM8Y,UAAY5X,SAASQ,cAAc1B,EAAMmM,QAAQ2M,WAEvD9Y,EAAM8Y,UAAY9Y,EAAMmM,QAAQ2M,UAElC,OAAM9Y,EAAM8Y,qBAAqBshC,aAKjCp6C,EAAM8Y,UAAUgpC,UAAUluC,IAAI,cAC9B5T,EAAMsvE,SAAW,GACjBtvE,EAAMs4B,SAAW,CAAC,EAClBz5B,OAAOqkB,KAAKljB,EAAMmM,QAAQmsB,UAAUzxB,SAAQ,SAAU84C,GACpD3/C,EAAMuvE,WAAW5vB,EAAQ3/C,EAAMmM,QAAQmsB,SAASqnB,GAClD,IACA,GAAG94C,QAAQ5I,KAAK+B,EAAM8Y,UAAUrX,iBAAiB,mBAAmB,SAAUwD,GAC5EjF,EAAMywD,OAAOxrD,EACf,IACAjF,EAAMoqD,MAAMnzC,GAAGsgD,EAAQhf,QAAQpgB,OAAOwqB,eAAe,SAAU/gD,EAAMohD,GAC/DphD,IAAS21D,EAAQhf,QAAQpgB,OAAO+xB,kBAClClqD,EAAMmjD,OAAOH,EAEjB,IACAhjD,EAAMoqD,MAAMnzC,GAAGsgD,EAAQhf,QAAQpgB,OAAO8xB,iBAAiB,WACrD,IAAIulB,EAAwBxvE,EAAMoqD,MAAM5wC,UAAUwsC,WAE9ChD,EADyBnC,EAAe2uB,EAAuB,GAChC,GAGnCxvE,EAAMmjD,OAAOH,EACf,IACOhjD,IAxBEqvE,EAAOztB,EAAMp9C,MAAM,iCAAkCxE,EAAMmM,SAAU8yC,EAA2Bj/C,EAAOqvE,GAyBlH,CAiHA,OAnKF,SAAmBjwB,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAK3eF,CAAUiwB,EAASzX,GA+CnBtZ,EAAa+wB,EAAS,CAAC,CACrBrwE,IAAK,aACLc,MAAO,SAAoB8/C,EAAQn0C,GACjCvP,KAAKq8B,SAASqnB,GAAUn0C,CAC1B,GACC,CACDzM,IAAK,SACLc,MAAO,SAAgBoF,GACrB,IAAIe,EAAS/J,KAET0jD,EAAS,GAAGz9B,KAAKjkB,KAAKgH,EAAM68C,WAAW,SAAUt9B,GACnD,OAAoC,IAA7BA,EAAUxX,QAAQ,MAC3B,IACA,GAAK2yC,EAAL,CAKA,GAJAA,EAASA,EAAOvjD,MAAM,GACA,WAAlB6I,EAAMoC,SACRpC,EAAMwC,aAAa,OAAQ,UAEA,MAAzBxL,KAAKq8B,SAASqnB,GAAiB,CACjC,GAAmC,MAA/B1jD,KAAKmuD,MAAMjI,OAAOC,WAA4D,MAAvCnmD,KAAKmuD,MAAMjI,OAAOC,UAAUzC,GAErE,YADAiC,EAAM7wB,KAAK,wCAAyC4uB,EAAQ16C,GAG9D,GAAyC,MAArC25C,EAAYrG,QAAQxiC,MAAM4pC,GAE5B,YADAiC,EAAM7wB,KAAK,2CAA4C4uB,EAAQ16C,EAGnE,CACA,IAAIqkD,EAA8B,WAAlBrkD,EAAMoC,QAAuB,SAAW,QACxDpC,EAAM7E,iBAAiBkpD,GAAW,SAAUl+C,GAC1C,IAAIvL,OAAQ,EACZ,GAAsB,WAAlBoF,EAAMoC,QAAsB,CAC9B,GAAIpC,EAAMsiB,cAAgB,EAAG,OAC7B,IAAIjZ,EAAWrJ,EAAMkH,QAAQlH,EAAMsiB,eAEjC1nB,GADEyO,EAAS/G,aAAa,cAGhB+G,EAASzO,QAAS,EAE9B,MAEIA,GADEoF,EAAM68C,UAAUtjC,SAAS,eAGnBvZ,EAAMpF,QAAUoF,EAAMsC,aAAa,UAE7C6D,EAAE5D,iBAEJxB,EAAOokD,MAAMriD,QAEb,IAAI0nE,EAAwBzpE,EAAOokD,MAAM5wC,UAAUwsC,WAE/ChD,EADyBnC,EAAe4uB,EAAuB,GAChC,GAEnC,GAA+B,MAA3BzpE,EAAOsyB,SAASqnB,GAClB35C,EAAOsyB,SAASqnB,GAAQ1hD,KAAK+H,EAAQnG,QAChC,GAAI++C,EAAYrG,QAAQxiC,MAAM4pC,GAAQxjD,qBAAqByiD,EAAYrG,QAAQG,MAAO,CAE3F,KADA74C,EAAQ6vE,OAAO,SAAW/vB,IACd,OACZ35C,EAAOokD,MAAMgR,gBAAe,IAAIzc,EAAapG,SAAU+C,OAAO0H,EAAM9qC,OAAO9P,OAAO46C,EAAM3pD,QAAQslC,OApH1G,SAAyB1zB,EAAKlM,EAAKc,GAAiK,OAApJd,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,CAAK,CAoH/F02C,CAAgB,CAAC,EAAGhC,EAAQ9/C,IAAS03D,EAAQhf,QAAQgM,QAAQ+C,KACtK,MACEthD,EAAOokD,MAAMzK,OAAOA,EAAQ9/C,EAAO03D,EAAQhf,QAAQgM,QAAQ+C,MAE7DthD,EAAOm9C,OAAOH,EAChB,IAEA/mD,KAAKqzE,SAASxzE,KAAK,CAAC6jD,EAAQ16C,GApDT,CAqDrB,GACC,CACDlG,IAAK,SACLc,MAAO,SAAgBmjD,GACrB,IAAIxD,EAAmB,MAATwD,EAAgB,CAAC,EAAI/mD,KAAKmuD,MAAMvE,UAAU7C,GACxD/mD,KAAKqzE,SAASzoE,SAAQ,SAAUynE,GAC9B,IAAIC,EAAQ1tB,EAAeytB,EAAM,GAC7B3uB,EAAS4uB,EAAM,GACftpE,EAAQspE,EAAM,GAElB,GAAsB,WAAlBtpE,EAAMoC,QAAsB,CAC9B,IAAIgH,OAAS,EACb,GAAa,MAAT20C,EACF30C,EAAS,UACJ,GAAuB,MAAnBmxC,EAAQG,GACjBtxC,EAASpJ,EAAMvD,cAAc,yBACxB,IAAKW,MAAMC,QAAQk9C,EAAQG,IAAU,CAC1C,IAAI9/C,EAAQ2/C,EAAQG,GACC,kBAAV9/C,IACTA,EAAQA,EAAM6N,QAAQ,MAAO,QAE/BW,EAASpJ,EAAMvD,cAAc,iBAAmB7B,EAAQ,KAC1D,CACc,MAAVwO,GACFpJ,EAAMpF,MAAQ,GACdoF,EAAMsiB,eAAiB,GAEvBlZ,EAAOC,UAAW,CAEtB,MACE,GAAa,MAAT00C,EACF/9C,EAAM68C,UAAU9tC,OAAO,kBAClB,GAAI/O,EAAMsC,aAAa,SAAU,CAGtC,IAAIk2D,EAAWje,EAAQG,KAAY16C,EAAM7D,aAAa,UAA+B,MAAnBo+C,EAAQG,IAAmBH,EAAQG,GAAQ9lD,aAAeoL,EAAM7D,aAAa,UAA+B,MAAnBo+C,EAAQG,KAAoB16C,EAAM7D,aAAa,SAC1M6D,EAAM68C,UAAU5sB,OAAO,YAAauoC,EACtC,MACEx4D,EAAM68C,UAAU5sB,OAAO,YAAgC,MAAnBsqB,EAAQG,GAGlD,GACF,KAGKyvB,CACT,CAhKc,CAgKZ9tB,EAAS/I,SAIX,SAASo3B,EAAU72D,EAAW6mC,EAAQ9/C,GACpC,IAAIoF,EAAQ/D,SAASmE,cAAc,UACnCJ,EAAMwC,aAAa,OAAQ,UAC3BxC,EAAM68C,UAAUluC,IAAI,MAAQ+rC,GACf,MAAT9/C,IACFoF,EAAMpF,MAAQA,GAEhBiZ,EAAU3Q,YAAYlD,EACxB,CAEA,SAASkqE,EAAYr2D,EAAWuJ,GACzBhgB,MAAMC,QAAQ+f,EAAO,MACxBA,EAAS,CAACA,IAEZA,EAAOxb,SAAQ,SAAUyoE,GACvB,IAAIM,EAAQ1uE,SAASmE,cAAc,QACnCuqE,EAAM9tB,UAAUluC,IAAI,cACpB07D,EAASzoE,SAAQ,SAAUgpE,GACzB,GAAuB,kBAAZA,EACTF,EAAUC,EAAOC,OACZ,CACL,IAAIlwB,EAAS9gD,OAAOqkB,KAAK2sD,GAAS,GAC9BhwE,EAAQgwE,EAAQlwB,GAChBt9C,MAAMC,QAAQzC,GAW1B,SAAmBiZ,EAAW6mC,EAAQ1qB,GACpC,IAAIhwB,EAAQ/D,SAASmE,cAAc,UACnCJ,EAAM68C,UAAUluC,IAAI,MAAQ+rC,GAC5B1qB,EAAOpuB,SAAQ,SAAUhH,GACvB,IAAIwO,EAASnN,SAASmE,cAAc,WACtB,IAAVxF,EACFwO,EAAO5G,aAAa,QAAS5H,GAE7BwO,EAAO5G,aAAa,WAAY,YAElCxC,EAAMkD,YAAYkG,EACpB,IACAyK,EAAU3Q,YAAYlD,EACxB,CAvBU6qE,CAAUF,EAAOjwB,EAAQ9/C,GAEzB8vE,EAAUC,EAAOjwB,EAAQ9/C,EAE7B,CACF,IACAiZ,EAAU3Q,YAAYynE,EACxB,GACF,CAlCAR,EAAQ3nB,SAAW,CAAC,EAmDpB2nB,EAAQ3nB,SAAW,CACjB3uC,UAAW,KACXwf,SAAU,CACRy3C,MAAO,WACL,IAAI9rB,EAAShoD,KAET+mD,EAAQ/mD,KAAKmuD,MAAM3F,eACvB,GAAa,MAATzB,EACJ,GAAoB,GAAhBA,EAAM3pD,OAAa,CACrB,IAAImmD,EAAUvjD,KAAKmuD,MAAMvE,YACzBhnD,OAAOqkB,KAAKs8B,GAAS34C,SAAQ,SAAUjG,GAEoC,MAArEg+C,EAAYrG,QAAQxiC,MAAMnV,EAAMg+C,EAAYrG,QAAQH,MAAM+B,SAC5D8J,EAAOmG,MAAMzK,OAAO/+C,GAAM,EAE9B,GACF,MACE3E,KAAKmuD,MAAMtD,aAAa9D,EAAOuU,EAAQhf,QAAQgM,QAAQ+C,KAE3D,EACA0oB,UAAW,SAAmBnwE,GAC5B,IAAImiE,EAAQ/lE,KAAKmuD,MAAMvE,YAAmB,MAC5B,QAAVhmD,GAA4B,MAATmiE,EACrB/lE,KAAKmuD,MAAMzK,OAAO,QAAS,QAAS4X,EAAQhf,QAAQgM,QAAQ+C,MAClDznD,GAAmB,UAAVmiE,GACnB/lE,KAAKmuD,MAAMzK,OAAO,SAAS,EAAO4X,EAAQhf,QAAQgM,QAAQ+C,MAE5DrrD,KAAKmuD,MAAMzK,OAAO,YAAa9/C,EAAO03D,EAAQhf,QAAQgM,QAAQ+C,KAChE,EACAmT,OAAQ,SAAgB56D,GACtB,IAAImjD,EAAQ/mD,KAAKmuD,MAAM3F,eACnBjF,EAAUvjD,KAAKmuD,MAAMvE,UAAU7C,GAC/ByX,EAAS1gE,SAASylD,EAAQib,QAAU,GACxC,GAAc,OAAV56D,GAA4B,OAAVA,EAAgB,CACpC,IAAImoD,EAAqB,OAAVnoD,EAAiB,GAAK,EACX,QAAtB2/C,EAAQwwB,YAAqBhoB,IAAa,GAC9C/rD,KAAKmuD,MAAMzK,OAAO,SAAU8a,EAASzS,EAAUuP,EAAQhf,QAAQgM,QAAQ+C,KACzE,CACF,EACAt3C,KAAM,SAAcnQ,IACJ,IAAVA,IACFA,EAAQ6vE,OAAO,oBAEjBzzE,KAAKmuD,MAAMzK,OAAO,OAAQ9/C,EAAO03D,EAAQhf,QAAQgM,QAAQ+C,KAC3D,EACAh5B,KAAM,SAAczuB,GAClB,IAAImjD,EAAQ/mD,KAAKmuD,MAAM3F,eACnBjF,EAAUvjD,KAAKmuD,MAAMvE,UAAU7C,GACrB,UAAVnjD,EACsB,YAApB2/C,EAAc,MAAuC,cAApBA,EAAc,KACjDvjD,KAAKmuD,MAAMzK,OAAO,QAAQ,EAAO4X,EAAQhf,QAAQgM,QAAQ+C,MAEzDrrD,KAAKmuD,MAAMzK,OAAO,OAAQ,YAAa4X,EAAQhf,QAAQgM,QAAQ+C,MAGjErrD,KAAKmuD,MAAMzK,OAAO,OAAQ9/C,EAAO03D,EAAQhf,QAAQgM,QAAQ+C,KAE7D,IAIJvvD,EAAQwgD,QAAU62B,EAClBr3E,EAAQo3E,YAAcA,CAEf,EAED,SAAUj3E,EAAQH,GAExBG,EAAOH,QAAU,qOAEV,EAED,SAAUG,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAQgCoL,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre0xB,EAAU,EAAoB,IAY9BC,EAAc,SAAUC,GAG1B,SAASD,EAAYjtD,EAAQi6C,IAT/B,SAAyB/+D,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMi0E,GAEtB,IAAIlwE,EAVR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAU/NghD,CAA2BhjD,MAAOi0E,EAAY12B,WAAa36C,OAAOyb,eAAe41D,IAAcjyE,KAAKhC,KAAMgnB,IAOtH,OALAjjB,EAAMk9D,MAAMvtD,UAAYutD,EACxBl9D,EAAM8Y,UAAUgpC,UAAUluC,IAAI,mBAC9B,GAAGxX,MAAM6B,KAAK+B,EAAM8Y,UAAUrX,iBAAiB,mBAAoB,EAAG,GAAGoF,SAAQ,SAAU0K,GACzFA,EAAKuwC,UAAUluC,IAAI,aACrB,IACO5T,CACT,CAyBA,OAzCF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU+wB,EAAaC,GAevB9xB,EAAa6xB,EAAa,CAAC,CACzBnxE,IAAK,YACLc,MAAO,SAAmBwO,GACxB,IAAIkD,EAAO+sC,EAAK4xB,EAAY/zE,UAAUq9C,WAAa36C,OAAOyb,eAAe41D,EAAY/zE,WAAY,YAAaF,MAAMgC,KAAKhC,KAAMoS,GAE/H,OADAkD,EAAKtJ,MAAMmoE,gBAAkB/hE,EAAOjN,aAAa,UAAY,GACtDmQ,CACT,GACC,CACDxS,IAAK,aACLc,MAAO,SAAoB0R,EAAMkD,GAC/B6pC,EAAK4xB,EAAY/zE,UAAUq9C,WAAa36C,OAAOyb,eAAe41D,EAAY/zE,WAAY,aAAcF,MAAMgC,KAAKhC,KAAMsV,EAAMkD,GAC3H,IAAI47D,EAAap0E,KAAKihE,MAAMx7D,cAAc,mBACtC7B,EAAQ0R,GAAOA,EAAKnQ,aAAa,eAAsB,GACvDivE,IACyB,SAAvBA,EAAWhpE,QACbgpE,EAAWpoE,MAAMqoE,OAASzwE,EAE1BwwE,EAAWpoE,MAAMsoE,KAAO1wE,EAG9B,KAGKqwE,CACT,CAxCkB,GARcjlE,EAFMglE,IAEehlE,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAgD5EstC,SAEXxgD,EAAQwgD,QAAU23B,CAEX,EAED,SAAUh4E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAQgCoL,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre0xB,EAAU,EAAoB,IAY9BO,EAAa,SAAUL,GAGzB,SAASK,EAAWvtD,EAAQ4+C,IAT9B,SAAyB1jE,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMu0E,GAEtB,IAAIxwE,EAVR,SAAoC8T,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAU/NghD,CAA2BhjD,MAAOu0E,EAAWh3B,WAAa36C,OAAOyb,eAAek2D,IAAavyE,KAAKhC,KAAMgnB,IAQpH,OANAjjB,EAAM8Y,UAAUgpC,UAAUluC,IAAI,kBAC9B,GAAG/M,QAAQ5I,KAAK+B,EAAM8Y,UAAUrX,iBAAiB,oBAAoB,SAAU8P,GAC7EA,EAAK5B,UAAYkyD,EAAMtwD,EAAKnQ,aAAa,eAAiB,GAC5D,IACApB,EAAMywE,YAAczwE,EAAM8Y,UAAUpX,cAAc,gBAClD1B,EAAMo9D,WAAWp9D,EAAMywE,aAChBzwE,CACT,CAWA,OA5BF,SAAmBo/C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUqxB,EAAYL,GAgBtB9xB,EAAamyB,EAAY,CAAC,CACxBzxE,IAAK,aACLc,MAAO,SAAoB0R,EAAMkD,GAC/B6pC,EAAKkyB,EAAWr0E,UAAUq9C,WAAa36C,OAAOyb,eAAek2D,EAAWr0E,WAAY,aAAcF,MAAMgC,KAAKhC,KAAMsV,EAAMkD,GACzHlD,EAAOA,GAAQtV,KAAKw0E,YACpBx0E,KAAKihE,MAAMvtD,UAAY4B,EAAK5B,SAC9B,KAGK6gE,CACT,CA3BiB,GARevlE,EAFMglE,IAEehlE,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAmC5EstC,SAEXxgD,EAAQwgD,QAAUi4B,CAEX,EAED,SAAUt4E,EAAQH,EAASqhD,GAEjC,aAGAv6C,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIw+C,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfsyE,EAAU,WACZ,SAASA,EAAQtmB,EAAOoY,GACtB,IAAIxiE,EAAQ/D,MAJhB,SAAyBkC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAMpJ2gD,CAAgB/iD,KAAMy0E,GAEtBz0E,KAAKmuD,MAAQA,EACbnuD,KAAKumE,gBAAkBA,GAAmBthE,SAASiP,KACnDlU,KAAKqF,KAAO8oD,EAAMpI,aAAa,cAC/B/lD,KAAKqF,KAAKqO,UAAY1T,KAAK0X,YAAYg9D,SACnC10E,KAAKmuD,MAAM9oD,OAASrF,KAAKmuD,MAAMnI,oBACjChmD,KAAKmuD,MAAM9oD,KAAKlB,iBAAiB,UAAU,WACzCJ,EAAMsB,KAAK2G,MAAM2mE,WAAa,EAAI5uE,EAAMoqD,MAAM9oD,KAAKulC,UAAY,IACjE,IAEF5qC,KAAKoW,MACP,CA2CA,OAzCAgsC,EAAaqyB,EAAS,CAAC,CACrB3xE,IAAK,OACLc,MAAO,WACL5D,KAAKqF,KAAKwgD,UAAUluC,IAAI,YAC1B,GACC,CACD7U,IAAK,WACLc,MAAO,SAAkB+wE,GACvB,IAAIhrC,EAAOgrC,EAAUhrC,KAAOgrC,EAAUtxC,MAAQ,EAAIrjC,KAAKqF,KAAKq/B,YAAc,EAEtE3c,EAAM4sD,EAAUprB,OAASvpD,KAAKmuD,MAAM9oD,KAAKulC,UAC7C5qC,KAAKqF,KAAK2G,MAAM29B,KAAOA,EAAO,KAC9B3pC,KAAKqF,KAAK2G,MAAM+b,IAAMA,EAAM,KAC5B/nB,KAAKqF,KAAKwgD,UAAU9tC,OAAO,WAC3B,IAAIuxC,EAAkBtpD,KAAKumE,gBAAgB98B,wBACvCmrC,EAAa50E,KAAKqF,KAAKokC,wBACvB9+B,EAAQ,EASZ,GARIiqE,EAAWvwC,MAAQilB,EAAgBjlB,QACrC15B,EAAQ2+C,EAAgBjlB,MAAQuwC,EAAWvwC,MAC3CrkC,KAAKqF,KAAK2G,MAAM29B,KAAOA,EAAOh/B,EAAQ,MAEpCiqE,EAAWjrC,KAAO2f,EAAgB3f,OACpCh/B,EAAQ2+C,EAAgB3f,KAAOirC,EAAWjrC,KAC1C3pC,KAAKqF,KAAK2G,MAAM29B,KAAOA,EAAOh/B,EAAQ,MAEpCiqE,EAAWrrB,OAASD,EAAgBC,OAAQ,CAC9C,IAAI9jB,EAASmvC,EAAWrrB,OAASqrB,EAAW7sD,IACxC8sD,EAAgBF,EAAUprB,OAASorB,EAAU5sD,IAAM0d,EACvDzlC,KAAKqF,KAAK2G,MAAM+b,IAAMA,EAAM8sD,EAAgB,KAC5C70E,KAAKqF,KAAKwgD,UAAUluC,IAAI,UAC1B,CACA,OAAOhN,CACT,GACC,CACD7H,IAAK,OACLc,MAAO,WACL5D,KAAKqF,KAAKwgD,UAAU9tC,OAAO,cAC3B/X,KAAKqF,KAAKwgD,UAAU9tC,OAAO,YAC7B,KAGK08D,CACT,CA5Dc,GA8Dd34E,EAAQwgD,QAAUm4B,CAEX,EAED,SAAUx4E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAAIghD,EAAgb,SAAU7lD,EAAKhC,GAAK,GAAIqJ,MAAMC,QAAQtH,GAAQ,OAAOA,EAAY,GAAImjB,OAAOC,YAAYvf,OAAO7D,GAAQ,OAAxf,SAAuBA,EAAKhC,GAAK,IAAI8nD,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK5oD,EAAW,IAAM,IAAK,IAAiC6oD,EAA7B7iC,EAAKrjB,EAAImjB,OAAOC,cAAmB2iC,GAAMG,EAAK7iC,EAAG3G,QAAQvK,QAAoB2zC,EAAKhlD,KAAKolD,EAAGrhD,QAAY7G,GAAK8nD,EAAKznD,SAAWL,GAA3D+nD,GAAK,GAAkE,CAAE,MAAO75B,GAAO85B,GAAK,EAAMC,EAAK/5B,CAAK,CAAE,QAAU,KAAW65B,GAAM1iC,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAI2iC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAAuHK,CAAcnmD,EAAKhC,GAAa,MAAM,IAAIqF,UAAU,uDAA2D,EAE7oBigD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEreF,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfqgD,EAAWC,EAFD,EAAoB,IAM9B4J,EAAY5J,EAFD,EAAoB,IAI/BqyB,EAAQ,EAAoB,IAE5BC,EAAStyB,EAAuBqyB,GAIhCE,EAASvyB,EAFD,EAAoB,KAI5B6C,EAAa,EAAoB,IAIjC2vB,EAAUxyB,EAFD,EAAoB,KAIjC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAI8xB,EAAiB,CAAC,CAAC,CAAEzpD,OAAQ,CAAC,IAAK,IAAK,KAAK,KAAW,CAAC,OAAQ,SAAU,YAAa,QAAS,CAAC,CAAE4G,KAAM,WAAa,CAAEA,KAAM,WAAa,CAAC,UAE7I8iD,EAAY,SAAUC,GAGxB,SAASD,EAAUhnB,EAAOj+C,GACxB6yC,EAAgB/iD,KAAMm1E,GAES,MAA3BjlE,EAAQ6qC,QAAQ+Q,SAAwD,MAArC57C,EAAQ6qC,QAAQ+Q,QAAQjvC,YAC7D3M,EAAQ6qC,QAAQ+Q,QAAQjvC,UAAYq4D,GAGtC,IAAInxE,EAAQi/C,EAA2BhjD,MAAOm1E,EAAU53B,WAAa36C,OAAOyb,eAAe82D,IAAYnzE,KAAKhC,KAAMmuD,EAAOj+C,IAGzH,OADAnM,EAAMoqD,MAAMtxC,UAAUgpC,UAAUluC,IAAI,WAC7B5T,CACT,CAiBA,OA9BAm/C,EAAUiyB,EAAWC,GAerBhzB,EAAa+yB,EAAW,CAAC,CACvBryE,IAAK,gBACLc,MAAO,SAAuBkoD,GAC5BA,EAAQjvC,UAAUgpC,UAAUluC,IAAI,WAChC3X,KAAKq1E,aAAa,GAAGl1E,MAAM6B,KAAK8pD,EAAQjvC,UAAUrX,iBAAiB,WAAYyvE,EAAQ34B,SACvFt8C,KAAKs1E,aAAa,GAAGn1E,MAAM6B,KAAK8pD,EAAQjvC,UAAUrX,iBAAiB,WAAYyvE,EAAQ34B,SACvFt8C,KAAKulE,QAAU,IAAIgQ,EAAYv1E,KAAKmuD,MAAOnuD,KAAKkQ,QAAQk5C,QACpD0C,EAAQjvC,UAAUpX,cAAc,aAClCzF,KAAKmuD,MAAM7H,SAASsV,WAAW,CAAE94D,IAAK,IAAKg8D,UAAU,IAAQ,SAAU/X,EAAOtnC,GAC5EqsC,EAAQzvB,SAAe,KAAEr6B,KAAK8pD,GAAUrsC,EAAQikC,OAAO3vC,KACzD,GAEJ,KAGKohE,CACT,CAhCgB,CAgCdJ,EAAOz4B,SAET64B,EAAU3pB,UAAW,EAAIhJ,EAASlG,UAAS,EAAM,CAAC,EAAGy4B,EAAOz4B,QAAQkP,SAAU,CAC5EzQ,QAAS,CACP+Q,QAAS,CACPzvB,SAAU,CACRtoB,KAAM,SAAcnQ,GAClB,GAAIA,EAAO,CACT,IAAImjD,EAAQ/mD,KAAKmuD,MAAM3F,eACvB,GAAa,MAATzB,GAAiC,GAAhBA,EAAM3pD,OAAa,OACxC,IAAIspE,EAAU1mE,KAAKmuD,MAAM/+B,QAAQ23B,GAC7B,iBAAiBvoD,KAAKkoE,IAA2C,IAA/BA,EAAQ31D,QAAQ,aACpD21D,EAAU,UAAYA,GAEV1mE,KAAKmuD,MAAM9H,MAAMkf,QACvBU,KAAK,OAAQS,EACvB,MACE1mE,KAAKmuD,MAAMzK,OAAO,QAAQ,EAE9B,OAMR,IAAI6xB,EAAc,SAAUC,GAG1B,SAASD,EAAYpnB,EAAO/E,GAC1BrG,EAAgB/iD,KAAMu1E,GAEtB,IAAIxrE,EAASi5C,EAA2BhjD,MAAOu1E,EAAYh4B,WAAa36C,OAAOyb,eAAek3D,IAAcvzE,KAAKhC,KAAMmuD,EAAO/E,IAG9H,OADAr/C,EAAO28D,QAAU38D,EAAO1E,KAAKI,cAAc,gBACpCsE,CACT,CAyDA,OAlEAm5C,EAAUqyB,EAAaC,GAWvBpzB,EAAamzB,EAAa,CAAC,CACzBzyE,IAAK,SACLc,MAAO,WACL,IAAIokD,EAAShoD,KAEbqiD,EAAKkzB,EAAYr1E,UAAUq9C,WAAa36C,OAAOyb,eAAek3D,EAAYr1E,WAAY,SAAUF,MAAMgC,KAAKhC,MAC3GA,KAAKqF,KAAKI,cAAc,eAAetB,iBAAiB,SAAS,SAAUC,GACrE4jD,EAAO3iD,KAAKwgD,UAAUtjC,SAAS,cACjCylC,EAAOwe,OAEPxe,EAAOie,KAAK,OAAQje,EAAO0e,QAAQplD,aAErCld,EAAMmH,gBACR,IACAvL,KAAKqF,KAAKI,cAAc,eAAetB,iBAAiB,SAAS,SAAUC,GACzE,GAAwB,MAApB4jD,EAAO2e,UAAmB,CAC5B,IAAI5f,EAAQiB,EAAO2e,UACnB3e,EAAO4e,eACP5e,EAAOmG,MAAMxF,WAAW5B,EAAO,QAAQ,EAAOsF,EAAU/P,QAAQgM,QAAQ+C,aACjErD,EAAO2e,SAChB,CACAviE,EAAMmH,iBACNy8C,EAAO5xC,MACT,IACApW,KAAKmuD,MAAMnzC,GAAGqxC,EAAU/P,QAAQpgB,OAAO+xB,kBAAkB,SAAUlH,EAAOwP,EAAU18C,GAClF,GAAa,MAATktC,EAAJ,CACA,GAAqB,IAAjBA,EAAM3pD,QAAgByc,IAAWwyC,EAAU/P,QAAQgM,QAAQ+C,KAAM,CACnE,IAAIoT,EAAwBzW,EAAOmG,MAAMjI,OAAO6J,WAAWilB,EAAO14B,QAASyK,EAAM9qC,OAC7EyiD,EAAyB9Z,EAAe6Z,EAAuB,GAC/D1qD,EAAO2qD,EAAuB,GAC9B9lB,EAAS8lB,EAAuB,GAEpC,GAAY,MAAR3qD,EAAc,CAChBi0C,EAAO2e,UAAY,IAAIrhB,EAAW8F,MAAMrE,EAAM9qC,MAAQ28B,EAAQ7kC,EAAK3W,UACnE,IAAIspE,EAAUsO,EAAO14B,QAAQiH,QAAQxvC,EAAKuvC,SAK1C,OAJA0E,EAAO0e,QAAQplD,YAAcolD,EAC7B1e,EAAO0e,QAAQl7D,aAAa,OAAQk7D,GACpC1e,EAAOrrC,YACPqrC,EAAOxjB,SAASwjB,EAAOmG,MAAM9E,UAAUrB,EAAO2e,WAEhD,CACF,aACS3e,EAAO2e,UAEhB3e,EAAO5xC,MAnBkB,CAoB3B,GACF,GACC,CACDtT,IAAK,OACLc,MAAO,WACLy+C,EAAKkzB,EAAYr1E,UAAUq9C,WAAa36C,OAAOyb,eAAek3D,EAAYr1E,WAAY,OAAQF,MAAMgC,KAAKhC,MACzGA,KAAKqF,KAAKqG,gBAAgB,YAC5B,KAGK6pE,CACT,CApEkB,CAoEhBT,EAAMpQ,aAER6Q,EAAYb,SAAW,CAAC,0FAA2F,mGAAoG,4BAA6B,6BAA6Br2E,KAAK,IAEtRvC,EAAQwgD,QAAU64B,CAEX,EAED,SAAUl5E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAEI6xE,EAAShzB,EAFD,EAAoB,KAI5B+tB,EAAS,EAAoB,IAE7BE,EAAa,EAAoB,IAEjCgF,EAAU,EAAoB,IAI9BC,EAAelzB,EAFD,EAAoB,KAMlCmzB,EAAWnzB,EAFD,EAAoB,KAI9BozB,EAAQ,EAAoB,IAE5BC,EAASrzB,EAAuBozB,GAEhCpF,EAAc,EAAoB,IAElCvN,EAAS,EAAoB,IAE7ByN,EAAQ,EAAoB,IAE5BC,EAAQ,EAAoB,IAI5BmF,EAAStzB,EAFD,EAAoB,KAM5BuzB,EAAWvzB,EAFD,EAAoB,KAM9BuyB,EAASvyB,EAFD,EAAoB,KAM5BwzB,EAAWxzB,EAFD,EAAoB,KAM9ByzB,EAAWzzB,EAFD,EAAoB,KAM9B0zB,EAAc1zB,EAFD,EAAoB,KAMjC2zB,EAAU3zB,EAFD,EAAoB,KAM7B4zB,EAAU5zB,EAFD,EAAoB,KAI7B6zB,EAAQ,EAAoB,IAE5BzlB,EAASpO,EAAuB6zB,GAIhCC,EAAY9zB,EAFD,EAAoB,KAM/B+zB,EAAW/zB,EAFD,EAAoB,KAM9Bg0B,EAAYh0B,EAFD,EAAoB,KAM/BwyB,EAAUxyB,EAFD,EAAoB,KAM7BoiB,EAAWpiB,EAFD,EAAoB,KAM9BkiB,EAAgBliB,EAFD,EAAoB,KAMnCmiB,EAAeniB,EAFD,EAAoB,KAMlCqiB,EAAYriB,EAFD,EAAoB,KAM/Bi0B,EAAWj0B,EAFD,EAAoB,MAM9Bk0B,EAASl0B,EAFD,EAAoB,KAIhC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9FymE,EAAOn5B,QAAQF,SAAS,CACtB,kCAAmCs0B,EAAWrN,mBAE9C,0BAA2BmN,EAAO1N,WAClC,+BAAgC2N,EAAYxN,gBAC5C,0BAA2BC,EAAOlD,WAClC,8BAA+B0Q,EAAWtN,eAC1C,yBAA0BuN,EAAMrN,UAChC,yBAA0BsN,EAAMlN,UAEhC,0BAA2B8M,EAAO3N,WAClC,+BAAgC4N,EAAYzN,gBAC5C,0BAA2BE,EAAOnD,WAClC,8BAA+B2Q,EAAWvN,eAC1C,yBAA0BwN,EAAMpN,UAChC,yBAA0BqN,EAAMnN,YAC/B,GAEHgS,EAAOn5B,QAAQF,SAAS,CACtB,gBAAiBo0B,EAAO1N,WACxB,oBAAqB4N,EAAWtN,eAChC,iBAAkBsS,EAAQkB,YAE1B,qBAAsBnG,EAAYzN,gBAClC,gBAAiBE,EAAOnD,WACxB,eAAgB4Q,EAAMrN,UACtB,eAAgBsN,EAAMlN,UAEtB,qBAAsBiS,EAAar5B,QACnC,qBAAsBuU,EAAOvU,QAC7B,iBAAkBs5B,EAASt5B,QAC3B,eAAgBw5B,EAAOx5B,QAEvB,eAAgBy5B,EAAOz5B,QACvB,eAAgBg6B,EAAM9mB,KACtB,iBAAkBwmB,EAAS15B,QAC3B,eAAgB04B,EAAO14B,QACvB,iBAAkB25B,EAAS35B,QAC3B,iBAAkB45B,EAAS55B,QAC3B,oBAAqB65B,EAAY75B,QAEjC,gBAAiB85B,EAAQ95B,QACzB,gBAAiB+5B,EAAQ/5B,QAEzB,oBAAqBu5B,EAAMgB,SAE3B,kBAAmBN,EAAUj6B,QAC7B,iBAAkBk6B,EAASl6B,QAC3B,kBAAmBm6B,EAAUn6B,QAE7B,gBAAiBo6B,EAASp6B,QAC1B,cAAeq6B,EAAOr6B,QAEtB,WAAY24B,EAAQ34B,QACpB,YAAauoB,EAASvoB,QACtB,iBAAkBsoB,EAAatoB,QAC/B,kBAAmBqoB,EAAcroB,QACjC,aAAcwoB,EAAUxoB,UACvB,GAEHxgD,EAAQwgD,QAAUm5B,EAAOn5B,OAElB,EAED,SAAUrgD,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQ86E,iBAAcx6E,EAEtB,IAQgC4S,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre2K,EAAa,EAAoB,GAEjCtK,GAE4B3zC,EAFSi+C,IAEYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAQnF8nE,EAAkB,SAAU5W,GAG9B,SAAS4W,IAGP,OAZJ,SAAyB50E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAM82E,GAR1B,SAAoCj/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAO82E,EAAgBv5B,WAAa36C,OAAOyb,eAAey4D,IAAkB33E,MAAMa,KAAM6F,WAC5H,CA4BA,OArCF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU4zB,EAAiB5W,GAQ3B9d,EAAa00B,EAAiB,CAAC,CAC7Bh0E,IAAK,MACLc,MAAO,SAAawb,EAAMxb,GACxB,GAAc,OAAVA,GAA4B,OAAVA,EAAgB,CACpC,IAAI46D,EAASx+D,KAAK4D,MAAMwb,IAAS,EACjCxb,EAAkB,OAAVA,EAAiB46D,EAAS,EAAIA,EAAS,CACjD,CACA,OAAc,IAAV56D,GACF5D,KAAK+X,OAAOqH,IACL,GAEAijC,EAAKy0B,EAAgB52E,UAAUq9C,WAAa36C,OAAOyb,eAAey4D,EAAgB52E,WAAY,MAAOF,MAAMgC,KAAKhC,KAAMof,EAAMxb,EAEvI,GACC,CACDd,IAAK,SACLc,MAAO,SAAgBwb,EAAMxb,GAC3B,OAAOy+C,EAAKy0B,EAAgB52E,UAAUq9C,WAAa36C,OAAOyb,eAAey4D,EAAgB52E,WAAY,SAAUF,MAAMgC,KAAKhC,KAAMof,EAAMxb,IAAUy+C,EAAKy0B,EAAgB52E,UAAUq9C,WAAa36C,OAAOyb,eAAey4D,EAAgB52E,WAAY,SAAUF,MAAMgC,KAAKhC,KAAMof,EAAMthB,SAAS8F,GAC1R,GACC,CACDd,IAAK,QACLc,MAAO,SAAewb,GACpB,OAAOthB,SAASukD,EAAKy0B,EAAgB52E,UAAUq9C,WAAa36C,OAAOyb,eAAey4D,EAAgB52E,WAAY,QAASF,MAAMgC,KAAKhC,KAAMof,UAAUhjB,CACpJ,KAGK06E,CACT,CApCsB,CAoCpBn0B,EAAYrG,QAAQQ,WAAWE,OAE7B45B,EAAc,IAAIE,EAAgB,SAAU,YAAa,CAC3DlwD,MAAO+7B,EAAYrG,QAAQH,MAAM8B,MACjCkI,UAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGnCrqD,EAAQ86E,YAAcA,CAEf,EAED,SAAU36E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAIgCoL,EAJ5B+hD,EAAS,EAAoB,GAY7BgmB,EAAa,SAAUnnB,GAGzB,SAASmnB,IAGP,OAZJ,SAAyB70E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAM+2E,GAR1B,SAAoCl/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAO+2E,EAAWx5B,WAAa36C,OAAOyb,eAAe04D,IAAa53E,MAAMa,KAAM6F,WAClH,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU6zB,EAAYnnB,GAQfmnB,CACT,CAViB,GARe/nE,EAFK+hD,IAEgB/hD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAkB7EstC,SAEVy6B,EAAWn4B,SAAW,aACtBm4B,EAAW3rE,QAAU,aAErBtP,EAAQwgD,QAAUy6B,CAEX,EAED,SAAU96E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAMgCoL,EAN5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEf4uD,EAAS,EAAoB,GAY7BimB,EAAS,SAAUpnB,GAGrB,SAASonB,IAGP,OAZJ,SAAyB90E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMg3E,GAR1B,SAAoCn/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOg3E,EAAOz5B,WAAa36C,OAAOyb,eAAe24D,IAAS73E,MAAMa,KAAM6F,WAC1G,CASA,OAlBF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAU8zB,EAAQpnB,GAQlBxN,EAAa40B,EAAQ,KAAM,CAAC,CAC1Bl0E,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,OAAOtjD,KAAKoL,QAAQ2F,QAAQuyC,EAAQl4C,SAAW,CACjD,KAGK4rE,CACT,CAjBa,GARmBhoE,EAFK+hD,IAEgB/hD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAyB7EstC,SAEV06B,EAAOp4B,SAAW,SAClBo4B,EAAO5rE,QAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAEhDtP,EAAQwgD,QAAU06B,CAEX,EAED,SAAU/6E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQ+6E,cAAWz6E,EAErC,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreK,EAAcF,EAFD,EAAoB,IAMjCgN,EAAUhN,EAFD,EAAoB,IAM7BiY,EAAcjY,EAFD,EAAoB,KAIrC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAI9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAIyzB,EAAW,SAAUjnB,GAGvB,SAASinB,IAGP,OAFA9zB,EAAgB/iD,KAAM62E,GAEf7zB,EAA2BhjD,MAAO62E,EAASt5B,WAAa36C,OAAOyb,eAAew4D,IAAW13E,MAAMa,KAAM6F,WAC9G,CAuCA,OA7CAq9C,EAAU2zB,EAAUjnB,GAQpBxN,EAAay0B,EAAU,CAAC,CACtB/zE,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GACvBe,IAASsyE,EAAKr4B,UAAah7C,EAG7By+C,EAAKw0B,EAAS32E,UAAUq9C,WAAa36C,OAAOyb,eAAew4D,EAAS32E,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,GAFjH5D,KAAKoiC,YAAYugB,EAAYrG,QAAQx4C,OAAO9D,KAAKskD,QAAQ19B,OAI7D,GACC,CACD9jB,IAAK,SACLc,MAAO,WACY,MAAb5D,KAAKwb,MAA6B,MAAbxb,KAAKyb,KAC5Bzb,KAAKiqB,OAAOlS,SAEZsqC,EAAKw0B,EAAS32E,UAAUq9C,WAAa36C,OAAOyb,eAAew4D,EAAS32E,WAAY,SAAUF,MAAMgC,KAAKhC,KAEzG,GACC,CACD8C,IAAK,cACLc,MAAO,SAAqBe,EAAMf,GAEhC,OADA5D,KAAKiqB,OAAO4iC,QAAQ7sD,KAAK44C,OAAO54C,KAAKiqB,QAASjqB,KAAK5C,UAC/CuH,IAAS3E,KAAKiqB,OAAOq6B,QAAQ1F,UAC/B5+C,KAAKiqB,OAAOmY,YAAYz9B,EAAMf,GACvB5D,OAEPA,KAAKiqB,OAAO6sB,SACLuL,EAAKw0B,EAAS32E,UAAUq9C,WAAa36C,OAAOyb,eAAew4D,EAAS32E,WAAY,cAAeF,MAAMgC,KAAKhC,KAAM2E,EAAMf,GAEjI,IACE,CAAC,CACHd,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,OAAOA,EAAQl4C,UAAYpL,KAAKoL,aAAUhP,EAAYimD,EAAKw0B,EAASt5B,WAAa36C,OAAOyb,eAAew4D,GAAW,UAAW72E,MAAMgC,KAAKhC,KAAMsjD,EAChJ,KAGKuzB,CACT,CA/Ce,CA+CbpnB,EAAQnT,SAEVu6B,EAASj4B,SAAW,YACpBi4B,EAASzrE,QAAU,KAEnB,IAAI6rE,EAAO,SAAUC,GA4BnB,SAASD,EAAK3zB,GACZP,EAAgB/iD,KAAMi3E,GAEtB,IAAIltE,EAASi5C,EAA2BhjD,MAAOi3E,EAAK15B,WAAa36C,OAAOyb,eAAe44D,IAAOj1E,KAAKhC,KAAMsjD,IAErG6zB,EAAmB,SAA0BhoE,GAC/C,GAAIA,EAAEvO,OAAO0I,aAAeg6C,EAA5B,CACA,IAAII,EAAS35C,EAAOu6C,QAAQf,QAAQD,GAChC7E,EAAOkE,EAAYrG,QAAQr2B,KAAK9W,EAAEvO,QACvB,YAAX8iD,EACFjF,EAAKiF,OAAO,OAAQ,aACA,cAAXA,GACTjF,EAAKiF,OAAO,OAAQ,UANqB,CAQ7C,EAIA,OAFAJ,EAAQn/C,iBAAiB,aAAcgzE,GACvC7zB,EAAQn/C,iBAAiB,YAAagzE,GAC/BptE,CACT,CAgDA,OA9FAm5C,EAAU+zB,EAAMC,GAEhB90B,EAAa60B,EAAM,KAAM,CAAC,CACxBn0E,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAIwH,EAAoB,YAAVxH,EAAsB,KAAO,KACvCwb,EAAOijC,EAAK40B,EAAK15B,WAAa36C,OAAOyb,eAAe44D,GAAO,SAAUj3E,MAAMgC,KAAKhC,KAAMoL,GAI1F,MAHc,YAAVxH,GAAiC,cAAVA,GACzBwb,EAAK5T,aAAa,eAA0B,YAAV5H,GAE7Bwb,CACT,GACC,CACDtc,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,MAAwB,OAApBA,EAAQl4C,QAAyB,UACb,OAApBk4C,EAAQl4C,QACNk4C,EAAQh4C,aAAa,gBACyB,SAAzCg4C,EAAQn+C,aAAa,gBAA6B,UAAY,YAE9D,cAJX,CAQF,KAwBFi9C,EAAa60B,EAAM,CAAC,CAClBn0E,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GACvB5D,KAAKowB,SAAShzB,OAAS,GACzB4C,KAAKowB,SAAS/yB,KAAKqmD,OAAO/+C,EAAMf,EAEpC,GACC,CACDd,IAAK,UACLc,MAAO,WAEL,OAxHmBoL,EAwHI,CAAC,EAxHAlM,EAwHG9C,KAAKskD,QAAQ1F,SAxHXh7C,EAwHqB5D,KAAKskD,QAAQf,QAAQvjD,KAAKsjD,SAxHlCxgD,KAAOkM,EAAOpM,OAAOC,eAAemM,EAAKlM,EAAK,CAAEc,MAAOA,EAAOnB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqM,EAAIlM,GAAOc,EAAgBoL,EAA3M,IAAyBA,EAAKlM,EAAKc,CAyH/B,GACC,CACDd,IAAK,eACLc,MAAO,SAAsB66C,EAAMnxC,GACjC,GAAImxC,aAAgBo4B,EAClBx0B,EAAK40B,EAAK/2E,UAAUq9C,WAAa36C,OAAOyb,eAAe44D,EAAK/2E,WAAY,eAAgBF,MAAMgC,KAAKhC,KAAMy+C,EAAMnxC,OAC1G,CACL,IAAI2O,EAAe,MAAP3O,EAActN,KAAK5C,SAAWkQ,EAAIsrC,OAAO54C,MACjD2Y,EAAQ3Y,KAAKiY,MAAMgE,GACvBtD,EAAMsR,OAAOkY,aAAasc,EAAM9lC,EAClC,CACF,GACC,CACD7V,IAAK,WACLc,MAAO,SAAkB6b,GACvB4iC,EAAK40B,EAAK/2E,UAAUq9C,WAAa36C,OAAOyb,eAAe44D,EAAK/2E,WAAY,WAAYF,MAAMgC,KAAKhC,KAAMyf,GACrG,IAAIhE,EAAOzb,KAAKyb,KACJ,MAARA,GAAgBA,EAAKD,OAASxb,MAAQyb,EAAK6oC,QAAQ1F,WAAa5+C,KAAKskD,QAAQ1F,UAAYnjC,EAAK6nC,QAAQl4C,UAAYpL,KAAKsjD,QAAQl4C,SAAWqQ,EAAK6nC,QAAQn+C,aAAa,kBAAoBnF,KAAKsjD,QAAQn+C,aAAa,kBACpNsW,EAAKqxC,aAAa9sD,MAClByb,EAAK1D,SAET,GACC,CACDjV,IAAK,UACLc,MAAO,SAAiBhD,GACtB,GAAIA,EAAO0jD,QAAQ1F,WAAa5+C,KAAKskD,QAAQ1F,SAAU,CACrD,IAAItpC,EAAOqtC,EAAYrG,QAAQx4C,OAAO9D,KAAKskD,QAAQC,cACnD3jD,EAAOksD,aAAax3C,GACpBtV,KAAKkM,YAAYoJ,EACnB,CACA+sC,EAAK40B,EAAK/2E,UAAUq9C,WAAa36C,OAAOyb,eAAe44D,EAAK/2E,WAAY,UAAWF,MAAMgC,KAAKhC,KAAMY,EACtG,KAGKq2E,CACT,CAhGW,CAgGTvc,EAAYpe,SAEd26B,EAAKr4B,SAAW,OAChBq4B,EAAKrwD,MAAQ+7B,EAAYrG,QAAQH,MAAM4H,WACvCkzB,EAAK7rE,QAAU,CAAC,KAAM,MACtB6rE,EAAK1yB,aAAe,YACpB0yB,EAAKzyB,gBAAkB,CAACqyB,GAExB/6E,EAAQ+6E,SAAWA,EACnB/6E,EAAQwgD,QAAU26B,CAEX,EAED,SAAUh7E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAIgCoL,EAJ5BooE,EAAQ,EAAoB,IAY5BC,EAAS,SAAUC,GAGrB,SAASD,IAGP,OAZJ,SAAyBn1E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMq3E,GAR1B,SAAoCx/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOq3E,EAAO95B,WAAa36C,OAAOyb,eAAeg5D,IAASl4E,MAAMa,KAAM6F,WAC1G,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUm0B,EAAQC,GAQXD,CACT,CAVa,GARmBroE,EAFIooE,IAEiBpoE,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAkB9EstC,SAET+6B,EAAOz4B,SAAW,SAClBy4B,EAAOjsE,QAAU,CAAC,KAAM,KAExBtP,EAAQwgD,QAAU+6B,CAEX,EAED,SAAUp7E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAQgCoL,EAR5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre8d,EAAU,EAAoB,GAY9BmX,EAAS,SAAU7nB,GAGrB,SAAS6nB,IAGP,OAZJ,SAAyBr1E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMu3E,GAR1B,SAAoC1/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOu3E,EAAOh6B,WAAa36C,OAAOyb,eAAek5D,IAASp4E,MAAMa,KAAM6F,WAC1G,CAsBA,OA/BF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUq0B,EAAQ7nB,GAQlBtN,EAAam1B,EAAQ,KAAM,CAAC,CAC1Bz0E,IAAK,SACLc,MAAO,SAAgBA,GACrB,MAAc,UAAVA,EACKqB,SAASmE,cAAc,OACX,QAAVxF,EACFqB,SAASmE,cAAc,OAEvBi5C,EAAKk1B,EAAOh6B,WAAa36C,OAAOyb,eAAek5D,GAAS,SAAUv3E,MAAMgC,KAAKhC,KAAM4D,EAE9F,GACC,CACDd,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,MAAwB,QAApBA,EAAQl4C,QAA0B,MACd,QAApBk4C,EAAQl4C,QAA0B,aAAtC,CAEF,KAGKmsE,CACT,CA9Ba,GARmBvoE,EAFMoxD,IAEepxD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAsC5EstC,SAEXi7B,EAAO34B,SAAW,SAClB24B,EAAOnsE,QAAU,CAAC,MAAO,OAEzBtP,EAAQwgD,QAAUi7B,CAEX,EAED,SAAUt7E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAIgCoL,EAJ5BoxD,EAAU,EAAoB,GAY9BoX,EAAS,SAAU9nB,GAGrB,SAAS8nB,IAGP,OAZJ,SAAyBt1E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMw3E,GAR1B,SAAoC3/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOw3E,EAAOj6B,WAAa36C,OAAOyb,eAAem5D,IAASr4E,MAAMa,KAAM6F,WAC1G,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUs0B,EAAQ9nB,GAQX8nB,CACT,CAVa,GARmBxoE,EAFMoxD,IAEepxD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAkB5EstC,SAEXk7B,EAAO54B,SAAW,SAClB44B,EAAOpsE,QAAU,IAEjBtP,EAAQwgD,QAAUk7B,CAEX,EAED,SAAUv7E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAIgCoL,EAJ5BoxD,EAAU,EAAoB,GAY9BqX,EAAY,SAAU/nB,GAGxB,SAAS+nB,IAGP,OAZJ,SAAyBv1E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAUpJ2gD,CAAgB/iD,KAAMy3E,GAR1B,SAAoC5/D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAUpOghD,CAA2BhjD,MAAOy3E,EAAUl6B,WAAa36C,OAAOyb,eAAeo5D,IAAYt4E,MAAMa,KAAM6F,WAChH,CAEA,OAXF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAG3eF,CAAUu0B,EAAW/nB,GAQd+nB,CACT,CAVgB,GARgBzoE,EAFMoxD,IAEepxD,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,IAkB5EstC,SAEXm7B,EAAU74B,SAAW,YACrB64B,EAAUrsE,QAAU,IAEpBtP,EAAQwgD,QAAUm7B,CAEX,EAED,SAAUx7E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAUgCoL,EAV5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEre2K,EAAa,EAAoB,GAEjCtK,GAI4B3zC,EAJSi+C,IAIYj+C,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAFnF0oE,EAAQ,EAAoB,IAU5BC,EAAa,CAAC,MAAO,SAAU,SAE/BC,EAAQ,SAAUv0B,GAGpB,SAASu0B,IAGP,OAdJ,SAAyB11E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAYpJ2gD,CAAgB/iD,KAAM43E,GAV1B,SAAoC//D,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAYpOghD,CAA2BhjD,MAAO43E,EAAMr6B,WAAa36C,OAAOyb,eAAeu5D,IAAQz4E,MAAMa,KAAM6F,WACxG,CAoDA,OA/DF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAK3eF,CAAU00B,EAAOv0B,GAQjBjB,EAAaw1B,EAAO,CAAC,CACnB90E,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GACvB+zE,EAAW5mE,QAAQpM,IAAS,EAC1Bf,EACF5D,KAAKsjD,QAAQ93C,aAAa7G,EAAMf,GAEhC5D,KAAKsjD,QAAQ53C,gBAAgB/G,GAG/B09C,EAAKu1B,EAAM13E,UAAUq9C,WAAa36C,OAAOyb,eAAeu5D,EAAM13E,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,EAE/G,IACE,CAAC,CACHd,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAIwb,EAAOijC,EAAKu1B,EAAMr6B,WAAa36C,OAAOyb,eAAeu5D,GAAQ,SAAU53E,MAAMgC,KAAKhC,KAAM4D,GAI5F,MAHqB,kBAAVA,GACTwb,EAAK5T,aAAa,MAAOxL,KAAKmgE,SAASv8D,IAElCwb,CACT,GACC,CACDtc,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,OAAOq0B,EAAW/3B,QAAO,SAAU2D,EAASC,GAI1C,OAHIF,EAAQh4C,aAAak4C,KACvBD,EAAQC,GAAaF,EAAQn+C,aAAaq+C,IAErCD,CACT,GAAG,CAAC,EACN,GACC,CACDzgD,IAAK,QACLc,MAAO,SAAe4C,GACpB,MAAQ,qBAAqBhI,KAAKgI,IAAQ,yBAAyBhI,KAAKgI,EAE1E,GACC,CACD1D,IAAK,WACLc,MAAO,SAAkB4C,GACvB,OAAO,EAAIkxE,EAAMvX,UAAU35D,EAAK,CAAC,OAAQ,QAAS,SAAWA,EAAM,MACrE,GACC,CACD1D,IAAK,QACLc,MAAO,SAAe0/C,GACpB,OAAOA,EAAQn+C,aAAa,MAC9B,KAGKyyE,CACT,CA5DY,CA4DVj1B,EAAYrG,QAAQG,OAEtBm7B,EAAMh5B,SAAW,QACjBg5B,EAAMxsE,QAAU,MAEhBtP,EAAQwgD,QAAUs7B,CAEX,EAED,SAAU37E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAGT,IAUgCoL,EAV5BozC,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEreyO,EAAS,EAAoB,GAE7B2mB,EAAQ,EAAoB,IAE5B1C,GAE4BhmE,EAFI0oE,IAEiB1oE,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,GAQnF2oE,EAAa,CAAC,SAAU,SAExBE,EAAQ,SAAUC,GAGpB,SAASD,IAGP,OAdJ,SAAyB31E,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAYpJ2gD,CAAgB/iD,KAAM63E,GAV1B,SAAoChgE,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAYpOghD,CAA2BhjD,MAAO63E,EAAMt6B,WAAa36C,OAAOyb,eAAew5D,IAAQ14E,MAAMa,KAAM6F,WACxG,CA8CA,OAzDF,SAAmBs9C,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAK3eF,CAAU20B,EAAOC,GAQjB11B,EAAay1B,EAAO,CAAC,CACnB/0E,IAAK,SACLc,MAAO,SAAgBe,EAAMf,GACvB+zE,EAAW5mE,QAAQpM,IAAS,EAC1Bf,EACF5D,KAAKsjD,QAAQ93C,aAAa7G,EAAMf,GAEhC5D,KAAKsjD,QAAQ53C,gBAAgB/G,GAG/B09C,EAAKw1B,EAAM33E,UAAUq9C,WAAa36C,OAAOyb,eAAew5D,EAAM33E,WAAY,SAAUF,MAAMgC,KAAKhC,KAAM2E,EAAMf,EAE/G,IACE,CAAC,CACHd,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAIwb,EAAOijC,EAAKw1B,EAAMt6B,WAAa36C,OAAOyb,eAAew5D,GAAQ,SAAU73E,MAAMgC,KAAKhC,KAAM4D,GAI5F,OAHAwb,EAAK5T,aAAa,cAAe,KACjC4T,EAAK5T,aAAa,mBAAmB,GACrC4T,EAAK5T,aAAa,MAAOxL,KAAKmgE,SAASv8D,IAChCwb,CACT,GACC,CACDtc,IAAK,UACLc,MAAO,SAAiB0/C,GACtB,OAAOq0B,EAAW/3B,QAAO,SAAU2D,EAASC,GAI1C,OAHIF,EAAQh4C,aAAak4C,KACvBD,EAAQC,GAAaF,EAAQn+C,aAAaq+C,IAErCD,CACT,GAAG,CAAC,EACN,GACC,CACDzgD,IAAK,WACLc,MAAO,SAAkB4C,GACvB,OAAOwuE,EAAO14B,QAAQ6jB,SAAS35D,EACjC,GACC,CACD1D,IAAK,QACLc,MAAO,SAAe0/C,GACpB,OAAOA,EAAQn+C,aAAa,MAC9B,KAGK0yE,CACT,CAtDY,CAsDV9mB,EAAO7O,YAET21B,EAAMj5B,SAAW,QACjBi5B,EAAMtvD,UAAY,WAClBsvD,EAAMzsE,QAAU,SAEhBtP,EAAQwgD,QAAUu7B,CAEX,EAED,SAAU57E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQi8E,iBAAc37E,EAExC,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIremf,EAAUhf,EAFD,EAAoB,KAM7B6Y,EAAU7Y,EAFD,EAAoB,IAM7B4C,EAAW5C,EAFD,EAAoB,IAIlC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAI20B,EAAc,SAAUC,GAG1B,SAASD,IAGP,OAFAh1B,EAAgB/iD,KAAM+3E,GAEf/0B,EAA2BhjD,MAAO+3E,EAAYx6B,WAAa36C,OAAOyb,eAAe05D,IAAc54E,MAAMa,KAAM6F,WACpH,CAsBA,OA5BAq9C,EAAU60B,EAAaC,GAQvB51B,EAAa21B,EAAa,KAAM,CAAC,CAC/Bj1E,IAAK,SACLc,MAAO,SAAgBA,GACrB,IAAIwb,EAAOijC,EAAK01B,EAAYx6B,WAAa36C,OAAOyb,eAAe05D,GAAc,SAAU/3E,MAAMgC,KAAKhC,KAAM4D,GAQxG,MAPqB,kBAAVA,IACTyI,OAAO4rE,MAAMC,OAAOt0E,EAAOwb,EAAM,CAC/B+4D,cAAc,EACdC,WAAY,SAEdh5D,EAAK5T,aAAa,aAAc5H,IAE3Bwb,CACT,GACC,CACDtc,IAAK,QACLc,MAAO,SAAe0/C,GACpB,OAAOA,EAAQn+C,aAAa,aAC9B,KAGK4yE,CACT,CA9BkB,CA8BhBtW,EAAQnlB,SAEVy7B,EAAYn5B,SAAW,UACvBm5B,EAAYxvD,UAAY,aACxBwvD,EAAY3sE,QAAU,OAEtB,IAAIitE,EAAU,SAAU3c,GAUtB,SAAS2c,IACPt1B,EAAgB/iD,KAAMq4E,GAEtB,IAAItuE,EAASi5C,EAA2BhjD,MAAOq4E,EAAQ96B,WAAa36C,OAAOyb,eAAeg6D,IAAUr2E,KAAKhC,OAEzG,GAAoB,MAAhBqM,OAAO4rE,MACT,MAAM,IAAIjjE,MAAM,kCAElB,OAAOjL,CACT,CAEA,OApBAm5C,EAAUm1B,EAAS3c,GAEnBtZ,EAAai2B,EAAS,KAAM,CAAC,CAC3Bv1E,IAAK,WACLc,MAAO,WACL03D,EAAQhf,QAAQF,SAAS27B,GAAa,EACxC,KAcKM,CACT,CAtBc,CAsBZhzB,EAAS/I,SAEXxgD,EAAQi8E,YAAcA,EACtBj8E,EAAQwgD,QAAU+7B,CAEX,EAED,SAAUp8E,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQw8E,UAAYx8E,EAAQ6zD,eAAYvzD,EAE1D,IAAIgmD,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAEfkgD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAIreK,EAAcF,EAFD,EAAoB,IAMjC6Y,EAAU7Y,EAFD,EAAoB,IAM7B4C,EAAW5C,EAFD,EAAoB,IAQlC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAIm1B,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFAx1B,EAAgB/iD,KAAMu4E,GAEfv1B,EAA2BhjD,MAAOu4E,EAAgBh7B,WAAa36C,OAAOyb,eAAek6D,IAAkBp5E,MAAMa,KAAM6F,WAC5H,CAwBA,OA9BAq9C,EAAUq1B,EAAiBC,GAQ3Bp2B,EAAam2B,EAAiB,CAAC,CAC7Bz1E,IAAK,cACLc,MAAO,SAAqBigD,GAC1B7jD,KAAKsjD,QAAQhiC,YAActhB,KAAKsjD,QAAQhiC,YACxCthB,KAAKw0D,SACLnS,EAAKk2B,EAAgBr4E,UAAUq9C,WAAa36C,OAAOyb,eAAek6D,EAAgBr4E,WAAY,cAAeF,MAAMgC,KAAKhC,KAAM6jD,EAChI,GACC,CACD/gD,IAAK,YACLc,MAAO,SAAmB60E,GACxB,IAAI7oE,EAAO5P,KAAKsjD,QAAQhiC,YACpBthB,KAAK04E,aAAe9oE,KAClBA,EAAKkI,OAAO1a,OAAS,GAAwB,MAAnB4C,KAAK04E,cACjC14E,KAAKsjD,QAAQ5vC,UAAY+kE,EAAW7oE,GACpC5P,KAAKsjD,QAAQgZ,YACbt8D,KAAKw0D,UAEPx0D,KAAK04E,WAAa9oE,EAEtB,KAGK2oE,CACT,CAhCsB,CAVT91B,EAFD,EAAoB,KA4CvBnG,SAETi8B,EAAgBhwD,UAAY,YAE5B,IAAI+vD,EAAY,IAAI31B,EAAYrG,QAAQQ,WAAWE,MAAM,QAAS,OAAQ,CACxEp2B,MAAO+7B,EAAYrG,QAAQH,MAAM+B,SAG/By6B,EAAS,SAAUjd,GAWrB,SAASid,EAAOxqB,EAAOj+C,GACrB6yC,EAAgB/iD,KAAM24E,GAEtB,IAAI5uE,EAASi5C,EAA2BhjD,MAAO24E,EAAOp7B,WAAa36C,OAAOyb,eAAes6D,IAAS32E,KAAKhC,KAAMmuD,EAAOj+C,IAEpH,GAAwC,oBAA7BnG,EAAOmG,QAAQ0oE,UACxB,MAAM,IAAI5jE,MAAM,6FAElB,IAAI+3B,EAAQ,KASZ,OARAhjC,EAAOokD,MAAMnzC,GAAGsgD,EAAQhf,QAAQpgB,OAAO8xB,iBAAiB,WACtD/e,aAAalC,GACbA,EAAQxgC,YAAW,WACjBxC,EAAO6uE,YACP7rC,EAAQ,IACV,GAAGhjC,EAAOmG,QAAQw7B,SACpB,IACA3hC,EAAO6uE,YACA7uE,CACT,CAoBA,OAhDAm5C,EAAUy1B,EAAQjd,GAElBtZ,EAAau2B,EAAQ,KAAM,CAAC,CAC1B71E,IAAK,WACLc,MAAO,WACL03D,EAAQhf,QAAQF,SAASk8B,GAAW,GACpChd,EAAQhf,QAAQF,SAASm8B,GAAiB,EAC5C,KAuBFn2B,EAAau2B,EAAQ,CAAC,CACpB71E,IAAK,YACLc,MAAO,WACL,IAAIokD,EAAShoD,KAEb,IAAIA,KAAKmuD,MAAM5wC,UAAU61C,UAAzB,CACApzD,KAAKmuD,MAAMjH,OAAOoU,EAAQhf,QAAQgM,QAAQ+C,MAC1C,IAAItE,EAAQ/mD,KAAKmuD,MAAM3F,eACvBxoD,KAAKmuD,MAAMjI,OAAOjC,YAAYs0B,GAAiB3tE,SAAQ,SAAUuU,GAC/DA,EAAKy5D,UAAU5wB,EAAO93C,QAAQ0oE,UAChC,IACA54E,KAAKmuD,MAAMjH,OAAOoU,EAAQhf,QAAQgM,QAAQO,QAC7B,MAAT9B,GACF/mD,KAAKmuD,MAAMvF,aAAa7B,EAAOuU,EAAQhf,QAAQgM,QAAQO,OARf,CAU5C,KAGK8vB,CACT,CAlDa,CAkDXtzB,EAAS/I,SAEXq8B,EAAOntB,SAAW,CAChBotB,UACqB,MAAfvsE,OAAOwsE,KAAqB,KACzB,SAAUjpE,GAEf,OADavD,OAAOwsE,KAAKC,cAAclpE,GACzBhM,KAChB,EAEF8nC,SAAU,KAGZ5vC,EAAQ6zD,UAAY4oB,EACpBz8E,EAAQw8E,UAAYA,EACpBx8E,EAAQwgD,QAAUq8B,CAEX,EAED,SAAU18E,EAAQH,GAExBG,EAAOH,QAAU,4LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,86EAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,oTAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,+QAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,oUAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,kPAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,iVAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,gVAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,mOAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,iOAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,wWAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,2YAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,w3CAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,8jBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,8nBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,8LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,wOAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,uQAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6PAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6ZAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,ksBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,qVAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,2XAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,sqBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,+iBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,2gBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,8LAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,6qBAEV,EAED,SAAUG,EAAQH,GAExBG,EAAOH,QAAU,kKAEV,EAED,SAAUG,EAAQH,EAAS,GAEjC,aAGA8G,OAAOC,eAAe/G,EAAS,aAAc,CAC3C8H,OAAO,IAET9H,EAAQwgD,QAAUxgD,EAAQi9E,mBAAgB38E,EAE1C,IAAIimD,EAAO,SAASv6C,EAAIY,EAAQ0yC,EAAUkH,GAA2B,OAAX55C,IAAiBA,EAASsV,SAAS9d,WAAW,IAAIqiD,EAAO3/C,OAAOi/C,yBAAyBn5C,EAAQ0yC,GAAW,QAAah/C,IAATmmD,EAAoB,CAAE,IAAIt4B,EAASrnB,OAAOyb,eAAe3V,GAAS,OAAe,OAAXuhB,OAAmB,EAAkCniB,EAAImiB,EAAQmxB,EAAUkH,EAAa,CAAO,GAAI,UAAWC,EAAQ,OAAOA,EAAK3+C,MAAgB,IAAI6rC,EAAS8S,EAAKz6C,IAAK,YAAe1L,IAAXqzC,EAAmDA,EAAOztC,KAAKsgD,QAAnE,CAAgF,EAEreF,EAAe,WAAc,SAAS9/C,EAAiB1B,EAAQ2B,GAAS,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAMnF,OAAQL,IAAK,CAAE,IAAIyF,EAAaD,EAAMxF,GAAIyF,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAejC,EAAQ4B,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUL,EAAaY,EAAYC,GAAiJ,OAA9HD,GAAYT,EAAiBH,EAAYjC,UAAW6C,GAAiBC,GAAaV,EAAiBH,EAAaa,GAAqBb,CAAa,CAAG,CAA7hB,GAIfqgD,EAAWC,EAFD,EAAoB,IAM9B4J,EAAY5J,EAFD,EAAoB,IAI/BqyB,EAAQ,EAAoB,IAE5BC,EAAStyB,EAAuBqyB,GAEhCxvB,EAAa,EAAoB,IAIjC2vB,EAAUxyB,EAFD,EAAoB,KAIjC,SAASA,EAAuBzzC,GAAO,OAAOA,GAAOA,EAAImsC,WAAansC,EAAM,CAAEstC,QAASttC,EAAO,CAE9F,SAAS+zC,EAAgB7gD,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS4gD,EAA2BnrC,EAAM7V,GAAQ,IAAK6V,EAAQ,MAAM,IAAIorC,eAAe,6DAAgE,OAAOjhD,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B6V,EAAP7V,CAAa,CAE/O,SAASkhD,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhhD,UAAU,kEAAoEghD,GAAeD,EAASjjD,UAAY0C,OAAOkB,OAAOs/C,GAAcA,EAAWljD,UAAW,CAAEwX,YAAa,CAAE9T,MAAOu/C,EAAU1gD,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe0gD,IAAYxgD,OAAO06C,eAAiB16C,OAAO06C,eAAe6F,EAAUC,GAAcD,EAAS5F,UAAY6F,EAAY,CAE7e,IAAI8xB,EAAiB,CAAC,CAAC,OAAQ,SAAU,QAAS,CAAC,CAAEzpD,OAAQ,GAAK,CAAEA,OAAQ,GAAK,eAE7EutD,EAAc,SAAU5D,GAG1B,SAAS4D,EAAY7qB,EAAOj+C,GAC1B6yC,EAAgB/iD,KAAMg5E,GAES,MAA3B9oE,EAAQ6qC,QAAQ+Q,SAAwD,MAArC57C,EAAQ6qC,QAAQ+Q,QAAQjvC,YAC7D3M,EAAQ6qC,QAAQ+Q,QAAQjvC,UAAYq4D,GAGtC,IAAInxE,EAAQi/C,EAA2BhjD,MAAOg5E,EAAYz7B,WAAa36C,OAAOyb,eAAe26D,IAAch3E,KAAKhC,KAAMmuD,EAAOj+C,IAG7H,OADAnM,EAAMoqD,MAAMtxC,UAAUgpC,UAAUluC,IAAI,aAC7B5T,CACT,CAYA,OAzBAm/C,EAAU81B,EAAa5D,GAevBhzB,EAAa42B,EAAa,CAAC,CACzBl2E,IAAK,gBACLc,MAAO,SAAuBkoD,GAC5B9rD,KAAKulE,QAAU,IAAIwT,EAAc/4E,KAAKmuD,MAAOnuD,KAAKkQ,QAAQk5C,QAC1DppD,KAAKulE,QAAQlgE,KAAK6G,YAAY4/C,EAAQjvC,WACtC7c,KAAKq1E,aAAa,GAAGl1E,MAAM6B,KAAK8pD,EAAQjvC,UAAUrX,iBAAiB,WAAYyvE,EAAQ34B,SACvFt8C,KAAKs1E,aAAa,GAAGn1E,MAAM6B,KAAK8pD,EAAQjvC,UAAUrX,iBAAiB,WAAYyvE,EAAQ34B,QACzF,KAGK08B,CACT,CA3BkB,CA2BhBjE,EAAOz4B,SAET08B,EAAYxtB,UAAW,EAAIhJ,EAASlG,UAAS,EAAM,CAAC,EAAGy4B,EAAOz4B,QAAQkP,SAAU,CAC9EzQ,QAAS,CACP+Q,QAAS,CACPzvB,SAAU,CACRtoB,KAAM,SAAcnQ,GACbA,EAGH5D,KAAKmuD,MAAM9H,MAAMkf,QAAQU,OAFzBjmE,KAAKmuD,MAAMzK,OAAO,QAAQ,EAI9B,OAMR,IAAIq1B,EAAgB,SAAUvD,GAG5B,SAASuD,EAAc5qB,EAAO/E,GAC5BrG,EAAgB/iD,KAAM+4E,GAEtB,IAAIhvE,EAASi5C,EAA2BhjD,MAAO+4E,EAAcx7B,WAAa36C,OAAOyb,eAAe06D,IAAgB/2E,KAAKhC,KAAMmuD,EAAO/E,IAwBlI,OAtBAr/C,EAAOokD,MAAMnzC,GAAGqxC,EAAU/P,QAAQpgB,OAAOwqB,eAAe,SAAU/gD,EAAMohD,EAAOwP,EAAU18C,GACvF,GAAIlU,IAAS0mD,EAAU/P,QAAQpgB,OAAO+xB,iBACtC,GAAa,MAATlH,GAAiBA,EAAM3pD,OAAS,GAAKyc,IAAWwyC,EAAU/P,QAAQgM,QAAQ+C,KAAM,CAClFthD,EAAO4S,OAEP5S,EAAO1E,KAAK2G,MAAM29B,KAAO,MACzB5/B,EAAO1E,KAAK2G,MAAMq3B,MAAQ,GAC1Bt5B,EAAO1E,KAAK2G,MAAMq3B,MAAQt5B,EAAO1E,KAAKq/B,YAAc,KACpD,IAAIyf,EAAQp6C,EAAOokD,MAAM+M,SAASnU,EAAM9qC,MAAO8qC,EAAM3pD,QACrD,GAAqB,IAAjB+mD,EAAM/mD,OACR2M,EAAOy6B,SAASz6B,EAAOokD,MAAM9E,UAAUtC,QAClC,CACL,IAAIkyB,EAAW90B,EAAMA,EAAM/mD,OAAS,GAChC6e,EAAQlS,EAAOokD,MAAMyQ,SAASqa,GAC9B77E,EAASkD,KAAKE,IAAIy4E,EAAS77E,SAAW,EAAG2pD,EAAM9qC,MAAQ8qC,EAAM3pD,OAAS6e,GACtEi9D,EAAUnvE,EAAOokD,MAAM9E,UAAU,IAAI/D,EAAW8F,MAAMnvC,EAAO7e,IACjE2M,EAAOy6B,SAAS00C,EAClB,CACF,MAAWj0E,SAAS+lB,gBAAkBjhB,EAAOy7D,SAAWz7D,EAAOokD,MAAMhjC,YACnEphB,EAAOqM,MAEX,IACOrM,CACT,CAsCA,OApEAm5C,EAAU61B,EAAevD,GAgCzBpzB,EAAa22B,EAAe,CAAC,CAC3Bj2E,IAAK,SACLc,MAAO,WACL,IAAIokD,EAAShoD,KAEbqiD,EAAK02B,EAAc74E,UAAUq9C,WAAa36C,OAAOyb,eAAe06D,EAAc74E,WAAY,SAAUF,MAAMgC,KAAKhC,MAC/GA,KAAKqF,KAAKI,cAAc,aAAatB,iBAAiB,SAAS,WAC7D6jD,EAAO3iD,KAAKwgD,UAAU9tC,OAAO,aAC/B,IACA/X,KAAKmuD,MAAMnzC,GAAGqxC,EAAU/P,QAAQpgB,OAAO8xB,iBAAiB,WAEtDzhD,YAAW,WACT,IAAIy7C,EAAO3iD,KAAKwgD,UAAUtjC,SAAS,aAAnC,CACA,IAAIwkC,EAAQiB,EAAOmG,MAAM3F,eACZ,MAATzB,GACFiB,EAAOxjB,SAASwjB,EAAOmG,MAAM9E,UAAUtC,GAHc,CAKzD,GAAG,EACL,GACF,GACC,CACDjkD,IAAK,SACLc,MAAO,WACL5D,KAAK2c,MACP,GACC,CACD7Z,IAAK,WACLc,MAAO,SAAkB+wE,GACvB,IAAIhqE,EAAQ03C,EAAK02B,EAAc74E,UAAUq9C,WAAa36C,OAAOyb,eAAe06D,EAAc74E,WAAY,WAAYF,MAAMgC,KAAKhC,KAAM20E,GAC/HwE,EAAQn5E,KAAKqF,KAAKI,cAAc,qBAEpC,GADA0zE,EAAMntE,MAAMo4B,WAAa,GACX,IAAVz5B,EAAa,OAAOA,EACxBwuE,EAAMntE,MAAMo4B,YAAc,EAAIz5B,EAAQwuE,EAAMz0C,YAAc,EAAI,IAChE,KAGKq0C,CACT,CAtEoB,CAsElBjE,EAAMpQ,aAERqU,EAAcrE,SAAW,CAAC,yCAA0C,kCAAmC,mGAAoG,2BAA4B,UAAUr2E,KAAK,IAEtPvC,EAAQi9E,cAAgBA,EACxBj9E,EAAQwgD,QAAU08B,CAEX,EAED,SAAU/8E,EAAQH,EAAS,GAEjCG,EAAOH,QAAU,EAAoB,GAG9B,IACc,OACrB,EAjyWEG,EAAOH,QAAUK,uBCDnB,IAAIi9E,EAAW,SAAUt9E,GACvB,aAEA,IAGIM,EAHAi9E,EAAKz2E,OAAO1C,UACZwe,EAAS26D,EAAGj9D,eACZvZ,EAAiBD,OAAOC,gBAAkB,SAAUmM,EAAKlM,EAAKy/C,GAAQvzC,EAAIlM,GAAOy/C,EAAK3+C,KAAO,EAE7F01E,EAA4B,oBAAXp3D,OAAwBA,OAAS,CAAC,EACnDq3D,EAAiBD,EAAQn3D,UAAY,aACrCq3D,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO5qE,EAAKlM,EAAKc,GAOxB,OANAhB,OAAOC,eAAemM,EAAKlM,EAAK,CAC9Bc,MAAOA,EACPnB,YAAY,EACZC,cAAc,EACdC,UAAU,IAELqM,EAAIlM,EACb,CACA,IAEE82E,EAAO,CAAC,EAAG,GACb,CAAE,MAAO3uD,GACP2uD,EAAS,SAAS5qE,EAAKlM,EAAKc,GAC1B,OAAOoL,EAAIlM,GAAOc,CACpB,CACF,CAEA,SAASk3B,EAAK++C,EAASC,EAASjiE,EAAMkiE,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQ55E,qBAAqB+5E,EAAYH,EAAUG,EAC/EC,EAAYt3E,OAAOkB,OAAOk2E,EAAe95E,WACzCuf,EAAU,IAAI06D,EAAQJ,GAAe,IAMzC,OAFAl3E,EAAeq3E,EAAW,UAAW,CAAEt2E,MAAOw2E,EAAiBP,EAAShiE,EAAM4H,KAEvEy6D,CACT,CAaA,SAASG,EAASr+E,EAAIgT,EAAKgT,GACzB,IACE,MAAO,CAAErc,KAAM,SAAUqc,IAAKhmB,EAAGgG,KAAKgN,EAAKgT,GAC7C,CAAE,MAAOiJ,GACP,MAAO,CAAEtlB,KAAM,QAASqc,IAAKiJ,EAC/B,CACF,CAlBAnvB,EAAQg/B,KAAOA,EAoBf,IAAIw/C,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,CAAC,EAMxB,SAAST,IAAa,CACtB,SAASU,IAAqB,CAC9B,SAASC,IAA8B,CAIvC,IAAIC,EAAoB,CAAC,EACzBjB,EAAOiB,EAAmBtB,GAAgB,WACxC,OAAOv5E,IACT,IAEA,IAAIoe,EAAWxb,OAAOyb,eAClBy8D,EAA0B18D,GAAYA,EAASA,EAAS4a,EAAO,MAC/D8hD,GACAA,IAA4BzB,GAC5B36D,EAAO1c,KAAK84E,EAAyBvB,KAGvCsB,EAAoBC,GAGtB,IAAIC,EAAKH,EAA2B16E,UAClC+5E,EAAU/5E,UAAY0C,OAAOkB,OAAO+2E,GAgBtC,SAASG,EAAsB96E,GAC7B,CAAC,OAAQ,QAAS,UAAU0K,SAAQ,SAASoJ,GAC3C4lE,EAAO15E,EAAW8T,GAAQ,SAASgO,GACjC,OAAOhiB,KAAKi7E,QAAQjnE,EAAQgO,EAC9B,GACF,GACF,CA+BA,SAASk5D,EAAchB,EAAWiB,GAChC,SAASC,EAAOpnE,EAAQgO,EAAKwP,EAASC,GACpC,IAAIuyC,EAASqW,EAASH,EAAUlmE,GAASkmE,EAAWl4D,GACpD,GAAoB,UAAhBgiD,EAAOr+D,KAEJ,CACL,IAAIpG,EAASykE,EAAOhiD,IAChBpe,EAAQrE,EAAOqE,MACnB,OAAIA,GACiB,kBAAVA,GACP8a,EAAO1c,KAAK4B,EAAO,WACdu3E,EAAY3pD,QAAQ5tB,EAAMy3E,SAASlhE,MAAK,SAASvW,GACtDw3E,EAAO,OAAQx3E,EAAO4tB,EAASC,EACjC,IAAG,SAASxG,GACVmwD,EAAO,QAASnwD,EAAKuG,EAASC,EAChC,IAGK0pD,EAAY3pD,QAAQ5tB,GAAOuW,MAAK,SAASmhE,GAI9C/7E,EAAOqE,MAAQ03E,EACf9pD,EAAQjyB,EACV,IAAG,SAASgJ,GAGV,OAAO6yE,EAAO,QAAS7yE,EAAOipB,EAASC,EACzC,GACF,CAzBEA,EAAOuyC,EAAOhiD,IA0BlB,CAEA,IAAIu5D,EAgCJ14E,EAAe7C,KAAM,UAAW,CAAE4D,MA9BlC,SAAiBoQ,EAAQgO,GACvB,SAASw5D,IACP,OAAO,IAAIL,GAAY,SAAS3pD,EAASC,GACvC2pD,EAAOpnE,EAAQgO,EAAKwP,EAASC,EAC/B,GACF,CAEA,OAAO8pD,EAaLA,EAAkBA,EAAgBphE,KAChCqhE,EAGAA,GACEA,GACR,GAKF,CA0BA,SAASpB,EAAiBP,EAAShiE,EAAM4H,GACvC,IAAI/hB,EAAQ48E,EAEZ,OAAO,SAAgBtmE,EAAQgO,GAC7B,GAAItkB,IAAU88E,EACZ,MAAM,IAAIxlE,MAAM,gCAGlB,GAAItX,IAAU+8E,EAAmB,CAC/B,GAAe,UAAXzmE,EACF,MAAMgO,EAKR,OAAOy5D,GACT,CAKA,IAHAh8D,EAAQzL,OAASA,EACjByL,EAAQuC,IAAMA,IAED,CACX,IAAI1Z,EAAWmX,EAAQnX,SACvB,GAAIA,EAAU,CACZ,IAAIozE,EAAiBC,EAAoBrzE,EAAUmX,GACnD,GAAIi8D,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CAEA,GAAuB,SAAnBj8D,EAAQzL,OAGVyL,EAAQm8D,KAAOn8D,EAAQo8D,MAAQp8D,EAAQuC,SAElC,GAAuB,UAAnBvC,EAAQzL,OAAoB,CACrC,GAAItW,IAAU48E,EAEZ,MADA58E,EAAQ+8E,EACFh7D,EAAQuC,IAGhBvC,EAAQq8D,kBAAkBr8D,EAAQuC,IAEpC,KAA8B,WAAnBvC,EAAQzL,QACjByL,EAAQs8D,OAAO,SAAUt8D,EAAQuC,KAGnCtkB,EAAQ88E,EAER,IAAIxW,EAASqW,EAASR,EAAShiE,EAAM4H,GACrC,GAAoB,WAAhBukD,EAAOr+D,KAAmB,CAO5B,GAJAjI,EAAQ+hB,EAAQvO,KACZupE,EACAF,EAEAvW,EAAOhiD,MAAQ04D,EACjB,SAGF,MAAO,CACL92E,MAAOogE,EAAOhiD,IACd9Q,KAAMuO,EAAQvO,KAGlB,CAA2B,UAAhB8yD,EAAOr+D,OAChBjI,EAAQ+8E,EAGRh7D,EAAQzL,OAAS,QACjByL,EAAQuC,IAAMgiD,EAAOhiD,IAEzB,CACF,CACF,CAMA,SAAS25D,EAAoBrzE,EAAUmX,GACrC,IAAI9W,EAAa8W,EAAQzL,OACrBA,EAAS1L,EAAS6Z,SAASxZ,GAC/B,GAAIqL,IAAW5X,EAOb,OAHAqjB,EAAQnX,SAAW,KAGA,UAAfK,GAA0BL,EAAS6Z,SAAiB,SAGtD1C,EAAQzL,OAAS,SACjByL,EAAQuC,IAAM5lB,EACdu/E,EAAoBrzE,EAAUmX,GAEP,UAAnBA,EAAQzL,SAMK,WAAfrL,IACF8W,EAAQzL,OAAS,QACjByL,EAAQuC,IAAM,IAAI5f,UAChB,oCAAsCuG,EAAa,aAN5C+xE,EAYb,IAAI1W,EAASqW,EAASrmE,EAAQ1L,EAAS6Z,SAAU1C,EAAQuC,KAEzD,GAAoB,UAAhBgiD,EAAOr+D,KAIT,OAHA8Z,EAAQzL,OAAS,QACjByL,EAAQuC,IAAMgiD,EAAOhiD,IACrBvC,EAAQnX,SAAW,KACZoyE,EAGT,IAAInlB,EAAOyO,EAAOhiD,IAElB,OAAMuzC,EAOFA,EAAKrkD,MAGPuO,EAAQnX,EAAS0zE,YAAczmB,EAAK3xD,MAGpC6b,EAAQhE,KAAOnT,EAAS2zE,QAQD,WAAnBx8D,EAAQzL,SACVyL,EAAQzL,OAAS,OACjByL,EAAQuC,IAAM5lB,GAUlBqjB,EAAQnX,SAAW,KACZoyE,GANEnlB,GA3BP91C,EAAQzL,OAAS,QACjByL,EAAQuC,IAAM,IAAI5f,UAAU,oCAC5Bqd,EAAQnX,SAAW,KACZoyE,EA+BX,CAqBA,SAASwB,EAAaC,GACpB,IAAIC,EAAQ,CAAEC,OAAQF,EAAK,IAEvB,KAAKA,IACPC,EAAME,SAAWH,EAAK,IAGpB,KAAKA,IACPC,EAAMG,WAAaJ,EAAK,GACxBC,EAAMI,SAAWL,EAAK,IAGxBn8E,KAAKy8E,WAAW58E,KAAKu8E,EACvB,CAEA,SAASM,EAAcN,GACrB,IAAIpY,EAASoY,EAAMO,YAAc,CAAC,EAClC3Y,EAAOr+D,KAAO,gBACPq+D,EAAOhiD,IACdo6D,EAAMO,WAAa3Y,CACrB,CAEA,SAASmW,EAAQJ,GAIf/5E,KAAKy8E,WAAa,CAAC,CAAEJ,OAAQ,SAC7BtC,EAAYnvE,QAAQsxE,EAAcl8E,MAClCA,KAAKC,OAAM,EACb,CA8BA,SAAS+4B,EAAO4jD,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASrD,GAC9B,GAAIsD,EACF,OAAOA,EAAe76E,KAAK46E,GAG7B,GAA6B,oBAAlBA,EAASnhE,KAClB,OAAOmhE,EAGT,IAAKjiC,MAAMiiC,EAASx/E,QAAS,CAC3B,IAAIL,GAAK,EAAG0e,EAAO,SAASA,IAC1B,OAAS1e,EAAI6/E,EAASx/E,QACpB,GAAIshB,EAAO1c,KAAK46E,EAAU7/E,GAGxB,OAFA0e,EAAK7X,MAAQg5E,EAAS7/E,GACtB0e,EAAKvK,MAAO,EACLuK,EAOX,OAHAA,EAAK7X,MAAQxH,EACbqf,EAAKvK,MAAO,EAELuK,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAMggE,EACjB,CAGA,SAASA,IACP,MAAO,CAAE73E,MAAOxH,EAAW8U,MAAM,EACnC,CA8MA,OAnnBAypE,EAAkBz6E,UAAY06E,EAC9B/3E,EAAek4E,EAAI,cAAe,CAAEn3E,MAAOg3E,EAA4Bl4E,cAAc,IACrFG,EACE+3E,EACA,cACA,CAAEh3E,MAAO+2E,EAAmBj4E,cAAc,IAE5Ci4E,EAAkBmC,YAAclD,EAC9BgB,EACAlB,EACA,qBAaF59E,EAAQihF,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOtlE,YAClD,QAAOulE,IACHA,IAAStC,GAG2B,uBAAnCsC,EAAKH,aAAeG,EAAKt4E,MAEhC,EAEA7I,EAAQ6rE,KAAO,SAASqV,GAQtB,OAPIp6E,OAAO06C,eACT16C,OAAO06C,eAAe0/B,EAAQpC,IAE9BoC,EAAOz/B,UAAYq9B,EACnBhB,EAAOoD,EAAQtD,EAAmB,sBAEpCsD,EAAO98E,UAAY0C,OAAOkB,OAAOi3E,GAC1BiC,CACT,EAMAlhF,EAAQohF,MAAQ,SAASl7D,GACvB,MAAO,CAAEq5D,QAASr5D,EACpB,EAqEAg5D,EAAsBE,EAAch7E,WACpC05E,EAAOsB,EAAch7E,UAAWs5E,GAAqB,WACnD,OAAOx5E,IACT,IACAlE,EAAQo/E,cAAgBA,EAKxBp/E,EAAQ+3C,MAAQ,SAASgmC,EAASC,EAASjiE,EAAMkiE,EAAaoB,QACxC,IAAhBA,IAAwBA,EAAcriB,SAE1C,IAAI/Y,EAAO,IAAIm7B,EACbpgD,EAAK++C,EAASC,EAASjiE,EAAMkiE,GAC7BoB,GAGF,OAAOr/E,EAAQihF,oBAAoBjD,GAC/B/5B,EACAA,EAAKtkC,OAAOtB,MAAK,SAAS5a,GACxB,OAAOA,EAAO2R,KAAO3R,EAAOqE,MAAQm8C,EAAKtkC,MAC3C,GACN,EAsKAu/D,EAAsBD,GAEtBnB,EAAOmB,EAAIrB,EAAmB,aAO9BE,EAAOmB,EAAIxB,GAAgB,WACzB,OAAOv5E,IACT,IAEA45E,EAAOmB,EAAI,YAAY,WACrB,MAAO,oBACT,IAiCAj/E,EAAQmrB,KAAO,SAAS5mB,GACtB,IAAIqI,EAAS9F,OAAOvC,GAChB4mB,EAAO,GACX,IAAK,IAAInkB,KAAO4F,EACdue,EAAKpnB,KAAKiD,GAMZ,OAJAmkB,EAAKgK,UAIE,SAASxV,IACd,KAAOwL,EAAK7pB,QAAQ,CAClB,IAAI0F,EAAMmkB,EAAK1N,MACf,GAAIzW,KAAO4F,EAGT,OAFA+S,EAAK7X,MAAQd,EACb2Y,EAAKvK,MAAO,EACLuK,CAEX,CAMA,OADAA,EAAKvK,MAAO,EACLuK,CACT,CACF,EAoCA3f,EAAQk9B,OAASA,EAMjBmhD,EAAQj6E,UAAY,CAClBwX,YAAayiE,EAEbl6E,MAAO,SAASk9E,GAcd,GAbAn9E,KAAKwb,KAAO,EACZxb,KAAKyb,KAAO,EAGZzb,KAAK47E,KAAO57E,KAAK67E,MAAQz/E,EACzB4D,KAAKkR,MAAO,EACZlR,KAAKsI,SAAW,KAEhBtI,KAAKgU,OAAS,OACdhU,KAAKgiB,IAAM5lB,EAEX4D,KAAKy8E,WAAW7xE,QAAQ8xE,IAEnBS,EACH,IAAK,IAAIx4E,KAAQ3E,KAEQ,MAAnB2E,EAAKknE,OAAO,IACZntD,EAAO1c,KAAKhC,KAAM2E,KACjBg2C,OAAOh2C,EAAKxE,MAAM,MACrBH,KAAK2E,GAAQvI,EAIrB,EAEAi7B,KAAM,WACJr3B,KAAKkR,MAAO,EAEZ,IACIksE,EADYp9E,KAAKy8E,WAAW,GACLE,WAC3B,GAAwB,UAApBS,EAAWz3E,KACb,MAAMy3E,EAAWp7D,IAGnB,OAAOhiB,KAAKq9E,IACd,EAEAvB,kBAAmB,SAASwB,GAC1B,GAAIt9E,KAAKkR,KACP,MAAMosE,EAGR,IAAI79D,EAAUzf,KACd,SAASy8B,EAAO8gD,EAAKC,GAYnB,OAXAxZ,EAAOr+D,KAAO,QACdq+D,EAAOhiD,IAAMs7D,EACb79D,EAAQhE,KAAO8hE,EAEXC,IAGF/9D,EAAQzL,OAAS,OACjByL,EAAQuC,IAAM5lB,KAGNohF,CACZ,CAEA,IAAK,IAAIzgF,EAAIiD,KAAKy8E,WAAWr/E,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACpD,IAAIq/E,EAAQp8E,KAAKy8E,WAAW1/E,GACxBinE,EAASoY,EAAMO,WAEnB,GAAqB,SAAjBP,EAAMC,OAIR,OAAO5/C,EAAO,OAGhB,GAAI2/C,EAAMC,QAAUr8E,KAAKwb,KAAM,CAC7B,IAAIiiE,EAAW/+D,EAAO1c,KAAKo6E,EAAO,YAC9BsB,EAAah/D,EAAO1c,KAAKo6E,EAAO,cAEpC,GAAIqB,GAAYC,EAAY,CAC1B,GAAI19E,KAAKwb,KAAO4gE,EAAME,SACpB,OAAO7/C,EAAO2/C,EAAME,UAAU,GACzB,GAAIt8E,KAAKwb,KAAO4gE,EAAMG,WAC3B,OAAO9/C,EAAO2/C,EAAMG,WAGxB,MAAO,GAAIkB,GACT,GAAIz9E,KAAKwb,KAAO4gE,EAAME,SACpB,OAAO7/C,EAAO2/C,EAAME,UAAU,OAG3B,KAAIoB,EAMT,MAAM,IAAI1oE,MAAM,0CALhB,GAAIhV,KAAKwb,KAAO4gE,EAAMG,WACpB,OAAO9/C,EAAO2/C,EAAMG,WAKxB,CACF,CACF,CACF,EAEAR,OAAQ,SAASp2E,EAAMqc,GACrB,IAAK,IAAIjlB,EAAIiD,KAAKy8E,WAAWr/E,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACpD,IAAIq/E,EAAQp8E,KAAKy8E,WAAW1/E,GAC5B,GAAIq/E,EAAMC,QAAUr8E,KAAKwb,MACrBkD,EAAO1c,KAAKo6E,EAAO,eACnBp8E,KAAKwb,KAAO4gE,EAAMG,WAAY,CAChC,IAAIoB,EAAevB,EACnB,KACF,CACF,CAEIuB,IACU,UAATh4E,GACS,aAATA,IACDg4E,EAAatB,QAAUr6D,GACvBA,GAAO27D,EAAapB,aAGtBoB,EAAe,MAGjB,IAAI3Z,EAAS2Z,EAAeA,EAAahB,WAAa,CAAC,EAIvD,OAHA3Y,EAAOr+D,KAAOA,EACdq+D,EAAOhiD,IAAMA,EAET27D,GACF39E,KAAKgU,OAAS,OACdhU,KAAKyb,KAAOkiE,EAAapB,WAClB7B,GAGF16E,KAAKwQ,SAASwzD,EACvB,EAEAxzD,SAAU,SAASwzD,EAAQwY,GACzB,GAAoB,UAAhBxY,EAAOr+D,KACT,MAAMq+D,EAAOhiD,IAcf,MAXoB,UAAhBgiD,EAAOr+D,MACS,aAAhBq+D,EAAOr+D,KACT3F,KAAKyb,KAAOuoD,EAAOhiD,IACM,WAAhBgiD,EAAOr+D,MAChB3F,KAAKq9E,KAAOr9E,KAAKgiB,IAAMgiD,EAAOhiD,IAC9BhiB,KAAKgU,OAAS,SACdhU,KAAKyb,KAAO,OACa,WAAhBuoD,EAAOr+D,MAAqB62E,IACrCx8E,KAAKyb,KAAO+gE,GAGP9B,CACT,EAEAvsC,OAAQ,SAASouC,GACf,IAAK,IAAIx/E,EAAIiD,KAAKy8E,WAAWr/E,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACpD,IAAIq/E,EAAQp8E,KAAKy8E,WAAW1/E,GAC5B,GAAIq/E,EAAMG,aAAeA,EAGvB,OAFAv8E,KAAKwQ,SAAS4rE,EAAMO,WAAYP,EAAMI,UACtCE,EAAcN,GACP1B,CAEX,CACF,EAEA,MAAS,SAAS2B,GAChB,IAAK,IAAIt/E,EAAIiD,KAAKy8E,WAAWr/E,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACpD,IAAIq/E,EAAQp8E,KAAKy8E,WAAW1/E,GAC5B,GAAIq/E,EAAMC,SAAWA,EAAQ,CAC3B,IAAIrY,EAASoY,EAAMO,WACnB,GAAoB,UAAhB3Y,EAAOr+D,KAAkB,CAC3B,IAAIi4E,EAAS5Z,EAAOhiD,IACpB06D,EAAcN,EAChB,CACA,OAAOwB,CACT,CACF,CAIA,MAAM,IAAI5oE,MAAM,wBAClB,EAEA6oE,cAAe,SAASjB,EAAUZ,EAAYC,GAa5C,OAZAj8E,KAAKsI,SAAW,CACd6Z,SAAU6W,EAAO4jD,GACjBZ,WAAYA,EACZC,QAASA,GAGS,SAAhBj8E,KAAKgU,SAGPhU,KAAKgiB,IAAM5lB,GAGNs+E,CACT,GAOK5+E,CAET,CAvtBc,CA4tBiBG,EAAOH,SAGtC,IACEgiF,mBAAqB1E,CACvB,CAAE,MAAO2E,GAWmB,kBAAfjgE,WACTA,WAAWggE,mBAAqB1E,EAEhCp7D,SAAS,IAAK,yBAAdA,CAAwCo7D,EAE5C,sCCvvBA,IAAI4E,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAEtBC,EAAa97E,UAGjBnG,EAAOH,QAAU,SAAU6rB,GACzB,GAAIq2D,EAAWr2D,GAAW,OAAOA,EACjC,MAAM,IAAIu2D,EAAWD,EAAYt2D,GAAY,qBAC/C,sCCTA,IAAIw2D,EAAW,EAAQ,OAEnBC,EAAUn/E,OACVi/E,EAAa97E,UAGjBnG,EAAOH,QAAU,SAAU6rB,GACzB,GAAIw2D,EAASx2D,GAAW,OAAOA,EAC/B,MAAM,IAAIu2D,EAAWE,EAAQz2D,GAAY,oBAC3C,sCCTA,IAAI02D,EAAkB,EAAQ,OAC1BC,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,MAG5BC,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOjsE,EAAIksE,GAC1B,IAGI/6E,EAHAg7E,EAAIP,EAAgBK,GACpBthF,EAASmhF,EAAkBK,GAC3B3iE,EAAQqiE,EAAgBK,EAAWvhF,GAIvC,GAAIqhF,GAAehsE,IAAOA,GAAI,KAAOrV,EAAS6e,GAG5C,IAFArY,EAAQg7E,EAAE3iE,QAEIrY,EAAO,OAAO,OAEvB,KAAMxG,EAAS6e,EAAOA,IAC3B,IAAKwiE,GAAexiE,KAAS2iE,IAAMA,EAAE3iE,KAAWxJ,EAAI,OAAOgsE,GAAexiE,GAAS,EACnF,OAAQwiE,IAAgB,CAC5B,CACF,EAEAxiF,EAAOH,QAAU,CAGf+iF,SAAUL,GAAa,GAGvBztE,QAASytE,GAAa,wCC9BxB,IAAIM,EAAc,EAAQ,OAE1B7iF,EAAOH,QAAUgjF,EAAY,GAAG3+E,0CCFhC,IAAI2+E,EAAc,EAAQ,OAEtBlhF,EAAWkhF,EAAY,CAAC,EAAElhF,UAC1BmhF,EAAcD,EAAY,GAAG3+E,OAEjClE,EAAOH,QAAU,SAAUkjF,GACzB,OAAOD,EAAYnhF,EAASohF,GAAK,GAAI,EACvC,qCCPA,IAAItgE,EAAS,EAAQ,OACjBugE,EAAU,EAAQ,OAClBC,EAAiC,EAAQ,OACzCC,EAAuB,EAAQ,OAEnCljF,EAAOH,QAAU,SAAU8E,EAAQiZ,EAAQulE,GAIzC,IAHA,IAAIn4D,EAAOg4D,EAAQplE,GACfhX,EAAiBs8E,EAAqBE,EACtCx9B,EAA2Bq9B,EAA+BG,EACrDtiF,EAAI,EAAGA,EAAIkqB,EAAK7pB,OAAQL,IAAK,CACpC,IAAI+F,EAAMmkB,EAAKlqB,GACV2hB,EAAO9d,EAAQkC,IAAUs8E,GAAc1gE,EAAO0gE,EAAYt8E,IAC7DD,EAAejC,EAAQkC,EAAK++C,EAAyBhoC,EAAQ/W,GAEjE,CACF,sCCfA,IAAIw8E,EAAc,EAAQ,OACtBH,EAAuB,EAAQ,OAC/BI,EAA2B,EAAQ,OAEvCtjF,EAAOH,QAAUwjF,EAAc,SAAU52E,EAAQ5F,EAAKc,GACpD,OAAOu7E,EAAqBE,EAAE32E,EAAQ5F,EAAKy8E,EAAyB,EAAG37E,GACzE,EAAI,SAAU8E,EAAQ5F,EAAKc,GAEzB,OADA8E,EAAO5F,GAAOc,EACP8E,CACT,kCCTAzM,EAAOH,QAAU,SAAU0jF,EAAQ57E,GACjC,MAAO,CACLnB,aAAuB,EAAT+8E,GACd98E,eAAyB,EAAT88E,GAChB78E,WAAqB,EAAT68E,GACZ57E,MAAOA,EAEX,sCCPA,IAAI67E,EAAc,EAAQ,OACtB58E,EAAiB,EAAQ,OAE7B5G,EAAOH,QAAU,SAAU8E,EAAQ+D,EAAMnC,GAGvC,OAFIA,EAAWsF,KAAK23E,EAAYj9E,EAAWsF,IAAKnD,EAAM,CAAE8qC,QAAQ,IAC5DjtC,EAAW/C,KAAKggF,EAAYj9E,EAAW/C,IAAKkF,EAAM,CAAE2yB,QAAQ,IACzDz0B,EAAew8E,EAAEz+E,EAAQ+D,EAAMnC,EACxC,sCCPA,IAAIw7E,EAAa,EAAQ,OACrBmB,EAAuB,EAAQ,OAC/BM,EAAc,EAAQ,OACtBC,EAAuB,EAAQ,OAEnCzjF,EAAOH,QAAU,SAAU8iF,EAAG97E,EAAKc,EAAOsM,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIyZ,EAASzZ,EAAQzN,WACjBkC,OAAwBvI,IAAjB8T,EAAQvL,KAAqBuL,EAAQvL,KAAO7B,EAEvD,GADIk7E,EAAWp6E,IAAQ67E,EAAY77E,EAAOe,EAAMuL,GAC5CA,EAAQ+N,OACN0L,EAAQi1D,EAAE97E,GAAOc,EAChB87E,EAAqB58E,EAAKc,OAC1B,CACL,IACOsM,EAAQyvE,OACJf,EAAE97E,KAAM6mB,GAAS,UADEi1D,EAAE97E,EAEhC,CAAE,MAAOyF,GAAqB,CAC1BohB,EAAQi1D,EAAE97E,GAAOc,EAChBu7E,EAAqBE,EAAET,EAAG97E,EAAK,CAClCc,MAAOA,EACPnB,YAAY,EACZC,cAAewN,EAAQ0vE,gBACvBj9E,UAAWuN,EAAQ2vE,aAEvB,CAAE,OAAOjB,CACX,sCC1BA,IAAI3gE,EAAS,EAAQ,OAGjBpb,EAAiBD,OAAOC,eAE5B5G,EAAOH,QAAU,SAAUgH,EAAKc,GAC9B,IACEf,EAAeob,EAAQnb,EAAK,CAAEc,MAAOA,EAAOlB,cAAc,EAAMC,UAAU,GAC5E,CAAE,MAAO4F,GACP0V,EAAOnb,GAAOc,CAChB,CAAE,OAAOA,CACX,sCCXA,IAAIk8E,EAAQ,EAAQ,OAGpB7jF,EAAOH,SAAWgkF,GAAM,WAEtB,OAA+E,IAAxEl9E,OAAOC,eAAe,CAAC,EAAG,EAAG,CAAEiF,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,wCCNA,IAAImW,EAAS,EAAQ,OACjBkgE,EAAW,EAAQ,OAEnBl5E,EAAWgZ,EAAOhZ,SAElB86E,EAAS5B,EAASl5E,IAAak5E,EAASl5E,EAASmE,eAErDnN,EAAOH,QAAU,SAAUkjF,GACzB,OAAOe,EAAS96E,EAASmE,cAAc41E,GAAM,CAAC,CAChD,kCCRA/iF,EAAOH,QAAwB,mBAAPkkF,KAAqBA,KAA6B,iBAAfA,IAAIzgE,2CCD/D,IAAIw8C,EAAY,EAAQ,OAGxB9/D,EAAOH,QAAU,qCAAqC0C,KAAKu9D,uCCH3D,IAAI99C,EAAS,EAAQ,OACjBgiE,EAAU,EAAQ,MAEtBhkF,EAAOH,QAAsC,YAA5BmkF,EAAQhiE,EAAOlE,yCCHhC9d,EAAOH,QAA8B,oBAAby/D,WAA4Bt8D,OAAOs8D,UAAUQ,YAAc,sCCAnF,IAOIl+D,EAAO0hB,EAPPtB,EAAS,EAAQ,OACjB89C,EAAY,EAAQ,OAEpBhiD,EAAUkE,EAAOlE,QACjBmmE,EAAOjiE,EAAOiiE,KACdC,EAAWpmE,GAAWA,EAAQomE,UAAYD,GAAQA,EAAK3gE,QACvD6gE,EAAKD,GAAYA,EAASC,GAG1BA,IAIF7gE,GAHA1hB,EAAQuiF,EAAGnoE,MAAM,MAGD,GAAK,GAAKpa,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7D0hB,GAAWw8C,MACdl+D,EAAQk+D,EAAUl+D,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQk+D,EAAUl+D,MAAM,oBACb0hB,GAAW1hB,EAAM,IAIhC5B,EAAOH,QAAUyjB,kCCzBjBtjB,EAAOH,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,+CCRF,IAAImiB,EAAS,EAAQ,OACjB4jC,EAA2B,WAC3Bw+B,EAA8B,EAAQ,OACtCC,EAAgB,EAAQ,OACxBZ,EAAuB,EAAQ,OAC/Ba,EAA4B,EAAQ,MACpCC,EAAW,EAAQ,OAiBvBvkF,EAAOH,QAAU,SAAUoU,EAAS2J,GAClC,IAGYjZ,EAAQkC,EAAK29E,EAAgBC,EAAgBl+E,EAHrDm+E,EAASzwE,EAAQtP,OACjBggF,EAAS1wE,EAAQ+N,OACjB4iE,EAAS3wE,EAAQ4wE,KASrB,GANElgF,EADEggF,EACO3iE,EACA4iE,EACA5iE,EAAO0iE,IAAWjB,EAAqBiB,EAAQ,CAAC,IAE/C1iE,EAAO0iE,IAAW,CAAC,GAAGzgF,UAEtB,IAAK4C,KAAO+W,EAAQ,CAQ9B,GAPA6mE,EAAiB7mE,EAAO/W,GAGtB29E,EAFEvwE,EAAQ6wE,gBACVv+E,EAAaq/C,EAAyBjhD,EAAQkC,KACfN,EAAWoB,MACpBhD,EAAOkC,IACtB09E,EAASI,EAAS99E,EAAM69E,GAAUE,EAAS,IAAM,KAAO/9E,EAAKoN,EAAQ8wE,cAE5C5kF,IAAnBqkF,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDF,EAA0BG,EAAgBD,EAC5C,EAEIvwE,EAAQ+wE,MAASR,GAAkBA,EAAeQ,OACpDZ,EAA4BK,EAAgB,QAAQ,GAEtDJ,EAAc1/E,EAAQkC,EAAK49E,EAAgBxwE,EAC7C,CACF,kCCrDAjU,EAAOH,QAAU,SAAUyqB,GACzB,IACE,QAASA,GACX,CAAE,MAAOhe,GACP,OAAO,CACT,CACF,sCCNA,IAAI24E,EAAc,EAAQ,OAEtBC,EAAoBnjE,SAAS9d,UAC7Bf,EAAQgiF,EAAkBhiF,MAC1B6C,EAAOm/E,EAAkBn/E,KAG7B/F,EAAOH,QAA4B,iBAAXslF,SAAuBA,QAAQjiF,QAAU+hF,EAAcl/E,EAAK8qC,KAAK3tC,GAAS,WAChG,OAAO6C,EAAK7C,MAAMA,EAAO0G,UAC3B,uCCTA,IAAIi5E,EAAc,EAAQ,OACtBuC,EAAY,EAAQ,OACpBH,EAAc,EAAQ,OAEtBp0C,EAAOgyC,EAAYA,EAAYhyC,MAGnC7wC,EAAOH,QAAU,SAAUE,EAAI43B,GAE7B,OADAytD,EAAUrlF,QACMI,IAATw3B,EAAqB53B,EAAKklF,EAAcp0C,EAAK9wC,EAAI43B,GAAQ,WAC9D,OAAO53B,EAAGmD,MAAMy0B,EAAM/tB,UACxB,CACF,sCCZA,IAAIi6E,EAAQ,EAAQ,OAEpB7jF,EAAOH,SAAWgkF,GAAM,WAEtB,IAAIthF,EAAO,WAA4B,EAAEsuC,OAEzC,MAAsB,mBAARtuC,GAAsBA,EAAK4d,eAAe,YAC1D,wCCPA,IAAI8kE,EAAc,EAAQ,OAEtBl/E,EAAOgc,SAAS9d,UAAU8B,KAE9B/F,EAAOH,QAAUolF,EAAcl/E,EAAK8qC,KAAK9qC,GAAQ,WAC/C,OAAOA,EAAK7C,MAAM6C,EAAM6D,UAC1B,sCCNA,IAAIy5E,EAAc,EAAQ,OACtB5gE,EAAS,EAAQ,OAEjByiE,EAAoBnjE,SAAS9d,UAE7BohF,EAAgBhC,GAAe18E,OAAOi/C,yBAEtCk+B,EAASrhE,EAAOyiE,EAAmB,QAEnCI,EAASxB,GAA0D,cAAhD,WAAqC,EAAEp7E,KAC1D68E,EAAezB,KAAYT,GAAgBA,GAAegC,EAAcH,EAAmB,QAAQz+E,cAEvGzG,EAAOH,QAAU,CACfikF,OAAQA,EACRwB,OAAQA,EACRC,aAAcA,uCCfhB,IAAIC,EAAa,EAAQ,MACrB3C,EAAc,EAAQ,OAE1B7iF,EAAOH,QAAU,SAAUE,GAIzB,GAAuB,aAAnBylF,EAAWzlF,GAAoB,OAAO8iF,EAAY9iF,EACxD,sCCRA,IAAIklF,EAAc,EAAQ,OAEtBC,EAAoBnjE,SAAS9d,UAC7B8B,EAAOm/E,EAAkBn/E,KACzB0/E,EAAsBR,GAAeC,EAAkBr0C,KAAKA,KAAK9qC,EAAMA,GAE3E/F,EAAOH,QAAUolF,EAAcQ,EAAsB,SAAU1lF,GAC7D,OAAO,WACL,OAAOgG,EAAK7C,MAAMnD,EAAI6J,UACxB,CACF,sCCVA,IAAIoY,EAAS,EAAQ,OACjB+/D,EAAa,EAAQ,OAMzB/hF,EAAOH,QAAU,SAAU4lB,EAAW1N,GACpC,OAAOnO,UAAUzI,OAAS,GALFuqB,EAKgB1J,EAAOyD,GAJxCs8D,EAAWr2D,GAAYA,OAAWvrB,GAIoB6hB,EAAOyD,IAAczD,EAAOyD,GAAW1N,GALtF,IAAU2T,CAM1B,sCCTA,IAAI05D,EAAY,EAAQ,OACpBM,EAAoB,EAAQ,KAIhC1lF,EAAOH,QAAU,SAAU8lF,EAAGC,GAC5B,IAAIhvD,EAAO+uD,EAAEC,GACb,OAAOF,EAAkB9uD,QAAQz2B,EAAYilF,EAAUxuD,EACzD,sCCRA,IAAIrJ,EAAQ,SAAUw1D,GACpB,OAAOA,GAAMA,EAAG1+E,OAASA,MAAQ0+E,CACnC,EAGA/iF,EAAOH,QAEL0tB,EAA2B,iBAAd1L,YAA0BA,aACvC0L,EAAuB,iBAAVnd,QAAsBA,SAEnCmd,EAAqB,iBAAR3R,MAAoBA,OACjC2R,EAAuB,iBAAV,EAAAzL,GAAsB,EAAAA,IACnCyL,EAAqB,iBAARxpB,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoCge,SAAS,cAATA,uCCdtC,IAAI8gE,EAAc,EAAQ,OACtBgD,EAAW,EAAQ,OAEnB1lE,EAAiB0iE,EAAY,CAAC,EAAE1iE,gBAKpCngB,EAAOH,QAAU8G,OAAO8b,QAAU,SAAgBsgE,EAAIl8E,GACpD,OAAOsZ,EAAe0lE,EAAS9C,GAAKl8E,EACtC,kCCVA7G,EAAOH,QAAU,CAAC,qCCAlB,IAAIimF,EAAa,EAAQ,OAEzB9lF,EAAOH,QAAUimF,EAAW,WAAY,uDCFxC,IAAIzC,EAAc,EAAQ,OACtBQ,EAAQ,EAAQ,OAChB12E,EAAgB,EAAQ,OAG5BnN,EAAOH,SAAWwjF,IAAgBQ,GAAM,WAEtC,OAES,IAFFl9E,OAAOC,eAAeuG,EAAc,OAAQ,IAAK,CACtDtB,IAAK,WAAc,OAAO,CAAG,IAC5BrL,CACL,wCCVA,IAAIqiF,EAAc,EAAQ,OACtBgB,EAAQ,EAAQ,OAChBG,EAAU,EAAQ,MAElB+B,EAAUp/E,OACVqV,EAAQ6mE,EAAY,GAAG7mE,OAG3Bhc,EAAOH,QAAUgkF,GAAM,WAGrB,OAAQkC,EAAQ,KAAKlT,qBAAqB,EAC5C,IAAK,SAAUkQ,GACb,MAAuB,WAAhBiB,EAAQjB,GAAmB/mE,EAAM+mE,EAAI,IAAMgD,EAAQhD,EAC5D,EAAIgD,qCCdJ,IAAIlD,EAAc,EAAQ,OACtBd,EAAa,EAAQ,OACrBiE,EAAQ,EAAQ,OAEhBC,EAAmBpD,EAAY9gE,SAASpgB,UAGvCogF,EAAWiE,EAAME,iBACpBF,EAAME,cAAgB,SAAUnD,GAC9B,OAAOkD,EAAiBlD,EAC1B,GAGF/iF,EAAOH,QAAUmmF,EAAME,gDCbvB,IAYI1iF,EAAKqI,EAAK+iB,EAZVu3D,EAAkB,EAAQ,OAC1BnkE,EAAS,EAAQ,OACjBkgE,EAAW,EAAQ,OACnBkC,EAA8B,EAAQ,OACtC3hE,EAAS,EAAQ,OACjB2jE,EAAS,EAAQ,OACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,OAErBC,EAA6B,6BAC7BpgF,EAAY6b,EAAO7b,UACnB2I,EAAUkT,EAAOlT,QAgBrB,GAAIq3E,GAAmBC,EAAO3kF,MAAO,CACnC,IAAIukF,EAAQI,EAAO3kF,QAAU2kF,EAAO3kF,MAAQ,IAAIqN,GAEhDk3E,EAAMn6E,IAAMm6E,EAAMn6E,IAClBm6E,EAAMp3D,IAAMo3D,EAAMp3D,IAClBo3D,EAAMxiF,IAAMwiF,EAAMxiF,IAElBA,EAAM,SAAUu/E,EAAIyD,GAClB,GAAIR,EAAMp3D,IAAIm0D,GAAK,MAAM,IAAI58E,EAAUogF,GAGvC,OAFAC,EAASC,OAAS1D,EAClBiD,EAAMxiF,IAAIu/E,EAAIyD,GACPA,CACT,EACA36E,EAAM,SAAUk3E,GACd,OAAOiD,EAAMn6E,IAAIk3E,IAAO,CAAC,CAC3B,EACAn0D,EAAM,SAAUm0D,GACd,OAAOiD,EAAMp3D,IAAIm0D,EACnB,CACF,KAAO,CACL,IAAI2D,EAAQL,EAAU,SACtBC,EAAWI,IAAS,EACpBljF,EAAM,SAAUu/E,EAAIyD,GAClB,GAAI/jE,EAAOsgE,EAAI2D,GAAQ,MAAM,IAAIvgF,EAAUogF,GAG3C,OAFAC,EAASC,OAAS1D,EAClBqB,EAA4BrB,EAAI2D,EAAOF,GAChCA,CACT,EACA36E,EAAM,SAAUk3E,GACd,OAAOtgE,EAAOsgE,EAAI2D,GAAS3D,EAAG2D,GAAS,CAAC,CAC1C,EACA93D,EAAM,SAAUm0D,GACd,OAAOtgE,EAAOsgE,EAAI2D,EACpB,CACF,CAEA1mF,EAAOH,QAAU,CACf2D,IAAKA,EACLqI,IAAKA,EACL+iB,IAAKA,EACL+3D,QArDY,SAAU5D,GACtB,OAAOn0D,EAAIm0D,GAAMl3E,EAAIk3E,GAAMv/E,EAAIu/E,EAAI,CAAC,EACtC,EAoDE6D,UAlDc,SAAUxkC,GACxB,OAAO,SAAU2gC,GACf,IAAIthF,EACJ,IAAKygF,EAASa,KAAQthF,EAAQoK,EAAIk3E,IAAKr5E,OAAS04C,EAC9C,MAAM,IAAIj8C,EAAU,0BAA4Bi8C,EAAO,aACvD,OAAO3gD,CACX,CACF,mCCxBA,IAAIolF,EAAiC,iBAAZ79E,UAAwBA,SAAS89E,IAK1D9mF,EAAOH,QAAgC,oBAAfgnF,QAA8C1mF,IAAhB0mF,EAA4B,SAAUn7D,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAam7D,CACvD,EAAI,SAAUn7D,GACZ,MAA0B,mBAAZA,CAChB,sCCVA,IAAIm4D,EAAQ,EAAQ,OAChB9B,EAAa,EAAQ,OAErBvqE,EAAc,kBAEd+sE,EAAW,SAAUwC,EAASC,GAChC,IAAIr/E,EAAQqL,EAAKqtD,EAAU0mB,IAC3B,OAAOp/E,IAAUs/E,GACbt/E,IAAUu/E,IACVnF,EAAWiF,GAAanD,EAAMmD,KAC5BA,EACR,EAEI3mB,EAAYkkB,EAASlkB,UAAY,SAAUrmC,GAC7C,OAAOh3B,OAAOg3B,GAAQxkB,QAAQgC,EAAa,KAAK8G,aAClD,EAEItL,EAAOuxE,EAASvxE,KAAO,CAAC,EACxBk0E,EAAS3C,EAAS2C,OAAS,IAC3BD,EAAW1C,EAAS0C,SAAW,IAEnCjnF,EAAOH,QAAU0kF,gCCnBjBvkF,EAAOH,QAAU,SAAUkjF,GACzB,OAAc,OAAPA,QAAsB5iF,IAAP4iF,CACxB,sCCJA,IAAIhB,EAAa,EAAQ,OAEzB/hF,EAAOH,QAAU,SAAUkjF,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAchB,EAAWgB,EAC1D,kCCJA/iF,EAAOH,SAAU,sCCAjB,IAAIimF,EAAa,EAAQ,OACrB/D,EAAa,EAAQ,OACrBoF,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAE5BrB,EAAUp/E,OAEd3G,EAAOH,QAAUunF,EAAoB,SAAUrE,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI1F,EAAUyI,EAAW,UACzB,OAAO/D,EAAW1E,IAAY8J,EAAc9J,EAAQp5E,UAAW8hF,EAAQhD,GACzE,qCCZA,IAAIsE,EAAW,EAAQ,OAIvBrnF,EAAOH,QAAU,SAAUkT,GACzB,OAAOs0E,EAASt0E,EAAI5R,OACtB,sCCNA,IAAI0hF,EAAc,EAAQ,OACtBgB,EAAQ,EAAQ,OAChB9B,EAAa,EAAQ,OACrBt/D,EAAS,EAAQ,OACjB4gE,EAAc,EAAQ,OACtBiE,EAA6B,sBAC7BpB,EAAgB,EAAQ,MACxBqB,EAAsB,EAAQ,KAE9BC,EAAuBD,EAAoBZ,QAC3Cc,EAAmBF,EAAoB17E,IACvCs2E,EAAUn/E,OAEV4D,EAAiBD,OAAOC,eACxBk8E,EAAcD,EAAY,GAAG3+E,OAC7BsR,EAAUqtE,EAAY,GAAGrtE,SACzBpT,EAAOygF,EAAY,GAAGzgF,MAEtBslF,EAAsBrE,IAAgBQ,GAAM,WAC9C,OAAsF,IAA/Ej9E,GAAe,WAA0B,GAAG,SAAU,CAAEe,MAAO,IAAKxG,MAC7E,IAEIs3E,EAAWz1E,OAAOA,QAAQgZ,MAAM,UAEhCwnE,EAAcxjF,EAAOH,QAAU,SAAU8H,EAAOe,EAAMuL,GACf,YAArC6uE,EAAYX,EAAQz5E,GAAO,EAAG,KAChCA,EAAO,IAAM8M,EAAQ2sE,EAAQz5E,GAAO,qBAAsB,MAAQ,KAEhEuL,GAAWA,EAAQu/B,SAAQ9qC,EAAO,OAASA,GAC3CuL,GAAWA,EAAQonB,SAAQ3yB,EAAO,OAASA,KAC1C+Z,EAAO9a,EAAO,SAAY2/E,GAA8B3/E,EAAMe,OAASA,KACtE26E,EAAaz8E,EAAee,EAAO,OAAQ,CAAEA,MAAOe,EAAMjC,cAAc,IACvEkB,EAAMe,KAAOA,GAEhBg/E,GAAuBzzE,GAAWwO,EAAOxO,EAAS,UAAYtM,EAAMxG,SAAW8S,EAAQ0zE,OACzF/gF,EAAee,EAAO,SAAU,CAAEA,MAAOsM,EAAQ0zE,QAEnD,IACM1zE,GAAWwO,EAAOxO,EAAS,gBAAkBA,EAAQwH,YACnD4nE,GAAaz8E,EAAee,EAAO,YAAa,CAAEjB,UAAU,IAEvDiB,EAAM1D,YAAW0D,EAAM1D,eAAY9D,EAChD,CAAE,MAAOmM,GAAqB,CAC9B,IAAI7K,EAAQ+lF,EAAqB7/E,GAG/B,OAFG8a,EAAOhhB,EAAO,YACjBA,EAAMmc,OAASxb,EAAKq2E,EAAyB,iBAAR/vE,EAAmBA,EAAO,KACxDf,CACX,EAIAoa,SAAS9d,UAAUtC,SAAW6hF,GAAY,WACxC,OAAOzB,EAAWh+E,OAAS0jF,EAAiB1jF,MAAM6Z,QAAUsoE,EAAcniF,KAC5E,GAAG,4CCrDH,IAAIyD,EAAOnD,KAAKmD,KACZ4M,EAAQ/P,KAAK+P,MAKjBpU,EAAOH,QAAUwE,KAAKujF,OAAS,SAAetnF,GAC5C,IAAIkB,GAAKlB,EACT,OAAQkB,EAAI,EAAI4S,EAAQ5M,GAAMhG,EAChC,sCCTA,IAAI6hF,EAAc,EAAQ,OACtBwE,EAAiB,EAAQ,OACzBC,EAA0B,EAAQ,OAClCC,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OAExB/F,EAAa97E,UAEb8hF,EAAkBthF,OAAOC,eAEzBshF,EAA4BvhF,OAAOi/C,yBACnCuiC,EAAa,aACb5C,EAAe,eACf6C,EAAW,WAIfvoF,EAAQujF,EAAIC,EAAcyE,EAA0B,SAAwBnF,EAAGiD,EAAGyC,GAIhF,GAHAN,EAASpF,GACTiD,EAAIoC,EAAcpC,GAClBmC,EAASM,GACQ,oBAAN1F,GAA0B,cAANiD,GAAqB,UAAWyC,GAAcD,KAAYC,IAAeA,EAAWD,GAAW,CAC5H,IAAIluC,EAAUguC,EAA0BvF,EAAGiD,GACvC1rC,GAAWA,EAAQkuC,KACrBzF,EAAEiD,GAAKyC,EAAW1gF,MAClB0gF,EAAa,CACX5hF,aAAc8+E,KAAgB8C,EAAaA,EAAW9C,GAAgBrrC,EAAQqrC,GAC9E/+E,WAAY2hF,KAAcE,EAAaA,EAAWF,GAAcjuC,EAAQiuC,GACxEzhF,UAAU,GAGhB,CAAE,OAAOuhF,EAAgBtF,EAAGiD,EAAGyC,EACjC,EAAIJ,EAAkB,SAAwBtF,EAAGiD,EAAGyC,GAIlD,GAHAN,EAASpF,GACTiD,EAAIoC,EAAcpC,GAClBmC,EAASM,GACLR,EAAgB,IAClB,OAAOI,EAAgBtF,EAAGiD,EAAGyC,EAC/B,CAAE,MAAO/7E,GAAqB,CAC9B,GAAI,QAAS+7E,GAAc,QAASA,EAAY,MAAM,IAAIpG,EAAW,2BAErE,MADI,UAAWoG,IAAY1F,EAAEiD,GAAKyC,EAAW1gF,OACtCg7E,CACT,sCC1CA,IAAIU,EAAc,EAAQ,OACtBt9E,EAAO,EAAQ,OACfuiF,EAA6B,EAAQ,OACrChF,EAA2B,EAAQ,OACnClB,EAAkB,EAAQ,OAC1B4F,EAAgB,EAAQ,OACxBvlE,EAAS,EAAQ,OACjBolE,EAAiB,EAAQ,OAGzBK,EAA4BvhF,OAAOi/C,yBAIvC/lD,EAAQujF,EAAIC,EAAc6E,EAA4B,SAAkCvF,EAAGiD,GAGzF,GAFAjD,EAAIP,EAAgBO,GACpBiD,EAAIoC,EAAcpC,GACdiC,EAAgB,IAClB,OAAOK,EAA0BvF,EAAGiD,EACtC,CAAE,MAAOt5E,GAAqB,CAC9B,GAAImW,EAAOkgE,EAAGiD,GAAI,OAAOtC,GAA0Bv9E,EAAKuiF,EAA2BlF,EAAGT,EAAGiD,GAAIjD,EAAEiD,GACjG,sCCrBA,IAAI2C,EAAqB,EAAQ,OAG7BjC,EAFc,EAAQ,OAEG/jE,OAAO,SAAU,aAK9C1iB,EAAQujF,EAAIz8E,OAAOu3D,qBAAuB,SAA6BykB,GACrE,OAAO4F,EAAmB5F,EAAG2D,EAC/B,mCCTAzmF,EAAQujF,EAAIz8E,OAAOm3D,0DCDnB,IAAI+kB,EAAc,EAAQ,OAE1B7iF,EAAOH,QAAUgjF,EAAY,CAAC,EAAEsE,mDCFhC,IAAItE,EAAc,EAAQ,OACtBpgE,EAAS,EAAQ,OACjB2/D,EAAkB,EAAQ,OAC1BttE,EAAU,iBACVwxE,EAAa,EAAQ,OAErB1iF,EAAOi/E,EAAY,GAAGj/E,MAE1B5D,EAAOH,QAAU,SAAU4M,EAAQ01C,GACjC,IAGIt7C,EAHA87E,EAAIP,EAAgB31E,GACpB3L,EAAI,EACJwC,EAAS,GAEb,IAAKuD,KAAO87E,GAAIlgE,EAAO6jE,EAAYz/E,IAAQ4b,EAAOkgE,EAAG97E,IAAQjD,EAAKN,EAAQuD,GAE1E,KAAOs7C,EAAMhhD,OAASL,GAAO2hB,EAAOkgE,EAAG97E,EAAMs7C,EAAMrhD,SAChDgU,EAAQxR,EAAQuD,IAAQjD,EAAKN,EAAQuD,IAExC,OAAOvD,CACT,oCCnBA,IAAIklF,EAAwB,CAAC,EAAE3V,qBAE3BjtB,EAA2Bj/C,OAAOi/C,yBAGlC6iC,EAAc7iC,IAA6B4iC,EAAsBziF,KAAK,CAAE,EAAG,GAAK,GAIpFlG,EAAQujF,EAAIqF,EAAc,SAA8B9C,GACtD,IAAIp/E,EAAaq/C,EAAyB7hD,KAAM4hF,GAChD,QAASp/E,GAAcA,EAAWC,UACpC,EAAIgiF,sCCZJ,IAAIziF,EAAO,EAAQ,OACfg8E,EAAa,EAAQ,OACrBG,EAAW,EAAQ,OAEnBD,EAAa97E,UAIjBnG,EAAOH,QAAU,SAAUkN,EAAO27E,GAChC,IAAI3oF,EAAIqE,EACR,GAAa,WAATskF,GAAqB3G,EAAWhiF,EAAKgN,EAAMpL,YAAcugF,EAAS99E,EAAM2B,EAAKhG,EAAIgN,IAAS,OAAO3I,EACrG,GAAI29E,EAAWhiF,EAAKgN,EAAM47E,WAAazG,EAAS99E,EAAM2B,EAAKhG,EAAIgN,IAAS,OAAO3I,EAC/E,GAAa,WAATskF,GAAqB3G,EAAWhiF,EAAKgN,EAAMpL,YAAcugF,EAAS99E,EAAM2B,EAAKhG,EAAIgN,IAAS,OAAO3I,EACrG,MAAM,IAAI69E,EAAW,0CACvB,sCCdA,IAAI6D,EAAa,EAAQ,OACrBjD,EAAc,EAAQ,OACtB+F,EAA4B,EAAQ,OACpCC,EAA8B,EAAQ,MACtCd,EAAW,EAAQ,OAEnBxlE,EAASsgE,EAAY,GAAGtgE,QAG5BviB,EAAOH,QAAUimF,EAAW,UAAW,YAAc,SAAiB/C,GACpE,IAAI/3D,EAAO49D,EAA0BxF,EAAE2E,EAAShF,IAC5CjlB,EAAwB+qB,EAA4BzF,EACxD,OAAOtlB,EAAwBv7C,EAAOyI,EAAM8yC,EAAsBilB,IAAO/3D,CAC3E,sCCbA,IAAI+8D,EAAW,EAAQ,OAIvB/nF,EAAOH,QAAU,WACf,IAAI83B,EAAOowD,EAAShkF,MAChBT,EAAS,GASb,OARIq0B,EAAKmxD,aAAYxlF,GAAU,KAC3Bq0B,EAAK3V,SAAQ1e,GAAU,KACvBq0B,EAAK2mC,aAAYh7D,GAAU,KAC3Bq0B,EAAK4mC,YAAWj7D,GAAU,KAC1Bq0B,EAAKoxD,SAAQzlF,GAAU,KACvBq0B,EAAKqxD,UAAS1lF,GAAU,KACxBq0B,EAAKsxD,cAAa3lF,GAAU,KAC5Bq0B,EAAKuxD,SAAQ5lF,GAAU,KACpBA,CACT,sCChBA,IAAIoiF,EAAoB,EAAQ,KAE5BzD,EAAa97E,UAIjBnG,EAAOH,QAAU,SAAUkjF,GACzB,GAAI2C,EAAkB3C,GAAK,MAAM,IAAId,EAAW,wBAA0Bc,GAC1E,OAAOA,CACT,qCCTA,IAWMz/D,EAXFtB,EAAS,EAAQ,OACjB9e,EAAQ,EAAQ,OAChB6+E,EAAa,EAAQ,OACrBoH,EAAgB,EAAQ,OACxBC,EAAa,EAAQ,OACrBC,EAAa,EAAQ,OACrBC,EAA0B,EAAQ,OAElCvnE,EAAWC,EAAOD,SAElBwnE,EAAO,WAAWhnF,KAAK6mF,IAAeD,KACpC7lE,EAAUtB,EAAO+hE,IAAIzgE,QAAQtH,MAAM,MACxB7a,OAAS,GAAoB,MAAfmiB,EAAQ,KAAeA,EAAQ,GAAK,GAAoB,MAAfA,EAAQ,IAA6B,MAAfA,EAAQ,KAMtGtjB,EAAOH,QAAU,SAAU2pF,EAAWC,GACpC,IAAIC,EAAkBD,EAAa,EAAI,EACvC,OAAOF,EAAO,SAAUj2E,EAASy/B,GAC/B,IAAI42C,EAAYL,EAAwB1/E,UAAUzI,OAAQ,GAAKuoF,EAC3D3pF,EAAKgiF,EAAWzuE,GAAWA,EAAUyO,EAASzO,GAC9CX,EAASg3E,EAAYN,EAAWz/E,UAAW8/E,GAAmB,GAC9D9hF,EAAW+hF,EAAY,WACzBzmF,EAAMnD,EAAIgE,KAAM4O,EAClB,EAAI5S,EACJ,OAAO0pF,EAAaD,EAAU5hF,EAAUmrC,GAAWy2C,EAAU5hF,EAC/D,EAAI4hF,CACN,qCC7BA,IAAIpD,EAAS,EAAQ,OACjBhsD,EAAM,EAAQ,OAEdpP,EAAOo7D,EAAO,QAElBpmF,EAAOH,QAAU,SAAUgH,GACzB,OAAOmkB,EAAKnkB,KAASmkB,EAAKnkB,GAAOuzB,EAAIvzB,GACvC,sCCPA,IAAImb,EAAS,EAAQ,OACjByhE,EAAuB,EAAQ,OAE/BmG,EAAS,qBACT5D,EAAQhkE,EAAO4nE,IAAWnG,EAAqBmG,EAAQ,CAAC,GAE5D5pF,EAAOH,QAAUmmF,sCCNjB,IAAI6D,EAAU,EAAQ,OAClB7D,EAAQ,EAAQ,QAEnBhmF,EAAOH,QAAU,SAAUgH,EAAKc,GAC/B,OAAOq+E,EAAMn/E,KAASm/E,EAAMn/E,QAAiB1G,IAAVwH,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAI/D,KAAK,CACtB0f,QAAS,SACTknD,KAAMqf,EAAU,OAAS,SACzBC,UAAW,+CACXC,QAAS,2DACTnsE,OAAQ,4ECTV,IAAIosE,EAAa,EAAQ,MACrBnG,EAAQ,EAAQ,OAGhB1B,EAFS,EAAQ,OAEAn/E,OAGrBhD,EAAOH,UAAY8G,OAAOm3D,wBAA0B+lB,GAAM,WACxD,IAAI7lB,EAAS/3C,OAAO,oBAKpB,OAAQk8D,EAAQnkB,MAAar3D,OAAOq3D,aAAmB/3C,UAEpDA,OAAO++D,MAAQgF,GAAcA,EAAa,EAC/C,wCCjBA,IAuBIC,EAAWzuD,EAAO0uD,EAASC,EAvB3BnoE,EAAS,EAAQ,OACjB9e,EAAQ,EAAQ,OAChB2tC,EAAO,EAAQ,OACfkxC,EAAa,EAAQ,OACrBt/D,EAAS,EAAQ,OACjBohE,EAAQ,EAAQ,OAChBjwE,EAAO,EAAQ,MACfy1E,EAAa,EAAQ,OACrBl8E,EAAgB,EAAQ,OACxBm8E,EAA0B,EAAQ,OAClCc,EAAS,EAAQ,MACjBC,EAAU,EAAQ,OAElB7mF,EAAMwe,EAAOsoE,aACbl/B,EAAQppC,EAAOuoE,eACfzsE,EAAUkE,EAAOlE,QACjB0sE,EAAWxoE,EAAOwoE,SAClBzoE,EAAWC,EAAOD,SAClB0oE,EAAiBzoE,EAAOyoE,eACxBznF,EAASgf,EAAOhf,OAChB0nF,EAAU,EACVr0D,EAAQ,CAAC,EACTs0D,EAAqB,qBAGzB9G,GAAM,WAEJoG,EAAYjoE,EAAOrN,QACrB,IAEA,IAAIy5B,EAAM,SAAUjiC,GAClB,GAAIsW,EAAO4T,EAAOlqB,GAAK,CACrB,IAAIpM,EAAKs2B,EAAMlqB,UACRkqB,EAAMlqB,GACbpM,GACF,CACF,EAEI6qF,EAAS,SAAUz+E,GACrB,OAAO,WACLiiC,EAAIjiC,EACN,CACF,EAEI0+E,EAAgB,SAAU1iF,GAC5BimC,EAAIjmC,EAAM6K,KACZ,EAEI83E,EAAyB,SAAU3+E,GAErC6V,EAAO+oE,YAAY/nF,EAAOmJ,GAAK89E,EAAUp0E,SAAW,KAAOo0E,EAAUn0E,KACvE,EAGKtS,GAAQ4nD,IACX5nD,EAAM,SAAsB8P,GAC1Bg2E,EAAwB1/E,UAAUzI,OAAQ,GAC1C,IAAIpB,EAAKgiF,EAAWzuE,GAAWA,EAAUyO,EAASzO,GAC9CgF,EAAO+wE,EAAWz/E,UAAW,GAKjC,OAJAysB,IAAQq0D,GAAW,WACjBxnF,EAAMnD,OAAII,EAAWmY,EACvB,EACAkjB,EAAMkvD,GACCA,CACT,EACAt/B,EAAQ,SAAwBj/C,UACvBkqB,EAAMlqB,EACf,EAEIk+E,EACF7uD,EAAQ,SAAUrvB,GAChB2R,EAAQktE,SAASJ,EAAOz+E,GAC1B,EAESq+E,GAAYA,EAASjoD,IAC9B/G,EAAQ,SAAUrvB,GAChBq+E,EAASjoD,IAAIqoD,EAAOz+E,GACtB,EAGSs+E,IAAmBL,GAE5BD,GADAD,EAAU,IAAIO,GACCQ,MACff,EAAQgB,MAAMC,UAAYN,EAC1BrvD,EAAQqV,EAAKs5C,EAAKY,YAAaZ,IAI/BnoE,EAAO9Z,kBACP65E,EAAW//D,EAAO+oE,eACjB/oE,EAAOopE,eACRnB,GAAoC,UAAvBA,EAAUp0E,WACtBguE,EAAMiH,IAEPtvD,EAAQsvD,EACR9oE,EAAO9Z,iBAAiB,UAAW2iF,GAAe,IAGlDrvD,EADSmvD,KAAsBx9E,EAAc,UACrC,SAAUhB,GAChByH,EAAK3D,YAAY9C,EAAc,WAAWw9E,GAAsB,WAC9D/2E,EAAKtG,YAAYvJ,MACjBqqC,EAAIjiC,EACN,CACF,EAGQ,SAAUA,GAChBmE,WAAWs6E,EAAOz+E,GAAK,EACzB,GAIJnM,EAAOH,QAAU,CACf2D,IAAKA,EACL4nD,MAAOA,uCClHT,IAAIigC,EAAsB,EAAQ,OAE9B/mF,EAAMD,KAAKC,IACXC,EAAMF,KAAKE,IAKfvE,EAAOH,QAAU,SAAUmgB,EAAO7e,GAChC,IAAImqF,EAAUD,EAAoBrrE,GAClC,OAAOsrE,EAAU,EAAIhnF,EAAIgnF,EAAUnqF,EAAQ,GAAKoD,EAAI+mF,EAASnqF,EAC/D,sCCVA,IAAIoqF,EAAgB,EAAQ,OACxBC,EAAyB,EAAQ,OAErCxrF,EAAOH,QAAU,SAAUkjF,GACzB,OAAOwI,EAAcC,EAAuBzI,GAC9C,sCCNA,IAAI6E,EAAQ,EAAQ,OAIpB5nF,EAAOH,QAAU,SAAU6rB,GACzB,IAAI+/D,GAAU//D,EAEd,OAAO+/D,IAAWA,GAAqB,IAAXA,EAAe,EAAI7D,EAAM6D,EACvD,sCCRA,IAAIJ,EAAsB,EAAQ,OAE9B9mF,EAAMF,KAAKE,IAIfvE,EAAOH,QAAU,SAAU6rB,GACzB,OAAOA,EAAW,EAAInnB,EAAI8mF,EAAoB3/D,GAAW,kBAAoB,CAC/E,sCCRA,IAAI8/D,EAAyB,EAAQ,OAEjCzF,EAAUp/E,OAId3G,EAAOH,QAAU,SAAU6rB,GACzB,OAAOq6D,EAAQyF,EAAuB9/D,GACxC,sCCRA,IAAI3lB,EAAO,EAAQ,OACfm8E,EAAW,EAAQ,OACnBwJ,EAAW,EAAQ,OACnBC,EAAY,EAAQ,OACpBC,EAAsB,EAAQ,OAC9BC,EAAkB,EAAQ,OAE1B5J,EAAa97E,UACb2lF,EAAeD,EAAgB,eAInC7rF,EAAOH,QAAU,SAAUkN,EAAO27E,GAChC,IAAKxG,EAASn1E,IAAU2+E,EAAS3+E,GAAQ,OAAOA,EAChD,IACIzJ,EADAyoF,EAAeJ,EAAU5+E,EAAO++E,GAEpC,GAAIC,EAAc,CAGhB,QAFa5rF,IAATuoF,IAAoBA,EAAO,WAC/BplF,EAASyC,EAAKgmF,EAAch/E,EAAO27E,IAC9BxG,EAAS5+E,IAAWooF,EAASpoF,GAAS,OAAOA,EAClD,MAAM,IAAI2+E,EAAW,0CACvB,CAEA,YADa9hF,IAATuoF,IAAoBA,EAAO,UACxBkD,EAAoB7+E,EAAO27E,EACpC,sCCxBA,IAAIsD,EAAc,EAAQ,OACtBN,EAAW,EAAQ,OAIvB1rF,EAAOH,QAAU,SAAU6rB,GACzB,IAAI7kB,EAAMmlF,EAAYtgE,EAAU,UAChC,OAAOggE,EAAS7kF,GAAOA,EAAMA,EAAM,EACrC,kCCRA,IAAIs7E,EAAUn/E,OAEdhD,EAAOH,QAAU,SAAU6rB,GACzB,IACE,OAAOy2D,EAAQz2D,EACjB,CAAE,MAAOpf,GACP,MAAO,QACT,CACF,sCCRA,IAAIu2E,EAAc,EAAQ,OAEtB12E,EAAK,EACL8/E,EAAU5nF,KAAKwgB,SACfljB,EAAWkhF,EAAY,GAAIlhF,UAE/B3B,EAAOH,QAAU,SAAUgH,GACzB,MAAO,gBAAqB1G,IAAR0G,EAAoB,GAAKA,GAAO,KAAOlF,IAAWwK,EAAK8/E,EAAS,GACtF,sCCPA,IAAIC,EAAgB,EAAQ,OAE5BlsF,EAAOH,QAAUqsF,IACXjmE,OAAO++D,MACkB,iBAAnB/+D,OAAOC,6CCLnB,IAAIm9D,EAAc,EAAQ,OACtBQ,EAAQ,EAAQ,OAIpB7jF,EAAOH,QAAUwjF,GAAeQ,GAAM,WAEpC,OAGiB,KAHVl9E,OAAOC,gBAAe,WAA0B,GAAG,YAAa,CACrEe,MAAO,GACPjB,UAAU,IACTzC,SACL,oCCXA,IAAIg+E,EAAa97E,UAEjBnG,EAAOH,QAAU,SAAU4jD,EAAQ0oC,GACjC,GAAI1oC,EAAS0oC,EAAU,MAAM,IAAIlK,EAAW,wBAC5C,OAAOx+B,CACT,sCCLA,IAAIzhC,EAAS,EAAQ,OACjB+/D,EAAa,EAAQ,OAErBjzE,EAAUkT,EAAOlT,QAErB9O,EAAOH,QAAUkiF,EAAWjzE,IAAY,cAAcvM,KAAKS,OAAO8L,wCCLlE,IAAIkT,EAAS,EAAQ,OACjBokE,EAAS,EAAQ,OACjB3jE,EAAS,EAAQ,OACjB2X,EAAM,EAAQ,OACd8xD,EAAgB,EAAQ,OACxB9E,EAAoB,EAAQ,OAE5BnhE,EAASjE,EAAOiE,OAChBmmE,EAAwBhG,EAAO,OAC/BiG,EAAwBjF,EAAoBnhE,EAAY,KAAKA,EAASA,GAAUA,EAAOqmE,eAAiBlyD,EAE5Gp6B,EAAOH,QAAU,SAAU6I,GAKvB,OAJG+Z,EAAO2pE,EAAuB1jF,KACjC0jF,EAAsB1jF,GAAQwjF,GAAiBzpE,EAAOwD,EAAQvd,GAC1Dud,EAAOvd,GACP2jF,EAAsB,UAAY3jF,IAC/B0jF,EAAsB1jF,EACjC,sCCjBA,IAAIsZ,EAAS,EAAQ,OACjBqhE,EAAc,EAAQ,OACtBkJ,EAAwB,EAAQ,OAChCC,EAAc,EAAQ,OACtB3I,EAAQ,EAAQ,OAGhBllE,EAASqD,EAAOrD,OAChB8tE,EAAkB9tE,EAAO1a,UAEhBo/E,GAAeQ,GAAM,WAChC,IAAI6I,GAAkB,EACtB,IACE/tE,EAAO,IAAK,IACd,CAAE,MAAOrS,GACPogF,GAAkB,CACpB,CAEA,IAAI/J,EAAI,CAAC,EAELgK,EAAQ,GACR95B,EAAW65B,EAAkB,SAAW,QAExCE,EAAY,SAAU/lF,EAAKgmF,GAE7BlmF,OAAOC,eAAe+7E,EAAG97E,EAAK,CAAEgF,IAAK,WAEnC,OADA8gF,GAASE,GACF,CACT,GACF,EAEIC,EAAQ,CACV/D,OAAQ,IACR/mE,OAAQ,IACRs8C,WAAY,IACZC,UAAW,IACX2qB,OAAQ,KAKV,IAAK,IAAIriF,KAFL6lF,IAAiBI,EAAMhE,WAAa,KAExBgE,EAAOF,EAAU/lF,EAAKimF,EAAMjmF,IAK5C,OAFaF,OAAOi/C,yBAAyB6mC,EAAiB,SAAS5gF,IAAI9F,KAAK48E,KAE9D9vB,GAAY85B,IAAU95B,CAC1C,KAIY05B,EAAsBE,EAAiB,QAAS,CAC1DhmF,cAAc,EACdoF,IAAK2gF,wCCrDP,IAAIt6E,EAAI,EAAQ,OACZ8P,EAAS,EAAQ,OACjBuoE,EAAiB,eAIrBr4E,EAAE,CAAE8P,QAAQ,EAAM6uB,MAAM,EAAMrqC,YAAY,EAAMu+E,OAAQ/iE,EAAOuoE,iBAAmBA,GAAkB,CAClGA,eAAgBA,wCCNlB,EAAQ,OACR,EAAQ,2CCFR,IAAIr4E,EAAI,EAAQ,OACZ8P,EAAS,EAAQ,OACjB+qE,EAAU,aACVC,EAAgB,EAAQ,MAGxB1C,EAAetoE,EAAOsoE,aAAe0C,EAAcD,GAAS,GAASA,EAIzE76E,EAAE,CAAE8P,QAAQ,EAAM6uB,MAAM,EAAMrqC,YAAY,EAAMu+E,OAAQ/iE,EAAOsoE,eAAiBA,GAAgB,CAC9FA,aAAcA","sources":["webpack://app/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://app/./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.js","webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs-exposed.js","webpack://app/./node_modules/quill/dist/quill-exposed.js","webpack://app/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://app/./node_modules/jquery/dist/jquery.js","webpack://app/./node_modules/quill/dist/quill.js","webpack://app/./node_modules/regenerator-runtime/runtime.js","webpack://app/./node_modules/core-js/internals/a-callable.js","webpack://app/./node_modules/core-js/internals/an-object.js","webpack://app/./node_modules/core-js/internals/array-includes.js","webpack://app/./node_modules/core-js/internals/array-slice.js","webpack://app/./node_modules/core-js/internals/classof-raw.js","webpack://app/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://app/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://app/./node_modules/core-js/internals/create-property-descriptor.js","webpack://app/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://app/./node_modules/core-js/internals/define-built-in.js","webpack://app/./node_modules/core-js/internals/define-global-property.js","webpack://app/./node_modules/core-js/internals/descriptors.js","webpack://app/./node_modules/core-js/internals/document-create-element.js","webpack://app/./node_modules/core-js/internals/engine-is-bun.js","webpack://app/./node_modules/core-js/internals/engine-is-ios.js","webpack://app/./node_modules/core-js/internals/engine-is-node.js","webpack://app/./node_modules/core-js/internals/engine-user-agent.js","webpack://app/./node_modules/core-js/internals/engine-v8-version.js","webpack://app/./node_modules/core-js/internals/enum-bug-keys.js","webpack://app/./node_modules/core-js/internals/export.js","webpack://app/./node_modules/core-js/internals/fails.js","webpack://app/./node_modules/core-js/internals/function-apply.js","webpack://app/./node_modules/core-js/internals/function-bind-context.js","webpack://app/./node_modules/core-js/internals/function-bind-native.js","webpack://app/./node_modules/core-js/internals/function-call.js","webpack://app/./node_modules/core-js/internals/function-name.js","webpack://app/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://app/./node_modules/core-js/internals/function-uncurry-this.js","webpack://app/./node_modules/core-js/internals/get-built-in.js","webpack://app/./node_modules/core-js/internals/get-method.js","webpack://app/./node_modules/core-js/internals/global.js","webpack://app/./node_modules/core-js/internals/has-own-property.js","webpack://app/./node_modules/core-js/internals/hidden-keys.js","webpack://app/./node_modules/core-js/internals/html.js","webpack://app/./node_modules/core-js/internals/ie8-dom-define.js","webpack://app/./node_modules/core-js/internals/indexed-object.js","webpack://app/./node_modules/core-js/internals/inspect-source.js","webpack://app/./node_modules/core-js/internals/internal-state.js","webpack://app/./node_modules/core-js/internals/is-callable.js","webpack://app/./node_modules/core-js/internals/is-forced.js","webpack://app/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://app/./node_modules/core-js/internals/is-object.js","webpack://app/./node_modules/core-js/internals/is-pure.js","webpack://app/./node_modules/core-js/internals/is-symbol.js","webpack://app/./node_modules/core-js/internals/length-of-array-like.js","webpack://app/./node_modules/core-js/internals/make-built-in.js","webpack://app/./node_modules/core-js/internals/math-trunc.js","webpack://app/./node_modules/core-js/internals/object-define-property.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://app/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://app/./node_modules/core-js/internals/object-keys-internal.js","webpack://app/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://app/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://app/./node_modules/core-js/internals/own-keys.js","webpack://app/./node_modules/core-js/internals/regexp-flags.js","webpack://app/./node_modules/core-js/internals/require-object-coercible.js","webpack://app/./node_modules/core-js/internals/schedulers-fix.js","webpack://app/./node_modules/core-js/internals/shared-key.js","webpack://app/./node_modules/core-js/internals/shared-store.js","webpack://app/./node_modules/core-js/internals/shared.js","webpack://app/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://app/./node_modules/core-js/internals/task.js","webpack://app/./node_modules/core-js/internals/to-absolute-index.js","webpack://app/./node_modules/core-js/internals/to-indexed-object.js","webpack://app/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://app/./node_modules/core-js/internals/to-length.js","webpack://app/./node_modules/core-js/internals/to-object.js","webpack://app/./node_modules/core-js/internals/to-primitive.js","webpack://app/./node_modules/core-js/internals/to-property-key.js","webpack://app/./node_modules/core-js/internals/try-to-string.js","webpack://app/./node_modules/core-js/internals/uid.js","webpack://app/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://app/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://app/./node_modules/core-js/internals/validate-arguments-length.js","webpack://app/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://app/./node_modules/core-js/internals/well-known-symbol.js","webpack://app/./node_modules/core-js/modules/es.regexp.flags.js","webpack://app/./node_modules/core-js/modules/web.clear-immediate.js","webpack://app/./node_modules/core-js/modules/web.immediate.js","webpack://app/./node_modules/core-js/modules/web.set-immediate.js"],"sourcesContent":["(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    });\n  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var 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  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var bytes = fileSlice.call(this.file, start, end);\n          this.fileReader.readAsArrayBuffer(bytes);\n          this.chunkIndex++;\n          return true;\n        } else {\n          return false;\n        }\n      }\n    } ]);\n    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray$1(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      var csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\n          delete response.direct_upload;\n          this.attributes = response;\n          this.directUploadData = direct_upload;\n          this.callback(null, this.toJSON());\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var hiddenInput = document.createElement(\"input\");\n        hiddenInput.type = \"hidden\";\n        hiddenInput.name = this.input.name;\n        this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n        this.dispatch(\"start\");\n        this.directUpload.create(function(error, attributes) {\n          if (error) {\n            hiddenInput.parentNode.removeChild(hiddenInput);\n            _this.dispatchError(error);\n          } else {\n            hiddenInput.value = attributes.signed_id;\n          }\n          _this.dispatch(\"end\");\n          callback(error);\n        });\n      }\n    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        detail.file = this.file;\n        detail.id = this.directUpload.id;\n        return dispatchEvent(this.input, \"direct-upload:\" + name, {\n          detail: detail\n        });\n      }\n    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(error) {\n              if (error) {\n                callback(error);\n                _this.dispatch(\"end\");\n              } else {\n                startNextController();\n              }\n            });\n          } else {\n            callback();\n            _this.dispatch(\"end\");\n          }\n        };\n        this.dispatch(\"start\");\n        startNextController();\n      }\n    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n","(function ($) {\n  \"use strict\";\n\n  var defaultOptions = {\n    tagClass: function(item) {\n      return 'label label-info';\n    },\n    itemValue: function(item) {\n      return item ? item.toString() : item;\n    },\n    itemText: function(item) {\n      return this.itemValue(item);\n    },\n    itemTitle: function(item) {\n      return null;\n    },\n    freeInput: true,\n    addOnBlur: true,\n    maxTags: undefined,\n    maxChars: undefined,\n    confirmKeys: [13, 44],\n    delimiter: ',',\n    delimiterRegex: null,\n    cancelConfirmKeysOnEmpty: false,\n    onTagExists: function(item, $tag) {\n      $tag.hide().fadeIn();\n    },\n    trimValue: false,\n    allowDuplicates: false\n  };\n\n  /**\n   * Constructor function\n   */\n  function TagsInput(element, options) {\n    this.isInit = true;\n    this.itemsArray = [];\n\n    this.$element = $(element);\n    this.$element.hide();\n\n    this.isSelect = (element.tagName === 'SELECT');\n    this.multiple = (this.isSelect && element.hasAttribute('multiple'));\n    this.objectItems = options && options.itemValue;\n    this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n    this.inputSize = Math.max(1, this.placeholderText.length);\n\n    this.$container = $('<div class=\"bootstrap-tagsinput\"></div>');\n    this.$input = $('<input type=\"text\" placeholder=\"' + this.placeholderText + '\"/>').appendTo(this.$container);\n\n    this.$element.before(this.$container);\n\n    this.build(options);\n    this.isInit = false;\n  }\n\n  TagsInput.prototype = {\n    constructor: TagsInput,\n\n    /**\n     * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n     * updating the elements val()\n     */\n    add: function(item, dontPushVal, options) {\n      var self = this;\n\n      if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)\n        return;\n\n      // Ignore falsey values, except false\n      if (item !== false && !item)\n        return;\n\n      // Trim value\n      if (typeof item === \"string\" && self.options.trimValue) {\n        item = $.trim(item);\n      }\n\n      // Throw an error when trying to add an object while the itemValue option was not set\n      if (typeof item === \"object\" && !self.objectItems)\n        throw(\"Can't add objects when itemValue option is not set\");\n\n      // Ignore strings only containg whitespace\n      if (item.toString().match(/^\\s*$/))\n        return;\n\n      // If SELECT but not multiple, remove current tag\n      if (self.isSelect && !self.multiple && self.itemsArray.length > 0)\n        self.remove(self.itemsArray[0]);\n\n      if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n        var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;\n        var items = item.split(delimiter);\n        if (items.length > 1) {\n          for (var i = 0; i < items.length; i++) {\n            this.add(items[i], true);\n          }\n\n          if (!dontPushVal)\n            self.pushVal();\n          return;\n        }\n      }\n\n      var itemValue = self.options.itemValue(item),\n          itemText = self.options.itemText(item),\n          tagClass = self.options.tagClass(item),\n          itemTitle = self.options.itemTitle(item);\n\n      // Ignore items allready added\n      var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];\n      if (existing && !self.options.allowDuplicates) {\n        // Invoke onTagExists\n        if (self.options.onTagExists) {\n          var $existingTag = $(\".tag\", self.$container).filter(function() { return $(this).data(\"item\") === existing; });\n          self.options.onTagExists(item, $existingTag);\n        }\n        return;\n      }\n\n      // if length greater than limit\n      if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)\n        return;\n\n      // raise beforeItemAdd arg\n      var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options});\n      self.$element.trigger(beforeItemAddEvent);\n      if (beforeItemAddEvent.cancel)\n        return;\n\n      // register item in internal array and map\n      self.itemsArray.push(item);\n\n      // add a tag element\n\n      var $tag = $('<span class=\"tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('\" title=\"' + itemTitle) : '') + '\">' + htmlEncode(itemText) + '<span data-role=\"remove\"></span></span>');\n      $tag.data('item', item);\n      self.findInputWrapper().before($tag);\n      $tag.after(' ');\n\n      // Check to see if the tag exists in its raw or uri-encoded form\n      var optionExists = (\n        $('option[value=\"' + encodeURIComponent(itemValue) + '\"]', self.$element).length ||\n        $('option[value=\"' + htmlEncode(itemValue) + '\"]', self.$element).length\n      );\n\n      // add <option /> if item represents a value not present in one of the <select />'s options\n      if (self.isSelect && !optionExists) {\n        var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');\n        $option.data('item', item);\n        $option.attr('value', itemValue);\n        self.$element.append($option);\n      }\n\n      if (!dontPushVal)\n        self.pushVal();\n\n      // Add class when reached maxTags\n      if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)\n        self.$container.addClass('bootstrap-tagsinput-max');\n\n      // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.\n      if ($('.typeahead, .twitter-typeahead', self.$container).length) {\n        self.$input.typeahead('val', '');\n      }\n\n      if (this.isInit) {\n        self.$element.trigger($.Event('itemAddedOnInit', { item: item, options: options }));\n      } else {\n        self.$element.trigger($.Event('itemAdded', { item: item, options: options }));\n      }\n    },\n\n    /**\n     * Removes the given item. Pass true to dontPushVal to prevent updating the\n     * elements val()\n     */\n    remove: function(item, dontPushVal, options) {\n      var self = this;\n\n      if (self.objectItems) {\n        if (typeof item === \"object\")\n          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  self.options.itemValue(item); } );\n        else\n          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  item; } );\n\n        item = item[item.length-1];\n      }\n\n      if (item) {\n        var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });\n        self.$element.trigger(beforeItemRemoveEvent);\n        if (beforeItemRemoveEvent.cancel)\n          return;\n\n        $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove();\n        $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();\n        if($.inArray(item, self.itemsArray) !== -1)\n          self.itemsArray.splice($.inArray(item, self.itemsArray), 1);\n      }\n\n      if (!dontPushVal)\n        self.pushVal();\n\n      // Remove class when reached maxTags\n      if (self.options.maxTags > self.itemsArray.length)\n        self.$container.removeClass('bootstrap-tagsinput-max');\n\n      self.$element.trigger($.Event('itemRemoved',  { item: item, options: options }));\n    },\n\n    /**\n     * Removes all items\n     */\n    removeAll: function() {\n      var self = this;\n\n      $('.tag', self.$container).remove();\n      $('option', self.$element).remove();\n\n      while(self.itemsArray.length > 0)\n        self.itemsArray.pop();\n\n      self.pushVal();\n    },\n\n    /**\n     * Refreshes the tags so they match the text/value of their corresponding\n     * item.\n     */\n    refresh: function() {\n      var self = this;\n      $('.tag', self.$container).each(function() {\n        var $tag = $(this),\n            item = $tag.data('item'),\n            itemValue = self.options.itemValue(item),\n            itemText = self.options.itemText(item),\n            tagClass = self.options.tagClass(item);\n\n          // Update tag's class and inner text\n          $tag.attr('class', null);\n          $tag.addClass('tag ' + htmlEncode(tagClass));\n          $tag.contents().filter(function() {\n            return this.nodeType == 3;\n          })[0].nodeValue = htmlEncode(itemText);\n\n          if (self.isSelect) {\n            var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });\n            option.attr('value', itemValue);\n          }\n      });\n    },\n\n    /**\n     * Returns the items added as tags\n     */\n    items: function() {\n      return this.itemsArray;\n    },\n\n    /**\n     * Assembly value by retrieving the value of each item, and set it on the\n     * element.\n     */\n    pushVal: function() {\n      var self = this,\n          val = $.map(self.items(), function(item) {\n            return self.options.itemValue(item).toString();\n          });\n\n      self.$element.val(val, true).trigger('change');\n    },\n\n    /**\n     * Initializes the tags input behaviour on the element\n     */\n    build: function(options) {\n      var self = this;\n\n      self.options = $.extend({}, defaultOptions, options);\n      // When itemValue is set, freeInput should always be false\n      if (self.objectItems)\n        self.options.freeInput = false;\n\n      makeOptionItemFunction(self.options, 'itemValue');\n      makeOptionItemFunction(self.options, 'itemText');\n      makeOptionFunction(self.options, 'tagClass');\n\n      // Typeahead Bootstrap version 2.3.2\n      if (self.options.typeahead) {\n        var typeahead = self.options.typeahead || {};\n\n        makeOptionFunction(typeahead, 'source');\n\n        self.$input.typeahead($.extend({}, typeahead, {\n          source: function (query, process) {\n            function processItems(items) {\n              var texts = [];\n\n              for (var i = 0; i < items.length; i++) {\n                var text = self.options.itemText(items[i]);\n                map[text] = items[i];\n                texts.push(text);\n              }\n              process(texts);\n            }\n\n            this.map = {};\n            var map = this.map,\n                data = typeahead.source(query);\n\n            if ($.isFunction(data.success)) {\n              // support for Angular callbacks\n              data.success(processItems);\n            } else if ($.isFunction(data.then)) {\n              // support for Angular promises\n              data.then(processItems);\n            } else {\n              // support for functions and jquery promises\n              $.when(data)\n               .then(processItems);\n            }\n          },\n          updater: function (text) {\n            self.add(this.map[text]);\n            return this.map[text];\n          },\n          matcher: function (text) {\n            return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);\n          },\n          sorter: function (texts) {\n            return texts.sort();\n          },\n          highlighter: function (text) {\n            var regex = new RegExp( '(' + this.query + ')', 'gi' );\n            return text.replace( regex, \"<strong>$1</strong>\" );\n          }\n        }));\n      }\n\n      // typeahead.js\n      if (self.options.typeaheadjs) {\n          var typeaheadConfig = null;\n          var typeaheadDatasets = {};\n\n          // Determine if main configurations were passed or simply a dataset\n          var typeaheadjs = self.options.typeaheadjs;\n          if ($.isArray(typeaheadjs)) {\n            typeaheadConfig = typeaheadjs[0];\n            typeaheadDatasets = typeaheadjs[1];\n          } else {\n            typeaheadDatasets = typeaheadjs;\n          }\n\n          self.$input.typeahead(typeaheadConfig, typeaheadDatasets).on('typeahead:selected', $.proxy(function (obj, datum) {\n            if (typeaheadDatasets.valueKey)\n              self.add(datum[typeaheadDatasets.valueKey]);\n            else\n              self.add(datum);\n            self.$input.typeahead('val', '');\n          }, self));\n      }\n\n      self.$container.on('click', $.proxy(function(event) {\n        if (! self.$element.attr('disabled')) {\n          self.$input.removeAttr('disabled');\n        }\n        self.$input.focus();\n      }, self));\n\n        if (self.options.addOnBlur && self.options.freeInput) {\n          self.$input.on('focusout', $.proxy(function(event) {\n              // HACK: only process on focusout when no typeahead opened, to\n              //       avoid adding the typeahead text as tag\n              if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {\n                self.add(self.$input.val());\n                self.$input.val('');\n              }\n          }, self));\n        }\n\n\n      self.$container.on('keydown', 'input', $.proxy(function(event) {\n        var $input = $(event.target),\n            $inputWrapper = self.findInputWrapper();\n\n        if (self.$element.attr('disabled')) {\n          self.$input.attr('disabled', 'disabled');\n          return;\n        }\n\n        switch (event.which) {\n          // BACKSPACE\n          case 8:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var prev = $inputWrapper.prev();\n              if (prev.length) {\n                self.remove(prev.data('item'));\n              }\n            }\n            break;\n\n          // DELETE\n          case 46:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var next = $inputWrapper.next();\n              if (next.length) {\n                self.remove(next.data('item'));\n              }\n            }\n            break;\n\n          // LEFT ARROW\n          case 37:\n            // Try to move the input before the previous tag\n            var $prevTag = $inputWrapper.prev();\n            if ($input.val().length === 0 && $prevTag[0]) {\n              $prevTag.before($inputWrapper);\n              $input.focus();\n            }\n            break;\n          // RIGHT ARROW\n          case 39:\n            // Try to move the input after the next tag\n            var $nextTag = $inputWrapper.next();\n            if ($input.val().length === 0 && $nextTag[0]) {\n              $nextTag.after($inputWrapper);\n              $input.focus();\n            }\n            break;\n         default:\n             // ignore\n         }\n\n        // Reset internal input's size\n        var textLength = $input.val().length,\n            wordSpace = Math.ceil(textLength / 5),\n            size = textLength + wordSpace + 1;\n        $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n\n      self.$container.on('keypress', 'input', $.proxy(function(event) {\n         var $input = $(event.target);\n\n         if (self.$element.attr('disabled')) {\n            self.$input.attr('disabled', 'disabled');\n            return;\n         }\n\n         var text = $input.val(),\n         maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;\n         if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {\n            // Only attempt to add a tag if there is data in the field\n            if (text.length !== 0) {\n               self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);\n               $input.val('');\n            }\n\n            // If the field is empty, let the event triggered fire as usual\n            if (self.options.cancelConfirmKeysOnEmpty === false) {\n                event.preventDefault();\n            }\n         }\n\n         // Reset internal input's size\n         var textLength = $input.val().length,\n            wordSpace = Math.ceil(textLength / 5),\n            size = textLength + wordSpace + 1;\n         $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n\n      // Remove icon clicked\n      self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {\n        if (self.$element.attr('disabled')) {\n          return;\n        }\n        self.remove($(event.target).closest('.tag').data('item'));\n      }, self));\n\n      // Only add existing value as tags when using strings as tags\n      if (self.options.itemValue === defaultOptions.itemValue) {\n        if (self.$element[0].tagName === 'INPUT') {\n            self.add(self.$element.val());\n        } else {\n          $('option', self.$element).each(function() {\n            self.add($(this).attr('value'), true);\n          });\n        }\n      }\n    },\n\n    /**\n     * Removes all tagsinput behaviour and unregsiter all event handlers\n     */\n    destroy: function() {\n      var self = this;\n\n      // Unbind events\n      self.$container.off('keypress', 'input');\n      self.$container.off('click', '[role=remove]');\n\n      self.$container.remove();\n      self.$element.removeData('tagsinput');\n      self.$element.show();\n    },\n\n    /**\n     * Sets focus on the tagsinput\n     */\n    focus: function() {\n      this.$input.focus();\n    },\n\n    /**\n     * Returns the internal input element\n     */\n    input: function() {\n      return this.$input;\n    },\n\n    /**\n     * Returns the element which is wrapped around the internal input. This\n     * is normally the $container, but typeahead.js moves the $input element.\n     */\n    findInputWrapper: function() {\n      var elt = this.$input[0],\n          container = this.$container[0];\n      while(elt && elt.parentNode !== container)\n        elt = elt.parentNode;\n\n      return $(elt);\n    }\n  };\n\n  /**\n   * Register JQuery plugin\n   */\n  $.fn.tagsinput = function(arg1, arg2, arg3) {\n    var results = [];\n\n    this.each(function() {\n      var tagsinput = $(this).data('tagsinput');\n      // Initialize a new tags input\n      if (!tagsinput) {\n          tagsinput = new TagsInput(this, arg1);\n          $(this).data('tagsinput', tagsinput);\n          results.push(tagsinput);\n\n          if (this.tagName === 'SELECT') {\n              $('option', $(this)).attr('selected', 'selected');\n          }\n\n          // Init tags from $(this).val()\n          $(this).val($(this).val());\n      } else if (!arg1 && !arg2) {\n          // tagsinput already exists\n          // no function, trying to init\n          results.push(tagsinput);\n      } else if(tagsinput[arg1] !== undefined) {\n          // Invoke function on existing tags input\n            if(tagsinput[arg1].length === 3 && arg3 !== undefined){\n               var retVal = tagsinput[arg1](arg2, null, arg3);\n            }else{\n               var retVal = tagsinput[arg1](arg2);\n            }\n          if (retVal !== undefined)\n              results.push(retVal);\n      }\n    });\n\n    if ( typeof arg1 == 'string') {\n      // Return the results from the invoked function calls\n      return results.length > 1 ? results : results[0];\n    } else {\n      return results;\n    }\n  };\n\n  $.fn.tagsinput.Constructor = TagsInput;\n\n  /**\n   * Most options support both a string or number as well as a function as\n   * option value. This function makes sure that the option with the given\n   * key in the given options is wrapped in a function\n   */\n  function makeOptionItemFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var propertyName = options[key];\n      options[key] = function(item) { return item[propertyName]; };\n    }\n  }\n  function makeOptionFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var value = options[key];\n      options[key] = function() { return value; };\n    }\n  }\n  /**\n   * HtmlEncodes the given value\n   */\n  var htmlEncodeContainer = $('<div />');\n  function htmlEncode(value) {\n    if (value) {\n      return htmlEncodeContainer.text(value).html();\n    } else {\n      return '';\n    }\n  }\n\n  /**\n   * Returns the position of the caret in the given input field\n   * http://flightschool.acylt.com/devnotes/caret-position-woes/\n   */\n  function doGetCaretPosition(oField) {\n    var iCaretPos = 0;\n    if (document.selection) {\n      oField.focus ();\n      var oSel = document.selection.createRange();\n      oSel.moveStart ('character', -oField.value.length);\n      iCaretPos = oSel.text.length;\n    } else if (oField.selectionStart || oField.selectionStart == '0') {\n      iCaretPos = oField.selectionStart;\n    }\n    return (iCaretPos);\n  }\n\n  /**\n    * Returns boolean indicates whether user has pressed an expected key combination.\n    * @param object keyPressEvent: JavaScript event object, refer\n    *     http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n    * @param object lookupList: expected key combinations, as in:\n    *     [13, {which: 188, shiftKey: true}]\n    */\n  function keyCombinationInList(keyPressEvent, lookupList) {\n      var found = false;\n      $.each(lookupList, function (index, keyCombination) {\n          if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {\n              found = true;\n              return false;\n          }\n\n          if (keyPressEvent.which === keyCombination.which) {\n              var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,\n                  shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,\n                  ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;\n              if (alt && shift && ctrl) {\n                  found = true;\n                  return false;\n              }\n          }\n      });\n\n      return found;\n  }\n\n  /**\n   * Initialize tagsinput behaviour on inputs and selects which have\n   * data-role=tagsinput\n   */\n  $(function() {\n    $(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput();\n  });\n})(window.jQuery);\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./rails-ujs.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../../../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"Rails\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"Rails\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./quill.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"Quill\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"Quill\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n  if (typeof globalThis === \"object\") {\n    return globalThis;\n  }\n  var g;\n  try {\n    // This works if eval is allowed (see CSP)\n    // eslint-disable-next-line no-new-func\n    g = this || new Function(\"return this\")();\n  } catch (e) {\n    // This works if the window reference is available\n    if (typeof window === \"object\") {\n      return window;\n    }\n\n    // This works if the self reference is available\n    if (typeof self === \"object\") {\n      return self;\n    }\n\n    // This works if the global reference is available\n    if (typeof global !== \"undefined\") {\n      return global;\n    }\n  }\n  return g;\n}();","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var ops = [];\n  var firstOther = otherIter.peek();\n  if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n    var firstLeft = firstOther.retain;\n    while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n      firstLeft -= thisIter.peekLength();\n      ops.push(thisIter.next());\n    }\n    if (firstOther.retain - firstLeft > 0) {\n      otherIter.next(firstOther.retain - firstLeft);\n    }\n  }\n  var delta = new Delta(ops);\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n\n        // Optimization if rest of other is just retain\n        if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n          var rest = new Delta(thisIter.rest());\n          return delta.concat(rest).chop();\n        }\n\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        var _a;\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\nIterator.prototype.rest = function () {\n  if (!this.hasNext()) {\n    return [];\n  } else if (this.offset === 0) {\n    return this.ops.slice(this.index);\n  } else {\n    var offset = this.offset;\n    var index = this.index;\n    var next = this.next();\n    var rest = this.ops.slice(this.index);\n    this.offset = offset;\n    this.index = index;\n    return [next].concat(rest);\n  }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n  _inherits(Link, _Inline);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n  }\n\n  _createClass(Link, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n      value = this.constructor.sanitize(value);\n      this.domNode.setAttribute('href', value);\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n      value = this.sanitize(value);\n      node.setAttribute('href', value);\n      node.setAttribute('rel', 'noopener noreferrer');\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n  function Picker(select) {\n    var _this = this;\n\n    _classCallCheck(this, Picker);\n\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', function () {\n      _this.togglePicker();\n    });\n    this.label.addEventListener('keydown', function (event) {\n      switch (event.keyCode) {\n        // Allows the \"Enter\" key to open the picker\n        case _keyboard2.default.keys.ENTER:\n          _this.togglePicker();\n          break;\n\n        // Allows the \"Escape\" key to close the picker\n        case _keyboard2.default.keys.ESCAPE:\n          _this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  _createClass(Picker, [{\n    key: 'togglePicker',\n    value: function togglePicker() {\n      this.container.classList.toggle('ql-expanded');\n      // Toggle aria-expanded and aria-hidden to make the picker accessible\n      toggleAriaAttribute(this.label, 'aria-expanded');\n      toggleAriaAttribute(this.options, 'aria-hidden');\n    }\n  }, {\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var _this2 = this;\n\n      var item = document.createElement('span');\n      item.tabIndex = '0';\n      item.setAttribute('role', 'button');\n\n      item.classList.add('ql-picker-item');\n      if (option.hasAttribute('value')) {\n        item.setAttribute('data-value', option.getAttribute('value'));\n      }\n      if (option.textContent) {\n        item.setAttribute('data-label', option.textContent);\n      }\n      item.addEventListener('click', function () {\n        _this2.selectItem(item, true);\n      });\n      item.addEventListener('keydown', function (event) {\n        switch (event.keyCode) {\n          // Allows the \"Enter\" key to select an item\n          case _keyboard2.default.keys.ENTER:\n            _this2.selectItem(item, true);\n            event.preventDefault();\n            break;\n\n          // Allows the \"Escape\" key to close the picker\n          case _keyboard2.default.keys.ESCAPE:\n            _this2.escape();\n            event.preventDefault();\n            break;\n          default:\n        }\n      });\n\n      return item;\n    }\n  }, {\n    key: 'buildLabel',\n    value: function buildLabel() {\n      var label = document.createElement('span');\n      label.classList.add('ql-picker-label');\n      label.innerHTML = _dropdown2.default;\n      label.tabIndex = '0';\n      label.setAttribute('role', 'button');\n      label.setAttribute('aria-expanded', 'false');\n      this.container.appendChild(label);\n      return label;\n    }\n  }, {\n    key: 'buildOptions',\n    value: function buildOptions() {\n      var _this3 = this;\n\n      var options = document.createElement('span');\n      options.classList.add('ql-picker-options');\n\n      // Don't want screen readers to read this until options are visible\n      options.setAttribute('aria-hidden', 'true');\n      options.tabIndex = '-1';\n\n      // Need a unique id for aria-controls\n      options.id = 'ql-picker-options-' + optionsCounter;\n      optionsCounter += 1;\n      this.label.setAttribute('aria-controls', options.id);\n\n      this.options = options;\n\n      [].slice.call(this.select.options).forEach(function (option) {\n        var item = _this3.buildItem(option);\n        options.appendChild(item);\n        if (option.selected === true) {\n          _this3.selectItem(item);\n        }\n      });\n      this.container.appendChild(options);\n    }\n  }, {\n    key: 'buildPicker',\n    value: function buildPicker() {\n      var _this4 = this;\n\n      [].slice.call(this.select.attributes).forEach(function (item) {\n        _this4.container.setAttribute(item.name, item.value);\n      });\n      this.container.classList.add('ql-picker');\n      this.label = this.buildLabel();\n      this.buildOptions();\n    }\n  }, {\n    key: 'escape',\n    value: function escape() {\n      var _this5 = this;\n\n      // Close menu and return focus to trigger label\n      this.close();\n      // Need setTimeout for accessibility to ensure that the browser executes\n      // focus on the next process thread and after any DOM content changes\n      setTimeout(function () {\n        return _this5.label.focus();\n      }, 1);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.container.classList.remove('ql-expanded');\n      this.label.setAttribute('aria-expanded', 'false');\n      this.options.setAttribute('aria-hidden', 'true');\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item) {\n      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var selected = this.container.querySelector('.ql-selected');\n      if (item === selected) return;\n      if (selected != null) {\n        selected.classList.remove('ql-selected');\n      }\n      if (item == null) return;\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n          // IE11\n          var event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var option = void 0;\n      if (this.select.selectedIndex > -1) {\n        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n        option = this.select.options[this.select.selectedIndex];\n        this.selectItem(item);\n      } else {\n        this.selectItem(null);\n      }\n      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n      this.label.classList.toggle('ql-active', isActive);\n    }\n  }]);\n\n  return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'align': {\n    '': __webpack_require__(76),\n    'center': __webpack_require__(77),\n    'right': __webpack_require__(78),\n    'justify': __webpack_require__(79)\n  },\n  'background': __webpack_require__(80),\n  'blockquote': __webpack_require__(81),\n  'bold': __webpack_require__(82),\n  'clean': __webpack_require__(83),\n  'code': __webpack_require__(58),\n  'code-block': __webpack_require__(58),\n  'color': __webpack_require__(84),\n  'direction': {\n    '': __webpack_require__(85),\n    'rtl': __webpack_require__(86)\n  },\n  'float': {\n    'center': __webpack_require__(87),\n    'full': __webpack_require__(88),\n    'left': __webpack_require__(89),\n    'right': __webpack_require__(90)\n  },\n  'formula': __webpack_require__(91),\n  'header': {\n    '1': __webpack_require__(92),\n    '2': __webpack_require__(93)\n  },\n  'italic': __webpack_require__(94),\n  'image': __webpack_require__(95),\n  'indent': {\n    '+1': __webpack_require__(96),\n    '-1': __webpack_require__(97)\n  },\n  'link': __webpack_require__(98),\n  'list': {\n    'ordered': __webpack_require__(99),\n    'bullet': __webpack_require__(100),\n    'check': __webpack_require__(101)\n  },\n  'script': {\n    'sub': __webpack_require__(102),\n    'super': __webpack_require__(103)\n  },\n  'strike': __webpack_require__(104),\n  'underline': __webpack_require__(105),\n  'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n  _inherits(BaseTheme, _Theme);\n\n  function BaseTheme(quill, options) {\n    _classCallCheck(this, BaseTheme);\n\n    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n    var listener = function listener(e) {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n        _this.tooltip.hide();\n      }\n      if (_this.pickers != null) {\n        _this.pickers.forEach(function (picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n    return _this;\n  }\n\n  _createClass(BaseTheme, [{\n    key: 'addModule',\n    value: function addModule(name) {\n      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n      if (name === 'toolbar') {\n        this.extendToolbar(module);\n      }\n      return module;\n    }\n  }, {\n    key: 'buildButtons',\n    value: function buildButtons(buttons, icons) {\n      buttons.forEach(function (button) {\n        var className = button.getAttribute('class') || '';\n        className.split(/\\s+/).forEach(function (name) {\n          if (!name.startsWith('ql-')) return;\n          name = name.slice('ql-'.length);\n          if (icons[name] == null) return;\n          if (name === 'direction') {\n            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n          } else if (typeof icons[name] === 'string') {\n            button.innerHTML = icons[name];\n          } else {\n            var value = button.value || '';\n            if (value != null && icons[name][value]) {\n              button.innerHTML = icons[name][value];\n            }\n          }\n        });\n      });\n    }\n  }, {\n    key: 'buildPickers',\n    value: function buildPickers(selects, icons) {\n      var _this2 = this;\n\n      this.pickers = selects.map(function (select) {\n        if (select.classList.contains('ql-align')) {\n          if (select.querySelector('option') == null) {\n            fillSelect(select, ALIGNS);\n          }\n          return new _iconPicker2.default(select, icons.align);\n        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n          if (select.querySelector('option') == null) {\n            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n          }\n          return new _colorPicker2.default(select, icons[format]);\n        } else {\n          if (select.querySelector('option') == null) {\n            if (select.classList.contains('ql-font')) {\n              fillSelect(select, FONTS);\n            } else if (select.classList.contains('ql-header')) {\n              fillSelect(select, HEADERS);\n            } else if (select.classList.contains('ql-size')) {\n              fillSelect(select, SIZES);\n            }\n          }\n          return new _picker2.default(select);\n        }\n      });\n      var update = function update() {\n        _this2.pickers.forEach(function (picker) {\n          picker.update();\n        });\n      };\n      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n    }\n  }]);\n\n  return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function image() {\n          var _this3 = this;\n\n          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', function () {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                var reader = new FileReader();\n                reader.onload = function (e) {\n                  var range = _this3.quill.getSelection(true);\n                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n                  fileInput.value = \"\";\n                };\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function video() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n  _inherits(BaseTooltip, _Tooltip);\n\n  function BaseTooltip(quill, boundsContainer) {\n    _classCallCheck(this, BaseTooltip);\n\n    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n    _this4.listen();\n    return _this4;\n  }\n\n  _createClass(BaseTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this5 = this;\n\n      this.textbox.addEventListener('keydown', function (event) {\n        if (_keyboard2.default.match(event, 'enter')) {\n          _this5.save();\n          event.preventDefault();\n        } else if (_keyboard2.default.match(event, 'escape')) {\n          _this5.cancel();\n          event.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.hide();\n    }\n  }, {\n    key: 'edit',\n    value: function edit() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.root.classList.remove('ql-hidden');\n      this.root.classList.add('ql-editing');\n      if (preview != null) {\n        this.textbox.value = preview;\n      } else if (mode !== this.root.getAttribute('data-mode')) {\n        this.textbox.value = '';\n      }\n      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n      this.textbox.select();\n      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n      this.root.setAttribute('data-mode', mode);\n    }\n  }, {\n    key: 'restoreFocus',\n    value: function restoreFocus() {\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.quill.focus();\n      this.quill.scrollingContainer.scrollTop = scrollTop;\n    }\n  }, {\n    key: 'save',\n    value: function save() {\n      var value = this.textbox.value;\n      switch (this.root.getAttribute('data-mode')) {\n        case 'link':\n          {\n            var scrollTop = this.quill.root.scrollTop;\n            if (this.linkRange) {\n              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n              delete this.linkRange;\n            } else {\n              this.restoreFocus();\n              this.quill.format('link', value, _emitter2.default.sources.USER);\n            }\n            this.quill.root.scrollTop = scrollTop;\n            break;\n          }\n        case 'video':\n          {\n            value = extractVideoUrl(value);\n          } // eslint-disable-next-line no-fallthrough\n        case 'formula':\n          {\n            if (!value) break;\n            var range = this.quill.getSelection(true);\n            if (range != null) {\n              var index = range.index + range.length;\n              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n              if (this.root.getAttribute('data-mode') === 'formula') {\n                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n              }\n              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n            }\n            break;\n          }\n        default:\n      }\n      this.textbox.value = '';\n      this.hide();\n    }\n  }]);\n\n  return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n  var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n  }\n  if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    // eslint-disable-line no-cond-assign\n    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n  }\n  return url;\n}\n\nfunction fillSelect(select, values) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n  }\n\n  _createClass(Bold, [{\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create() {\n      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n  _inherits(Toolbar, _Module);\n\n  function Toolbar(quill, options) {\n    _classCallCheck(this, Toolbar);\n\n    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n    if (Array.isArray(_this.options.container)) {\n      var container = document.createElement('div');\n      addControls(container, _this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      _this.container = container;\n    } else if (typeof _this.options.container === 'string') {\n      _this.container = document.querySelector(_this.options.container);\n    } else {\n      _this.container = _this.options.container;\n    }\n    if (!(_this.container instanceof HTMLElement)) {\n      var _ret;\n\n      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n    }\n    _this.container.classList.add('ql-toolbar');\n    _this.controls = [];\n    _this.handlers = {};\n    Object.keys(_this.options.handlers).forEach(function (format) {\n      _this.addHandler(format, _this.options.handlers[format]);\n    });\n    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n      _this.attach(input);\n    });\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n      if (type === _quill2.default.events.SELECTION_CHANGE) {\n        _this.update(range);\n      }\n    });\n    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      var _this$quill$selection = _this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n      _this.update(range);\n    });\n    return _this;\n  }\n\n  _createClass(Toolbar, [{\n    key: 'addHandler',\n    value: function addHandler(format, handler) {\n      this.handlers[format] = handler;\n    }\n  }, {\n    key: 'attach',\n    value: function attach(input) {\n      var _this2 = this;\n\n      var format = [].find.call(input.classList, function (className) {\n        return className.indexOf('ql-') === 0;\n      });\n      if (!format) return;\n      format = format.slice('ql-'.length);\n      if (input.tagName === 'BUTTON') {\n        input.setAttribute('type', 'button');\n      }\n      if (this.handlers[format] == null) {\n        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n          debug.warn('ignoring attaching to disabled format', format, input);\n          return;\n        }\n        if (_parchment2.default.query(format) == null) {\n          debug.warn('ignoring attaching to nonexistent format', format, input);\n          return;\n        }\n      }\n      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n      input.addEventListener(eventName, function (e) {\n        var value = void 0;\n        if (input.tagName === 'SELECT') {\n          if (input.selectedIndex < 0) return;\n          var selected = input.options[input.selectedIndex];\n          if (selected.hasAttribute('selected')) {\n            value = false;\n          } else {\n            value = selected.value || false;\n          }\n        } else {\n          if (input.classList.contains('ql-active')) {\n            value = false;\n          } else {\n            value = input.value || !input.hasAttribute('value');\n          }\n          e.preventDefault();\n        }\n        _this2.quill.focus();\n\n        var _quill$selection$getR = _this2.quill.selection.getRange(),\n            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n            range = _quill$selection$getR2[0];\n\n        if (_this2.handlers[format] != null) {\n          _this2.handlers[format].call(_this2, value);\n        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n          value = prompt('Enter ' + format);\n          if (!value) return;\n          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n        } else {\n          _this2.quill.format(format, value, _quill2.default.sources.USER);\n        }\n        _this2.update(range);\n      });\n      // TODO use weakmap\n      this.controls.push([format, input]);\n    }\n  }, {\n    key: 'update',\n    value: function update(range) {\n      var formats = range == null ? {} : this.quill.getFormat(range);\n      this.controls.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            format = _pair[0],\n            input = _pair[1];\n\n        if (input.tagName === 'SELECT') {\n          var option = void 0;\n          if (range == null) {\n            option = null;\n          } else if (formats[format] == null) {\n            option = input.querySelector('option[selected]');\n          } else if (!Array.isArray(formats[format])) {\n            var value = formats[format];\n            if (typeof value === 'string') {\n              value = value.replace(/\\\"/g, '\\\\\"');\n            }\n            option = input.querySelector('option[value=\"' + value + '\"]');\n          }\n          if (option == null) {\n            input.value = ''; // TODO make configurable?\n            input.selectedIndex = -1;\n          } else {\n            option.selected = true;\n          }\n        } else {\n          if (range == null) {\n            input.classList.remove('ql-active');\n          } else if (input.hasAttribute('value')) {\n            // both being null should match (default values)\n            // '1' should match with 1 (headers)\n            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n            input.classList.toggle('ql-active', isActive);\n          } else {\n            input.classList.toggle('ql-active', formats[format] != null);\n          }\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n  var input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function (controls) {\n    var group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function (control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        var format = Object.keys(control)[0];\n        var value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  var input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function clean() {\n      var _this3 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        var formats = this.quill.getFormat();\n        Object.keys(formats).forEach(function (name) {\n          // Clean functionality in existing apps only clean inline formats\n          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n            _this3.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, _quill2.default.sources.USER);\n      }\n    },\n    direction: function direction(value) {\n      var align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', _quill2.default.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, _quill2.default.sources.USER);\n      }\n      this.quill.format('direction', value, _quill2.default.sources.USER);\n    },\n    indent: function indent(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      var indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        var modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n      }\n    },\n    link: function link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, _quill2.default.sources.USER);\n    },\n    list: function list(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, _quill2.default.sources.USER);\n      }\n    }\n  }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n  _inherits(ColorPicker, _Picker);\n\n  function ColorPicker(select, label) {\n    _classCallCheck(this, ColorPicker);\n\n    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n    _this.label.innerHTML = label;\n    _this.container.classList.add('ql-color-picker');\n    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n      item.classList.add('ql-primary');\n    });\n    return _this;\n  }\n\n  _createClass(ColorPicker, [{\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n      item.style.backgroundColor = option.getAttribute('value') || '';\n      return item;\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      var colorLabel = this.label.querySelector('.ql-color-label');\n      var value = item ? item.getAttribute('data-value') || '' : '';\n      if (colorLabel) {\n        if (colorLabel.tagName === 'line') {\n          colorLabel.style.stroke = value;\n        } else {\n          colorLabel.style.fill = value;\n        }\n      }\n    }\n  }]);\n\n  return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n  _inherits(IconPicker, _Picker);\n\n  function IconPicker(select, icons) {\n    _classCallCheck(this, IconPicker);\n\n    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n    _this.container.classList.add('ql-icon-picker');\n    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    _this.defaultItem = _this.container.querySelector('.ql-selected');\n    _this.selectItem(_this.defaultItem);\n    return _this;\n  }\n\n  _createClass(IconPicker, [{\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      item = item || this.defaultItem;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }]);\n\n  return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n  function Tooltip(quill, boundsContainer) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (this.quill.root === this.quill.scrollingContainer) {\n      this.quill.root.addEventListener('scroll', function () {\n        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n      });\n    }\n    this.hide();\n  }\n\n  _createClass(Tooltip, [{\n    key: 'hide',\n    value: function hide() {\n      this.root.classList.add('ql-hidden');\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n      // root.scrollTop should be 0 if scrollContainer !== root\n      var top = reference.bottom + this.quill.root.scrollTop;\n      this.root.style.left = left + 'px';\n      this.root.style.top = top + 'px';\n      this.root.classList.remove('ql-flip');\n      var containerBounds = this.boundsContainer.getBoundingClientRect();\n      var rootBounds = this.root.getBoundingClientRect();\n      var shift = 0;\n      if (rootBounds.right > containerBounds.right) {\n        shift = containerBounds.right - rootBounds.right;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.left < containerBounds.left) {\n        shift = containerBounds.left - rootBounds.left;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.bottom > containerBounds.bottom) {\n        var height = rootBounds.bottom - rootBounds.top;\n        var verticalShift = reference.bottom - reference.top + height;\n        this.root.style.top = top - verticalShift + 'px';\n        this.root.classList.add('ql-flip');\n      }\n      return shift;\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      this.root.classList.remove('ql-editing');\n      this.root.classList.remove('ql-hidden');\n    }\n  }]);\n\n  return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n  _inherits(SnowTheme, _BaseTheme);\n\n  function SnowTheme(quill, options) {\n    _classCallCheck(this, SnowTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-snow');\n    return _this;\n  }\n\n  _createClass(SnowTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n          toolbar.handlers['link'].call(toolbar, !context.format.link);\n        });\n      }\n    }\n  }]);\n\n  return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (value) {\n            var range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            var preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            var tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n  _inherits(SnowTooltip, _BaseTooltip);\n\n  function SnowTooltip(quill, bounds) {\n    _classCallCheck(this, SnowTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n    _this2.preview = _this2.root.querySelector('a.ql-preview');\n    return _this2;\n  }\n\n  _createClass(SnowTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n        if (_this3.root.classList.contains('ql-editing')) {\n          _this3.save();\n        } else {\n          _this3.edit('link', _this3.preview.textContent);\n        }\n        event.preventDefault();\n      });\n      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n        if (_this3.linkRange != null) {\n          var range = _this3.linkRange;\n          _this3.restoreFocus();\n          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n          delete _this3.linkRange;\n        }\n        event.preventDefault();\n        _this3.hide();\n      });\n      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n        if (range == null) return;\n        if (range.length === 0 && source === _emitter2.default.sources.USER) {\n          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n              link = _quill$scroll$descend2[0],\n              offset = _quill$scroll$descend2[1];\n\n          if (link != null) {\n            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n            var preview = _link2.default.formats(link.domNode);\n            _this3.preview.textContent = preview;\n            _this3.preview.setAttribute('href', preview);\n            _this3.show();\n            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n            return;\n          }\n        } else {\n          delete _this3.linkRange;\n        }\n        _this3.hide();\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n      this.root.removeAttribute('data-mode');\n    }\n  }]);\n\n  return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n  'attributors/attribute/direction': _direction.DirectionAttribute,\n\n  'attributors/class/align': _align.AlignClass,\n  'attributors/class/background': _background.BackgroundClass,\n  'attributors/class/color': _color.ColorClass,\n  'attributors/class/direction': _direction.DirectionClass,\n  'attributors/class/font': _font.FontClass,\n  'attributors/class/size': _size.SizeClass,\n\n  'attributors/style/align': _align.AlignStyle,\n  'attributors/style/background': _background.BackgroundStyle,\n  'attributors/style/color': _color.ColorStyle,\n  'attributors/style/direction': _direction.DirectionStyle,\n  'attributors/style/font': _font.FontStyle,\n  'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n  'formats/align': _align.AlignClass,\n  'formats/direction': _direction.DirectionClass,\n  'formats/indent': _indent.IndentClass,\n\n  'formats/background': _background.BackgroundStyle,\n  'formats/color': _color.ColorStyle,\n  'formats/font': _font.FontClass,\n  'formats/size': _size.SizeClass,\n\n  'formats/blockquote': _blockquote2.default,\n  'formats/code-block': _code2.default,\n  'formats/header': _header2.default,\n  'formats/list': _list2.default,\n\n  'formats/bold': _bold2.default,\n  'formats/code': _code.Code,\n  'formats/italic': _italic2.default,\n  'formats/link': _link2.default,\n  'formats/script': _script2.default,\n  'formats/strike': _strike2.default,\n  'formats/underline': _underline2.default,\n\n  'formats/image': _image2.default,\n  'formats/video': _video2.default,\n\n  'formats/list/item': _list.ListItem,\n\n  'modules/formula': _formula2.default,\n  'modules/syntax': _syntax2.default,\n  'modules/toolbar': _toolbar2.default,\n\n  'themes/bubble': _bubble2.default,\n  'themes/snow': _snow2.default,\n\n  'ui/icons': _icons2.default,\n  'ui/picker': _picker2.default,\n  'ui/icon-picker': _iconPicker2.default,\n  'ui/color-picker': _colorPicker2.default,\n  'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n  _inherits(IdentAttributor, _Parchment$Attributor);\n\n  function IdentAttributor() {\n    _classCallCheck(this, IdentAttributor);\n\n    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n  }\n\n  _createClass(IdentAttributor, [{\n    key: 'add',\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      } else {\n        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n      }\n    }\n  }, {\n    key: 'canAdd',\n    value: function canAdd(node, value) {\n      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n    }\n  }, {\n    key: 'value',\n    value: function value(node) {\n      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n  _inherits(Blockquote, _Block);\n\n  function Blockquote() {\n    _classCallCheck(this, Blockquote);\n\n    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n  }\n\n  return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n  _inherits(Header, _Block);\n\n  function Header() {\n    _classCallCheck(this, Header);\n\n    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n  }\n\n  _createClass(Header, null, [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n  _inherits(ListItem, _Block);\n\n  function ListItem() {\n    _classCallCheck(this, ListItem);\n\n    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n  }\n\n  _createClass(ListItem, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name === List.blotName && !value) {\n        this.replaceWith(_parchment2.default.create(this.statics.scope));\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      if (this.prev == null && this.next == null) {\n        this.parent.remove();\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n      }\n    }\n  }, {\n    key: 'replaceWith',\n    value: function replaceWith(name, value) {\n      this.parent.isolate(this.offset(this.parent), this.length());\n      if (name === this.parent.statics.blotName) {\n        this.parent.replaceWith(name, value);\n        return this;\n      } else {\n        this.parent.unwrap();\n        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n    }\n  }]);\n\n  return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n  _inherits(List, _Container);\n\n  _createClass(List, null, [{\n    key: 'create',\n    value: function create(value) {\n      var tagName = value === 'ordered' ? 'OL' : 'UL';\n      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n      if (value === 'checked' || value === 'unchecked') {\n        node.setAttribute('data-checked', value === 'checked');\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'OL') return 'ordered';\n      if (domNode.tagName === 'UL') {\n        if (domNode.hasAttribute('data-checked')) {\n          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n        } else {\n          return 'bullet';\n        }\n      }\n      return undefined;\n    }\n  }]);\n\n  function List(domNode) {\n    _classCallCheck(this, List);\n\n    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n    var listEventHandler = function listEventHandler(e) {\n      if (e.target.parentNode !== domNode) return;\n      var format = _this2.statics.formats(domNode);\n      var blot = _parchment2.default.find(e.target);\n      if (format === 'checked') {\n        blot.format('list', 'unchecked');\n      } else if (format === 'unchecked') {\n        blot.format('list', 'checked');\n      }\n    };\n\n    domNode.addEventListener('touchstart', listEventHandler);\n    domNode.addEventListener('mousedown', listEventHandler);\n    return _this2;\n  }\n\n  _createClass(List, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (this.children.length > 0) {\n        this.children.tail.format(name, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      // We don't inherit from FormatBlot\n      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot instanceof ListItem) {\n        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n      } else {\n        var index = ref == null ? this.length() : ref.offset(this);\n        var after = this.split(index);\n        after.parent.insertBefore(blot, after);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      if (target.statics.blotName !== this.statics.blotName) {\n        var item = _parchment2.default.create(this.statics.defaultChild);\n        target.moveChildren(item);\n        this.appendChild(item);\n      }\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n    }\n  }]);\n\n  return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n  _inherits(Italic, _Bold);\n\n  function Italic() {\n    _classCallCheck(this, Italic);\n\n    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n  }\n\n  return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n  _inherits(Script, _Inline);\n\n  function Script() {\n    _classCallCheck(this, Script);\n\n    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n  }\n\n  _createClass(Script, null, [{\n    key: 'create',\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      } else if (value === 'sub') {\n        return document.createElement('sub');\n      } else {\n        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n  _inherits(Strike, _Inline);\n\n  function Strike() {\n    _classCallCheck(this, Strike);\n\n    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n  }\n\n  return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n  _inherits(Underline, _Inline);\n\n  function Underline() {\n    _classCallCheck(this, Underline);\n\n    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n  }\n\n  return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n  _inherits(Image, _Parchment$Embed);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n  }\n\n  _createClass(Image, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'match',\n    value: function match(url) {\n      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n      );\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n  _inherits(Video, _BlockEmbed);\n\n  function Video() {\n    _classCallCheck(this, Video);\n\n    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n  }\n\n  _createClass(Video, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _link2.default.sanitize(url);\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n  _inherits(FormulaBlot, _Embed);\n\n  function FormulaBlot() {\n    _classCallCheck(this, FormulaBlot);\n\n    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n  }\n\n  _createClass(FormulaBlot, null, [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        window.katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n      return node;\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n  _inherits(Formula, _Module);\n\n  _createClass(Formula, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(FormulaBlot, true);\n    }\n  }]);\n\n  function Formula() {\n    _classCallCheck(this, Formula);\n\n    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n    if (window.katex == null) {\n      throw new Error('Formula module requires KaTeX.');\n    }\n    return _this2;\n  }\n\n  return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: 'replaceWith',\n    value: function replaceWith(block) {\n      this.domNode.textContent = this.domNode.textContent;\n      this.attach();\n      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n    }\n  }, {\n    key: 'highlight',\n    value: function highlight(_highlight) {\n      var text = this.domNode.textContent;\n      if (this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          this.domNode.innerHTML = _highlight(text);\n          this.domNode.normalize();\n          this.attach();\n        }\n        this.cachedText = text;\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n  _inherits(Syntax, _Module);\n\n  _createClass(Syntax, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(CodeToken, true);\n      _quill2.default.register(SyntaxCodeBlock, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    _classCallCheck(this, Syntax);\n\n    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n    if (typeof _this2.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    var timer = null;\n    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        _this2.highlight();\n        timer = null;\n      }, _this2.options.interval);\n    });\n    _this2.highlight();\n    return _this2;\n  }\n\n  _createClass(Syntax, [{\n    key: 'highlight',\n    value: function highlight() {\n      var _this3 = this;\n\n      if (this.quill.selection.composing) return;\n      this.quill.update(_quill2.default.sources.USER);\n      var range = this.quill.getSelection();\n      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n        code.highlight(_this3.options.highlight);\n      });\n      this.quill.update(_quill2.default.sources.SILENT);\n      if (range != null) {\n        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n      }\n    }\n  }]);\n\n  return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n  highlight: function () {\n    if (window.hljs == null) return null;\n    return function (text) {\n      var result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  }(),\n  interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n  _inherits(BubbleTheme, _BaseTheme);\n\n  function BubbleTheme(quill, options) {\n    _classCallCheck(this, BubbleTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-bubble');\n    return _this;\n  }\n\n  _createClass(BubbleTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n    }\n  }]);\n\n  return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n  _inherits(BubbleTooltip, _BaseTooltip);\n\n  function BubbleTooltip(quill, bounds) {\n    _classCallCheck(this, BubbleTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n        _this2.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        _this2.root.style.left = '0px';\n        _this2.root.style.width = '';\n        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n        var lines = _this2.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          _this2.position(_this2.quill.getBounds(range));\n        } else {\n          var lastLine = lines[lines.length - 1];\n          var index = _this2.quill.getIndex(lastLine);\n          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n          _this2.position(_bounds);\n        }\n      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n        _this2.hide();\n      }\n    });\n    return _this2;\n  }\n\n  _createClass(BubbleTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('.ql-close').addEventListener('click', function () {\n        _this3.root.classList.remove('ql-editing');\n      });\n      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n        // Let selection be restored by toolbar handlers before repositioning\n        setTimeout(function () {\n          if (_this3.root.classList.contains('ql-hidden')) return;\n          var range = _this3.quill.getSelection();\n          if (range != null) {\n            _this3.position(_this3.quill.getBounds(range));\n          }\n        }, 1);\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.show();\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n      arrow.style.marginLeft = '';\n      if (shift === 0) return shift;\n      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n    }\n  }]);\n\n  return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next mehtod, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\n/* global Bun -- Bun case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.35.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.35.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = global.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    global.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n"],"names":["exports","createCommonjsModule","fn","module","sparkMd5","factory","undefined","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","length","tail","tmp","lo","hi","n","state","substring","toString","match","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","join","toUtf8","str","test","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","substr","SparkMD5","this","reset","prototype","slice","clamp","val","Math","max","min","from","to","num","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","content","call","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","value","callback","create","_this","md5Buffer","fileReader","FileReader","addEventListener","event","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","name","start","readAsArrayBuffer","getMetaValue","element","findElement","document","head","getAttribute","findElements","root","selector","toArray$1","querySelectorAll","querySelector","dispatchEvent","type","eventInit","arguments","disabled","bubbles","cancelable","detail","createEvent","initEvent","Array","isArray","BlobRecord","checksum","url","attributes","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","csrfToken","requestDidLoad","requestDidError","send","JSON","stringify","blob","status","response","direct_upload","directUploadData","toJSON","get","_xhr","parse","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","delegate","error","notify","upload","object","methodName","_len","messages","_key","DirectUploadController","input","directUpload","dispatch","hiddenInput","createElement","insertAdjacentElement","parentNode","removeChild","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","inputSelector","DirectUploadsController","form","inputs","filter","files","controllers","createDirectUploadControllers","startNextController","controller","shift","forEach","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","preventDefault","setAttribute","disable","removeAttribute","enable","submitForm","button","focus","click","style","display","appendChild","delete","autostart","window","ActiveStorage","setTimeout","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","expando","m","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","meta","CSRFProtection","token","refreshCSRFTokens","param","CustomEvent","fire","params","evt","initCustomEvent","Event","obj","data","stopEverything","e","stopPropagation","stopImmediatePropagation","eventType","handler","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","responseText","getResponseHeader","floor","success","statusText","complete","beforeSend","readyState","OPENED","location","href","toUpperCase","indexOf","dataType","accept","done","crossDomain","withCredentials","onreadystatechange","DONE","parser","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","elements","option","selected","checked","map","formElements","el","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","body","isRemote","handleRemote","enctype","FormData","args","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","defaultOptions","tagClass","item","itemValue","itemText","itemTitle","freeInput","addOnBlur","maxTags","maxChars","confirmKeys","delimiter","delimiterRegex","cancelConfirmKeysOnEmpty","onTagExists","$tag","hide","fadeIn","trimValue","allowDuplicates","TagsInput","isInit","itemsArray","$element","isSelect","multiple","objectItems","placeholderText","attr","inputSize","$container","$input","appendTo","before","build","makeOptionItemFunction","propertyName","makeOptionFunction","constructor","add","dontPushVal","self","trim","remove","items","split","pushVal","existing","grep","maxInputLength","beforeItemAddEvent","cancel","trigger","htmlEncode","findInputWrapper","after","optionExists","$option","addClass","typeahead","$existingTag","other","beforeItemRemoveEvent","inArray","splice","removeClass","removeAll","pop","refresh","each","nodeType","nodeValue","extend","source","query","process","processItems","texts","isFunction","then","when","updater","matcher","toLowerCase","sorter","sort","highlighter","regex","RegExp","typeaheadjs","typeaheadConfig","typeaheadDatasets","on","proxy","datum","valueKey","removeAttr","$inputWrapper","which","doGetCaretPosition","prev","next","$prevTag","$nextTag","textLength","keyPressEvent","lookupList","found","maxLengthReached","index","keyCombination","alt","hasOwnProperty","altKey","shiftKey","ctrl","closest","off","removeData","show","elt","container","tagsinput","arg1","arg2","arg3","results","retVal","htmlEncodeContainer","oField","iCaretPos","selection","oSel","createRange","moveStart","selectionStart","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","globalThis","g","Function","global","w","noGlobal","getProto","getPrototypeOf","flat","array","concat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","src","noModule","DOMEval","code","node","doc","toType","version","rhtmlSuffix","context","init","isArrayLike","nodeName","elem","jquery","pushStack","elems","merge","prevObject","eq","last","even","_elem","odd","len","copy","copyIsArray","clone","deep","isPlainObject","random","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","textContent","documentElement","makeArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","invert","callbackExpect","arg","guid","Symbol","iterator","_i","whitespace","rtrimCSS","contains","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","dir","childNodes","els","find","seed","nid","groups","newSelector","newContext","exec","getElementById","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","select","keys","cache","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","defaultView","top","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","tag","className","compare","sortDetached","expr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","parent","useCache","diff","firstChild","lastChild","pseudo","setFilters","idx","matched","not","compile","unmatched","has","lang","elemLang","activeElement","err","safeActiveElement","hasFocus","tabIndex","enabled","selectedIndex","empty","nextSibling","header","_matchIndexes","lt","gt","nth","radio","checkbox","password","image","submit","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","sibling","cur","targets","l","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","Callbacks","_","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","once","stopOnFalse","lock","fireWith","Deferred","func","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","console","warn","stack","readyException","readyList","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","types","one","origFn","leverageNative","isSetup","saved","isTrigger","delegateType","isImmediatePropagationStopped","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","load","noBubble","beforeunload","returnValue","isDefaultPrevented","relatedTarget","timeStamp","Date","now","isSimulated","changedTouches","eventPhase","pageX","pageY","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","gotoEnd","propFilter","bind","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","processData","async","contentType","accepts","responseFields","converters","ajaxSetup","settings","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","abort","finalText","hasContent","ifModified","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","rtrim","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","noConflict","modules","installedModules","moduleId","o","__esModule","property","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","register","Container","default","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","__webpack_require__","extendStatics","__extends","setPrototypeOf","__proto__","__","ParchmentError","_super","classes","tags","ANY","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","names","TYPE","DATA_KEY","BlotClass","bubble","blot","Definitions","Definition","blotName","attrName","keyName","equal","op","NULL_CHARACTER","Delta","ops","newOp","retain","lastOp","chop","predicate","partition","passed","failed","reduce","changeLength","Infinity","iter","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","rest","strings","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","transform","priority","transformPosition","nextType","toStr","gOPD","getOwnPropertyDescriptor","hasOwnConstructor","hasIsPrototypeOf","newValue","getProperty","BlockEmbed","bubbleFormats","_createClass","_get","receiver","desc","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","_Parchment$Embed","domNode","formats","attribute","BLOCK_ATTRIBUTE","format","def","endsWith","block","insertAt","BLOCK_BLOT","_Parchment$Block","descendants","leaf","lines","child","force","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","_arr","_n","_d","_e","_s","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","debug","Quill","classList","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","theme","keyboard","addModule","clipboard","history","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","mutations","range","lastRange","modify","update","convert","setContents","clear","placeholder","readOnly","limit","level","imports","path","overwrite","startsWith","refNode","setRange","_this3","_overload","_overload2","deleteText","scrollIntoView","_this4","sources","API","getSelection","change","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","bottom","getLength","_overload7","_overload8","getContents","getFormat","Number","MAX_VALUE","getRange","_overload9","_overload10","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","userConfig","DEFAULTS","import","themeConfig","config","moduleConfig","moduleClass","toolbar","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","_map2","_map3","_map4","_Parchment$Inline","BLOT","isolate","moveChildren","selfIndex","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","eventName","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","listeners","log","_len2","_key2","_ref","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","_console","ns","logger","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","getTime","isUndefinedOrNull","isBuffer","ka","kb","objEquiv","attributeBit","ATTRIBUTE","canAdd","Code","_block2","_Inline","CodeBlock","_Block","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","optimize","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","combined","merged","_toConsumableArray","arr2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","collapsed","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","positions","indexes","_position","startContainer","endContainer","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","scrollBounds","removeAllRanges","addRange","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","forEachAt","criteria","_a","lengthLeft","childBlot","refBlot","some","insertInto","memo","targetParent","inclusive","addedNodes","removedNodes","mutation","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","FormatBlot","wrapper","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","_instanceof","nativeMap","nativeSet","nativePromise","Map","Set","Promise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","__isArray","__isRegExp","__getRegExpFlags","lastIndex","__isDate","allocUnsafe","keyChild","valueChild","entryChild","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","__objToStr","re","flags","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","observer","takeRecords","SHORTKEY","_quill2","navigator","platform","Keyboard","_Module","bindings","addBinding","ENTER","handleEnter","userAgent","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","binding","normalize","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","every","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","_inline","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","label","togglePicker","selectItem","buildItem","buildLabel","buildOptions","close","isActive","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","parentBlot","refDomNode","AttributorStore","ClassAttributor","camelize","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","changeDelta","undoDelta","timestamp","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","tooltip","textbox","pickers","picker","extendToolbar","icons","selects","fillSelect","align","formula","edit","fileInput","reader","readAsDataURL","video","_Tooltip","boundsContainer","save","mode","preview","linkRange","restoreFocus","LinkedList","curNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","previousSibling","grandChild","InlineBlot","obj1","obj2","isEqual","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","thisArg","execCommand","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","diff_cleanupMerge","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","ends_with_pair_start","fixed_diffs","fix_emoji","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","pointer","count_delete","count_insert","text_delete","text_insert","changes","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","Events","EE","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","ELEMENT_NODE","fontStyle","computeStyle","italic","bold","applyFormat","textIndent","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","textMatchers","traverse","paste","pair","_pair","endText","childrenDelta","nextElementSibling","nodeHeight","marginTop","marginBottom","offsetTop","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_quill$selection$getR","prompt","addButton","group","control","addSelect","clean","direction","_picker","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","isCallable","tryToString","$TypeError","isObject","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","O","includes","uncurryThis","stringSlice","it","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","f","DESCRIPTORS","createPropertyDescriptor","bitmap","makeBuiltIn","defineGlobalProperty","unsafe","nonConfigurable","nonWritable","fails","EXISTS","Bun","classof","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","NATIVE_BIND","FunctionPrototype","Reflect","aCallable","getDescriptor","PROPER","CONFIGURABLE","classofRaw","uncurryThisWithBind","isNullOrUndefined","V","P","toObject","getBuiltIn","$Object","store","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","enforce","getterFor","documentAll","all","feature","detection","POLYFILL","NATIVE","isPrototypeOf","USE_SYMBOL_AS_UID","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","arity","trunc","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","$propertyIsEnumerable","NASHORN_BUG","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","hasIndices","dotAll","unicode","unicodeSets","sticky","ENGINE_IS_BUN","USER_AGENT","arraySlice","validateArgumentsLength","WRAP","scheduler","hasTimeArg","firstParamIndex","boundArgs","SHARED","IS_PURE","copyright","license","V8_VERSION","$location","channel","port","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","ONREADYSTATECHANGE","runner","eventListener","globalPostMessageDefer","postMessage","nextTick","port2","port1","onmessage","importScripts","toIntegerOrInfinity","integer","IndexedObject","requireObjectCoercible","number","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","NATIVE_SYMBOL","required","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","addGetter","chr","pairs","setTask","schedulersFix"],"sourceRoot":""}