���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/alphpwcp/public_html/us/alphachat/design/defaulttheme/js/widgetv2/react.app.js.map
���ѧ٧ѧ�
{"version":3,"file":"react.app.js","mappings":"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EACAA,EACA,MACA,GACA,MAKJ,CACE,kBACA,QAGA,YACA,WACA,WACA,UACA,QACA,WACA,0BACA,wBACA,iBACA,SACA,OACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,SACA,WAEA,aACAxF,SAAQwF,IACRq1B,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EA/JY,GAiKZ,EACAA,EAAK6pB,cACL,MACA,GACA,MAMJ,CACE,UAGA,WACA,QACA,YAKArvB,SAAQwF,IACRq1B,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EAxLY,GA0LZ,EACAA,EACA,MACA,GACA,MAMJ,CACE,UACA,YAKAxF,SAAQwF,IACRq1B,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EAvMuB,GAyMvB,EACAA,EACA,MACA,GACA,MAKJ,CACE,OACA,OACA,OACA,QAKAxF,SAAQwF,IACRq1B,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EArNqB,GAuNrB,EACAA,EACA,MACA,GACA,MAKJ,CAAC,UAAW,SAASxF,SAAQwF,IAC3Bq1B,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EAtOY,GAwOZ,EACAA,EAAK6pB,cACL,MACA,GACA,MAIJ,MAAMyL,EAAW,iBACXC,EAAaC,GAASA,EAAM,GAAG7rB,cAOrC,CACE,gBACA,qBACA,cACA,iBACA,aACA,YACA,YACA,sBACA,8BACA,gBACA,kBACA,oBACA,oBACA,eACA,YACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,aACA,+BACA,6BACA,cACA,iBACA,kBACA,iBACA,iBACA,aACA,aACA,eACA,oBACA,qBACA,cACA,WACA,iBACA,mBACA,kBACA,aACA,eACA,yBACA,0BACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,cACA,kBACA,iBACA,qBACA,sBACA,eACA,gBACA,eACA,eACA,YACA,gBACA,iBACA,gBACA,aACA,gBACA,gBACA,eACA,eACA,cACA,YAKAnP,SAAQu6B,IACR,MAAM/0B,EAAO+0B,EAAc/1B,QAAQs2B,EAAUC,GAC7CF,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EA9VW,GAgWX,EACA+0B,EACA,MACA,GACA,MAKJ,CACE,gBACA,gBACA,aACA,aACA,cACA,cAKAv6B,SAAQu6B,IACR,MAAM/0B,EAAO+0B,EAAc/1B,QAAQs2B,EAAUC,GAC7CF,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EAvXW,GAyXX,EACA+0B,EACA,gCACA,GACA,MAKJ,CACE,WACA,WACA,aAKAv6B,SAAQu6B,IACR,MAAM/0B,EAAO+0B,EAAc/1B,QAAQs2B,EAAUC,GAC7CF,EAAWr1B,GAAQ,IAAI60B,EACrB70B,EA7YW,GA+YX,EACA+0B,EACA,wCACA,GACA,MAOJ,CAAC,WAAY,eAAev6B,SAAQu6B,IAClCM,EAAWN,GAAiB,IAAIF,EAC9BE,EA5ZW,GA8ZX,EACAA,EAAclL,cACd,MACA,GACA,MAOJwL,EAAoB,UAAI,IAAIR,EAC1B,YA1aa,GA4ab,EACA,aACA,gCACA,GACA,GAGF,CAAC,MAAO,OAAQ,SAAU,cAAcr6B,SAAQu6B,IAC9CM,EAAWN,GAAiB,IAAIF,EAC9BE,EArbW,GAubX,EACAA,EAAclL,cACd,MACA,GACA,MAKJ,MAAM,UACJ4L,EAAS,KACTC,EACAC,sBAAuBC,GACrB,EAAQ,MAeNC,EACJptB,OAAO7K,UAAUgL,KAAKhB,KAEpB,IAAIa,OAAO,+OAMTktB,EAAwBl8B,OAAOS,KACnC07B,GACAE,QAAO,CAACC,EAAaC,KACrB,MAAMC,EAAWL,EAA+BI,GAQhD,OAPIC,IAAaP,EACfK,EAAYC,GAAgBA,EACnBC,IAAaR,EACtBM,EAAYC,EAAanM,eAAiBmM,EAE1CD,EAAYC,GAAgBC,EAEvBF,IACN,CAAC,GAEJj9B,EAAQo9B,QA/dQ,EAgehBp9B,EAAQq9B,kBArekB,EAse1Br9B,EAAQs9B,QAvdQ,EAwdhBt9B,EAAQu9B,mBA5dmB,EA6d3Bv9B,EAAQw9B,iBArdiB,EAsdzBx9B,EAAQy9B,SAnfS,EAofjBz9B,EAAQ09B,OAhfO,EAiff19B,EAAQ29B,gBAtdR,SAAyBz2B,GACvB,OAAOq1B,EAAW3wB,eAAe1E,GAAQq1B,EAAWr1B,GAAQ,IAC9D,EAqdAlH,EAAQ+8B,kBAAoBA,EAC5B/8B,EAAQ68B,sBAAwBA,qCCpgB9B58B,EAAOD,QAAU,EAAjB,wBCMFC,EAAOD,QATP,SAA0BM,GACxB,IAAIO,EAAIF,OAAOL,GACbG,EAAI,GACN,IAAK,IAAIF,KAAKM,EAAGJ,EAAEm9B,QAAQr9B,GAC3B,OAAO,SAASD,IACd,KAAOG,EAAEK,QAAS,IAAKP,EAAIE,EAAE2M,SAAUvM,EAAG,OAAOP,EAAEgC,MAAQ/B,EAAGD,EAAE+B,MAAO,EAAI/B,EAC3E,OAAOA,EAAE+B,MAAO,EAAI/B,CACtB,CACF,EACmCL,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,wFCRxG,SAAS8C,EAAgBxC,EAAGG,EAAGF,GAC7B,OAAQE,GAAI,OAAcA,MAAOH,EAAIK,OAAO6J,eAAelK,EAAGG,EAAG,CAC/D6B,MAAO/B,EACPkB,YAAY,EACZgK,cAAc,EACdD,UAAU,IACPlL,EAAEG,GAAKF,EAAGD,CACjB,wBCRA,IAAIuR,EAAgB,EAAQ,MACxBnJ,EAAc,EAAQ,MACtBm1B,EAAmB,EAAQ,MAC3BC,EAAsB,EAAQ,KAC9Bn1B,EAA2B,EAAQ,MACnCo1B,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,KAChC,SAASC,IACP,aAEA,IAAIx9B,EAAIiI,IACNpI,EAAIG,EAAE0K,EAAE8yB,GACR19B,GAAKI,OAAOikB,eAAiBjkB,OAAOikB,eAAetkB,GAAKA,EAAEukB,WAAW/P,YACvE,SAASjU,EAAEJ,GACT,IAAIH,EAAI,mBAAqBG,GAAKA,EAAEqU,YACpC,QAASxU,IAAMA,IAAMC,GAAK,uBAAyBD,EAAE8kB,aAAe9kB,EAAE4G,MACxE,CACA,IAAI1G,EAAI,CACN,MAAS,EACT,OAAU,EACV,MAAS,EACT,SAAY,GAEd,SAAS0B,EAAEzB,GACT,IAAIH,EAAGC,EACP,OAAO,SAAUM,GACfP,IAAMA,EAAI,CACR4oB,KAAM,WACJ,OAAO3oB,EAAEM,EAAEqB,EAAG,EAChB,EACA,MAAS,WACP,OAAOrB,EAAEmR,CACX,EACAksB,OAAQ,SAAgBz9B,EAAGH,GACzB,OAAOC,EAAEM,EAAEqB,EAAG1B,EAAEC,GAAIH,EACtB,EACA69B,cAAe,SAAuB19B,EAAGD,EAAG0B,GAC1C,OAAO5B,EAAE89B,WAAa59B,EAAGD,EAAEM,EAAEgV,EAAGmoB,EAAkBv9B,GAAIyB,EACxD,EACAm8B,OAAQ,SAAgB59B,GACtB,OAAOF,EAAEM,EAAEsB,EAAG1B,EAChB,GACCF,EAAI,SAAWE,EAAG69B,EAAI99B,GACvBK,EAAE8K,EAAIrL,EAAEmO,KAAM5N,EAAEA,EAAIP,EAAE8B,KACtB,IACE,OAAO3B,EAAE69B,EAAI99B,EACf,CAAE,QACAF,EAAE8B,KAAOvB,EAAEA,CACb,CACF,GAAIP,EAAE89B,aAAe99B,EAAEA,EAAE89B,YAAcv9B,EAAEmR,EAAG1R,EAAE89B,gBAAa,GAAS99B,EAAEi+B,KAAO19B,EAAEmR,EAAG1R,EAAE8B,KAAOvB,EAAEA,EAC7F,IACE,OAAOJ,EAAEQ,KAAK8C,KAAMzD,EACtB,CAAE,QACAO,EAAE8K,EAAIrL,EAAEmO,KAAM5N,EAAEA,EAAIP,EAAE8B,IACxB,CACF,CACF,CACA,OAAQnC,EAAOD,QAAUi+B,EAAsB,WAC7C,MAAO,CACLO,KAAM,SAAcl+B,EAAGC,EAAGM,EAAGL,GAC3B,OAAOC,EAAEmI,EAAE1G,EAAE5B,GAAIC,EAAGM,EAAGL,GAAKA,EAAEi+B,UAChC,EACAC,oBAAqB79B,EACrB89B,KAAMl+B,EAAE0K,EACRyzB,MAAO,SAAen+B,EAAGH,GACvB,OAAO,IAAIuR,EAAcpR,EAAGH,EAC9B,EACAyR,cAAepJ,EACfk2B,MAAO,SAAep+B,EAAGH,EAAGC,EAAGC,EAAGyB,GAChC,OAAQpB,EAAEP,GAAKw9B,EAAsBD,GAAkB37B,EAAEzB,GAAIH,EAAGC,EAAGC,EAAGyB,EACxE,EACAb,KAAM28B,EACNe,OAAQd,EAEZ,EAAG/9B,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,UAC1E,CACAC,EAAOD,QAAUi+B,EAAqBh+B,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,8BC1E3G,IAAI++B,EAAU,EAAQ,KAAR,GACd9+B,EAAOD,QAAU++B,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAfC,WACTA,WAAWF,mBAAqBD,EAEhCI,SAAS,IAAK,yBAAdA,CAAwCJ,EAE5C,sBCdA,IAAIK,EAAyB,oBAATh/B,KAAuBA,KAAO2D,KAC9Cs7B,EAAW,WACf,SAASC,IACTv7B,KAAKw7B,OAAQ,EACbx7B,KAAKy7B,aAAeJ,EAAOI,YAC3B,CAEA,OADAF,EAAEx6B,UAAYs6B,EACP,IAAIE,CACV,CAPc,IAQf,SAAUl/B,IAEO,SAAWJ,GAE1B,IAAIy/B,EACY,oBAAqBr/B,EADjCq/B,EAEQ,WAAYr/B,GAAQ,aAAc2B,OAF1C09B,EAIA,eAAgBr/B,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIs/B,MACG,CACT,CAAE,MAAOp/B,GACP,OAAO,CACT,CACD,CAPD,GANAm/B,EAcQ,aAAcr/B,EAdtBq/B,EAeW,gBAAiBr/B,EAOhC,GAAIq/B,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASxhB,GACP,OAAOA,GAAOqhB,EAAY5+B,QAAQJ,OAAOmE,UAAUi7B,SAAS9+B,KAAKqd,KAAS,CAC5E,EAGJ,SAAS0hB,EAAc94B,GAIrB,GAHoB,iBAATA,IACTA,EAAOuB,OAAOvB,IAEZ,4BAA4B4I,KAAK5I,GACnC,MAAM,IAAI1E,UAAU,0CAEtB,OAAO0E,EAAK6pB,aACd,CAEA,SAASkP,EAAe39B,GAItB,MAHqB,iBAAVA,IACTA,EAAQmG,OAAOnG,IAEVA,CACT,CAGA,SAAS49B,EAAYC,GACnB,IAAIn+B,EAAW,CACbI,KAAM,WACJ,IAAIE,EAAQ69B,EAAMtK,QAClB,MAAO,CAACxzB,UAAgBiJ,IAAVhJ,EAAqBA,MAAOA,EAC5C,GASF,OANIm9B,IACFz9B,EAASD,OAAOC,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAASo+B,EAAQ1R,GACf3qB,KAAKsM,IAAM,CAAC,EAERqe,aAAmB0R,EACrB1R,EAAQhtB,SAAQ,SAASY,EAAO4E,GAC9BnD,KAAKs8B,OAAOn5B,EAAM5E,EACpB,GAAGyB,MACMnC,MAAMC,QAAQ6sB,GACvBA,EAAQhtB,SAAQ,SAAS4+B,GACvBv8B,KAAKs8B,OAAOC,EAAO,GAAIA,EAAO,GAChC,GAAGv8B,MACM2qB,GACT/tB,OAAOylB,oBAAoBsI,GAAShtB,SAAQ,SAASwF,GACnDnD,KAAKs8B,OAAOn5B,EAAMwnB,EAAQxnB,GAC5B,GAAGnD,KAEP,CA8DA,SAASw8B,EAASx9B,GAChB,GAAIA,EAAKy9B,SACP,OAAOz4B,QAAQ04B,OAAO,IAAIj+B,UAAU,iBAEtCO,EAAKy9B,UAAW,CAClB,CAEA,SAASE,EAAgBC,GACvB,OAAO,IAAI54B,SAAQ,SAASC,EAASy4B,GACnCE,EAAOrR,OAAS,WACdtnB,EAAQ24B,EAAO9oB,OACjB,EACA8oB,EAAO3zB,QAAU,WACfyzB,EAAOE,EAAO1zB,MAChB,CACF,GACF,CAEA,SAAS2zB,EAAsBC,GAC7B,IAAIF,EAAS,IAAIG,WACbC,EAAUL,EAAgBC,GAE9B,OADAA,EAAOK,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYC,GACnB,GAAIA,EAAIpwB,MACN,OAAOowB,EAAIpwB,MAAM,GAEjB,IAAIqwB,EAAO,IAAIhK,WAAW+J,EAAIE,YAE9B,OADAD,EAAKE,IAAI,IAAIlK,WAAW+J,IACjBC,EAAKlV,MAEhB,CAEA,SAASqV,IA0FP,OAzFAv9B,KAAKy8B,UAAW,EAEhBz8B,KAAKw9B,UAAY,SAASx+B,GAhM5B,IAAoBub,EAiMhBva,KAAKy9B,UAAYz+B,EACZA,EAEsB,iBAATA,EAChBgB,KAAK09B,UAAY1+B,EACR08B,GAAgBC,KAAK56B,UAAU48B,cAAc3+B,GACtDgB,KAAK49B,UAAY5+B,EACR08B,GAAoBmC,SAAS98B,UAAU48B,cAAc3+B,GAC9DgB,KAAK89B,cAAgB9+B,EACZ08B,GAAwBqC,gBAAgBh9B,UAAU48B,cAAc3+B,GACzEgB,KAAK09B,UAAY1+B,EAAKg9B,WACbN,GAAuBA,IA5MlBnhB,EA4M6Cvb,IA3MjDg/B,SAASj9B,UAAU48B,cAAcpjB,IA4M3Cva,KAAKi+B,iBAAmBf,EAAYl+B,EAAKkpB,QAEzCloB,KAAKy9B,UAAY,IAAI9B,KAAK,CAAC37B,KAAKi+B,oBACvBvC,IAAwBI,YAAY/6B,UAAU48B,cAAc3+B,IAAS68B,EAAkB78B,IAChGgB,KAAKi+B,iBAAmBf,EAAYl+B,GAEpCgB,KAAK09B,UAAY1+B,EAAOpC,OAAOmE,UAAUi7B,SAAS9+B,KAAK8B,GAhBvDgB,KAAK09B,UAAY,GAmBd19B,KAAK2qB,QAAQ9qB,IAAI,kBACA,iBAATb,EACTgB,KAAK2qB,QAAQ2S,IAAI,eAAgB,4BACxBt9B,KAAK49B,WAAa59B,KAAK49B,UAAUt7B,KAC1CtC,KAAK2qB,QAAQ2S,IAAI,eAAgBt9B,KAAK49B,UAAUt7B,MACvCo5B,GAAwBqC,gBAAgBh9B,UAAU48B,cAAc3+B,IACzEgB,KAAK2qB,QAAQ2S,IAAI,eAAgB,mDAGvC,EAEI5B,IACF17B,KAAK88B,KAAO,WACV,IAAIoB,EAAW1B,EAASx8B,MACxB,GAAIk+B,EACF,OAAOA,EAGT,GAAIl+B,KAAK49B,UACP,OAAO55B,QAAQC,QAAQjE,KAAK49B,WACvB,GAAI59B,KAAKi+B,iBACd,OAAOj6B,QAAQC,QAAQ,IAAI03B,KAAK,CAAC37B,KAAKi+B,oBACjC,GAAIj+B,KAAK89B,cACd,MAAM,IAAIK,MAAM,wCAEhB,OAAOn6B,QAAQC,QAAQ,IAAI03B,KAAK,CAAC37B,KAAK09B,YAE1C,EAEA19B,KAAKo+B,YAAc,WACjB,OAAIp+B,KAAKi+B,iBACAzB,EAASx8B,OAASgE,QAAQC,QAAQjE,KAAKi+B,kBAEvCj+B,KAAK88B,OAAO58B,KAAK28B,EAE5B,GAGF78B,KAAKiF,KAAO,WACV,IA3FoB63B,EAClBF,EACAI,EAyFEkB,EAAW1B,EAASx8B,MACxB,GAAIk+B,EACF,OAAOA,EAGT,GAAIl+B,KAAK49B,UACP,OAjGkBd,EAiGI98B,KAAK49B,UA/F3BZ,EAAUL,EADVC,EAAS,IAAIG,YAEjBH,EAAOyB,WAAWvB,GACXE,EA8FE,GAAIh9B,KAAKi+B,iBACd,OAAOj6B,QAAQC,QA5FrB,SAA+Bk5B,GAI7B,IAHA,IAAIC,EAAO,IAAIhK,WAAW+J,GACtBmB,EAAQ,IAAIzgC,MAAMu/B,EAAKrgC,QAElBJ,EAAI,EAAGA,EAAIygC,EAAKrgC,OAAQJ,IAC/B2hC,EAAM3hC,GAAK+H,OAAO65B,aAAanB,EAAKzgC,IAEtC,OAAO2hC,EAAMpyB,KAAK,GACpB,CAoF6BsyB,CAAsBx+B,KAAKi+B,mBAC7C,GAAIj+B,KAAK89B,cACd,MAAM,IAAIK,MAAM,wCAEhB,OAAOn6B,QAAQC,QAAQjE,KAAK09B,UAEhC,EAEIhC,IACF17B,KAAKy+B,SAAW,WACd,OAAOz+B,KAAKiF,OAAO/E,KAAKw+B,EAC1B,GAGF1+B,KAAK2+B,KAAO,WACV,OAAO3+B,KAAKiF,OAAO/E,KAAK0+B,KAAK18B,MAC/B,EAEOlC,IACT,CA3MAq8B,EAAQt7B,UAAUu7B,OAAS,SAASn5B,EAAM5E,GACxC4E,EAAO84B,EAAc94B,GACrB5E,EAAQ29B,EAAe39B,GACvB,IAAIsgC,EAAW7+B,KAAKsM,IAAInJ,GACxBnD,KAAKsM,IAAInJ,GAAQ07B,EAAWA,EAAW,KAAOtgC,EAAQA,CACxD,EAEA89B,EAAQt7B,UAAkB,OAAI,SAASoC,UAC9BnD,KAAKsM,IAAI2vB,EAAc94B,GAChC,EAEAk5B,EAAQt7B,UAAUlB,IAAM,SAASsD,GAE/B,OADAA,EAAO84B,EAAc94B,GACdnD,KAAKoM,IAAIjJ,GAAQnD,KAAKsM,IAAInJ,GAAQ,IAC3C,EAEAk5B,EAAQt7B,UAAUqL,IAAM,SAASjJ,GAC/B,OAAOnD,KAAKsM,IAAIzE,eAAeo0B,EAAc94B,GAC/C,EAEAk5B,EAAQt7B,UAAUu8B,IAAM,SAASn6B,EAAM5E,GACrCyB,KAAKsM,IAAI2vB,EAAc94B,IAAS+4B,EAAe39B,EACjD,EAEA89B,EAAQt7B,UAAUpD,QAAU,SAAS0K,EAAUy2B,GAC7C,IAAK,IAAI37B,KAAQnD,KAAKsM,IAChBtM,KAAKsM,IAAIzE,eAAe1E,IAC1BkF,EAASnL,KAAK4hC,EAAS9+B,KAAKsM,IAAInJ,GAAOA,EAAMnD,KAGnD,EAEAq8B,EAAQt7B,UAAU1D,KAAO,WACvB,IAAI++B,EAAQ,GAIZ,OAHAp8B,KAAKrC,SAAQ,SAASY,EAAO4E,GAC3Bi5B,EAAM9+B,KAAK6F,EACb,IACOg5B,EAAYC,EACrB,EAEAC,EAAQt7B,UAAUg6B,OAAS,WACzB,IAAIqB,EAAQ,GAIZ,OAHAp8B,KAAKrC,SAAQ,SAASY,GACpB69B,EAAM9+B,KAAKiB,EACb,IACO49B,EAAYC,EACrB,EAEAC,EAAQt7B,UAAUg+B,QAAU,WAC1B,IAAI3C,EAAQ,GAIZ,OAHAp8B,KAAKrC,SAAQ,SAASY,EAAO4E,GAC3Bi5B,EAAM9+B,KAAK,CAAC6F,EAAM5E,GACpB,IACO49B,EAAYC,EACrB,EAEIV,IACFW,EAAQt7B,UAAU/C,OAAOC,UAAYo+B,EAAQt7B,UAAUg+B,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASC,EAAQC,EAAO52B,GAEtB,IAPuBmiB,EACnB0U,EAMAngC,GADJsJ,EAAUA,GAAW,CAAC,GACHtJ,KAEnB,GAAIkgC,aAAiBD,EAAS,CAC5B,GAAIC,EAAMzC,SACR,MAAM,IAAIh+B,UAAU,gBAEtBuB,KAAK8sB,IAAMoS,EAAMpS,IACjB9sB,KAAKo/B,YAAcF,EAAME,YACpB92B,EAAQqiB,UACX3qB,KAAK2qB,QAAU,IAAI0R,EAAQ6C,EAAMvU,UAEnC3qB,KAAKyqB,OAASyU,EAAMzU,OACpBzqB,KAAKoX,KAAO8nB,EAAM9nB,KAClBpX,KAAKq/B,OAASH,EAAMG,OACfrgC,GAA2B,MAAnBkgC,EAAMzB,YACjBz+B,EAAOkgC,EAAMzB,UACbyB,EAAMzC,UAAW,EAErB,MACEz8B,KAAK8sB,IAAMpoB,OAAOw6B,GAYpB,GATAl/B,KAAKo/B,YAAc92B,EAAQ82B,aAAep/B,KAAKo/B,aAAe,eAC1D92B,EAAQqiB,SAAY3qB,KAAK2qB,UAC3B3qB,KAAK2qB,QAAU,IAAI0R,EAAQ/zB,EAAQqiB,UAErC3qB,KAAKyqB,QAhCD0U,GADmB1U,EAiCOniB,EAAQmiB,QAAUzqB,KAAKyqB,QAAU,OAhC1C3d,cACdkyB,EAAQhiC,QAAQmiC,IAAY,EAAIA,EAAU1U,GAgCjDzqB,KAAKoX,KAAO9O,EAAQ8O,MAAQpX,KAAKoX,MAAQ,KACzCpX,KAAKq/B,OAAS/2B,EAAQ+2B,QAAUr/B,KAAKq/B,OACrCr/B,KAAKs/B,SAAW,MAEK,QAAhBt/B,KAAKyqB,QAAoC,SAAhBzqB,KAAKyqB,SAAsBzrB,EACvD,MAAM,IAAIP,UAAU,6CAEtBuB,KAAKw9B,UAAUx+B,EACjB,CAMA,SAAS0/B,EAAO1/B,GACd,IAAIugC,EAAO,IAAI1B,SAYf,OAXA7+B,EACGgV,OACAsC,MAAM,KACN3Y,SAAQ,SAAS6hC,GAChB,GAAIA,EAAO,CACT,IAAIlpB,EAAQkpB,EAAMlpB,MAAM,KACpBnT,EAAOmT,EAAMwb,QAAQ3vB,QAAQ,MAAO,KACpC5D,EAAQ+X,EAAMpK,KAAK,KAAK/J,QAAQ,MAAO,KAC3Co9B,EAAKjD,OAAOmD,mBAAmBt8B,GAAOs8B,mBAAmBlhC,GAC3D,CACF,IACKghC,CACT,CAoBA,SAASG,EAASC,EAAUr3B,GACrBA,IACHA,EAAU,CAAC,GAGbtI,KAAKsC,KAAO,UACZtC,KAAK2zB,YAA4BpsB,IAAnBe,EAAQqrB,OAAuB,IAAMrrB,EAAQqrB,OAC3D3zB,KAAK4/B,GAAK5/B,KAAK2zB,QAAU,KAAO3zB,KAAK2zB,OAAS,IAC9C3zB,KAAK6/B,WAAa,eAAgBv3B,EAAUA,EAAQu3B,WAAa,KACjE7/B,KAAK2qB,QAAU,IAAI0R,EAAQ/zB,EAAQqiB,SACnC3qB,KAAK8sB,IAAMxkB,EAAQwkB,KAAO,GAC1B9sB,KAAKw9B,UAAUmC,EACjB,CAlDAV,EAAQl+B,UAAU++B,MAAQ,WACxB,OAAO,IAAIb,EAAQj/B,KAAM,CAAChB,KAAMgB,KAAKy9B,WACvC,EAkCAF,EAAKrgC,KAAK+hC,EAAQl+B,WAgBlBw8B,EAAKrgC,KAAKwiC,EAAS3+B,WAEnB2+B,EAAS3+B,UAAU++B,MAAQ,WACzB,OAAO,IAAIJ,EAAS1/B,KAAKy9B,UAAW,CAClC9J,OAAQ3zB,KAAK2zB,OACbkM,WAAY7/B,KAAK6/B,WACjBlV,QAAS,IAAI0R,EAAQr8B,KAAK2qB,SAC1BmC,IAAK9sB,KAAK8sB,KAEd,EAEA4S,EAASx2B,MAAQ,WACf,IAAI/I,EAAW,IAAIu/B,EAAS,KAAM,CAAC/L,OAAQ,EAAGkM,WAAY,KAE1D,OADA1/B,EAASmC,KAAO,QACTnC,CACT,EAEA,IAAI4/B,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CL,EAASM,SAAW,SAASlT,EAAK6G,GAChC,IAA0C,IAAtCoM,EAAiB/iC,QAAQ22B,GAC3B,MAAM,IAAIsM,WAAW,uBAGvB,OAAO,IAAIP,EAAS,KAAM,CAAC/L,OAAQA,EAAQhJ,QAAS,CAAC3U,SAAU8W,IACjE,EAEA7wB,EAAQw/B,aAAep/B,EAAKo/B,aAC5B,IACE,IAAIx/B,EAAQw/B,YACd,CAAE,MAAOj6B,GACPvF,EAAQw/B,aAAe,SAASnkB,EAASnU,GACvCnD,KAAKsX,QAAUA,EACftX,KAAKmD,KAAOA,EACZ,IAAI+F,EAAQi1B,MAAM7mB,GAClBtX,KAAKkgC,MAAQh3B,EAAMg3B,KACrB,EACAjkC,EAAQw/B,aAAa16B,UAAYnE,OAAOuK,OAAOg3B,MAAMp9B,WACrD9E,EAAQw/B,aAAa16B,UAAUgQ,YAAc9U,EAAQw/B,YACvD,CAEA,SAASD,EAAM0D,EAAOlc,GACpB,OAAO,IAAIhf,SAAQ,SAASC,EAASy4B,GACnC,IAAIyD,EAAU,IAAIlB,EAAQC,EAAOlc,GAEjC,GAAImd,EAAQd,QAAUc,EAAQd,OAAOe,QACnC,OAAO1D,EAAO,IAAIzgC,EAAQw/B,aAAa,UAAW,eAGpD,IAAI/Q,EAAM,IAAI6I,eAEd,SAAS8M,IACP3V,EAAI4V,OACN,CAEA5V,EAAIa,OAAS,WACX,IAxFgBgV,EAChB5V,EAuFIriB,EAAU,CACZqrB,OAAQjJ,EAAIiJ,OACZkM,WAAYnV,EAAImV,WAChBlV,SA3Fc4V,EA2FQ7V,EAAI8V,yBAA2B,GA1FvD7V,EAAU,IAAI0R,EAGQkE,EAAWp+B,QAAQ,eAAgB,KACzCmU,MAAM,SAAS3Y,SAAQ,SAAS8iC,GAClD,IAAIC,EAAQD,EAAKnqB,MAAM,KACnB5W,EAAMghC,EAAM5O,QAAQ9d,OACxB,GAAItU,EAAK,CACP,IAAInB,EAAQmiC,EAAMx0B,KAAK,KAAK8H,OAC5B2W,EAAQ2R,OAAO58B,EAAKnB,EACtB,CACF,IACOosB,IAgFHriB,EAAQwkB,IAAM,gBAAiBpC,EAAMA,EAAIiW,YAAcr4B,EAAQqiB,QAAQ9qB,IAAI,iBAC3E,IAAIb,EAAO,aAAc0rB,EAAMA,EAAIvqB,SAAWuqB,EAAIkW,aAClD38B,EAAQ,IAAIy7B,EAAS1gC,EAAMsJ,GAC7B,EAEAoiB,EAAIzhB,QAAU,WACZyzB,EAAO,IAAIj+B,UAAU,0BACvB,EAEAisB,EAAImW,UAAY,WACdnE,EAAO,IAAIj+B,UAAU,0BACvB,EAEAisB,EAAIoW,QAAU,WACZpE,EAAO,IAAIzgC,EAAQw/B,aAAa,UAAW,cAC7C,EAEA/Q,EAAI8I,KAAK2M,EAAQ1V,OAAQ0V,EAAQrT,KAAK,GAEV,YAAxBqT,EAAQf,YACV1U,EAAIE,iBAAkB,EACW,SAAxBuV,EAAQf,cACjB1U,EAAIE,iBAAkB,GAGpB,iBAAkBF,GAAOgR,IAC3BhR,EAAI+I,aAAe,QAGrB0M,EAAQxV,QAAQhtB,SAAQ,SAASY,EAAO4E,GACtCunB,EAAIgJ,iBAAiBvwB,EAAM5E,EAC7B,IAEI4hC,EAAQd,SACVc,EAAQd,OAAO/e,iBAAiB,QAAS+f,GAEzC3V,EAAIqW,mBAAqB,WAEA,IAAnBrW,EAAIsE,YACNmR,EAAQd,OAAO3e,oBAAoB,QAAS2f,EAEhD,GAGF3V,EAAImJ,UAAkC,IAAtBsM,EAAQ1C,UAA4B,KAAO0C,EAAQ1C,UACrE,GACF,CAEAjC,EAAMwF,UAAW,EAEZ3kC,EAAKm/B,QACRn/B,EAAKm/B,MAAQA,EACbn/B,EAAKggC,QAAUA,EACfhgC,EAAK4iC,QAAUA,EACf5iC,EAAKqjC,SAAWA,GAGlBzjC,EAAQogC,QAAUA,EAClBpgC,EAAQgjC,QAAUA,EAClBhjC,EAAQyjC,SAAWA,EACnBzjC,EAAQu/B,MAAQA,EAEhB5+B,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBG+8B,GACHA,EAASE,MAAMyF,UAAW,SAEnB3F,EAASE,MAAMwF,SAGtB,IAAIhd,EAAMsX,GACVr/B,EAAU+nB,EAAIwX,OACd,QAAkBxX,EAAIwX,MACtBv/B,EAAQu/B,MAAQxX,EAAIwX,MACpBv/B,EAAQogC,QAAUrY,EAAIqY,QACtBpgC,EAAQgjC,QAAUjb,EAAIib,QACtBhjC,EAAQyjC,SAAW1b,EAAI0b,SACvBxjC,EAAOD,QAAUA,oBCtiBjBC,EAAOD,QAHP,SAAwBM,EAAGuV,GACzB9R,KAAKiO,EAAI1R,EAAGyD,KAAKqH,EAAIyK,CACvB,EACiC5V,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,2CCFtG,IAGIilC,GAHmBlhC,MAAQA,KAAKuG,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIjC,WAAciC,EAAM,CAAE,QAAWA,EACxD,GACwC,EAAQ,OAC5CkL,EAAc,EAAQ,MAI1B,SAASyvB,EAAUz6B,EAAO4B,GACtB,IAAI84B,EAAS,CAAC,EACd,OAAK16B,GAA0B,iBAAVA,IAGrB,EAAIw6B,EAAkBp6B,SAASJ,GAAO,SAAUO,EAAU1I,GAElD0I,GAAY1I,IACZ6iC,GAAO,EAAI1vB,EAAY2vB,WAAWp6B,EAAUqB,IAAY/J,EAEhE,IACO6iC,GARIA,CASf,CACAD,EAAUr6B,QAAUq6B,EACpBjlC,EAAOD,QAAUklC,mCCtBjBvkC,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAQqlC,kCAAoCrlC,EAAQslC,4BAA8BtlC,EAAQulC,sBAAwBvlC,EAAQwlC,gBAAkBxlC,EAAQylC,6BAA+BzlC,EAAQ0lC,8BAA2B,EAMtN1lC,EAAQ0lC,yBAA2B,CAC/B,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,iBACA,iBACA,YAEJ1lC,EAAQylC,6BAA+BzlC,EAAQ0lC,yBAAyB1I,QAAO,SAAUC,EAAa/kB,GAElG,OADA+kB,EAAY/kB,EAAQ6Y,eAAiB7Y,EAC9B+kB,CACX,GAAG,CAAC,GACJj9B,EAAQwlC,gBAAkB,KAC1BxlC,EAAQulC,sBAAwB,IAAI51B,OAAO3P,EAAQwlC,gBAAiB,KACpExlC,EAAQslC,4BAA8B,iDAAiDprB,OAAOma,KAAKC,MAAO,MAC1Gt0B,EAAQqlC,kCAAoC,IAAI11B,OAAO3P,EAAQslC,4BAA6B,wCChD5F,SAASK,EAAgBplC,EAAGD,GAC1B,OAAOqlC,EAAkBhlC,OAAOgkB,eAAiBhkB,OAAOgkB,eAAe7V,OAAS,SAAUvO,EAAGD,GAC3F,OAAOC,EAAEskB,UAAYvkB,EAAGC,CAC1B,EAAGolC,EAAgBplC,EAAGD,EACxB,CCHA,SAASiD,EAAUhD,EAAGD,GACpB,GAAI,mBAAqBA,GAAK,OAASA,EAAG,MAAM,IAAIkC,UAAU,sDAC9DjC,EAAEuE,UAAYnE,OAAOuK,OAAO5K,GAAKA,EAAEwE,UAAW,CAC5CgQ,YAAa,CACXxS,MAAO/B,EACPiL,UAAU,EACVC,cAAc,KAEd9K,OAAO6J,eAAejK,EAAG,YAAa,CACxCiL,UAAU,IACRlL,GAAK,EAAeC,EAAGD,EAC7B,kECRA,IAAIiN,EAHJ5M,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAQ4lC,QAAU5lC,EAAQkO,MAAQlO,EAAQwN,IAAMxN,EAAQ6lC,MAAQ7lC,EAAQ8lC,OAAS9lC,EAAQ+N,QAAU/N,EAAQ+lC,UAAY/lC,EAAQ4N,KAAO5N,EAAQgmC,KAAOhmC,EAAQimC,MAAQjmC,EAAQuN,iBAAc,EAG3L,SAAWA,GAEPA,EAAkB,KAAI,OAEtBA,EAAkB,KAAI,OAEtBA,EAAuB,UAAI,YAE3BA,EAAqB,QAAI,UAEzBA,EAAoB,OAAI,SAExBA,EAAmB,MAAI,QAEvBA,EAAiB,IAAI,MAErBA,EAAmB,MAAI,QAEvBA,EAAqB,QAAI,SAC5B,CAnBD,CAmBGA,EAAcvN,EAAQuN,cAAgBvN,EAAQuN,YAAc,CAAC,IAWhEvN,EAAQimC,MALR,SAAe94B,GACX,OAAQA,EAAK9G,OAASkH,EAAYC,KAC9BL,EAAK9G,OAASkH,EAAYu4B,QAC1B34B,EAAK9G,OAASkH,EAAYs4B,KAClC,EAIA7lC,EAAQgmC,KAAOz4B,EAAYy4B,KAE3BhmC,EAAQ4N,KAAOL,EAAYK,KAE3B5N,EAAQ+lC,UAAYx4B,EAAYw4B,UAEhC/lC,EAAQ+N,QAAUR,EAAYQ,QAE9B/N,EAAQ8lC,OAASv4B,EAAYu4B,OAE7B9lC,EAAQ6lC,MAAQt4B,EAAYs4B,MAE5B7lC,EAAQwN,IAAMD,EAAYC,IAE1BxN,EAAQkO,MAAQX,EAAYW,MAE5BlO,EAAQ4lC,QAAUr4B,EAAYq4B,2CCrD9BjlC,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAA,QAiGA,SAAmBqV,GACf,IAAI6wB,EAAIC,EAGJ7wB,GADJD,GAAO,EAAII,EAAY2wB,yBAAyB/wB,IAC/BC,MAAM+wB,GACnBC,EAAehxB,GAASA,EAAM,GAAKA,EAAM,GAAGyb,cAAgB,GAChE,OAAQuV,GACJ,KAAKC,EACD,IAAIC,EAAMC,EAAgBpxB,GAW1B,OARKqxB,EAAe52B,KAAKuF,IAE2D,QAA/E6wB,EAAKnhC,OADFA,EAAUyhC,EAAIpiB,cAAcuiB,SACe,EAAS5hC,EAAQ2T,kBAA+B,IAAPwtB,GAAyBA,EAAGvtB,YAAY5T,GAE/H6hC,EAAe92B,KAAKuF,IAE2D,QAA/E8wB,EAAKphC,OADFA,EAAUyhC,EAAIpiB,cAAcyiB,SACe,EAAS9hC,EAAQ2T,kBAA+B,IAAPytB,GAAyBA,EAAGxtB,YAAY5T,GAE7HyhC,EAAI5hC,iBAAiB2hC,GAEhC,KAAKI,EACL,KAAKE,EACD,IAAIC,EAAWC,EAAkB1xB,GAAMzQ,iBAAiB0hC,GAExD,OAAIM,EAAe92B,KAAKuF,IAASqxB,EAAe52B,KAAKuF,GAC1CyxB,EAAS,GAAGpuB,WAAWd,WAE3BkvB,EAGX,QACI,OAAIE,EACOA,EAAkB3xB,IAEzBtQ,EAAUgiC,EAAkB1xB,EAAMwxB,GAAMziB,cAAcyiB,IAC3CjvB,WADf,IAAI7S,EAIhB,EAvIA,IAAI0Q,EAAc,EAAQ,MAEtB8wB,EAAO,OACPI,EAAO,OACPE,EAAO,OACPR,EAAkB,qBAElBK,EAAiB,cACjBE,EAAiB,cAGjBG,EAAoB,SAAU1xB,EAAM6C,GAEpC,MAAM,IAAIgqB,MAAM,6EACpB,EAEIuE,EAAkB,SAAUpxB,EAAM6C,GAElC,MAAM,IAAIgqB,MAAM,sEACpB,EACI+E,EAA8B,iBAAXpjC,QAAuBA,OAAOojC,UAMrD,GAAyB,mBAAdA,EAA0B,CACjC,IAAIC,EAAc,IAAID,EAgBtBF,EAPAN,EAAkB,SAAUpxB,EAAM6C,GAK9B,OAJIA,IAEA7C,EAAO,IAAI6E,OAAOhC,EAAS,KAAKgC,OAAO7E,EAAM,MAAM6E,OAAOhC,EAAS,MAEhEgvB,EAAYT,gBAAgBpxB,EAbtB,YAcjB,CAEJ,CAMA,GAAwB,iBAAb9Q,UAAyBA,SAAS4iC,eAAgB,CACzD,IAAIC,EAAiB7iC,SAAS4iC,eAAeE,qBAQ7CN,EAAoB,SAAU1xB,EAAM6C,GAChC,GAAIA,EAAS,CACT,IAAInT,EAAUqiC,EAAeE,gBAAgBljB,cAAclM,GAI3D,OAHInT,IACAA,EAAQuT,UAAYjD,GAEjB+xB,CACX,CAEA,OADAA,EAAeE,gBAAgBhvB,UAAYjD,EACpC+xB,CACX,CACJ,CAMA,IACIJ,EADAO,EAA+B,iBAAbhjC,UAAyBA,SAAS8C,cAAc,YAElEkgC,GAAYA,EAAS/tB,UAOrBwtB,EAAoB,SAAU3xB,GAE1B,OADAkyB,EAASjvB,UAAYjD,EACdkyB,EAAS/tB,QAAQ5B,UAC5B,qBC3FJ,SAAS4vB,EAAmBlnC,EAAGG,EAAGI,EAAGN,GACnC,IAAIG,EAAIC,OAAO6J,eACf,IACE9J,EAAE,CAAC,EAAG,GAAI,CAAC,EACb,CAAE,MAAOJ,GACPI,EAAI,CACN,CACAT,EAAOD,QAAUwnC,EAAqB,SAA2BlnC,EAAGG,EAAGI,EAAGN,GACxE,GAAIE,EAAGC,EAAIA,EAAEJ,EAAGG,EAAG,CACjB6B,MAAOzB,EACPY,YAAalB,EACbkL,cAAelL,EACfiL,UAAWjL,IACRD,EAAEG,GAAKI,MAAO,CACjB,IAAIL,EAAI,SAAWC,EAAGI,GACpB2mC,EAAmBlnC,EAAGG,GAAG,SAAUH,GACjC,OAAOyD,KAAK0jC,QAAQhnC,EAAGI,EAAGP,EAC5B,GACF,EACAE,EAAE,OAAQ,GAAIA,EAAE,QAAS,GAAIA,EAAE,SAAU,EAC3C,CACF,EAAGP,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,QAASwnC,EAAmBlnC,EAAGG,EAAGI,EAAGN,EAC/G,CACAN,EAAOD,QAAUwnC,EAAoBvnC,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,s1CCnB1G6D,OAAO6jC,SAAW/jC,mCAAAA,EAElB,IAAIgkC,WAAa,CACb,KAAQ,EACR,SAAW,EACX,gBAAmB,GACnB,QAAW,EACX,cAAkB,EAClB,mBAAsB,MAGpBC,eAAiB,CAAClZ,QAAU,CAAC,eAAgB,sCAE5C,SAASmZ,cACZ,OAAO,SAASrxB,GACZA,EAAS,CAACnQ,KAAM,eACpB,CACJ,CAEO,SAASyhC,cAAcC,GAC1B,OAAO,SAASvxB,GACZA,EAASuxB,EACb,CACJ,CAEO,SAASC,eAAeC,EAAYC,GACvC,OAAO,SAAS1xB,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IACdnvB,kDAAAA,EAAgBgC,kBAAkB,cAAe,CAAC,CAAC,OAAW,iBAC9DhC,kDAAAA,EAAgBgC,kBAAkB,mBAAoB,CAAC,CAAC,KAAUpV,EAAMyR,WAAWd,MAAM,CAAC,YAAY,OAAO,uBAE7G5S,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,+BAAiC8B,EAAMyR,WAAWzT,IAAI,SAA2B,IAAjBskC,EAAwB,qBAAuB,IAAK,KAAMN,gBAAgB3jC,MAAK,SAACC,GAEhLsS,EADAyxB,EACS,CAAC5hC,KAAM,qBAEP,CAACA,KAAM,mBAExB,IACCf,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,GACJ,CACJ,CAEO,SAAS6U,eAAeiuB,GAC3B,OAAO,SAAS7xB,EAAU2xB,IAE8B,IADtCA,IACJ9wB,WAAWd,MAAM,CAAC,YAAY,QACpCyxB,iBAAiBxxB,EAAU2xB,GAE3BnvB,kDAAAA,EAAgBgC,kBAAkB,cAAe,CAAC,CAAC,OAAW,kBAE9DqtB,GAAyC,SAA1BxkC,OAAOC,QAAc,MAA0C,SAA1BD,OAAOC,QAAc,OACzEkV,kDAAAA,EAAgBsvB,qBAAqB,SACrCtvB,kDAAAA,EAAgBsvB,qBAAqB,eACrCzkC,OAAOqc,QAEf,CACJ,CAEO,SAASqoB,gBAAgBC,GAC5B,OAAO,SAAShyB,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEV7zB,EAAO,GAEP1O,EAAMyR,WAAWzT,IAAI,WACrB0Q,EAAOA,EAAO,YAAc1O,EAAMyR,WAAWzT,IAAI,WAGrC,IAAZ4kC,IACAl0B,GAAc,mBAGlB3Q,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI8B,EAAMyR,WAAWd,MAAM,CAAC,UAAU,mBAAqB3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAO3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAWjC,EAAM,KAAMszB,gBAAgB3jC,MAAK,SAACC,KAC9M,IAAZskC,GAAqBtkC,EAASG,KAAKokC,aACnCjyB,EAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,kBAAmB,IAAO,KACtE5Q,EAAMyR,WAAWX,MAAM,CAAC,UAAU,eACnCsC,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,eAGrE,IACC1V,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,GACJ,CACJ,CAEO,SAASmjC,QAAQpqB,EAAKsS,GAEzB,OADAA,EAASA,GAAU,IACZ,SAASpa,EAAU2xB,GACtBjb,aAAaya,WAAWgB,oBACxBhlC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,kCAAkC8sB,EAAO,WAAatS,EAAU,KAAM,GAAG,IAAKA,EAAU,KAAQ,KAAI,UAAYA,EAAS,IAAI,aAAgBA,EAAIsqB,QAAgB,IAAN,KAAY,KAAMhB,gBACpN3jC,MAAK,SAACC,GACEoa,EAAIsqB,QAaLpyB,EAAS,CAACnQ,KAAM,aAAchC,KAAMia,IAZN,SAA1Bza,OAAOC,QAAc,MACrBkV,kDAAAA,EAAgBsvB,qBAAqB,SACrCtvB,kDAAAA,EAAgBsvB,qBAAqB,eAErCzkC,OAAOqc,QAGPlH,kDAAAA,EAAgBmE,aAAa9I,UAAU,YAAa,CAAC,CAAC,QAAUiK,EAAU,KAAM,GAAG,KAAQA,EAAU,KAAQ,SAE7GtF,kDAAAA,EAAgBgC,kBAAkB,UAAW,CAAC,CAAC6tB,WAAYvqB,EAAgB,WAAG,OAAW,cAKrG,IACChZ,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,GACJ,CACJ,CAEO,SAASujC,cAAc3vB,GAC1B,OAAOxV,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,+BAAgC6+B,KAAKoG,UAAU5vB,GAAUyuB,eAC5G,CAEO,SAASnxB,YAAY6H,GACxB,OAAO,SAAS9H,GACZ7S,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,6BAA+Bwa,EAAY,OAAG,KAAMspB,gBAC3F3jC,MAAK,SAACC,GACHsS,EAAS,CAACnQ,KAAM,gBAAiBhC,KAAMH,EAASG,MACpD,IACCiB,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,GACJ,CACJ,CAEO,SAASyjC,WAAW1qB,GACvB,OAAO3a,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,mBAAqBwa,EAAIvY,GAAK,IAAMuY,EAAI2qB,KAAO,IAAM3qB,EAAIjY,KAAM,KAAMuhC,eACxH,CAEO,SAASsB,kBAAkB5qB,EAAKnF,GACnC,OAAOxV,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,0BAA4Bwa,EAAIvY,GAAK,IAAMuY,EAAI2qB,KAAO,IAAM3qB,EAAI6qB,OAASxG,KAAKoG,UAAU5vB,GAAUyuB,eACrJ,CAEO,SAASwB,sBAAsB9qB,GAClC,OAAO3a,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,wBAA0Bwa,EAAIvY,GAAK,IAAMuY,EAAI2qB,KAAM,KAAMrB,eAC5G,CAEO,SAASyB,cAAchlC,GAC1B,OAAO,SAASmS,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEVhvB,EAAU,CACV,WAAe9U,EAAK4W,WACpB,OAAW5W,EAAKilC,OAChB,KAAS,IAAIjV,MAAQkV,WAGrB3jC,EAAMyR,WAAWzT,IAAI,WACrBuV,EAAe,MAAIvT,EAAMyR,WAAWzT,IAAI,UAGxCgC,EAAMyR,WAAWzT,IAAI,SACrBuV,EAAa,IAAIvT,EAAMyR,WAAWzT,IAAI,QAG1CD,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,8BAAgC6+B,KAAKoG,UAAU5vB,GAAUyuB,gBAAgB3jC,MAAK,SAACC,GAC/GA,EAASG,KAAKmlC,SAAWtlC,EAASG,KAAKolC,WACvCjzB,EAAS,CAACnQ,KAAM,mBAAoBhC,KAAM,CAClCyzB,SAAU,EACV4R,aAAe,CACXC,iBAAmBzlC,EAASG,KAAKslC,kBAErCC,SAAW,CACP7jC,GAAK7B,EAASG,KAAKmlC,QACnBP,KAAO/kC,EAASG,KAAKolC,cAGjCI,mBAAmB,CAAC,GAAO3lC,EAASG,KAAKmlC,QAAS,KAAStlC,EAASG,KAAKolC,WAAzEI,CAAqFrzB,EAAU2xB,IAE/F3xB,EAAS,CAACnQ,KAAM,YAAahC,KAAMH,EAASG,MAEpD,GACJ,CACJ,CAEO,SAASwlC,mBAAmBvrB,GAC/B,OAAO,SAAS9H,EAAU2xB,GACtBxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,kCAAoC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAChG3jC,MAAK,SAACC,GACH8U,kDAAAA,EAAgBgC,kBAAkB,aAAa,CAAC9W,EAASG,OACzD,IAAMuB,EAAQuiC,IACdnvB,kDAAAA,EAAgB3E,UAAU,aAAc,CAAC,CAAC,KAAS,WAAW,UAAqE,IAAvDzO,EAAMyR,WAAWd,MAAM,CAAC,eAAe,YAAuB,aAAgB,IAC9J,IACCjR,OAAM,SAACC,GACR,GACJ,CACJ,CAEO,SAASukC,gBAAgB3wB,GAC5B,OAAO,SAAS3C,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEV7zB,EAAO,gBAEP1O,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QAAU9Q,EAAMyR,WAAWX,MAAM,CAAC,WAAW,WAChFpC,EAAOA,EAAO,WAAa1O,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAM3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,UAGhH3Q,EAAMyR,WAAWzT,IAAI,WACrB0Q,EAAOA,EAAO,YAAc1O,EAAMyR,WAAWzT,IAAI,UAGjDgC,EAAMyR,WAAWzT,IAAI,SACrB0Q,EAAOA,EAAO,UAAY1O,EAAMyR,WAAWzT,IAAI,QAGnDD,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,0BAA2BwQ,EAAMquB,KAAKoG,UAAU,CAAC,KAAS5vB,IAAWyuB,gBACxG3jC,MAAK,SAACC,GACC0B,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QAAU9Q,EAAMyR,WAAWX,MAAM,CAAC,WAAW,UAChFF,EAASuzB,cAAc,CACnB,QAAWnkC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,OAAW3Q,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAClD,MAAU3Q,EAAMyR,WAAWzT,IAAI,SAC/B,eAAkB,IAGlC,GACJ,CACJ,CAEO,SAAS6T,qBAAqBuyB,EAAYrrB,GAC7C,OAAO,SAASnI,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IACd,OAAOxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,eAAekmC,EAAWlxB,SAAWkxB,EAAWlxB,SAAW,iBAAiB,IAAMlT,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAM3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAWyzB,EAAW3jC,KAAOs8B,KAAKoG,UAAUpqB,GAASipB,eAC/Q,CACJ,CAEO,SAASqC,uBAAuBtrB,GACnC,OAAO,SAASnI,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IACdnvB,kDAAAA,EAAgBgC,kBAAkB,iBAAkB,CAAC,CAAC,GAAOpV,EAAMyR,WAAWd,MAAM,CAAC,UAAU,uBACnG,CACJ,CAEO,SAAS2zB,gBAAgB5rB,GAC5B,OAAO,SAAS9H,GACZ7S,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,+BAAiC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC7F3jC,MAAK,SAACC,GACHsS,EAAS,CAACnQ,KAAM,yBAA0BhC,KAAMH,EAASG,OACzD2U,kDAAAA,EAAgBgC,kBAAkB,iBAAiB,GACvD,IACC1V,OAAM,SAACC,GACJiR,EAAS,CAACnQ,KAAM,0BAA2BhC,KAAMkB,IACjDC,QAAQyH,MAAM1H,EAClB,GACJ,CACJ,CAEO,SAASsZ,eAAeP,GAC3B,OAAO,SAAS9H,GACZ7S,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,+BAAiC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC7F3jC,MAAK,SAACC,GACCA,EAASG,KAAK8lC,KAAKC,WAA4C,IAAhClmC,EAASG,KAAK8lC,KAAKC,SAClD5zB,EAAS,CAACnQ,KAAM,mBAAoBhC,KAAM,CAClCyzB,SAAU,EACV4R,aAAe,CACXC,iBAAmB,GAEvBC,SAAW,CACP7jC,GAAK7B,EAASG,KAAK8lC,KAAKpkC,GACxBkjC,KAAO/kC,EAASG,KAAK8lC,KAAKlB,SAItCzyB,EAAS,CAACnQ,KAAM,wBAAyBhC,KAAMH,EAASG,OAE5D2U,kDAAAA,EAAgBgC,kBAAkB,iBAAiB,GACvD,IACC1V,OAAM,SAACC,GACJiR,EAAS,CAACnQ,KAAM,yBAA0BhC,KAAMkB,IAChDC,QAAQyH,MAAM1H,EAClB,GACJ,CACJ,CAEO,SAAS8kC,WAAW7zB,EAAU8sB,EAAMhlB,EAAK6pB,GAC5C,IAAImC,EAAO,IAAIjW,KACXkW,EAAY7Y,KAAKgD,MAAM4V,EAAKf,UAAU,KAC1C5lC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,8BAAgCymC,EAAW,KAAM3C,gBACxF3jC,MAAK,SAACC,GAIH,GAHAsS,EAAS,CAACnQ,KAAM,UAAWhC,KAAM,CAAC,KAASH,EAASG,KAAKwT,OAAQ,GAAO0yB,KAGpEjsB,aAAesjB,SAAU,CAEzB,IAAM4I,EAAa7H,KAAK18B,MAAMqY,EAAI1a,IAAI,aAGtC4mC,EAAW9sB,OAAO,WAAaxZ,EAASG,KAAKwT,QAAU0yB,EACvDC,EAAW9sB,OAAkB,UAAK6sB,EAG7BC,EAAW9sB,OAA2B,2BAMhC8sB,EAAW9sB,OAA2B,mBAE7CY,EAAI+iB,IAAI,WAAYsB,KAAKoG,UAAUyB,MAPnCA,EAAW9sB,OAA2B,mBAAI,EAE1CY,EAAI+iB,IAAI,WAAYsB,KAAKoG,UAAUyB,IACnClH,EAAKhlB,EAALglB,CAAU9sB,EAAU2xB,GAO5B,MACI7pB,EAAIZ,OAAO,WAAaxZ,EAASG,KAAKwT,QAAU0yB,EAChDjsB,EAAIZ,OAAkB,UAAI6sB,EAGrBjsB,EAAIZ,OAA2B,0BAIzBY,EAAIZ,OAA2B,oBAHtCY,EAAIZ,OAA2B,mBAAI,EACnC4lB,EAAKhlB,EAALglB,CAAU9sB,EAAU2xB,GAOhC,GACJ,CAEO,SAAS9pB,iBAAiBC,GAC7B,OAAO,SAAS9H,EAAU2xB,GAIuB,GAF/BA,IAEJ9wB,WAAWzT,IAAI,mBAIzB4S,EAAS,CAACnQ,KAAM,sBAChB1C,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,6BAA8B6+B,KAAKoG,UAAUzqB,GAAM,CAACqQ,iBAAiB,EAAMD,QAAU,CAAC,eAAgB,uCAC7IzqB,MAAK,SAACC,IAG2B,IAA1BA,EAASG,KAAKyzB,SAAqB5zB,EAASG,KAAK4Q,OAAOw1B,UACxDj0B,EAAS,CAACnQ,KAAM,gBAAiBhC,KAAM,IACvCgmC,WAAW7zB,EAAU6H,iBAAkBC,EAAK6pB,IACvC7pB,EAAIZ,OAA2B,sBAKxClH,EAAS,CAACnQ,KAAM,mBAAoBhC,KAAMH,EAASG,OAE/CH,EAASG,KAAK9D,GACdyY,kDAAAA,EAAgBgC,kBAAkB,aAAa,CAAC,CAAC,QAAY9W,EAASG,KAAK9D,KAGnF,IACC+E,OAAM,SAACC,GACJiR,EAAS,CAACnQ,KAAM,0BAA2BhC,KAAMkB,GACrD,IACJ,CACJ,CAEO,SAASmlC,kBAAkBpsB,GAC9B,OAAO,SAAS9H,EAAU2xB,GACtB3xB,EAAS,CAACnQ,KAAM,uBAChB1C,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,8BAAgCwa,aAAesjB,SAAWtjB,EAAMqkB,KAAKoG,UAAUzqB,GAAQ,CAACqQ,iBAAiB,EAAMD,QAAS,CAAE,eAAgBpQ,aAAesjB,SAAW,sBAAwB,uCACnO39B,MAAK,SAACC,IAE2B,IAA1BA,EAASG,KAAKyzB,SAAqB5zB,EAASG,KAAK4Q,OAAOw1B,UACxDJ,WAAW7zB,EAAUk0B,kBAAmBpsB,EAAK6pB,IACxC7pB,EAAIZ,OAA2B,qBAIxClH,EAAS,CAACnQ,KAAM,oBAAqBhC,KAAMH,EAASG,MACxD,IACCiB,OAAM,SAACC,GACJiR,EAAS,CAACnQ,KAAM,2BAA4BhC,KAAMkB,GACtD,GACJ,CACJ,CAEO,SAASolC,iBAAiBrsB,GAC7B,OAAO,SAAS9H,EAAU2xB,GACtBxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,2BAA6B6+B,KAAKoG,UAAUzqB,GAAMspB,gBACrF3jC,MAAK,SAACC,GACHsS,EAAS,CAACnQ,KAAM,uBAAwBhC,KAAMH,EAASG,MAC3D,IACCiB,OAAM,SAACC,GACJC,QAAQC,IAAIF,GACZiR,EAAS,CAACnQ,KAAM,sBAAuBhC,KAAMkB,GACjD,GACR,CACJ,CAEO,SAASqlC,WAAWtsB,GAMvB,OAFAqpB,WAAWjQ,QAAS,EAEb,SAASlhB,EAAU2xB,GACtBxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,yBAA2B6+B,KAAKoG,UAAUzqB,GAAMspB,gBACvF3jC,MAAK,SAACC,GACHsS,EAAS,CAACnQ,KAAM,sBAAuBhC,KAAMH,EAASG,OAClDH,EAASG,KAAKwmC,YACd3mC,EAASG,KAAKwmC,WAAWnpC,SAAQ,SAACopC,GACE,eAA5BA,EAAcC,UACd,8HAA0C9mC,MAAK,SAAChE,GAC5CA,EAAO+qC,WAAWC,UAAUH,EAAcnsB,OAAQnI,EAAU2xB,EAChE,IAEO2C,EAAcC,SAG7B,IAEJ/xB,kDAAAA,EAAgBgC,kBAAkB,iBAAiB,GACvD,IACC1V,OAAM,SAACC,GACJC,QAAQC,IAAIF,GACZiR,EAAS,CAACnQ,KAAM,qBAAsBhC,KAAMkB,GAChD,GACJ,CACJ,CAEA,SAAS2lC,2BAA2BhnC,EAAUikC,EAAU3xB,GAChDtS,EAASinC,IAETjnC,EAASinC,GAAGzpC,SAAQ,SAACypC,GACjB,IAAIva,EAASua,EAAG9wB,MAAM,KAAK,GAC3B,GAAc,qBAAVuW,EACA5X,kDAAAA,EAAgBgC,kBAAkB,WAAW,CAACmwB,EAAG9wB,MAAM,KAAK,GAAGnU,QAAQ,IAAIyJ,OAAO,YAAY,KAAK,YAChG,GAAc,kBAAVihB,EAA4B,CAEnC,IAAMhrB,EAAQuiC,IAEV9H,EAAS,GAERz6B,EAAMyR,WAAWX,MAAM,CAAC,WAAW,SACpC2pB,EAASA,EAAS,WAAaz6B,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAM3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,UAGnH3Q,EAAMyR,WAAWzT,IAAI,SACtBy8B,EAASA,EAAS,UAAYz6B,EAAMyR,WAAWzT,IAAI,QAGvDoV,kDAAAA,EAAgBgC,kBAAkB,aAAa,CAACnX,OAAOC,QAAkB,SAAI,uBAAyBu8B,GAC1G,MAAO,GAAc,gBAAVzP,EACP5X,kDAAAA,EAAgBgC,kBAAkB,cAAc,SAC7C,GAAc,oBAAV4V,EACP5X,kDAAAA,EAAgBgC,kBAAkB,qBAAqB,CAACmwB,SACrD,GAAc,kBAAVva,EAA4B,CACnC,IAAMhrB,EAAQuiC,IACdwC,iBAAiB,CAAC,GAAO/kC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAQ,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,UAAhHo0B,CAA2Hn0B,EAAU2xB,EACzI,MAAO,IAAmD,IAA/CvX,EAAO7vB,QAAQ,2BAAmC,CACzD,IAAM6E,EAAQuiC,IACdiD,cAAc,CAAC,OAAWxa,EAAO1qB,QAAQ,2BAA2B,IAAIA,QAAQ,IAAI,IAAIA,QAAQ,IAAI,IAAK,OAAWN,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAAY,KAAU3Q,EAAMyR,WAAWzT,IAAI,QAAS,MAAUgC,EAAMyR,WAAWzT,IAAI,SAAU,GAAOgC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAQ,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,UAAtV60B,CAAiW50B,EAAU2xB,EAC/W,CACJ,GAER,CAEO,SAASiD,cAAc9sB,GAC1B,OAAO,SAAS9H,EAAU2xB,GACRA,IAEdxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,6BAA+B6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC3F3jC,MAAK,SAACC,GAGH,IAAIqZ,EAAMhZ,SAASC,eAAe,OAAON,EAASG,KAAK0B,IACnDslC,EAAe,KAkBnB,GAjBY,OAAR9tB,IACA8tB,EAAe9tB,EAAI1X,WAIvB2Q,EAAS,CAACnQ,KAAM,0BAA2BhC,KAAMH,EAASG,QAG1DkZ,EAAMhZ,SAASC,eAAe,OAAON,EAASG,KAAK0B,MAGvB,OAAjBslC,IACP9tB,EAAI1X,UAAYwlC,IAKf/sB,EAAIgtB,WAAchtB,EAAIitB,QAAUjtB,EAAI6qB,QAAU7qB,EAAIitB,OAAS,CAC5D,IAAIC,EAAYjnC,SAASC,eAAe,mBACtB,OAAdgnC,IACAA,EAAU/rB,UAAY+rB,EAAU9rB,aAAe,IAE/CvY,YAAW,WACO,OAAdqkC,IAAuBA,EAAU/rB,UAAY+rB,EAAU9rB,aAAe,IAC1E,GAAE,KAEV,CACJ,IACCpa,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,GACJ,CACJ,CAEO,SAASwT,YAAY5S,QAASslC,KAAMntB,IAAK9H,SAAU2xB,UACtD,IAAM9uB,KAAOlT,QAAQC,SAAWD,QAEhC,GAA+B,+BAA3BkT,KAAK,mBACLoyB,KAAK9zB,eAAgB,OAClB,GAA+B,mBAA3B0B,KAAK,mBACZoyB,KAAKC,UAAUrqC,KAAKshC,KAAK18B,MAAMoT,KAAK,wBACjC,GAA+B,gBAA3BA,KAAK,mBACZ7C,SAASiB,qBAAqB,CAAC,KAAS,WAAW4B,KAAK,qBAAuBiF,IAAIqtB,MAAQ,YAAcrtB,IAAIqtB,MAAQ,KAAM,CACvH,kBAAkD,IAA5BtyB,KAAK,mBAAqC,KAAOA,KAAK,mBAC5EF,QAASE,KAAK,gBACdtT,GAAKsT,KAAK,WACVD,eAA0C,IAAtBC,KAAK,gBAAiCpV,MAAK,SAACI,GAIhE,GAHIA,EAAKA,KAAK9D,GACVyY,kDAAAA,EAAgBgC,kBAAkB,aAAc,CAAC,CAAC,QAAY3W,EAAKA,KAAK9D,KAExE8D,EAAKA,KAAKunC,eAAgB,CAC1B,IAAMhmC,EAAQuiC,WACdiD,cAAc,CAAC,WAAc,EAAM,OAAW/xB,KAAK,WAAY,OAAWzT,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAAY,KAAU3Q,EAAMyR,WAAWzT,IAAI,QAAS,MAAUgC,EAAMyR,WAAWzT,IAAI,SAAU,GAAOgC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAQ,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,UAA5S60B,CAAuT50B,SAAU2xB,SACrU,MACI4B,cAAc,CAAC,MAAUzrB,IAAIqtB,MAAO,QAAYrtB,IAAIvY,GAAI,OAAWuY,IAAIitB,OAAQ,KAASjtB,IAAI2qB,MAA5Fc,CAAmGvzB,SAAU2xB,UAC7G0D,gBAAgB,CACZ,QAAWvtB,IAAIvY,GACf,KAASuY,IAAI2qB,KACb,MAAU3qB,IAAIqtB,MACd,KAASrtB,IAAInD,MAGzB,SAEG,GAA+B,cAA3B9B,KAAK,mBACZ,GAAIA,KAAK,sBAAuB,CAC5B,IAAI/E,KAAO,CAAC,OACyB,IAA1B+E,KAAK,mBACZ/E,KAAOquB,KAAK18B,MAAMoT,KAAK,mBAE3BL,kDAAAA,EAAgB3E,UAAU,mBAAmB,CAACgF,KAAK,sBAAsB,CAAC/E,OAC9E,MAAO,GAAI+E,KAAK,iBAAkB,CAC9B,IAAI/E,KAAO,CAAC,OACyB,IAA1B+E,KAAK,mBACZ/E,KAAOquB,KAAK18B,MAAMoT,KAAK,mBAEvBA,KAAK,wBACwB,aAAzBA,KAAK,iBACLoyB,KAAK9oC,MAAM6T,SAAS4D,kBAEpBpB,kDAAAA,EAAgBgC,kBAAkB3B,KAAK,iBAAiB,CAAC/E,OAG7D0E,kDAAAA,EAAgB3E,UAAUgF,KAAK,iBAAiB,CAAC/E,MAEzD,MAAO,GAAI+E,KAAK,kBACZoyB,KAAK9oC,MAAM0W,KAAK,0BAEhB,GAAIA,KAAK3R,IAAK,CACV,IAAIokC,GAAKvnC,SAASiD,qBAAqB,QAAQ,GAC3CukC,EAAIxnC,SAAS8C,cAAc,UAC/B0kC,EAAE1zB,aAAa,OAAO,mBACtB0zB,EAAE1zB,aAAa,MAAOgB,KAAK3R,KAC3BokC,GAAGxkC,YAAYykC,EACnB,WAA0C,IAAxB5lC,QAAQU,SAAS,SAA6D,IAAhCV,QAAQU,SAAS,GAAS,MACtF0S,KAAKpT,QAAQU,SAAS,GAAS,KAI/C,CAEA,SAASmlC,eAAezmC,GACpB,QAASA,EAAI0mC,eAAiB1mC,EAAIrB,QACtC,CAEO,SAAS6lC,cAAczrB,GAC1B,OAAO,SAAS9H,EAAU2xB,GAEA,GAAlBR,WAAWhS,KAAqC,GAAtBgS,WAAWuE,UAIzCvE,WAAWhS,KAAM,EAEjBhyB,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,8BAAgC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC5F3jC,MAAK,SAACC,GAEH,IACIsS,EAAS,CAACnQ,KAAM,2BAA4BhC,KAAMH,EAASG,OAE3D6mC,2BAA2BhnC,EAASG,KAAM8jC,EAAU3xB,GAEpDwC,kDAAAA,EAAgB3E,UAAU,sBAAsB,CAACnQ,EAASG,KAAMmS,EAAU2xB,KAEtEjkC,EAASG,KAAK8nC,IAAOjoC,EAASG,KAAK+nC,SAAmC,IAAzBloC,EAASG,KAAK+nC,SAC3DzoC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,gCAAkC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC1F3jC,MAAK,SAACC,GACCA,EAASG,KAAKgoC,SACdrzB,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,eACzDkS,aAAaya,WAAWgB,sBAExBnyB,EAAS,CAACnQ,KAAM,6BAA8BhC,KAAMH,EAASG,OAC7D2U,kDAAAA,EAAgB3E,UAAU,oBAAoB,CAACnQ,EAASG,KAAMmS,EAAU2xB,KAExEjkC,EAASG,KAAK+nC,SAAmC,IAAzBloC,EAASG,KAAK+nC,SAAoBloC,EAASG,KAAKgoC,SACxEC,aAAanE,EAErB,IACC7iC,OAAM,SAACC,GACJiR,EAAS,CAACnQ,KAAM,6BAA8BhC,KAAMkB,GACxD,GAGZ,CAAE,MAAOjF,GACL,MAAMA,CACV,CAAE,QACEqnC,WAAWhS,KAAM,CACrB,CAEJ,IACCrwB,OAAM,SAACC,GAEAymC,eAAezmC,IACfiR,EAAS,CAACnQ,KAAM,gBAAiBhC,MAAM,IAG3CsjC,WAAWhS,KAAM,CACrB,IACJ,CACJ,CAEO,SAASkW,gBAAgBvtB,GAC5B,OAAO,SAAS9H,EAAU2xB,GAEG,GAArBR,WAAWjQ,SAIfiQ,WAAWjQ,QAAS,EAEpB/zB,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,gCAAkC6+B,KAAKoG,UAAUzqB,GAAMspB,gBAC9F3jC,MAAK,SAACC,GACCA,EAASG,KAAKgoC,SACdrzB,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,eACzDkS,aAAaya,WAAWgB,sBAExBhB,WAAWjQ,QAAS,EACpBlhB,EAAS,CAACnQ,KAAM,6BAA8BhC,KAAMH,EAASG,OAC7D2U,kDAAAA,EAAgB3E,UAAU,oBAAoB,CAACnQ,EAASG,KAAMmS,EAAU2xB,KAExEjkC,EAASG,KAAK+nC,SAAmC,IAAzBloC,EAASG,KAAK+nC,SAAoBloC,EAASG,KAAKgoC,SACxEC,aAAanE,EAErB,IACC7iC,OAAM,SAACC,GACJoiC,WAAWjQ,QAAS,CACxB,IACJ,CACJ,CAEA,SAAS4U,aAAanE,GAClB,IAAMviC,EAAQuiC,IACVviC,EAAMyR,WAAWX,MAAM,CAAC,UAAU,mBAClCwW,aAAaya,WAAWgB,oBACxBhB,WAAWgB,mBAAqBxhC,YAAW,WACvC6R,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,eACzDkS,aAAaya,WAAWgB,mBAC5B,GAAuD,IAArD/iC,EAAMyR,WAAWd,MAAM,CAAC,UAAU,kBAE5C,CAEO,SAASg2B,aACZ,OAAO,SAAS/1B,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEVqE,GAAa,EACbC,EAAmB7mC,EAAMyR,WAAWX,MAAM,CAAC,eAAe,iBAAmB9Q,EAAMyR,WAAWd,MAAM,CAAC,eAAe,gBAAkBm2B,oDAAAA,IAA2B9mC,EAAMyR,WAAWd,MAAM,CAAC,eAAe,gBAAkBo2B,oDAAAA,IAA2B/mC,EAAMyR,WAAWd,MAAM,CAAC,eAAe,gBAAkBq2B,oDAAAA,KAAgChnC,EAAMyR,WAAWd,MAAM,CAAC,eAAe,QAAU,GAAK3Q,EAAMyR,WAAWd,MAAM,CAAC,eAAe,aAAes2B,oDAAAA,KAC1bC,EAAoBlnC,EAAMyR,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,oDAAAA,IAAsBnnC,EAAMyR,WAAWd,MAAM,CAAC,eAAe,QAAU,GAE5H,GAAnBk2B,GAA2BK,IAAqBlnC,EAAMyR,WAAWX,MAAM,CAAC,UAAU,gBAE7E9Q,EAAMyR,WAAWX,MAAM,CAAC,UAAU,mBAAiF,IAA5D9Q,EAAMyR,WAAWd,MAAM,CAAC,gBAAgB,iBAA6C,GAAnBk2B,IAC3HD,GAAa,IAOjB5mC,EAAMyR,WAAWX,MAAM,CAAC,UAAU,qBAAuD,SAAhC9Q,EAAMyR,WAAWzT,IAAI,WACrC,IAArCgC,EAAMyR,WAAWzT,IAAI,cAAwC,IAAf4oC,GAC9CxzB,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,gBAK7B,SAAhCpV,EAAMyR,WAAWzT,IAAI,SAAoC,GAAd4oC,GAC3CxzB,kDAAAA,EAAgBgC,kBAAkB,UAAU,CAAC,CAAC,OAAW,eAGzDpV,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QAAU9Q,EAAMyR,WAAWX,MAAM,CAAC,WAAW,SAChF/S,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,sBAAyB8B,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAM3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAU,KAAMqxB,iBAC/G,IAAhDhiC,EAAMyR,WAAWd,MAAM,CAAC,YAAY,SAA8C,SAA1B1S,OAAOC,QAAc,MAAgBD,OAAOga,QAC3GmqB,iBAAiBxxB,EAAU2xB,EAEnC,CACJ,CAEA,SAAS6E,oBAC0B,GAA5BrF,WAAWsF,eAEXj0B,kDAAAA,EAAgBgC,kBAAkB,eAAe,GAExD,CAEO,SAASkyB,WAAW5uB,EAAK6uB,GAC5B,OAAO,SAAS32B,EAAU2xB,GAMtB,GAJKgF,GACD32B,EAAS,CAACnQ,KAAM,mBAAoBhC,KAAMia,EAAIqX,MAGxB,GAAtBgS,WAAWuE,QAAf,CAKAvE,WAAWuE,SAAU,EAErB,IACIlzB,kDAAAA,EAAgBmE,aAAa9I,UAAU,cAAe,CAAC,CAAC,QAAUiK,EAAIvY,GAAI,KAAQuY,EAAI2qB,KAAMtT,IAAKrX,EAAIqX,MACzG,CAAE,MAAO1oB,GACL+L,kDAAAA,EAAgBo0B,WAAW,CACvB,MAAUzK,KAAKoG,UAAUpG,KAAKoG,UAAU97B,KAEhD,CAEAtJ,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,2BAA6B6+B,KAAKoG,UAAUzqB,GAAMspB,gBACrF3jC,MAAK,SAACC,GACH,KAEQA,EAASG,KAAK4I,OAASk7B,IAAW9wB,WAAWd,MAAM,CAAC,eAAe,YACnEC,EAAS,CAACnQ,KAAM,yBAA0BhC,KAAM,CAAC5D,EAAGyD,EAASG,KAAK5D,EAAGk1B,IAAKrX,EAAIqX,OAGlFgS,WAAWuE,SAAU,EAErBnC,cAAc,CAAC,eAAiB,EAAM,MAAUzrB,EAAIqtB,MAAO,QAAYrtB,EAAIvY,GAAI,OAAWoiC,IAAW9wB,WAAWd,MAAM,CAAC,eAAe,WAAY,KAAS+H,EAAI2qB,MAA/Jc,CAAsKvzB,EAAU2xB,GAE5KjkC,EAASG,KAAK9D,GACdyY,kDAAAA,EAAgBgC,kBAAkB,aAAa,CAAC,CAAC,QAAY9W,EAASG,KAAK9D,UAGhD,IAApB2D,EAASG,KAAK5D,IAA8C,IAAxByD,EAASG,KAAK4I,QAA2C,IAAzB/I,EAASG,KAAKgpC,QAEzF1F,WAAWsF,gBAGqB,GAA5BtF,WAAWsF,gBACXj0B,kDAAAA,EAAgBo0B,WAAW,CACvB,MAAWzK,KAAKoG,UAAUpG,KAAKoG,UAAU7kC,GAAY,QAAQy+B,KAAKoG,UAAU7kC,EAASG,MAAO,QAASs+B,KAAKoG,UAAU7kC,EAASwqB,SAAU,QAASiU,KAAKoG,UAAU7kC,EAASwzB,WAG5KsV,qBAGJh0B,kDAAAA,EAAgBmE,aAAa9I,UAAU,mBAAoB,CAAC,CAAC,QAAUiK,EAAIvY,GAAI,KAAQuY,EAAI2qB,KAAMtT,IAAKgN,KAAKoG,UAAU7kC,EAASG,UAE9HsjC,WAAWsF,cAAgB,CAEnC,CAAE,MAAO3sC,GACL,MAAMA,CACV,CAAE,QACEqnC,WAAWuE,SAAU,EAEjBvE,WAAW2F,gBAAgBxsC,OAAS,GACpCosC,WAAWvF,WAAW2F,gBAAgBzX,SAAS,EAA/CqX,CAAqD12B,EAAU2xB,EAEvE,CACJ,IACC7iC,OAAM,SAAC2H,GACJ,GAAI++B,eAAe/+B,GACfuJ,EAAS,CAACnQ,KAAM,yBAA0BhC,KAAM,CAAC5D,EAAG,kBAAmB,IAAQ6d,EAAIqX,OACnFnf,EAAS,CAACnQ,KAAM,gBAAiBhC,MAAM,QACpC,CACHsjC,WAAWsF,gBAEX,IAAIhJ,EAIAA,EADAh3B,EAAM/I,SACEy+B,KAAKoG,UAAUpG,KAAKoG,UAAU97B,GAAS,QAAQ01B,KAAKoG,UAAU97B,EAAM/I,SAASG,MAAO,QAASs+B,KAAKoG,UAAU97B,EAAM/I,SAASwqB,SAAU,QAASiU,KAAKoG,UAAU97B,EAAM/I,SAASwzB,UAC7KzqB,EAAMi3B,QACLvB,KAAKoG,UAAUpG,KAAKoG,UAAU97B,KAMV,GAA5B06B,WAAWsF,eAEXj0B,kDAAAA,EAAgBo0B,WAAW,CACvB,MAASnJ,IAGbjrB,kDAAAA,EAAgBmE,aAAa9I,UAAU,mBAAoB,CAAC,CAAC,QAAUiK,EAAIvY,GAAI,KAAQuY,EAAI2qB,KAAMtT,IAAKsO,KAEtG+I,sBAGAx2B,EAAS,CAACnQ,KAAM,yBAA0BhC,KAAM,CAAC5D,EAAG,cAAe,IAAQ6d,EAAIqX,OAE/EgS,WAAWuE,SAAU,EAGrBgB,WAAW5uB,GAAK,EAAhB4uB,CAAsB12B,EAAU2xB,GAExC,CAEAR,WAAWuE,SAAU,CACzB,GA/FJ,MAFIvE,WAAW2F,gBAAgBjsC,KAAKid,EAkGxC,CACJ,CAEO,SAASivB,WAAW7V,EAAQ/B,GAC/B,OAAO,SAASnf,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEC,SAAXzQ,EACA1e,kDAAAA,EAAgBmE,aAAa9I,UAAU,gBAAiB,CAAC,CAAC,QAAUzO,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAQ,KAAQ3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAS,QAAU,EAAMof,IAAKA,KAExL3c,kDAAAA,EAAgBmE,aAAa9I,UAAU,gBAAiB,CAAC,CAAC,QAAUzO,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAQ,KAAQ3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAS,QAAU,KAG5K3Q,EAAMyR,WAAWzT,IAAI,aAAa4pC,SAAS,WAC5C7pC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,mBAAqB8B,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAM3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAAW,IAAMmhB,EAASiL,KAAKoG,UAAU,CAAC,IAAQpT,IAAOiS,gBACtM3jC,MAAK,SAACC,GACX,IAAGoB,OAAM,SAACC,GACNC,QAAQC,IAAIF,EAChB,GAER,CACJ,CAEO,SAASkoC,kBAAkBnvB,GAC9B,OAAO,SAAS9H,EAAU2xB,GACtB,IAAMviC,EAAQuiC,IAEd,OAAOxkC,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,qBAAsB6+B,KAAKoG,UAAU,CAChF,QAAWzqB,EAAIovB,QACf,cAAiBpvB,EAAIqvB,cACrB,QAAW/nC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAQ3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,WAC3CqxB,gBACH3jC,MAAK,SAACC,GAEH,OAAOA,EAASG,IACpB,IACCiB,OAAM,SAACC,GAEJ,MADAC,QAAQC,IAAI,+BAAgCF,GACtCA,CACV,GACJ,CACJ,CAEO,SAASqoC,mBAAmBtvB,GAC/B,OAAO3a,mCAAAA,EAAMykC,KAAKvkC,OAAOC,QAAkB,SAAI,oBAAsB6+B,KAAKoG,UAAUzqB,GAAMspB,eAC9F,sPC32B6C,IAEvC7nB,EAAS,SAAArd,GAEX,SAAAqd,EAAYpd,GAAO,OAAAE,EAAAA,EAAAA,GAAA,KAAAkd,KAAA,OAAAA,IAAA,CACTpd,uGACV,CAAC,OAAAY,EAAAA,EAAAA,GAAAwc,EAAArd,IAAAc,EAAAA,EAAAA,GAAAuc,EAAA,EAAAtc,IAAA,SAAAnB,MAED,WACI,OAAOqD,EAAAA,cAACA,EAAAA,SAAc,KAClBA,EAAAA,cAAA,OAAKE,UAAU,6BACfF,EAAAA,cAAA,OAAKG,KAAK,SAASC,GAAG,iBAAiB,aAAW,OAAOF,UAAU,8BAA8BG,SAAS,MACtGL,EAAAA,cAAA,OAAKE,UAAW,sBAAsB9B,KAAKpB,MAAMsd,YAAc,QAAU,KAEpElc,KAAKpB,MAAMwd,SAAWxa,EAAAA,cAAA,OAAKE,UAAW9B,KAAKpB,MAAMsd,YAAc,QAAU,GAAIxO,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAMqG,SACxHjF,KAAKpB,MAAMwd,SAAWxa,EAAAA,cAAA,SAAI5B,KAAKpB,MAAMqG,MAEvCrD,EAAAA,cAAA,OAAKE,UAAU,gBACXF,EAAAA,cAAA,UAAQE,UAAU,2BAA2BS,QAASvC,KAAKpB,MAAMud,MAAO7Z,KAAK,UAAUtC,KAAKpB,MAAMqd,cAKtH,IAAC,CArBU,CAASrY,EAAAA,eAwBxB,4BC1BA,IAAIm2B,EAAsB,EAAQ,KAOlC79B,EAAOD,QANP,SAA2Ba,EAAGP,EAAGG,EAAGF,EAAGC,GACrC,IAAI0B,EAAI47B,EAAoBj9B,EAAGP,EAAGG,EAAGF,EAAGC,GACxC,OAAO0B,EAAEE,OAAO6B,MAAK,SAAUpD,GAC7B,OAAOA,EAAEwB,KAAOxB,EAAEyB,MAAQJ,EAAEE,MAC9B,GACF,EACoCnC,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,4BCLzGA,EAAQ48B,KADG,EAKX58B,EAAQ28B,UADQ,EAGhB38B,EAAQ68B,sBAAwB,CAC9BgR,OAAQ,EACRC,cAAe,EACf,iBAAkB,gBAClBC,UAAW,EACXnd,OAAQ,EACRod,gBAAiB,EACjBtyB,IAAK,EACLuyB,GAAI,EACJpP,MAAO,EACPqP,eAAgB,EAChBC,aAAc,EACdC,YAAa,EACbpkC,UAAW,EACXqkC,SAAU,EACVC,SAAU,EACVC,QAAS,EACTC,YAAa,EACbC,YAAa,EACbC,UAAW,EACXC,QAAS,EACTp9B,QAAS,EACT1K,SAAU,EACV+nC,KAAM,EACNnoC,MAAO,YACPooC,QAAS,EACThpC,UAAW,EACXipC,KAAM,EACNC,QAAS,EACTv1B,QAAS,EACTw1B,gBAAiB,EACjBC,YAAa,EACbC,SAAU,EACVC,aAAc,EACdC,OAAQ,EACRC,YAAa,EACb59B,wBAAyB,EACzBpN,KAAM,EACNirC,SAAU,EACVzkC,QAAS,EACTyG,eAAgB,EAChBJ,aAAc,EACdq+B,MAAO,EACPC,IAAK,EACLzuB,SAAU,EACV0uB,wBAAyB,EACzBC,sBAAuB,EACvBC,SAAU,EACVC,UAAW,EACXC,QAAS,EACTC,aAAc,EACdt+B,IAAK,UACL8xB,KAAM,EACNyM,WAAY,EACZC,WAAY,EACZC,YAAa,EACbC,eAAgB,EAChBC,WAAY,EACZC,YAAa,EACb1hB,QAAS,EACT7S,OAAQ,EACRw0B,OAAQ,EACRC,KAAM,EACNz2B,KAAM,EACN02B,SAAU,EACVC,QAAS,EACTC,UAAW,EACX,aAAc,YACdC,KAAM,EACN3qC,GAAI,EACJuS,UAAW,EACXq4B,UAAW,EACXC,UAAW,EACXC,GAAI,EACJC,OAAQ,EACRC,SAAU,EACVC,QAAS,EACTC,UAAW,EACXC,SAAU,EACVC,UAAW,EACXC,QAAS,EACTC,KAAM,EACNC,MAAO,EACPC,KAAM,EACN/hC,KAAM,EACNqe,KAAM,EACN2jB,IAAK,EACLC,SAAU,EACVC,YAAa,EACbC,aAAc,EACdhgB,IAAK,EACL5nB,UAAW,EACX6nC,MAAO,EACPC,WAAY,EACZrjB,OAAQ,EACRoF,IAAK,EACLke,UAAW,EACX79B,SAAU,EACVgV,MAAO,EACP/hB,KAAM,EACN6qC,SAAU,EACVC,MAAO,EACPC,WAAY,EACZ1a,KAAM,EACN2a,QAAS,EACTC,QAAS,EACT/nC,YAAa,EACbgoC,YAAa,EACbC,OAAQ,EACRpkB,QAAS,EACTqkB,QAAS,EACTC,WAAY,EACZloC,SAAU,EACVmoC,eAAgB,EAChBC,IAAK,EACLzhC,SAAU,EACV0hC,SAAU,EACV5sC,KAAM,EACN+D,KAAM,EACN8oC,QAAS,EACTC,QAAS,EACTC,MAAO,EACPC,OAAQ,EACRC,UAAW,EACXC,SAAU,EACVrhC,SAAU,EACVshC,MAAO,EACPljC,KAAM,EACNmjC,MAAO,EACPC,KAAM,EACNC,WAAY,EACZ1rC,IAAK,EACL2rC,OAAQ,EACRC,QAAS,EACTC,OAAQ,EACRpnB,MAAO,EACPqnB,KAAM,EACN/oC,MAAO,EACPgpC,QAAS,EACTztC,SAAU,EACVoJ,OAAQ,EACRwL,MAAO,EACPvU,KAAM,EACNqtC,OAAQ,EACRpxC,MAAO,EACPsZ,MAAO,EACP+3B,MAAO,EACPnV,KAAM,EACNoV,MAAO,EACPC,aAAc,EACd,gBAAiB,eACjBC,WAAY,EACZC,SAAU,EACVC,kBAAmB,EACnB,qBAAsB,oBACtBC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,WAAY,EACZ,cAAe,aACfC,OAAQ,EACRpY,cAAe,EACfqY,cAAe,EACfC,YAAa,EACbC,QAAS,EACTC,cAAe,EACfC,cAAe,EACf,iBAAkB,gBAClBC,YAAa,EACbC,KAAM,EACNC,MAAO,EACPC,KAAM,EACNC,GAAI,EACJC,SAAU,EACVC,UAAW,EACX,aAAc,YACdC,KAAM,EACNC,SAAU,EACV,YAAa,WACbC,cAAe,EACfC,SAAU,EACV,YAAa,WACbC,MAAO,EACPC,mBAAoB,EACpB,sBAAuB,qBACvBC,0BAA2B,EAC3B,8BAA+B,4BAC/BC,aAAc,EACd,gBAAiB,eACjBC,eAAgB,EAChB,kBAAmB,iBACnBC,kBAAmB,EACnBC,iBAAkB,EAClBC,OAAQ,EACRC,GAAI,EACJC,GAAI,EACJlgC,EAAG,EACHmgC,SAAU,EACVC,WAAY,EACZC,QAAS,EACTC,gBAAiB,EACjBC,UAAW,EACXC,QAAS,EACTC,QAAS,EACTC,iBAAkB,EAClB,oBAAqB,mBACrBC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,SAAU,EACVC,UAAW,EACXC,iBAAkB,EAClB,oBAAqB,mBACrBhjB,IAAK,EACLijB,SAAU,EACVC,0BAA2B,EAC3BC,KAAM,EACNC,YAAa,EACb,eAAgB,cAChBC,SAAU,EACV,YAAa,WACb31C,OAAQ,EACR41C,UAAW,EACXC,YAAa,EACbC,aAAc,EACd,gBAAiB,eACjBC,WAAY,EACZ,cAAe,aACfC,UAAW,EACXC,WAAY,EACZ,cAAe,aACfC,SAAU,EACV,YAAa,WACbC,eAAgB,EAChB,mBAAoB,iBACpBC,YAAa,EACb,eAAgB,cAChBC,UAAW,EACX,aAAc,YACdC,YAAa,EACb,eAAgB,cAChBC,WAAY,EACZ,cAAe,aACfrqB,OAAQ,EACRgG,KAAM,EACNskB,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,UAAW,EACX,aAAc,YACdC,2BAA4B,EAC5B,+BAAgC,6BAChCC,yBAA0B,EAC1B,6BAA8B,2BAC9BC,SAAU,EACVC,kBAAmB,EACnBC,cAAe,EACfC,QAAS,EACTC,UAAW,EACX,cAAe,YACfC,aAAc,EACd,iBAAkB,eAClBC,YAAa,EACbC,eAAgB,EAChB,kBAAmB,iBACnBC,IAAK,EACLC,GAAI,EACJC,OAAQ,EACRC,UAAW,EACXC,GAAI,EACJ7tC,GAAI,EACJ8tC,GAAI,EACJC,GAAI,EACJhuC,EAAG,EACHiuC,aAAc,EACdC,iBAAkB,EAClBC,QAAS,EACTC,UAAW,EACXC,WAAY,EACZC,SAAU,EACVC,aAAc,EACdC,cAAe,EACf,iBAAkB,gBAClBC,cAAe,EACf,iBAAkB,gBAClBC,kBAAmB,EACnBC,MAAO,EACPC,UAAW,EACX,aAAc,YACdC,aAAc,EACdC,UAAW,EACX,aAAc,YACdC,YAAa,EACb,eAAgB,cAChBC,YAAa,EACbC,YAAa,EACbC,KAAM,EACNC,iBAAkB,EAClBC,UAAW,EACXC,aAAc,EACdt/B,KAAM,EACNu/B,WAAY,EACZC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVC,MAAO,EACPC,OAAQ,EACR9hB,YAAa,EACb/a,OAAQ,EACR88B,SAAU,EACVC,iBAAkB,EAClB,oBAAqB,mBACrBC,kBAAmB,EACnB,qBAAsB,oBACtBC,WAAY,EACZ,cAAe,aACfC,QAAS,EACT,WAAY,UACZC,WAAY,EACZC,oBAAqB,EACrBC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,EACf,iBAAkB,gBAClBC,OAAQ,EACRC,UAAW,EACXC,UAAW,EACXC,UAAW,EACXC,OAAQ,EACRC,cAAe,EACfC,oBAAqB,EACrBC,eAAgB,EAChBjxC,SAAU,EACVvK,EAAG,EACHy7C,OAAQ,EACRC,KAAM,EACNC,KAAM,EACNC,gBAAiB,EACjB,mBAAoB,kBACpBC,YAAa,EACbC,UAAW,EACXC,mBAAoB,EACpBC,iBAAkB,EAClBC,SAAU,EACVC,QAAS,EACT9kC,OAAQ,EACR+kC,QAAS,EACTC,OAAQ,EACRC,GAAI,EACJC,GAAI,EACJC,MAAO,EACPC,SAAU,EACVC,KAAM,EACNC,eAAgB,EAChB,kBAAmB,iBACnBC,MAAO,EACPC,QAAS,EACTC,iBAAkB,EAClBC,iBAAkB,EAClBC,MAAO,EACPC,aAAc,EACdC,YAAa,EACbC,aAAc,EACdC,MAAO,EACPC,MAAO,EACPC,YAAa,EACbC,UAAW,EACX,aAAc,YACdC,YAAa,EACb,eAAgB,cAChBC,sBAAuB,EACvB,yBAA0B,wBAC1BC,uBAAwB,EACxB,0BAA2B,yBAC3BttC,OAAQ,EACRutC,OAAQ,EACRC,gBAAiB,EACjB,mBAAoB,kBACpBC,iBAAkB,EAClB,oBAAqB,mBACrBC,cAAe,EACf,iBAAkB,gBAClBC,eAAgB,EAChB,kBAAmB,iBACnBC,iBAAkB,EAClB,oBAAqB,mBACrBC,YAAa,EACb,eAAgB,cAChBC,cAAe,EACf,iBAAkB,gBAClBC,+BAAgC,EAChCC,yBAA0B,EAC1BC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,QAAS,EACTC,QAAS,EACTC,WAAY,EACZ,cAAe,aACfC,eAAgB,EAChB,kBAAmB,iBACnBC,WAAY,EACZC,cAAe,EACf,iBAAkB,gBAClB3rB,GAAI,EACJ4rB,UAAW,EACXC,OAAQ,EACRC,GAAI,EACJC,GAAI,EACJC,kBAAmB,EACnB,qBAAsB,oBACtBC,mBAAoB,EACpB,sBAAuB,qBACvBC,QAAS,EACTC,YAAa,EACb,eAAgB,cAChBC,aAAc,EACd,gBAAiB,eACjBC,WAAY,EACZ,eAAgB,aAChBC,aAAc,EACdC,YAAa,EACb,eAAgB,cAChBnhB,OAAQ,EACRohB,aAAc,EACd,gBAAiB,eACjB9nB,QAAS,EACT+nB,SAAU,EACV,aAAc,WACdC,YAAa,EACb,gBAAiB,cACjBC,YAAa,EACb,gBAAiB,cACjBC,SAAU,EACV,YAAa,WACbC,aAAc,EACd,gBAAiB,eACjBC,QAAS,EACTC,WAAY,EACZC,WAAY,EACZC,cAAe,EACf,iBAAkB,gBAClBC,MAAO,EACPC,OAAQ,EACRC,YAAa,EACb,eAAgB,cAChBC,YAAa,EACb,eAAgB,cAChBC,GAAI,EACJC,GAAI,EACJjrC,EAAG,EACHkrC,iBAAkB,EAClBC,QAAS,EACT,WAAY,UACZC,aAAc,EACd,gBAAiB,eACjBC,aAAc,EACd,gBAAiB,eACjBC,UAAW,EACX,aAAc,YACdC,UAAW,EACX,aAAc,YACdC,UAAW,EACX,aAAc,YACdC,WAAY,EACZ,cAAe,aACfC,UAAW,EACX,aAAc,YACdC,QAAS,EACT,WAAY,UACZC,QAAS,EACT,WAAY,UACZC,MAAO,EACP,YAAa,WACbC,WAAY,EACZ,cAAe,aACfC,SAAU,EACVC,GAAI,EACJC,GAAI,EACJ9rC,EAAG,EACH+rC,iBAAkB,EAClBjhC,EAAG,EACHkhC,WAAY,8FCzed,SAASC,EAA2B7hD,EAAGD,GACrC,GAAIA,IAAM,WAAY,OAAQA,IAAM,mBAAqBA,GAAI,OAAOA,EACpE,QAAI,IAAWA,EAAG,MAAM,IAAIkC,UAAU,4DACtC,OAAO,OAAsBjC,EAC/B,qCCLA,IACQ8hD,EADJC,EAAav+C,MAAQA,KAAKu+C,YACtBD,EAAgB,SAAUxsC,EAAGD,GAI7B,OAHAysC,EAAgB1hD,OAAOgkB,gBAClB,CAAEE,UAAW,cAAgBjjB,OAAS,SAAUiU,EAAGD,GAAKC,EAAEgP,UAAYjP,CAAG,GAC1E,SAAUC,EAAGD,GAAK,IAAK,IAAIjK,KAAKiK,EAAOjV,OAAOmE,UAAU8G,eAAe3K,KAAK2U,EAAGjK,KAAIkK,EAAElK,GAAKiK,EAAEjK,GAAI,EAC7F02C,EAAcxsC,EAAGD,EAC5B,EACO,SAAUC,EAAGD,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIpT,UAAU,uBAAyBiG,OAAOmN,GAAK,iCAE7D,SAAS2sC,IAAOx+C,KAAK+Q,YAAce,CAAG,CADtCwsC,EAAcxsC,EAAGD,GAEjBC,EAAE/Q,UAAkB,OAAN8Q,EAAajV,OAAOuK,OAAO0K,IAAM2sC,EAAGz9C,UAAY8Q,EAAE9Q,UAAW,IAAIy9C,EACnF,GAEAC,EAAYz+C,MAAQA,KAAKy+C,UAAa,WAStC,OARAA,EAAW7hD,OAAO+Y,QAAU,SAASnZ,GACjC,IAAK,IAAIwrC,EAAGrrC,EAAI,EAAGG,EAAIM,UAAUL,OAAQJ,EAAIG,EAAGH,IAE5C,IAAK,IAAIiL,KADTogC,EAAI5qC,UAAUT,GACOC,OAAOmE,UAAU8G,eAAe3K,KAAK8qC,EAAGpgC,KACzDpL,EAAEoL,GAAKogC,EAAEpgC,IAEjB,OAAOpL,CACX,EACOiiD,EAASlhD,MAAMyC,KAAM5C,UAChC,EACAR,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAQyiD,UAAYziD,EAAQ0iD,YAAc1iD,EAAQ2iD,WAAa3iD,EAAQ4iD,YAAc5iD,EAAQ6iD,UAAY7iD,EAAQ8iD,OAAS9iD,EAAQ+iD,QAAU/iD,EAAQimC,MAAQjmC,EAAQyN,QAAUzN,EAAQwM,SAAWxM,EAAQkO,MAAQlO,EAAQgjD,iBAAmBhjD,EAAQsO,sBAAwBtO,EAAQ+N,QAAU/N,EAAQ4N,KAAO5N,EAAQijD,SAAWjjD,EAAQkjD,UAAO,EAC/U,IAAIp3C,EAAmB,EAAQ,MAK3Bo3C,EAAsB,WACtB,SAASA,IAELn/C,KAAKoK,OAAS,KAEdpK,KAAK0K,KAAO,KAEZ1K,KAAK3B,KAAO,KAEZ2B,KAAKyK,WAAa,KAElBzK,KAAKsJ,SAAW,IACpB,CAsDA,OArDA1M,OAAO6J,eAAe04C,EAAKp+C,UAAW,aAAc,CAMhDlB,IAAK,WACD,OAAOG,KAAKoK,MAChB,EACAkzB,IAAK,SAAUlzB,GACXpK,KAAKoK,OAASA,CAClB,EACA1M,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAe04C,EAAKp+C,UAAW,kBAAmB,CAKrDlB,IAAK,WACD,OAAOG,KAAK0K,IAChB,EACA4yB,IAAK,SAAU5yB,GACX1K,KAAK0K,KAAOA,CAChB,EACAhN,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAe04C,EAAKp+C,UAAW,cAAe,CAKjDlB,IAAK,WACD,OAAOG,KAAK3B,IAChB,EACAi/B,IAAK,SAAUj/B,GACX2B,KAAK3B,KAAOA,CAChB,EACAX,YAAY,EACZgK,cAAc,IAQlBy3C,EAAKp+C,UAAU29C,UAAY,SAAUU,GAEjC,YADkB,IAAdA,IAAwBA,GAAY,GACjCV,EAAU1+C,KAAMo/C,EAC3B,EACOD,CACX,CAnEyB,GAoEzBljD,EAAQkjD,KAAOA,EAIf,IAAID,EAA0B,SAAU3qB,GAKpC,SAAS2qB,EAAS5+C,GACd,IAAIzB,EAAQ01B,EAAOr3B,KAAK8C,OAASA,KAEjC,OADAnB,EAAMyB,KAAOA,EACNzB,CACX,CAeA,OAvBA0/C,EAAUW,EAAU3qB,GASpB33B,OAAO6J,eAAey4C,EAASn+C,UAAW,YAAa,CAKnDlB,IAAK,WACD,OAAOG,KAAKM,IAChB,EACAg9B,IAAK,SAAUh9B,GACXN,KAAKM,KAAOA,CAChB,EACA5C,YAAY,EACZgK,cAAc,IAEXw3C,CACX,CAzB6B,CAyB3BC,GACFljD,EAAQijD,SAAWA,EAInB,IAAIr1C,EAAsB,SAAU0qB,GAEhC,SAAS1qB,IACL,IAAIhL,EAAmB,OAAX01B,GAAmBA,EAAOh3B,MAAMyC,KAAM5C,YAAc4C,KAEhE,OADAnB,EAAMyD,KAAOyF,EAAiByB,YAAYK,KACnChL,CACX,CAQA,OAbA0/C,EAAU10C,EAAM0qB,GAMhB33B,OAAO6J,eAAeoD,EAAK9I,UAAW,WAAY,CAC9ClB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAEXmC,CACX,CAfyB,CAevBq1C,GACFjjD,EAAQ4N,KAAOA,EAIf,IAAIG,EAAyB,SAAUuqB,GAEnC,SAASvqB,IACL,IAAInL,EAAmB,OAAX01B,GAAmBA,EAAOh3B,MAAMyC,KAAM5C,YAAc4C,KAEhE,OADAnB,EAAMyD,KAAOyF,EAAiByB,YAAYQ,QACnCnL,CACX,CAQA,OAbA0/C,EAAUv0C,EAASuqB,GAMnB33B,OAAO6J,eAAeuD,EAAQjJ,UAAW,WAAY,CACjDlB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAEXsC,CACX,CAf4B,CAe1Bk1C,GACFjjD,EAAQ+N,QAAUA,EAIlB,IAAIO,EAAuC,SAAUgqB,GAEjD,SAAShqB,EAAsBpH,EAAM7C,GACjC,IAAIzB,EAAQ01B,EAAOr3B,KAAK8C,KAAMM,IAASN,KAGvC,OAFAnB,EAAMsE,KAAOA,EACbtE,EAAMyD,KAAOyF,EAAiByB,YAAYw4B,UACnCnjC,CACX,CAQA,OAdA0/C,EAAUh0C,EAAuBgqB,GAOjC33B,OAAO6J,eAAe8D,EAAsBxJ,UAAW,WAAY,CAC/DlB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAEX6C,CACX,CAhB0C,CAgBxC20C,GACFjjD,EAAQsO,sBAAwBA,EAIhC,IAAI00C,EAAkC,SAAU1qB,GAK5C,SAAS0qB,EAAiBn8C,GACtB,IAAIjE,EAAQ01B,EAAOr3B,KAAK8C,OAASA,KAEjC,OADAnB,EAAMiE,SAAWA,EACVjE,CACX,CAmCA,OA3CA0/C,EAAUU,EAAkB1qB,GAS5B33B,OAAO6J,eAAew4C,EAAiBl+C,UAAW,aAAc,CAG5DlB,IAAK,WACD,IAAIsiC,EACJ,OAAmC,QAA3BA,EAAKniC,KAAK8C,SAAS,UAAuB,IAAPq/B,EAAgBA,EAAK,IACpE,EACAzkC,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAew4C,EAAiBl+C,UAAW,YAAa,CAE3DlB,IAAK,WACD,OAAOG,KAAK8C,SAAS/F,OAAS,EACxBiD,KAAK8C,SAAS9C,KAAK8C,SAAS/F,OAAS,GACrC,IACV,EACAW,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAew4C,EAAiBl+C,UAAW,aAAc,CAK5DlB,IAAK,WACD,OAAOG,KAAK8C,QAChB,EACAw6B,IAAK,SAAUx6B,GACX9C,KAAK8C,SAAWA,CACpB,EACApF,YAAY,EACZgK,cAAc,IAEXu3C,CACX,CA7CqC,CA6CnCE,GACFljD,EAAQgjD,iBAAmBA,EAC3B,IAAI90C,EAAuB,SAAUoqB,GAEjC,SAASpqB,IACL,IAAItL,EAAmB,OAAX01B,GAAmBA,EAAOh3B,MAAMyC,KAAM5C,YAAc4C,KAEhE,OADAnB,EAAMyD,KAAOyF,EAAiByB,YAAYW,MACnCtL,CACX,CAQA,OAbA0/C,EAAUp0C,EAAOoqB,GAMjB33B,OAAO6J,eAAe0D,EAAMpJ,UAAW,WAAY,CAC/ClB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAEXyC,CACX,CAf0B,CAexB80C,GACFhjD,EAAQkO,MAAQA,EAIhB,IAAI1B,EAA0B,SAAU8rB,GAEpC,SAAS9rB,IACL,IAAI5J,EAAmB,OAAX01B,GAAmBA,EAAOh3B,MAAMyC,KAAM5C,YAAc4C,KAEhE,OADAnB,EAAMyD,KAAOyF,EAAiByB,YAAYy4B,KACnCpjC,CACX,CAQA,OAbA0/C,EAAU91C,EAAU8rB,GAMpB33B,OAAO6J,eAAegC,EAAS1H,UAAW,WAAY,CAClDlB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAEXe,CACX,CAf6B,CAe3Bw2C,GACFhjD,EAAQwM,SAAWA,EAInB,IAAIiB,EAAyB,SAAU6qB,GAOnC,SAAS7qB,EAAQvG,EAAMd,EAASS,EAAUR,QACrB,IAAbQ,IAAuBA,EAAW,SACzB,IAATR,IAAmBA,EAAgB,WAATa,EACxB4E,EAAiByB,YAAYu4B,OACpB,UAAT5+B,EACI4E,EAAiByB,YAAYs4B,MAC7B/5B,EAAiByB,YAAYC,KACvC,IAAI5K,EAAQ01B,EAAOr3B,KAAK8C,KAAM8C,IAAa9C,KAI3C,OAHAnB,EAAMsE,KAAOA,EACbtE,EAAMwD,QAAUA,EAChBxD,EAAMyD,KAAOA,EACNzD,CACX,CAuCA,OAzDA0/C,EAAU70C,EAAS6qB,GAmBnB33B,OAAO6J,eAAeiD,EAAQ3I,UAAW,WAAY,CACjDlB,IAAK,WACD,OAAO,CACX,EACAnC,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAeiD,EAAQ3I,UAAW,UAAW,CAMhDlB,IAAK,WACD,OAAOG,KAAKmD,IAChB,EACAm6B,IAAK,SAAUn6B,GACXnD,KAAKmD,KAAOA,CAChB,EACAzF,YAAY,EACZgK,cAAc,IAElB9K,OAAO6J,eAAeiD,EAAQ3I,UAAW,aAAc,CACnDlB,IAAK,WACD,IAAIhB,EAAQmB,KACZ,OAAOpD,OAAOS,KAAK2C,KAAKqC,SAASiK,KAAI,SAAUnJ,GAC3C,IAAIg/B,EAAIC,EACR,MAAO,CACHj/B,KAAMA,EACN5E,MAAOM,EAAMwD,QAAQc,GACrBk8C,UAAkD,QAAtCld,EAAKtjC,EAAM,6BAA0C,IAAPsjC,OAAgB,EAASA,EAAGh/B,GACtF40C,OAA4C,QAAnC3V,EAAKvjC,EAAM,0BAAuC,IAAPujC,OAAgB,EAASA,EAAGj/B,GAExF,GACJ,EACAzF,YAAY,EACZgK,cAAc,IAEXgC,CACX,CA3D4B,CA2D1Bu1C,GAMF,SAAS/c,EAAMp4B,GACX,OAAO,EAAI/B,EAAiBm6B,OAAOp4B,EACvC,CAMA,SAASk1C,EAAQl1C,GACb,OAAOA,EAAKxH,OAASyF,EAAiByB,YAAYW,KACtD,CAMA,SAAS40C,EAAOj1C,GACZ,OAAOA,EAAKxH,OAASyF,EAAiByB,YAAYK,IACtD,CAMA,SAASi1C,EAAUh1C,GACf,OAAOA,EAAKxH,OAASyF,EAAiByB,YAAYQ,OACtD,CAMA,SAAS60C,EAAY/0C,GACjB,OAAOA,EAAKxH,OAASyF,EAAiByB,YAAYw4B,SACtD,CAMA,SAAS4c,EAAW90C,GAChB,OAAOA,EAAKxH,OAASyF,EAAiByB,YAAYy4B,IACtD,CAgBA,SAASyc,EAAU50C,EAAMs1C,GAErB,IAAItrC,EACJ,QAFkB,IAAdsrC,IAAwBA,GAAY,GAEpCL,EAAOj1C,GACPgK,EAAS,IAAIjK,EAAKC,EAAKxJ,WAEtB,GAAIw+C,EAAUh1C,GACfgK,EAAS,IAAI9J,EAAQF,EAAKxJ,WAEzB,GAAI4hC,EAAMp4B,GAAO,CAClB,IAAIhH,EAAWs8C,EAAYE,EAAcx1C,EAAKhH,UAAY,GACtDy8C,EAAU,IAAI71C,EAAQI,EAAK3G,KAAMs7C,EAAS,CAAC,EAAG30C,EAAKzH,SAAUS,GACjEA,EAASnF,SAAQ,SAAU6hD,GAAS,OAAQA,EAAMp1C,OAASm1C,CAAU,IAC/C,MAAlBz1C,EAAKu1C,YACLE,EAAQF,UAAYv1C,EAAKu1C,WAEzBv1C,EAAK,wBACLy1C,EAAQ,sBAAwBd,EAAS,CAAC,EAAG30C,EAAK,wBAElDA,EAAK,qBACLy1C,EAAQ,mBAAqBd,EAAS,CAAC,EAAG30C,EAAK,qBAEnDgK,EAASyrC,CACb,MACK,GAAIP,EAAQl1C,GAAO,CAChBhH,EAAWs8C,EAAYE,EAAcx1C,EAAKhH,UAAY,GAA1D,IACI28C,EAAU,IAAIt1C,EAAMrH,GACxBA,EAASnF,SAAQ,SAAU6hD,GAAS,OAAQA,EAAMp1C,OAASq1C,CAAU,IACrE3rC,EAAS2rC,CACb,MACK,GAAIb,EAAW90C,GAAO,CACnBhH,EAAWs8C,EAAYE,EAAcx1C,EAAKhH,UAAY,GAA1D,IACI48C,EAAU,IAAIj3C,EAAS3F,GAC3BA,EAASnF,SAAQ,SAAU6hD,GAAS,OAAQA,EAAMp1C,OAASs1C,CAAU,IACjE51C,EAAK,YACL41C,EAAQ,UAAY51C,EAAK,WAE7BgK,EAAS4rC,CACb,KACK,KAAIb,EAAY/0C,GAUjB,MAAM,IAAIq0B,MAAM,wBAAwBhoB,OAAOrM,EAAKxH,OATpD,IAAIq9C,EAAc,IAAIp1C,EAAsBT,EAAK3G,KAAM2G,EAAKxJ,MACtC,MAAlBwJ,EAAK,YACL61C,EAAY,UAAY71C,EAAK,UAC7B61C,EAAY,cAAgB71C,EAAK,cACjC61C,EAAY,cAAgB71C,EAAK,eAErCgK,EAAS6rC,CAIb,CAMA,OALA7rC,EAAOrJ,WAAaX,EAAKW,WACzBqJ,EAAOxK,SAAWQ,EAAKR,SACQ,MAA3BQ,EAAK81C,qBACL9rC,EAAO8rC,mBAAqB91C,EAAK81C,oBAE9B9rC,CACX,CAEA,SAASwrC,EAAcO,GAEnB,IADA,IAAI/8C,EAAW+8C,EAAOvzC,KAAI,SAAUkzC,GAAS,OAAOd,EAAUc,GAAO,EAAO,IACnE7iD,EAAI,EAAGA,EAAImG,EAAS/F,OAAQJ,IACjCmG,EAASnG,GAAG+N,KAAO5H,EAASnG,EAAI,GAChCmG,EAASnG,EAAI,GAAG0B,KAAOyE,EAASnG,GAEpC,OAAOmG,CACX,CAjIA7G,EAAQyN,QAAUA,EAQlBzN,EAAQimC,MAAQA,EAQhBjmC,EAAQ+iD,QAAUA,EAQlB/iD,EAAQ8iD,OAASA,EAQjB9iD,EAAQ6iD,UAAYA,EAQpB7iD,EAAQ4iD,YAAcA,EAQtB5iD,EAAQ2iD,WAAaA,EAQrB3iD,EAAQ0iD,YAHR,SAAqB70C,GACjB,OAAOlN,OAAOmE,UAAU8G,eAAe3K,KAAK4M,EAAM,WACtD,EAkEA7N,EAAQyiD,UAAYA,wBCjdpB,IAAI3wC,EAAoB,EAAQ,MAChC,SAAS+xC,IAEP,IAAIvjD,EACFC,EACAE,EAAI,mBAAqBsB,OAASA,OAAS,CAAC,EAC5ClB,EAAIJ,EAAEuB,UAAY,aAClBxB,EAAIC,EAAEqjD,aAAe,gBACvB,SAASpjD,EAAED,EAAGI,EAAGL,EAAGE,GAClB,IAAIoH,EAAIjH,GAAKA,EAAEiE,qBAAqBi/C,EAAYljD,EAAIkjD,EAClD9hD,EAAItB,OAAOuK,OAAOpD,EAAEhD,WACtB,OAAOgN,EAAkB7P,EAAG,UAAW,SAAUxB,EAAGI,EAAGL,GACrD,IAAIE,EACFoH,EACA7F,EACAE,EAAI,EACJwJ,EAAInL,GAAK,GACT2V,GAAI,EACJ6tC,EAAI,CACFr4C,EAAG,EACH9K,EAAG,EACHmR,EAAG1R,EACH4B,EAAG2T,EACH1T,EAAG0T,EAAE/G,KAAKxO,EAAG,GACbuV,EAAG,SAAWtV,EAAGE,GACf,OAAOC,EAAIH,EAAGuH,EAAI,EAAG7F,EAAI3B,EAAG0jD,EAAEnjD,EAAIJ,EAAGyB,CACvC,GAEJ,SAAS2T,EAAEpV,EAAGI,GACZ,IAAKiH,EAAIrH,EAAGwB,EAAIpB,EAAGN,EAAI,GAAI4V,GAAKhU,IAAM3B,GAAKD,EAAIoL,EAAE7K,OAAQP,IAAK,CAC5D,IAAIC,EACFE,EAAIiL,EAAEpL,GACNsV,EAAImuC,EAAEr4C,EACN7J,EAAIpB,EAAE,GACRD,EAAI,GAAKD,EAAIsB,IAAMjB,KAAOoB,EAAIvB,GAAGoH,EAAIpH,EAAE,IAAM,GAAKoH,EAAI,EAAG,IAAKpH,EAAE,GAAKA,EAAE,GAAKJ,GAAKI,EAAE,IAAMmV,KAAOrV,EAAIC,EAAI,GAAKoV,EAAInV,EAAE,KAAOoH,EAAI,EAAGk8C,EAAEhyC,EAAInR,EAAGmjD,EAAEnjD,EAAIH,EAAE,IAAMmV,EAAI/T,IAAMtB,EAAIC,EAAI,GAAKC,EAAE,GAAKG,GAAKA,EAAIiB,KAAOpB,EAAE,GAAKD,EAAGC,EAAE,GAAKG,EAAGmjD,EAAEnjD,EAAIiB,EAAGgG,EAAI,GACzO,CACA,GAAItH,GAAKC,EAAI,EAAG,OAAOyB,EACvB,MAAMiU,GAAI,EAAItV,CAChB,CACA,OAAO,SAAUL,EAAGmL,EAAG7J,GACrB,GAAIK,EAAI,EAAG,MAAMK,UAAU,gCAC3B,IAAK2T,GAAK,IAAMxK,GAAKkK,EAAElK,EAAG7J,GAAIgG,EAAI6D,EAAG1J,EAAIH,GAAIvB,EAAIuH,EAAI,EAAIxH,EAAI2B,KAAOkU,GAAI,CACtEzV,IAAMoH,EAAIA,EAAI,GAAKA,EAAI,IAAMk8C,EAAEnjD,GAAK,GAAIgV,EAAE/N,EAAG7F,IAAM+hD,EAAEnjD,EAAIoB,EAAI+hD,EAAEhyC,EAAI/P,GACnE,IACE,GAAIE,EAAI,EAAGzB,EAAG,CACZ,GAAIoH,IAAMtH,EAAI,QAASD,EAAIG,EAAEF,GAAI,CAC/B,KAAMD,EAAIA,EAAEU,KAAKP,EAAGuB,IAAK,MAAMO,UAAU,oCACzC,IAAKjC,EAAE8B,KAAM,OAAO9B,EACpB0B,EAAI1B,EAAE+B,MAAOwF,EAAI,IAAMA,EAAI,EAC7B,MAAO,IAAMA,IAAMvH,EAAIG,EAAU,SAAMH,EAAEU,KAAKP,GAAIoH,EAAI,IAAM7F,EAAIO,UAAU,oCAAsChC,EAAI,YAAasH,EAAI,GACrIpH,EAAIJ,CACN,MAAO,IAAKC,GAAK4V,EAAI6tC,EAAEnjD,EAAI,GAAKoB,EAAIxB,EAAEQ,KAAKJ,EAAGmjD,MAAQ9hD,EAAG,KAC3D,CAAE,MAAO3B,GACPG,EAAIJ,EAAGwH,EAAI,EAAG7F,EAAI1B,CACpB,CAAE,QACA4B,EAAI,CACN,CACF,CACA,MAAO,CACLG,MAAO/B,EACP8B,KAAM8T,EAEV,CACF,CApDuC,CAoDrC1V,EAAGD,EAAGE,IAAI,GAAKuB,CACnB,CACA,IAAIC,EAAI,CAAC,EACT,SAAS6hD,IAAa,CACtB,SAASE,IAAqB,CAC9B,SAASC,IAA8B,CACvC3jD,EAAII,OAAOikB,eACX,IAAI9c,EAAI,GAAGjH,GAAKN,EAAEA,EAAE,GAAGM,QAAUiR,EAAkBvR,EAAI,CAAC,EAAGM,GAAG,WAC1D,OAAOkD,IACT,IAAIxD,GACJ0B,EAAIiiD,EAA2Bp/C,UAAYi/C,EAAUj/C,UAAYnE,OAAOuK,OAAOpD,GACjF,SAAS3F,EAAE7B,GACT,OAAOK,OAAOgkB,eAAiBhkB,OAAOgkB,eAAerkB,EAAG4jD,IAA+B5jD,EAAEukB,UAAYq/B,EAA4BpyC,EAAkBxR,EAAGE,EAAG,sBAAuBF,EAAEwE,UAAYnE,OAAOuK,OAAOjJ,GAAI3B,CAClN,CACA,OAAO2jD,EAAkBn/C,UAAYo/C,EAA4BpyC,EAAkB7P,EAAG,cAAeiiD,GAA6BpyC,EAAkBoyC,EAA4B,cAAeD,GAAoBA,EAAkB7+B,YAAc,oBAAqBtT,EAAkBoyC,EAA4B1jD,EAAG,qBAAsBsR,EAAkB7P,GAAI6P,EAAkB7P,EAAGzB,EAAG,aAAcsR,EAAkB7P,EAAGpB,GAAG,WACja,OAAOkD,IACT,IAAI+N,EAAkB7P,EAAG,YAAY,WACnC,MAAO,oBACT,KAAKhC,EAAOD,QAAU6jD,EAAe,WACnC,MAAO,CACLj7C,EAAGlI,EACHyK,EAAGhJ,EAEP,EAAGlC,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,UAC1E,CACAC,EAAOD,QAAU6jD,EAAc5jD,EAAOD,QAAQsI,YAAa,EAAMrI,EAAOD,QAAiB,QAAIC,EAAOD,yCC/EvF,SAASmC,EAAED,EAAE0T,GAAG,IAAI9N,EAAE5F,EAAEpB,OAAOoB,EAAEb,KAAKuU,GAAG1T,EAAE,KAAK,EAAE4F,GAAG,CAAC,IAAI+N,EAAE/N,EAAE,IAAI,EAAExH,EAAE4B,EAAE2T,GAAG,KAAG,EAAEC,EAAExV,EAAEsV,IAA0B,MAAM1T,EAA7BA,EAAE2T,GAAGD,EAAE1T,EAAE4F,GAAGxH,EAAEwH,EAAE+N,CAAc,CAAC,CAAC,SAASE,EAAE7T,GAAG,OAAO,IAAIA,EAAEpB,OAAO,KAAKoB,EAAE,EAAE,CAAC,SAASkJ,EAAElJ,GAAG,GAAG,IAAIA,EAAEpB,OAAO,OAAO,KAAK,IAAI8U,EAAE1T,EAAE,GAAG4F,EAAE5F,EAAEkL,MAAM,GAAGtF,IAAI8N,EAAE,CAAC1T,EAAE,GAAG4F,EAAE5F,EAAE,IAAI,IAAI2T,EAAE,EAAEvV,EAAE4B,EAAEpB,OAAO8H,EAAEtI,IAAI,EAAEuV,EAAEjN,GAAG,CAAC,IAAIuC,EAAE,GAAG0K,EAAE,GAAG,EAAEsuC,EAAEjiD,EAAEiJ,GAAGtK,EAAEsK,EAAE,EAAE6K,EAAE9T,EAAErB,GAAG,GAAG,EAAEiV,EAAEquC,EAAEr8C,GAAGjH,EAAEP,GAAG,EAAEwV,EAAEE,EAAEmuC,IAAIjiD,EAAE2T,GAAGG,EAAE9T,EAAErB,GAAGiH,EAAE+N,EAAEhV,IAAIqB,EAAE2T,GAAGsuC,EAAEjiD,EAAEiJ,GAAGrD,EAAE+N,EAAE1K,OAAQ,MAAGtK,EAAEP,GAAG,EAAEwV,EAAEE,EAAElO,IAA0B,MAAM5F,EAA7BA,EAAE2T,GAAGG,EAAE9T,EAAErB,GAAGiH,EAAE+N,EAAEhV,CAAaqB,CAAC,CAAC,CAAC,OAAO0T,CAAC,CAC3c,SAASE,EAAE5T,EAAE0T,GAAG,IAAI9N,EAAE5F,EAAEkiD,UAAUxuC,EAAEwuC,UAAU,OAAO,IAAIt8C,EAAEA,EAAE5F,EAAE6D,GAAG6P,EAAE7P,EAAE,CAAC,GAAG,iBAAkBs+C,aAAa,mBAAoBA,YAAY/vB,IAAI,CAAC,IAAIxyB,EAAEuiD,YAAYrkD,EAAQskD,aAAa,WAAW,OAAOxiD,EAAEwyB,KAAK,CAAC,KAAK,CAAC,IAAI3oB,EAAE0oB,KAAKrT,EAAErV,EAAE2oB,MAAMt0B,EAAQskD,aAAa,WAAW,OAAO34C,EAAE2oB,MAAMtT,CAAC,CAAC,CAAC,IAAIvgB,EAAE,GAAGF,EAAE,GAAG0B,EAAE,EAAE+P,EAAE,KAAKmE,EAAE,EAAE8K,GAAE,EAAGC,GAAE,EAAGqjC,GAAE,EAAGC,EAAE,mBAAoBr9C,WAAWA,WAAW,KAAKs9C,EAAE,mBAAoBv3B,aAAaA,aAAa,KAAKoS,EAAE,oBAAqBolB,aAAaA,aAAa,KACnT,SAASV,EAAE9hD,GAAG,IAAI,IAAI0T,EAAEG,EAAExV,GAAG,OAAOqV,GAAG,CAAC,GAAG,OAAOA,EAAExJ,SAAShB,EAAE7K,OAAQ,MAAGqV,EAAE+uC,WAAWziD,GAAgD,MAA9CkJ,EAAE7K,GAAGqV,EAAEwuC,UAAUxuC,EAAEgvC,eAAeziD,EAAE1B,EAAEmV,EAAa,CAACA,EAAEG,EAAExV,EAAE,CAAC,CAAC,SAASskD,EAAE3iD,GAAa,GAAVqiD,GAAE,EAAGP,EAAE9hD,IAAOgf,EAAE,GAAG,OAAOnL,EAAEtV,GAAGygB,GAAE,EAAG4jC,EAAEC,OAAO,CAAC,IAAInvC,EAAEG,EAAExV,GAAG,OAAOqV,GAAGovC,EAAEH,EAAEjvC,EAAE+uC,UAAUziD,EAAE,CAAC,CACra,SAAS6iD,EAAE7iD,EAAE0T,GAAGsL,GAAE,EAAGqjC,IAAIA,GAAE,EAAGE,EAAEQ,GAAGA,GAAG,GAAGhkC,GAAE,EAAG,IAAInZ,EAAEqO,EAAE,IAAS,IAAL6tC,EAAEpuC,GAAO5D,EAAE+D,EAAEtV,GAAG,OAAOuR,MAAMA,EAAE4yC,eAAehvC,IAAI1T,IAAIgjD,MAAM,CAAC,IAAIrvC,EAAE7D,EAAE5F,SAAS,GAAG,mBAAoByJ,EAAE,CAAC7D,EAAE5F,SAAS,KAAK+J,EAAEnE,EAAEmzC,cAAc,IAAI7kD,EAAEuV,EAAE7D,EAAE4yC,gBAAgBhvC,GAAGA,EAAE5V,EAAQskD,eAAe,mBAAoBhkD,EAAE0R,EAAE5F,SAAS9L,EAAE0R,IAAI+D,EAAEtV,IAAI2K,EAAE3K,GAAGujD,EAAEpuC,EAAE,MAAMxK,EAAE3K,GAAGuR,EAAE+D,EAAEtV,EAAE,CAAC,GAAG,OAAOuR,EAAE,IAAIpJ,GAAE,MAAO,CAAC,IAAIuC,EAAE4K,EAAExV,GAAG,OAAO4K,GAAG65C,EAAEH,EAAE15C,EAAEw5C,UAAU/uC,GAAGhN,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQoJ,EAAE,KAAKmE,EAAErO,EAAEmZ,GAAE,CAAE,CAAC,CAD1a,oBAAqByG,gBAAW,IAASA,UAAU09B,iBAAY,IAAS19B,UAAU09B,WAAWC,gBAAgB39B,UAAU09B,WAAWC,eAAev2C,KAAK4Y,UAAU09B,YAC2Q,IACzPE,EAD6PC,GAAE,EAAGC,EAAE,KAAKP,GAAG,EAAEQ,EAAE,EAAEC,GAAG,EACvc,SAASR,IAAI,QAAOllD,EAAQskD,eAAeoB,EAAED,EAAO,CAAC,SAASE,IAAI,GAAG,OAAOH,EAAE,CAAC,IAAItjD,EAAElC,EAAQskD,eAAeoB,EAAExjD,EAAE,IAAI0T,GAAE,EAAG,IAAIA,EAAE4vC,GAAE,EAAGtjD,EAAE,CAAC,QAAQ0T,EAAE0vC,KAAKC,GAAE,EAAGC,EAAE,KAAK,CAAC,MAAMD,GAAE,CAAE,CAAO,GAAG,mBAAoBjmB,EAAEgmB,EAAE,WAAWhmB,EAAEqmB,EAAE,OAAO,GAAG,oBAAqBC,eAAe,CAAC,IAAIC,EAAE,IAAID,eAAeE,EAAED,EAAEE,MAAMF,EAAEG,MAAMC,UAAUN,EAAEL,EAAE,WAAWQ,EAAEI,YAAY,KAAK,CAAC,MAAMZ,EAAE,WAAWd,EAAEmB,EAAE,EAAE,EAAE,SAASb,EAAE5iD,GAAGsjD,EAAEtjD,EAAEqjD,IAAIA,GAAE,EAAGD,IAAI,CAAC,SAASN,EAAE9iD,EAAE0T,GAAGqvC,EAAET,GAAE,WAAWtiD,EAAElC,EAAQskD,eAAe,GAAE1uC,EAAE,CAC5d5V,EAAQmmD,sBAAsB,EAAEnmD,EAAQomD,2BAA2B,EAAEpmD,EAAQqmD,qBAAqB,EAAErmD,EAAQsmD,wBAAwB,EAAEtmD,EAAQumD,mBAAmB,KAAKvmD,EAAQwmD,8BAA8B,EAAExmD,EAAQymD,wBAAwB,SAASvkD,GAAGA,EAAEkK,SAAS,IAAI,EAAEpM,EAAQ0mD,2BAA2B,WAAWxlC,GAAGD,IAAIC,GAAE,EAAG4jC,EAAEC,GAAG,EAC1U/kD,EAAQ2mD,wBAAwB,SAASzkD,GAAG,EAAEA,GAAG,IAAIA,EAAEsD,QAAQyH,MAAM,mHAAmHw4C,EAAE,EAAEvjD,EAAEwvB,KAAKk1B,MAAM,IAAI1kD,GAAG,CAAC,EAAElC,EAAQ6mD,iCAAiC,WAAW,OAAO1wC,CAAC,EAAEnW,EAAQ8mD,8BAA8B,WAAW,OAAO/wC,EAAEtV,EAAE,EAAET,EAAQ+mD,cAAc,SAAS7kD,GAAG,OAAOiU,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIP,EAAE,EAAE,MAAM,QAAQA,EAAEO,EAAE,IAAIrO,EAAEqO,EAAEA,EAAEP,EAAE,IAAI,OAAO1T,GAAG,CAAC,QAAQiU,EAAErO,CAAC,CAAC,EAAE9H,EAAQgnD,wBAAwB,WAAW,EAC9fhnD,EAAQinD,sBAAsB,WAAW,EAAEjnD,EAAQknD,yBAAyB,SAAShlD,EAAE0T,GAAG,OAAO1T,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAI4F,EAAEqO,EAAEA,EAAEjU,EAAE,IAAI,OAAO0T,GAAG,CAAC,QAAQO,EAAErO,CAAC,CAAC,EAChM9H,EAAQmnD,0BAA0B,SAASjlD,EAAE0T,EAAE9N,GAAG,IAAI+N,EAAE7V,EAAQskD,eAA8F,OAAtCx8C,EAAzC,iBAAkBA,GAAG,OAAOA,GAAe,iBAAZA,EAAEA,EAAEs/C,QAA6B,EAAEt/C,EAAE+N,EAAE/N,EAAO+N,EAAS3T,GAAG,KAAK,EAAE,IAAI5B,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM4B,EAAE,CAAC6D,GAAG9D,IAAImK,SAASwJ,EAAEuvC,cAAcjjD,EAAEyiD,UAAU78C,EAAE88C,eAAvDtkD,EAAEwH,EAAExH,EAAoE8jD,WAAW,GAAGt8C,EAAE+N,GAAG3T,EAAEkiD,UAAUt8C,EAAE3F,EAAE5B,EAAE2B,GAAG,OAAO6T,EAAEtV,IAAIyB,IAAI6T,EAAExV,KAAKgkD,GAAGE,EAAEQ,GAAGA,GAAG,GAAGV,GAAE,EAAGS,EAAEH,EAAE/8C,EAAE+N,MAAM3T,EAAEkiD,UAAU9jD,EAAE6B,EAAE1B,EAAEyB,GAAGgf,GAAGD,IAAIC,GAAE,EAAG4jC,EAAEC,KAAY7iD,CAAC,EACnelC,EAAQqnD,qBAAqBnC,EAAEllD,EAAQsnD,sBAAsB,SAASplD,GAAG,IAAI0T,EAAEO,EAAE,OAAO,WAAW,IAAIrO,EAAEqO,EAAEA,EAAEP,EAAE,IAAI,OAAO1T,EAAEZ,MAAMyC,KAAK5C,UAAU,CAAC,QAAQgV,EAAErO,CAAC,CAAC,CAAC,qCCjB/JnH,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAQunD,iBAAmBA,EAC3BvnD,EAAQomC,wBAoDR,SAAiC/wB,GAC7B,OAAOA,EAAKnP,QAAQshD,EAAYjiB,sBAAuBiiB,EAAYliB,4BACvE,EArDAtlC,EAAQynD,wBAA0BA,EAClCznD,EAAQ0V,UAsER,SAASA,EAAUgyC,EAAOv5C,EAAQqH,QACf,IAAXrH,IAAqBA,EAAS,MAKlC,IAJA,IACIgO,EADAwrC,EAAW,GAEXj3C,EAAQ,EACRk3C,EAAcF,EAAM5mD,OACjB4P,EAAQk3C,EAAal3C,IAAS,CACjC,IAAI7C,EAAO65C,EAAMh3C,GAEjB,OAAQ7C,EAAKiK,UACT,KAAK,EACD,IAAII,EAAU2vC,EAAch6C,EAAKi6C,WAEjC3rC,EAAU,IAAI4rC,EAAat6C,QAAQyK,EAASqvC,EAAiB15C,EAAKm6C,cAC1DnhD,SAAW6O,EAEP,aAAZwC,EACMrK,EAAK2L,QAAQ5B,WACb/J,EAAK+J,WAAYuE,GACvB,MAEJ,KAAK,EACDA,EAAU,IAAI4rC,EAAan6C,KAAK65C,EAAwB55C,EAAKo6C,YAC7D,MACJ,KAAK,EACD9rC,EAAU,IAAI4rC,EAAah6C,QAAQF,EAAKo6C,WACxC,MACJ,QACI,SAGR,IAAIx5C,EAAOk5C,EAASj3C,EAAQ,IAAM,KAC9BjC,IACAA,EAAKrM,KAAO+Z,GAGhBA,EAAQhO,OAASA,EACjBgO,EAAQ1N,KAAOA,EACf0N,EAAQ/Z,KAAO,KACfulD,EAAStmD,KAAK8a,EAClB,CAUA,OATI3G,KACA2G,EAAU,IAAI4rC,EAAaz5C,sBAAsBkH,EAAU6G,UAAU,EAAG7G,EAAUzU,QAAQ,MAAMgwB,cAAevb,IACvGpT,KAAOulD,EAAS,IAAM,KAC9BxrC,EAAQhO,OAASA,EACjBw5C,EAAS/pB,QAAQzhB,GACbwrC,EAAS,KACTA,EAAS,GAAGl5C,KAAOk5C,EAAS,KAG7BA,CACX,EAxHA,IAAII,EAAe,EAAQ,MACvBP,EAAc,EAAQ,MAgB1B,SAASD,EAAiBS,GAKtB,IAJA,IAAI33C,EAAM,CAAC,EACPK,EAAQ,EACRw3C,EAAmBF,EAAWlnD,OAE3B4P,EAAQw3C,EAAkBx3C,IAAS,CACtC,IAAIy3C,EAAYH,EAAWt3C,GAC3BL,EAAI83C,EAAUjhD,MAAQihD,EAAU7lD,KACpC,CACA,OAAO+N,CACX,CAQA,SAASw3C,EAAc3vC,GAGnB,OA9BJ,SAAiCA,GAC7B,OAAOsvC,EAAY/hB,6BAA6BvtB,EACpD,CA2B+BkwC,CAD3BlwC,EAAUA,EAAQ6Y,gBAKX7Y,CACX,CAgBA,SAASuvC,EAAwBz+C,GAC7B,OAAOA,EAAK9C,QAAQshD,EAAYniB,kCAAmCmiB,EAAYhiB,gBACnF,mFCjEA,SAAS6iB,EAA4B5nD,EAAGyB,GACtC,GAAIzB,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,OAAiBA,EAAGyB,GACrD,IAAI3B,EAAI,CAAC,EAAEw/B,SAAS9+B,KAAKR,GAAGqQ,MAAM,GAAI,GACtC,MAAO,WAAavQ,GAAKE,EAAEqU,cAAgBvU,EAAIE,EAAEqU,YAAY5N,MAAO,QAAU3G,GAAK,QAAUA,EAAIqB,MAAM6xB,KAAKhzB,GAAK,cAAgBF,GAAK,2CAA2CuP,KAAKvP,IAAK,OAAiBE,EAAGyB,QAAK,CACtN,CACF,6FCoKM8W,EAAkB,IA1KF,WA2BjB,OAAAxV,EAAAA,EAAAA,IAzBD,SAAA8kD,KAAczlD,EAAAA,EAAAA,GAAA,KAAAylD,GAEV,IACQC,EADJC,EAAgBjkD,SAASikD,gBACrBD,EAAUhkD,SAASiD,qBAAqB,WAC7B+gD,EAAQznD,OAAS,GAGhCoR,EAAexN,EAAQ,MAE3BX,KAAK+3C,OAAS0M,EAAcl5C,aAAa,UAAY,MACrDvL,KAAK0kD,gBAAkB1kD,KAAK+3C,OAAOjrC,cACnC9M,KAAKoZ,aAAe,IAAIjL,EAExB,IACInO,KAAK2kD,oBAAsB7kD,OAAO8kD,cACtC,CAAE,MAAOroD,GACLyD,KAAK2kD,mBAAoB,CAC7B,CAEA,IACI3kD,KAAK6kD,kBAAoB/kD,OAAOglD,YACpC,CAAE,MAAOvoD,GACLyD,KAAK6kD,iBAAkB,CAC3B,CAEJ,GAAC,EAAAnlD,IAAA,YAAAnB,MAED,SAAUgB,EAAOe,EAAM6sB,GACnBntB,KAAKoZ,aAAa9I,UAAU/Q,EAAMe,EACtC,GAAC,CAAAZ,IAAA,oBAAAnB,MAED,SAAkBmB,EAAKY,GACfR,OAAOga,SAAmC,IAAzBha,OAAOga,OAAOuuB,QAC/BvoC,OAAOga,OAAOqoC,YAAYniD,KAAK+3C,OAAS,KAAKr4C,EAAI,KAAKk/B,KAAKoG,UAAU1kC,GAAQ,MAAM,KAEvE,gBAARZ,GAAyBI,OAAOga,OAAO1P,SAA0C,IAAhCtK,OAAOga,OAAO1P,OAAOi+B,QAAoBvoC,OAAOga,QAAUha,OAAOga,OAAO1P,SACzHtK,OAAOga,OAAO1P,OAAO+3C,YAAYniD,KAAK+3C,OAAS,KAAKr4C,EAAI,KAAKk/B,KAAKoG,UAAU1kC,GAAQ,MAAM,KACtFR,OAAOga,OAAO1P,OAAOA,SAAiD,IAAvCtK,OAAOga,OAAO1P,OAAOA,OAAOi+B,QAAoBvoC,OAAOga,OAAO1P,OAAOA,QAAUtK,OAAOga,OAAO1P,QAC5HtK,OAAOga,OAAO1P,OAAOA,OAAO+3C,YAAYniD,KAAK+3C,OAAS,KAAKr4C,EAAI,KAAKk/B,KAAKoG,UAAU1kC,GAAQ,MAAM,OAGlGR,OAAOsK,SAAmC,IAAzBtK,OAAOsK,OAAOi+B,QACtCvoC,OAAOsK,OAAO+3C,YAAYniD,KAAK+3C,OAAS,KAAKr4C,EAAI,KAAKk/B,KAAKoG,UAAU1kC,GAAQ,MAAM,KAIxD,oBAApBykD,iBACPA,gBAAgBrlD,EAAIY,EAE5B,GAAC,CAAAZ,IAAA,0BAAAnB,MAED,SAAwBmB,EAAKY,GACzB,IAAI0kD,EAAc,KAEdllD,OAAOsK,QAAUtK,OAAOsK,OAAO,KAAKpK,KAAK0kD,mBAA6C,IAAzB5kD,OAAOsK,OAAOi+B,OAC3E2c,EAAcllD,OAAOsK,OAAO,KAAKpK,KAAK0kD,iBAAiBO,cAChDnlD,OAAOga,QAAUha,OAAOga,OAAO,KAAK9Z,KAAK0kD,mBAA6C,IAAzB5kD,OAAOga,OAAOuuB,SAClF2c,EAAcllD,OAAOga,OAAO,KAAK9Z,KAAK0kD,iBAAiBO,eAGvC,OAAhBD,EACAA,EAAY10C,UAAU5Q,EAAIY,GAE1BN,KAAKiX,kBAAkBvX,EAAKY,EAEpC,GAAC,CAAAZ,IAAA,kBAAAnB,MAED,SAAgBmB,EAAKnB,GACjB,GAAIyB,KAAK6kD,iBAAmBC,aAAaI,QAAS,IAC9CJ,aAAaI,QAAQllD,KAAK+3C,OAASr4C,EAAKnB,EAC5C,CAAE,MAAOuT,GACT,CACJ,GAAC,CAAApS,IAAA,oBAAAnB,MAED,SAAkBmB,EAAKnB,GACnB,GAAIyB,KAAK2kD,mBAAqBC,eAAeM,QAAS,IAClDN,eAAeM,QAAQllD,KAAK+3C,OAASr4C,EAAKnB,EAC9C,CAAE,MAAOuT,GACT,CACJ,GAAC,CAAApS,IAAA,oBAAAnB,MAED,SAAkBJ,GACd,OAAO6B,KAAK2kD,mBAAqBC,eAAeO,QAAUP,eAAeO,QAAQnlD,KAAK+3C,OAAS55C,GAAK,IACxG,GAAC,CAAAuB,IAAA,kBAAAnB,MAED,SAAgBJ,GACZ,OAAO6B,KAAK6kD,iBAAmBC,aAAaK,QAAUL,aAAaK,QAAQnlD,KAAK+3C,OAAS55C,GAAK,IAClG,GAAC,CAAAuB,IAAA,uBAAAnB,MAED,SAAqBJ,GACjB6B,KAAK2kD,mBAAqBC,eAAeQ,YAAcR,eAAeQ,WAAWplD,KAAK+3C,OAAS55C,EACnG,GAAC,CAAAuB,IAAA,qBAAAnB,MAED,SAAmBJ,GACf6B,KAAK6kD,iBAAmBC,aAAaM,YAAcN,aAAaM,WAAWplD,KAAK+3C,OAAS55C,EAC7F,GAAC,CAAAuB,IAAA,cAAAnB,MAED,WACI,IACI,IAAI8mD,EAAKC,KAAKC,iBAAiBC,kBAAkBC,SAEjD,MADU,aAANJ,IAAqBA,EAAK,OACvBA,CACX,CAAE,MAAO9oD,GACL,IAAImpD,EAAQ,IAAIp1B,KAoBhB,OAXWo1B,EAAMC,qBANTC,EAAM,IAAIt1B,KAAKo1B,EAAMG,cAAe,EAAG,GACvCC,EAAM,IAAIx1B,KAAKo1B,EAAMG,cAAe,EAAG,GACpCl4B,KAAKC,IAAIg4B,EAAID,oBAAqBG,EAAIH,sBAU5BD,EAAMC,oBAEND,EAAMC,oBAAoB,IAGrB,IAAO,CACrC,CAbc,IALFC,EACAE,CAkBhB,GAAC,CAAApmD,IAAA,wBAAAnB,MAED,SAAsB0b,GAElB,GAAIA,EAAajO,KAAO,EAAI,CACxB,IAAI+5C,EAAc,CAAC,WAAe,GAAG,WAAe,GAAI,YAAgB,GAAI,YAAgB,GAAI,QAAY,GAAI,WAAe,IAS/H,OARA9rC,EAAatc,SAAQ,SAAAuN,GACjB66C,EAAyB,YAAEzoD,KAAK4N,EAAMrL,IAAI,UAC1CkmD,EAAwB,WAAEzoD,KAAK4N,EAAMrL,IAAI,SACzCkmD,EAAwB,WAAEzoD,MAA+B,IAA1B4N,EAAMrL,IAAI,YAAuB,IAAM,KACtEkmD,EAAqB,QAAEzoD,MAAgC,IAA3B4N,EAAMrL,IAAI,aAAwB,IAAM,IACpEkmD,EAAyB,YAAEzoD,KAAK4N,EAAMrL,IAAI,SAC1CkmD,EAAwB,WAAEzoD,KAAK4N,EAAMrL,IAAI,QAC7C,IACOkmD,CACX,CACA,OAAO,IACX,GAAC,CAAArmD,IAAA,gBAAAnB,MAED,SAAcmpC,GACV,IAAMse,EAAiBte,EAAK9oC,MAAM0U,WAAWzT,IAAI,gBAC7CmmD,EAAejpD,OAAS,GACxBipD,EAAeroD,SAAQ,SAAC+F,GACpBgkC,EAAKrnC,SAASqD,EAClB,GAER,GAAC,CAAAhE,IAAA,aAAAnB,MAED,SAAWqc,GACP,IAAIre,GACJA,EAAI,CAAC,GACHyZ,SAAWA,UAAYA,SAASF,KAAOE,SAASF,KAAO,GACzDvZ,EAAE+a,QAAUxX,OAAO6jB,UAAUoC,UAC7BxpB,EAAE2jC,MAAQtlB,EAAc,MACxBre,EAAE2jC,MAAQ3jC,EAAE2jC,MAAM/9B,QAAQ,iBAAkB,IAC5C,IAAIuoB,EAAM,IAAI6I,eACd7I,EAAI8I,KAAM,OAAS1zB,OAAOC,QAAkB,SAAI,oBAAoB,GACpE2qB,EAAIgJ,iBAAiB,eAAgB,qCACrChJ,EAAImJ,KAAM,QAAUoyB,mBAAoBrnB,KAAKoG,UAAUzoC,IAC3D,IAAC,CAtKiB,IA2KtBuD,OAAOomD,mBAAqBjxC,kTC5KiB,QA8B7C,EA5BiB,SAAAtW,GAMb,SAAAwnD,EAAYvnD,GAAO,IAAAC,QAFlB,OAEkBC,EAAAA,EAAAA,GAAA,KAAAqnD,KACf,OAAAA,IAAA,CAAMvnD,gBAANC,iFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QALT,CACJunD,SAAU,OACbvnD,CAID,CAAC,OAAAW,EAAAA,EAAAA,GAAA2mD,EAAAxnD,IAAAc,EAAAA,EAAAA,GAAA0mD,EAAA,EAAAzmD,IAAA,oBAAAnB,MAED,WACI,GAAIiC,SAASC,eAAeT,KAAKpB,MAAMynD,WAAY,CAC/C,IAAI3lD,EAAMC,EAAQ,MAClBX,KAAKK,SAAS,CAAC,SAAa,IAAIK,EAAIF,SAASC,eAAeT,KAAKpB,MAAMynD,aAC3E,CACJ,GAAC,CAAA3mD,IAAA,uBAAAnB,MAED,WACQyB,KAAK6B,MAAMukD,iBACJpmD,KAAK6B,MAAMukD,QAE1B,GAAC,CAAA1mD,IAAA,SAAAnB,MAED,WACI,OAAOyB,KAAKpB,MAAMkE,QACtB,IAAC,CAzBY,CAASc,EAAAA,gKCGc,IAQlC0iD,GAAUlzC,GANfF,EAAAA,EAAAA,KAAQ,SAACG,GACN,MAAO,CACHC,WAAYD,EAAMC,WAE1B,IAAEF,EAAAG,EAAA,SAAA3I,GAIE,SAAA07C,EAAY1nD,GAAO,IAAAC,QAKkC,OALlCC,EAAAA,EAAAA,GAAA,KAAAwnD,KACf,OAAAA,IAAA,CAAM1nD,iBAANC,iFACKilC,YAAcjlC,EAAKilC,YAAY/4B,KAAIlM,GACxCA,EAAK8lC,QAAU9lC,EAAK8lC,QAAQ55B,KAAIlM,GAChCA,EAAK0nD,MAAQ1nD,EAAK0nD,MAAMx7C,KAAIlM,GAC5BA,EAAK2nD,aAAe3nD,EAAK2nD,aAAaz7C,KAAIlM,GAAOA,CACrD,CAAC,OAAAW,EAAAA,EAAAA,GAAA8mD,EAAA17C,IAAAnL,EAAAA,EAAAA,GAAA6mD,EAAA,EAAA5mD,IAAA,cAAAnB,MAED,WACIyB,KAAKpB,MAAM6T,UAAS4D,EAAAA,EAAAA,MACxB,GAAC,CAAA3W,IAAA,UAAAnB,MAED,WACIyB,KAAKpB,MAAM+lC,SACf,GAAC,CAAAjlC,IAAA,QAAAnB,MAED,WACIyB,KAAKpB,MAAM6nD,WACf,GAAC,CAAA/mD,IAAA,eAAAnB,MAED,WACIyB,KAAKpB,MAAM4nD,cACf,GAAC,CAAA9mD,IAAA,SAAAnB,MAED,WAAS,IAAAoB,EAAA,KACGnD,EAAMwD,KAAKpB,MAAXpC,EAEFkqD,GAAc1mD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,YAAc3S,KAAKpB,MAAM0U,WAAWzT,IAAI,YAC7F8mD,EAAY3mD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,4BACnD7Q,EAAY,qCAAgF,GAAzC9B,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAsB,iBAAmB,qBAAkE,IAA5CG,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAqE,IAA1CG,KAAKpB,MAAM0U,WAAWzT,IAAI,cAAuE,IAA/CG,KAAKpB,MAAM0U,WAAWzT,IAAI,iBAA8B,iBAAmB,mBAC9T+mD,GAAY5mD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eACnDk0C,GAAwD,IAA5C7mD,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAA2BG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAC1Gm0C,EAAc,EAAGC,EAAiB,EAAGC,GAA4B,EAAOC,GAAmB,EAEzFC,EAAclnD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAmBlG,KAAI,SAAC66C,EAAKx6C,GAC7I,IAAIy6C,EAAWD,EAAItnD,IAAI,OAEvB,GAAgB,YAAZunD,EAAJ,CAUA,IALyB,IAArBH,IACAD,GAA4B,GAGhCI,EAAuB,QAAZA,EAAsB,QAAuB,SAAZA,EAAsB,MAAQA,EACpD,OAAlBD,EAAItnD,IAAI,QAAmB6mD,EAE3B,OADAI,IACOllD,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAKmkC,aAAmB,EAAGhiC,UAAW,mCAAmCslD,EAAUvwC,MAAOlX,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,cAAgBhW,EAAE,mBAAoB+F,QAAS5C,EAAKmkC,aAC1QnkC,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,kBAAoB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,iBAAkBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,MAE9L,GAAsB,SAAlBqlD,EAAItnD,IAAI,QAAqB+mD,EAEpC,OADAE,IACOllD,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAK4mD,OAAa,EAAGzkD,UAAW,qBAAqBslD,EAAUvwC,MAAOlX,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAAkBhW,EAAE,gBAAiB+F,QAAS5C,EAAK4mD,OACrP5mD,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAoBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,MAElM,GAAsB,SAAlBqlD,EAAItnD,IAAI,QAAqBgnD,EAAW,CAC/C,IAAMQ,EAAU1nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAqBhW,EAAE,mBAE9E,OADAsqD,IACOllD,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAKglC,SAAe,EAAG9tB,MAAOwwC,EAASvlD,UAAW,qBAAqBslD,EAAU7kD,QAAS5C,EAAKglC,SACpLhlC,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAoBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,KAChMqlD,EAAItnD,IAAI,UAAY+B,EAAAA,cAAA,QAAME,UAAU,iBAAiBulD,GAE9D,CAAO,GAAsB,cAAlBF,EAAItnD,IAAI,SAA2BF,EAAKf,MAAM0U,WAAWzT,IAAI,YAAa,CACjFinD,IACA,IAAIQ,EAMJ,OAJIA,EADA3nD,EAAKf,MAAM0U,WAAWzT,IAAI,sBAAsB0nD,SAAS,eAC3C5nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,wBAA0BhW,EAAE,6BAEnEmD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,sBAAwBhW,EAAE,2BAE5EoF,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI4U,MAAOywC,EAAavwC,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAK6mD,cAAoB,EAAG1kD,UAAW,qBAAqBslD,EAAU7kD,QAAS5C,EAAK6mD,cAC7L7mD,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,sBAAwB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,qBAAsBmF,IAAI,MAAW/V,EAAAA,cAAA,KAAGE,UAAU,kBAAkBnC,EAAKf,MAAM0U,WAAWzT,IAAI,sBAAsB0nD,SAAS,eAAiB3lD,EAAAA,cAACA,EAAAA,SAAc,KAAC,KAA4BA,EAAAA,cAACA,EAAAA,SAAc,KAAC,MAErV,CAnCA,MAFIqlD,GAAmB,CAsC/B,IAEMO,EAAgBxnD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAmBlG,KAAI,SAAC66C,EAAKx6C,GAEnJ,GAAgB,YADDw6C,EAAItnD,IAAI,OACvB,CAIA,GAAsB,OAAlBsnD,EAAItnD,IAAI,QAAmB6mD,EAAW,CACtCK,IACA,IAAMU,EAAU9nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,cAAgBhW,EAAE,mBACzE,OAAOoF,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAKmkC,aAAmB,EAAGhiC,UAAW,6EAA8E+U,MAAO4wC,EAASllD,QAAS5C,EAAKmkC,aACvOnkC,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,kBAAoB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,iBAAkBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,KAC7LF,EAAAA,cAAA,QAAME,UAAU,yBAAyB2lD,GAEjD,CAAO,GAAsB,SAAlBN,EAAItnD,IAAI,QAAqB+mD,EAAU,CAC9CG,IACA,IAAMW,EAAY/nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAAkBhW,EAAE,gBAC7E,OAAOoF,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAK4mD,OAAa,EAAGzkD,UAAW,gEAAiE+U,MAAO6wC,EAAWnlD,QAAS5C,EAAK4mD,OACtN5mD,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAoBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,KACjMF,EAAAA,cAAA,QAAME,UAAU,yBAAyB4lD,GAEjD,CAAO,GAAsB,SAAlBP,EAAItnD,IAAI,QAAqBgnD,EAAW,CAC/CE,IACA,IAAMM,EAAU1nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAqBhW,EAAE,mBAC9E,OAAOoF,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI4U,MAAOwwC,EAAStwC,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAKglC,SAAe,EAAG7iC,UAAW,gEAAiES,QAAS5C,EAAKglC,SACtNhlC,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAoBmF,IAAI,MAAU/V,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,KACjMF,EAAAA,cAAA,QAAME,UAAU,aAAaulD,GAErC,CAAO,GAAsB,cAAlBF,EAAItnD,IAAI,SAA2BF,EAAKf,MAAM0U,WAAWzT,IAAI,YAAa,CACjFknD,IACA,IAAIO,EAMJ,OAJIA,EADA3nD,EAAKf,MAAM0U,WAAWzT,IAAI,sBAAsB0nD,SAAS,eAC3C5nD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,wBAA0BhW,EAAE,6BAEnEmD,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,sBAAwBhW,EAAE,2BAE5EoF,EAAAA,cAAA,KAAGlC,IAAKynD,EAAItnD,IAAI,OAAO8M,EAAO1K,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkBC,EAAK6mD,cAAoB,EAAG3vC,MAAOywC,EAAaxlD,UAAW,+DAAgES,QAAS5C,EAAK6mD,cAC9N7mD,EAAKf,MAAM0U,WAAWX,MAAM,CAAC,UAAU,sBAAwB/Q,EAAAA,cAAA,OAAKE,UAAU,OAAO6B,IAAKhE,EAAKf,MAAM0U,WAAWd,MAAM,CAAC,UAAU,qBAAsBmF,IAAI,MAAW/V,EAAAA,cAAA,KAAGE,UAAU,kBAAkBnC,EAAKf,MAAM0U,WAAWzT,IAAI,sBAAsB0nD,SAAS,eAAiB3lD,EAAAA,cAACA,EAAAA,SAAc,KAAC,KAA4BA,EAAAA,cAACA,EAAAA,SAAc,KAAC,KAA0B,KACvWA,EAAAA,cAAA,QAAME,UAAU,yBAAyBwlD,GAEjD,CAnCA,CAoCJ,IAEA,OACI1lD,EAAAA,cAAA,OAAKI,GAAG,wBAAwBF,UAAWA,GACtC6kD,GAAa/kD,EAAAA,cAAA,OAAKE,UAAU,2BAA2B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gCAC9Hs0C,EAAc,GAAKC,EAAiB,IAAMnlD,EAAAA,cAAA,OAAKE,UAAU,mCACpB,IAA9BklD,GAAsCE,EACtCH,EAAiB,GAAKnlD,EAAAA,cAAA,OAAKE,UAAU,+BAClCF,EAAAA,cAACukD,EAAW,CAACE,UAAU,kBACnBzkD,EAAAA,cAAA,OAAKE,UAAU,mCACXF,EAAAA,cAAA,UAAQK,SAAS,IAAIH,UAAU,2BAA2BE,GAAG,iBAAiB,iBAAe,WAAW,gBAAc,OAAO,gBAAc,SAAQJ,EAAAA,cAAA,KAAGE,UAAU,kBAAkB,MAClLF,EAAAA,cAAA,OAAKE,UAAU,gEACV0lD,OAKc,IAA9BR,GAAuCE,GAI5D,IAAC,CA/IH,CAEuBr5C,EAAAA,aAAS0F,GAgJlC,GAAe1P,EAAAA,EAAAA,IAAf,CAAiCyiD,iCCzJjC,SAASqB,EAAmBjrD,GAC1B,OCJF,SAA4BA,GAC1B,GAAImB,MAAMC,QAAQpB,GAAI,OAAO,EAAAkrD,EAAA,GAAiBlrD,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsBsB,QAAU,MAAQtB,EAAEsB,OAAOC,WAAa,MAAQvB,EAAE,cAAe,OAAOmB,MAAM6xB,KAAKhzB,EAC/G,CFGiC,CAAgBA,KAAM,EAAA8B,EAAA,GAA2B9B,IGLlF,WACE,MAAM,IAAI+B,UAAU,uIACtB,CHGwF,EACxF,2LICA,IAAMopD,EAAejmD,EAAAA,MAAW,kBAAM,6BAAwB,IACxDkmD,EAAelmD,EAAAA,MAAW,kBAAM,6BAAwB,IAGxDmmD,EAAW,SAAAppD,GAQb,SAAAopD,EAAYnpD,GAAO,IAAAC,QAMK,OANLC,EAAAA,EAAAA,GAAA,KAAAipD,KACf,OAAAA,IAAA,CAAMnpD,gBAANC,iFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QAPT,CACJmpD,YAAa,EACbC,eAAgB,EAChBC,iBAAmB,IAKnBrpD,EAAK4U,cAAgB5U,EAAK4U,cAAc1I,KAAIlM,GAC5CA,EAAKspD,YAActpD,EAAKspD,YAAYp9C,KAAIlM,GACxCA,EAAK6U,qBAAuB7U,EAAK6U,qBAAqB3I,KAAIlM,GAC1DA,EAAK+U,eAAgB,EACrB/U,EAAK8oC,UAAY,GAAG9oC,CACxB,CAAC,OAAAW,EAAAA,EAAAA,GAAAuoD,EAAAppD,IAAAc,EAAAA,EAAAA,GAAAsoD,EAAA,EAAAroD,IAAA,qBAAAnB,MAED,SAAmByC,GAIf,IAHA,IAAI6S,EAAa7S,EAAQ6S,WACrBC,EAAS,GAEJnX,EAAI,EAAGA,EAAIkX,EAAW9W,OAAQJ,IACN,GAA1BkX,EAAWlX,GAAGoX,WACbD,GAAUD,EAAWlX,GAAG2D,KAAK0T,QAIrC,OAAOF,CACX,GAAC,CAAApU,IAAA,YAAAnB,MAED,SAAU0V,EAAOjT,GAEiB,GAA1BhB,KAAKpB,MAAMsV,aAAwBD,EAAM,gBAAiC,UAAdA,EAAM3R,MAAwC,MAApBtB,EAAQmT,UACtE,MAApBnT,EAAQmT,SACRnU,KAAKqU,kBAAkBJ,EAAM,WAAY,GAG7CjU,KAAKpB,MAAM6T,SAAS,CAACnQ,KAAM,mBAAoBhC,KAAMN,KAAKoU,mBAAmBpT,MAG5EiT,EAAM,cAAiBA,EAAM,mBAAmC,UAAdA,EAAM3R,OAAoBtB,IAC7EA,EAAQsT,aAAa,WAAW,YAChCtT,EAAQuT,UAAY,kDAAsDvT,EAAQuT,UAE1F,GAEA,CAAA7U,IAAA,gBAAAnB,MAGA,SAAc0V,EAAO1X,GAAG,IAAAoD,EAAA,KAEZnD,EAAMwD,KAAKpB,MAAXpC,EAER,QAA8B,IAAnByX,EAAMm0C,SAAjB,CAmCA,GAFApoD,KAAK6U,UAAUZ,EAAM1X,EAAE8O,QAEnB4I,EAAMa,QACN,IAA8D,IAA1Db,EAAMa,QAAQ9X,QAAQ,+BACtBgD,KAAK0T,qBAAqB,CAACpR,KAAK,0BAA2B2R,EAAO1X,EAAE8O,QACpE9O,EAAE8O,OAAOg9C,UAAUC,IAAI,gBACpB,IAAoE,IAAhEr0C,EAAMa,QAAQ9X,QAAQ,qCAE7BgD,KAAKpB,MAAM6T,UAASyzB,EAAAA,EAAAA,OACpB3pC,EAAE8O,OAAOkJ,UAAY/X,EAAE,6BACvB4G,YAAW,WACPzD,EAAK0U,kBAAkBJ,EAAM,WACjC,GAAG,UAEA,IAAuD,IAAnDA,EAAMa,QAAQ9X,QAAQ,wBAC7BgD,KAAKK,SAAS,CAAC4nD,eAAgB,EAAMC,iBAAkBj0C,EAAM,aAC7D1X,EAAE2C,uBACC,IAA0D,IAAtD+U,EAAMa,QAAQ9X,QAAQ,2BAC7BgD,KAAKpB,MAAM2pD,cAAct0C,EAAM,YAAcjU,KAAKpB,MAAMspD,iBAAmBj0C,EAAM,WAAa,GAC9F1X,EAAE2C,uBACC,IAA0D,IAAtD+U,EAAMa,QAAQ9X,QAAQ,2BAC7BgD,KAAK0T,qBAAqB,CAACpR,KAAK,qBAAuBtC,KAAKpB,MAAM4pD,QAAU,YAAcxoD,KAAKpB,MAAM4pD,QAAU,KAAMv0C,EAAO1X,EAAE8O,QAC9HrL,KAAKpB,MAAM2pD,cAAc,QACtB,IAAuD,IAAnDt0C,EAAMa,QAAQ9X,QAAQ,wBAC7BgD,KAAK0T,qBAAqB,CAACpR,KAAK,IAAK2R,EAAO1X,EAAE8O,QAC9C9O,EAAE8O,OAAOg9C,UAAUC,IAAI,gBACpB,IAAwD,IAApDr0C,EAAMa,QAAQ9X,QAAQ,yBAC7BgD,KAAKpB,MAAM6pD,iBACR,IAAoD,IAAhDx0C,EAAMa,QAAQ9X,QAAQ,qBAC7BgD,KAAKpB,MAAM8pD,eAAe,mBACvB,IAA2D,IAAvDz0C,EAAMa,QAAQ9X,QAAQ,4BAC7BgD,KAAK0T,qBAAqB,CAACpR,KAAK,GAAGyS,SAAU,uBAAwBd,EAAO1X,EAAE8O,QAC9E9O,EAAE8O,OAAOg9C,UAAUC,IAAI,gBACpB,IAAyD,IAArDr0C,EAAMa,QAAQ9X,QAAQ,0BAC7BgD,KAAK0T,qBAAqB,CAACpR,KAAK,2BAA4B2R,EAAO1X,EAAE8O,QACrE9O,EAAE8O,OAAOg9C,UAAUC,IAAI,gBACpB,IAAwD,IAApDr0C,EAAMa,QAAQ9X,QAAQ,yBAAiC,CAC9D,IAAMuT,EAAOquB,KAAK18B,MAAM+R,EAAM,cAC1B00C,EAAOnoD,SAASC,eAAe,gBAAgB8P,EAAS,IACxDo4C,EAAKN,UAAU5e,SAAS,SACxBltC,EAAE8O,OAAOu9C,UAAYr4C,EAAgB,UACrCo4C,EAAKN,UAAUr4C,OAAO,UAEtBzT,EAAE8O,OAAOu9C,UAAYr4C,EAAgB,UACrCo4C,EAAKN,UAAUC,IAAI,QAE3B,MAAO,IAAmD,IAA/Cr0C,EAAMa,QAAQ9X,QAAQ,qBAC7BgY,EAAAA,EAAAA,IAAYf,EAAOjU,WAChB,IAAyD,IAArDiU,EAAMa,QAAQ9X,QAAQ,0BAAkC,CAC/D,IAAMyO,EAAOjL,SAASC,eAAe,mBAAqBwT,EAAM,YAC5DxI,GAAsB,KAAdA,EAAKlN,OAA8B,IAAdkN,EAAKlN,OAClC0V,EAAM,gBAAkBxI,EAAKlN,MAC7ByB,KAAK0T,qBAAqB,CAACpR,KAAK,wBAAyB2R,EAAO1X,EAAE8O,SAElEY,MAAMzP,EAAE,qBAEhB,MAA0D,IAA/CyX,EAAMa,QAAQ9X,QAAQ,oBAC7BiY,EAAAA,EAAgB4zC,wBAAwB,YAAa,CAAC,CAAC,aAAgBrsD,EAAE,uBAAwB,IAAQyX,EAAMtQ,IAAKkT,MAAO5C,EAAM4C,MAAQ5C,EAAM4C,MAAQ,OAEvJ5B,EAAAA,EAAgB3E,UAAU,eAAe,CAAC2D,EAAOjU,KAAKpB,MAAM6T,WAC5DhR,QAAQC,IAAI,wBAA0BuS,EAAMa,UAK3B,QAArBvY,EAAE8O,OAAO8I,SAAuBF,EAAMvR,QAAmD,IAA1CuR,EAAMvR,MAAM1F,QAAQ,kBACnET,EAAE0G,gBApEN,KA/BA,CAGI,GAAIgR,EAAM3R,MAAsB,YAAd2R,EAAM3R,KAAoB,CACxC,GAA6B,kBAAzB2R,EAAM,gBAAqC,CAC3C,IAAIuF,EAAMhZ,SAASC,eAAe,kBAAkBwT,EAAM,YACtD1X,EAAE8O,OAAOmC,SACTgM,EAAIsvC,gBAAgB,YACpBtvC,EAAI1E,QAAU,SAACvY,GAAC,OAAKoD,EAAK+T,qBAAqB,CAACpR,KAAK,IAAK,CAAC,eAAe,UAAW,UAAY2R,EAAM,YAAa1X,EAAE8O,OAAO,GAE7HmO,EAAIlF,aAAa,WAAW,WAEpC,CACA,MACJ,CAGA,IAAMy0C,EAAiBxsD,EAAE8O,OAAO/C,QAAQ/L,EAAE8O,OAAOC,eAE3C09C,EAAW,CACb,eAAgBD,EAAex9C,aAAa,gBAC5C,UAAYw9C,EAAex9C,aAAa,YAGO,WAA/Cw9C,EAAex9C,aAAa,gBAC5BvL,KAAK0T,qBAAqB,CAACpR,KAAK,0BAA2B0mD,EAAWzsD,EAAE8O,QAClB,UAA/C09C,EAAex9C,aAAa,iBAA8E,WAA/Cw9C,EAAex9C,aAAa,iBAC9FvL,KAAK0T,qBAAqB,CAACpR,KAAK,IAAK0mD,EAAUzsD,EAAE8O,OAIzD,CA4EJ,GAAC,CAAA3L,IAAA,oBAAAnB,MAED,SAAkBiW,EAAWuZ,GACzB3qB,YAAW,WACP,IAAI6lD,EAAQzoD,SAASC,eAAe,OAAS+T,GAC7C,GAAIy0C,EAAO,CACP,IACItsD,EADAsV,EAAIg3C,EAAMv0C,uBAAuB,gBAAkBF,GAEvD,IAAK7X,EAAI,EAAGA,EAAIsV,EAAElV,OAAQJ,IACtBsV,EAAEtV,GAAGgY,WAAWC,YAAY3C,EAAEtV,GAEtC,CACJ,QAAqB,IAAZoxB,EAA0B,IAAMA,EAC7C,GAAC,CAAAruB,IAAA,uBAAAnB,MAED,SAAqB2W,EAAYjB,EAAO5I,GAAQ,IAAA1J,EAAA,KAC5C3B,KAAKpB,MAAM6T,UAASiB,EAAAA,EAAAA,IAAqBwB,EAAY,CAAC,kBAAmD,IAA7BjB,EAAM,mBAAqC,KAAOA,EAAM,mBAAqBmB,QAASnB,EAAM,gBAAiBjS,GAAKiS,EAAM,WAAYoB,eAA2C,IAAvBpB,EAAM,gBAAiC/T,MAAK,SAACI,GACxQ2T,EAAM,cACPtS,EAAK0S,kBAAkBJ,EAAM,YAG7B3T,EAAKA,KAAKslC,kBAAoBtlC,EAAKA,KAAKslC,iBAAmB,GAC3DjkC,EAAK/C,MAAM6T,SAAS,CAACnQ,KAAM,2BAA4BhC,KAAMA,EAAKA,KAAKslC,mBAGvEtlC,EAAKA,KAAK9D,GACVyY,EAAAA,EAAgBgC,kBAAkB,aAAc,CAAC,CAAC,QAAY3W,EAAKA,KAAK9D,KAGxE8D,EAAKA,KAAKunC,eACVlmC,EAAK/C,MAAMyoC,cAAcpzB,EAAM,WAAYtS,IAE3CA,EAAK/C,MAAMsqD,eAAe,CAAC,aAAc,IACzCvnD,EAAK/C,MAAMuqD,eAEnB,GACJ,GAAC,CAAAzpD,IAAA,cAAAnB,MAED,SAAY0V,GACJjU,KAAKpB,MAAMyc,cACXrb,KAAKpB,MAAMyc,cAAa,GAAM,EAEtC,GAAC,CAAA3b,IAAA,qBAAAnB,MAED,SAAmBwc,EAAWC,EAAWC,GACrC,GAAmC,GAA/Bjb,KAAKpB,MAAMspD,iBAAuB,CAElC,IAAI1uC,EAAMhZ,SAASC,eAAe,qBAAqBT,KAAKpB,MAAMspD,kBAC9DkB,EAAa5oD,SAASC,eAAe,OAAOT,KAAKpB,MAAMspD,kBAE3D,IAAK1uC,IAAQ4vC,EACT,OAIJ,IAAIC,EAAY7vC,EAAI8vC,YAAc,EAE9BC,EAAkBH,EAAW5sC,YAE7BgtC,EAAkBhwC,EAAI7E,WAAW80C,WAEhCD,EAAkBH,EAAaE,EAChC/vC,EAAI9S,MAAMgjD,MAAQ,KAAML,EAAY,IAAK,KAClCG,EAAkBH,EAAY,KACrC7vC,EAAI9S,MAAMijD,KAAQN,EAAY,GAAK,KAE3C,CACJ,GAAC,CAAA3pD,IAAA,oBAAAnB,MAED,WAAoB,IAAAyO,EAAA,KAEhBhN,KAAKpB,MAAMgrD,oBAAwE,IAArD5pD,KAAKpB,MAAMgzB,IAAS,IAAE50B,QAAQ,mBAElC,GAAtBgD,KAAK4T,cACL5T,KAAKpB,MAAMirD,kBAAiB,GAE5B7pD,KAAKpB,MAAMirD,kBAAiB,GAG5B7pD,KAAK2nC,UAAU5qC,OAAS,GACxBiD,KAAK2nC,UAAUhqC,SAAQ,SAAC+F,GACpBsJ,EAAKpO,MAAMkrD,UAAUpmD,GACrBsJ,EAAKpO,MAAMyc,cAAa,GAAO,EACnC,GAER,GAAC,CAAA3b,IAAA,0BAAAnB,MAED,SAAwBwuB,GACpB,IAAMg9B,EAAWh9B,EAAIzW,MAAM,KAC3B,OAAwB,IAApByzC,EAAShtD,OAAqBgtD,EAAS,GAEvCA,EAAS,GACTA,EACKh9C,MAAM,GACNT,KAAI,SAAA09C,GAAI,OAAIA,EAAK,GAAGl9C,cAAgBk9C,EAAKj9C,MAAM,EAAE,IACjDb,KAAK,GAElB,GAAC,CAAAxM,IAAA,2BAAAnB,MAED,SAAyBwuB,GAAK,IAAAlR,EAAA,KACpBnV,EAAQ,CAAC,EASf,OARAqmB,EAAIzW,MAAM,KAAK3Y,SAAQ,SAAAssD,GACnB,IAAAC,EAA0BD,EAAG3zC,MAAM,KAAI6zC,GAAAvsD,EAAAA,EAAAA,GAAAssD,EAAA,GAAhCjjD,EAAQkjD,EAAA,GAAE5rD,EAAK4rD,EAAA,GACtB,GAAKljD,EAAL,CAEA,IAAMmjD,EAAoBvuC,EAAKwuC,wBAAwBpjD,EAAS+M,QAChEtN,EAAM0jD,GAAqB7rD,EAAMyV,MAHZ,CAIzB,IAEOtN,CACX,GAAC,CAAAhH,IAAA,SAAAnB,MAED,WAAS,IAAA+rD,EAAA,KAIDC,GAFUvqD,KAAKpB,MAAXpC,GAEc,GAEtB,IAAKwD,KAAKpB,MAAMgzB,IAAS,KAAsC,iBAA1B5xB,KAAKpB,MAAMgzB,IAAS,IACrD,OAAOhwB,EAAAA,cAACA,EAAAA,SAAc,MAG1B,IAAI4oD,GAAWtoD,EAAAA,EAAAA,IAAMlC,KAAKpB,MAAMgzB,IAAS,IAAG,CAExCzvB,QAAS,SAAAC,GAEL,GAAIA,EAAQC,QAAS,CAEjB,IAAIqT,EAAY9Y,OAAO+Y,OAAO,CAAC,EAAGvT,EAAQC,SAE1C,GAAID,EAAQC,QAAQK,MAAO,CAYvB,GAXAN,EAAQC,QAAQP,UAAYM,EAAQC,QAAQK,OAEc,IAAtDN,EAAQC,QAAQP,UAAU9E,QAAQ,gBAAyBoO,SAASk/C,EAAK1rD,MAAMspD,mBAAqB98C,SAAShJ,EAAQC,QAAQL,GAAGG,QAAQ,OAAO,OAC/IC,EAAQC,QAAQP,WAAa,yBAGyB,IAAtDM,EAAQC,QAAQP,UAAU9E,QAAQ,iBAClCoF,EAAQC,QAAQP,WAAa,2BAA6BwoD,EAAK1rD,MAAMoD,KAIf,IAAtDI,EAAQC,QAAQP,UAAU9E,QAAQ,gBAAyBstD,EAAK1rD,MAAMoD,GAAK,EACvEsoD,EAAK1rD,MAAMgzB,IAAU,KAAI,GAAK04B,EAAK1rD,MAAMgzB,IAAU,MAAK04B,EAAK1rD,MAAMgzB,IAAW,OAAwB,GAAnB24B,IACnFnoD,EAAQC,QAAQP,WAAa,oBAC7ByoD,GAAkB,QAEnB,GAAID,EAAK1rD,MAAM6rD,aAAqE,IAAvDroD,EAAQC,QAAQP,UAAU9E,QAAQ,gBAClE,OAAO4E,EAAAA,cAAA,OAAKE,UAAU,kBAAkB4oD,OAAQJ,EAAKnC,YAAaxkD,IAAK2mD,EAAK1rD,MAAM6rD,WAAY9yC,IAAI,GAAGd,MAAM,YAGxGzU,EAAQC,QAAQK,KAC3B,CAMA,GAJIN,EAAQC,QAAQyS,gBACT1S,EAAQC,QAAQyS,QAGvB1S,EAAQe,MAAyB,QAAjBf,EAAQe,MAMxB,GAJIf,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,aAGvB,IAAxCtE,EAAQC,QAAQ,oBACvB,OAAOT,EAAAA,cAAA,OAAAe,EAAAA,EAAAA,GAAA,GAASP,EAAQC,QAAO,CAAEqoD,OAAQJ,EAAKnC,YAAa5lD,QAAS,SAAChG,GAAC,OAAK+tD,EAAK72C,cAAciC,EAAWnZ,EAAE,UAG5G,GAAI6F,EAAQe,MAAyB,WAAjBf,EAAQe,MAC/B,GAAIuS,EAAUZ,QAMV,OAJI1S,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAGnE9E,EAAAA,cAAA,UAAAe,EAAAA,EAAAA,GAAA,GAAYP,EAAQC,QAAO,CAAEE,QAAS,SAAChG,GAAC,OAAK+tD,EAAK72C,cAAciC,EAAWnZ,EAAE,KAAIsG,EAAAA,EAAAA,IAAWT,EAAQU,gBAE5G,GAAIV,EAAQe,MAAyB,MAAjBf,EAAQe,KAAc,CAC7C,GAAIuS,EAAUZ,QAIV,OAHI1S,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAEnE9E,EAAAA,cAAA,KAAAe,EAAAA,EAAAA,GAAA,GAAOP,EAAQC,QAAO,CAAE0U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB4qD,EAAK72C,cAAciC,EAAWnZ,EAAQ,EAAIgG,QAAS,SAAChG,GAAC,OAAK+tD,EAAK72C,cAAciC,EAAWnZ,EAAE,KAAIsG,EAAAA,EAAAA,IAAWT,EAAQU,WAQzL,GAAIwnD,EAAK1rD,MAAMgX,WAAqC,UAAxB00C,EAAK1rD,MAAMgX,WAAyB00C,EAAK1rD,MAAMiX,YAAcH,EAAUrK,QAA8B,UAApBqK,EAAUrK,QAAsBjJ,EAAQC,QAAQyT,KAAM,CAC/J,IAAMA,EAAO1T,EAAQC,QAAQyT,KACvBC,EAAajW,OAAOsK,OAAO4L,SAASC,KAE1C,GADmBH,EAAKI,WAAW,UAADC,OAAWJ,KAAiBD,EAAKI,WAAW,WAADC,OAAYJ,IAMrF,OAJI3T,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAE1EtE,EAAQC,QAAQgJ,OAAS,OACrBi/C,EAAK1rD,MAAMwX,SACJxU,EAAAA,cAAA,KAAAe,EAAAA,EAAAA,GAAA,GAAOP,EAAQC,QAAO,CAAEE,QAAS,SAAChG,GAAC,OAAK+tD,EAAK1rD,MAAMyX,gBAAgB,KAAGxT,EAAAA,EAAAA,IAAWT,EAAQU,WAEzFlB,EAAAA,cAAA,IAAOQ,EAAQC,SAAUQ,EAAAA,EAAAA,IAAWT,EAAQU,UAG/D,CAER,MAAO,GAAIV,EAAQe,MAAyB,WAAjBf,EAAQe,MAE/B,GAAIuS,EAAU0yC,SAMV,OAJIhmD,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAGnE9E,EAAAA,cAAA,UAAAe,EAAAA,EAAAA,GAAA,GAAYP,EAAQC,QAAO,CAAEwD,SAAU,SAACtJ,GAAC,OAAK+tD,EAAK72C,cAAciC,EAAWnZ,EAAE,KAAIsG,EAAAA,EAAAA,IAAWT,EAAQU,eAG7G,IAAIV,EAAQe,MAAyB,iBAAjBf,EAAQe,KAC/B,OAAOvB,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAACkmD,GAAYnlD,EAAAA,EAAAA,GAAA,GAAKP,EAAQC,QAAO,CAAEglC,cAAe,SAACrlC,GAAE,OAAKsoD,EAAK1rD,MAAMyoC,cAAcrlC,EAAIsoD,EAAK,MACzH,GAAIloD,EAAQe,MAAyB,iBAAjBf,EAAQe,KAC/B,OAAOvB,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAACimD,GAAYllD,EAAAA,EAAAA,GAAA,GAAKP,EAAQC,QAAO,CAAEwoD,cAAezoD,EAAQU,aACvF,GAAIV,EAAQe,MAAyB,UAAjBf,EAAQe,KAAkB,CAEjD,GAAIf,EAAQC,QAAQC,MAAgC,YAAxBF,EAAQC,QAAQC,MAAsBoT,EAAU0yC,SAMxE,OAJIhmD,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAGnE9E,EAAAA,cAAA,SAAAe,EAAAA,EAAAA,GAAA,CAAOL,KAAK,YAAeF,EAAQC,QAAO,CAAEwD,SAAU,SAACtJ,GAAC,OAAK+tD,EAAK72C,cAAciC,EAAWnZ,EAAE,KAEjG,GAAI6F,EAAQC,QAAQC,MAAgC,SAAxBF,EAAQC,QAAQC,KAW/C,OATIF,EAAQC,QAAQqE,QAChBtE,EAAQC,QAAQqE,MAAQ4jD,EAAKK,yBAAyBvoD,EAAQC,QAAQqE,QAGtEtE,EAAQC,QAAQmL,UAChBpL,EAAQC,QAAQkL,gBAAiB,SAC1BnL,EAAQC,QAAQmL,SAGpB5L,EAAAA,cAAA,SAAAe,EAAAA,EAAAA,GAAA,CAAOL,KAAK,SAAYF,EAAQC,SAG/C,MAAO,GAAID,EAAQe,MAAyB,WAAjBf,EAAQe,MAAqBf,EAAQC,QAAQ,mBAAoB,CAExF,IAAKD,EAAQC,QAAQ,mBAAoB,CAIrC,GAA6B,GAAzBioD,EAAKzoD,MAAMmmD,WACX,OAAOpmD,EAAAA,cAACA,EAAAA,SAAc,MAG1B0oD,EAAKjqD,SAAS,CAAC2nD,YAAa,GAChC,CAKA,OAHAhzC,EAAAA,EAAAA,IAAY5S,EAASkoD,GAGd1oD,EAAAA,cAACA,EAAAA,SAAc,KAC1B,EACJ,CACJ,IAGJ,OAAOA,EAAAA,cAACA,EAAAA,SAAc,KAAE5B,KAAK6B,MAAMomD,eAAiBrmD,EAAAA,cAAClD,EAAAA,EAAS,CAACosD,YAAa,SAAC72C,GAAWq2C,EAAK52C,qBAAqB,CAACpR,KAAK,qBAAuBgoD,EAAK1rD,MAAM4pD,QAAU,YAAc8B,EAAK1rD,MAAM4pD,QAAU,KAAM5pB,KAAK18B,MAAM+R,GAAQ,MAAMq2C,EAAKjqD,SAAS,CAAC4nD,eAAgB,IAAQqC,EAAK1rD,MAAM2pD,cAAc,EAAG,EAAGwC,aAAc,SAACxuD,GAAO+tD,EAAKjqD,SAAS,CAAC4nD,eAAgB,GAAO,EAAG+C,YAAa,SAACzuD,GAAO+tD,EAAKjqD,SAAS,CAAC4nD,eAAgB,GAAO,EAAGhpD,OAAQ,SAAC1C,GAAO+tD,EAAKjqD,SAAS,CAAC4nD,eAAgB,GAAO,EAAGhoD,QAAS,6BAA6BD,KAAK6B,MAAMqmD,kBAAoBloD,KAAKpB,MAAM4pD,QAAU,YAAcxoD,KAAKpB,MAAM4pD,QAAU,MAA+B,GAArBxoD,KAAKpB,MAAMqsD,QAAkBjrD,KAAKpB,MAAMoD,IAAMhC,KAAKpB,MAAMssD,OAAStpD,EAAAA,cAAA,OAAKI,GAAG,oBAAoBF,UAAU,wEAAuEF,EAAAA,cAAA,QAAME,UAAU,gEAAgE9B,KAAKpB,MAAMusD,WAAwBX,EAC/4B,IAAC,CA7aY,CAAS5mD,EAAAA,eAgb1B,GAAeC,EAAAA,EAAAA,IAAf,EAAiCqP,EAAAA,EAAAA,KAAAA,CAAU60C,svBCvb3C,IAGMqD,EAAgB,SAAAzsD,GAUlB,SAAAysD,EAAYxsD,GAAO,IAAAC,QAgBgC,OAhBhCC,EAAAA,EAAAA,GAAA,KAAAssD,KACf,OAAAA,IAAA,CAAMxsD,gBAANC,iFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QATT,CACJwsD,YAAY,EACZ3/C,MAAO,GACP4/C,WAAW,EACXC,eAAgB,CAAC,EACjBC,qBAAqB,IAMrB3sD,EAAK4sD,aAAe7pD,EAAAA,YAGpB/C,EAAK6sD,eAAiB7sD,EAAK6sD,eAAe3gD,KAAIlM,GAC9CA,EAAK8sD,eAAiB9sD,EAAK8sD,eAAe5gD,KAAIlM,GAC9CA,EAAK+sD,WAAa/sD,EAAK+sD,WAAW7gD,KAAIlM,GACtCA,EAAKgtD,YAAchtD,EAAKgtD,YAAY9gD,KAAIlM,GACxCA,EAAKitD,OAASjtD,EAAKitD,OAAO/gD,KAAIlM,GAC9BA,EAAKktD,QAAUltD,EAAKktD,QAAQhhD,KAAIlM,GAGhCA,EAAKmtD,aAAentD,EAAKmtD,aAAajhD,KAAIlM,GAC1CA,EAAKotD,YAAcptD,EAAKotD,YAAYlhD,KAAIlM,GACxCA,EAAKqtD,YAAcrtD,EAAKqtD,YAAYnhD,KAAIlM,GAAOA,CACnD,CAAC,OAAAW,EAAAA,EAAAA,GAAA4rD,EAAAzsD,IAAAc,EAAAA,EAAAA,GAAA2rD,EAAA,EAAA1rD,IAAA,eAAAnB,MAED,SAAamN,GAAO,IAAA/L,EAAA,KACRnD,EAAMwD,KAAKpB,MAAXpC,EAEFmP,EAAW,IAAIC,OAAO,SAAa5L,KAAKpB,MAAMutD,YAAYtsD,IAAI,SAAW,KAAK,KAEhFgM,EAAe,GACnBH,EAAM/N,SAAQ,SAAAmO,GAEJH,EAASI,KAAKD,EAAKxJ,OAASqJ,EAASI,KAAKD,EAAK3I,OACjD0I,EAAavO,KAAKwO,EAAK3I,KAAO,KAAO3G,EAAE,wBAGvCsP,EAAKE,KAAOrM,EAAKf,MAAMutD,YAAYtsD,IAAI,OACvCgM,EAAavO,KAAKwO,EAAK3I,KAAO,KAAM3G,EAAE,oBAE9C,IAEIqP,EAAa9O,OAAS,EACtBkP,MAAMJ,EAAaK,KAAK,OAExBlM,KAAKK,SAAS,CACV,MAASqL,GAGrB,GAAC,CAAAhM,IAAA,qBAAAnB,MAED,SAAmBwc,EAAWC,GACtBhb,KAAK6B,MAAM6J,MAAM3O,OAAS,GAA6B,GAAxBiD,KAAK6B,MAAMypD,WAC1CtrD,KAAKisD,aAEb,GAAC,CAAAvsD,IAAA,cAAAnB,OAAA6tD,GAAAloD,EAAAA,EAAAA,GAAAg2B,IAAAA,MAED,SAAAmyB,IAAA,IAAAC,EAAA3qD,EAAA,YAAAu4B,IAAAA,MAAA,SAAAqyB,GAAA,cAAAA,EAAA7hD,KAAA6hD,EAAAluD,MAAA,OAKO,OAJH2B,KAAKK,SAAS,CAAEkrD,eAAgB,CAAC,EAAGD,WAAW,IACzCgB,EAAW,GACjBtsD,KAAK6B,MAAM6J,MAAM/N,SAAQ,SAAAmO,GACrBwgD,EAAShvD,KAAKqE,EAAKuqD,YAAYpgD,GACnC,IAAGygD,EAAA7hD,KAAA,EAAA6hD,EAAAluD,KAAA,EAEO2F,QAAQwoD,IAAIF,GAAS,OAC3BtsD,KAAKK,SAAS,CAAEmrD,qBAAqB,EAAMF,WAAW,EAAQ5/C,MAAQ,KAAK6gD,EAAAluD,KAAA,eAAAkuD,EAAA7hD,KAAA,EAAA6hD,EAAA,SAG3EvsD,KAAKK,SAAS,CAAEmrD,qBAAqB,EAAMF,WAAW,EAAQ5/C,MAAQ,KAAM,wBAAA6gD,EAAApnC,OAAA,GAAAknC,EAAA,kBAEnF,WAbgB,OAAAD,EAAA7uD,MAAC,KAADH,UAAA,KAAAsC,IAAA,cAAAnB,MAejB,SAAYuN,GAAM,IAAAkB,EAAA,KACNxQ,EAAMwD,KAAKpB,MAAXpC,EAER,OAAO,IAAIwH,SAAQ,SAACC,EAASy4B,GACzB,IAAI+vB,EAAM,IAAIl5B,eAERkL,EAAW,IAAIZ,SACrBY,EAASnC,OAAO,QAASxwB,EAAMA,EAAK3I,MAEpCspD,EAAIC,OAAOpsC,iBAAiB,YAAY,SAAA/gB,GAChCA,EAAMotD,mBACIxvD,EAAA,GAAQ6P,EAAKnL,MAAM0pD,gBACxBz/C,EAAK3I,MAAQ,CACdtB,MAAO,UACP+qD,WAAartD,EAAMstD,OAASttD,EAAMutD,MAAS,KAE/C9/C,EAAKpO,MAAMmuD,SAASvwD,EAAE,kBAAmB,IAAMmxB,KAAKgD,MAAOpxB,EAAMstD,OAASttD,EAAMutD,MAAS,KAAO,KAExG,IAEAL,EAAIC,OAAOpsC,iBAAiB,QAAQ,SAAA/gB,GACtBpC,EAAA,GAAQ6P,EAAKnL,MAAM0pD,gBACxBz/C,EAAK3I,MAAQ,CAAEtB,MAAO,OAAQ+qD,WAAY,KAC/C5/C,EAAKpO,MAAMmuD,SAASvwD,EAAE,mBAC1B,IAEAiwD,EAAIlhC,OAAS,WACT,IAAIoI,EAASiL,KAAK18B,MAAMuqD,EAAItsD,UAC5B,GAAIwzB,GAAUA,EAAOzqB,OAAyB,QAAhByqB,EAAOzqB,MAC7ByqB,EAAOq5B,UACPhgD,EAAKpO,MAAMmuD,SAASp5B,EAAOq5B,WAE3BhgD,EAAKpO,MAAMmuD,SAASvwD,EAAE,4BAM1B,GAHAwQ,EAAKpO,MAAMmuD,SAASvwD,EAAE,mBAGlBwQ,EAAKpO,MAAMutD,YAAY//C,IAAI,iBAAmBY,EAAKpO,MAAMutD,YAAYtsD,IAAI,gBAAiB,CAC1F,IAAMotD,EAAW,CACbjrD,GAAI2xB,EAAOgW,SAAWrZ,KAAKC,MAC3BqZ,cAAejW,EAAOiW,eAAiB,GACvCzmC,KAAM2I,EAAK3I,KACX6I,KAAMF,EAAKE,KACX1J,KAAMwJ,EAAKxJ,KACX4qD,aAAcphD,GAIdA,EAAKxJ,KAAK4T,WAAW,YACrB+2C,EAASE,WAAaC,IAAIC,gBAAgBvhD,IAG1CkB,EAAKpO,MAAM0uD,eACXtgD,EAAKpO,MAAM0uD,cAAcL,EAEjC,MACIjgD,EAAKpO,MAAM2uD,eAGnBtpD,EAAQwoD,EACZ,EAEAA,EAAIC,OAAOpsC,iBAAiB,SAAS,SAAA/gB,GACjC,IAAMiuD,EAAIrwD,EAAA,GAAQ6P,EAAKnL,MAAM0pD,gBAC7BiC,EAAK1hD,EAAK3I,MAAQ,CAAEtB,MAAO,QAAS+qD,WAAY,GAChD5/C,EAAK3M,SAAS,CAAEkrD,eAAgBiC,IAChC9wB,EAAO+vB,EACX,IAEAA,EAAIj5B,KAAK,OAAQxmB,EAAKpO,MAAM6uD,SAAW,oBAAsBzgD,EAAKpO,MAAM6mC,QAAU,IAAMz4B,EAAKpO,MAAMsmC,MACnGunB,EAAI54B,KAAK4K,EACb,GACJ,GAAC,CAAA/+B,IAAA,iBAAAnB,MAED,WACQyB,KAAK6B,MAAMypD,WACftrD,KAAKyrD,aAAarzC,QAAQs1C,OAC9B,GAAC,CAAAhuD,IAAA,iBAAAnB,MAED,SAAeqQ,GACX,IAAMlD,EAAQkD,EAAIvD,OAAOK,MACnBiiD,EAAQ3tD,KAAK4tD,gBAAgBliD,GACnC1L,KAAKgsD,aAAa2B,EACtB,GAAC,CAAAjuD,IAAA,aAAAnB,MAED,SAAWgB,GACPA,EAAM0D,iBACFjD,KAAK6B,MAAMypD,WAEXtrD,KAAKpB,MAAMivD,QACX7tD,KAAKpB,MAAMivD,QAAO,EAE1B,GAAC,CAAAnuD,IAAA,oBAAAnB,MAED,WAAoB,IAAAsd,EAAA,KAChBzY,YAAW,WACHyY,EAAKjd,MAAMkvD,SAAS11C,UACpByD,EAAKjd,MAAMkvD,SAAS11C,QAAQ21C,WAAalyC,EAAK+vC,WAC9C/vC,EAAKjd,MAAMkvD,SAAS11C,QAAQ41C,YAAcnyC,EAAKgwC,YAC/ChwC,EAAKjd,MAAMkvD,SAAS11C,QAAQ61C,OAASpyC,EAAKiwC,OAC1CtrD,SAAS8f,iBAAiB,QAASzE,EAAKkwC,SACxC92C,EAAAA,EAAgBmE,aAAalK,YAAY,aAAc2M,EAAK6vC,gBAEpE,GAAG,IACP,GAAC,CAAAhsD,IAAA,uBAAAnB,MAED,WACQyB,KAAKpB,MAAMkvD,SAAS11C,UACpBpY,KAAKpB,MAAMkvD,SAAS11C,QAAQ21C,WAAa,KACzC/tD,KAAKpB,MAAMkvD,SAAS11C,QAAQ41C,YAAc,KAC1ChuD,KAAKpB,MAAMkvD,SAAS11C,QAAQ61C,OAAS,MAEzCh5C,EAAAA,EAAgBmE,aAAa1J,eAAe,aAAc1P,KAAK0rD,gBAC/DlrD,SAASkgB,oBAAoB,QAAS1gB,KAAK+rD,QAC/C,GAAC,CAAArsD,IAAA,UAAAnB,MAED,SAAQhC,GACJ,IAAI6/B,EAAQ7/B,GAAKA,EAAE2xD,eACf3xD,EAAE2xD,cAAc9xB,MAGpB,GAAIA,GAASA,EAAMr/B,OAAQ,CAEvB,IADA,IAAM4wD,EAAQ,GACLhxD,EAAI,EAAGA,EAAIy/B,EAAMr/B,OAAQJ,IAAK,CACnC,IAAImP,EAAOswB,EAAMz/B,GAAGwxD,WAAa/xB,EAAMz/B,GAAGwxD,YACtCriD,GACA6hD,EAAMrwD,KAAKwO,EAEnB,CAEI6hD,EAAM5wD,OAAS,GACfiD,KAAKgsD,aAAa2B,EAE1B,CACJ,GAAC,CAAAjuD,IAAA,cAAAnB,MAED,SAAYgB,GACJS,KAAKpB,MAAMivD,QACX7tD,KAAKpB,MAAMivD,QAAO,EAE1B,GAAC,CAAAnuD,IAAA,SAAAnB,MAED,SAAOgB,GAEH,GADAA,EAAM0D,kBACFjD,KAAK6B,MAAMypD,UAAf,CACA,IAAM5/C,EAAQnM,EAAM6uD,aAAa1iD,MAC3BiiD,EAAQ3tD,KAAK4tD,gBAAgBliD,GAEnC1L,KAAKgsD,aAAa2B,GAEd3tD,KAAKpB,MAAMivD,QACX7tD,KAAKpB,MAAMivD,QAAO,EAPU,CASpC,GAAC,CAAAnuD,IAAA,kBAAAnB,MAED,SAAgBkN,GAEZ,IADA,IAAMkiD,EAAQ,GACLhxD,EAAI,EAAGA,EAAI8O,EAAK1O,OAAQJ,IAC7BgxD,EAAMrwD,KAAKmO,EAAK/H,KAAK/G,IAEzB,OAAOgxD,CACX,GAAC,CAAAjuD,IAAA,SAAAnB,MAED,WAAS,IAAA+rD,EAAA,KACL,GAAItqD,KAAKpB,MAAMQ,KACX,OACIwC,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cAAA,SAAOiE,SAAU7F,KAAK2rD,eAAgBzlD,IAAKlG,KAAKyrD,aAAczpD,GAAG,aAAaM,KAAK,OAAOa,KAAK,UAAU+M,UAAWlQ,KAAKpB,MAAMutD,YAAY//C,IAAI,mBAAoBtK,UAAU,WAC7KF,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB4qD,EAAKoB,gBAAsB,EAAG5pD,UAAU,gBAAgBS,QAASvC,KAAK0rD,gBAAgB9pD,EAAAA,cAAA,KAAGE,UAAU,0DAAyD,MAIrO,KA9LC,IAAAsqD,CA8LA,CAzPiB,CAASxoD,EAAAA,eA4P/B,GAAeC,EAAAA,EAAAA,IAAf,CAAiCunD,oJCjQwB,QAiFzD,EA/Ec,SAAAzsD,GAOV,SAAA0vD,EAAYzvD,GAAO,IAAAC,QAGwC,OAHxCC,EAAAA,EAAAA,GAAA,KAAAuvD,KACf,OAAAA,IAAA,CAAMzvD,gBAANC,iFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QANT,CACJyvD,WAAa,KACbC,sBAAwB,OAKxB1vD,EAAK2vD,SAAW3vD,EAAK2vD,SAASzjD,KAAIlM,GAClCA,EAAK4vD,gBAAkB5vD,EAAK4vD,gBAAgB1jD,KAAIlM,GAAOA,CAC3D,CAAC,OAAAW,EAAAA,EAAAA,GAAA6uD,EAAA1vD,IAAAc,EAAAA,EAAAA,GAAA4uD,EAAA,EAAA3uD,IAAA,WAAAnB,MAED,SAASmwD,GAED1uD,KAAK6B,MAAMysD,YACXnlC,aAAanpB,KAAK6B,MAAMysD,YAG5BtuD,KAAKpB,MAAMsqD,iBACXlpD,KAAKK,SAAS,CAAC,WAAc+C,WAAWpD,KAAKwuD,SAASxuD,KAAKpB,MAAM+vD,eACrE,GAAC,CAAAjvD,IAAA,kBAAAnB,MAED,WAEQyB,KAAK6B,MAAM0sD,uBACXplC,aAAanpB,KAAK6B,MAAM0sD,uBAG5BvuD,KAAKpB,MAAMuqD,eACXnpD,KAAKK,SAAS,CAAC,sBAAyB+C,WAAWpD,KAAKyuD,gBAAiBzuD,KAAKpB,MAAM+vD,eACxF,GAAC,CAAAjvD,IAAA,oBAAAnB,MAED,WACIyB,KAAKwuD,WACLxuD,KAAKyuD,iBACT,GAAC,CAAA/uD,IAAA,qBAAAnB,MAED,SAAmBwc,EAAWC,GAEtBhb,KAAKpB,MAAM+0B,QAAUqV,EAAAA,IACrBhpC,KAAKpB,MAAMgwD,YAAchmB,EAAAA,IACzB5oC,KAAKpB,MAAMgwD,YAAc/lB,EAAAA,IACzB7oC,KAAKpB,MAAMgwD,YAAcjmB,EAAAA,IAErB3oC,KAAK6B,MAAMysD,aACXnlC,aAAanpB,KAAK6B,MAAMysD,YACxBtuD,KAAK6B,MAAMysD,WAAa,MAE5Br5C,EAAAA,EAAgBgC,kBAAkB,aAAc,KACxCjX,KAAK6B,MAAMysD,YACnBtuD,KAAKwuD,WAGJxuD,KAAKpB,MAAMgwD,YAAc7zC,EAAU6zC,YAAc5uD,KAAKpB,MAAM+0B,QAAU5Y,EAAU4Y,QAAY3zB,KAAKpB,MAAMiwD,WAAa9zC,EAAU8zC,WAAe9zC,EAAU+zC,WAAa9uD,KAAKpB,MAAMkwD,WAChL9uD,KAAKyuD,kBAGJzuD,KAAKpB,MAAM+0B,QAAUqV,EAAAA,IAAsBhpC,KAAKpB,MAAM+0B,QAAUmV,EAAAA,IAAmB9oC,KAAKpB,MAAM+0B,QAAUo7B,EAAAA,IAAsB/uD,KAAKpB,MAAMgwD,YAAchmB,EAAAA,KAA2B5oC,KAAK6B,MAAM0sD,uBAAiD,GAAxBvuD,KAAKpB,MAAMkwD,YAClO3lC,aAAanpB,KAAK6B,MAAM0sD,uBACxBvuD,KAAK6B,MAAM0sD,sBAAwB,KAE3C,GAAC,CAAA7uD,IAAA,uBAAAnB,MAED,WACQyB,KAAK6B,MAAMysD,YACXnlC,aAAanpB,KAAK6B,MAAMysD,YAGxBtuD,KAAK6B,MAAM0sD,uBACXplC,aAAanpB,KAAK6B,MAAM0sD,sBAEhC,GAAC,CAAA7uD,IAAA,SAAAnB,MAED,WACI,OAAO,IACX,IAAC,CA5ES,CAASqF,EAAAA,0KCCG,IASpBorD,GAAU57C,GAPfF,EAAAA,EAAAA,KAAQ,SAACG,GACN,MAAO,CACH47C,KAAM57C,EAAMC,WAAWzT,IAAI,YAC3BqvD,QAAU77C,EAAMC,WAAWzT,IAAI,WAEvC,IAAEuT,EAAAG,EAAA,SAAA5U,GAIE,SAAAqwD,EAAYpwD,GAAO,IAAAC,QAG4C,OAH5CC,EAAAA,EAAAA,GAAA,KAAAkwD,KACf,OAAAA,IAAA,CAAMpwD,iBAANC,iFACK4U,cAAgB5U,EAAK4U,cAAc1I,KAAIlM,GAC5CA,EAAKswD,kBAAoBtwD,EAAKswD,kBAAkBpkD,KAAIlM,GAAOA,CAC/D,CAAC,OAAAW,EAAAA,EAAAA,GAAAwvD,EAAArwD,IAAAc,EAAAA,EAAAA,GAAAuvD,EAAA,EAAAtvD,IAAA,gBAAAnB,MAED,SAAc0V,GAAO,IAAAtU,EAAA,KACbsU,EAAMa,UACe,8BAAjBb,EAAMa,SACNmwB,EAAAA,EAAAA,IAAW,CAACjjC,GAAKhC,KAAKpB,MAAMqwD,KAAKpvD,IAAI,MAAOqlC,KAAMllC,KAAKpB,MAAMqwD,KAAKpvD,IAAI,QAASyC,KAAO2R,EAAM,aAAa/T,MAAK,SAACC,GAC3GR,EAAKf,MAAMuqD,cACf,IACwB,uCAAjBl1C,EAAMa,QACbG,EAAAA,EAAgBgC,kBAAkB,iBAAiB,CAAC,CAAC,GAAOjX,KAAKpB,MAAMswD,QAAQrvD,IAAI,wBACvB,IAArDoU,EAAMa,QAAQ9X,QAAQ,2BAC7BqoC,EAAAA,EAAAA,IAAsB,CAACrjC,GAAKhC,KAAKpB,MAAMqwD,KAAKpvD,IAAI,MAAOqlC,KAAMllC,KAAKpB,MAAMqwD,KAAKpvD,IAAI,UAAUK,MAAK,SAACC,GAC7FR,EAAKf,MAAMuqD,cACf,IAEAl0C,EAAAA,EAAgB3E,UAAU,cAAc,CAAC2D,EAAOjU,KAAKpB,MAAM6T,WAGvE,GAAC,CAAA/S,IAAA,oBAAAnB,MAED,WACI,GAAKyB,KAAKpB,MAAMswD,QAAQ9iD,IAAI,mBAA5B,CAIA,IAAMgjD,EACFpvD,KAAKpB,MAAMywD,KACXrvD,KAAKpB,MAAMywD,KAAOrvD,KAAKpB,MAAMswD,QAAQrvD,IAAI,qBACd,IAA3BG,KAAKpB,MAAM0wD,YAETC,EAAuB,SAACluD,GAC1B,IAAMmuD,EAAiBhvD,SAASC,eAAe,yBAC3C+uD,GACAA,EAAenH,UAAUhnD,EAAO,SAAW,OAAO,OAE1D,EAEI+tD,EACAxvD,EAAAA,EAAMC,IAAI,GAADsW,OAAIrW,OAAOC,QAAkB,SAAC,yBAAAoW,OAAwBnW,KAAKpB,MAAMqwD,KAAKpvD,IAAI,MAAK,sBACnFK,MAAK,SAAAC,GACFovD,EAAqBpvD,EAASG,KAAKmvD,SACvC,IAEJF,GAAqB,EApBzB,CAsBJ,GAAC,CAAA7vD,IAAA,oBAAAnB,MAGD,WACIyB,KAAKmvD,mBACT,GAAC,CAAAzvD,IAAA,qBAAAnB,MAED,SAAmBwc,EAAWC,EAAWC,GACrCjb,KAAKmvD,mBACT,GAAC,CAAAzvD,IAAA,SAAAnB,MAED,WAAS,IAAAoD,EAAA,KACJ,OAAOO,EAAAA,EAAAA,IAAMlC,KAAKpB,MAAM+0B,OAAQ,CAC7BxxB,QAAS,SAAAC,GACL,GAAIA,EAAQC,SAAWD,EAAQC,QAAQyS,SAC/B1S,EAAQe,OAAyB,KAAhBf,EAAQe,MAA+B,KAAhBf,EAAQe,MAAc,CAE9D,IAAIuS,EAAY9Y,OAAO+Y,OAAO,CAAC,EAAGvT,EAAQC,SAa1C,OAXID,EAAQC,QAAQK,QAChBN,EAAQC,QAAQP,UAAYM,EAAQC,QAAQK,aACrCN,EAAQC,QAAQK,OAGvBN,EAAQC,QAAQyS,gBACT1S,EAAQC,QAAQyS,QAGdlT,EAAAA,cAAA,KAAAe,EAAAA,EAAAA,GAAA,GAAOP,EAAQC,QAAO,CAAEE,QAAS,SAAChG,GAAC,OAAKoF,EAAK8R,cAAciC,EAAU,KAAI7S,EAAAA,EAAAA,IAAWT,EAAQU,UAG7G,CAER,GAER,IAAC,CAxFH,CAEuBc,EAAAA,iBAAa2P,GAyFtC,8JCtG8C,SA0C9C,GAxCqB,SAAA5U,GAEjB,SAAA+wD,EAAY9wD,GAAO,OAAAE,EAAAA,EAAAA,GAAA,KAAA4wD,KAAA,OAAAA,IAAA,CACT9wD,uGACV,CAAC,OAAAY,EAAAA,EAAAA,GAAAkwD,EAAA/wD,IAAAc,EAAAA,EAAAA,GAAAiwD,EAAA,EAAAhwD,IAAA,oBAAAnB,MAED,WACI,IAAIib,EAAMhZ,SAASC,eAAe,mBAC9B+Y,IACAA,EAAIkC,UAAYlC,EAAImC,aAAe,IAE3C,GAAC,CAAAjc,IAAA,SAAAnB,MAED,WACI,OAAOqD,EAAAA,cAACA,EAAAA,SAAc,KACY,OAA7B5B,KAAKpB,MAAM+wD,eAA0B/tD,EAAAA,cAAA,OAAK8L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM+wD,iBACvF/tD,EAAAA,cAAA,OAAKE,UAAW9B,KAAKpB,MAAM6d,WAAYza,GAAG,gBAAgB0L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAMgxD,mBACpG5vD,KAAKpB,MAAMixD,kBAAoBjuD,EAAAA,cAAA,OAAKE,UAAU,kEAC5CF,EAAAA,cAAA,OAAKE,UAAU,6CAA4CF,EAAAA,cAAA,UAAQU,KAAK,SAASI,MAAM,kDAAkDV,GAAG,wBAAwBD,KAAK,SAAS,iBAAe,WAAW+tD,SAAS,IAAI,gBAAc,OAAO,gBAAc,SAAQ,MACpQluD,EAAAA,cAAA,OAAKE,UAAU,iBAEXF,EAAAA,cAACkD,EAAAA,EAAc,CACXG,KAAMjF,KAAKpB,MAAML,MACjBkH,cAAc,MACdD,eAAe,EACfJ,cAAc,6FACdC,gBAAiBrF,KAAKpB,MAAMmxD,mBAC5B5qD,YAAanF,KAAKpB,MAAMuZ,kBAGhCvW,EAAAA,cAAA,OAAKE,UAAU,kBACXF,EAAAA,cAAA,OAAKE,UAAU,oCAAoCE,GAAG,2BAClDJ,EAAAA,cAAA,KAAGE,UAAU,iDAAgD,QAKjF,IAAC,CArCgB,CAAS8B,EAAAA,sqCCiB9B,UAAMosD,GAAepuD,EAAAA,MAAW,kBAAM,6BAAwB,IACxDquD,GAAYruD,EAAAA,MAAW,kBAAM,4BAAqB,IAClDsuD,GAAgBtuD,EAAAA,MAAW,kBAAM,6BAAyB,IAC1DuuD,GAAavuD,EAAAA,MAAW,kBAAM,6BAAsB,IACpDwuD,GAAcxuD,EAAAA,MAAW,kBAAM,6BAAuB,IAQtDyuD,IAAUj9C,GANfF,EAAAA,EAAAA,KAAQ,SAACG,GACN,MAAO,CACHC,WAAYD,EAAMC,WAE1B,IAAEF,EAAAG,GAAA,SAAA3I,GA4BE,SAAAylD,EAAYzxD,GAAO,IAAAC,QAiEgB,OAjEhBC,EAAAA,EAAAA,GAAA,KAAAuxD,KACf,OAAAA,IAAA,CAAMzxD,gBAANC,kFAEAE,EAAAA,EAAAA,GAAAF,EAAA,QA3BI,CACJN,MAAO,GACPuY,gBAAgB,EAChB2B,WAAa,KACb63C,UAAW,EACXC,UAAW,EACXC,eAAgB,EAChBC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,gBAAiB,EACjBC,WAAW,EACX9F,QAAQ,EACRC,MAAO,EACP8F,cAAc,EACdtd,SAAU,IACVud,aAAc,EACdC,IAAK,EACLC,aAAa,EACbC,aAAc,MAu1BlBryD,EAAAA,EAAAA,GAAAF,EAAA,cACa,SAACoG,GACV,IAAIiT,EAAWrZ,EAAKsZ,eAAeC,QAAQC,eAC3CxZ,EAAKwB,SAAS,CAAC9B,MAAQM,EAAKgD,MAAMtD,MAAM+Z,UAAU,EAAGJ,GAAYjT,EAAOpG,EAAKgD,MAAMtD,MAAM+Z,UAAUJ,IACvG,IAp1BIrZ,EAAKD,MAAM6T,UAASo0B,EAAAA,EAAAA,IAAW,CAC3B,GAAMhoC,EAAKD,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAS3T,EAAKD,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,MAAU3T,EAAKD,MAAM0U,WAAWzT,IAAI,YAGxChB,EAAKqqD,iBACLrqD,EAAKsqD,eAELtqD,EAAKka,aAAela,EAAKka,aAAahO,KAAIlM,GAC1CA,EAAKwyD,aAAexyD,EAAKwyD,aAAatmD,KAAIlM,GAC1CA,EAAKyyD,YAAczyD,EAAKyyD,YAAYvmD,KAAIlM,GACxCA,EAAK8lC,QAAU9lC,EAAK8lC,QAAQ55B,KAAIlM,GAChCA,EAAKyxD,SAAWzxD,EAAKyxD,SAASvlD,KAAIlM,GAClCA,EAAK0yD,WAAa1yD,EAAK0yD,WAAWxmD,KAAIlM,GACtCA,EAAK4pD,UAAY5pD,EAAK4pD,UAAU19C,KAAIlM,GACpCA,EAAK+X,YAAc/X,EAAK+X,YAAY7L,KAAIlM,GACxCA,EAAK2yD,cAAgB3yD,EAAK2yD,cAAczmD,KAAIlM,GAC5CA,EAAK0xD,SAAW1xD,EAAK0xD,SAASxlD,KAAIlM,GAClCA,EAAKwc,aAAexc,EAAKwc,aAAatQ,KAAIlM,GAC1CA,EAAK4yD,aAAe5yD,EAAK4yD,aAAa1mD,KAAIlM,GAC1CA,EAAKgrD,iBAAmBhrD,EAAKgrD,iBAAiB9+C,KAAIlM,GAClDA,EAAKirD,UAAYjrD,EAAKirD,UAAU/+C,KAAIlM,GACpCA,EAAK6yD,cAAgB7yD,EAAK6yD,cAAc3mD,KAAIlM,GAC5CA,EAAK8yD,YAAc9yD,EAAK8yD,YAAY5mD,KAAIlM,GACxCA,EAAK+yD,WAAa/yD,EAAK+yD,WAAW7mD,KAAIlM,GACtCA,EAAKgzD,oBAAsBhzD,EAAKgzD,oBAAoB9mD,KAAIlM,GACxDA,EAAKizD,qBAAuBjzD,EAAKizD,qBAAqB/mD,KAAIlM,GAC1DA,EAAKkzD,iBAAmBlzD,EAAKkzD,iBAAiBhnD,KAAIlM,GAClDA,EAAKmzD,gBAAkBnzD,EAAKmzD,gBAAgBjnD,KAAIlM,GAChDA,EAAKozD,iBAAmBpzD,EAAKozD,iBAAiBlnD,KAAIlM,GAClDA,EAAKqa,kBAAoBra,EAAKqa,kBAAkBnO,KAAIlM,GACpDA,EAAKiY,eAAiBjY,EAAKiY,eAAe/L,KAAIlM,GAC9CA,EAAKyuD,cAAgBzuD,EAAKyuD,cAAcviD,KAAIlM,GAC5CA,EAAK6qC,kBAAoB7qC,EAAK6qC,kBAAkB3+B,KAAIlM,GAGpDA,EAAKsa,gBAAkBvX,EAAAA,YACvB/C,EAAKsZ,eAAiBtZ,EAAKD,MAAMuZ,eAEjCtZ,EAAKqqD,eAAiBrqD,EAAKqqD,eAAen+C,KAAIlM,GAC9CA,EAAKwoC,cAAgBxoC,EAAKwoC,cAAct8B,KAAIlM,GAC5CA,EAAKsqD,aAAetqD,EAAKsqD,aAAap+C,KAAIlM,GAC1CA,EAAK6pD,eAAiB7pD,EAAK6pD,eAAe39C,KAAIlM,GAC9CA,EAAKqzD,mBAAqBrzD,EAAKqzD,mBAAmBnnD,KAAIlM,GACtDA,EAAK+qD,mBAAqB/qD,EAAK+qD,mBAAmB7+C,KAAIlM,GACtDA,EAAKszD,MAAQtzD,EAAKszD,MAAMpnD,KAAIlM,GAE5BA,EAAKuzD,SAAU,EACfvzD,EAAKwzD,WAAa,GAClBxzD,EAAKyzD,gBAAkB,KACvBzzD,EAAK0zD,iBAAmB,KACxB1zD,EAAK2zD,mBAAqB,KAC1B3zD,EAAK4zD,mBAAoB,EACzB5zD,EAAK6zD,kBAAoB,KACzB7zD,EAAK8zD,cAAgB,KACrB9zD,EAAK+zD,iBAAkB,EAEvB/zD,EAAKg0D,UAAW,EAChBh0D,EAAKi0D,cAAgB,KACrBj0D,EAAKk0D,oBAAsBl0D,EAAKk0D,oBAAoBhoD,KAAIlM,GACxDA,EAAKm0D,qBAAuB,GAAGn0D,CACnC,CAAC,OAAAW,EAAAA,EAAAA,GAAA6wD,EAAAzlD,IAAAnL,EAAAA,EAAAA,GAAA4wD,EAAA,EAAA3wD,IAAA,WAAAnB,MAED,SAASo1B,GACL3zB,KAAKK,SAAS,CAACkwD,SAAW58B,GAC9B,GAAC,CAAAj0B,IAAA,aAAAnB,MAED,WACIyB,KAAKpB,MAAM6T,SAAS,CAChB,KAAQ,WACR,KAAS,CAAC6C,KAAM,cAAe,IAAO,KAE1CtV,KAAKK,SAAS,CAAC,aAAgB,GACnC,GAAC,CAAAX,IAAA,gBAAAnB,MAED,SAAc0G,GACVjF,KAAKpB,MAAM6T,SAAS,CAChB,KAAQ,sBACR,KAAS,CAACxN,KAAMA,IAExB,GAAC,CAAAvF,IAAA,sBAAAnB,MAED,WACIyB,KAAKK,SAAS,CAACuwD,WAAW,GAC9B,GAAC,CAAAlxD,IAAA,uBAAAnB,MAED,WACIyB,KAAKK,SAAS,CAACuwD,WAAW,GAC9B,GAAC,CAAAlxD,IAAA,eAAAnB,MAED,SAAagB,GACTS,KAAKK,SAAS,CAAC9B,MAAOgB,EAAM8L,OAAO9M,QACnC0W,EAAAA,EAAgBoF,kBAAkB,QAAQ9a,EAAM8L,OAAO9M,MAC3D,GAAC,CAAAmB,IAAA,mBAAAnB,MAED,WACQyB,KAAKmZ,gBAAgBf,UAIrBpY,KAAK4yD,iBAAkB,EAEL5yD,KAAKmZ,gBAAgBf,QAAQuD,aAAe3b,KAAKmZ,gBAAgBf,QAAQsD,UAExE1b,KAAKmZ,gBAAgBf,QAAQ8C,aAAgB,IAC5B,IAA5Blb,KAAK6B,MAAMmvD,cACXhxD,KAAKK,SAAS,CAAC2wD,cAAc,KAEE,IAA5BhxD,KAAK6B,MAAMmvD,eAClBhxD,KAAKK,SAAS,CAAC2wD,cAAc,EAAOE,IAAK,EAAGjG,QAAQ,EAAOC,MAAO,IAClElrD,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,mBAAoB,KAAS,CAAC,KAAQ,UAAW,IAAO,MAGlG,GAAC,CAAA/S,IAAA,kBAAAnB,MAED,WAAkB,IAAAoB,EAAA,KAOd,GALyB,GAArBK,KAAK6B,MAAMopD,SACX9hC,aAAanpB,KAAK0yD,mBAClB1yD,KAAK0yD,kBAAoBtvD,YAAW,WAAOzD,EAAKU,SAAS,CAAC4qD,QAAQ,EAAOC,MAAO,GAAG,GAAE,MAGhE,GAArBlrD,KAAK6B,MAAMopD,QAAkBjrD,KAAK6B,MAAMqvD,IAAM,EAAG,CACjDlxD,KAAKK,SAAS,CAAC6wD,IAAK,IACpB,IACI1wD,SAASC,eAAe,qBAAqBwyD,gBACjD,CAAE,MAAO12D,GACLyD,KAAKqb,cACT,CACJ,MACIrb,KAAKqb,cAEb,GAAC,CAAA3b,IAAA,mBAAAnB,MAED,SAAiBsuB,GACb7sB,KAAKK,SAAS,CACVqzC,SAAU1zC,KAAK6B,MAAM6xC,UAAsB,GAAV7mB,EAAiB,GAAK,KAE3D5X,EAAAA,EAAgBqE,gBAAgB,OAAOtZ,KAAK6B,MAAM6xC,UAClD1zC,KAAKqb,cACT,GAAC,CAAA3b,IAAA,oBAAAnB,MAED,SAAkB8a,GACdpE,EAAAA,EAAgBqE,gBAAgB,OAAOD,GACvCrZ,KAAKK,SAAS,CACVyW,gBAAgB,KAEpBiuB,EAAAA,EAAAA,IAAc,CACV,IAAQ1rB,EACR,GAAMrZ,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,WAErDyC,EAAAA,EAAgB3E,UAAU,kBAAmB,CAAC+I,IAC9CrZ,KAAKmpD,cACT,GAAC,CAAAzpD,IAAA,oBAAAnB,MAED,WAEI,IAAI20D,EAAYj+C,EAAAA,EAAgBk+C,kBAAkB,SAChC,OAAdD,GACAlzD,KAAKK,SAAS,CAAC9B,MAAO20D,IAG1B,IAAIE,EAAkBn+C,EAAAA,EAAgBo+C,gBAAgB,QAC9B,OAApBD,GACApzD,KAAKK,SAAS,CAACqzC,SAAUtoC,SAASgoD,KAItC,IAAI55C,EAAMhZ,SAASC,eAAe,iBACtB,OAAR+Y,KAAyD,IAAvCxZ,KAAKpB,MAAM0U,WAAWzT,IAAI,UAA0D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAA6D,SAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAC7I2Z,EAAIC,OAEZ,GAAC,CAAA/Z,IAAA,eAAAnB,MAED,WACQyB,KAAKmY,eAAeC,UACpBpY,KAAKmY,eAAeC,QAAQqB,QACxBzZ,KAAK6B,MAAMtD,MAAMxB,OAAS,IAC1BiD,KAAKmY,eAAeC,QAAQC,eAAiBrY,KAAK6B,MAAMtD,MAAMxB,OAC9DiD,KAAKmY,eAAeC,QAAQk7C,aAAetzD,KAAK6B,MAAMtD,MAAMxB,QAGxE,GAAC,CAAA2C,IAAA,mBAAAnB,MAED,SAAiBo1B,GACb3zB,KAAKK,SAAS,CAAC,cAAkBszB,GACrC,GAAC,CAAAj0B,IAAA,WAAAnB,MAED,SAAS0rD,EAAI9mD,GACT,OAAO,IAAIyI,OAAO,UAAUzI,EAAK,WAAW4I,KAAKk+C,EAAGnoD,UACxD,GAAC,CAAApC,IAAA,WAAAnB,MAED,SAAU0rD,EAAI9mD,GACLnD,KAAKuzD,SAAStJ,EAAI9mD,KAAS8mD,EAAGnoD,YAAcmoD,EAAGnoD,UAAY,IAAM,IAAKqB,EAC/E,GAAC,CAAAzD,IAAA,cAAAnB,MAED,SAAY0rD,EAAI9mD,GACRnD,KAAKuzD,SAAStJ,EAAI9mD,KAClB8mD,EAAGnoD,UAAUmoD,EAAGnoD,UAAUK,QAAQ,IAAIyJ,OAAO,UAAUzI,EAAK,WAAW,KAAKhB,QAAQ,aAAc,IAE1G,GAAC,CAAAzC,IAAA,qBAAAnB,MAED,SAAmBsD,IAED,IAAVA,IAA8C,IAA3B7B,KAAKyyD,oBACxBzyD,KAAKyyD,mBAAoB,EACzBzyD,KAAKkyD,oBAAmB,GACxBlyD,KAAKwzD,mBAGK,IAAV3xD,IACA7B,KAAKyyD,mBAAoB,EACzBzyD,KAAKkyD,qBACLlyD,KAAKwzD,iBAGb,GAAC,CAAA9zD,IAAA,qBAAAnB,MAED,SAAmBk1D,GACf,IAAIxK,EAAQzoD,SAASC,eAAe,mBACpC,GAAKwoD,EAAL,CAIA,IAAIyK,EAAW,0CACXzhD,EAAIg3C,EAAMpoD,iBAAiB6yD,GAE/B,GAAIzhD,EAAElV,OAAS,EAAG,CACd,IACI42D,EAAaF,EAAY,EAAI,EACjC,IAAK92D,EAAI,EAAGA,EAAIsV,EAAElV,OAAS42D,EAAah3D,IACpCsV,EAAEtV,GAAG+J,MAAM4rC,QAAU,OAEzB,IAKQ31C,EALJi3D,EAAY3K,EAAM2K,UAGtB,GAAIA,QAAyD,IAArCA,EAAUl/C,uBAG9B,IAFAzC,EAAI2hD,EAAU/yD,iBAAiB6yD,GAE1B/2D,EAAI,EAAGA,EAAIsV,EAAElV,OAAQJ,IACtBsV,EAAEtV,GAAG+J,MAAM4rC,QAAU,EAGjC,CArBA,CA0CJ,GAAC,CAAA5yC,IAAA,YAAAnB,MAED,SAAUs1D,EAAatiD,GAInB,IAJyD,IAA/BuiD,IAAS12D,UAAAL,OAAA,QAAAwK,IAAAnK,UAAA,KAAAA,UAAA,GAAS22D,EAAG32D,UAAAL,OAAA,QAAAwK,IAAAnK,UAAA,IAAAA,UAAA,GAC3C42D,EAAY,GACZC,GAAQ,EAELJ,EAAcA,EAAYK,oBAC5BD,GAASJ,IAAgBA,EAAYM,QAAQ5iD,IAAUuiD,EAAaE,EAAU12D,KAAKu2D,GAAeI,EAAQF,EAE/G,OAAOC,CACX,GAAC,CAAAt0D,IAAA,YAAAnB,MAED,SAAUqc,GAAQ,IAAAjZ,EAAA,KACVK,EAAK4Y,EAAW,GACnBkT,EAAWlT,EAAiB,SAC5ByoC,EAAQzoC,EAAc,MACtBw5C,EAAgBx5C,EAAuB,eACvCgX,EAAMpxB,SAASC,eAAe,OAAOuB,GAEjC4vB,IAIDyxB,EAAQ,GACRrjD,KAAKq0D,SAASziC,EAAI,QAGD,GAAjBwiC,GAAyBp0D,KAAKg0D,UAAUpiC,EAAI,kBAAkB,GAAO,GAAM70B,OAAS,GAIxFqG,YAAY,WACR,GAAoB,GAAhBzB,EAAKywD,QACL,GAAqB,GAAjBgC,EAG8B,OAA1BzyD,EAAK4wD,kBACL5wD,EAAK4wD,mBAGT5wD,EAAK4wD,iBAAmB,WACpB,IAAI+B,EAAgB3yD,EAAKqyD,UAAUpiC,EAAI,kBAAkB,GAAO,GAChE,GAAI0iC,EAAcv3D,OAAS,EACvB60B,EAAIjd,WAAWC,YAAYgd,GAE3BjwB,EAAK4wD,iBAAmB,KACxB3hC,cAAcjvB,EAAK2wD,iBAEnBgC,EAAc,GAAGrB,qBAGd,CACH,IAAKtxD,EAAK4xD,SAAS3hC,EAAI,cACvB,CACIjwB,EAAK0yD,SAASziC,EAAI,cAClBjwB,EAAK0yD,SAASziC,EAAI,sBAElBjwB,EAAK4yD,YAAY3iC,EAAI,QACrBjwB,EAAK4yD,YAAY3iC,EAAI,gBAErB,IAE6B4iC,EAF6BC,EAAAC,GAAvC9iC,EAAIld,uBAAuB,aAEjB,IAA7B,IAAA+/C,EAAAzsB,MAAAwsB,EAAAC,EAAA33D,KAAAwB,MAA+B,KAAtBoF,EAAI8wD,EAAAj2D,MACToD,EAAK4yD,YAAY7wD,EAAM,OAC3B,CAAC,OAAAlC,GAAAizD,EAAAl4D,EAAAiF,EAAA,SAAAizD,EAAAr2D,GAAA,CAEDuD,EAAK0Z,cAAa,GAAO,EAC7B,CAEA,GAAIT,EAAsB,gBAAMjZ,EAAK4xD,SAAS3hC,EAAI,6BAClD,CACI,IAAI+iC,EAAahnC,KAAKk1B,MAAMvyB,KAAKC,MAAQ,KAAQnlB,SAASwP,EAAsB,cAAS,OACzF,GAAI+5C,EAAa,EAAG,CAChB,IAAIC,EAAchjC,EAAIvR,cAAc,aACpC,GAAIu0C,EACA,IAAK,IAAIj4D,EAAI,EAAGA,GAAK,EAAGA,IAEhBie,EAAsB,cAAE,gBAAkBje,IAC1Cg4D,EAAavpD,SAASwP,EAAsB,cAAE,gBAAkBje,KAChEi4D,EAAYhM,WAAahuC,EAAsB,cAAE,qBAAuBje,KAExEi4D,EAAYhM,UAAYhuC,EAAsB,cAAE,qBAAuBje,GAIvF,CACJ,CACJ,CACJ,EAEAi0B,cAAcjvB,EAAK2wD,iBACnB3wD,EAAK4wD,mBACL5wD,EAAK2wD,gBAAkB7hC,YAAY9uB,EAAK4wD,iBAAkB,SACvD,CACH5wD,EAAKywD,SAAU,EAEfzwD,EAAK0yD,SAASziC,EAAI,cAClBjwB,EAAK0yD,SAASziC,EAAI,sBAElBjwB,EAAKqyD,UAAUpiC,EAAI,eAAej0B,SAAQ,SAAC+F,GACvC/B,EAAK0yD,SAAS3wD,EAAK,OACvB,IAEA/B,EAAK6wD,mBAAqBpvD,YAAW,WACjCzB,EAAK+vD,cAAc1vD,EACvB,GAAc,IAAX8rB,GAEHnsB,EAAK4yD,YAAY3iC,EAAI,QACrBjwB,EAAK4yD,YAAY3iC,EAAI,gBAErB,IAE6BijC,EAF6BC,EAAAJ,GAAvC9iC,EAAIld,uBAAuB,aAEjB,IAA7B,IAAAogD,EAAA9sB,MAAA6sB,EAAAC,EAAAh4D,KAAAwB,MAA+B,KAAtBoF,EAAImxD,EAAAt2D,MACToD,EAAK4yD,YAAY7wD,EAAM,OAC3B,CAAC,OAAAlC,GAAAszD,EAAAv4D,EAAAiF,EAAA,SAAAszD,EAAA12D,GAAA,CAEGilD,EAAQ,IACR1hD,EAAKuwD,qBACLvwD,EAAK0Z,cAAa,GAAO,GAEjC,MAGA1Z,EAAK0yD,SAASziC,EAAI,sBAClBjwB,EAAK0yD,SAASziC,EAAI,cAClBjwB,EAAK0wD,WAAW/0D,KAAK,CAAC,GAAO0E,EAAI,MAAU8rB,GAEnD,GAAQ,IAANu1B,GACN,GAAC,CAAA3jD,IAAA,gBAAAnB,MAED,SAAcyD,GAAI,IAAAgL,EAAA,KAEV4kB,EAAMpxB,SAASC,eAAe,OAAOuB,GAEzC,GAAK4vB,EAAL,CAIA,IAAImjC,GAAqB,EAezB,GAbA/0D,KAAKg0D,UAAUpiC,EAAI,eAAej0B,SAAQ,SAAC+F,GACvCsJ,EAAKunD,YAAY7wD,EAAK,QACI,GAAtBqxD,IACArxD,EAAKuvD,iBACL8B,GAAqB,EAE7B,IAEAnjC,EAAIjd,WAAWC,YAAYgd,GAE3B5xB,KAAKkyD,qBAGDlyD,KAAKqyD,WAAWt1D,OAAS,EAAG,CAC5B,IAAIuD,EAAON,KAAKqyD,WAAWvgC,QAE3B1uB,YAAW,WACP4J,EAAK0kD,cAAcpxD,EAAK0B,GAC5B,GAAgB,IAAb1B,EAAK+iD,OAER,IAAI2R,EAAex0D,SAASC,eAAe,OAAOH,EAAK0B,IAEvD,GAAqB,OAAjBgzD,EAAuB,CACvBh1D,KAAKu0D,YAAYS,EAAa,QAC9Bh1D,KAAKu0D,YAAYS,EAAa,gBAE9B,IAE6BC,EAFsCC,EAAAR,GAAhDM,EAAatgD,uBAAuB,aAE1B,IAA7B,IAAAwgD,EAAAltB,MAAAitB,EAAAC,EAAAp4D,KAAAwB,MAA+B,KAAtBoF,EAAIuxD,EAAA12D,MACTyB,KAAKu0D,YAAY7wD,EAAM,OAC3B,CAAC,OAAAlC,GAAA0zD,EAAA34D,EAAAiF,EAAA,SAAA0zD,EAAA92D,GAAA,CACL,CAEJ,MACI4B,KAAKoyD,SAAU,CAtCnB,CAwCJ,GAAC,CAAA1yD,IAAA,uBAAAnB,MAED,WACIqyB,cAAc5wB,KAAKsyD,iBACnB1hC,cAAc5wB,KAAK8yD,eACnB3pC,aAAanpB,KAAKwyD,oBAClBrpC,aAAanpB,KAAK0yD,mBAClBvpC,aAAanpB,KAAK2yD,cACtB,GAEA,CAAAjzD,IAAA,0BAAAnB,MACA,SAAwBwc,EAAWC,GAE/B,GAAID,EAAUzH,WAAWd,MAAM,CAAC,eAAe,aAAaxG,MAAQhM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAaxG,KAAM,CAC/H,IAAImpD,GAAY,EACZC,GAAkB,EAClBC,EAAc,EAEdr1D,KAAKmZ,gBAAgBf,WACrBi9C,EAAcr1D,KAAKmZ,gBAAgBf,QAAQuD,aAAe3b,KAAKmZ,gBAAgBf,QAAQsD,WAGpE1b,KAAKmZ,gBAAgBf,QAAQ8C,aAAgB,GAC5Dm6C,EAAc,EAEdD,GAAkB,EAGtBD,GAAY,GAGhB,IAAIG,EAAiBt1D,KAAK6B,MAAMopD,OAC5BsK,EAA0B,GAAlBD,EAAyBt1D,KAAK6B,MAAMqpD,MAAQ,EACpDgG,EAAwB,GAAlBoE,EAAyBt1D,KAAK6B,MAAMqvD,IAAM,EAEpD,GAAoE,GAAhEn2C,EAAUzH,WAAWd,MAAM,CAAC,eAAe,aAAaxG,OAAoE,IAAvDhM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,OAAkB,CACnI,IAAIgjD,EAAex1D,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAiD,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAA8D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuBW,SAASib,WAChJ,GAAlB65C,GAEAC,EAA0B,IAD1BD,EAA+B,GAAdE,GAAuD,GAAhC11D,OAAOC,QAAoB,YAAiC,GAAnBq1D,IAAuD,IAA3Bp1D,KAAK6B,MAAMsvD,aACvFp2C,EAAUzH,WAAWd,MAAM,CAAC,eAAe,aAAaxG,KAAO,EAChGklD,EAAMlxD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,SAElD0+C,GAAOlxD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAIvD,IAAIof,EAAM5xB,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,iBAAmB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAY,EAAE,QAE9HyC,EAAAA,EAAgB3E,UAAU,aAAc,CAAC,CAACmlD,KAAMz1D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,SAAUkjD,SAAU9jC,EAAK,IAAOs/B,EAAK,KAAS,cAAe,UAA0E,IAA5DlxD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAuB,YAAgBgjD,IAC9P,MACIF,GAAiB,EACjBC,EAAQ,EACRrE,EAAM,EAKV,GAFAlxD,KAAKK,SAAS,CAAC4qD,OAAQqK,EAAgBpK,MAAOqK,EAAOrE,IAAKA,EAAKF,cAAeoE,IAE7D,GAAbD,EACA,OACKE,CAKb,KAAO,KAA0C,IAAtCt6C,EAAUzH,WAAWzT,IAAI,WAA6D,IAAvCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAChF,OAA6B,IAAzBG,KAAK4yD,iBAA4B5yD,KAAKmZ,gBAAgBf,QAC/CpY,KAAKmZ,gBAAgBf,QAAQuD,aAAe3b,KAAKmZ,gBAAgBf,QAAQsD,WAEpF1b,KAAK4yD,iBAAkB,EAChB,GACA5yD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAC9CxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAqC,GAAxBxS,KAAK6B,MAAMkvD,WAAsB/wD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,UAAYuI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,YAC5LxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,UAAoC,GAAxBxS,KAAK6B,MAAMkvD,WAEzE/wD,KAAKK,SAAS,CAAC0wD,WAAW,EAAMxyD,MAAOyB,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAC3ExS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAauI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,WAC5GxS,KAAKK,SAAS,CAAC0wD,WAAW,EAAOxyD,MAAO,IAC5C,CAEA,OAAO,IACX,GAAC,CAAAmB,IAAA,qBAAAnB,MAED,SAAmBwc,EAAWC,EAAWC,GAAU,IAAAY,EAAA,KAG3Cb,EAAUo2C,aAAar0D,QAAUiD,KAAK6B,MAAMuvD,aAAar0D,QACzDiD,KAAKqb,cAAa,GAAO,IAKG,IAA5Brb,KAAK6B,MAAM4uD,cACX11C,EAAUzH,WAAWd,MAAM,CAAC,eAAe,YAAcxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YACrGuI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,MAAQhM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,OAErF,GAAxChM,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAuF,GAAjEG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAaxG,KACzGhM,KAAKqb,cAAa,GAAO,GAEzBrb,KAAKqb,cAAa,EAAON,EAAUzH,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,MAAQhM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,OAIlK,IAAI2pD,GAAc,EAqBlB,KAlBiC,IAA5B36C,EAAUw1C,eAA2Bx1C,EAAUw1C,eAAiBxwD,KAAK6B,MAAM2uD,eAAyC,IAAvBmF,GAAc,IAC3G31D,KAAKpB,MAAM0U,WAAWzT,IAAI,eAAiBkb,EAAUzH,WAAWzT,IAAI,eAAyD,GAAxCG,KAAKpB,MAAM0U,WAAWzT,IAAI,YAA+C,IAAvB81D,GAAc,OAEnI,GAAfA,EACA31D,KAAKqb,cAAa,GAAO,GAEzBrb,KAAKqb,cAAa,GAAO,KAGmC,IAA1Drb,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAAgE,SAArCxS,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAkF,IAA1DG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAAiE,SAArCxS,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAoD,IAA5Bmb,EAAUw1C,eAA2Bx1C,EAAUw1C,eAAiBxwD,KAAK6B,MAAM2uD,iBACtTxwD,KAAKyxD,eAELruD,YAAW,WACPyY,EAAK41C,cACT,GAAE,OAIO,OAAbx2C,GACIjb,KAAKmZ,gBAAgBf,QAAS,CAE9B,IAAIw9C,EAAcp1D,SAASC,eAAe,mBACtCo1D,EAAiBr1D,SAASC,eAAe,sBAAwBD,SAASC,eAAe,OAAOT,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAE5IojD,GAAeC,IAA8E,IAA5DA,EAAe/zD,UAAU9E,QAAQ,uBAAiC44D,EAAYj6C,aAAei6C,EAAY16C,aAAgB26C,EAAeC,UAAY,IACrL91D,KAAKK,SAAS,CAAC2wD,cAAc,IAE7B6E,EAAe5C,kBAEfjzD,KAAKmZ,gBAAgBf,QAAQsD,UAAY1b,KAAKmZ,gBAAgBf,QAAQuD,aAAeV,CAE7F,CAGkE,GAAlEjb,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,oBAAuD,IAA7BxS,KAAK6B,MAAM6uD,eAClF1wD,KAAKK,SAAS,CAAC,eAAgB,KAIO,IAAtC0a,EAAUzH,WAAWzT,IAAI,WAA6D,IAAvCG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAA0D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuBG,KAAKmY,eAAeC,SACnKpY,KAAKmY,eAAeC,QAAQqB,SAIkC,IAA9DzZ,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,qBAA0F,IAA3DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAyF,IAA1DuI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,aAAwF,IAA1DuI,EAAUzH,WAAWX,MAAM,CAAC,eAAe,aAAkF,IAA1DoI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,YACnUxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eACxCxS,KAAKpB,MAAM+lC,QAAQ,CAAC,WAAc3kC,KAAKpB,MAAM0U,WAAWzT,IAAI,YAIL,IAA3DG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAsF,IAA/DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAuF,IAA9DuI,EAAUzH,WAAWd,MAAM,CAAC,eAAe,gBACnLxS,KAAKpB,MAAM6T,UAASo0B,EAAAA,EAAAA,IAAW,CAC3B,GAAM7mC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,MAAWxS,KAAKpB,MAAM0U,WAAWzT,IAAI,aAKF,IAAvCG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAA2D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAA4D,SAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAmE,IAA5CG,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAqE,IAA3CG,KAAKpB,MAAM0U,WAAWzT,IAAI,cAAmE,GAAzCkb,EAAUzH,WAAWzT,IAAI,cAAmE,GAA1Ckb,EAAUzH,WAAWzT,IAAI,eAE5R,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAC1BG,KAAKmY,eAAeC,SAAWpY,KAAKmY,eAAeC,QAAQqB,QAIrC,OAA1BzZ,KAAKuyD,kBACLvyD,KAAKuyD,kBAEb,GAAC,CAAA7yD,IAAA,iBAAAnB,MAED,SAAeo3D,GAEP,IAAIE,EADJ71D,KAAKmZ,gBAAgBf,UAEjBu9C,GAA8H,QAA9GE,EAAiBr1D,SAASC,eAAe,OAAOT,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAsF,IAA5DqjD,EAAe/zD,UAAU9E,QAAQ,sBAEvK64D,EAAe5C,iBAEfjzD,KAAKmZ,gBAAgBf,QAAQsD,UAAY1b,KAAKmZ,gBAAgBf,QAAQuD,aAAe,IAGjG,GAAC,CAAAjc,IAAA,eAAAnB,MAED,SAAaw3D,EAAgBJ,GAAa,IAAArL,EAAA,MAClCtqD,KAAKmZ,gBAAgBf,SAAa29C,GAAmB/1D,KAAK6B,MAAMmvD,eAEhE7nC,aAAanpB,KAAK2yD,eAElB3yD,KAAKwzD,eAAemC,GAEpB31D,KAAK2yD,cAAgBvvD,YAAW,WAC5BknD,EAAKkJ,eAAemC,IACY,IAA5BrL,EAAKzoD,MAAM4uD,cACXnG,EAAKjqD,SAAS,CAAC,cAAe,GAEtC,GAAE,KAEV,GAAC,CAAAX,IAAA,iBAAAnB,MAED,SAAesuB,EAAQjS,GAClB3F,EAAAA,EAAgB3E,UAAUuc,EAAQjS,EACvC,GAAC,CAAAlb,IAAA,gBAAAnB,MAED,SAAciW,GACVxU,KAAKpB,MAAM6T,UAAS40B,EAAAA,EAAAA,IAAc,CAC9B,OAAW7yB,EACX,OAAWxU,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WACvD,KAAUxS,KAAKpB,MAAM0U,WAAWzT,IAAI,QACpC,MAAUG,KAAKpB,MAAM0U,WAAWzT,IAAI,SACpC,GAAOG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAC/C,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,WAAc,IAEtB,GAAC,CAAA9S,IAAA,iBAAAnB,MAED,SAAey3D,GACX,IAAIp7C,EAAS,CACT,QAAW5a,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OACnD,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,OAAWxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WACvD,QAAYxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YACxD,MAAUxS,KAAKpB,MAAM0U,WAAWzT,IAAI,SACpC,SAAaG,KAAKpB,MAAM0U,WAAWzT,IAAI,WACvC,eAAqBG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAiD,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAA8D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuBW,SAASib,aAAgD,GAAhC3b,OAAOC,QAAoB,aAAwC,IAA3BC,KAAK6B,MAAMsvD,aAI3Ov2C,EAAOq7C,UAA8B,IAAlBr7C,EAAO4sB,SAC1B5sB,EAAmB,WAAI5a,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,aAGnExS,KAAKpB,MAAM6T,UAASuzB,EAAAA,EAAAA,IAAcprB,IAE9Bo7C,GAAgBA,EAA0B,cAA+C,IAA1Ch2D,KAAKpB,MAAM0U,WAAWzT,IAAI,aACzEG,KAAKyxD,cAEb,GAAC,CAAA/xD,IAAA,eAAAnB,MAED,WACIyB,KAAKpB,MAAM6T,UAASq1B,EAAAA,EAAAA,IAAgB,CAChC,QAAW9nC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OACnD,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,MAAUxS,KAAKpB,MAAM0U,WAAWzT,IAAI,SACpC,KAASG,KAAKpB,MAAM0U,WAAWzT,IAAI,UAE3C,GAAC,CAAAH,IAAA,cAAAnB,MAED,WAEI,GAA+B,GAA3ByB,KAAK6B,MAAMtD,MAAMxB,QAAiD,GAAlCiD,KAAK6B,MAAMuvD,aAAar0D,OAA5D,CAIAkY,EAAAA,EAAgBoF,kBAAkB,QAAQ,IAG1Cra,KAAKK,SAAS,CAAC2wD,cAAc,EAAOE,IAAK,EAAGjG,QAAQ,EAAOC,MAAO,IAClElrD,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,mBAAoB,KAAS,CAAC,KAAQ,UAAW,IAAO,KAGtF,IAAIyjD,EAAcl2D,KAAK6B,MAAMuvD,aAAa9kD,KAAI,SAAAR,GAC1C,MAAO,CACH,GAAMA,EAAK9J,GACX,cAAiB8J,EAAK89B,eAAiB,UAC3C,IAEJ5pC,KAAKpB,MAAM6T,UAAS02B,EAAAA,EAAAA,IAAW,CAC3B,GAAMnpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAASxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SACjD,IAAQxS,KAAK6B,MAAMtD,MACnB,GAAOyB,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,OAC9C,MAAU3S,KAAKpB,MAAM0U,WAAWzT,IAAI,SACpC,OAAWG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WACvD,YAAe0jD,KAGnBl2D,KAAKK,SAAS,CAAC9B,MAAO,GAAIwyD,WAAY,EAAOK,aAAc,KAC3DpxD,KAAKgzD,qBAAuB,GAC5BhzD,KAAKyxD,eACLzxD,KAAKwzD,gBA5BL,CA6BJ,GAAC,CAAA9zD,IAAA,eAAAnB,MAED,SAAahC,GACK,UAAVA,EAAEmD,KAAoBnD,EAAEgd,WACnBvZ,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,eAC7CxS,KAAKsxD,cAET/0D,EAAE0G,iBAEV,GAAC,CAAAvD,IAAA,QAAAnB,MAED,SAAMhC,GACF,GAAc,UAAVA,EAAEmD,MAAoBnD,EAAEgd,SACxB,IAAsB,IAAlBvZ,KAAK6yD,SAAoB,CACzB,IAAQr2D,EAAMwD,KAAKpB,MAAXpC,EACRwD,KAAK6yD,UAAW,EAChB7yD,KAAKpB,MAAM6T,UAAS+2B,EAAAA,EAAAA,IAAW,OAAOxpC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,kBAA+E,IAA3D3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAA2BhW,EAAE,8BAAgCwD,KAAK6B,MAAMtD,OACpN,MAGI,GAFA4qB,aAAanpB,KAAK8yD,eAClB9yD,KAAK8yD,cAAgB1vD,WAAWpD,KAAK+yD,oBAAqB,KACtD/yD,KAAKgzD,sBAAwBhzD,KAAK6B,MAAMtD,QACpCovB,KAAKK,IAAIhuB,KAAKgzD,qBAAqBj2D,OAASiD,KAAK6B,MAAMtD,MAAMxB,QAAU,GAAKiD,KAAKpB,MAAM0U,WAAWzT,IAAI,aAAa4pC,SAAS,WAAW,CACvI,IAAQjtC,EAAMwD,KAAKpB,MAAXpC,EACRwD,KAAKgzD,qBAAuBhzD,KAAK6B,MAAMtD,MACvCyB,KAAKpB,MAAM6T,UAAS+2B,EAAAA,EAAAA,IAAW,OAAQxpC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,kBAA+E,IAA3D3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,gBAA2BhW,EAAE,8BAAgCwD,KAAK6B,MAAMtD,OACrN,CAIhB,GAAC,CAAAmB,IAAA,sBAAAnB,MAED,WACyB,GAAjByB,KAAK6yD,WACL7yD,KAAK6yD,UAAW,EAChB7yD,KAAKpB,MAAM6T,UAAS+2B,EAAAA,EAAAA,IAAW,UAEvC,GAAC,CAAA9pC,IAAA,UAAAnB,MAED,WACIyB,KAAKpB,MAAM+lC,QAAQ,CAAC,WAAc3kC,KAAKpB,MAAM0U,WAAWzT,IAAI,UAChE,GAAC,CAAAH,IAAA,cAAAnB,MAED,WACIyB,KAAKK,SAAS,CACVoY,YAAazY,KAAK6B,MAAM4W,aAGxBzY,KAAK6B,MAAM4W,YACXzY,KAAKyxD,cAEb,GAAC,CAAA/xD,IAAA,WAAAnB,MAED,WACIyB,KAAKK,SAAS,CACVwwD,UAAW7wD,KAAK6B,MAAMgvD,UAE9B,GAAC,CAAAnxD,IAAA,iBAAAnB,MAED,WACIyB,KAAKK,SAAS,CACVyW,gBAAiB9W,KAAK6B,MAAMiV,gBAEpC,GAAC,CAAApX,IAAA,aAAAnB,MAED,WACIyB,KAAKK,SAAS,CACVywD,gBAAiB9wD,KAAK6B,MAAMivD,gBAEpC,GAAC,CAAApxD,IAAA,YAAAnB,MAED,WAEI,IAAM43D,OAAwC5uD,IAAvBzH,OAAOs2D,WAA4Bt2D,OAAOs2D,WAAat2D,OAAO0gB,QAC/E61C,OAAsC9uD,IAAtBzH,OAAOw2D,UAA6Bx2D,OAAOw2D,UAAax2D,OAAO2gB,QAE/E5I,EAAQ/X,OAAOy2D,WAAaz2D,OAAOy2D,WAAa/1D,SAAS+iC,gBAAgB+lB,YAAc9oD,SAAS+iC,gBAAgB+lB,YAAckN,OAAO3+C,MACrIC,EAAShY,OAAO22D,YAAc32D,OAAO22D,YAAcj2D,SAAS+iC,gBAAgBmzB,aAAel2D,SAAS+iC,gBAAgBmzB,aAAeF,OAAO1+C,OAE1I6+C,EAAa9+C,EAAQ/X,OAAO02D,OAAOI,WACnCjN,GAAQ9xC,EAAQzM,SAAS,MAAQ,EAAIurD,EAAaR,EAGpDU,EAAe,mEAFN/+C,EAAS1M,SAAS,MAAQ,EAAIurD,EAAaN,GAEoC,SAAW1M,EACnGmN,EAASh3D,OAAO0zB,KAAK,GAAIve,EAAAA,EAAgB8iC,OAAS,kBAAmB8e,GACrEE,GAAa,EACbC,GAAgB,EAGpB,KAESF,GAAUA,EAAOzuB,aAAgC,IAAfyuB,EAAOzuB,QAAgD,gBAAzByuB,EAAO9gD,SAASF,MACjFghD,EAASh3D,OAAO0zB,KAAKxzB,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAc,mBAAqBG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,OAAS,IAAMxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,SAAUyC,EAAAA,EAAgB8iC,OAAS,kBAAmB8e,GACzOG,GAAgB,GAEhBD,GAAa,CAErB,CAAE,MAAOx6D,GACLw6D,GAAa,CACjB,EAGKD,GAAUA,EAAOzuB,aAAgC,IAAfyuB,EAAOzuB,QAMlB,GAAjB2uB,IAGe,IAAfD,GACPD,EAAOr9C,OAGf,GAAC,CAAA/Z,IAAA,cAAAnB,MAED,WACIyB,KAAKpB,MAAM6T,SAAS,CAACnQ,KAAO,cAAehC,MAAON,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,cAC9FyC,EAAAA,EAAgBgC,kBAAkB,cAAe,CAAC,CAAC,OAAW,kBAClE,GAAC,CAAAvX,IAAA,gBAAAnB,MAQD,SAAc0uD,GAAU,IAAAgK,EAAA,KACpBj3D,KAAKK,UAAS,SAAA2a,GAEV,IAAoF,IAAhFi8C,EAAKr4D,MAAM0U,WAAWd,MAAM,CAAC,UAAW,eAAgB,oBAKxD,OAHAwI,EAAUo2C,aAAazzD,SAAQ,SAAAmO,GAC3BmrD,EAAKC,kBAAkBprD,EAC3B,IACO,CACHslD,aAAc,CAACnE,IAIvB,GAAIjyC,EAAUo2C,aAAar0D,QAAU,EAAG,CAEpC,IAAMo6D,EAAan8C,EAAUo2C,aAAa,GAE1C,OADA6F,EAAKC,kBAAkBC,GAChB,CACH/F,aAAc,GAAFj7C,OAAAwxC,EAAM3sC,EAAUo2C,aAAarkD,MAAM,IAAE,CAAEkgD,IAE3D,CACA,MAAO,CACHmE,aAAc,GAAFj7C,OAAAwxC,EAAM3sC,EAAUo2C,cAAY,CAAEnE,IAElD,GACJ,GAAC,CAAAvtD,IAAA,oBAAAnB,MAED,SAAkBuN,GAEVA,EAAKqhD,YAAcrhD,EAAKqhD,WAAWj3C,WAAW,UAC9Ck3C,IAAIgK,gBAAgBtrD,EAAKqhD,YAIzBrhD,EAAK89B,eAAwC,YAAvB99B,EAAK89B,eAC3B5pC,KAAKpB,MAAM6T,UAASi3B,EAAAA,EAAAA,IAAkB,CAClC,QAAW59B,EAAK9J,GAChB,cAAiB8J,EAAK89B,iBACtB1pC,MAAK,WAET,IAAGqB,OAAM,SAAC2H,GACNzH,QAAQonB,KAAK,qCAAsC3f,EAEvD,GAER,GAAC,CAAAxJ,IAAA,oBAAAnB,MAED,SAAkB84D,GAAQ,IAAAC,EAAA,KACtBt3D,KAAKK,UAAS,SAAA2a,GACV,IAAMu8C,EAAev8C,EAAUo2C,aAAaoG,MAAK,SAAA1rD,GAAI,OAAIA,EAAK9J,KAAOq1D,CAAM,IAI3E,OAHIE,GACAD,EAAKJ,kBAAkBK,GAEpB,CACHnG,aAAcp2C,EAAUo2C,aAAa5zD,QAAO,SAAAsO,GAAI,OAAIA,EAAK9J,KAAOq1D,CAAM,IAE9E,GACJ,GAAC,CAAA33D,IAAA,SAAAnB,MAED,WAAS,IAAAk5D,EAAA,KACGj7D,EAAMwD,KAAKpB,MAAXpC,EAER,IAAgD,IAA5CwD,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAsE,IAA3CG,KAAKpB,MAAM0U,WAAWzT,IAAI,aAAwB,CAEnG,IAAI4c,EAAa,gDAOjB,OALIzc,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,iBACvC8J,EAAa,sCAI6C,IAA1Dzc,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,YACnC,KAGR5Q,EAAAA,cAAC8tD,GAAe,CAACv3C,eAAgBnY,KAAKmY,eAAgB5Z,MAAOyB,KAAK6B,MAAMtD,MAAOoxD,cAAe3vD,KAAKpB,MAAM+wD,cAAelzC,WAAYA,EAAYmzC,eAAgB5vD,KAAKpB,MAAMgxD,eAAgBG,mBAAoB/vD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA0B3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,wBAA0BhW,EAAE,mBAC9V,CAEA,GAAIwD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,QAAU3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,OAIlG,OAFAwD,EAAWhW,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAcG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,OAG3F5Q,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cAAA,UAAQ81D,kBAAkB,OAAO/zD,IAAKqS,EAAUq2B,YAAY,IAAIvqC,UAAU,gDAMlF,GAAI9B,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAgBuM,IAAI,YAC9C,IAAIo+C,EAAWxqD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAalG,KAAI,SAACslB,EAAKjlB,GAAK,OAAI/K,EAAAA,cAACmmD,EAAW,CAAC1xC,eAAgB,SAAC9Z,GAAC,OAAKk7D,EAAK74D,MAAM6T,UAAS4D,EAAAA,EAAAA,MAAiB,EAAED,SAAUqhD,EAAK74D,MAAM0U,WAAWzT,IAAI,YAAaqoD,iBAAkBuP,EAAK51D,MAAMovD,aAAc1I,cAAe,SAAC/zC,GAAS,OAAKijD,EAAKp3D,SAAS,CAAC,aAAiBmU,GAAW,EAAEg0C,QAASiP,EAAK74D,MAAM0U,WAAWzT,IAAI,SAAU4qD,WAAYgN,EAAK74D,MAAM0U,WAAWzT,IAAI,eAAgB+V,UAAW6hD,EAAK74D,MAAM0U,WAAWzT,IAAI,QAASgW,WAAY4hD,EAAK74D,MAAM0U,WAAWd,MAAM,CAAC,UAAU,qBAAsB0B,YAAaujD,EAAK74D,MAAM0U,WAAWd,MAAM,CAAC,UAAU,kBAAmB24C,SAAUsM,EAAK74D,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eAAiBhW,EAAE,cAAe0uD,MAAOuM,EAAK51D,MAAMqpD,MAAOD,OAAQwM,EAAK51D,MAAMopD,OAAQxC,UAAWgP,EAAKhP,UAAW9jB,QAAS8yB,EAAK74D,MAAM+lC,QAASilB,mBAAoB6N,EAAK7N,mBAAoBE,UAAW2N,EAAK3N,UAAWD,iBAAkB4N,EAAK5N,iBAAkBnB,eAAgB+O,EAAK/O,eAAgBS,aAAcsO,EAAKtO,aAAcsI,aAAcgG,EAAKhG,aAAcpqB,cAAeowB,EAAKpwB,cAAe6hB,eAAgBuO,EAAKvO,eAAgB7tC,aAAco8C,EAAKp8C,aAAcrZ,GAAI2K,EAAOjN,IAAK,OAAOiN,EAAOilB,IAAKA,GAAO,SAEppC44B,EAAW,GAGnB,IAAInkD,EAEAA,GADwB,IAAxBrG,KAAK6B,MAAM0uD,SACG/zD,EAAE,mBACTwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WACrChW,EAAE,oBACTwD,KAAK6B,MAAMuvD,aAAar0D,OAAS,EAC1BiD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,6BAA+B3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,6BAA+BhW,EAAE,uBAE9IwD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA0B3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,wBAA0BhW,EAAE,kBAGlJigB,EAAa,gDAAjB,IACIC,EAAkB,sBAElB1c,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cACvC+J,GAAmB,eACf1c,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBACvC+J,GAAmB,uBAIvB1c,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,gBAAuD,SAArC3S,KAAKpB,MAAM0U,WAAWzT,IAAI,UACnF4c,EAAa,oCACbC,GAAmB,sBAGnB1c,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,kBAAoB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,KAAO,IACpI0Q,GAAmB,sBAGoB,IAAvC1c,KAAKpB,MAAM0U,WAAWzT,IAAI,WAA+C,IAAzBG,KAAK4yD,kBACrDl2C,GAAmB,cAGvB,IAAIi7C,EAAqB,gBAEqC,GAA1D33D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAC5CmlD,GAA4D,SAArC33D,KAAKpB,MAAM0U,WAAWzT,IAAI,QAAqB,QAAU,SAMpF,IAAI+3D,GAAW,EACXlH,GAAgB,EAChBmH,GAAc,EAEd7hD,EAAW,GACX8hD,EAAc,iEAEdC,EAAoB/3D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,iBAExD3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBo2B,EAAAA,IAG1D5oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBq2B,EAAAA,KAE1D7oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,GAAKxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAes2B,EAAAA,IAAmB9oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,MAMlNhpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,IAAsBhpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,IAC5G,IAA3BxS,KAAK6B,MAAM8uD,aAEV3wD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,gBAAkB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBo2B,EAAAA,IAC7H5oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,IAC1DhpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBq2B,EAAAA,MAE9DgvB,GAAc,KAGgB,IAA7B73D,KAAK6B,MAAM6uD,eAA0BqH,IAAqB/3D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,gBAClGqD,EAAWhW,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAc,8BAAgCG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,OAAS,WAAaxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,SAEvLxS,KAAKpB,MAAM0U,WAAWzT,IAAI,WAC1BmW,EAAWA,EAAW,YAAchW,KAAKpB,MAAM0U,WAAWzT,IAAI,UAGlEmW,EAAWA,EAAW,aAAehW,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAW,gBAAiC,IAAhBqlD,EAAuB,gBAAkB,IAEnI73D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAW,iBACxCqD,EAAWhW,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAW,eAAerQ,QAAQ,YAAYnC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,QAAQrQ,QAAQ,cAAcnC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAY,YAA6B,IAAhBqlD,EAAuB,cAAgB,KAG9PnH,GAAgB,EAEhBkH,GAAW,IAGe,IAArBG,GACA/3D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,mBAAsF,IAAjE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,iBACtGxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,IAC1DhpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBo2B,EAAAA,IAC9D5oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBq2B,EAAAA,IAEC,GAAlE7oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,qBAE9ColD,GAAW,EACXE,EAAc,YAItB,IAAME,EAAWh4D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAqBhW,EAAE,mBAEzEy7D,EAAgB,CAACvkB,UAAW1zC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cAAgB3S,KAAK6B,MAAM6xC,SAAW,OAAS,KAElHr3B,EAAMrc,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,QAAU3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,QAAU,IAE9G,OACI5Q,EAAAA,cAACA,EAAAA,SAAc,KAEV5B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAa5Q,EAAAA,cAACoa,GAAAA,EAAS,CAACC,UAAWzf,EAAE,gBAAiB2f,MAAO,SAAC5f,GAAC,OAAKk7D,EAAK74D,MAAM6T,UAAS4D,EAAAA,EAAAA,KAAe,GAAM,EAAEpR,KAAMjF,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAE7MxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAAsB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,GAA0E,IAArExS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,sBAAmG,IAArExS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,qBAA6BulD,IAAqBn2D,EAAAA,cAAClD,EAAAA,EAAS,CAACssD,YAAa,SAACzuD,GAAC,OAAKk7D,EAAK74D,MAAM6T,UAAS+xB,EAAAA,EAAAA,KAAgB,GAAO,EAAEumB,aAAc,SAACxuD,GAAC,OAAKk7D,EAAK74D,MAAM6T,UAAS+xB,EAAAA,EAAAA,KAAgB,GAAM,EAAEvlC,OAAQe,KAAKpB,MAAM4lC,gBAAiBvkC,QAASD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,mBAAqBxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAO,IAAIxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,UAAYxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cAAgB,oBAAsB,KAAO3S,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAW,YAAcG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAW,QAE3yB6wD,GAAiB9uD,EAAAA,cAACA,EAAAA,SAAc,KAChB,GAAZg2D,GAAqB53D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,iBAAiB,aAAe3S,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,iBAAmB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,iBAAiB,YAAc5Q,EAAAA,cAAA,OAAKI,GAAG,wBAAwBF,UAAW,iCAAiC9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAY5Q,EAAAA,cAACotD,EAAU,CAACM,aAAa,EAAMnG,aAAcnpD,KAAKmpD,aAAckG,IAAKrvD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,qBAAuB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcs2B,EAAAA,GAAkB9oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,EAAGmhB,OAAQ3zB,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,iBAAiB,cAC3oB5Q,EAAAA,cAAA,UAAQ81D,kBAAkB,OAAO/zD,IAAKqS,EAAUq2B,YAAY,IAAIvqC,UAAWg2D,MAG7EF,GAAYlH,IAAkB9uD,EAAAA,cAACysD,EAAQ,CAACS,UAAW4B,EAAe/B,aAAc3uD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,kBAAmB22C,aAAcnpD,KAAKmpD,aAAcD,eAAgBlpD,KAAKkpD,eAAgB2F,UAAW7uD,KAAKpB,MAAM0U,WAAWzT,IAAI,aAAc4S,SAAUzS,KAAKpB,MAAM6T,SAAUm8C,WAAY5uD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,eAAgBmhB,OAAQ3zB,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAYo1B,MAAO5nC,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAU2nC,OAAQxnC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAY0yB,KAAMllC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAUizB,QAASzlC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAE/nBolD,GAAYh2D,EAAAA,cAACA,EAAAA,SAAc,KAEuC,GAAlE5B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,mBAA0B5Q,EAAAA,cAAClD,EAAAA,EAAS,CAACqsD,aAAc/qD,KAAKpB,MAAM+lC,QAASqmB,YAAahrD,KAAKpB,MAAMosD,YAAa/rD,OAAQe,KAAKpB,MAAMosD,YAAa/qD,QAAS,sBAAsBD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAO,IAAIxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,WAEnTxS,KAAK6B,MAAM4W,YAAc7W,EAAAA,cAAClD,EAAAA,EAAS,CAACie,UAAW3c,KAAK6B,MAAM4W,WAAYnZ,WAAYU,KAAKV,WAAYL,OAAQe,KAAK4W,YAAa3W,QAAS,sBAAsBD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAO,aAE3MxS,KAAK6B,MAAMiV,gBAAkBlV,EAAAA,cAAClD,EAAAA,EAAS,CAACie,UAAW3c,KAAK6B,MAAMiV,eAAgB8F,YAAa5c,KAAKkZ,kBAAmB5Z,WAAYU,KAAKV,WAAYL,OAAQe,KAAK8W,eAAgB7W,QAAS,sCAAsCD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAO,WAAWxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,WAE9TxS,KAAK6B,MAAMgvD,UAAYjvD,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAACquD,GAAS,CAACtzC,UAAW3c,KAAK6B,MAAMgvD,SAAUU,WAAYvxD,KAAKuxD,WAAYtyD,OAAQe,KAAKswD,SAAU4H,SAAUl4D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAU2lD,OAAQn4D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,UAE3PxS,KAAK6B,MAAMivD,gBAAkBlvD,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAACsuD,GAAa,CAACvzC,UAAW3c,KAAK6B,MAAMivD,eAAgB7xD,OAAQe,KAAKuxD,WAAYA,WAAYvxD,KAAKiyD,oBAEhH,SAArCjyD,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAsBG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAyE,GAAxD3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eAAsB5Q,EAAAA,cAAA,OAAKE,UAAU,qCAChL9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,KAAGW,QAASvC,KAAK2kC,QAAS9tB,MAAOmhD,GAAWp2D,EAAAA,cAAA,KAAGE,UAAU,sCAAqC,KAAYF,EAAAA,cAAA,QAAME,UAAU,qBAAqBk2D,KAG3Mh4D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,iBAAiB,aAAe3S,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,iBAAmB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,iBAAiB,YAAc5Q,EAAAA,cAAA,OAAKI,GAAG,wBAAwBF,UAAW,iCAAiC9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAY5Q,EAAAA,cAACotD,EAAU,CAACM,aAAa,EAAOnG,aAAcnpD,KAAKmpD,aAAckG,IAAKrvD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,qBAAuB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcs2B,EAAAA,GAAkB9oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,EAAGmhB,OAAQ3zB,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,iBAAiB,cAEvnB5Q,EAAAA,cAAA,OAAKE,UAAW2a,GAAczc,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,uBAAyF,IAAhE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,sBAA8B,yBAA2B,IAAKjQ,QAAS,SAAChG,GAAOk7D,EAAKp3D,SAAS,CAAC,aAAiB,GAAG,EAAG2B,GAAG,gBAAgBo2D,gBAAiBp4D,KAAK+xD,kBAE9R/xD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,uBAAyF,IAAhE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,uBAA+B5Q,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IAAGhpD,EAAAA,cAACuuD,GAAU,CAACkI,eAAgB,SAACx2D,GAAK,OAAK41D,EAAKp3D,SAASwB,EAAM,EAAEy2D,QAASt4D,KAAK6B,MAAMopD,QAAUjrD,KAAK6B,MAAMqvD,IAAM,EAAG57C,KAAK,uBAEjR1T,EAAAA,cAAA,OAAKE,UAAW4a,EAAiB1a,GAAG,kBAAkB0E,MAAOuxD,EAAe/xD,IAAKlG,KAAKmZ,iBACjFnZ,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,OAAK8L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,iBACrIg4C,EACAxqD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,kBAAoB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,KAAO,GAAKhM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBlG,KAAI,SAACslB,EAAKjlB,GAAK,OAClN/K,EAAAA,cAAA,OAAK,aAAW,IAAIE,UAAU,qCACzB21D,EAAK74D,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cAAgB8kD,EAAK74D,MAAM0U,WAAWX,MAAM,CAAC,UAAU,mBAAqB/Q,EAAAA,cAAA,OAAKE,UAAU,YAAW,KAC9IF,EAAAA,cAAA,OAAKE,UAAU,YACV8vB,EAAItb,MAAM,MAAMhK,KAAI,SAAC5I,EAAM6S,GAAS,OAAQ3U,EAAAA,cAACA,EAAAA,SAAc,CAAClC,IAAK6W,GAAM7S,EAAK9B,EAAAA,cAAA,WAAwB,KAExG61D,EAAK74D,MAAM0U,WAAWX,MAAM,CAAC,UAAU,aAAe8kD,EAAK74D,MAAM0U,WAAWX,MAAM,CAAC,UAAU,mBAAqB/Q,EAAAA,cAAA,OAAKE,UAAU,YAAW,KAC3I,KAEb9B,KAAK6B,MAAMmvD,cAAgBpvD,EAAAA,cAAA,OAAKE,UAAU,8CAA8CE,GAAG,wBAAuBJ,EAAAA,cAAA,UAAQU,KAAK,SAASC,QAASvC,KAAKgyD,gBAAiBlwD,UAAU,4BAA6B9B,KAAK6B,MAAMopD,QAAUjrD,KAAK6B,MAAMqvD,IAAM,GAAKtvD,EAAAA,cAAA,WAAKA,EAAAA,cAAA,KAAGE,UAAU,kBAAiB,KAAa9B,KAAK6B,MAAMqvD,IAAI,IAAqB,GAAlBlxD,KAAK6B,MAAMqvD,IAAYlxD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,cAAgBhW,EAAE,kBAAsBwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eAAiBhW,EAAE,qBAAiCwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,iBAAmBhW,EAAE,2BAI5jBwD,KAAK6B,MAAMuvD,aAAar0D,OAAS,GAC9B6E,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IACfhpD,EAAAA,cAACwuD,GAAW,CACRgB,aAAcpxD,KAAK6B,MAAMuvD,aACzBmH,aAAcv4D,KAAK0pC,kBACnBltC,EAAGA,KAKfoF,EAAAA,cAAA,OAAKE,YAAuD,IAA3C9B,KAAKpB,MAAM0U,WAAWzT,IAAI,eAAuD,IAA7BG,KAAK6B,MAAM2uD,cAA0B,UAAY,WAAa,4DAC7HxwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,SAAYxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAsE,mBAAzDxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAmCxS,KAAKpB,MAAM0U,WAAWzT,IAAI,kBAAoB+B,EAAAA,cAAA,OAAKI,GAAG,qBAAqBF,UAAU,iBAAiB9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAyF,IAA5ExS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,UAAUxV,QAAQ,SAAkBgD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,UAAYhW,EAAE,eAAewD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,UAAUwa,eAAmBhtB,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAkBrD,EAAE,+BAAiCwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,SAExpB,SAArCxS,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAsBG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAyE,GAAxD3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eAAsB5Q,EAAAA,cAAA,OAAKE,UAAU,4BAChL9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,KAAGW,QAASvC,KAAK2kC,QAAS9tB,MAAOmhD,GAAWp2D,EAAAA,cAAA,KAAGE,UAAU,2CAA0C,OAGhKF,EAAAA,cAACukD,EAAW,CAACE,UAAU,yBACnBzkD,EAAAA,cAAA,OAAKE,UAAU,6CACXF,EAAAA,cAAA,UAAQU,KAAK,SAASR,UAAU,kDAAkDE,GAAG,wBAAwB,iBAAe,WAAW,gBAAc,OAAO,gBAAc,SAAQ,KAClLJ,EAAAA,cAAA,OAAKE,UAAW,iEAAsG,OAArChC,OAAOC,QAAkB,SAAO,IAAa,oBAAsB,KAChJ6B,EAAAA,cAAA,OAAKE,UAAU,wBACXF,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAK9F,aAAmB,EAAGpvD,QAASvC,KAAK2xD,YAAa96C,MAAOra,EAAE,sBAAsBoF,EAAAA,cAAA,KAAGE,UAAW,iDAA4G,IAA5D9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAuB,eAAiB,mBAA+E,IAA5DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAuB5Q,EAAAA,cAACA,EAAAA,SAAc,KAAC,KAA4BA,EAAAA,cAACA,EAAAA,SAAc,KAAC,OACjb5B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,WAAa/Q,EAAAA,cAAA,KAAGK,SAAS,IAAIoJ,OAAO,SAASyK,KAAM9V,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAc,kBAAmBG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAMxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAUqE,MAAOra,EAAE,iBAAiBoF,EAAAA,cAAA,KAAGE,UAAU,yDAAwD,MAC7V9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,YAAc/Q,EAAAA,cAAA,KAAGK,SAAS,IAAIoJ,OAAO,SAASyK,KAAM9V,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAc,oBAAqBG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAS,IAAMxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAUqE,MAAOra,EAAE,kBAAkBoF,EAAAA,cAAA,KAAGE,UAAU,4DAA2D,OACnW9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,UAAY/Q,EAAAA,cAACwpD,EAAgB,CAACe,YAAansD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,iBAAkBq7C,OAAQ7tD,KAAKuwD,SAAUzC,SAAU9tD,KAAKmY,eAAgBo1C,aAAcvtD,KAAKkpD,eAAgBoE,cAAettD,KAAKstD,cAAeP,SAAU/sD,KAAKwxD,cAAe/D,SAAUztD,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAa4lC,QAASzlC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAQ0yB,KAAMllC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAUpT,MAAM,KAEvgBY,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAwE,GAA1DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAmBxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,YAAkE,IAArD3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,WAAsB5Q,EAAAA,cAAA,KAAGK,SAAS,IAAIM,QAASvC,KAAKyoD,UAAW5xC,MAAOra,EAAE,iBAAiBoF,EAAAA,cAAA,KAAGE,UAAU,yDAAwD,OAGlX9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAexS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cAAgB/Q,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAK7gD,aAAmB,EAAGrU,QAASvC,KAAK4W,YAAaC,MAAOra,EAAE,mBAAmBoF,EAAAA,cAAA,KAAGE,UAAU,0DAAyD,MACpU9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,UAAY/Q,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAKnH,UAAgB,EAAG/tD,QAASvC,KAAKswD,SAAUz5C,MAAOra,EAAE,gBAAiBoF,EAAAA,cAAA,KAAGE,UAAU,wDAAuD,MAC1P9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAKlG,WAAWhyD,MAAY,EAAGgD,QAAS,SAAChD,GAAK,OAAKk4D,EAAKlG,WAAWhyD,EAAM,GAAEqC,EAAAA,cAAA,KAAGE,UAAU,sDAAqD,MAC9P9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAK74D,MAAM+lC,SAAe,EAAGpiC,QAASvC,KAAKpB,MAAM+lC,QAAS9tB,MAAOmhD,GAAWp2D,EAAAA,cAAA,KAAGE,UAAU,yDAAwD,MAClQ9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,cAAgB/Q,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAK3gD,gBAAsB,EAAGvU,QAASvC,KAAK8W,eAAgBD,MAAOra,EAAE,gBAAiBoF,EAAAA,cAAA,KAAGE,UAAU,wDAAuD,UAM3RF,EAAAA,cAAA,OAAKE,UAAW61D,GACX33D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAAiB/Q,EAAAA,cAAA,UAAQU,KAAK,SAASC,QAASvC,KAAK4xD,WAAY9vD,UAAU,yBAAyBtF,EAAE,+BACrMwD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aACnCxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,gBAE/C/Q,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cAACkD,EAAAA,EAAc,CACXG,KAAOjF,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,WAAgC,GAAnBxS,KAAK6B,MAAMtD,MAC3EkH,cAAezF,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,eACtD9M,iBAAkB1F,KAAKqb,aACvB1V,YAAa3F,KAAKmyD,MAClBjtD,aAAclF,KAAKqxD,aACnB/rD,cAAetF,KAAK+Y,aACpBnT,aAAc5F,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcxS,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAClG0F,YAAa,SAAChJ,GAAOk7D,EAAKp3D,SAAS,CAAC,aAAiB,GAAG,EACxD+E,cAAe,gGAAuI,IAAvCpF,KAAKpB,MAAM0U,WAAWzT,IAAI,UAAqBG,KAAKmY,eAAeC,UAAY,QAAQmE,KAAKvc,KAAK6B,MAAMtD,QAAWyB,KAAK6B,MAAMtD,MAAMxB,OAASiD,KAAKmY,eAAeC,QAAQoE,YAAYH,GAAS,eAAiB,gBAC7ThX,gBAAiBgB,EACjBlB,YAAanF,KAAKpB,MAAMuZ,oBAMtCnY,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAexS,KAAKpB,MAAM0U,WAAWzT,IAAI,iBAAmB+B,EAAAA,cAAA,OAAKE,UAAU,iBAAiBE,GAAG,uBAErIJ,EAAAA,cAAA,OAAKE,UAAU,oCAAoCE,GAAG,4BAExB,IAAzBhC,KAAK6B,MAAM+uD,WAAsBhvD,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAACouD,GAAY,CAACzC,aAAcvtD,KAAKkpD,eAAgB6D,SAAU/sD,KAAKwxD,cAAe/D,SAAUztD,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAa4lC,QAASzlC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAQ0yB,KAAMllC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,SAAUgmD,WAAYx4D,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,kBAAmBimD,OAAQz4D,KAAK8xD,0BAE5X9xD,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,kBAAyF,GAArE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,QAAehM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,eAAiBxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA6C,IAAjB7S,OAAO0lB,OAAqD,GAA3BxlB,KAAK6B,MAAMtD,MAAMxB,QAAiD,GAAlCiD,KAAK6B,MAAMuvD,aAAar0D,SAAyC,IAAzBiD,KAAK6B,MAAM+uD,WAAuBhvD,EAAAA,cAAA,KAAGK,SAAS,IAAI8U,WAAY,SAACxa,GAAkB,UAAVA,EAAEmD,KAAkB+3D,EAAK5F,qBAA2B,EAAGtvD,QAASvC,KAAK6xD,oBAAqBh7C,MAAOra,EAAE,wBAC/hBoF,EAAAA,cAAA,KAAGE,UAAU,uDAAsD,QAGnE9B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,kBAAyF,GAArE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,QAAehM,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAmBxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,0BAA+C,IAAjB7S,OAAO0lB,SAA6BxlB,KAAK6B,MAAMtD,MAAMxB,OAAS,GAAKiD,KAAK6B,MAAMuvD,aAAar0D,OAAS,KAA+B,IAAzBiD,KAAK6B,MAAM+uD,YAAyBhvD,EAAAA,cAAA,KAAGK,SAAS,IAAIe,UAAW,SAACzG,GAAsB,UAAVA,EAAEmD,MAAmBnD,EAAE0G,iBAAkBw0D,EAAKnG,cAAe,EAAG/uD,QAASvC,KAAKsxD,YAAaz6C,MAAOra,EAAE,oBAC1iBoF,EAAAA,cAAA,KAAGE,UAAW,0CAAuE,GAA3B9B,KAAK6B,MAAMtD,MAAMxB,QAAiD,GAAlCiD,KAAK6B,MAAMuvD,aAAar0D,SAAwC,IAAzBiD,KAAK6B,MAAM+uD,UAAsB,oBAAsB,gBAAgB,OAGzM5wD,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,eAAkBxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,kBAAoB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,iBAAiBxG,KAAO,IAAOpK,EAAAA,cAAA,KAAGE,UAAU,4DAA2D,SAcnT,IAAC,CAntCH,CAEuB+L,EAAAA,aAAS0F,IAotClC,IAAe1P,EAAAA,EAAAA,IAAf,CAAiCwsD,uJC3uCjC,IAAMqI,GAAc92D,EAAAA,MAAW,kBAAM,6BAAuB,IACtD+2D,GAAsB/2D,EAAAA,MAAW,kBAAM,6BAA+B,IACtEuuD,GAAavuD,EAAAA,MAAW,kBAAM,6BAAsB,IAYpDg3D,IAAQxlD,IANbF,EAAAA,EAAAA,KAAQ,SAACG,GACN,MAAO,CACHC,WAAYD,EAAMC,WAE1B,IAAEF,GAAAG,GAAA,SAAA3I,GAQE,SAAAguD,EAAYh6D,GAAO,IAAAC,QAmBqE,OAnBrEC,EAAAA,EAAAA,GAAA,KAAA85D,KACf,OAAAA,IAAA,CAAMh6D,gBAANC,kFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QALT,CAER,GAIIA,EAAK8lC,QAAU9lC,EAAK8lC,QAAQ55B,KAAIlM,GAChCA,EAAK4nD,UAAY5nD,EAAK4nD,UAAU17C,KAAIlM,GACpCA,EAAKmsD,YAAcnsD,EAAKmsD,YAAYjgD,KAAIlM,GACxCA,EAAK0c,WAAa1c,EAAK0c,WAAWxQ,KAAIlM,GACtCA,EAAKuc,YAAcvc,EAAKuc,YAAYrQ,KAAIlM,GACxCA,EAAK6a,oBAAsB7a,EAAK6a,oBAAoB3O,KAAIlM,GACxDA,EAAKsW,cAAgBtW,EAAKsW,cAAcpK,KAAIlM,GAC5CA,EAAK2nD,aAAe3nD,EAAK2nD,aAAaz7C,KAAIlM,GAC1CA,EAAKg6D,UAAY,EAEjBh6D,EAAKi6D,YAAc,KACnBj6D,EAAKk6D,aAAe,KACpBl6D,EAAKgxD,kBAAmB,EACxBhxD,EAAKga,WAAa,KAElBha,EAAKsG,YAAcvD,EAAAA,YAEnBqT,EAAAA,EAAgBmE,aAAalK,YAAY,oBAAoB,SAAC3S,GAAC,OAAKsC,EAAK8lC,SAAS,IAAE9lC,CACxF,CAAC,OAAAW,EAAAA,EAAAA,GAAAo5D,EAAAhuD,IAAAnL,EAAAA,EAAAA,GAAAm5D,EAAA,EAAAl5D,IAAA,cAAAnB,MAED,WACIyB,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,gBAAiB,IAAO,IACxF,GAAC,CAAA/S,IAAA,gBAAAnB,MAED,SAAcqc,GACV5a,KAAK6Y,WAAa+B,CACtB,GAAC,CAAAlb,IAAA,UAAAnB,MAED,SAAQqc,GAOJ,QALsB,IAAXA,IACPA,EAAS,CAAC,IAIkC,IAA5C5a,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAoE,IAA1CG,KAAKpB,MAAM0U,WAAWzT,IAAI,cAAuE,IAA/CG,KAAKpB,MAAM0U,WAAWzT,IAAI,kBAA6BG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,cAGpM,OAFAxS,KAAKpB,MAAM6T,SAAS,CAACnQ,KAAM,WAAYgT,KAAM,CAAC,iBAAkBhV,MAAM,SACtEN,KAAKpB,MAAM6T,SAAS,CAACnQ,KAAM,WAAYgT,KAAM,CAAC,eAAe,cAAehV,KAAMsoC,EAAAA,KAItF,IAAIH,GAAa,EACbuwB,GAAmB,EACnBC,GAAU,EAEVvwB,EAAmB1oC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,eAAe,iBAAmB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBm2B,EAAAA,IAA2B3oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBo2B,EAAAA,IAA2B5oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,gBAAkBq2B,EAAAA,KAClU7oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,GACtDxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAes2B,EAAAA,IAC3D9oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,KAG1DD,EAAoB/oC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAAcw2B,EAAAA,IAAsBhpC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,GAEtI,GAAnBk2B,GAA2BK,IAAqB/oC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,gBAGlF3S,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,mBAAsF,IAAjE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,iBAA6C,GAAnBk2B,EAGrIswB,GAAmB,EAFnBvwB,GAAa,IAOF,IAAfA,GAAwBzoC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,mBAAwF,IAAnE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,kBACjIxS,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,gBAAiB,IAAO,MAKjB,IAAnEzS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,mBAC7CxS,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,gBAAiB,IAAO,KAIf,IAArEzS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,qBAC7CxS,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,kBAAmB,IAAO,KAGtFzS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,oBAA2F,IAArE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,gBAAgB,qBAA6BxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,IAC7LxS,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,kBAAmB,IAAO,KACtFwmD,GAAU,IAGW,IAArBD,GAO2C,IAA3Ch5D,KAAKpB,MAAM0U,WAAWzT,IAAI,cAA0BG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,eAA+B,GAAd81B,IAAwBzoC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,QAAU,IAAOxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,qBAAuB3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,aAAes2B,EAAAA,IAC1T9oC,KAAKpB,MAAM6T,UAASkyB,EAAAA,EAAAA,IAAQ,CAAC,cAAgB/pB,IAAUA,EAAmB,aAAIA,EAAmB,WAAW,cAAkB,cAAe,SAAY,EAAM,IAAQ5a,KAAKpB,MAAM0U,WAAWzT,IAAI,OAAQ,KAAQ,CAACmC,GAAKhC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAQ0yB,KAAOllC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,aACpS,GAAXymD,GACPj5D,KAAKpB,MAAM6T,UAASkyB,EAAAA,EAAAA,IAAQ,CAAC,cAAgB/pB,IAAUA,EAAmB,aAAIA,EAAmB,WAAW,IAAQ5a,KAAKpB,MAAM0U,WAAWzT,IAAI,OAAQ,KAAQ,CAACmC,GAAKhC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,OAAQ0yB,KAAOllC,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,WAAW,aAPnQxS,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,WAAY,KAAS,CAAC,KAAQ,cAAe,IAAO,KAS1F,GAAC,CAAA/S,IAAA,YAAAnB,MAED,WAEI,IAAIymD,EAAc,KAEdllD,OAAOsK,QAAUtK,OAAOsK,OAAO,KAAK6K,EAAAA,EAAgByvC,mBAA6C,IAAzB5kD,OAAOsK,OAAOi+B,OACtF2c,EAAcllD,OAAOsK,OAAO,KAAK6K,EAAAA,EAAgByvC,iBAAiBO,cAC3DnlD,OAAOga,QAAUha,OAAOga,OAAO,KAAK7E,EAAAA,EAAgByvC,mBAA6C,IAAzB5kD,OAAOga,OAAOuuB,SAC7F2c,EAAcllD,OAAOga,OAAO,KAAK7E,EAAAA,EAAgByvC,iBAAiBO,eAGlD,OAAhBD,EACAA,EAAY10C,UAAU,aAEtB2E,EAAAA,EAAgBgC,kBAAkB,YAAa,GAEvD,GAAC,CAAAvX,IAAA,eAAAnB,MAED,WACI,IAAI26D,EAAoBl5D,KAAKpB,MAAM0U,WAAWzT,IAAI,sBAAsB0nD,SAAS,gBAAkBvnD,KAAKpB,MAAM0U,WAAWzT,IAAI,+BAAiC,eAAiBG,KAAKpB,MAAM0U,WAAWzT,IAAI,+BAA+B0nD,SAAS,UAAY,SAAW,SACxQtyC,EAAAA,EAAgBgC,kBAAkB,eAAgB,CAAC,CAAC,mBAAsBiiD,KAC1El5D,KAAKpB,MAAM6T,SAAS,CAAC,KAAS,qBAAsB,KAASymD,GACjE,GAAC,CAAAx5D,IAAA,aAAAnB,MAED,SAAWgwC,GACPvuC,KAAK84D,YAAcvqB,CACvB,GAAC,CAAA7uC,IAAA,cAAAnB,MAED,SAAYisD,GACRxqD,KAAK+4D,aAAevO,CACxB,GAAC,CAAA9qD,IAAA,sBAAAnB,MAED,SAAoB46D,GAChBn5D,KAAK6vD,iBAAmBsJ,CAC5B,GAAC,CAAAz5D,IAAA,SAAAnB,MAED,WAAS,IAAAoB,EAAA,KAEL,IAAgD,IAA5CK,KAAKpB,MAAM0U,WAAWzT,IAAI,cAC1B,OAAO,KAGX,IAA6D,IAAzDG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,YAAY,YACzC,OAAQ5Q,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,OAAMhpD,EAAAA,cAAC+2D,GAAmB,CAACxjD,cAAenV,KAAKmV,iBAG9E,IAAIrT,EAAY,yDAYhB,MAVyC,UAArC9B,KAAKpB,MAAM0U,WAAWzT,IAAI,QAC1BiC,GAAkE,GAAzC9B,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAsB,eAAiB,gBAC9C,SAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,UACjCiC,GAAkE,GAAzC9B,KAAKpB,MAAM0U,WAAWzT,IAAI,YAAsB,qBAAuB,uBAGhGG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,gBAAuD,SAArC3S,KAAKpB,MAAM0U,WAAWzT,IAAI,UACnFiC,GAAa,YAG+B,IAA5C9B,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAyE,IAA/CG,KAAKpB,MAAM0U,WAAWzT,IAAI,kBAC9EiC,GAAa,mCAAqC9B,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,eAAe,YAChC,IAA1DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAAqE,IAA5CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAC7FiC,GAAa,SAETF,EAAAA,cAACA,EAAAA,SAAc,KAClB5B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,0BAAqF,IAA1D3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAAoE,IAA5CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAA2B+B,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,4BAC/O,IAA1DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAAoE,IAA5CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,gBAAgE,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuB+B,EAAAA,cAAC0kD,EAAU,CAACE,aAAcxmD,KAAKwmD,aAAcC,UAAWzmD,KAAKymD,UAAW9hB,QAAS3kC,KAAK2kC,UAChQ/iC,EAAAA,cAAA,OAAKE,UAAWA,GAAWF,EAAAA,cAACyuD,GAAU,CAACl4C,eAAgBnY,KAAKmF,YAAa0qD,iBAAkB7vD,KAAK6vD,iBAAkBF,cAAe3vD,KAAK84D,YAAalJ,eAAgB5vD,KAAK+4D,aAAc/N,YAAahrD,KAAKgrD,YAAarmB,QAAS3kC,KAAK2kC,WAClO3kC,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA2F,IAAjE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,0BAA2F,IAA1DxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAAoE,IAA5CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,iBAA6BG,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,UAAY/Q,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,2BAAqC5Q,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IAAGhpD,EAAAA,cAAA,OAAKE,UAAU,2BAA0BF,EAAAA,cAACuuD,GAAU,CAACkI,eAAgB,SAACx2D,GAAK,OAAKlC,EAAKU,SAASwB,EAAM,EAAEyT,KAAK,6BAEhiB,IAA1CtV,KAAKpB,MAAM0U,WAAWzT,IAAI,cAAuE,IAA/CG,KAAKpB,MAAM0U,WAAWzT,IAAI,kBAC9EG,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAA0D,IAA3CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,eACpFiC,GAAa,SAEjBA,GAAa,cACLF,EAAAA,cAACA,EAAAA,SAAc,KAAE5B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,yBAA2B3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAA0D,IAA3CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,eAA0B+B,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,2BACnTxS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,cAA0D,IAA3CxS,KAAKpB,MAAM0U,WAAWzT,IAAI,eAA+D,UAArCG,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuB+B,EAAAA,cAAC0kD,EAAU,CAACE,aAAcxmD,KAAKwmD,aAAcC,UAAWzmD,KAAKymD,UAAW9hB,QAAS3kC,KAAK2kC,UAAY/iC,EAAAA,cAAA,OAAKE,UAAWA,GAAWF,EAAAA,cAACqW,EAAAA,EAAS,CAACE,eAAgBnY,KAAKmF,YAAa0T,WAAY7Y,KAAK6Y,WAAYa,oBAAqB1Z,KAAK0Z,oBAAqB6B,WAAYvb,KAAKub,WAAYH,YAAapb,KAAKob,eACpcpb,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA0B3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,aAAa,aAAgF,IAAjExS,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,yBAAkCxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,UAAY/Q,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,2BAAqC5Q,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IAAGhpD,EAAAA,cAAA,OAAKE,UAAU,2BAA0BF,EAAAA,cAACuuD,GAAU,CAACkI,eAAgB,SAACx2D,GAAK,OAAKlC,EAAKU,SAASwB,EAAM,EAAEyT,KAAK,6BAGlhBxT,GAAa,gBACLF,EAAAA,cAACA,EAAAA,SAAc,KAAE5B,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA0B/Q,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,0BAAsE,UAArCxS,KAAKpB,MAAM0U,WAAWzT,IAAI,SAAuB+B,EAAAA,cAAC0kD,EAAU,CAACE,aAAcxmD,KAAKwmD,aAAcC,UAAWzmD,KAAKymD,UAAW9hB,QAAS3kC,KAAK2kC,UAAY/iC,EAAAA,cAAA,OAAKE,UAAWA,GAAWF,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IAAGhpD,EAAAA,cAAC82D,GAAW,QACvb14D,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,wBAA2F,IAAjE3S,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,yBAAkCxS,KAAKpB,MAAM0U,WAAWX,MAAM,CAAC,UAAU,UAAY/Q,EAAAA,cAAA,OAAKE,UAAU,0BAA0B4L,wBAAyB,CAACC,OAAO3N,KAAKpB,MAAM0U,WAAWd,MAAM,CAAC,UAAU,2BAAqC5Q,EAAAA,cAACmc,EAAAA,SAAQ,CAAC6sC,SAAS,IAAGhpD,EAAAA,cAAA,OAAKE,UAAU,2BAA0BF,EAAAA,cAACuuD,GAAU,CAACkI,eAAgB,SAACx2D,GAAK,OAAKlC,EAAKU,SAASwB,EAAM,EAAEyT,KAAK,2BAGje,IAAC,CA/LH,CAEqBzH,EAAAA,aAAS0F,IAgMhC,oKClNyD,IAEnD6lD,GAAS,SAAAz6D,GAMX,SAAAy6D,EAAYx6D,GAAO,IAAAC,QAEkE,OAFlEC,EAAAA,EAAAA,GAAA,KAAAs6D,KACf,OAAAA,IAAA,CAAMx6D,gBAANC,kFAAaE,EAAAA,EAAAA,GAAAF,EAAA,QALT,CAER,IAACE,EAAAA,EAAAA,GAAAF,EAAA,aAOW,SAACtC,GACK,eAAVA,EAAE+F,OACiB,IAAf/F,EAAE88D,YAAwC,IAAlB98D,EAAE+8D,cAA4C,IAAlB/8D,EAAE+8D,aAAwD,GAAhCx5D,OAAOC,QAAoB,aACzGlB,EAAK06D,cAAc,eAEF,GAAjBh9D,EAAE+8D,aACFrkD,EAAAA,EAAgBgC,kBAAkB,iBAAiB,CAAC,CAAC,KAAS1a,EAAEk5D,MAAQ,KAAO,SAAYl5D,EAAEm5D,UAAY,KAAO,KAAS,iBAAiB,IAASn5D,EAAE20D,KAAO,MAE/I,kBAAV30D,EAAE+F,OAA2C,IAAf/F,EAAE88D,SACa,OAA/CpkD,EAAAA,EAAgBk+C,kBAAkB,WAClCl+C,EAAAA,EAAgBoF,kBAAkB,QAAQ,GAC1Cxb,EAAK06D,cAAc,mBAEP,YAAVh9D,EAAE+F,OAAqC,IAAf/F,EAAE88D,UACjCx6D,EAAK06D,cAAc,kBAGa,GAAhCz5D,OAAOC,QAAoB,YAC3BkV,EAAAA,EAAgBgC,kBAAkB,uBAAuB,CAAC,CAAC,QAAS,IAG5E,KAAClY,EAAAA,EAAAA,GAAAF,EAAA,iBAEe,SAACiN,GACD,IAAIwd,GAAAA,KAAK,CACjB3lB,IAAK,CACD7D,OAAOC,QAAkB,SAAI,4BAA4B+L,EAAK,OAC9DhM,OAAOC,QAAkB,SAAI,4BAA4B+L,EAAK,OAC9DhM,OAAOC,QAAkB,SAAI,4BAA4B+L,EAAK,QAClE4d,OAAQ,CAAC,MAAO,MAAO,OACvBF,UAAW,GAEnB,IAnCIvU,EAAAA,EAAgBmE,aAAalK,YAAY,cAAc,SAAC3S,GAAC,OAAKsC,EAAK26D,UAAUj9D,EAAE,IAAEsC,CACrF,CAAC,OAAAW,EAAAA,EAAAA,GAAA45D,EAAAz6D,IAAAc,EAAAA,EAAAA,GAAA25D,EAAA,EAAA15D,IAAA,SAAAnB,MAoCD,WACI,OAAO,IACX,IAAC,CA/CU,CAASqF,EAAAA,eAkDxB,IAAesP,EAAAA,EAAAA,KAAf,CAAyBkmD,uJCxDgC,IA6BzD,GA3BmB,SAAAr0D,GACf,SAAA00D,EAAY76D,GAAO,IAAAC,QAEkB,OAFlBC,EAAAA,EAAAA,GAAA,KAAA26D,KACf,OAAAA,IAAA,CAAM76D,iBAANC,kFACKgD,MAAQ,CAAE63D,UAAU,GAAQ76D,CACrC,CAAC,OAAAW,EAAAA,EAAAA,GAAAi6D,EAAA10D,IAAAtF,EAAAA,EAAAA,GAAAg6D,EAAA,EAAA/5D,IAAA,oBAAAnB,MAED,SAAkB2K,EAAOywD,GAErB35D,KAAKK,SAAS,CAAEq5D,UAAU,EAAMxwD,MAAQA,EAAOywD,KAAOA,IAEtD1kD,EAAAA,EAAgBo0B,WAAW,CACvB,MAAWngC,EAAMg3B,MAAQtB,KAAKoG,UAAU97B,EAAMg3B,OAAS,IAE/D,GAAC,CAAAxgC,IAAA,SAAAnB,MAED,WACI,OAAIyB,KAAK6B,MAAM63D,SAEJ93D,EAAAA,cAAA,SAAG,8CAGH5B,KAAKpB,MAAMkE,QAG1B,IAAC,CAxBc,CAASlB,EAAAA,8JCA2B,IAEjDg4D,GAAG,SAAAhvD,GAAA,SAAAgvD,IAAA,OAAA96D,EAAAA,EAAAA,GAAA,KAAA86D,KAAA,OAAAA,IAAAx8D,+GAAA,QAAAoC,EAAAA,EAAAA,GAAAo6D,EAAAhvD,IAAAnL,EAAAA,EAAAA,GAAAm6D,EAAA,EAAAl6D,IAAA,SAAAnB,MACP,WACI,OACIqD,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cAAC63D,GAAa,KACV73D,EAAAA,cAACw3D,GAAS,MACVx3D,EAAAA,cAACg3D,GAAQ,OAIzB,IAAC,CAVM,CAAS/qD,EAAAA,WAalB,MCjBA,SAAS,GAAQtR,EAAGG,GAClB,IAAIF,EAAII,OAAOS,KAAKd,GACpB,GAAIK,OAAOC,sBAAuB,CAChC,IAAIJ,EAAIG,OAAOC,sBAAsBN,GACrCG,IAAMD,EAAIA,EAAEe,QAAO,SAAUd,GAC3B,OAAOE,OAAOa,yBAAyBlB,EAAGG,GAAGgB,UAC/C,KAAKlB,EAAEc,KAAKC,MAAMf,EAAGC,EACvB,CACA,OAAOD,CACT,CACA,SAASq9D,GAAet9D,GACtB,IAAK,IAAIG,EAAI,EAAGA,EAAIU,UAAUL,OAAQL,IAAK,CACzC,IAAIF,EAAI,MAAQY,UAAUV,GAAKU,UAAUV,GAAK,CAAC,EAC/CA,EAAI,EAAI,GAAQE,OAAOJ,IAAI,GAAImB,SAAQ,SAAUjB,IAC/C,EAAA+J,EAAA,GAAelK,EAAGG,EAAGF,EAAEE,GACzB,IAAKE,OAAOoiB,0BAA4BpiB,OAAOqiB,iBAAiB1iB,EAAGK,OAAOoiB,0BAA0BxiB,IAAM,GAAQI,OAAOJ,IAAImB,SAAQ,SAAUjB,GAC7IE,OAAO6J,eAAelK,EAAGG,EAAGE,OAAOa,yBAAyBjB,EAAGE,GACjE,GACF,CACA,OAAOH,CACT,CCZA,SAASu9D,GAAuBhnC,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,CAGA,IAAIinC,GACuB,mBAAX/7D,QAAyBA,OAAOg8D,YAAc,eAS1DC,GAAe,WACjB,OAAOtsC,KAAKusC,SAASl+B,SAAS,IAAI1jB,UAAU,GAAGhC,MAAM,IAAIpK,KAAK,IAChE,EAEIiuD,GAAc,CAChBC,KAAM,eAAiBH,KACvBI,QAAS,kBAAoBJ,KAC7BK,qBAAsB,WACpB,MAAO,+BAAiCL,IAC1C,GA0lBF,SAASM,KACP,IAAK,IAAIC,EAAOp9D,UAAUL,OAAQ09D,EAAQ,IAAI58D,MAAM28D,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAChFD,EAAMC,GAAQt9D,UAAUs9D,GAG1B,OAAqB,IAAjBD,EAAM19D,OACD,SAAU49D,GACf,OAAOA,CACT,EAGmB,IAAjBF,EAAM19D,OACD09D,EAAM,GAGRA,EAAMxhC,QAAO,SAAU96B,EAAG0T,GAC/B,OAAO,WACL,OAAO1T,EAAE0T,EAAEtU,WAAM,EAAQH,WAC3B,CACF,GACF,CC/oBO,eCIDw9D,IAAeC,EAAAA,GAAAA,IAAO,CACxBC,YAAY,EACZC,OAAO,EACP3kD,UAAU,EACV4kD,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,SAAS,EACTC,kBAAmB,KACnBzzB,MAAO,KACP0zB,OAAQ,KACRC,MAAO,KACPC,cAAc,EACdC,eAAe,EACfrkD,KAAM,SACNskD,UAAW,GACXC,WAAY,GACZC,QAAS,GACTC,OAAQ,GACRC,cAAe,GACfC,YAAa,CAAC,SAAY,GAC1BC,WAAY,CAAC,SAAY,GACzBC,WAAY,CAAC,OAAW,IACxBC,SAAU,KACVtvD,aAAc,GACdF,mBAAoB,GACpBs6B,UAAW,CAAC,EACZkoB,QAAU,CAAC,EACXiN,cAAgB,CAAC,cAAiB,EAAG,YAAgB,EAAG,gBAAoB,GAC5Et/C,cAAgB,EAChBu/C,qBAAuB,EACvBv2B,SAAW,CAAC,EACZF,aAAe,CAAC,aAAe,GAAI,WAAc,EAAO,MAAQ,EAAG,IAAM,EAAE,IAAM,EAAG,KAAO,EAAG,IAAQ,EAAG,MAAU,GAAG,QAAU,EAAG,OAAW,EAAG,SAAa,GAAI,SAAa,GAAI,QAAW,EAAO,IAAQ,GAAI,WAAe,EAAG,OAAW,GAC9O02B,eAAiB,CAAC,EAClBC,aAAe,CAACC,SAAU,GAC1BC,IAAK,KACL/O,SAAU,KACVgP,mBAAoB,GACpBC,4BAA6B,GAC7B7N,WAAY,EAEZ8N,YAAa,EACbC,WAAY,EACZC,WAAY,EACZC,UAAY,CAAC,SAAY,EAAO,KAAQ,EAAOx8D,KAAO,CAAC,GACvDktC,KAAO,GACPuvB,OAAS,GACTC,WAAa,GACbxxD,WAAa,GACbsrC,SAAW,GACXmmB,SAAW,KACXC,QAAU,KACVx2B,QAAU,CAAC,EACXy2B,iBAAmB,CAAC,ICvDxB,GHifA,SAAyBC,GAIvB,IAHA,IAAIC,EAAczgE,OAAOS,KAAK+/D,GAC1BE,EAAgB,CAAC,EAEZ3gE,EAAI,EAAGA,EAAI0gE,EAAYtgE,OAAQJ,IAAK,CAC3C,IAAI+C,EAAM29D,EAAY1gE,GAQO,mBAAlBygE,EAAS19D,KAClB49D,EAAc59D,GAAO09D,EAAS19D,GAElC,CAEA,IASI69D,EATAC,EAAmB5gE,OAAOS,KAAKigE,GAWnC,KAjEF,SAA4BF,GAC1BxgE,OAAOS,KAAK+/D,GAAUz/D,SAAQ,SAAU+B,GACtC,IAAI+9D,EAAUL,EAAS19D,GAKvB,QAA4B,IAJT+9D,OAAQl2D,EAAW,CACpCjF,KAAM63D,GAAYC,OAIlB,MAAM,IAAIj8B,MAA8C27B,GAAuB,KAGjF,QAEO,IAFI2D,OAAQl2D,EAAW,CAC5BjF,KAAM63D,GAAYG,yBAElB,MAAM,IAAIn8B,MAA8C27B,GAAuB,IAEnF,GACF,CAiDI4D,CAAmBJ,EACrB,CAAE,MAAO/gE,GACPghE,EAAsBhhE,CACxB,CAEA,OAAO,SAAqBsF,EAAOgrB,GAKjC,QAJc,IAAVhrB,IACFA,EAAQ,CAAC,GAGP07D,EACF,MAAMA,EAcR,IAX2C,IAQvCI,GAAa,EACbC,EAAY,CAAC,EAERC,EAAK,EAAGA,EAAKL,EAAiBzgE,OAAQ8gE,IAAM,CACnD,IAAInD,EAAO8C,EAAiBK,GACxBJ,EAAUH,EAAc5C,GACxBoD,EAAsBj8D,EAAM64D,GAC5BqD,EAAkBN,EAAQK,EAAqBjxC,GAEnD,QAA+B,IAApBkxC,EAET,MADiBlxC,GAAUA,EAAOvqB,KAC5B,IAAI67B,MAA8C27B,GAAuB,KAGjF8D,EAAUlD,GAAQqD,EAClBJ,EAAaA,GAAcI,IAAoBD,CACjD,CAGA,OADAH,EAAaA,GAAcH,EAAiBzgE,SAAWH,OAAOS,KAAKwE,GAAO9E,QACtD6gE,EAAY/7D,CAClC,CACF,CG1jBA,CAA+B,CAC3ByR,WDgEsB,WAAkC,IAAjCzR,EAAKzE,UAAAL,OAAA,QAAAwK,IAAAnK,UAAA,GAAAA,UAAA,GAAGw9D,GAAc/tC,EAAMzvB,UAAAL,OAAA,EAAAK,UAAA,QAAAmK,EAEnD,OAAQslB,EAAOvqB,MAEX,IDxEqB,eC4EjB,OAHgC,IAA5BT,EAAMhC,IAAI,gBACVgC,EAAQA,EAAMy7B,IAAI,gBAAgB,GAAGA,IAAI,iBAAgB,IAEtDz7B,EAAMy7B,IAAI,SAAQ,GAG7B,IAAK,aACD,OAAOz7B,EAAMy7B,IAAI,cAAa,GAGlC,IAAK,WACD,OAAOz7B,EAAMm8D,MAAMnxC,EAAOvX,KAAMuX,EAAOvsB,MAG3C,IAAK,cACD,OAAOuB,EAAMy7B,IAAI,eAAkD,IAAlCzQ,EAAOvsB,KAAKtD,QAAQ,WAAsD,IAAnC6vB,EAAOvsB,KAAKtD,QAAQ,UAAoB6vB,EAAOvsB,KAAOR,OAAOC,QAAkB,SAAI,wBAA0B8sB,EAAOvsB,MAGhM,IAAK,WACD,OAAOuB,EAAMo8D,SAASpxC,EAAOvX,MAGjC,IAAK,iBACL,IAAK,gBACL,IAAK,uBACL,IAAK,WACL,IAAK,gBACL,IAAK,QACL,IAAK,SACL,IAAK,eACL,IAAK,qBACL,IDtGiB,WCuGjB,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,gBACL,IAAK,aACL,IAAK,SACL,IAAK,aACL,IAAK,WACL,IAAK,qBACL,IAAK,8BACL,IAAK,OACD,OAAOzT,EAAMy7B,IAAIzQ,EAAOvqB,KAAKuqB,EAAOvsB,MAGxC,IAAK,eAWD,OATmB,GAAfusB,EAAOvsB,OAAyD,IAAzCuB,EAAM2Q,MAAM,CAAC,YAAY,cAChD3Q,EAAQA,EAAMm8D,MAAM,CAAC,YAAY,YAAW,IAI7B,GAAfnxC,EAAOvsB,MAAgBuB,EAAM8Q,MAAM,CAAC,YAAY,OAAO,mBACvD9Q,EAAQA,EAAMy7B,IAAI,aAAYu9B,EAAAA,GAAAA,IAAO,CAAC,SAAY,EAAO,KAAQ,EAAOv6D,KAAO,CAAC,MAG7EuB,EAAMy7B,IAAI,QAAQzQ,EAAOvsB,MAIpC,IAAK,YACD,OAAOuB,EAAMy7B,IAAI,YAAY,CAAC,SAAoC,IAAvBz7B,EAAMhC,IAAI,WAA2C,IAArBgtB,EAAOvsB,KAAK49D,KAAgC,KAAO,EAAM59D,KAAOusB,EAAOvsB,OAItJ,IAAK,kBASL,IAAK,kBACD,OAAOuB,EAAMm8D,MAAM,CAAC,YAAY,YAAW,GAN/C,IAAK,oBACD,OAAOn8D,EAAMy7B,IAAI,aAAYu9B,EAAAA,GAAAA,IAAO,CAAC,SAAY,EAAO,KAAQ,EAAOv6D,KAAO,CAAC,KAQnF,IDpJqB,cCqJjB,OAAOuB,EAAMm8D,MAAM,CAAC,eAAe,WAAWnxC,EAAOvsB,MAGzD,IDvJkB,YCwJd,OAAOuB,EAAMy7B,IAAI,SAAQ,GACpBA,IAAI,gBAAiB,GACrBA,IAAI,uBAAwB,GAC5BA,IAAI,cAAa,GACjBA,IAAI,WAAU,GACdA,IAAI,iBAAgB,GACpBA,IAAI,aAAYu9B,EAAAA,GAAAA,IAAO,CAAC,SAAY,EAAO,KAAQ,EAAOv6D,KAAO,CAAC,KAClEg9B,IAAI,YAAWu9B,EAAAA,GAAAA,IAAO,CAAC,IACvBoD,SAAS,CAAC,UAAU,cACpBA,SAAS,CAAC,UAAU,iBACpBD,MAAM,CAAC,aAAa,YAAW,GAC/B1gC,IAAI,gBAAeu9B,EAAAA,GAAAA,IAAO,CAAC,aAAe,GAAI,WAAc,EAAO,MAAQ,EAAG,IAAM,EAAG,IAAM,EAAG,KAAO,EAAG,IAAM,EAAG,OAAW,EAAG,WAAe,EAAG,IAAO,EAAO,IAAQ,GAAI,QAAW,EAAO,QAAW,EAAG,OAAW,EAAG,SAAa,GAAI,SAAa,MACzPv9B,IAAI,kBAAiBu9B,EAAAA,GAAAA,IAAO,CAAC,IAC7Bv9B,IAAI,iBAAgBu9B,EAAAA,GAAAA,IAAO,CAAC,cAAiB,EAAG,YAAgB,EAAG,gBAAoB,KACvFv9B,IAAI,aAAY,GAChBA,IAAI,aAAY,GAChBA,IAAI,aAAY,GAChBA,IAAI,cAAa,GAG1B,IAAK,sBAED,OAAOz7B,EAAMm8D,MAAM,CAAC,eAAe,OAAOnxC,EAAOvsB,KAAK2E,MAG1D,IDnLiB,eCoLb,OAAOpD,EAAMy7B,IAAI,WAAWzQ,EAAOvsB,MAC7B09D,MAAM,CAAC,aAAa,YAAY,GAChCA,MAAM,CAAC,cAAc,YAAY,GAG3C,IDpL8B,yBCqL1B,OAAOn8D,EAAMy7B,IAAI,eAAeu9B,EAAAA,GAAAA,IAAO,CAAC,SAAY,EAAM,SAAYhuC,EAAOvsB,KAAK0c,SAAU,eAAkB6P,EAAOvsB,KAAK69D,eAAgB,OAAWtxC,EAAOvsB,KAAKqZ,OAAQ,WAAekT,EAAOvsB,KAAKq7D,cAAcr+B,IAAI,UAAWz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4uD,WAGnR,IAAK,aACL,IAAK,OACL,IAAK,UACL,IAAK,UACD,OAAOrtD,EAAMy7B,IAAIzQ,EAAOvqB,MAAKu4D,EAAAA,GAAAA,IAAOhuC,EAAOvsB,OAG/C,IAAK,gBACD,OAAOuB,EAAMm8D,MAAM,CAAC,aAAa,aAAa,aAAanD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK+9D,WAAWL,MAAM,CAAC,aAAa,aAAa,WAAW,oBAAoBnxC,EAAOvsB,KAAK2M,UAGzK,IAAK,wBACD,OAAOpL,EAAMy7B,IAAI,UAAUzQ,EAAOvsB,KAAK4F,KAG3C,IAAK,oBACD,OAAOrE,EAAMy8D,OAAO,aAAY,SAAA7yD,GAAI,OAAIA,EAAKnO,KAAKuvB,EAAOvsB,KAAK,IAGlE,IAAK,uBACD,OAAOuB,EAAMy8D,OAAO,aAAY,SAAA7yD,GAAI,OAAIA,EAAKjO,QAAO,SAAAkG,GAAI,OAAIA,GAAQmpB,EAAOvsB,IAAI,GAAC,IAGpF,ID9MwB,mBC+MpB,OAA4B,IAAxBusB,EAAOvsB,KAAKyzB,SACZ9e,EAAAA,EAAgBgC,kBAAkB,cAAc,CAAC4V,EAAOvsB,KAAKulC,SAAShkC,EAAMhC,IAAI,UAGvD,SAArBgC,EAAMhC,IAAI,WACgC,IAAtCoV,EAAAA,EAAgB0vC,mBAChB1vC,EAAAA,EAAgBoF,kBAAkB,QAAQukB,KAAKoG,UAAUnY,EAAOvsB,KAAKulC,WACrE5wB,EAAAA,EAAgBsvB,qBAAqB,gBAErC/jC,SAASwV,SAAW,KAAO6W,EAAOvsB,KAAKulC,SAAS7jC,GAAK,IAAM6qB,EAAOvsB,KAAKulC,SAASX,MAIjFrjC,EAAMy7B,IAAI,gBAAiB,GAClCA,IAAI,cAAa,GACjBA,IAAI,SAAQ,GACZA,IAAI,YAAWu9B,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAKulC,WAClCm4B,MAAM,CAAC,eAAe,WAAWnxC,EAAOvsB,KAAKqlC,aAAaC,kBAC1DtI,IAAI,oBAAmBu9B,EAAAA,GAAAA,IAAO,CAAC,KAExBh5D,EAAMy7B,IAAI,oBAAmBu9B,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4Q,SAASosB,IAAI,gBAAgB,GAAG0gC,MAAM,CAAC,UAAU,eAAc,GAI9H,IAAK,oBACD,OAA4B,IAAxBnxC,EAAOvsB,KAAKyzB,SACZ9e,EAAAA,EAAgBgC,kBAAkB,iBAAiB,IAC5CpV,EAAMy7B,IAAI,uBAAwB,GAAGA,IAAI,oBAAmBu9B,EAAAA,GAAAA,IAAO,CAAC,KAEpEh5D,EAAMy7B,IAAI,oBAAmBu9B,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4Q,SAASosB,IAAI,uBAAuB,GAInG,IAAK,aACD,OAAOz7B,EAAMy7B,IAAI,aAAY,GAIjC,IAAK,uBACD,OAAOz7B,EAAMy7B,IAAI,gBAAiB,GAC7BA,IAAI,cAAa,GACjBA,IAAI,WAAU,GACdA,IAAI,YAAWu9B,EAAAA,GAAAA,IAAOhuC,EAAOvsB,OAGtC,IAAK,qBACD,OAAOuB,EAAMy7B,IAAI,uBAAwB,GAG7C,IAAK,eACD,OAAOz7B,EAAMy7B,IAAI,MAAOzQ,EAAOvsB,MAGnC,IAAK,oBACD,OAAOuB,EAAMy7B,IAAI,gBAAiB,GAGtC,IAAK,WACD,OAAOz7B,EAAMm8D,MAAM,CAAC,gBAAgBnxC,EAAOvsB,KAAKgV,MAAMuX,EAAOvsB,KAAKi+D,KAGtE,IAAK,mBACD,OAAO18D,EAAMm8D,MAAM,CAAC,eAAgBnxC,EAAOvsB,KAAKgV,MAAOuX,EAAOvsB,KAAKi+D,KAGvE,IAAK,mBACD,OAAO18D,EAAM28D,SAAS,CAAC,eAAe,iBAAgB,SAAA/yD,GAAI,OAAIA,EAAKnO,KAAKuvB,EAAOvsB,KAAK,IAGxF,IAAK,2BACD,OAAIusB,EAAOvsB,KAAOuB,EAAM2Q,MAAM,CAAC,eAAe,YACnC3Q,EAAMm8D,MAAM,CAAC,eAAgB,WAAYnxC,EAAOvsB,MAEpDuB,EAGX,IAAK,sBAMD,OAJIgrB,EAAOvsB,KAAK67D,gBACZt6D,EAAQA,EAAMy7B,IAAI,gBAAiBz7B,EAAMhC,IAAI,iBAAiBu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK67D,kBAGpFt6D,EAAMm8D,MAAM,CAAC,eAAe,YAAanxC,EAAOvsB,KAAKw2C,UACvDxZ,IAAI,UAAWz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4uD,WAC7D8O,MAAM,CAAC,eAAe,cAAenxC,EAAOvsB,KAAKsuD,YACjDoP,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAKqzB,QAC7C2J,IAAI,cAAc,GAClB0gC,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAK+nC,SAAiC,IAAvBxb,EAAOvsB,KAAK+nC,QAG5E,IAAK,uBAQD,OANIxb,EAAOvsB,KAAKm+D,gBACZ5xC,EAAOvsB,KAAKm+D,eAAe9gE,SAAQ,SAAC+F,GAChC7B,EAAQA,EAAMo8D,SAASv6D,EAC3B,IAGG7B,EAAMy7B,IAAI,UAAWz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4uD,WAG9E,IAAK,sBACD,IAAIviD,EAAQ9K,EAAM2Q,MAAM,CAAC,eAAe,aAAaksD,WAAU,SAAA9sC,GAC3D,GAAIA,EAAIA,IAAI21B,SAAS,WAAY16B,EAAOvsB,KAAK8kC,OAAO,KAChD,OAAO,CAEf,IAWA,OATe,IAAXz4B,KACIgyD,EAAYn+D,SAAS8C,cAAc,QAC7BiR,UAAY1S,EAAM2Q,MAAM,CAAC,eAAgB,WAAY7F,EAAO,SAClEiyD,EAAmBD,EAAUt+C,cAAc,QAAQwM,EAAOvsB,KAAK0B,OAE/D28D,EAAUpqD,UAAYoqD,EAAUpqD,UAAUpS,QAAQy8D,EAAiBC,UAAU,IAC7Eh9D,EAAQA,EAAMm8D,MAAM,CAAC,eAAgB,WAAYrxD,EAAO,OAAQgyD,EAAUpqD,aAG3E1S,EAGX,IAAK,0BAED,IAOQ88D,EAEAC,EATJjyD,EAAQ9K,EAAM2Q,MAAM,CAAC,eAAe,aAAaksD,WAAU,SAAA9sC,GAC3D,GAAIA,EAAIA,IAAI21B,SAAS,WAAY16B,EAAOvsB,KAAK0B,GAAG,KAC5C,OAAO,CAEf,IAYA,OAVe,IAAX2K,KACIgyD,EAAYn+D,SAAS8C,cAAc,QAC7BiR,UAAY1S,EAAM2Q,MAAM,CAAC,eAAgB,WAAY7F,EAAO,SAClEiyD,EAAmBD,EAAUt+C,cAAc,QAAQwM,EAAOvsB,KAAK0B,OAE/D28D,EAAUpqD,UAAYoqD,EAAUpqD,UAAUpS,QAAQy8D,EAAiBC,UAAUhyC,EAAOvsB,KAAKsxB,KACzF/vB,EAAQA,EAAMm8D,MAAM,CAAC,eAAgB,WAAYrxD,EAAO,OAAQgyD,EAAUpqD,aAI3E1S,EAGX,IAAK,2BAID,IAAKA,EAAM8Q,MAAM,CAAC,WAAW,OACzB,OAAO9Q,EAeX,GAZIgrB,EAAOvsB,KAAKw+D,YAAcjyC,EAAOvsB,KAAKw+D,WAAWC,YACjDl9D,EAAQA,EAAMm8D,MAAM,CAAC,UAAU,aAAanxC,EAAOvsB,KAAKw+D,WAAWC,YAGnElyC,EAAOvsB,KAAK0+D,iBACZn9D,EAAQA,EAAMo8D,SAAS,CAAC,UAAU,eAGlCpxC,EAAOvsB,KAAK0mC,YACZnlC,EAAQA,EAAMy7B,IAAI,YAAYz7B,EAAMhC,IAAI,aAAau+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK0mC,cAGrD,KAAzBna,EAAOvsB,KAAKkqD,SAAiB,CAG7B,GAAI39B,EAAOvsB,KAAK2+D,SAAWp9D,EAAM2Q,MAAM,CAAC,eAAe,WACnD,OAAO3Q,EAGXA,EAAQA,EAAM28D,SAAS,CAAC,eAAe,aAAY,SAAA/yD,GAAI,OAAIA,EAAKnO,KAAK,CACjE,MAASuE,EAAM2Q,MAAM,CAAC,eAAe,SACrC,KAAQqa,EAAOvsB,KAAKm1D,KACpB,IAAO5oC,EAAOvsB,KAAKkqD,UACrB,IACGwT,MAAM,CAAC,eAAe,MAAOnxC,EAAOvsB,KAAK4+D,KAAyB,IAAnBryC,EAAOvsB,KAAK4+D,IAC3DlB,MAAM,CAAC,eAAe,UAAUnxC,EAAOvsB,KAAK6+D,YAC5CnB,MAAM,CAAC,eAAe,WAAWnxC,EAAOvsB,KAAKslC,kBAC7Co4B,MAAM,CAAC,eAAe,QAAQnxC,EAAOvsB,KAAK8+D,OAASvyC,EAAOvsB,KAAKm1D,KACxE,CAeA,OAbI5oC,EAAOvsB,KAAK+uD,MACZxtD,EAAQA,EAAM28D,SAAS,CAAC,eAAe,QAAQ,SAACa,GAAa,OAAOA,EAAUxyC,EAAOvsB,KAAK+uD,GAAG,IAC/EmP,SAAS,CAAC,eAAe,iBAAgB,SAAA/yD,GAAI,OAAIA,EAAKkE,OAAO,EAAEkd,EAAOvsB,KAAK+uD,IAAI,KAG7FxiC,EAAOvsB,KAAK4wD,MACZrvD,EAAQA,EAAMm8D,MAAM,CAAC,eAAe,OAAQnxC,EAAOvsB,KAAK4wD,MAGvDrvD,EAAMhC,IAAI,aAAa4pC,SAAS,YACjC5nC,EAAQA,EAAMm8D,MAAM,CAAC,eAAe,OAAQnxC,EAAOvsB,KAAKg/D,MAGrDz9D,EAAMm8D,MAAM,CAAC,eAAe,cAAenxC,EAAOvsB,KAAKsuD,YACzDoP,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAKqzB,QAC7C2J,IAAI,aAAa,GACjB0gC,MAAM,CAAC,eAAe,eAAcnxC,EAAOvsB,KAAKi/D,WAChDjiC,IAAI,gBAAgB,GACpB0gC,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAK+nC,SAAiC,IAAvBxb,EAAOvsB,KAAK+nC,QAG5E,IAAK,6BAUD,OARIxb,EAAOvsB,KAAK0mC,YACZnlC,EAAQA,EAAMy7B,IAAI,YAAYz7B,EAAMhC,IAAI,aAAau+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK0mC,cAG9Ena,EAAOvsB,KAAKk/D,eACZ39D,EAAQA,EAAMy7B,IAAI,iBAAgB,IAG/Bz7B,EAAMy7B,IAAI,kBAAiBu9B,EAAAA,GAAAA,IAAOhuC,EAAOvsB,OAC3C09D,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAK+nC,SAAiC,IAAvBxb,EAAOvsB,KAAK+nC,QAAmBxmC,EAAM2Q,MAAM,CAAC,eAAe,YAClHwrD,MAAM,CAAC,eAAe,UAAWnxC,EAAOvsB,KAAKqzB,QAC7CqqC,MAAM,CAAC,eAAe,OAAQnxC,EAAOvsB,KAAKm/D,KAC1CzB,MAAM,CAAC,eAAe,MAAOnxC,EAAOvsB,KAAKo/D,GAAK7yC,EAAOvsB,KAAKo/D,GAAK,MAC/DpiC,IAAI,UAAUz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4uD,WAC5D5xB,IAAI,gBAAgB,GACpB0gC,MAAM,CAAC,eAAe,cAAenxC,EAAOvsB,KAAKsuD,YAG1D,IAAK,wBACD,OAAO/sD,EAAMy7B,IAAI,cAAcu9B,EAAAA,GAAAA,IAAO,CAAC,UAAahuC,EAAOvsB,KAAKq/D,UAAW,SAAY9yC,EAAOvsB,KAAK0c,SAAU,SAAY,EAAM,KAAQ6P,EAAOvsB,KAAK8lC,KAAM,eAAkBvZ,EAAOvsB,KAAK69D,eAAgB,OAAWtxC,EAAOvsB,KAAKqZ,OAAQ,WAAekT,EAAOvsB,KAAKq7D,cAAcr+B,IAAI,UAAWz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,KAAK4uD,WAGhV,IAAK,iBACD,OAAOrtD,EAAMy7B,IAAI,UAAUz7B,EAAMhC,IAAI,WAAWu+D,OAAMvD,EAAAA,GAAAA,IAAOhuC,EAAOvsB,QAGxE,IAAK,gBACD,OAAOuB,EAAMy7B,IAAI,cAAcu9B,EAAAA,GAAAA,IAAO,CAAC,OAAWhuC,EAAOvsB,QAG7D,IAAK,cACD,OAAOuB,EAAMy7B,IAAI,oBAAoBzQ,EAAOvsB,MAGhD,IAAK,SACD,OAAOuB,EAAMm8D,MAAM,CAAC,UAAU,aAAcnxC,EAAOvsB,MAGvD,IAAK,qBACD,OAAOuB,EAAMm8D,MAAM,CAAC,aAAa,SAASnxC,EAAOvsB,KAAK0B,GAAG,SAAU6qB,EAAOvsB,KAAK/B,OAGnF,IAAK,yBACD,OAAOsD,EAAMm8D,MAAM,CAAC,eAAe,SAAUnxC,EAAOvsB,KAAK5D,GACpDshE,MAAM,CAAC,eAAe,QAASnxC,EAAOvsB,KAAK5D,EAAImwB,EAAOvsB,KAAKsxB,IAAM,IACjEosC,MAAM,CAAC,eAAe,iBAAiBnD,EAAAA,GAAAA,IAAO,KAGvD,IAAK,gBACD,OAAOh5D,EAAMy7B,IAAI,eAAgBzQ,EAAOvsB,MAG5C,QACI,OAAOuB,EAEnB,qCE9cM+9D,GJupBN,WACE,IAAK,IAAIpF,EAAOp9D,UAAUL,OAAQ8iE,EAAc,IAAIhiE,MAAM28D,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACtFmF,EAAYnF,GAAQt9D,UAAUs9D,GAGhC,OAAO,SAAUoF,GACf,OAAO,WACL,IAAIzsD,EAAQysD,EAAYviE,WAAM,EAAQH,WAElC2iE,EAAY,WACd,MAAM,IAAI5hC,MAA8C27B,GAAuB,IACjF,EAEIkG,EAAgB,CAClB57B,SAAU/wB,EAAM+wB,SAChB3xB,SAAU,WACR,OAAOstD,EAAUxiE,WAAM,EAAQH,UACjC,GAEE6iE,EAAQJ,EAAYvzD,KAAI,SAAUszD,GACpC,OAAOA,EAAWI,EACpB,IAEA,OADAD,EAAYxF,GAAQh9D,WAAM,EAAQ0iE,EAAtB1F,CAA6BlnD,EAAMZ,UACxC,GAAc,GAAc,CAAC,EAAGY,GAAQ,CAAC,EAAG,CACjDZ,SAAUstD,GAEd,CACF,CACF,CInrBmBG,CAAgBljC,GAAAA,GAASmjC,GAAAA,GAEtC9sD,GJ2HN,SAASysD,EAAYrC,EAAS2C,EAAgBC,GAC5C,IAAIhvD,EAEJ,GAA8B,mBAAnB+uD,GAAqD,mBAAbC,GAA+C,mBAAbA,GAAmD,mBAAjBjjE,UAAU,GAC/H,MAAM,IAAI+gC,MAA8C27B,GAAuB,IAQjF,GAL8B,mBAAnBsG,QAAqD,IAAbC,IACjDA,EAAWD,EACXA,OAAiB74D,QAGK,IAAb84D,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAIliC,MAA8C27B,GAAuB,IAGjF,OAAOuG,EAASP,EAATO,CAAsB5C,EAAS2C,EACxC,CAEA,GAAuB,mBAAZ3C,EACT,MAAM,IAAIt/B,MAA8C27B,GAAuB,IAGjF,IAAIwG,EAAiB7C,EACjBjjD,EAAe4lD,EACfG,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBxzD,QAErC,CAQA,SAASq3B,IACP,GAAIq8B,EACF,MAAM,IAAItiC,MAA8C27B,GAAuB,IAGjF,OAAOt/C,CACT,CA0BA,SAASmmD,EAAUnyD,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAI2vB,MAA8C27B,GAAuB,IAGjF,GAAI2G,EACF,MAAM,IAAItiC,MAA8C27B,GAAuB,IAGjF,IAAI8G,GAAe,EAGnB,OAFAF,IACAF,EAAcljE,KAAKkR,GACZ,WACL,GAAKoyD,EAAL,CAIA,GAAIH,EACF,MAAM,IAAItiC,MAA8C27B,GAAuB,IAGjF8G,GAAe,EACfF,IACA,IAAI/zD,EAAQ6zD,EAAcxjE,QAAQwR,GAClCgyD,EAAc7wD,OAAOhD,EAAO,GAC5B4zD,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAAS9tD,EAASoa,GAChB,IAzOJ,SAAuBtS,GACrB,GAAmB,iBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAInM,EAAQmM,EAE4B,OAAjC3d,OAAOikB,eAAezS,IAC3BA,EAAQxR,OAAOikB,eAAezS,GAGhC,OAAOxR,OAAOikB,eAAetG,KAASnM,CACxC,CAgOSyyD,CAAch0C,GACjB,MAAM,IAAIsR,MAA8C27B,GAAuB,IAGjF,QAA2B,IAAhBjtC,EAAOvqB,KAChB,MAAM,IAAI67B,MAA8C27B,GAAuB,IAGjF,GAAI2G,EACF,MAAM,IAAItiC,MAA8C27B,GAAuB,IAGjF,IACE2G,GAAgB,EAChBjmD,EAAe8lD,EAAe9lD,EAAcqS,EAC9C,CAAE,QACA4zC,GAAgB,CAClB,CAIA,IAFA,IAAIlyD,EAAYgyD,EAAmBC,EAE1B7jE,EAAI,EAAGA,EAAI4R,EAAUxR,OAAQJ,KAEpC6R,EADeD,EAAU5R,MAI3B,OAAOkwB,CACT,CA4EA,OAHApa,EAAS,CACPnQ,KAAM63D,GAAYC,QAEb/oD,EAAQ,CACboB,SAAUA,EACVkuD,UAAWA,EACXv8B,SAAUA,EACV08B,eAnEF,SAAwBC,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAI5iC,MAA8C27B,GAAuB,KAGjFwG,EAAiBS,EAKjBtuD,EAAS,CACPnQ,KAAM63D,GAAYE,SAEtB,IAuDSN,IA9CT,WACE,IAAI3oD,EAEA4vD,EAAiBL,EACrB,OAAOvvD,EAAO,CASZuvD,UAAW,SAAmBM,GAC5B,GAAwB,iBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAI9iC,MAA8C27B,GAAuB,KAGjF,SAASoH,IACHD,EAAS5iE,MACX4iE,EAAS5iE,KAAK+lC,IAElB,CAIA,OAFA88B,IAEO,CACLC,YAFgBH,EAAeE,GAInC,IACMnH,IAAgB,WACtB,OAAO/5D,IACT,EAAGoR,CACL,EAaqCC,CACvC,CIjXcyuD,CACVsB,GACAxB,KCXW,SAAUntD,EAAU2xB,GAG/B,IAAIi9B,EAAa,CAAC,EACdC,EAAW,GACXC,EAAqB,GACrBC,GAAgB,EAEpB,SAASC,EAASz6B,EAAWrjC,EAAK4M,GAC9B,GAAoD,OAAhD/P,SAASC,eAAe,OAASumC,GAAqB,CACtD,IAAIe,EAAKvnC,SAASiD,qBAAqB,QAAQ,GAC3CukC,EAAIxnC,SAAS8C,cAAc,UAC/B0kC,EAAE1zB,aAAa,OAAO,mBACtB0zB,EAAE1zB,aAAa,MAAM3Q,GACrBqkC,EAAE1zB,aAAa,KAAK,OAAS0yB,GAC7Be,EAAGxkC,YAAYykC,GACfA,EAAEjH,mBAAqBiH,EAAEzc,OAAS,WAC9B+1C,EAAShkE,KAAK0pC,EAAY,SAC1B/xB,EAAAA,EAAgB3E,UAAU02B,EAAY,QAASz2B,GACC,cAA5CgxD,EAAmBv6B,EAAY,UAA4BnpC,MAAMC,QAAQyjE,EAAmBv6B,EAAY,YACxGu6B,EAAmBv6B,EAAY,SAASrpC,SAAQ,SAAC4S,GAC7C0E,EAAAA,EAAgB3E,UAAU02B,EAAY,QAASz2B,EACnD,WACOgxD,EAAmBv6B,EAAY,SAE9C,CACJ,MACmD,IAA3Cs6B,EAAStkE,QAAQgqC,EAAY,SAC7B/xB,EAAAA,EAAgB3E,UAAU02B,EAAY,QAASz2B,SAEQ,IAA5CgxD,EAAmBv6B,EAAY,WACtCu6B,EAAmBv6B,EAAY,SAAW,IAE9Cu6B,EAAmBv6B,EAAY,SAAS1pC,KAAKiT,GAGzD,CAEA,SAASmxD,EAAiB16B,EAAWz2B,GAOjC,GANI1S,MAAMC,QAAQyS,KACdA,EAAKjT,KAAKmV,GACVlC,EAAKjT,KAAK8mC,GACV7zB,EAAKjT,KAAK+pC,EAAAA,UAGuB,IAA1Bg6B,EAAWr6B,GAClBy6B,EAASz6B,EAAWq6B,EAAWr6B,GAAYz2B,QACxC,GAAiB,aAAby2B,EAA0B,CACjC,IAAIT,EAAO,IAAIjW,KACfmxC,EAASz6B,EAAW26B,EAAAA,EAAwBx/D,QAAQ,aAAa,IAAM,qBAAyBokC,EAAKsf,cAAgBtf,EAAKq7B,WAAar7B,EAAKs7B,UAAYtxD,EAC5J,KAAO,CAEH,IAAIuc,EAAM,UAAYka,EAEhBnlC,EAAQuiC,IAEVviC,EAAMyR,WAAWX,MAAM,CAAC,WAAY,SACpCma,GAAO,SAAWjrB,EAAMyR,WAAWd,MAAM,CAAC,WAAY,OACtDsa,GAAO,WAAajrB,EAAMyR,WAAWd,MAAM,CAAC,WAAY,UAG5D,IAAIjG,EAAM1K,EAAMyR,WAAWzT,IAAI,cAAcqM,KAAK,KAEvC,IAAPK,IACAugB,GAAO,UAAUvgB,GAGjBg6B,EAAO,IAAIjW,KAEfmxC,EAASz6B,EAAWlnC,OAAOC,QAAkB,SAAI,0BAA4B+sB,EAAO,IAAMyZ,EAAKsf,cAAgBtf,EAAKq7B,WAAar7B,EAAKs7B,UAAYtxD,EACtJ,CACJ,CA2HA,SAASuxD,EAAoBvlE,GAEzB,GAAsB,iBAAXA,EAAE+D,KAAb,CAEA,IAAIusB,EAAStwB,EAAE+D,KAAKgW,MAAM,KAAK,GAE/B,QAAwB,IAAb/Z,EAAE4d,OAAwB,CAEjC,IAAI4nD,EAAexlE,EAAE4d,OAAOhY,QAAQ,UAAW,IAAIA,QAAQ,WAAY,IAAIA,QAAQ,UAAU,IAG7F,GAAI4/D,IAAiBvhE,SAASwhE,aAAqC,IAAnBliE,OAAOC,eAAoE,IAAjCD,OAAOC,QAAoB,YAAqBD,OAAOC,QAAoB,aAAMgiE,IAEzJ,4BAAVl1C,GAAkD,wBAAVA,GAA8C,mBAAVA,IAA0C,aAAVA,GAAoC,aAAVA,IAA0B/sB,OAAOmiE,eACvK,MAGZ,CAEA,GAAc,4BAAVp1C,EAAsC,CACtC,IAAMhrB,EAAQuiC,IAEVviC,EAAMyR,WAAWX,MAAM,CAAC,WAAW,UAAY9Q,EAAMyR,WAAWX,MAAM,CAAC,WAAW,OAClFF,GACIkyB,EAAAA,EAAAA,IAAQ,CACJ,IAAQ9iC,EAAMyR,WAAWzT,IAAI,OAC7B,KAAQ,CACJmC,GAAKH,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OACxC0yB,KAAOrjC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,aAIlB,SAAhC3Q,EAAMyR,WAAWzT,IAAI,SACrBoV,EAAAA,EAAgBgC,kBAAkB,UAAW,CAAC,CAAC,OAAW,eAC1DnX,OAAOqc,SAEPlH,EAAAA,EAAgBgC,kBAAkB,cAAe,CAAC,CAAC,OAAW,gBAI1E,MAAO,GAAc,mBAAV4V,EACOuX,IACdnvB,EAAAA,EAAgB3E,UAAU,aAAa,SACpC,GAAc,wBAAVuc,EAAkC,CACzC,IAAMhrB,EAAQuiC,IACd3xB,GACIkyB,EAAAA,EAAAA,IAAQ,CACR,IAAQ9iC,EAAMyR,WAAWzT,IAAI,OAC7B,KAAQ,CACJmC,GAAKH,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OACxC0yB,KAAOrjC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,WAEhD,UACN,MAAO,GAAc,gBAAVqa,EAA0B,CACjC,IAAM6T,EAAQnkC,EAAE+D,KAAK6B,QAAQ,gBAAgB,IAAImU,MAAM,MACvDorD,EAAiBhhC,EAAM,GAAG9B,KAAK18B,MAAMw+B,EAAM,IAC/C,MAAO,GAAc,kBAAV7T,EAA4B,CACnC,IAAM6T,EAAQnkC,EAAE+D,KAAK6B,QAAQ,kBAAkB,IAAImU,MAAM,MACnDzU,EAAQuiC,IAGd,GAAgB,gBAAZ1D,EAAM,IAAoC,uBAAZA,EAAM,GAA6B,CACjE,IAAIlnB,EAAMhZ,SAASC,eAAe,OAAOigC,EAAM,IAAKlnB,GAAOA,EAAI7E,WAAWC,YAAY4E,GACtF/G,EAAS,CAACnQ,KAAM,sBAAuBhC,KAAM,CAAC,OAAWogC,EAAM,KACnE,EAEAyE,EAAAA,EAAAA,GAAkB,CACd,GAAOtjC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC1C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,OAAWkuB,EAAM,IAClB,CAAC,OAAWA,EAAM,KAAKxgC,MAAK,WAEX,gBAAZwgC,EAAM,IAAoC,uBAAZA,EAAM,IACpCjuB,GAAS40B,EAAAA,EAAAA,IAAc,CACnB,OAAW3G,EAAM,GACjB,OAAW7+B,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAClD,KAAU3Q,EAAMyR,WAAWzT,IAAI,QAC/B,MAAUgC,EAAMyR,WAAWzT,IAAI,SAC/B,GAAOgC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC1C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,WAAc,IAG1B,GACJ,MAAO,GAAc,qBAAVqa,EAA+B,CACtC,IAAM6T,EAAQnkC,EAAE+D,KAAK6B,QAAQ,qBAAqB,IAAImU,MAAM,MAC5D7D,GAASiB,EAAAA,EAAAA,IACL,CAAC,KAAQ,yBACT,CAAC,QAAUgtB,EAAM,MAClBxgC,MAAK,SAACI,GACL,GAAIA,EAAKA,KAAK9D,EAAG,CACbyY,EAAAA,EAAgBgC,kBAAkB,aAAc,CAAC,CAAC,QAAY3W,EAAKA,KAAK9D,KAExE,IAAMqF,EAAQuiC,IACVviC,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QACnCF,GAASuzB,EAAAA,EAAAA,IAAc,CACnB,QAAWnkC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,OAAW3Q,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAClD,MAAU3Q,EAAMyR,WAAWzT,IAAI,WAG3C,CACJ,GACJ,MAAO,GAAc,aAAVgtB,EAAuB,CAC9B,IAAM6T,EAAQnkC,EAAE+D,KAAK6B,QAAQ,aAAa,IAAImU,MAAM,MAChD/F,EAAOquB,KAAK18B,MAAMw+B,EAAM,IACxB7iC,MAAMC,QAAQyS,KACdA,EAAKjT,KAAKmV,GACVlC,EAAKjT,KAAK8mC,IAEdnvB,EAAAA,EAAgB3E,UAAUowB,EAAM,GAAGnwB,EACvC,MAAO,GAAc,mBAAVsc,EACP5X,EAAAA,EAAgBgC,kBAAkB,eAAgB,CAAC,CAAC,OAAY7L,SAAS7O,EAAE+D,KAAKgW,MAAM,KAAK,IAAM,WAC9F,GAAc,YAAVuW,EAAsB,CAE7B,IAAsB,IAAlB20C,EACA,OAGJA,GAAgB,EAEhB,IAAIU,EAAatjC,KAAK18B,MAAM3F,EAAE+D,KAAK6B,QAAQ,YAAY,KAEvDrC,OAAOC,QAAU,CAAC,EAClBD,OAAOC,QAAkB,SAAImiE,EAAqB,UAAKA,EAAiB,MAA2B,IAAtBA,EAAiB,KAAUA,EAAiB,KAAE//D,QAAQ,IAAI,IAAM,IAAM,IACnJrC,OAAOC,QAAyB,gBAAImiE,EAAqB,SACzDpiE,OAAOC,QAAkB,SAAImiE,EAAqB,SAClDpiE,OAAOC,QAAc,KAAImiE,EAAiB,KAC1CpiE,OAAOC,QAAoB,YAAI,EAC/BD,OAAOC,QAAoB,WAAImiE,EAAuB,YAAK,KAC3DpiE,OAAOC,QAAe,MAAImiE,EAAkB,OAAK,KACjDpiE,OAAOC,QAAiB,QAAImiE,EAAoB,SAAK,KAErDP,EAAAA,EAA0B7hE,OAAOC,QAAkB,SAAY,SAAI,IAEnE,IAAIwmC,EAAO,IAAIjW,KAEf6xC,GAAAA,EAAKn/C,KAAK,CACNo/C,QAAS,CACLC,SAAUH,EAAqB,SAAE,yCAA6C37B,EAAKsf,cAAgBtf,EAAKq7B,WAAar7B,EAAKs7B,WAE9HxoD,IAAO6oD,EAAiB,MAA2B,IAAtBA,EAAiB,KAAYA,EAAiB,KAAE//D,QAAQ,IAAI,IAAM,MAC/FmgE,YAAa,MACbC,OAAO,EACPC,cAAe,CACXC,aAAa,KAElB,WACChwD,EAAS,CACLnQ,KAAM,cAEd,IAEA4/D,EAAqB,SAAIpiE,OAAOC,QAAkB,SAElDnD,OAAOS,KAAK6kE,GAAYvkE,SAAQ,SAAA+B,GAE5B,IAAInB,EAAQ2jE,EAAWxiE,GAEX,gBAARA,GACInB,EAAMyD,IAAMzD,EAAM2mC,MAClBzyB,EAAS,CACLnQ,KAAM,uBACNhC,KAAM,CAAC,GAAO/B,EAAMyD,GAAI,KAASzD,EAAM2mC,QAI3C3mC,EAAMi+D,KACN/pD,EAAS,CACLnQ,KAAM,eACNhC,KAAM/B,EAAMi+D,OAIL,YAAR98D,EACP+S,EAAS,CACLnQ,KAAM,wBACNhC,KAAM,CAAC,IAAQ/B,KAEJ,cAARmB,EACP0D,YAAW,WACPqP,GAAS6yB,EAAAA,EAAAA,IAAc/mC,GAC3B,IAAqB,IAAlBijE,EAAyB,EAAI,KACjB,cAAR9hE,EACP9C,OAAOS,KAAKkB,GAAOZ,SAAQ,SAAA+kE,GACvB,IAAIC,EAAYpkE,EAAMmkE,GAClB7kE,MAAMC,QAAQ6kE,KACdA,EAAUrlE,KAAKmV,GACfkwD,EAAUrlE,KAAK8mC,IAEnBnvB,EAAAA,EAAgB3E,UAAUoyD,EAAS,CAACC,GACxC,IAEAlwD,EAAS,CACLnQ,KAAM5C,EACNY,KAAM/B,GAGlB,IAEA,IAAMqkE,EAAgB,SAACrmE,GACnB,IAAMsmE,EAAqB,UAAXtmE,EAAE+F,KACH,GAAXugE,GACA5tD,EAAAA,EAAgBgC,kBAAkB,uBAAuB,CAAC,CAAC,QAAS,KAExEnX,OAAOC,QAAoB,WAAI8iE,CACnC,EAOA,GALA/iE,OAAOwgB,iBAAiB,QAASsiD,GACjC9iE,OAAOwgB,iBAAiB,OAAQsiD,GAChC9iE,OAAOwgB,iBAAiB,WAAYsiD,GACpC9iE,OAAOwgB,iBAAiB,WAAYsiD,GAEV,SAAtBV,EAAiB,KAAc,CAC/BjtD,EAAAA,EAAgBgC,kBAAkB,kBAE9BhC,EAAAA,EAAgBk+C,kBAAkB,iBAClCrzD,OAAOkW,SAASkvB,KAAO,KACvBjwB,EAAAA,EAAgB3E,UAAU,cAG9B,IAAMwyD,EAAc7tD,EAAAA,EAAgBk+C,kBAAkB,SAElC,OAAhB2P,GAAyBZ,EAAwB,YAAM,GAKhDA,EAAwB,YAAM,IACrCjtD,EAAAA,EAAgBoF,kBAAkB,QAAQukB,KAAKoG,UAAUk9B,EAAwB,cALjFzvD,EAAS,CACLnQ,KAAM,uBACNhC,KAAMs+B,KAAK18B,MAAM4gE,IAK7B,CAEJ,MAAO,GAAc,qBAAVj2C,EAA+B,CACtC,IAAMhrB,EAAQuiC,IACd3xB,GAASo0B,EAAAA,EAAAA,IAAW,CAChB,GAAMhlC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OACzC,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,MAAW3Q,EAAMyR,WAAWzT,IAAI,YAGpC4S,EAAS,CAACnQ,KAAM,WAAYgT,KAAO,CAAC,UAAU,cAClD,CAjP0C,CAkP9C,CA7We,CACX,CAACtT,GAAK,eAAgB+gE,GAAK,SAACziE,GAEpBA,GAAQA,EAAK8W,MAAsB,YAAd9W,EAAK8W,MAEyB,GADrCgtB,IACJ9wB,WAAWd,MAAM,CAAC,YAAY,SACpCC,GAASwxB,EAAAA,EAAAA,OAIjBxxB,EAAS,CAACnQ,KAAM,eAAgBhC,KAAMA,GAC1C,GACA,CAAC0B,GAAK,YAAa+gE,GAAK,SAACziE,GACrBmS,EAAS,CAACnQ,KAAM,YAAahC,KAAMA,IACL,SAA1BR,OAAOC,QAAc,MACrBD,OAAOqc,QAGP7b,EAAK0iE,QACLvwD,EAAS,CAACnQ,KAAM,WAAYgT,KAAO,CAAC,UAAU,aAAchV,KAAOA,EAAK0iE,QAEhF,GACA,CAAChhE,GAAK,aAAc+gE,GAAK,SAACziE,GAClB2U,EAAAA,EAAgBgC,kBAAkB,iBAAkB,CAAC,CAACgsD,OAAO,KAC/B,SAA1BnjE,OAAOC,QAAc,OAErBkV,EAAAA,EAAgBsvB,qBAAqB,SAGrCtvB,EAAAA,EAAgBoF,kBAAkB,cAAc,GAE5D,GACA,CAACrY,GAAK,qBAAsB+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,uBAAwBhC,KAAM,CAAC,GAAOA,EAAK0B,GAAI,KAAS1B,EAAK4kC,OAAO,GAChI,CAACljC,GAAK,iBAAkB+gE,GAAK,SAACxmE,GAAOkW,GAASszB,EAAAA,EAAAA,IAAgBxpC,EAAE6Y,SAAS,GACzE,CAACpT,GAAK,kBAAmB+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAMhC,EAAKgC,KAAMhC,KAAOA,EAAKA,MAAM,GACtF,CAAC0B,GAAK,WAAY+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,WAAYgT,KAAOhV,EAAKgV,KAAMhV,KAAOA,EAAKA,MAAM,GAClG,CAAC0B,GAAK,WAAY+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,WAAYgT,KAAOhV,EAAKgV,MAAM,GAChF,CAACtT,GAAK,iBAAkB+gE,GAAK,SAACziE,GAEtB,IAAMuB,EAAQuiC,IAEV8+B,EAAiB,CAAC,EAEtB5iE,EAAKgV,MAAQ1Y,OAAOS,KAAKiD,EAAKgV,MAAM3X,SAAQ,SAAA+B,GACxCwjE,EAAexjE,GAAOmC,EAAMyR,WAAWd,MAAMlS,EAAKgV,KAAK5V,GAC3D,IAEAY,EAAK6iE,aAAevmE,OAAOS,KAAKiD,EAAK6iE,aAAaxlE,SAAQ,SAAA+B,GACtDwjE,EAAexjE,GAAOY,EAAK6iE,YAAYzjE,EAC3C,IAEA,IAAM0jE,EAAa,CAACp9B,cAAAA,EAAAA,GAAemD,WAAAA,EAAAA,IAEnC12B,EAAS2wD,EAAW9iE,EAAK+iE,MAAMH,GACvC,GACA,CAAClhE,GAAK,eAAe+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,eAAgBhC,KAAMA,GAAM,GACjF,CAAC0B,GAAK,cAAc+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,cAAehC,KAAMA,GAAM,GAC/E,CAAC0B,GAAK,eAAe+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,eAAgBhC,KAAMA,GAAM,GACjF,CAAC0B,GAAK,iBAAiB+gE,GAAK,SAACziE,GAAUmS,EAAS,CAACnQ,KAAM,iBAAkBhC,KAAMA,GAAM,GACrF,CAAC0B,GAAK,SAAS+gE,GAAK,SAACziE,EAAMgjE,GACvB7wD,EAAS,CAACnQ,KAAM,SAAUhC,KAAMA,SACX,IAAVgjE,GACP7wD,EAAS,CAACnQ,KAAM,gBAAiBhC,KAAMgjE,GAE/C,GACA,CAACthE,GAAK,cAAc+gE,GAAK,SAACziE,GAClB+gE,EAAa/gE,CACrB,GACA,CAAC0B,GAAK,mBAAmB+gE,GAAK,SAAC/7B,EAAWz2B,GAClCmxD,EAAiB16B,EAAWz2B,EACpC,GACA,CAACvO,GAAK,sBAAuB+gE,GAAK,WAC1B,IAAMlhE,EAAQuiC,IACVviC,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QACnCF,GAASuzB,EAAAA,EAAAA,IAAc,CACnB,QAAWnkC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,OAAW3Q,EAAMyR,WAAWd,MAAM,CAAC,eAAe,WAClD,MAAU3Q,EAAMyR,WAAWzT,IAAI,WAG/C,GACA,CAACmC,GAAK,oBAAoB+gE,GAAK,WACvB,IAAMlhE,EAAQuiC,IACVviC,EAAMyR,WAAWX,MAAM,CAAC,WAAW,QACnCF,GAASq1B,EAAAA,EAAAA,IAAgB,CACrB,QAAWjmC,EAAMyR,WAAWd,MAAM,CAAC,WAAW,OAC9C,KAAS3Q,EAAMyR,WAAWd,MAAM,CAAC,WAAW,SAC5C,KAAS3Q,EAAMyR,WAAWzT,IAAI,QAC9B,MAAUgC,EAAMyR,WAAWzT,IAAI,WAG/C,GACA,CAACmC,GAAK,YAAa+gE,GAAK,SAACziE,GACrB8C,YAAW,WACPqP,GAAS6yB,EAAAA,EAAAA,IAAchlC,GAC3B,IAAqB,IAAlBkhE,EAAyB,EAAI,IACpC,GACA,CAACx/D,GAAK,gBAAiB+gE,GAAK,SAACziE,GACrB,IAAIijE,EAAWjjE,EAAKqzB,QAAUnzB,SAASib,WACnC8nD,GAAYzjE,OAAOC,QAAoB,aACvCD,OAAOC,QAAoB,WAAIwjE,EACf,GAAZA,GACAtuD,EAAAA,EAAgBgC,kBAAkB,uBAAuB,CAAC,CAAC,QAAS,KAGpF,GACA,CACIjV,GAAK,kBAAmB+gE,GAAK,SAACziE,GAC1BR,OAAOC,QAAkB,SAAKD,OAAOC,QAAyB,iBAAa,IAARO,EAAaA,EAAK6B,QAAQ,IAAI,IAAM,IAAM,IACrG,IAAR7B,GAAc6hE,GAAAA,EAAKrrD,eAAexW,GAClC2U,EAAAA,EAAgBgC,kBAAkB,kBAAkB,CAAC,CAAC,IAAM3W,IAChE,IAKD3C,SAAQ,SAACiR,GACbqG,EAAAA,EAAgBmE,aAAalK,YAAYN,EAAI5M,GAAI4M,EAAIm0D,GACxD,IAwPKjjE,OAAOwgB,kBAERxgB,OAAOwgB,iBAAiB,UAAWwhD,GAAqB,GACxDhiE,OAAOwgB,iBAAiB,gBAAgB,WACpC7N,GAAS+1B,EAAAA,EAAAA,MACb,IAAG,IAEK1oC,OAAO0jE,aAEf1jE,OAAO0jE,YAAY,YAAa1B,GAChChiE,OAAO0jE,YAAY,gBAAgB,WAC/B/wD,GAAS+1B,EAAAA,EAAAA,MACb,KACQhoC,SAASgjE,cAEjBhjE,SAASgjE,YAAY,YAAa1B,GAClCthE,SAASgjE,YAAY,gBAAgB,WACjC/wD,GAAS+1B,EAAAA,EAAAA,MACb,KAKJ1oC,OAAOwgB,iBAAiB,WAAW,kBAAM7N,EAAS,CAACnQ,KAAM,gBAAiBhC,MAAM,GAAM,IAIjFR,OAAOga,QAAWha,OAAOmiE,cAEnBniE,OAAOmiE,gBACdH,EAAoB,CAACxhE,KAAOR,OAAOmiE,gBAInChtD,EAAAA,EAAgBgC,kBAAkB,gBAAenX,OAAOga,SANxD7E,EAAAA,EAAgBgC,kBAAkB,UAASnX,OAAOga,OAS1D,CD/cA2pD,CAAsBpwD,GAAMZ,SAAUY,GAAM+wB,UAE5C,qBEdI7jC,GAAYC,SAASC,eAAe,QAClC1E,IAAO2nE,EAAAA,GAAAA,GAAWnjE,IACxBxE,GAAKqmB,OAAOxgB,EAAAA,cAAC+hE,EAAAA,GAAQ,CAACtwD,MAAOA,IACzBzR,EAAAA,cAACg4D,GAAS79D,GAAK6nE,uMCTZ,IACM7U,EAAqB,EACrB/lB,EAAqB,EAGrBF,EAAkB,EAOlBH,EAA0B,EAC1BE,EAA8B,EAE9BD,EAAyB,qCCftC,SAASjmC,IACP,OAAOA,EAAW/F,OAAO+Y,OAAS/Y,OAAO+Y,OAAO5K,OAAS,SAAUjO,GACjE,IAAK,IAAIP,EAAI,EAAGA,EAAIa,UAAUL,OAAQR,IAAK,CACzC,IAAIC,EAAIY,UAAUb,GAClB,IAAK,IAAIG,KAAKF,GAAG,CAAG,GAAEqL,eAAe3K,KAAKV,EAAGE,KAAOI,EAAEJ,GAAKF,EAAEE,GAC/D,CACA,OAAOI,CACT,EAAG6F,EAASpF,MAAM,KAAMH,UAC1B,oECRA,SAASymE,EAA8BnnE,EAAGH,GACxC,GAAI,MAAQG,EAAG,MAAO,CAAC,EACvB,IAAIF,EAAI,CAAC,EACT,IAAK,IAAIM,KAAKJ,EAAG,GAAI,CAAC,EAAEmL,eAAe3K,KAAKR,EAAGI,GAAI,CACjD,IAAK,IAAMP,EAAES,QAAQF,GAAI,SACzBN,EAAEM,GAAKJ,EAAEI,EACX,CACA,OAAON,CACT,kECPAI,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,IACtDtC,EAAQolC,eAAY,EACpB,IAAIyiC,EAAwB,qBACxBC,EAAe,YACfC,EAAkB,UAClBC,EAAsB,6BACtBC,EAAyB,UAYzBxrC,EAAa,SAAUnnB,EAAO4yD,GAC9B,OAAOA,EAAUr3D,aACrB,EAIIs3D,EAAa,SAAU7yD,EAAOwmC,GAAU,MAAO,GAAG5hC,OAAO4hC,EAAQ,IAAM,EAoB3E97C,EAAQolC,UAhBQ,SAAUp6B,EAAUqB,GAEhC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAnBrB,SAAUrB,GAC1B,OAAQA,GACJ+8D,EAAgBj4D,KAAK9E,IACrB68D,EAAsB/3D,KAAK9E,EACnC,CAgBQo9D,CAAcp9D,GACPA,GAEXA,EAAWA,EAAS+lB,eAGhB/lB,EAFAqB,EAAQg8D,YAEGr9D,EAAS9E,QAAQ+hE,EAAwBE,GAIzCn9D,EAAS9E,QAAQ8hE,EAAqBG,IAErCjiE,QAAQ4hE,EAAcrrC,GAC1C,qCC5CA,SAAS6rC,EAAuBhoE,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIioE,eAAe,6DAC3C,OAAOjoE,CACT,sGCCA4lE,EAAAA,EAAKsC,IAAIC,EAAAA,GAASD,IAAIE,EAAAA,IAEtB,IAAexC,EAAI,oBCJnB,IAAIyC,EAAgB,kCAEhBC,EAAgB,MAChBC,EAAmB,OAGnBC,EAAiB,yCACjBC,EAAc,QACdC,EAAc,uDACdC,EAAkB,UAGlBC,EAAa,aAMbC,EAAe,GA8OnB,SAASpxD,EAAK+Y,GACZ,OAAOA,EAAMA,EAAI5qB,QAAQgjE,EAAYC,GAAgBA,CACvD,CAnOAlpE,EAAOD,QAAU,SAAUyK,EAAO4B,GAChC,GAAqB,iBAAV5B,EACT,MAAM,IAAIjI,UAAU,mCAGtB,IAAKiI,EAAO,MAAO,GAEnB4B,EAAUA,GAAW,CAAC,EAKtB,IAAI+8D,EAAS,EACTC,EAAS,EAOb,SAASC,EAAex4C,GACtB,IAAIy4C,EAAQz4C,EAAIxb,MAAMszD,GAClBW,IAAOH,GAAUG,EAAMzoE,QAC3B,IAAIJ,EAAIowB,EAAI04C,YAvCF,MAwCVH,GAAU3oE,EAAIowB,EAAIhwB,OAASJ,EAAI2oE,EAASv4C,EAAIhwB,MAC9C,CAOA,SAASqqD,IACP,IAAIh/B,EAAQ,CAAEqY,KAAM4kC,EAAQC,OAAQA,GACpC,OAAO,SAAUx7D,GAGf,OAFAA,EAAKs9C,SAAW,IAAIse,EAASt9C,GAC7Bu9C,IACO77D,CACT,CACF,CAUA,SAAS47D,EAASt9C,GAChBpoB,KAAKooB,MAAQA,EACbpoB,KAAK8vB,IAAM,CAAE2Q,KAAM4kC,EAAQC,OAAQA,GACnCtlE,KAAKgoB,OAAS1f,EAAQ0f,MACxB,CAKA09C,EAAS3kE,UAAU0U,QAAU/O,EAE7B,IAAIk/D,EAAa,GAQjB,SAAS18D,EAAM0oB,GACb,IAAIpwB,EAAM,IAAI28B,MACZ71B,EAAQ0f,OAAS,IAAMq9C,EAAS,IAAMC,EAAS,KAAO1zC,GAQxD,GANApwB,EAAIqkE,OAASj0C,EACbpwB,EAAIskE,SAAWx9D,EAAQ0f,OACvBxmB,EAAIi/B,KAAO4kC,EACX7jE,EAAI8jE,OAASA,EACb9jE,EAAIwmB,OAASthB,GAET4B,EAAQy9D,OAGV,MAAMvkE,EAFNokE,EAAWtoE,KAAKkE,EAIpB,CAQA,SAAS+P,EAAMy0D,GACb,IAAI5+D,EAAI4+D,EAAGzpD,KAAK7V,GAChB,GAAKU,EAAL,CACA,IAAI2lB,EAAM3lB,EAAE,GAGZ,OAFAm+D,EAAex4C,GACfrmB,EAAQA,EAAMqG,MAAMggB,EAAIhwB,QACjBqK,CAJO,CAKhB,CAKA,SAASu+D,IACPp0D,EAAMuzD,EACR,CAQA,SAASmB,EAASC,GAChB,IAAIniE,EAEJ,IADAmiE,EAAQA,GAAS,GACTniE,EAAIoiE,MACA,IAANpiE,GACFmiE,EAAM5oE,KAAKyG,GAGf,OAAOmiE,CACT,CAQA,SAASC,IACP,IAAIvxC,EAAMwyB,IACV,GAnJgB,KAmJK1gD,EAAM0/D,OAAO,IAlJvB,KAkJyC1/D,EAAM0/D,OAAO,GAAjE,CAGA,IADA,IAAIzpE,EAAI,EAENyoE,GAAgB1+D,EAAM0/D,OAAOzpE,KAtJpB,KAuJI+J,EAAM0/D,OAAOzpE,IAxJZ,KAwJmC+J,EAAM0/D,OAAOzpE,EAAI,OAEhEA,EAIJ,GAFAA,GAAK,EAEDyoE,IAAiB1+D,EAAM0/D,OAAOzpE,EAAI,GACpC,OAAOuM,EAAM,0BAGf,IAAI6jB,EAAMrmB,EAAMqG,MAAM,EAAGpQ,EAAI,GAM7B,OALA2oE,GAAU,EACVC,EAAex4C,GACfrmB,EAAQA,EAAMqG,MAAMpQ,GACpB2oE,GAAU,EAEH1wC,EAAI,CACTtyB,KApKa,UAqKb6jE,QAASp5C,GAvBgE,CAyB7E,CAQA,SAAS/lB,IACP,IAAI4tB,EAAMwyB,IAGNif,EAAO90D,EAAMwzD,GACjB,GAAKsB,EAAL,CAIA,GAHAF,KAGK50D,EAAMyzD,GAAc,OAAO97D,EAAM,wBAGtC,IAAIq1D,EAAMhtD,EAAM0zD,GAEZqB,EAAM1xC,EAAI,CACZtyB,KA7LiB,cA8LjB2E,SAAU+M,EAAKqyD,EAAK,GAAGlkE,QAAQyiE,EAAeQ,IAC9C7mE,MAAOggE,EACHvqD,EAAKuqD,EAAI,GAAGp8D,QAAQyiE,EAAeQ,IACnCA,IAMN,OAFA7zD,EAAM2zD,GAECoB,CApBU,CAqBnB,CAyBA,OADAX,IAjBA,WACE,IAKIY,EALAC,EAAQ,GAMZ,IAJAP,EAASO,GAIDD,EAAOv/D,MACA,IAATu/D,IACFC,EAAMlpE,KAAKipE,GACXN,EAASO,IAIb,OAAOA,CACT,CAGO5/D,EACT,qCCvPE1K,EAAOD,QAAU,EAAjB,QCFEwqE,yBAA2B,CAAC,ECD5BC,SCCAC,eADAC,SCAAC,WACAC,kBHGJ,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeR,yBAAyBO,GAC5C,QAAqBz/D,IAAjB0/D,EACH,OAAOA,EAAahrE,QAGrB,IAAIC,EAASuqE,yBAAyBO,GAAY,CAGjD/qE,QAAS,CAAC,GAOX,OAHAirE,oBAAoBF,GAAU9pE,KAAKhB,EAAOD,QAASC,EAAQA,EAAOD,QAAS8qE,qBAGpE7qE,EAAOD,OACf,CAGA8qE,oBAAoB3/D,EAAI8/D,oBCzBpBR,SAAW,GACfK,oBAAoBtlB,EAAI,SAAS3tC,EAAQqzD,EAAUh8C,EAAI8xC,GACtD,IAAGkK,EAAH,CAMA,IAAIC,EAAe34C,IACnB,IAAS9xB,EAAI,EAAGA,EAAI+pE,SAAS3pE,OAAQJ,IAAK,CACrCwqE,EAAWT,SAAS/pE,GAAG,GACvBwuB,EAAKu7C,SAAS/pE,GAAG,GACjBsgE,EAAWyJ,SAAS/pE,GAAG,GAE3B,IAJA,IAGI0qE,GAAY,EACPxiD,EAAI,EAAGA,EAAIsiD,EAASpqE,OAAQ8nB,MACpB,EAAXo4C,GAAsBmK,GAAgBnK,IAAargE,OAAOS,KAAK0pE,oBAAoBtlB,GAAG6lB,OAAM,SAAS5nE,GAAO,OAAOqnE,oBAAoBtlB,EAAE/hD,GAAKynE,EAAStiD,GAAK,IAChKsiD,EAASx3D,OAAOkV,IAAK,IAErBwiD,GAAY,EACTpK,EAAWmK,IAAcA,EAAenK,IAG7C,GAAGoK,EAAW,CACbX,SAAS/2D,OAAOhT,IAAK,GACrB,IAAID,EAAIyuB,SACE5jB,IAAN7K,IAAiBoX,EAASpX,EAC/B,CACD,CACA,OAAOoX,CArBP,CAJCmpD,EAAWA,GAAY,EACvB,IAAI,IAAItgE,EAAI+pE,SAAS3pE,OAAQJ,EAAI,GAAK+pE,SAAS/pE,EAAI,GAAG,GAAKsgE,EAAUtgE,IAAK+pE,SAAS/pE,GAAK+pE,SAAS/pE,EAAI,GACrG+pE,SAAS/pE,GAAK,CAACwqE,EAAUh8C,EAAI8xC,EAwB/B,EG5BA8J,oBAAoBjqE,EAAI,SAASZ,GAChC,IAAIqrE,EAASrrE,GAAUA,EAAOqI,WAC7B,WAAa,OAAOrI,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA6qE,oBAAoBj1D,EAAEy1D,EAAQ,CAAEppE,EAAGopE,IAC5BA,CACR,EFPIX,SAAWhqE,OAAOikB,eAAiB,SAAStG,GAAO,OAAO3d,OAAOikB,eAAetG,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIuG,SAAW,EAQpIimD,oBAAoBvqE,EAAI,SAAS+B,EAAO6Y,GAEvC,GADU,EAAPA,IAAU7Y,EAAQyB,KAAKzB,IAChB,EAAP6Y,EAAU,OAAO7Y,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP6Y,GAAa7Y,EAAMgG,WAAY,OAAOhG,EAC1C,GAAW,GAAP6Y,GAAoC,mBAAf7Y,EAAM2B,KAAqB,OAAO3B,CAC5D,CACA,IAAIipE,EAAK5qE,OAAOuK,OAAO,MACvB4/D,oBAAoBrqE,EAAE8qE,GACtB,IAAIC,EAAM,CAAC,EACXd,eAAiBA,gBAAkB,CAAC,KAAMC,SAAS,CAAC,GAAIA,SAAS,IAAKA,SAASA,WAC/E,IAAI,IAAIxuD,EAAiB,EAAPhB,GAAY7Y,EAAyB,iBAAX6Z,KAAyBuuD,eAAe3pE,QAAQob,GAAUA,EAAUwuD,SAASxuD,GACxHxb,OAAOylB,oBAAoBjK,GAASza,SAAQ,SAAS+B,GAAO+nE,EAAI/nE,GAAO,WAAa,OAAOnB,EAAMmB,EAAM,CAAG,IAI3G,OAFA+nE,EAAa,QAAI,WAAa,OAAOlpE,CAAO,EAC5CwoE,oBAAoBj1D,EAAE01D,EAAIC,GACnBD,CACR,EGxBAT,oBAAoBj1D,EAAI,SAAS7V,EAASyrE,GACzC,IAAI,IAAIhoE,KAAOgoE,EACXX,oBAAoBtqE,EAAEirE,EAAYhoE,KAASqnE,oBAAoBtqE,EAAER,EAASyD,IAC5E9C,OAAO6J,eAAexK,EAASyD,EAAK,CAAEhC,YAAY,EAAMmC,IAAK6nE,EAAWhoE,IAG3E,ECPAqnE,oBAAoB3oE,EAAI,CAAC,EAGzB2oE,oBAAoBxqE,EAAI,SAASorE,GAChC,OAAO3jE,QAAQwoD,IAAI5vD,OAAOS,KAAK0pE,oBAAoB3oE,GAAG66B,QAAO,SAASqzB,EAAU5sD,GAE/E,OADAqnE,oBAAoB3oE,EAAEsB,GAAKioE,EAASrb,GAC7BA,CACR,GAAG,IACJ,ECPAya,oBAAoB7oE,EAAI,SAASypE,GAEhC,OAAYA,EAAU,IAAM,CAAC,GAAK,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,wBAAwBA,GAAW,KACxW,ECJAZ,oBAAoBh1D,EAAI,WACvB,GAA0B,iBAAfopB,WAAyB,OAAOA,WAC3C,IACC,OAAOn7B,MAAQ,IAAIo7B,SAAS,cAAb,EAChB,CAAE,MAAO7+B,GACR,GAAsB,iBAAXuD,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBinE,oBAAoBtqE,EAAI,SAAS8d,EAAK8rD,GAAQ,OAAOzpE,OAAOmE,UAAU8G,eAAe3K,KAAKqd,EAAK8rD,EAAO,ENAlGQ,WAAa,CAAC,EACdC,kBAAoB,eAExBC,oBAAoBhpE,EAAI,SAAS+uB,EAAKxuB,EAAMoB,EAAKioE,GAChD,GAAGd,WAAW/5C,GAAQ+5C,WAAW/5C,GAAKxvB,KAAKgB,OAA3C,CACA,IAAIspE,EAAQC,EACZ,QAAWtgE,IAAR7H,EAEF,IADA,IAAI8kD,EAAUhkD,SAASiD,qBAAqB,UACpC9G,EAAI,EAAGA,EAAI6nD,EAAQznD,OAAQJ,IAAK,CACvC,IAAIqrC,EAAIwc,EAAQ7nD,GAChB,GAAGqrC,EAAEz8B,aAAa,QAAUuhB,GAAOkb,EAAEz8B,aAAa,iBAAmBu7D,kBAAoBpnE,EAAK,CAAEkoE,EAAS5/B,EAAG,KAAO,CACpH,CAEG4/B,IACHC,GAAa,GACbD,EAASpnE,SAAS8C,cAAc,WAEzBwkE,QAAU,QACjBF,EAAO75C,QAAU,IACbg5C,oBAAoBgB,IACvBH,EAAOtzD,aAAa,QAASyyD,oBAAoBgB,IAElDH,EAAOtzD,aAAa,eAAgBwyD,kBAAoBpnE,GAExDkoE,EAAOjkE,IAAMmpB,EAC4C,IAArD86C,EAAOjkE,IAAI3G,QAAQ8C,OAAOkW,SAASmE,OAAS,OAC/CytD,EAAOt8B,YAAc,cAGvBu7B,WAAW/5C,GAAO,CAACxuB,GACnB,IAAI0pE,EAAmB,SAASt9D,EAAMnL,GAErCqoE,EAAO3+D,QAAU2+D,EAAOr8C,OAAS,KACjCpC,aAAa4E,GACb,IAAIk6C,EAAUpB,WAAW/5C,GAIzB,UAHO+5C,WAAW/5C,GAClB86C,EAAOjzD,YAAcizD,EAAOjzD,WAAWC,YAAYgzD,GACnDK,GAAWA,EAAQtqE,SAAQ,SAASwtB,GAAM,OAAOA,EAAG5rB,EAAQ,IACzDmL,EAAM,OAAOA,EAAKnL,EACtB,EACIwuB,EAAU3qB,WAAW4kE,EAAiBj9D,KAAK,UAAMxD,EAAW,CAAEjF,KAAM,UAAW+I,OAAQu8D,IAAW,MACtGA,EAAO3+D,QAAU++D,EAAiBj9D,KAAK,KAAM68D,EAAO3+D,SACpD2+D,EAAOr8C,OAASy8C,EAAiBj9D,KAAK,KAAM68D,EAAOr8C,QACnDs8C,GAAcrnE,SAAS0nE,KAAK3kE,YAAYqkE,EAvCkB,CAwC3D,EO3CAb,oBAAoBrqE,EAAI,SAAST,GACX,oBAAX+B,QAA0BA,OAAO+hD,aAC1CnjD,OAAO6J,eAAexK,EAAS+B,OAAO+hD,YAAa,CAAExhD,MAAO,WAE7D3B,OAAO6J,eAAexK,EAAS,aAAc,CAAEsC,OAAO,GACvD,ECNAwoE,oBAAoBn/D,EAAI,gBCKxB,IAAIugE,EAAkB,CACrB,IAAK,GAGNpB,oBAAoB3oE,EAAEymB,EAAI,SAAS8iD,EAASrb,GAE1C,IAAI8b,EAAqBrB,oBAAoBtqE,EAAE0rE,EAAiBR,GAAWQ,EAAgBR,QAAWpgE,EACtG,GAA0B,IAAvB6gE,EAGF,GAAGA,EACF9b,EAAShvD,KAAK8qE,EAAmB,QAC3B,CAGL,IAAIprC,EAAU,IAAIh5B,SAAQ,SAASC,EAASy4B,GAAU0rC,EAAqBD,EAAgBR,GAAW,CAAC1jE,EAASy4B,EAAS,IACzH4vB,EAAShvD,KAAK8qE,EAAmB,GAAKprC,GAGtC,IAAIlQ,EAAMi6C,oBAAoBn/D,EAAIm/D,oBAAoB7oE,EAAEypE,GAEpDz+D,EAAQ,IAAIi1B,MAgBhB4oC,oBAAoBhpE,EAAE+uB,GAfH,SAASvtB,GAC3B,GAAGwnE,oBAAoBtqE,EAAE0rE,EAAiBR,KAEf,KAD1BS,EAAqBD,EAAgBR,MACRQ,EAAgBR,QAAWpgE,GACrD6gE,GAAoB,CACtB,IAAIC,EAAY9oE,IAAyB,SAAfA,EAAM+C,KAAkB,UAAY/C,EAAM+C,MAChEgmE,EAAU/oE,GAASA,EAAM8L,QAAU9L,EAAM8L,OAAO1H,IACpDuF,EAAMoO,QAAU,iBAAmBqwD,EAAU,cAAgBU,EAAY,KAAOC,EAAU,IAC1Fp/D,EAAM/F,KAAO,iBACb+F,EAAM5G,KAAO+lE,EACbn/D,EAAMi3B,QAAUmoC,EAChBF,EAAmB,GAAGl/D,EACvB,CAEF,GACyC,SAAWy+D,EAASA,EAE/D,CAEH,EAUAZ,oBAAoBtlB,EAAE58B,EAAI,SAAS8iD,GAAW,OAAoC,IAA7BQ,EAAgBR,EAAgB,EAGrF,IAAIY,EAAuB,SAASC,EAA4BloE,GAC/D,IAKI0mE,EAAUW,EALVR,EAAW7mE,EAAK,GAChBmoE,EAAcnoE,EAAK,GACnB06B,EAAU16B,EAAK,GAGI3D,EAAI,EAC3B,GAAGwqE,EAASuB,MAAK,SAAS1mE,GAAM,OAA+B,IAAxBmmE,EAAgBnmE,EAAW,IAAI,CACrE,IAAIglE,KAAYyB,EACZ1B,oBAAoBtqE,EAAEgsE,EAAazB,KACrCD,oBAAoB3/D,EAAE4/D,GAAYyB,EAAYzB,IAGhD,GAAGhsC,EAAS,IAAIlnB,EAASknB,EAAQ+rC,oBAClC,CAEA,IADGyB,GAA4BA,EAA2BloE,GACrD3D,EAAIwqE,EAASpqE,OAAQJ,IACzBgrE,EAAUR,EAASxqE,GAChBoqE,oBAAoBtqE,EAAE0rE,EAAiBR,IAAYQ,EAAgBR,IACrEQ,EAAgBR,GAAS,KAE1BQ,EAAgBR,GAAW,EAE5B,OAAOZ,oBAAoBtlB,EAAE3tC,EAC9B,EAEI60D,EAAqBtsE,KAA8B,wBAAIA,KAA8B,yBAAK,GAC9FssE,EAAmBhrE,QAAQ4qE,EAAqBx9D,KAAK,KAAM,IAC3D49D,EAAmBrrE,KAAOirE,EAAqBx9D,KAAK,KAAM49D,EAAmBrrE,KAAKyN,KAAK49D,OCpFvF,IAAIC,oBAAsB7B,oBAAoBtlB,OAAEl6C,EAAW,CAAC,MAAM,WAAa,OAAOw/D,oBAAoB,KAAO,WACjH6B,oBAAsB7B,oBAAoBtlB,EAAEmnB","sources":["webpack://LHCReactAPP/webpack/universalModuleDefinition","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://LHCReactAPP/./src/components/ChatModal.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorValues.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js","webpack://LHCReactAPP/./src/components/SharedTextarea.js","webpack://LHCReactAPP/./node_modules/style-to-object/cjs/index.js","webpack://LHCReactAPP/./node_modules/domhandler/lib/index.js","webpack://LHCReactAPP/./src/components/ChatField.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js","webpack://LHCReactAPP/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://LHCReactAPP/./src/components/ChatErrorList.js","webpack://LHCReactAPP/./node_modules/html-dom-parser/lib/client/html-to-dom.js","webpack://LHCReactAPP/./node_modules/react-is/cjs/react-is.production.min.js","webpack://LHCReactAPP/./src/components/ChatDepartment.js","webpack://LHCReactAPP/./src/components/ChatBotIntroMessage.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://LHCReactAPP/./src/components/ChatStartOptions.js","webpack://LHCReactAPP/./src/components/ChatInvitationMessage.js","webpack://LHCReactAPP/./src/components/StartChat.js","webpack://LHCReactAPP/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://LHCReactAPP/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack://LHCReactAPP/./node_modules/xwiper/index.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/typeof.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://LHCReactAPP/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://LHCReactAPP/./node_modules/howler/dist/howler.js","webpack://LHCReactAPP/./node_modules/react-property/lib/index.js","webpack://LHCReactAPP/./node_modules/react-is/index.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorKeys.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/regenerator/index.js","webpack://LHCReactAPP/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/OverloadYield.js","webpack://LHCReactAPP/./node_modules/style-to-js/cjs/index.js","webpack://LHCReactAPP/./node_modules/html-dom-parser/lib/client/constants.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://LHCReactAPP/./node_modules/domelementtype/lib/index.js","webpack://LHCReactAPP/./node_modules/html-dom-parser/lib/client/domparser.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorDefine.js","webpack://LHCReactAPP/./src/actions/chatActions.js","webpack://LHCReactAPP/./src/components/ChatAbort.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regeneratorAsync.js","webpack://LHCReactAPP/./node_modules/react-property/lib/possibleStandardNamesOptimized.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://LHCReactAPP/./node_modules/domhandler/lib/node.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/regenerator.js","webpack://LHCReactAPP/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://LHCReactAPP/./node_modules/html-dom-parser/lib/client/utilities.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://LHCReactAPP/./src/lib/helperFunctions.js","webpack://LHCReactAPP/./src/components/ChatOptions.js","webpack://LHCReactAPP/./src/components/HeaderChat.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://LHCReactAPP/./src/components/ChatMessage.js","webpack://LHCReactAPP/./src/components/ChatFileUploader.js","webpack://LHCReactAPP/./src/components/ChatSync.js","webpack://LHCReactAPP/./src/components/ChatStatus.js","webpack://LHCReactAPP/./src/components/ChatIntroStatus.js","webpack://LHCReactAPP/./src/components/OnlineChat.js","webpack://LHCReactAPP/./src/components/BodyChat.js","webpack://LHCReactAPP/./src/components/ChatSound.js","webpack://LHCReactAPP/./src/components/ErrorBoundary.js","webpack://LHCReactAPP/./src/App.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://LHCReactAPP/./node_modules/redux/es/redux.js","webpack://LHCReactAPP/./src/constants/action-types.js","webpack://LHCReactAPP/./src/reducers/chatWidgetReducer.js","webpack://LHCReactAPP/./src/reducers/index.js","webpack://LHCReactAPP/./src/store/index.js","webpack://LHCReactAPP/./src/store/chatWidgetListener.js","webpack://LHCReactAPP/./src/react.app.js","webpack://LHCReactAPP/./src/constants/chat-status.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://LHCReactAPP/./node_modules/style-to-js/cjs/utilities.js","webpack://LHCReactAPP/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://LHCReactAPP/./src/i18n.js","webpack://LHCReactAPP/./node_modules/inline-style-parser/index.js","webpack://LHCReactAPP/./node_modules/scheduler/index.js","webpack://LHCReactAPP/webpack/bootstrap","webpack://LHCReactAPP/webpack/runtime/chunk loaded","webpack://LHCReactAPP/webpack/runtime/create fake namespace object","webpack://LHCReactAPP/webpack/runtime/load script","webpack://LHCReactAPP/webpack/runtime/compat get default export","webpack://LHCReactAPP/webpack/runtime/define property getters","webpack://LHCReactAPP/webpack/runtime/ensure chunk","webpack://LHCReactAPP/webpack/runtime/get javascript chunk filename","webpack://LHCReactAPP/webpack/runtime/global","webpack://LHCReactAPP/webpack/runtime/hasOwnProperty shorthand","webpack://LHCReactAPP/webpack/runtime/make namespace object","webpack://LHCReactAPP/webpack/runtime/publicPath","webpack://LHCReactAPP/webpack/runtime/jsonp chunk loading","webpack://LHCReactAPP/webpack/startup"],"sourcesContent":["(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[\"LHCReactAPP\"] = factory();\n\telse\n\t\troot[\"LHCReactAPP\"] = factory();\n})(self, function() {\nreturn ","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","import defineProperty from \"./defineProperty.js\";\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? Object(arguments[r]) : {},\n o = Object.keys(t);\n \"function\" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), o.forEach(function (r) {\n defineProperty(e, r, t[r]);\n });\n }\n return e;\n}\nexport { _objectSpread as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import React, { PureComponent } from 'react';\nimport axios from \"axios\";\nimport parse, { domToReact } from 'html-react-parser';\nimport { withTranslation } from 'react-i18next';\nimport Xwiper from 'xwiper';\nimport { flushSync } from 'react-dom';\n\nclass ChatModal extends PureComponent {\n\n state = {\n body: null\n };\n \n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n axios.get(window.lhcChat['base_url'] + this.props.dataUrl)\n .then((response) => {\n flushSync(() => {\n this.setState({'body' : response.data});\n });\n\n var container = document.getElementById('dialog-content');\n var bsn = require(\"bootstrap.native/dist/components/tab-native\");\n var tabs = container.querySelectorAll('[data-bs-toggle=\"tab\"]');\n\n if (tabs.length > 0) {\n var activeTab = 0;\n Array.prototype.forEach.call(tabs, function(element){element.tabItem = new bsn( element) });\n\n const xwiper = new Xwiper('.tab-content');\n xwiper.onSwipeLeft(() => {\n activeTab = activeTab < (tabs.length - 1) ? (activeTab + 1) : 0;\n tabs[activeTab].tabItem.show();\n });\n\n xwiper.onSwipeRight(() => {\n activeTab = activeTab > 0 ? (activeTab - 1) : (tabs.length - 1);\n tabs[activeTab].tabItem.show();\n });\n }\n\n })\n .catch((err) => {\n console.log(err);\n })\n }\n\n dismissModal = (e) => {\n this.props.toggle();\n e && e.stopPropagation();\n }\n\n generalOnClick = (e) => {\n const { t } = this.props;\n\n var txtToAdd = e['data-bb-code'];\n if (e['data-promt'] && e['data-promt'] == 'img') {\n var link = prompt(t('bbcode.img_link'));\n if (link) {\n txtToAdd = '[' + txtToAdd + ']' + link + '[/' + txtToAdd + ']';\n } else {\n txtToAdd = '';\n }\n } else if (e['data-promt'] && e['data-promt'] == 'url') {\n var link = prompt(t('bbcode.link'));\n if (link) {\n txtToAdd = '[url=' + link + ']'+t('bbcode.link_here')+'[/url]';\n } else {\n txtToAdd = '';\n }\n }\n this.props.insertText(txtToAdd);\n this.props.toggle();\n }\n\n generalDataActionClick = (e, event) => {\n if (e['data-action'] && this.props[e['data-action']]) {\n this.props[e['data-action']](e['data-action-arg'] || null);\n }\n event && event.stopPropagation();\n }\n\n render() {\n\n return (\n <React.Fragment>\n {this.state.body !== null && <div className=\"fade modal-backdrop show\"></div>}\n {this.state.body !== null && <div role=\"dialog\" id=\"dialog-content\" aria-modal=\"true\" className=\"fade modal show d-block\" tabIndex=\"-1\">{parse(this.state.body, {\n replace: domNode => {\n\n if (domNode.attribs && domNode.attribs.id === 'react-close-modal') {\n return <button tabIndex=\"0\" type=\"button\" className=\"btn-close float-end\" data-bs-dismiss=\"modal\" onClick={this.dismissModal} aria-label=\"Close\"></button>;\n } else if (domNode.attribs && domNode.attribs.linkaction) {\n\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n delete domNode.attribs.class;\n }\n return (\n <a {...domNode.attribs} onClick={(e) => this.generalDataActionClick(domNode.attribs, e)}>{domToReact(domNode.children)}</a>\n );\n\n } else if (domNode.attribs && domNode.attribs.bbitem) {\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n delete domNode.attribs.class;\n }\n return (\n <a {...domNode.attribs} onKeyDown={(e) => { if (e.key === \"Enter\") {e.preventDefault();this.generalOnClick(domNode.attribs)}}} onClick={(e) => this.generalOnClick(domNode.attribs)}>{domToReact(domNode.children)}</a>\n );\n } else if (domNode.type && domNode.type === 'tag' && domNode.name && domNode.name == 'input' && domNode.attribs && domNode.attribs.type && domNode.attribs.type == \"button\") {\n\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n delete domNode.attribs.class;\n }\n\n return (<input {...domNode.attribs} onClick={(e) => this.generalDataActionClick(domNode.attribs, e)} />);\n\n } else if (domNode.type && domNode.type === 'script') {\n if (domNode.children.length > 0)\n {\n setTimeout(() => {\n const newScript = document.createElement(\"script\");\n newScript.appendChild(document.createTextNode(domNode.children[0].data));\n var head = document.getElementsByTagName('head').item(0);\n head.appendChild(newScript);\n },500);\n } else if (domNode.attribs && domNode.attribs.src) {\n const newScript = document.createElement('script');\n newScript.src = domNode.attribs.src;\n newScript.type ='text/javascript';\n var head = document.getElementsByTagName('head').item(0);\n head.appendChild(newScript);\n }\n return <React.Fragment></React.Fragment>;\n }\n }\n }\n )}</div>}\n </React.Fragment>\n )\n }\n}\n\nexport default withTranslation()(ChatModal);\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorValues(e) {\n if (null != e) {\n var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n r = 0;\n if (t) return t.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) return {\n next: function next() {\n return e && r >= e.length && (e = void 0), {\n value: e && e[r++],\n done: !e\n };\n }\n };\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nmodule.exports = _regeneratorValues, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","var regenerator = require(\"./regenerator.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nmodule.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React from 'react';\n\nclass SharedTextarea extends React.Component {\n render() {\n const {text, onTextChange, textareaRef, classNameText, textPlaceholder, onTextKeyDown, onTextFocus, textAutoFocus, textMaxLength, onTextTouchStart, onTextKeyUp, textReadOnly} = this.props;\n\n return (\n <textarea onChange={onTextChange}\n aria-label=\"Type your message here...\"\n id=\"CSChatMessage\"\n rows=\"1\"\n onTouchStart={onTextTouchStart}\n maxLength={textMaxLength}\n autoFocus={textAutoFocus}\n ref={textareaRef}\n value={text}\n onKeyUp={onTextKeyUp}\n onKeyDown={onTextKeyDown}\n onFocus={onTextFocus}\n className={classNameText}\n placeholder={textPlaceholder}\n readOnly={textReadOnly}\n ></textarea>\n );\n }\n}\n\nexport default SharedTextarea;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n var styleObject = null;\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n var declarations = (0, inline_style_parser_1.default)(style);\n var hasIterator = typeof iterator === 'function';\n declarations.forEach(function (declaration) {\n if (declaration.type !== 'declaration') {\n return;\n }\n var property = declaration.property, value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n }\n else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n return styleObject;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_js_1 = require(\"./node.js\");\n__exportStar(require(\"./node.js\"), exports);\n// Default options\nvar defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_js_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_js_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_js_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n var node = new node_js_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_js_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_js_1.Text(\"\");\n var node = new node_js_1.CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_js_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","import React, { Component } from 'react';\nimport { withTranslation } from 'react-i18next';\n\nclass ChatField extends Component {\n\n state = {\n hiddenIfPrefilled: false\n };\n\n constructor(props) {\n super(props);\n this.onchangeAttr = this.onchangeAttr.bind(this);\n this.onFileAdded = this.onFileAdded.bind(this);\n }\n\n onchangeAttr(e) {\n this.props.onChangeContent({id : this.props.field.get('name'), value : e.value, field : this.props.field});\n \n if (this.props.field.get('type') == 'dropdown' ) {\n var selectedOption = parseInt(e.target.options[e.target.selectedIndex].getAttribute('dep-id'));\n if (selectedOption > 0) {\n // Maybe we should add product and custom start chat form dependency\n // Now we just assume different departments will have same start chat form settings\n this.props.onChangeContent({id : 'DepartamentID', value : selectedOption, subject_id: e.target.options[e.target.selectedIndex].getAttribute('subject-id')});\n }\n }\n }\n\n onFileAdded(e) {\n const list = e.target.files;\n const files = [];\n for (var i = 0; i < list.length; i++) {\n files.push(list.item(i));\n }\n\n if (list.length == 0) {\n return null;\n }\n\n const ruleTest = new RegExp(\"(\\.|\\/)(\" + this.props.field.get('ft_us') + \")$\",\"i\");\n\n const { t } = this.props;\n\n let uploadErrors = [];\n files.forEach(file => {\n if (!(ruleTest.test(file.type) || ruleTest.test(file.name))) {\n uploadErrors.push(file.name + ': ' + t('file.incorrect_type'));\n }\n if (file.size > this.props.field.get('fs')) {\n uploadErrors.push(file.name + ': '+ t('file.to_big_file'));\n }\n });\n\n if (uploadErrors.length > 0) {\n alert(uploadErrors.join(\"\\n\"));\n } else {\n this.props.onChangeContent({id : this.props.field.get('name'), value : files[0], field : this.props.field});\n }\n }\n\n componentDidMount() {\n if (this.props.field.get('type') == 'checkbox' && this.props.field.get('default') == true) {\n this.props.onChangeContent({id : this.props.field.get('name'), value : true});\n } else if (this.props.field.get('type') == 'dropdown' || this.props.field.get('type') == 'text') {\n this.props.onChangeContent({id : this.props.field.get('name'), value : this.props.defaultValueField});\n\n if (this.props.field.has('hide_prefilled') && this.props.field.get('hide_prefilled') == true && this.props.isInvalid === false && this.props.field.get('value')) {\n this.setState({'hiddenIfPrefilled':true});\n }\n\n if (this.props.field.get('type') == 'dropdown') {\n this.props.field.get('options').map((dep) => {\n if (dep.get('value') == this.props.defaultValueField && dep.get('dep_id')) {\n this.props.onChangeContent({set_default: true, id : 'DepartamentID', subject_id: (dep.has('subject_id') ? dep.get('subject_id') : null), value : dep.get('dep_id')});\n }\n });\n }\n }\n\n if (this.props.attrPrefill) {\n\n if (this.props.attrPrefill.attr_prefill_admin) {\n this.props.attrPrefill.attr_prefill_admin.forEach((item) => {\n if (item.index == this.props.field.get('identifier') || (this.props.field.has('identifier_prefill') && item.index == this.props.field.get('identifier_prefill'))) {\n this.props.onChangeContent({id : this.props.field.get('name'), value : item.value});\n // Hide only valid prefilled fields\n if (this.props.field.has('hide_prefilled') && this.props.field.get('hide_prefilled') == true && this.props.isInvalid === false) {\n this.setState({'hiddenIfPrefilled':true});\n }\n }\n })\n }\n\n if (this.props.attrPrefill.attr_prefill) {\n this.props.attrPrefill.attr_prefill.forEach((item) => {\n if (this.props.field.has('identifier')){\n let string = this.props.field.get('identifier');\n if (item[string[0].toUpperCase() + string.slice(1)]) {\n // Hide only valid prefilled fields\n if (this.props.field.has('hide_prefilled') && this.props.field.get('hide_prefilled') == true && this.props.isInvalid === false) {\n this.setState({'hiddenIfPrefilled':true});\n }\n }\n }\n })\n }\n }\n }\n\n render() {\n\n if (this.state.hiddenIfPrefilled === true && this.props.isInvalid !== true) {\n return null;\n }\n\n var className = 'col-' + this.props.field.get('width');\n var required = this.props.field.get('required') === true;\n\n var classNameInput = [];\n\n if (this.props.field.get('class') != '') {\n classNameInput.push(this.props.field.get('class'));\n }\n\n if (this.props.isInvalid === true) {\n classNameInput.push('is-invalid');\n }\n\n if (this.props.field.get('type') == 'text') {\n return (\n <div className={className}>\n <div className=\"form-group\">\n <label className=\"control-label\">{this.props.field.get('label')}{required === true ? '*' : ''}</label>\n <input type=\"text\" className={classNameInput.join(' ')} required={required} onChange={(e) => this.onchangeAttr({'value' : e.target.value})} name={this.props.field.get('name')} defaultValue={this.props.defaultValueField} placeholder={this.props.field.get('placeholder')} />\n {this.props.validationError === true ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>\n )\n } else if (this.props.field.get('type') == 'password') {\n return (\n <div className={className}>\n <div className=\"form-group\">\n <label className=\"control-label\">{this.props.field.get('label')}{required === true ? '*' : ''}</label>\n <input type=\"password\" autocomplete=\"new-password\" className={classNameInput.join(' ')} required={required} onChange={(e) => this.onchangeAttr({'value' : e.target.value})} name={this.props.field.get('name')} defaultValue={this.props.defaultValueField} placeholder={this.props.field.get('placeholder')} />\n {this.props.validationError === true && this.props.validationError ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>\n )\n } else if (this.props.field.get('type') == 'textarea') {\n return (\n <div className={className}>\n <div className=\"form-group\">\n {!this.props.chatUI.has('hide_message_label') && this.props.field.get('identifier') == 'question' && <label className=\"control-label\">{this.props.field.get('label')}{required === true ? '*' : ''}</label>}\n <textarea maxLength={this.props.field.get('name') == 'Question' ? this.props.chatUI.get('max_length') : null} className={classNameInput.join(' ')} required={required} onChange={(e) => this.onchangeAttr({'value' : e.target.value})} name={this.props.field.get('name')} defaultValue={this.props.defaultValueField} placeholder={this.props.field.get('placeholder')} />\n {this.props.validationError ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>\n )\n } else if (this.props.field.get('type') == 'file') {\n return (\n <div className={className}>\n <div className=\"form-group overflow-hidden\">\n <label className=\"control-label\">{this.props.field.get('label')}{required === true ? '*' : ''}</label>\n <input type=\"file\" onChange={(e) => this.onFileAdded(e)} className={this.props.field.get('class')} required={required} name={this.props.field.get('name')} />\n {this.props.validationError ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>\n )\n } else if (this.props.field.get('type') == 'checkbox') {\n return (\n <div className={className}>\n <div className=\"form-group\">\n <div className=\"form-check\">\n <input className={classNameInput.join(' ')} id={\"check-for-\"+this.props.field.get('name')} defaultChecked={this.props.field.get('default')} type=\"checkbox\" value=\"on\" onChange={(e) => this.onchangeAttr({'value' : e.target.checked})} required={required} name={this.props.field.get('name')} />\n <label className=\"form-check-label\" for={'check-for-'+this.props.field.get('name')} dangerouslySetInnerHTML={{ __html:this.props.field.get('label')}}></label>\n {this.props.validationError === true ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>\n </div>\n )\n } else if (this.props.field.get('type') == 'hidden') {\n return <input type=\"hidden\" className={classNameInput.join(' ')} required={required} onChange={(e) => this.onchangeAttr({'value' : e.target.value})} name={this.props.field.get('name')} defaultValue={this.props.defaultValueField} placeholder={this.props.field.get('placeholder')} />\n } else if (this.props.field.get('type') == 'dropdown') {\n var options = this.props.field.get('options').map(dep => <option key={'opt-drop-'+dep.get('value')} subject-id={dep.has('subject_id') ? dep.get('subject_id') : null} dep-id={dep.get('dep_id')} selected={this.props.defaultValueField == dep.get('value')} value={dep.get('value')}>{dep.get('name')}</option>);\n return (<div className={className}>\n <div className=\"form-group\">\n <label className=\"control-label\">{this.props.field.get('label')}{required === true ? '*' : ''}</label>\n <select className={classNameInput.join(' ')} required={required} onChange={(e) => this.onchangeAttr({'target': e.target, 'value' : e.target.value})} name={this.props.field.get('name')} defaultValue={this.props.defaultValueField}>\n {options}\n </select>\n {this.props.validationError === true ? <div class=\"invalid-feedback\">{this.props.validationError}</div> : ''}\n </div>\n </div>);\n } else {\n console.log('Unknown field');\n return null;\n }\n }\n}\n\nexport default withTranslation()(ChatField);\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction AsyncIterator(t, e) {\n function n(r, o, i, f) {\n try {\n var c = t[r](o),\n u = c.value;\n return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n n(\"next\", t, i, f);\n }, function (t) {\n n(\"throw\", t, i, f);\n }) : e.resolve(u).then(function (t) {\n c.value = t, i(c);\n }, function (t) {\n return n(\"throw\", t, i, f);\n });\n } catch (t) {\n f(t);\n }\n }\n var r;\n this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n return this;\n })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n function f() {\n return new e(function (e, r) {\n n(t, i, e, r);\n });\n }\n return r = r ? r.then(f, f) : f();\n }, !0);\n}\nmodule.exports = AsyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import React, { Component } from 'react';\nimport { connect } from \"react-redux\";\n\nclass ChatErrorList extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n\n var mappedFields = this.props.errors.mapEntries(([k, v]) => {\n if (k == 'captcha' || k == 'blocked_user' || !isNaN(k)) {\n return [<li>{v}</li>]\n }\n });\n\n if (mappedFields.size > 0) {\n return (\n <div data-alert=\"\" className=\"mt-2 ps-4 py-1 alert alert-danger alert-dismissible fade show\">\n <ul className=\"ps-1 m-0\">\n {mappedFields}\n </ul>\n </div>\n )\n } else {\n return null;\n }\n }\n}\n\nexport default ChatErrorList;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = HTMLDOMParser;\nvar domparser_1 = __importDefault(require(\"./domparser\"));\nvar utilities_1 = require(\"./utilities\");\nvar DIRECTIVE_REGEX = /<(![a-zA-Z\\s]+)>/; // e.g., <!doctype html>\n/**\n * Parses HTML string to DOM nodes in browser.\n *\n * @param html - HTML markup.\n * @returns - DOM elements.\n */\nfunction HTMLDOMParser(html) {\n if (typeof html !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n if (!html) {\n return [];\n }\n // match directive\n var match = html.match(DIRECTIVE_REGEX);\n var directive = match ? match[1] : undefined;\n return (0, utilities_1.formatDOM)((0, domparser_1.default)(html), null, directive);\n}\n//# sourceMappingURL=html-to-dom.js.map","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","import React, { Component } from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { getProducts } from \"../actions/chatActions\"\nimport { connect } from \"react-redux\";\n\nclass ChatDepartment extends Component {\n\n constructor(props) {\n super(props);\n this.onchangeAttr = this.onchangeAttr.bind(this);\n this.onchangeAttrProduct = this.onchangeAttrProduct.bind(this);\n }\n\n onchangeAttr(e) {\n this.props.onChangeContent({id : 'DepartamentID', value : e.value});\n\n if (this.props.departments.getIn(['settings','product_by_department']) === true) {\n this.props.dispatch(getProducts({'dep_id' : e.value}));\n }\n }\n\n onchangeAttrProduct(e) {\n this.props.onChangeContent({id : 'ProductID', value : e.value});\n }\n\n componentDidMount() {\n\n // We have product functionality enabled\n if (this.props.departments.getIn(['settings','product']) === true && (this.props.departments.getIn(['settings','product_by_department']) === true || this.props.departments.has('products')))\n {\n this.props.onChangeContent({id : 'HasProductID', value : true});\n }\n\n if (this.props.departments.get('departments').size == 0)\n {\n return;\n }\n\n if (this.props.departments.get('departments').size == 1 || !this.props.departments.hasIn(['settings','optional'])) {\n this.onchangeAttr({'value': this.props.setDefaultValue || this.props.departments.getIn(['departments',0]).get('value')});\n } else if (this.props.departments.get('departments').size > 1) {\n this.onchangeAttr({'value': -1});\n }\n }\n\n render() {\n\n const { t } = this.props;\n\n var departmentOutput = null;\n if (this.props.departments.get('departments').size > 1 && !this.props.departments.hasIn(['settings','hide_department'])) {\n var classNameInput = ['form-control','form-control-sm'];\n\n if (this.props.isInvalid === true) {\n classNameInput.push('is-invalid');\n }\n\n var options = this.props.departments.get('departments').map(dep => <option key={'dep-'+dep.get('value')} value={dep.get('value')}>{dep.get('name')} {!dep.get('online') ? t('department.offline') : ''}</option>);\n departmentOutput = <div className=\"form-group\">\n <label className=\"control-label\">{this.props.departments.getIn(['settings','label'])}*</label>\n <select id=\"id-department-field\" defaultValue={this.props.setDefaultValue || this.props.defaultValueField} className={classNameInput.join(' ')} onChange={(e) => this.onchangeAttr({'value' : e.target.value})}>\n {this.props.departments.hasIn(['settings','optional']) && <option value=\"-1\">{this.props.departments.getIn(['settings','optional'])}</option>}\n {options}\n </select>\n </div>;\n }\n\n var productOutput = null;\n if (this.props.departments.getIn(['settings','product']) === true) {\n var classNameInputProduct = ['form-control','form-control-sm'];\n\n if (this.props.isInvalidProduct === true) {\n classNameInputProduct.push('is-invalid');\n }\n\n var prouducts = this.props.departments.has('products') ? this.props.departments.get('products').map(dep => <option key={'product-'+dep.get('value')} value={dep.get('value')}>{dep.get('name')}</option>) : \"\";\n if (this.props.departments.has('products') && this.props.departments.get('products').size > 0) {\n productOutput = <div className=\"form-group\">\n <label className=\"control-label\">{t('department.product')}{this.props.departments.getIn(['settings','product_required']) === true ? '*' : ''}</label>\n <select className={classNameInputProduct.join(' ')} onChange={(e) => this.onchangeAttrProduct({'value' : e.target.value})}>\n <option value=\"\">{t('department.choose_a_product')}</option>\n {prouducts}\n </select>\n </div>;\n };\n }\n\n if (productOutput !== null || departmentOutput !== null){\n return <div className=\"col-12\">{departmentOutput}{productOutput}</div>\n } else {\n return null;\n }\n }\n}\n\nexport default connect()(withTranslation()(ChatDepartment));\n","import React, { PureComponent } from 'react';\nimport parse, { domToReact } from 'html-react-parser';\nimport { connect } from \"react-redux\";\nimport { withTranslation } from 'react-i18next';\nimport { parseScript } from \"../actions/chatActions\";\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\n@connect((store) => {\n return {\n chatwidget: store.chatwidget\n };\n})\n\nclass ChatBotIntroMessage extends PureComponent {\n\n state = {\n value: ''\n };\n\n constructor(props) {\n super(props);\n this.abstractClick = this.abstractClick.bind(this);\n this.updateTriggerClicked = this.updateTriggerClicked.bind(this);\n this.processBotAction = this.processBotAction.bind(this);\n this.disableEditor = false;\n }\n\n getDirectInnerText(element) {\n var childNodes = element.childNodes;\n var result = '';\n\n for (var i = 0; i < childNodes.length; i++) {\n if(childNodes[i].nodeType == 3) {\n result += childNodes[i].data.trim();\n }\n }\n\n return result;\n }\n\n addLoader(attrs, element) {\n\n if (this.props.printButton == true && !attrs[\"data-no-msg\"] && (attrs.type == 'button' || element.tagName === 'A')) {\n this.setState({value : this.getDirectInnerText(element)});\n if (element.tagName !== 'A') {\n this.removeMetaMessage(attrs['data-id']);\n }\n }\n\n if (attrs[\"data-no-msg\"] && !attrs[\"data-no-change\"] && attrs.type == 'button') {\n element.setAttribute(\"disabled\",\"disabled\");\n element.innerHTML = \"<i class=\\\"material-icons\\\"></i>\" + element.innerHTML;\n }\n }\n\n removeMetaMessage(messageId) {\n var msgArea = document.getElementById('messages-scroll');\n if (msgArea) {\n var x = msgArea.getElementsByClassName(\"meta-message-\" + messageId);\n var i;\n for (i = 0; i < x.length; i++) {\n x[i].parentNode.removeChild(x[i]);\n }\n }\n }\n\n /**\n * Here we handle bot buttons actions\n * */\n abstractClick(attrs, e) {\n\n const { t } = this.props;\n\n this.addLoader(attrs,e.target);\n\n if (attrs.onclick.indexOf('lhinst.updateTriggerClicked') !== -1) {\n this.updateTriggerClicked({type:'triggerclicked'}, attrs, e.target);\n } else if (attrs.onclick.indexOf('notificationsLHC.sendNotification') !== -1) {\n // todo\n } else if (attrs.onclick.indexOf('lhinst.buttonClicked') !== -1) {\n this.updateTriggerClicked({type:''}, attrs, e.target);\n } else if (attrs.onclick.indexOf('lhinst.updateChatClicked') !== -1) {\n this.updateTriggerClicked({type:'',mainType: 'updatebuttonclicked'}, attrs, e.target);\n } else if (attrs.onclick.indexOf('lhinst.executeJS') !== -1) {\n parseScript(attrs, this);\n } else if (attrs.onclick.indexOf('lhinst.editGenericStep') !== -1) {\n this.updateTriggerClicked({type:'editgenericstep'}, attrs, e.target);\n } else if (attrs.onclick.indexOf('lhinst.dropdownClicked') !== -1) {\n const list = document.getElementById('id_generic_list-' + attrs['data-id']);\n if (list && list.value != \"0\" && list.value != \"\") {\n attrs['data-payload'] = list.value;\n this.updateTriggerClicked({type:'valueclicked'}, attrs, e.target);\n } else {\n alert(t('bot.please_choose'));\n }\n } else {\n helperFunctions.emitEvent('MessageClick',[attrs, this.props.dispatch]);\n console.log('Unknown click event: ' + attrs.onclick);\n }\n\n e.preventDefault();\n }\n\n updateTriggerClicked(paramsType, attrs, target) {\n this.props.setBotPayload({type: paramsType['type'], payload: attrs['data-payload'], id : attrs['data-id'], processed : (typeof attrs['data-keep'] === 'undefined')})\n }\n\n processBotAction(domNode) {\n\n const attr = domNode.attribs;\n\n if (attr['data-bot-action'] == 'lhinst.disableVisitorEditor') {\n this.disableEditor = true;\n if (this.props.setTextAreaHidden) {\n this.props.setTextAreaHidden();\n }\n } else if (attr['data-bot-action'] == 'lhinst.setDelay') {\n //this.delayData.push(JSON.parse(attr['data-bot-args']));\n } else if (attr['data-bot-action'] == 'execute-js') {\n eval(domNode.children[0]['data']);\n }\n }\n\n render() {\n\n let content = parse(this.props.content, {\n replace: domNode => {\n if (domNode.attribs) {\n\n var cloneAttr = Object.assign({}, domNode.attribs);\n\n if (domNode.attribs.onclick) {\n delete domNode.attribs.onclick;\n }\n\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n\n if (domNode.attribs.className.indexOf('message-row') !== -1) {\n domNode.attribs.className += ' index-row-0';\n }\n\n delete domNode.attribs.class;\n }\n\n if (domNode.name && domNode.name === 'button') {\n if (cloneAttr.onclick) {\n return <button {...domNode.attribs} onClick={(e) => this.abstractClick(cloneAttr, e)} >{domToReact(domNode.children)}</button>\n }\n } else if (domNode.name && domNode.name === 'a') {\n\n if (cloneAttr.onclick) {\n return <a {...domNode.attribs} onClick={(e) => this.abstractClick(cloneAttr, e)} >{domToReact(domNode.children)}</a>\n }\n /**\n * We can switch target to _top\n * - if we are in widget mode\n * - target is _blank\n * - website where widget is under the same domain\n * */\n if (this.props.embedMode && this.props.embedMode == 'widget' && this.props.targetSame && cloneAttr.target && cloneAttr.target == '_blank' && domNode.attribs.href) {\n const href = domNode.attribs.href;\n const parentHost = window.parent.location.host;\n const isSameHost = href.startsWith(`http://${parentHost}`) || href.startsWith(`https://${parentHost}`);\n if (isSameHost) {\n domNode.attribs.target = '_top';\n if (this.props.isMobile) {\n return <a {...domNode.attribs} onClick={(e) => this.props.minimizeWidget()}>{domToReact(domNode.children)}</a>\n } else {\n return <a {...domNode.attribs}>{domToReact(domNode.children)}</a>\n }\n }\n }\n\n } else if (domNode.name && domNode.name === 'script' && domNode.attribs['data-bot-action']) {\n this.processBotAction(domNode);\n }\n }\n }\n });\n\n return <React.Fragment>{content}{this.state.value != '' && <div data-op-id=\"0\" className=\"message-row response msg-to-store index-row-0\"><div className=\"msg-body\">{this.state.value.split('\\n').map((item, idx) => {return (<React.Fragment key={idx}>{item}<br /></React.Fragment>)})}</div></div>}</React.Fragment>\n\n }\n}\n\nexport default ChatBotIntroMessage;","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import React, { PureComponent } from 'react';\nimport { withTranslation } from 'react-i18next';\n\nclass ChatStartOptions extends PureComponent {\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n const enabledOptionsCount = (this.props.bbEnabled ? 1 : 0) + (this.props.langEnabled ? 1 : 0);\n \n // Only initialize dropdown if multiple options are enabled\n if (enabledOptionsCount > 1) {\n var bsn = require(\"bootstrap.native/dist/components/dropdown-native\");\n new bsn(document.getElementById('chat-dropdown-options'));\n }\n }\n\n render() {\n const { t } = this.props;\n const enabledOptionsCount = (this.props.bbEnabled ? 1 : 0) + (this.props.langEnabled ? 1 : 0);\n \n // If only one option is enabled, show it directly\n if (enabledOptionsCount === 1) {\n if (this.props.bbEnabled) {\n return (\n <div className=\"disable-select ps-1 pt-2\">\n <button onClick={(e) => this.props.toggleModal()} title={t('button.bb_code')} type=\"button\" className=\"border-0 p-0 material-icons settings text-muted bbcode-ico\" id=\"chat-dropdown-options\" role=\"button\" tabIndex=\"0\"></button>\n </div>\n );\n } else if (this.props.langEnabled) {\n return (\n <div className=\"disable-select ps-1 pt-2\">\n <button onClick={(e) => this.props.changeLanguage()} title={t('button.lang')} type=\"button\" className=\"border-0 p-0 material-icons settings text-muted lang-ico\" id=\"chat-dropdown-options\" role=\"button\" tabIndex=\"0\"></button>\n </div>\n );\n }\n }\n \n // If multiple options or no options, show dropdown\n return (\n <div className=\"btn-group dropup disable-select ps-1 pt-2\">\n <button type=\"button\" className=\"border-0 p-0 material-icons settings text-muted\" id=\"chat-dropdown-options\" role=\"button\" data-bs-toggle=\"dropdown\" tabIndex=\"0\" aria-haspopup=\"true\" aria-expanded=\"false\"></button>\n <div className=\"dropdown-menu shadow bg-white lhc-dropdown-menu rounded ms-1\">\n <div className=\"d-flex flex-row px-1\">\n {this.props.bbEnabled && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.props.toggleModal() : '' }} onClick={(e) => this.props.toggleModal()} title={t('button.bb_code')}><i className=\"material-icons chat-setting-item text-muted me-0 bbcode-ico\"></i></a>}\n {this.props.langEnabled && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.props.changeLanguage() : '' }} onClick={this.props.changeLanguage} title={t('button.lang')} ><i className=\"material-icons chat-setting-item text-muted me-0 lang-ico\"></i></a>}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withTranslation()(ChatStartOptions);\n\n","import React, { PureComponent } from 'react';\nimport ChatBotIntroMessage from './ChatBotIntroMessage';\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\nclass ChatInvitationMessage extends PureComponent {\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n helperFunctions.sendMessageParent('readInvitation', [{name: this.props.invitation.invitation_name || \"Manual\"}]);\n }\n\n render() {\n\n if (this.props.mode == 'message') {\n\n return <React.Fragment>\n {this.props.invitation.prev_msg && <ChatBotIntroMessage printButton={false} setBotPayload={this.props.setBotPayload} content={this.props.invitation.prev_msg} />}\n\n {this.props.invitation.message && <div className=\"message-row message-admin\">\n <span className=\"usr-tit op-tit\">\n {<i title={this.props.invitation.name_support || this.props.invitation.extra_profile} className=\"chat-operators mi-fs15 me-0\">\n {this.props.invitation.bubble && this.props.invitation.photo && <img src={this.props.invitation.photo} alt=\"\" className=\"profile-msg-pic\" />}\n {(!this.props.invitation.photo || !this.props.invitation.bubble) && <i className={\"material-icons \" + (this.props.invitation.bubble ? \"icon-assistant me-0\" : \"\")}></i>}\n </i>}\n {!this.props.invitation.bubble && (this.props.invitation.name_support || this.props.invitation.extra_profile)}\n </span>\n <div className=\"msg-body\" dangerouslySetInnerHTML={{__html:this.props.invitation.message}}></div>\n </div>}\n\n {this.props.invitation.message_full && <ChatBotIntroMessage printButton={false} setBotPayload={this.props.setBotPayload} content={this.props.invitation.message_full} />}\n </React.Fragment>\n\n } else {\n return (\n <React.Fragment>\n <div id=\"lhc-profile-body\">\n <div id=\"chat-status-container\" className=\"operator-info d-flex border-bottom p-2\">\n <div>\n {this.props.invitation.photo && <img width=\"48\" height=\"48\" src={this.props.invitation.photo} title={this.props.invitation.photo_title} alt=\"\"/>}\n {!this.props.invitation.photo && <i className=\"icon-assistant material-icons me-0\"></i>}\n </div>\n <div className=\"p-1 ps-2 w-100\">\n {this.props.invitation.name_support && !this.props.invitation.hide_name && <div className=\"fw-bold\">{this.props.invitation.name_support}</div>}\n {this.props.invitation.extra_profile && <div dangerouslySetInnerHTML={{__html:this.props.invitation.extra_profile}}></div>}\n </div>\n </div>\n </div>\n {this.props.mode != 'profile_only' && this.props.invitation.message &&\n <div id=\"messagesBlock\">\n <div className=\"bottom-message position-relative\">\n <div className=\"message-row message-admin pt-1 text-left ms-3\">\n <div className=\"msg-body\" dangerouslySetInnerHTML={{__html:this.props.invitation.message}}></div>\n </div>\n </div>\n </div>}\n </React.Fragment>\n );\n }\n }\n}\n\nexport default ChatInvitationMessage;\n","import React, { Component } from 'react';\nimport { connect } from \"react-redux\";\nimport { withTranslation } from 'react-i18next';\n\nimport ChatField from './ChatField';\nimport ChatErrorList from './ChatErrorList';\nimport ChatDepartment from './ChatDepartment';\nimport ChatModal from './ChatModal';\nimport ChatStartOptions from './ChatStartOptions';\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport ChatInvitationMessage from './ChatInvitationMessage';\nimport ChatBotIntroMessage from './ChatBotIntroMessage';\nimport ChatAbort from './ChatAbort';\nimport SharedTextarea from './SharedTextarea';\n\nimport { initOnlineForm, submitOnlineForm, minimizeWidget } from \"../actions/chatActions\"\n\n@connect((store) => {\n return {\n chatwidget: store.chatwidget\n };\n})\n\nclass StartChat extends Component {\n\n constructor(props) {\n super(props);\n\n this.apiLoaded = false;\n this.customHTMLPriority = false;\n\n this.state = {showBBCode : null, Question:'', changeLanguage: false, hasBotData : false, textAreaHidden: false};\n this.botPayload = null;\n this.handleSubmit = this.handleSubmit.bind(this);\n this.enterKeyDown = this.enterKeyDown.bind(this);\n this.handleContentChange = this.handleContentChange.bind(this);\n this.handleContentChangeCustom = this.handleContentChangeCustom.bind(this);\n this.setBotPayload = this.setBotPayload.bind(this);\n this.toggleModal = this.toggleModal.bind(this);\n this.setLanguageAction = this.setLanguageAction.bind(this);\n this.changeLanguage = this.changeLanguage.bind(this);\n\n this.textMessageRef = this.props.textMessageRef; /*React.createRef();*/\n this.messagesAreaRef = React.createRef();\n \n helperFunctions.eventEmitter.addListener('startChat', () => this.handleSubmit());\n }\n\n changeLanguage() {\n this.setState({\n changeLanguage: !this.state.changeLanguage\n });\n }\n\n setLanguageAction(lng) {\n helperFunctions.setLocalStorage('_lng',lng);\n this.setState({\n changeLanguage: false\n });\n helperFunctions.emitEvent('change_language', [lng]);\n }\n\n toggleModal() {\n this.setState({\n showBBCode: !this.state.showBBCode\n })\n }\n\n enterKeyDown(e) {\n if (e.key === 'Enter' && !e.shiftKey) {\n this.handleSubmit(e);\n e.preventDefault();\n }\n }\n\n handleSubmit(event) {\n\n if (this.props.chatwidget.get('processStatus') != 0) {\n return;\n }\n\n // Focus element so once OnlineChat component is mounted it remains focused\n // For some reason if I use raw this.textMessageRef.current.focus(); it does not work on safary\n var elm = document.getElementById('CSChatMessage');\n if (elm !== null) {\n elm.focus();\n this.props.setHideMessageField(false);\n }\n\n var fields = {...this.state};\n fields['jsvar'] = this.props.chatwidget.get('jsVars');\n fields['vars_encrypted'] = this.props.chatwidget.get('vars_encrypted');\n fields['captcha_' + this.props.chatwidget.getIn(['captcha','hash'])] = this.props.chatwidget.getIn(['captcha','ts']);\n fields['tscaptcha'] = this.props.chatwidget.getIn(['captcha','ts']);\n fields['user_timezone'] = helperFunctions.getTimeZone();\n fields['URLRefer'] = '';\n\n try {\n var iframeMode = window.parent.location !== window.parent.parent.location;\n var popupMode = typeof window.lhcChat != 'undefined' && (window.lhcChat['mode'] == 'popup' || window.lhcChat['mode'] == 'embed') && (window.opener !== null || window.parent.opener !== null);\n\n if (iframeMode) {\n fields['URLRefer'] = parent.location.href.substring(parent.location.protocol.length);\n } else {\n var instWindow = null;\n if (window.opener !== null) {\n instWindow = window.opener;\n } else {\n instWindow = window.parent;\n }\n fields['URLRefer'] = instWindow.location.href.substring(instWindow.location.protocol.length);\n }\n\n } catch (e) {\n try {\n fields['URLRefer'] = String(window.document.location);\n } catch (e) {\n // Do nothing\n }\n }\n\n if (fields['URLRefer'] == 'blank') {\n fields['URLRefer'] = ''\n }\n\n fields['r'] = this.props.chatwidget.get('ses_ref');\n\n if (this.props.chatwidget.get('subject_id') != '') {\n fields['subject_id'] = this.props.chatwidget.get('subject_id');\n }\n\n if (this.props.chatwidget.get('bot_id') != '') {\n fields['bot_id'] = this.props.chatwidget.get('bot_id');\n }\n\n if (this.props.chatwidget.get('trigger_id') != '') {\n fields['trigger_id'] = this.props.chatwidget.get('trigger_id');\n }\n\n if (this.props.chatwidget.get('operator') != '') {\n fields['operator'] = this.props.chatwidget.get('operator');\n }\n\n if (this.props.chatwidget.get('pvhash') !== null) {\n fields['pvhash'] = this.props.chatwidget.get('pvhash');\n }\n\n if (this.props.chatwidget.get('priority') !== null) {\n fields['priority'] = this.props.chatwidget.get('priority');\n }\n\n if (this.props.chatwidget.get('phash') !== null) {\n fields['phash'] = this.props.chatwidget.get('phash');\n }\n\n const customFields = helperFunctions.getCustomFieldsSubmit(this.props.chatwidget.getIn(['customData','fields']));\n \n if (customFields !== null) {\n fields = {...fields, ...customFields};\n }\n\n let host = \"\";\n try {\n host = window.parent.location.origin;\n } catch (e) {\n\n }\n\n let submitData = {\n 'department': this.props.chatwidget.get('department'),\n 'theme' : this.props.chatwidget.get('theme'),\n 'mode' : this.props.chatwidget.get('mode'),\n 'vid' : this.props.chatwidget.get('vid'),\n 'fields' : fields,\n 'host': host\n };\n\n helperFunctions.setSessionStorage('_ttxt','');\n\n if (this.botPayload) {\n submitData['bpayload'] = this.botPayload;\n this.botPayload = null;\n this.setState({hasBotData:true});\n if (submitData['fields']['Question']) {\n helperFunctions.setSessionStorage('_ttxt',submitData['fields']['Question']);\n submitData['fields']['Question'] = '';\n }\n } else {\n this.setState({hasBotData:false});\n }\n\n if (this.props.chatwidget.hasIn(['proactive','data','invitation_id']) === true) {\n submitData['invitation_id'] = this.props.chatwidget.getIn(['proactive','data','invitation_id']);\n }\n\n this.props.dispatch(submitOnlineForm(submitData));\n\n if (event)\n event.preventDefault();\n }\n\n handleContentChange(obj) {\n\n if (this.props.chatwidget.get('processStatus') != 0) {\n return;\n }\n\n var currentState = this.state;\n currentState[obj.id] = obj.value;\n this.setState(currentState);\n\n if (obj.id == 'DepartamentID') {\n\n if (obj.set_default) {\n this.props.dispatch({'type' : 'dep_default', data : obj.value});\n }\n\n if (obj.subject_id) {\n this.props.dispatch({'type' : 'subject_id', data : obj.subject_id});\n } else {\n this.props.dispatch({'type' : 'subject_id', data : ''});\n }\n\n if (this.props.chatwidget.getIn(['onlineData','department','departments']).size > 0){\n this.props.chatwidget.getIn(['onlineData','department','departments']).map(dep => {\n if (dep.get('value') == obj.value) {\n if (dep.get('online') == false) {\n this.props.dispatch({'type' : 'dep_default', data : obj.value});\n this.props.dispatch({'type' : 'onlineStatus', data : false});\n }\n\n // Update online fields settings if different department\n if (this.props.chatwidget.getIn(['onlineData','dep_forms']) != obj.value) {\n this.updateOnlineFieldsInit(obj.value);\n }\n }\n })\n }\n }\n\n if (obj.id == 'Question')\n {\n if (this.props.chatwidget.getIn(['proactive','has']) === true &&\n obj.value != '' &&\n this.props.chatwidget.getIn(['chat_ui','proactive_once_typed']) === 1 &&\n this.props.chatwidget.getIn(['chat_ui','custom_html_priority']) === 1\n ) {\n this.props.dispatch({type: 'attr_set', attr : ['chat_ui','custom_html_priority'], data : 0});\n this.customHTMLPriority = true;\n } else if (obj.value == '' && this.customHTMLPriority == true) {\n this.props.dispatch({type: 'attr_set', attr : ['chat_ui','custom_html_priority'], data : 1});\n }\n }\n\n }\n\n handleContentChangeCustom(obj) {\n this.props.dispatch({'type' : 'CUSTOM_FIELDS_ITEM', data : {id : obj.field.get('index'), value : obj.value}});\n }\n\n componentDidMount() {\n helperFunctions.prefillFields(this);\n this.updateOnlineFields();\n\n if (this.props.botPayload !== null) {\n // This is required because prefill fields can be one of the required\n // If we just submit form instantly it might require one of prefilled fields.\n setTimeout(() => {\n this.setBotPayload(this.props.botPayload);\n },10);\n }\n }\n\n componentWillUnmount() {\n var elm = document.getElementById('CSChatMessage');\n if (elm === null) {\n this.props.setHideMessageField(true);\n } else {\n // Because online component has it's own text area we loose focus once we mount that component\n // We keeps this element focused and just switch focus between elements. So we do not loose keyboard.\n this.props.setHideMessageField(false);\n }\n }\n\n setBotPayload(params) {\n this.botPayload = params;\n this.handleSubmit();\n }\n\n updateOnlineFieldsInit(dep_default) {\n // Init offline form with all attributes\n this.props.dispatch(initOnlineForm({\n 'department':this.props.chatwidget.get('department'),\n 'product':this.props.chatwidget.get('product'),\n 'theme' : this.props.chatwidget.get('theme'),\n 'mode' : this.props.chatwidget.get('mode'),\n 'pvhash' : this.props.chatwidget.get('pvhash'),\n 'phash' : this.props.chatwidget.get('phash'),\n 'bot_id' : this.props.chatwidget.get('bot_id'),\n 'trigger_id' : this.props.chatwidget.get('trigger_id'),\n 'vid' : this.props.chatwidget.get('vid'),\n 'dep_default' : (dep_default || this.props.chatwidget.get('departmentDefault') || 0),\n 'online' : 1,\n 'chat_ui' : this.props.chatwidget.get('chat_ui'),\n }));\n }\n\n updateOnlineFields() {\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === false) {\n this.updateOnlineFieldsInit();\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.updateOnlineFields();\n if (document.getElementById('id-container-fluid')) {\n helperFunctions.sendMessageParent('widgetHeight', [{'height' : document.getElementById('id-container-fluid').offsetHeight+40}]);\n }\n\n if (this.props.chatwidget.get('processStatus') === 1 && prevProps.chatwidget.get('processStatus') !== 1) {\n var messagesScroll = document.getElementById('messagesBlock');\n if (messagesScroll !== null) {\n this.props.setMessages(messagesScroll.innerHTML);\n this.scrollBottom();\n }\n\n var profileBody = document.getElementById('lhc-profile-body');\n if (profileBody !== null) {\n this.props.setProfile(profileBody.innerHTML);\n }\n }\n\n let needFocus = false;\n if (this.apiLoaded === false && this.props.chatwidget.get('api_data') !== null) {\n this.apiLoaded = true;\n this.setState({...this.state, ...this.props.chatwidget.get('api_data')});\n needFocus = true;\n }\n\n // Auto focus if it's show operation\n if ((needFocus === true || (this.props.chatwidget.get('isMobile') == false && prevProps.chatwidget.get('shown') === false && this.props.chatwidget.get('shown') === true)) && this.props.chatwidget.get('mode') == 'widget' && this.textMessageRef.current) {\n this.textMessageRef.current.focus();\n this.scrollBottom();\n }\n\n // Rest API data was fetched we can scroll to bottomnow\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === true && prevProps.chatwidget.getIn(['onlineData','fetched']) === false) {\n this.props.chatwidget.hasIn(['chat_ui','uprev']) && helperFunctions.emitEvent('play_sound', [{'type' : 'new_message','sound_on' : (this.props.chatwidget.getIn(['usersettings','soundOn']) === true), 'widget_open' : ((this.props.chatwidget.get('shown') && this.props.chatwidget.get('mode') == 'widget') || document.hasFocus())}]);\n this.scrollBottom();\n }\n\n // If parent pages changes default department we have to reload\n if (this.props.chatwidget.get('departmentDefault') !== prevProps.chatwidget.get('departmentDefault')) {\n this.setState({'DepartamentID': this.props.chatwidget.get('departmentDefault')});\n var elm = document.getElementById('id-department-field');\n if (elm !== null) {\n elm.value = this.props.chatwidget.get('departmentDefault');\n }\n this.updateOnlineFieldsInit();\n }\n }\n\n scrollBottom() {\n if (this.messagesAreaRef.current) {\n this.messagesAreaRef.current.scrollTop = this.messagesAreaRef.current.scrollHeight + 1000;\n setTimeout(() => {\n if (this.messagesAreaRef.current) {\n this.messagesAreaRef.current.scrollTop = this.messagesAreaRef.current.scrollHeight + 1000;\n }\n },450);\n }\n }\n\n moveCaretAtEnd(e) {\n var temp_value = e.target.value;\n e.target.value = '';\n e.target.value = temp_value;\n }\n\n static getDerivedStateFromProps(props, state) {\n\n if (props.chatwidget.getIn(['chat_ui','auto_start']) && props.chatwidget.get('processStatus') == 0 && (props.chatwidget.get('mode') == 'embed' || props.chatwidget.get('mode') == 'popup' || (props.chatwidget.get('mode') == 'widget' && props.chatwidget.get('shown') == 1) )) {\n\n var fields = state;\n fields['jsvar'] = props.chatwidget.get('jsVars');\n fields['captcha_' + props.chatwidget.getIn(['captcha','hash'])] = props.chatwidget.getIn(['captcha','ts']);\n fields['tscaptcha'] = props.chatwidget.getIn(['captcha','ts']);\n fields['user_timezone'] = helperFunctions.getTimeZone();\n fields['URLRefer'] = window.location.href.substring(window.location.protocol.length);\n fields['r'] = props.chatwidget.get('ses_ref');\n\n if (props.chatwidget.get('bot_id') != '') {\n fields['bot_id'] = props.chatwidget.get('bot_id');\n }\n\n if (props.chatwidget.get('subject_id') != '') {\n fields['subject_id'] = props.chatwidget.get('subject_id');\n }\n\n if (props.chatwidget.get('trigger_id') != '') {\n fields['trigger_id'] = props.chatwidget.get('trigger_id');\n }\n\n if (props.chatwidget.get('operator') != '') {\n fields['operator'] = props.chatwidget.get('operator');\n }\n\n if (props.chatwidget.get('priority') !== null) {\n fields['priority'] = props.chatwidget.get('priority');\n }\n\n if (props.chatwidget.get('pvhash') !== null) {\n fields['pvhash'] = props.chatwidget.get('pvhash');\n }\n\n if (props.chatwidget.get('phash') !== null) {\n fields['phash'] = props.chatwidget.get('phash');\n }\n\n const customFields = helperFunctions.getCustomFieldsSubmit(props.chatwidget.getIn(['customData','fields']));\n\n if (customFields !== null) {\n fields = {...fields, ...customFields};\n }\n\n if (props.chatwidget.get('api_data') !== null) {\n fields = {...fields, ...props.chatwidget.get('api_data')}\n }\n\n let submitData = {\n 'department':props.chatwidget.get('department'),\n 'theme' : props.chatwidget.get('theme'),\n 'mode' : props.chatwidget.get('mode'),\n 'vid' : props.chatwidget.get('vid'),\n 'fields' : fields\n };\n\n if (props.botPayload !== null) {\n submitData['bpayload'] = props.botPayload;\n }\n\n if (props.chatwidget.hasIn(['proactive','data','invitation_id']) === true) {\n submitData['invitation_id'] = props.chatwidget.getIn(['proactive','data','invitation_id']);\n }\n\n props.dispatch(submitOnlineForm(submitData));\n }\n\n return null;\n }\n\n insertText = (text) => {\n var caretPos = this.textMessageRef.current.selectionStart;\n this.setState({'Question': (this.state['Question'].substring(0, caretPos) + text + this.state['Question'].substring(caretPos))});\n }\n\n render() {\n\n const { t } = this.props;\n\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === true && this.props.chatwidget.getIn(['onlineData','disabled']) === true) {\n return (\n <div className=\"alert alert-danger m-2\" role=\"alert\">\n {t('start_chat.cant_start_a_chat')}\n </div>\n )\n }\n\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === false || this.props.chatwidget.getIn(['chat_ui','auto_start']) === true)\n {\n return null;\n }\n\n if (this.props.chatwidget.getIn(['onlineData','fields']).size > 0 && !(this.props.chatwidget.hasIn(['chat_ui','show_messages_box']) && this.props.chatwidget.getIn(['onlineData','fields_visible']) == 1 && this.props.chatwidget.getIn(['customData','fields']).size == 0)) {\n var mappedFields = this.props.chatwidget.getIn(['onlineData','fields']).map(field =><ChatField chatUI={this.props.chatwidget.get('chat_ui')} key={field.get('identifier')} validationError={this.props.chatwidget.hasIn(['validationErrors',field.get('identifier')]) ? this.props.chatwidget.getIn(['validationErrors',field.get('identifier')]) : null} isInvalid={this.props.chatwidget.hasIn(['validationErrors',field.get('identifier')])} defaultValueField={this.state[field.get('name')] || field.get('value')} attrPrefill={{'attr_prefill_admin' : this.props.chatwidget.get('attr_prefill_admin'), 'attr_prefill' : this.props.chatwidget.get('attr_prefill')}} onChangeContent={this.handleContentChange} field={field} />);\n } else {\n var mappedFields = \"\";\n }\n\n var hasVisibleCustomFields = false;\n var mappedFieldsCustom = \"\";\n\n if (this.props.chatwidget.getIn(['customData','fields']).size > 0) {\n this.props.chatwidget.getIn(['customData','fields']).map(field => hasVisibleCustomFields = !(field.has('type') && field.get('type') === 'hidden') ? true : hasVisibleCustomFields);\n if (hasVisibleCustomFields == true) {\n mappedFieldsCustom = this.props.chatwidget.getIn(['customData','fields']).map(field =><ChatField chatUI={this.props.chatwidget.get('chat_ui')} key={field.get('identifier')} validationError={this.props.chatwidget.hasIn(['validationErrors',field.get('identifier')]) ? this.props.chatwidget.getIn(['validationErrors',field.get('identifier')]) : null} isInvalid={this.props.chatwidget.hasIn(['validationErrors',field.get('identifier')])} defaultValueField={field.get('value')} onChangeContent={this.handleContentChangeCustom} field={field} />);\n }\n }\n\n if (this.props.chatwidget.hasIn(['onlineData','paid','error']) && this.props.chatwidget.getIn(['onlineData','paid','error'])) {\n return <p className=\"p-2\">{this.props.chatwidget.getIn(['onlineData','paid','message'])}</p>\n }\n\n if (this.props.chatwidget.getIn(['chat_ui','disabled'])) {\n return <ChatAbort closeText={t('button.close')} full_height={true} close={(e) => this.props.dispatch(minimizeWidget(true))} as_html={true} text={this.props.chatwidget.getIn(['chat_ui','disabled'])} />;\n }\n\n if (this.props.chatwidget.hasIn(['validationErrors','blocked_user'])) {\n return <ChatAbort closeText={t('button.close')} full_height={true} close={(e) => this.props.dispatch(minimizeWidget(true))} as_html={true} text={this.props.chatwidget.getIn(['validationErrors','blocked_user'])} />;\n }\n\n if (this.props.chatwidget.get('processStatus') == 0 || this.props.chatwidget.get('processStatus') == 1) {\n if (this.props.chatwidget.hasIn(['chat_ui','show_messages_box']) && this.props.chatwidget.getIn(['onlineData','department','departments']).size <= 1 && this.props.chatwidget.getIn(['onlineData','fields_visible']) <= 1 && (this.props.chatwidget.getIn(['customData','fields']).size == 0 || hasVisibleCustomFields === false)) {\n\n const taw = this.props.chatwidget.hasIn(['chat_ui','taw']) ? this.props.chatwidget.getIn(['chat_ui','taw']) : 8.6;\n\n var classMessageInput = (!this.props.chatwidget.hasIn(['chat_ui','bbc_btnh']) || this.props.chatwidget.hasIn(['chat_ui','lng_btnh']) ? 'ps-0' : 'ps-2')+\" no-outline form-control rounded-0 form-control rounded-start-0 rounded-end-0 border-0 \" + (this.props.chatwidget.get('shown') === true && this.textMessageRef.current && (/\\r|\\n/.exec(this.state.Question) || (this.state.Question.length > this.textMessageRef.current.offsetWidth/taw)) ? 'msg-two-line' : 'msg-one-line');\n\n var msg_expand = \"flex-grow-1 overflow-scroll position-relative\";\n var bottom_messages = \"bottom-message px-1\";\n\n if (this.props.chatwidget.hasIn(['chat_ui','msg_expand']) && this.props.chatwidget.get('mode') == 'embed') {\n msg_expand = \"overflow-scroll position-relative\";\n bottom_messages += \" position-relative\";\n }\n\n return (\n <React.Fragment>\n\n {this.state.showBBCode && <ChatModal showModal={this.state.showBBCode} insertText={this.insertText} toggle={this.toggleModal} dataUrl={\"/chat/bbcodeinsert?react=1\"} />}\n\n {this.state.changeLanguage && <ChatModal showModal={this.state.changeLanguage} setLanguage={this.setLanguageAction} toggle={this.changeLanguage} dataUrl={\"/widgetrestapi/chooselanguage\"} />}\n\n {\n (this.props.chatwidget.getIn(['proactive','has']) === true && !this.props.chatwidget.hasIn(['proactive','data','std_header']) && <ChatInvitationMessage mode='profile_only' invitation={this.props.chatwidget.getIn(['proactive','data'])} />)\n ||\n ((this.props.chatwidget.hasIn(['chat_ui','pre_chat_html']) || (this.props.chatwidget.hasIn(['chat_ui','operator_profile']) && this.props.chatwidget.getIn(['chat_ui','operator_profile']) != '')) && <div id=\"lhc-profile-body\"><div id=\"chat-status-container\" className=\"p-2 border-bottom\" dangerouslySetInnerHTML={{__html:(this.props.chatwidget.hasIn(['chat_ui','pre_chat_html']) ? this.props.chatwidget.getIn(['chat_ui','pre_chat_html']) : '') + (this.props.chatwidget.hasIn(['chat_ui','operator_profile']) ? this.props.chatwidget.getIn(['chat_ui','operator_profile']) : '')}}></div></div>)\n }\n\n <div className={msg_expand} id=\"messagesBlock\">\n <div className={bottom_messages} id=\"messages-scroll\" ref={this.messagesAreaRef}>\n {(this.props.chatwidget.getIn(['proactive','has']) === true && !this.props.chatwidget.getIn(['chat_ui','custom_html_priority'])) && <ChatInvitationMessage mode=\"message\" setBotPayload={this.setBotPayload} invitation={this.props.chatwidget.getIn(['proactive','data'])} />}\n\n {!this.props.chatwidget.getIn(['proactive','has']) && this.props.chatwidget.hasIn(['chat_ui','cmmsg_widget']) && <ChatBotIntroMessage minimizeWidget={(e) => this.props.dispatch(minimizeWidget())} isMobile={this.props.chatwidget.get('isMobile')} embedMode={this.props.chatwidget.get('mode')} targetSame={this.props.chatwidget.getIn(['chat_ui','same_target_link'])} setTextAreaHidden={(e) => {this.state.textAreaHidden === false && this.setState({textAreaHidden:true});}} printButton={this.props.chatwidget.getIn(['chat_ui','print_btn_msg'])} processStatus={this.props.chatwidget.get('processStatus')} setBotPayload={this.setBotPayload} content={this.props.chatwidget.getIn(['chat_ui','cmmsg_widget'])} />}\n\n {this.props.chatwidget.get('processStatus') == 1 && this.state.Question != '' && <div data-op-id=\"0\" className=\"message-row response msg-to-store\">\n {this.props.chatwidget.hasIn(['chat_ui','show_ts']) && !this.props.chatwidget.hasIn(['chat_ui','show_ts_below']) && <div className=\"msg-date\"> </div>}\n <span title=\"\" className=\"usr-tit vis-tit\"><i title={t('start_chat.visitor')} className=\"material-icons chat-operators mi-fs15 me-0\"></i><span className=\"user-nick-title\">{t('start_chat.visitor')}</span></span>\n <div className=\"msg-body\">{this.state.Question}</div>\n {this.props.chatwidget.hasIn(['chat_ui','show_ts']) && this.props.chatwidget.hasIn(['chat_ui','show_ts_below']) && <div className=\"msg-date\"> </div>}\n </div>}\n\n </div>\n </div>\n\n {(!this.props.chatwidget.getIn(['proactive','has']) || this.props.chatwidget.getIn(['chat_ui','custom_html_priority']) === 1) && this.props.chatwidget.hasIn(['chat_ui','custom_html_widget']) && <div className={\"custom-html-container \"+(this.state.Question != \"\" ? \"visitor-started-type\" : \"\")} dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_widget'])}}></div>}\n\n {(this.props.chatwidget.getIn(['onlineData','fields_visible']) == 1 || (this.props.chatwidget.getIn(['onlineData','fields_visible']) == 0 && !this.props.chatwidget.hasIn(['chat_ui','hstr_btn']))) && this.state.textAreaHidden === false && <div className=\"d-flex flex-row border-top position-relative message-send-area\">\n\n {(this.props.chatwidget.hasIn(['validationErrors','question'])) && <div id=\"id-operator-typing\" className=\"bg-white ps-1\">{this.props.chatwidget.getIn(['validationErrors','question'])}</div>}\n\n {this.props.chatwidget.getIn(['onlineData','fields_visible']) == 1 && <React.Fragment>\n {(!this.props.chatwidget.hasIn(['chat_ui','bbc_btnh']) || this.props.chatwidget.hasIn(['chat_ui','lng_btnh'])) && <ChatStartOptions bbEnabled={!this.props.chatwidget.hasIn(['chat_ui','bbc_btnh'])} langEnabled={this.props.chatwidget.hasIn(['chat_ui','lng_btnh'])} changeLanguage={this.changeLanguage} toggleModal={this.toggleModal} />}\n\n <div className=\"mx-auto w-100\">\n\n {/*<textarea\n autoFocus={this.props.chatwidget.get('isMobile') == false && this.props.chatwidget.get('mode') == 'widget' && this.props.chatwidget.get('shown') === true}\n onFocus={this.moveCaretAtEnd}\n maxLength={this.props.chatwidget.getIn(['chat_ui','max_length'])}+\n aria-label=\"Type your message here...\"+\n id=\"CSChatMessage\"+\n value={this.props.chatwidget.get('processStatus') == 1 && this.state.hasBotData === false ? '' : this.state.Question}+\n placeholder={this.props.chatwidget.hasIn(['chat_ui','placeholder_message']) ? this.props.chatwidget.getIn(['chat_ui','placeholder_message']) : t('chat.type_here')}+\n onKeyDown={this.enterKeyDown}+\n onChange={(e) => this.handleContentChange({'id' : 'Question' ,'value' : e.target.value})}+\n ref={this.textMessageRef}+\n rows=\"1\"+\n className={classMessageInput}+ />*/}\n\n <SharedTextarea\n text={this.props.chatwidget.get('processStatus') == 1 && this.state.hasBotData === false ? '' : this.state.Question}\n textMaxLength={this.props.chatwidget.getIn(['chat_ui','max_length'])}\n textAutoFocus={this.props.chatwidget.get('isMobile') == false && this.props.chatwidget.get('mode') == 'widget' && this.props.chatwidget.get('shown') === true}\n onTextChange={(e) => this.handleContentChange({'id' : 'Question' ,'value' : e.target.value})}\n onTextKeyDown={this.enterKeyDown}\n onTextFocus={this.moveCaretAtEnd}\n classNameText={classMessageInput}\n textPlaceholder={this.props.chatwidget.hasIn(['chat_ui','placeholder_message']) ? this.props.chatwidget.getIn(['chat_ui','placeholder_message']) : t('chat.type_here')}\n textareaRef={this.props.textMessageRef}\n />\n\n </div>\n <div className=\"disable-select\" id=\"send-button-wrapper\">\n <div className=\"user-chatwidget-buttons pt-2\" id=\"ChatSendButtonContainer\">\n {this.props.chatwidget.get('processStatus') != 1 && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.handleSubmit() : '' }} onClick={this.handleSubmit} title={t('button.start_chat')}>\n <i className={\"send-icon material-icons settings\" + (this.state.Question.length == 0 ? ' text-muted-light' : ' text-muted')}></i>\n </a>}\n\n {this.props.chatwidget.get('processStatus') == 1 && <i className=\"in-progress-icon material-icons text-muted settings me-0\"></i>}\n\n </div>\n </div>\n </React.Fragment>}\n\n {this.props.chatwidget.getIn(['onlineData','fields_visible']) == 0 && !this.props.chatwidget.hasIn(['chat_ui','hstr_btn']) && <button className=\"mx-auto pb-1 w-100 btn btn-light rounded-0\" onClick={this.handleSubmit} title={t('button.start_chat')}>\n {this.props.chatwidget.getIn(['chat_ui','custom_start_button']) || t('button.start_chat_With_us')}\n </button>}\n\n </div>}\n </React.Fragment>\n )\n } else {\n return (\n\n <div id=\"id-container-fluid\">\n {\n (this.props.chatwidget.getIn(['proactive','has']) === true && <ChatInvitationMessage mode='profile' invitation={this.props.chatwidget.getIn(['proactive','data'])} />)\n ||\n ((this.props.chatwidget.hasIn(['chat_ui','pre_chat_html']) || (this.props.chatwidget.hasIn(['chat_ui','operator_profile']) && this.props.chatwidget.getIn(['chat_ui','operator_profile']) != '')) && <div id=\"lhc-profile-body\"><div id=\"chat-status-container\" className={\"p-2\"+(this.props.chatwidget.hasIn(['chat_ui','np_border']) ? '' : ' border-bottom')} dangerouslySetInnerHTML={{__html:(this.props.chatwidget.hasIn(['chat_ui','pre_chat_html']) ? this.props.chatwidget.getIn(['chat_ui','pre_chat_html']) : '') + (this.props.chatwidget.hasIn(['chat_ui','operator_profile']) ? this.props.chatwidget.getIn(['chat_ui','operator_profile']) : '')}}></div></div>)\n }\n <div className=\"container-fluid\">\n\n <ChatErrorList errors={this.props.chatwidget.get('validationErrors')} />\n\n {!this.props.chatwidget.getIn(['proactive','has']) && this.props.chatwidget.hasIn(['chat_ui','custom_html_widget']) && <div className=\"custom-html-container\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_widget'])}}></div>}\n\n <form onSubmit={this.handleSubmit}>\n <div className=\"row pt-2\">\n {mappedFields}\n {mappedFieldsCustom}\n {this.props.chatwidget.hasIn(['onlineData','department']) && <ChatDepartment defaultValueField={this.state['DepartamentID']} setDefaultValue={this.props.chatwidget.get('departmentDefault')} onChangeContent={this.handleContentChange} isInvalidProduct={this.props.chatwidget.hasIn(['validationErrors','ProductID'])} isInvalid={this.props.chatwidget.hasIn(['validationErrors','department'])} departments={this.props.chatwidget.getIn(['onlineData','department'])} />}\n </div>\n {(!this.props.chatwidget.hasIn(['chat_ui','hstr_btn']) || mappedFieldsCustom !== \"\" || mappedFields !== \"\" || this.props.chatwidget.getIn(['proactive','has']) === true) && <div className=\"row\">\n <div className=\"col-12 pb-3\">\n <button disabled={this.props.chatwidget.get('processStatus') == 1} type=\"submit\" className=\"btn btn-secondary btn-sm\">{this.props.chatwidget.getIn(['chat_ui','custom_start_button']) || t('button.start_chat')}</button>\n </div>\n </div>}\n </form>\n </div>\n </div>\n )\n }\n\n } else if (this.props.chatwidget.get('processStatus') == 2) {\n return (\n <div className=\"container-fluid\" id=\"id-container-fluid\">\n <div className=\"row\">\n <div className=\"col-12\">\n <p>{t('start_chat.thank_you_for_feedback')}</p>\n </div>\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withTranslation()(StartChat);\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}const defaults={threshold:50,passive:!1};class Xwiper{constructor(a,b={}){this.options=_objectSpread(_objectSpread({},defaults),b),this.element=null,this.touchStartX=0,this.touchStartY=0,this.touchEndX=0,this.touchEndY=0,this.onSwipeLeftAgent=null,this.onSwipeRightAgent=null,this.onSwipeUpAgent=null,this.onSwipeDownAgent=null,this.onTapAgent=null,this.onTouchStart=this.onTouchStart.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this),this.onSwipeLeft=this.onSwipeLeft.bind(this),this.onSwipeRight=this.onSwipeRight.bind(this),this.onSwipeUp=this.onSwipeUp.bind(this),this.onSwipeDown=this.onSwipeDown.bind(this),this.onTap=this.onTap.bind(this),this.destroy=this.destroy.bind(this),this.handleGesture=this.handleGesture.bind(this);let c=!!this.options.passive&&{passive:!0};this.element=a instanceof EventTarget?a:document.querySelector(a),this.element.addEventListener(\"touchstart\",this.onTouchStart,c),this.element.addEventListener(\"touchend\",this.onTouchEnd,c)}onTouchStart(a){this.touchStartX=a.changedTouches[0].screenX,this.touchStartY=a.changedTouches[0].screenY}onTouchEnd(a){this.touchEndX=a.changedTouches[0].screenX,this.touchEndY=a.changedTouches[0].screenY,this.handleGesture()}onSwipeLeft(a){this.onSwipeLeftAgent=a}onSwipeRight(a){this.onSwipeRightAgent=a}onSwipeUp(a){this.onSwipeUpAgent=a}onSwipeDown(a){this.onSwipeDownAgent=a}onTap(a){this.onTapAgent=a}destroy(){this.element.removeEventListener(\"touchstart\",this.onTouchStart),this.element.removeEventListener(\"touchend\",this.onTouchEnd)}handleGesture(){return this.touchEndX+this.options.threshold<=this.touchStartX?(this.onSwipeLeftAgent&&this.onSwipeLeftAgent(),\"swiped left\"):this.touchEndX-this.options.threshold>=this.touchStartX?(this.onSwipeRightAgent&&this.onSwipeRightAgent(),\"swiped right\"):this.touchEndY+this.options.threshold<=this.touchStartY?(this.onSwipeUpAgent&&this.onSwipeUpAgent(),\"swiped up\"):this.touchEndY-this.options.threshold>=this.touchStartY?(this.onSwipeDownAgent&&this.onSwipeDownAgent(),\"swiped down\"):this.touchEndY===this.touchStartY?(this.onTapAgent&&this.onTapAgent(),\"tap\"):void 0}}module.exports=Xwiper;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*!\n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i<self._howls.length; i++) {\n if (!self._howls[i]._webAudio) {\n // Get all of the sounds in this Howl group.\n var ids = self._howls[i]._getSoundIds();\n\n // Loop through all sounds and change the volumes.\n for (var j=0; j<ids.length; j++) {\n var sound = self._howls[i]._soundById(ids[j]);\n\n if (sound && sound._node) {\n sound._node.volume = sound._volume * vol;\n }\n }\n }\n }\n\n return self;\n }\n\n return self._volume;\n },\n\n /**\n * Handle muting and unmuting globally.\n * @param {Boolean} muted Is muted or not.\n */\n mute: function(muted) {\n var self = this || Howler;\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n self._muted = muted;\n\n // With Web Audio, we just need to mute the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(muted ? 0 : self._volume, Howler.ctx.currentTime);\n }\n\n // Loop through and mute all HTML5 Audio nodes.\n for (var i=0; i<self._howls.length; i++) {\n if (!self._howls[i]._webAudio) {\n // Get all of the sounds in this Howl group.\n var ids = self._howls[i]._getSoundIds();\n\n // Loop through all sounds and mark the audio node as muted.\n for (var j=0; j<ids.length; j++) {\n var sound = self._howls[i]._soundById(ids[j]);\n\n if (sound && sound._node) {\n sound._node.muted = (muted) ? true : sound._muted;\n }\n }\n }\n }\n\n return self;\n },\n\n /**\n * Handle stopping all sounds globally.\n */\n stop: function() {\n var self = this || Howler;\n\n // Loop through all Howls and stop them.\n for (var i=0; i<self._howls.length; i++) {\n self._howls[i].stop();\n }\n\n return self;\n },\n\n /**\n * Unload and destroy all currently loaded Howl objects.\n * @return {Howler}\n */\n unload: function() {\n var self = this || Howler;\n\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/(\\d+)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i<self._howls.length; i++) {\n if (!self._howls[i]._webAudio) {\n // Get all of the sounds in this Howl group.\n var ids = self._howls[i]._getSoundIds();\n\n // Loop through all sounds and unlock the audio nodes.\n for (var j=0; j<ids.length; j++) {\n var sound = self._howls[i]._soundById(ids[j]);\n\n if (sound && sound._node && !sound._node._unlocked) {\n sound._node._unlocked = true;\n sound._node.load();\n }\n }\n }\n }\n\n // Fix Android can not play in suspend state.\n self._autoResume();\n\n // Create an empty buffer.\n var source = self.ctx.createBufferSource();\n source.buffer = self._scratchBuffer;\n source.connect(self.ctx.destination);\n\n // Play the empty buffer.\n if (typeof source.start === 'undefined') {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n\n // Calling resume() on a stack initiated by user gesture is what actually unlocks the audio on Android Chrome >= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i<self._howls.length; i++) {\n self._howls[i]._emit('unlock');\n }\n };\n };\n\n // Setup a touch start listener to attempt an unlock in.\n document.addEventListener('touchstart', unlock, true);\n document.addEventListener('touchend', unlock, true);\n document.addEventListener('click', unlock, true);\n document.addEventListener('keydown', unlock, true);\n\n return self;\n },\n\n /**\n * Get an unlocked HTML5 Audio object from the pool. If none are left,\n * return a new Audio object and throw a warning.\n * @return {Audio} HTML5 Audio object.\n */\n _obtainHtml5Audio: function() {\n var self = this || Howler;\n\n // Return the next object from the pool if one exists.\n if (self._html5AudioPool.length) {\n return self._html5AudioPool.pop();\n }\n\n //.Check if the audio is locked and throw a warning.\n var testPlay = new Audio().play();\n if (testPlay && typeof Promise !== 'undefined' && (testPlay instanceof Promise || typeof testPlay.then === 'function')) {\n testPlay.catch(function() {\n console.warn('HTML5 Audio pool exhausted, returning potentially locked audio object.');\n });\n }\n\n return new Audio();\n },\n\n /**\n * Return an activated HTML5 Audio object to the pool.\n * @return {Howler}\n */\n _releaseHtml5Audio: function(audio) {\n var self = this || Howler;\n\n // Don't add audio to the pool if we don't know if it has been unlocked.\n if (audio._unlocked) {\n self._html5AudioPool.push(audio);\n }\n\n return self;\n },\n\n /**\n * Automatically suspend the Web Audio AudioContext after no sound has played for 30 seconds.\n * This saves processing/energy and fixes various browser-specific bugs with audio getting stuck.\n * @return {Howler}\n */\n _autoSuspend: function() {\n var self = this;\n\n if (!self.autoSuspend || !self.ctx || typeof self.ctx.suspend === 'undefined' || !Howler.usingWebAudio) {\n return;\n }\n\n // Check if any sounds are playing.\n for (var i=0; i<self._howls.length; i++) {\n if (self._howls[i]._webAudio) {\n for (var j=0; j<self._howls[i]._sounds.length; j++) {\n if (!self._howls[i]._sounds[j]._paused) {\n return self;\n }\n }\n }\n }\n\n if (self._suspendTimer) {\n clearTimeout(self._suspendTimer);\n }\n\n // If no sound has played after 30 seconds, suspend the context.\n self._suspendTimer = setTimeout(function() {\n if (!self.autoSuspend) {\n return;\n }\n\n self._suspendTimer = null;\n self.state = 'suspending';\n\n // Handle updating the state of the audio context after suspending.\n var handleSuspension = function() {\n self.state = 'suspended';\n\n if (self._resumeAfterSuspend) {\n delete self._resumeAfterSuspend;\n self._autoResume();\n }\n };\n\n // Either the state gets suspended or it is interrupted.\n // Either way, we need to update the state to suspended.\n self.ctx.suspend().then(handleSuspension, handleSuspension);\n }, 30000);\n\n return self;\n },\n\n /**\n * Automatically resume the Web Audio AudioContext when a new sound is played.\n * @return {Howler}\n */\n _autoResume: function() {\n var self = this;\n\n if (!self.ctx || typeof self.ctx.resume === 'undefined' || !Howler.usingWebAudio) {\n return;\n }\n\n if (self.state === 'running' && self.ctx.state !== 'interrupted' && self._suspendTimer) {\n clearTimeout(self._suspendTimer);\n self._suspendTimer = null;\n } else if (self.state === 'suspended' || self.state === 'running' && self.ctx.state === 'interrupted') {\n self.ctx.resume().then(function() {\n self.state = 'running';\n\n // Emit to all Howls that the audio has resumed.\n for (var i=0; i<self._howls.length; i++) {\n self._howls[i]._emit('resume');\n }\n });\n\n if (self._suspendTimer) {\n clearTimeout(self._suspendTimer);\n self._suspendTimer = null;\n }\n } else if (self.state === 'suspending') {\n self._resumeAfterSuspend = true;\n }\n\n return self;\n }\n };\n\n // Setup the global audio controller.\n var Howler = new HowlerGlobal();\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Create an audio group controller.\n * @param {Object} o Passed in properties for this group.\n */\n var Howl = function(o) {\n var self = this;\n\n // Throw an error if no source is provided.\n if (!o.src || o.src.length === 0) {\n console.error('An array of source files must be passed with any new Howl.');\n return;\n }\n\n self.init(o);\n };\n Howl.prototype = {\n /**\n * Initialize a new Howl group object.\n * @param {Object} o Passed in properties for this group.\n * @return {Howl}\n */\n init: function(o) {\n var self = this;\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!Howler.ctx) {\n setupAudioContext();\n }\n\n // Setup user-defined default properties.\n self._autoplay = o.autoplay || false;\n self._format = (typeof o.format !== 'string') ? o.format : [o.format];\n self._html5 = o.html5 || false;\n self._muted = o.mute || false;\n self._loop = o.loop || false;\n self._pool = o.pool || 5;\n self._preload = (typeof o.preload === 'boolean' || o.preload === 'metadata') ? o.preload : true;\n self._rate = o.rate || 1;\n self._sprite = o.sprite || {};\n self._src = (typeof o.src !== 'string') ? o.src : [o.src];\n self._volume = o.volume !== undefined ? o.volume : 1;\n self._xhr = {\n method: o.xhr && o.xhr.method ? o.xhr.method : 'GET',\n headers: o.xhr && o.xhr.headers ? o.xhr.headers : null,\n withCredentials: o.xhr && o.xhr.withCredentials ? o.xhr.withCredentials : false,\n };\n\n // Setup all other default properties.\n self._duration = 0;\n self._state = 'unloaded';\n self._sounds = [];\n self._endTimers = {};\n self._queue = [];\n self._playLock = false;\n\n // Setup event listeners.\n self._onend = o.onend ? [{fn: o.onend}] : [];\n self._onfade = o.onfade ? [{fn: o.onfade}] : [];\n self._onload = o.onload ? [{fn: o.onload}] : [];\n self._onloaderror = o.onloaderror ? [{fn: o.onloaderror}] : [];\n self._onplayerror = o.onplayerror ? [{fn: o.onplayerror}] : [];\n self._onpause = o.onpause ? [{fn: o.onpause}] : [];\n self._onplay = o.onplay ? [{fn: o.onplay}] : [];\n self._onstop = o.onstop ? [{fn: o.onstop}] : [];\n self._onmute = o.onmute ? [{fn: o.onmute}] : [];\n self._onvolume = o.onvolume ? [{fn: o.onvolume}] : [];\n self._onrate = o.onrate ? [{fn: o.onrate}] : [];\n self._onseek = o.onseek ? [{fn: o.onseek}] : [];\n self._onunlock = o.onunlock ? [{fn: o.onunlock}] : [];\n self._onresume = [];\n\n // Web Audio or HTML5 Audio?\n self._webAudio = Howler.usingWebAudio && !self._html5;\n\n // Automatically try to enable audio.\n if (typeof Howler.ctx !== 'undefined' && Howler.ctx && Howler.autoUnlock) {\n Howler._unlockAudio();\n }\n\n // Keep track of this Howl group in the global controller.\n Howler._howls.push(self);\n\n // If they selected autoplay, add a play event to the load queue.\n if (self._autoplay) {\n self._queue.push({\n event: 'play',\n action: function() {\n self.play();\n }\n });\n }\n\n // Load the source file unless otherwise specified.\n if (self._preload && self._preload !== 'none') {\n self.load();\n }\n\n return self;\n },\n\n /**\n * Load the audio file.\n * @return {Howler}\n */\n load: function() {\n var self = this;\n var url = null;\n\n // If no audio is available, quit immediately.\n if (Howler.noAudio) {\n self._emit('loaderror', null, 'No audio support.');\n return;\n }\n\n // Make sure our source is in an array.\n if (typeof self._src === 'string') {\n self._src = [self._src];\n }\n\n // Loop through the sources and pick the first one that is compatible.\n for (var i=0; i<self._src.length; i++) {\n var ext, str;\n\n if (self._format && self._format[i]) {\n // If an extension was specified, use that instead.\n ext = self._format[i];\n } else {\n // Make sure the source is a string.\n str = self._src[i];\n if (typeof str !== 'string') {\n self._emit('loaderror', null, 'Non-string found in selected audio sources - ignoring.');\n continue;\n }\n\n // Extract the file extension from the URL or base64 data URI.\n ext = /^data:audio\\/([^;,]+);/i.exec(str);\n if (!ext) {\n ext = /\\.([^.]+)$/.exec(str.split('?', 1)[0]);\n }\n\n if (ext) {\n ext = ext[1].toLowerCase();\n }\n }\n\n // Log a warning if no extension was found.\n if (!ext) {\n console.warn('No file extension was found. Consider using the \"format\" property or specify an extension.');\n }\n\n // Check if this extension is available.\n if (ext && Howler.codecs(ext)) {\n url = self._src[i];\n break;\n }\n }\n\n if (!url) {\n self._emit('loaderror', null, 'No codec support for selected audio sources.');\n return;\n }\n\n self._src = url;\n self._state = 'loading';\n\n // If the hosting page is HTTPS and the source isn't,\n // drop down to HTML5 Audio to avoid Mixed Content errors.\n if (window.location.protocol === 'https:' && url.slice(0, 5) === 'http:') {\n self._html5 = true;\n self._webAudio = false;\n }\n\n // Create a new sound object and add it to the pool.\n new Sound(self);\n\n // Load and decode the audio data for playback.\n if (self._webAudio) {\n loadBuffer(self);\n }\n\n return self;\n },\n\n /**\n * Play a sound or resume previous playback.\n * @param {String/Number} sprite Sprite name for sprite playback or sound id to continue previous.\n * @param {Boolean} internal Internal Use: true prevents event firing.\n * @return {Number} Sound ID.\n */\n play: function(sprite, internal) {\n var self = this;\n var id = null;\n\n // Determine if a sprite, sound id or nothing was passed\n if (typeof sprite === 'number') {\n id = sprite;\n sprite = null;\n } else if (typeof sprite === 'string' && self._state === 'loaded' && !self._sprite[sprite]) {\n // If the passed sprite doesn't exist, do nothing.\n return null;\n } else if (typeof sprite === 'undefined') {\n // Use the default sound sprite (plays the full audio length).\n sprite = '__default';\n\n // Check if there is a single paused sound that isn't ended.\n // If there is, play that sound. If not, continue as usual.\n if (!self._playLock) {\n var num = 0;\n for (var i=0; i<self._sounds.length; i++) {\n if (self._sounds[i]._paused && !self._sounds[i]._ended) {\n num++;\n id = self._sounds[i]._id;\n }\n }\n\n if (num === 1) {\n sprite = null;\n } else {\n id = null;\n }\n }\n }\n\n // Get the selected node, or get one from the pool.\n var sound = id ? self._soundById(id) : self._inactiveSound();\n\n // If the sound doesn't exist, do nothing.\n if (!sound) {\n return null;\n }\n\n // Select the sprite definition.\n if (id && !sprite) {\n sprite = sound._sprite || '__default';\n }\n\n // If the sound hasn't loaded, we must wait to get the audio's duration.\n // We also need to wait to make sure we don't run into race conditions with\n // the order of function calls.\n if (self._state !== 'loaded') {\n // Set the sprite value on this sound.\n sound._sprite = sprite;\n\n // Mark this sound as not ended in case another sound is played before this one loads.\n sound._ended = false;\n\n // Add the sound to the queue to be played on load.\n var soundId = sound._id;\n self._queue.push({\n event: 'play',\n action: function() {\n self.play(soundId);\n }\n });\n\n return soundId;\n }\n\n // Don't play the sound if an id was passed and it is already playing.\n if (id && !sound._paused) {\n // Trigger the play event, in order to keep iterating through queue.\n if (!internal) {\n self._loadQueue('play');\n }\n\n return sound._id;\n }\n\n // Make sure the AudioContext isn't suspended, and resume it if it is.\n if (self._webAudio) {\n Howler._autoResume();\n }\n\n // Determine how long to play for and where to start playing.\n var seek = Math.max(0, sound._seek > 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i<ids.length; i++) {\n // Clear the end timer.\n self._clearTimer(ids[i]);\n\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound && !sound._paused) {\n // Reset the seek position.\n sound._seek = self.seek(ids[i]);\n sound._rateSeek = 0;\n sound._paused = true;\n\n // Stop currently running fades.\n self._stopFade(ids[i]);\n\n if (sound._node) {\n if (self._webAudio) {\n // Make sure the sound has been created.\n if (!sound._node.bufferSource) {\n continue;\n }\n\n if (typeof sound._node.bufferSource.stop === 'undefined') {\n sound._node.bufferSource.noteOff(0);\n } else {\n sound._node.bufferSource.stop(0);\n }\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n } else if (!isNaN(sound._node.duration) || sound._node.duration === Infinity) {\n sound._node.pause();\n }\n }\n }\n\n // Fire the pause event, unless `true` is passed as the 2nd argument.\n if (!arguments[1]) {\n self._emit('pause', sound ? sound._id : null);\n }\n }\n\n return self;\n },\n\n /**\n * Stop playback and reset to start.\n * @param {Number} id The sound ID (empty to stop all in group).\n * @param {Boolean} internal Internal Use: true prevents event firing.\n * @return {Howl}\n */\n stop: function(id, internal) {\n var self = this;\n\n // If the sound hasn't loaded, add it to the load queue to stop when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'stop',\n action: function() {\n self.stop(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be stopped.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i<ids.length; i++) {\n // Clear the end timer.\n self._clearTimer(ids[i]);\n\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound) {\n // Reset the seek position.\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._paused = true;\n sound._ended = true;\n\n // Stop currently running fades.\n self._stopFade(ids[i]);\n\n if (sound._node) {\n if (self._webAudio) {\n // Make sure the sound's AudioBufferSourceNode has been created.\n if (sound._node.bufferSource) {\n if (typeof sound._node.bufferSource.stop === 'undefined') {\n sound._node.bufferSource.noteOff(0);\n } else {\n sound._node.bufferSource.stop(0);\n }\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n }\n } else if (!isNaN(sound._node.duration) || sound._node.duration === Infinity) {\n sound._node.currentTime = sound._start || 0;\n sound._node.pause();\n\n // If this is a live stream, stop download once the audio is stopped.\n if (sound._node.duration === Infinity) {\n self._clearSound(sound._node);\n }\n }\n }\n\n if (!internal) {\n self._emit('stop', sound._id);\n }\n }\n }\n\n return self;\n },\n\n /**\n * Mute/unmute a single sound or all sounds in this Howl group.\n * @param {Boolean} muted Set to true to mute and false to unmute.\n * @param {Number} id The sound ID to update (omit to mute/unmute all).\n * @return {Howl}\n */\n mute: function(muted, id) {\n var self = this;\n\n // If the sound hasn't loaded, add it to the load queue to mute when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'mute',\n action: function() {\n self.mute(muted, id);\n }\n });\n\n return self;\n }\n\n // If applying mute/unmute to all sounds, update the group's value.\n if (typeof id === 'undefined') {\n if (typeof muted === 'boolean') {\n self._muted = muted;\n } else {\n return self._muted;\n }\n }\n\n // If no id is passed, get all ID's to be muted.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i<ids.length; i++) {\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound) {\n sound._muted = muted;\n\n // Cancel active fade and set the volume to the end value.\n if (sound._interval) {\n self._stopFade(sound._id);\n }\n\n if (self._webAudio && sound._node) {\n sound._node.gain.setValueAtTime(muted ? 0 : sound._volume, Howler.ctx.currentTime);\n } else if (sound._node) {\n sound._node.muted = Howler._muted ? true : muted;\n }\n\n self._emit('mute', sound._id);\n }\n }\n\n return self;\n },\n\n /**\n * Get/set the volume of this sound or of the Howl group. This method can optionally take 0, 1 or 2 arguments.\n * volume() -> Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i<id.length; i++) {\n // Get the sound.\n sound = self._soundById(id[i]);\n\n if (sound) {\n sound._volume = vol;\n\n // Stop currently running fades.\n if (!args[2]) {\n self._stopFade(id[i]);\n }\n\n if (self._webAudio && sound._node && !sound._muted) {\n sound._node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n } else if (sound._node && !sound._muted) {\n sound._node.volume = vol * Howler.volume();\n }\n\n self._emit('volume', sound._id);\n }\n }\n } else {\n sound = id ? self._soundById(id) : self._sounds[0];\n return sound ? sound._volume : 0;\n }\n\n return self;\n },\n\n /**\n * Fade a currently playing sound between two volumes (if no id is passed, all sounds will fade).\n * @param {Number} from The value to fade from (0.0 to 1.0).\n * @param {Number} to The volume to fade to (0.0 to 1.0).\n * @param {Number} len Time in milliseconds to fade.\n * @param {Number} id The sound id (omit to fade all sounds).\n * @return {Howl}\n */\n fade: function(from, to, len, id) {\n var self = this;\n\n // If the sound hasn't loaded, add it to the load queue to fade when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'fade',\n action: function() {\n self.fade(from, to, len, id);\n }\n });\n\n return self;\n }\n\n // Make sure the to/from/len values are numbers.\n from = Math.min(Math.max(0, parseFloat(from)), 1);\n to = Math.min(Math.max(0, parseFloat(to)), 1);\n len = parseFloat(len);\n\n // Set the volume to the start position.\n self.volume(from, id);\n\n // Fade the volume of one or all sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n // Create a linear fade or fall back to timeouts with HTML5 Audio.\n if (sound) {\n // Stop the previous fade if no sprite is being used (otherwise, volume handles this).\n if (!id) {\n self._stopFade(ids[i]);\n }\n\n // If we are using Web Audio, let the native methods do the actual fade.\n if (self._webAudio && !sound._muted) {\n var currentTime = Howler.ctx.currentTime;\n var end = currentTime + (len / 1000);\n sound._volume = from;\n sound._node.gain.setValueAtTime(from, currentTime);\n sound._node.gain.linearRampToValueAtTime(to, end);\n }\n\n self._startFadeInterval(sound, from, to, len, ids[i], typeof id === 'undefined');\n }\n }\n\n return self;\n },\n\n /**\n * Starts the internal interval to fade a sound.\n * @param {Object} sound Reference to sound to fade.\n * @param {Number} from The value to fade from (0.0 to 1.0).\n * @param {Number} to The volume to fade to (0.0 to 1.0).\n * @param {Number} len Time in milliseconds to fade.\n * @param {Number} id The sound id to fade.\n * @param {Boolean} isGroup If true, set the volume on the group.\n */\n _startFadeInterval: function(sound, from, to, len, id, isGroup) {\n var self = this;\n var vol = from;\n var diff = to - from;\n var steps = Math.abs(diff / 0.01);\n var stepLen = Math.max(4, (steps > 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n sound = self._soundById(ids[i]);\n\n if (sound) {\n sound._loop = loop;\n if (self._webAudio && sound._node && sound._node.bufferSource) {\n sound._node.bufferSource.loop = loop;\n if (loop) {\n sound._node.bufferSource.loopStart = sound._start || 0;\n sound._node.bufferSource.loopEnd = sound._stop;\n\n // If playing, restart playback to ensure looping updates.\n if (self.playing(ids[i])) {\n self.pause(ids[i], true);\n self.play(ids[i], true);\n }\n }\n }\n }\n }\n\n return self;\n },\n\n /**\n * Get/set the playback rate of a sound. This method can optionally take 0, 1 or 2 arguments.\n * rate() -> Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i<id.length; i++) {\n // Get the sound.\n sound = self._soundById(id[i]);\n\n if (sound) {\n // Keep track of our position when the rate changed and update the playback\n // start position so we can properly adjust the seek position for time elapsed.\n if (self.playing(id[i])) {\n sound._rateSeek = self.seek(id[i]);\n sound._playStart = self._webAudio ? Howler.ctx.currentTime : sound._playStart;\n }\n sound._rate = rate;\n\n // Change the playback rate.\n if (self._webAudio && sound._node && sound._node.bufferSource) {\n sound._node.bufferSource.playbackRate.setValueAtTime(rate, Howler.ctx.currentTime);\n } else if (sound._node) {\n sound._node.playbackRate = rate;\n }\n\n // Reset the timers.\n var seek = self.seek(id[i]);\n var duration = ((self._sprite[sound._sprite][0] + self._sprite[sound._sprite][1]) / 1000) - seek;\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n\n // Start a new end timer if sound is already playing.\n if (self._endTimers[id[i]] || !sound._paused) {\n self._clearTimer(id[i]);\n self._endTimers[id[i]] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n self._emit('rate', sound._id);\n }\n }\n } else {\n sound = self._soundById(id);\n return sound ? sound._rate : self._rate;\n }\n\n return self;\n },\n\n /**\n * Get/set the seek position of a sound. This method can optionally take 0, 1 or 2 arguments.\n * seek() -> Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i<self._sounds.length; i++) {\n if (!self._sounds[i]._paused) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * Get the duration of this sound. Passing a sound id will return the sprite duration.\n * @param {Number} id The sound id to check. If none is passed, return full source duration.\n * @return {Number} Audio duration in seconds.\n */\n duration: function(id) {\n var self = this;\n var duration = self._duration;\n\n // If we pass an ID, get the sound and return the sprite length.\n var sound = self._soundById(id);\n if (sound) {\n duration = self._sprite[sound._sprite][1] / 1000;\n }\n\n return duration;\n },\n\n /**\n * Returns the current loaded state of this Howl.\n * @return {String} 'unloaded', 'loading', 'loaded'\n */\n state: function() {\n return this._state;\n },\n\n /**\n * Unload and destroy the current Howl object.\n * This will immediately stop all sound instances attached to this group.\n */\n unload: function() {\n var self = this;\n\n // Stop playing any active sounds.\n var sounds = self._sounds;\n for (var i=0; i<sounds.length; i++) {\n // Stop the sound if it is currently playing.\n if (!sounds[i]._paused) {\n self.stop(sounds[i]._id);\n }\n\n // Remove the source or disconnect.\n if (!self._webAudio) {\n // Set the source to 0-second silence to stop any downloading (except in IE).\n self._clearSound(sounds[i]._node);\n\n // Remove any event listeners.\n sounds[i]._node.removeEventListener('error', sounds[i]._errorFn, false);\n sounds[i]._node.removeEventListener(Howler._canPlayEvent, sounds[i]._loadFn, false);\n sounds[i]._node.removeEventListener('ended', sounds[i]._endFn, false);\n\n // Release the Audio object back to the pool.\n Howler._releaseHtml5Audio(sounds[i]._node);\n }\n\n // Empty out all of the nodes.\n delete sounds[i]._node;\n\n // Make sure all timers are cleared out.\n self._clearTimer(sounds[i]._id);\n }\n\n // Remove the references in the global Howler object.\n var index = Howler._howls.indexOf(self);\n if (index >= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i<Howler._howls.length; i++) {\n if (Howler._howls[i]._src === self._src || self._src.indexOf(Howler._howls[i]._src) >= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i<events.length; i++) {\n var isId = (id === events[i].id);\n if (fn === events[i].fn && isId || !fn && isId) {\n events.splice(i, 1);\n break;\n }\n }\n } else if (event) {\n // Clear out all events of this type.\n self['_on' + event] = [];\n } else {\n // Clear out all events of every type.\n var keys = Object.keys(self);\n for (i=0; i<keys.length; i++) {\n if ((keys[i].indexOf('_on') === 0) && Array.isArray(self[keys[i]])) {\n self[keys[i]] = [];\n }\n }\n }\n\n return self;\n },\n\n /**\n * Listen to a custom event and remove it once fired.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @return {Howl}\n */\n once: function(event, fn, id) {\n var self = this;\n\n // Setup the event listener.\n self.on(event, fn, id, 1);\n\n return self;\n },\n\n /**\n * Emit all events of a specific type and pass the sound id.\n * @param {String} event Event name.\n * @param {Number} id Sound ID.\n * @param {Number} msg Message to go with event.\n * @return {Howl}\n */\n _emit: function(event, id, msg) {\n var self = this;\n var events = self['_on' + event];\n\n // Loop through event store and fire all functions.\n for (var i=events.length-1; i>=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i<self._sounds.length; i++) {\n if (id === self._sounds[i]._id) {\n return self._sounds[i];\n }\n }\n\n return null;\n },\n\n /**\n * Return an inactive sound from the pool or create a new one.\n * @return {Sound} Sound playback object.\n */\n _inactiveSound: function() {\n var self = this;\n\n self._drain();\n\n // Find the first inactive node to recycle.\n for (var i=0; i<self._sounds.length; i++) {\n if (self._sounds[i]._ended) {\n return self._sounds[i].reset();\n }\n }\n\n // If no inactive node was found, create a new one.\n return new Sound(self);\n },\n\n /**\n * Drain excess inactive sounds from the pool.\n */\n _drain: function() {\n var self = this;\n var limit = self._pool;\n var cnt = 0;\n var i = 0;\n\n // If there are less sounds than the max pool size, we are done.\n if (self._sounds.length < limit) {\n return;\n }\n\n // Count the number of inactive sounds.\n for (i=0; i<self._sounds.length; i++) {\n if (self._sounds[i]._ended) {\n cnt++;\n }\n }\n\n // Remove excess inactive sounds, going in reverse order.\n for (i=self._sounds.length - 1; i>=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i<self._sounds.length; i++) {\n ids.push(self._sounds[i]._id);\n }\n\n return ids;\n } else {\n return [id];\n }\n },\n\n /**\n * Load the sound back into the buffer source.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _refreshBuffer: function(sound) {\n var self = this;\n\n // Setup the buffer source for playback.\n sound._node.bufferSource = Howler.ctx.createBufferSource();\n sound._node.bufferSource.buffer = cache[self._src];\n\n // Connect to the correct node.\n if (sound._panner) {\n sound._node.bufferSource.connect(sound._panner);\n } else {\n sound._node.bufferSource.connect(sound._node);\n }\n\n // Setup looping and playback rate.\n sound._node.bufferSource.loop = sound._loop;\n if (sound._loop) {\n sound._node.bufferSource.loopStart = sound._start || 0;\n sound._node.bufferSource.loopEnd = sound._stop || 0;\n }\n sound._node.bufferSource.playbackRate.setValueAtTime(sound._rate, Howler.ctx.currentTime);\n\n return self;\n },\n\n /**\n * Prevent memory leaks by cleaning up the buffer source after playback.\n * @param {Object} node Sound's audio node containing the buffer source.\n * @return {Howl}\n */\n _cleanBuffer: function(node) {\n var self = this;\n var isIOS = Howler._navigator && Howler._navigator.vendor.indexOf('Apple') >= 0;\n\n if (!node.bufferSource) {\n return self;\n }\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i<data.length; ++i) {\n dataView[i] = data.charCodeAt(i);\n }\n\n decodeAudioData(dataView.buffer, self);\n } else {\n // Load the buffer from the URL.\n var xhr = new XMLHttpRequest();\n xhr.open(self._xhr.method, url, true);\n xhr.withCredentials = self._xhr.withCredentials;\n xhr.responseType = 'arraybuffer';\n\n // Apply any custom headers to the request.\n if (self._xhr.headers) {\n Object.keys(self._xhr.headers).forEach(function(key) {\n xhr.setRequestHeader(key, self._xhr.headers[key]);\n });\n }\n\n xhr.onload = function() {\n // Make sure we get a successful response back.\n var code = (xhr.status + '')[0];\n if (code !== '0' && code !== '2' && code !== '3') {\n self._emit('loaderror', null, 'Failed loading audio file with status: ' + xhr.status + '.');\n return;\n }\n\n decodeAudioData(xhr.response, self);\n };\n xhr.onerror = function() {\n // If there is an error, switch to HTML5 Audio.\n if (self._webAudio) {\n self._html5 = true;\n self._webAudio = false;\n self._sounds = [];\n delete cache[url];\n self.load();\n }\n };\n safeXhrSend(xhr);\n }\n };\n\n /**\n * Send the XHR request wrapped in a try/catch.\n * @param {Object} xhr XHR to send.\n */\n var safeXhrSend = function(xhr) {\n try {\n xhr.send();\n } catch (e) {\n xhr.onerror();\n }\n };\n\n /**\n * Decode audio data from an array buffer.\n * @param {ArrayBuffer} arraybuffer The audio data.\n * @param {Howl} self\n */\n var decodeAudioData = function(arraybuffer, self) {\n // Fire a load error if something broke.\n var error = function() {\n self._emit('loaderror', null, 'Decoding audio data failed.');\n };\n\n // Load the sound on success.\n var success = function(buffer) {\n if (buffer && self._sounds.length > 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound) {\n if (typeof pan === 'number') {\n sound._stereo = pan;\n sound._pos = [pan, 0, 0];\n\n if (sound._node) {\n // If we are falling back, make sure the panningModel is equalpower.\n sound._pannerAttr.panningModel = 'equalpower';\n\n // Check if there is a panner setup and create a new one if not.\n if (!sound._panner || !sound._panner.pan) {\n setupPanner(sound, pannerType);\n }\n\n if (pannerType === 'spatial') {\n if (typeof sound._panner.positionX !== 'undefined') {\n sound._panner.positionX.setValueAtTime(pan, Howler.ctx.currentTime);\n sound._panner.positionY.setValueAtTime(0, Howler.ctx.currentTime);\n sound._panner.positionZ.setValueAtTime(0, Howler.ctx.currentTime);\n } else {\n sound._panner.setPosition(pan, 0, 0);\n }\n } else {\n sound._panner.pan.setValueAtTime(pan, Howler.ctx.currentTime);\n }\n }\n\n self._emit('stereo', sound._id);\n } else {\n return sound._stereo;\n }\n }\n }\n\n return self;\n };\n\n /**\n * Get/set the 3D spatial position of the audio source for this sound or group relative to the global listener.\n * @param {Number} x The x-position of the audio source.\n * @param {Number} y The y-position of the audio source.\n * @param {Number} z The z-position of the audio source.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Array} Returns self or the current 3D spatial position: [x, y, z].\n */\n Howl.prototype.pos = function(x, y, z, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change position when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'pos',\n action: function() {\n self.pos(x, y, z, id);\n }\n });\n\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? 0 : y;\n z = (typeof z !== 'number') ? -0.5 : z;\n\n // Setup the group's spatial position if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's spatial position if no parameters are passed.\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n } else {\n return self._pos;\n }\n }\n\n // Change the spatial position of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound) {\n if (typeof x === 'number') {\n sound._pos = [x, y, z];\n\n if (sound._node) {\n // Check if there is a panner setup and create a new one if not.\n if (!sound._panner || sound._panner.pan) {\n setupPanner(sound, 'spatial');\n }\n\n if (typeof sound._panner.positionX !== 'undefined') {\n sound._panner.positionX.setValueAtTime(x, Howler.ctx.currentTime);\n sound._panner.positionY.setValueAtTime(y, Howler.ctx.currentTime);\n sound._panner.positionZ.setValueAtTime(z, Howler.ctx.currentTime);\n } else {\n sound._panner.setPosition(x, y, z);\n }\n }\n\n self._emit('pos', sound._id);\n } else {\n return sound._pos;\n }\n }\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the audio source is pointing in the 3D cartesian coordinate\n * space. Depending on how direction the sound is, based on the `cone` attributes,\n * a sound pointing away from the listener can be quiet or silent.\n * @param {Number} x The x-orientation of the source.\n * @param {Number} y The y-orientation of the source.\n * @param {Number} z The z-orientation of the source.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Array} Returns self or the current 3D spatial orientation: [x, y, z].\n */\n Howl.prototype.orientation = function(x, y, z, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change orientation when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'orientation',\n action: function() {\n self.orientation(x, y, z, id);\n }\n });\n\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._orientation[1] : y;\n z = (typeof z !== 'number') ? self._orientation[2] : z;\n\n // Setup the group's spatial orientation if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's spatial orientation if no parameters are passed.\n if (typeof x === 'number') {\n self._orientation = [x, y, z];\n } else {\n return self._orientation;\n }\n }\n\n // Change the spatial orientation of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n // Get the sound.\n var sound = self._soundById(ids[i]);\n\n if (sound) {\n if (typeof x === 'number') {\n sound._orientation = [x, y, z];\n\n if (sound._node) {\n // Check if there is a panner setup and create a new one if not.\n if (!sound._panner) {\n // Make sure we have a position to setup the node with.\n if (!sound._pos) {\n sound._pos = self._pos || [0, 0, -0.5];\n }\n\n setupPanner(sound, 'spatial');\n }\n\n if (typeof sound._panner.orientationX !== 'undefined') {\n sound._panner.orientationX.setValueAtTime(x, Howler.ctx.currentTime);\n sound._panner.orientationY.setValueAtTime(y, Howler.ctx.currentTime);\n sound._panner.orientationZ.setValueAtTime(z, Howler.ctx.currentTime);\n } else {\n sound._panner.setOrientation(x, y, z);\n }\n }\n\n self._emit('orientation', sound._id);\n } else {\n return sound._orientation;\n }\n }\n }\n\n return self;\n };\n\n /**\n * Get/set the panner node's attributes for a sound or group of sounds.\n * This method can optionall take 0, 1 or 2 arguments.\n * pannerAttr() -> Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i<ids.length; i++) {\n sound = self._soundById(ids[i]);\n\n if (sound) {\n // Merge the new values into the sound.\n var pa = sound._pannerAttr;\n pa = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : pa.coneInnerAngle,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : pa.coneOuterAngle,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : pa.coneOuterGain,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : pa.distanceModel,\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : pa.maxDistance,\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : pa.refDistance,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : pa.rolloffFactor,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : pa.panningModel\n };\n\n // Create a new panner node if one doesn't already exist.\n var panner = sound._panner;\n if (!panner) {\n // Make sure we have a position to setup the node with.\n if (!sound._pos) {\n sound._pos = self._pos || [0, 0, -0.5];\n }\n\n // Create a new panner node.\n setupPanner(sound, 'spatial');\n panner = sound._panner\n }\n\n // Update the panner values or create a new panner if none exists.\n panner.coneInnerAngle = pa.coneInnerAngle;\n panner.coneOuterAngle = pa.coneOuterAngle;\n panner.coneOuterGain = pa.coneOuterGain;\n panner.distanceModel = pa.distanceModel;\n panner.maxDistance = pa.maxDistance;\n panner.refDistance = pa.refDistance;\n panner.rolloffFactor = pa.rolloffFactor;\n panner.panningModel = pa.panningModel;\n }\n }\n\n return self;\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core Sound init.\n * @param {Function} _super Core Sound init method.\n * @return {Sound}\n */\n Sound.prototype.init = (function(_super) {\n return function() {\n var self = this;\n var parent = self._parent;\n\n // Setup user-defined default properties.\n self._orientation = parent._orientation;\n self._stereo = parent._stereo;\n self._pos = parent._pos;\n self._pannerAttr = parent._pannerAttr;\n\n // Complete initilization with howler.js core Sound's init function.\n _super.call(this);\n\n // If a stereo or position was specified, set it up.\n if (self._stereo) {\n parent.stereo(self._stereo);\n } else if (self._pos) {\n parent.pos(self._pos[0], self._pos[1], self._pos[2], self._id);\n }\n };\n })(Sound.prototype.init);\n\n /**\n * Override the Sound.reset method to clean up properties from the spatial plugin.\n * @param {Function} _super Sound reset method.\n * @return {Sound}\n */\n Sound.prototype.reset = (function(_super) {\n return function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all spatial plugin properties on this sound.\n self._orientation = parent._orientation;\n self._stereo = parent._stereo;\n self._pos = parent._pos;\n self._pannerAttr = parent._pannerAttr;\n\n // If a stereo or position was specified, set it up.\n if (self._stereo) {\n parent.stereo(self._stereo);\n } else if (self._pos) {\n parent.pos(self._pos[0], self._pos[1], self._pos[2], self._id);\n } else if (self._panner) {\n // Disconnect the panner.\n self._panner.disconnect(0);\n self._panner = undefined;\n parent._refreshBuffer(self);\n }\n\n // Complete resetting of the sound.\n return _super.call(this);\n };\n })(Sound.prototype.reset);\n\n /** Helper Methods **/\n /***************************************************************************/\n\n /**\n * Create a new panner node and save it on the sound.\n * @param {Sound} sound Specific sound to setup panning on.\n * @param {String} type Type of panner to create: 'stereo' or 'spatial'.\n */\n var setupPanner = function(sound, type) {\n type = type || 'spatial';\n\n // Create the new panner node.\n if (type === 'spatial') {\n sound._panner = Howler.ctx.createPanner();\n sound._panner.coneInnerAngle = sound._pannerAttr.coneInnerAngle;\n sound._panner.coneOuterAngle = sound._pannerAttr.coneOuterAngle;\n sound._panner.coneOuterGain = sound._pannerAttr.coneOuterGain;\n sound._panner.distanceModel = sound._pannerAttr.distanceModel;\n sound._panner.maxDistance = sound._pannerAttr.maxDistance;\n sound._panner.refDistance = sound._pannerAttr.refDistance;\n sound._panner.rolloffFactor = sound._pannerAttr.rolloffFactor;\n sound._panner.panningModel = sound._pannerAttr.panningModel;\n\n if (typeof sound._panner.positionX !== 'undefined') {\n sound._panner.positionX.setValueAtTime(sound._pos[0], Howler.ctx.currentTime);\n sound._panner.positionY.setValueAtTime(sound._pos[1], Howler.ctx.currentTime);\n sound._panner.positionZ.setValueAtTime(sound._pos[2], Howler.ctx.currentTime);\n } else {\n sound._panner.setPosition(sound._pos[0], sound._pos[1], sound._pos[2]);\n }\n\n if (typeof sound._panner.orientationX !== 'undefined') {\n sound._panner.orientationX.setValueAtTime(sound._orientation[0], Howler.ctx.currentTime);\n sound._panner.orientationY.setValueAtTime(sound._orientation[1], Howler.ctx.currentTime);\n sound._panner.orientationZ.setValueAtTime(sound._orientation[2], Howler.ctx.currentTime);\n } else {\n sound._panner.setOrientation(sound._orientation[0], sound._orientation[1], sound._orientation[2]);\n }\n } else {\n sound._panner = Howler.ctx.createStereoPanner();\n sound._panner.pan.setValueAtTime(sound._stereo, Howler.ctx.currentTime);\n }\n\n sound._panner.connect(sound._node);\n\n // Update the connections.\n if (!sound._paused) {\n sound._parent.pause(sound._id, true).play(sound._id, true);\n }\n };\n})();\n","'use strict';\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nconst RESERVED = 0;\n\n// A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\nconst STRING = 1;\n\n// A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\nconst BOOLEANISH_STRING = 2;\n\n// A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\nconst BOOLEAN = 3;\n\n// An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\nconst OVERLOADED_BOOLEAN = 4;\n\n// An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\nconst NUMERIC = 5;\n\n// An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\nconst POSITIVE_NUMERIC = 6;\n\nfunction getPropertyInfo(name) {\n return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(\n name,\n type,\n mustUseProperty,\n attributeName,\n attributeNamespace,\n sanitizeURL,\n removeEmptyString,\n) {\n this.acceptsBooleans =\n type === BOOLEANISH_STRING ||\n type === BOOLEAN ||\n type === OVERLOADED_BOOLEAN;\n this.attributeName = attributeName;\n this.attributeNamespace = attributeNamespace;\n this.mustUseProperty = mustUseProperty;\n this.propertyName = name;\n this.type = type;\n this.sanitizeURL = sanitizeURL;\n this.removeEmptyString = removeEmptyString;\n}\n\n// When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\nconst properties = {};\n\n// These props are reserved by React. They shouldn't be written to the DOM.\nconst reservedProps = [\n 'children',\n 'dangerouslySetInnerHTML',\n // TODO: This prevents the assignment of defaultValue to regular\n // elements (not just inputs). Now that ReactDOMInput assigns to the\n // defaultValue property -- do we need this?\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'suppressContentEditableWarning',\n 'suppressHydrationWarning',\n 'style',\n];\n\nreservedProps.forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n RESERVED,\n false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n[\n ['acceptCharset', 'accept-charset'],\n ['className', 'class'],\n ['htmlFor', 'for'],\n ['httpEquiv', 'http-equiv'],\n].forEach(([name, attributeName]) => {\n properties[name] = new PropertyInfoRecord(\n name,\n STRING,\n false, // mustUseProperty\n attributeName, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n BOOLEANISH_STRING,\n false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n[\n 'autoReverse',\n 'externalResourcesRequired',\n 'focusable',\n 'preserveAlpha',\n].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n BOOLEANISH_STRING,\n false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are HTML boolean attributes.\n[\n 'allowFullScreen',\n 'async',\n // Note: there is a special case that prevents it from being written to the DOM\n // on the client side because the browsers are inconsistent. Instead we call focus().\n 'autoFocus',\n 'autoPlay',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'disablePictureInPicture',\n 'disableRemotePlayback',\n 'formNoValidate',\n 'hidden',\n 'loop',\n 'noModule',\n 'noValidate',\n 'open',\n 'playsInline',\n 'readOnly',\n 'required',\n 'reversed',\n 'scoped',\n 'seamless',\n // Microdata\n 'itemScope',\n].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n BOOLEAN,\n false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n[\n 'checked',\n // Note: `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`. We have special logic for handling this.\n 'multiple',\n 'muted',\n 'selected',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n BOOLEAN,\n true, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n[\n 'capture',\n 'download',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n OVERLOADED_BOOLEAN,\n false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are HTML attributes that must be positive numbers.\n[\n 'cols',\n 'rows',\n 'size',\n 'span',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n POSITIVE_NUMERIC,\n false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These are HTML attributes that must be numbers.\n['rowSpan', 'start'].forEach(name => {\n properties[name] = new PropertyInfoRecord(\n name,\n NUMERIC,\n false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\nconst CAMELIZE = /[\\-\\:]([a-z])/g;\nconst capitalize = token => token[1].toUpperCase();\n\n// This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n[\n 'accent-height',\n 'alignment-baseline',\n 'arabic-form',\n 'baseline-shift',\n 'cap-height',\n 'clip-path',\n 'clip-rule',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'dominant-baseline',\n 'enable-background',\n 'fill-opacity',\n 'fill-rule',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'glyph-name',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'horiz-adv-x',\n 'horiz-origin-x',\n 'image-rendering',\n 'letter-spacing',\n 'lighting-color',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'overline-position',\n 'overline-thickness',\n 'paint-order',\n 'panose-1',\n 'pointer-events',\n 'rendering-intent',\n 'shape-rendering',\n 'stop-color',\n 'stop-opacity',\n 'strikethrough-position',\n 'strikethrough-thickness',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'underline-position',\n 'underline-thickness',\n 'unicode-bidi',\n 'unicode-range',\n 'units-per-em',\n 'v-alphabetic',\n 'v-hanging',\n 'v-ideographic',\n 'v-mathematical',\n 'vector-effect',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'word-spacing',\n 'writing-mode',\n 'xmlns:xlink',\n 'x-height',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(attributeName => {\n const name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(\n name,\n STRING,\n false, // mustUseProperty\n attributeName,\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// String SVG attributes with the xlink namespace.\n[\n 'xlink:actuate',\n 'xlink:arcrole',\n 'xlink:role',\n 'xlink:show',\n 'xlink:title',\n 'xlink:type',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(attributeName => {\n const name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(\n name,\n STRING,\n false, // mustUseProperty\n attributeName,\n 'http://www.w3.org/1999/xlink',\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// String SVG attributes with the xml namespace.\n[\n 'xml:base',\n 'xml:lang',\n 'xml:space',\n\n // NOTE: if you add a camelCased prop to this list,\n // you'll need to set attributeName to name.toLowerCase()\n // instead in the assignment below.\n].forEach(attributeName => {\n const name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(\n name,\n STRING,\n false, // mustUseProperty\n attributeName,\n 'http://www.w3.org/XML/1998/namespace',\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n['tabIndex', 'crossOrigin'].forEach(attributeName => {\n properties[attributeName] = new PropertyInfoRecord(\n attributeName,\n STRING,\n false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false, // removeEmptyString\n );\n});\n\n// These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\nconst xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord(\n 'xlinkHref',\n STRING,\n false, // mustUseProperty\n 'xlink:href',\n 'http://www.w3.org/1999/xlink',\n true, // sanitizeURL\n false, // removeEmptyString\n);\n\n['src', 'href', 'action', 'formAction'].forEach(attributeName => {\n properties[attributeName] = new PropertyInfoRecord(\n attributeName,\n STRING,\n false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n true, // sanitizeURL\n true, // removeEmptyString\n );\n});\n\n// \nconst {\n CAMELCASE,\n SAME,\n possibleStandardNames: possibleStandardNamesOptimized\n} = require('../lib/possibleStandardNamesOptimized');\n\nconst ATTRIBUTE_NAME_START_CHAR =\n ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n\nconst ATTRIBUTE_NAME_CHAR =\n ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\n\n/**\n * Checks whether a property name is a custom attribute.\n *\n * @see https://github.com/facebook/react/blob/15-stable/src/renderers/dom/shared/HTMLDOMPropertyConfig.js#L23-L25\n *\n * @type {(attribute: string) => boolean}\n */\nconst isCustomAttribute =\n RegExp.prototype.test.bind(\n // eslint-disable-next-line no-misleading-character-class\n new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$')\n );\n\n/**\n * @type {Record<string, string>}\n */\nconst possibleStandardNames = Object.keys(\n possibleStandardNamesOptimized\n).reduce((accumulator, standardName) => {\n const propName = possibleStandardNamesOptimized[standardName];\n if (propName === SAME) {\n accumulator[standardName] = standardName;\n } else if (propName === CAMELCASE) {\n accumulator[standardName.toLowerCase()] = standardName;\n } else {\n accumulator[standardName] = propName;\n }\n return accumulator;\n}, {});\n\nexports.BOOLEAN = BOOLEAN;\nexports.BOOLEANISH_STRING = BOOLEANISH_STRING;\nexports.NUMERIC = NUMERIC;\nexports.OVERLOADED_BOOLEAN = OVERLOADED_BOOLEAN;\nexports.POSITIVE_NUMERIC = POSITIVE_NUMERIC;\nexports.RESERVED = RESERVED;\nexports.STRING = STRING;\nexports.getPropertyInfo = getPropertyInfo;\nexports.isCustomAttribute = isCustomAttribute;\nexports.possibleStandardNames = possibleStandardNames;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function _regeneratorKeys(e) {\n var n = Object(e),\n r = [];\n for (var t in n) r.unshift(t);\n return function e() {\n for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n return e.done = !0, e;\n };\n}\nmodule.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","var OverloadYield = require(\"./OverloadYield.js\");\nvar regenerator = require(\"./regenerator.js\");\nvar regeneratorAsync = require(\"./regeneratorAsync.js\");\nvar regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nvar regeneratorKeys = require(\"./regeneratorKeys.js\");\nvar regeneratorValues = require(\"./regeneratorValues.js\");\nfunction _regeneratorRuntime() {\n \"use strict\";\n\n var r = regenerator(),\n e = r.m(_regeneratorRuntime),\n t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n function n(r) {\n var e = \"function\" == typeof r && r.constructor;\n return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n }\n var o = {\n \"throw\": 1,\n \"return\": 2,\n \"break\": 3,\n \"continue\": 3\n };\n function a(r) {\n var e, t;\n return function (n) {\n e || (e = {\n stop: function stop() {\n return t(n.a, 2);\n },\n \"catch\": function _catch() {\n return n.v;\n },\n abrupt: function abrupt(r, e) {\n return t(n.a, o[r], e);\n },\n delegateYield: function delegateYield(r, o, a) {\n return e.resultName = o, t(n.d, regeneratorValues(r), a);\n },\n finish: function finish(r) {\n return t(n.f, r);\n }\n }, t = function t(r, _t, o) {\n n.p = e.prev, n.n = e.next;\n try {\n return r(_t, o);\n } finally {\n e.next = n.n;\n }\n }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n try {\n return r.call(this, e);\n } finally {\n n.p = e.prev, n.n = e.next;\n }\n };\n }\n return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return {\n wrap: function wrap(e, t, n, o) {\n return r.w(a(e), t, n, o && o.reverse());\n },\n isGeneratorFunction: n,\n mark: r.m,\n awrap: function awrap(r, e) {\n return new OverloadYield(r, e);\n },\n AsyncIterator: regeneratorAsyncIterator,\n async: function async(r, e, t, o, u) {\n return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n },\n keys: regeneratorKeys,\n values: regeneratorValues\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style, options) {\n var output = {};\n if (!style || typeof style !== 'string') {\n return output;\n }\n (0, style_to_object_1.default)(style, function (property, value) {\n // skip CSS comment\n if (property && value) {\n output[(0, utilities_1.camelCase)(property, options)] = value;\n }\n });\n return output;\n}\nStyleToJS.default = StyleToJS;\nmodule.exports = StyleToJS;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CARRIAGE_RETURN_PLACEHOLDER_REGEX = exports.CARRIAGE_RETURN_PLACEHOLDER = exports.CARRIAGE_RETURN_REGEX = exports.CARRIAGE_RETURN = exports.CASE_SENSITIVE_TAG_NAMES_MAP = exports.CASE_SENSITIVE_TAG_NAMES = void 0;\n/**\n * SVG elements are case-sensitive.\n *\n * @see https://developer.mozilla.org/docs/Web/SVG/Element#svg_elements_a_to_z\n */\nexports.CASE_SENSITIVE_TAG_NAMES = [\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n];\nexports.CASE_SENSITIVE_TAG_NAMES_MAP = exports.CASE_SENSITIVE_TAG_NAMES.reduce(function (accumulator, tagName) {\n accumulator[tagName.toLowerCase()] = tagName;\n return accumulator;\n}, {});\nexports.CARRIAGE_RETURN = '\\r';\nexports.CARRIAGE_RETURN_REGEX = new RegExp(exports.CARRIAGE_RETURN, 'g');\nexports.CARRIAGE_RETURN_PLACEHOLDER = \"__HTML_DOM_PARSER_CARRIAGE_RETURN_PLACEHOLDER_\".concat(Date.now(), \"__\");\nexports.CARRIAGE_RETURN_PLACEHOLDER_REGEX = new RegExp(exports.CARRIAGE_RETURN_PLACEHOLDER, 'g');\n//# sourceMappingURL=constants.js.map","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = domparser;\nvar utilities_1 = require(\"./utilities\");\n// constants\nvar HTML = 'html';\nvar HEAD = 'head';\nvar BODY = 'body';\nvar FIRST_TAG_REGEX = /<([a-zA-Z]+[0-9]?)/; // e.g., <h1>\n// match-all-characters in case of newlines (DOTALL)\nvar HEAD_TAG_REGEX = /<head[^]*>/i;\nvar BODY_TAG_REGEX = /<body[^]*>/i;\n// falls back to `parseFromString` if `createHTMLDocument` cannot be used\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar parseFromDocument = function (html, tagName) {\n /* istanbul ignore next */\n throw new Error('This browser does not support `document.implementation.createHTMLDocument`');\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar parseFromString = function (html, tagName) {\n /* istanbul ignore next */\n throw new Error('This browser does not support `DOMParser.prototype.parseFromString`');\n};\nvar DOMParser = typeof window === 'object' && window.DOMParser;\n/**\n * DOMParser (performance: slow).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMParser#Parsing_an_SVG_or_HTML_document\n */\nif (typeof DOMParser === 'function') {\n var domParser_1 = new DOMParser();\n var mimeType_1 = 'text/html';\n /**\n * Creates an HTML document using `DOMParser.parseFromString`.\n *\n * @param html - The HTML string.\n * @param tagName - The element to render the HTML (with 'body' as fallback).\n * @returns - Document.\n */\n parseFromString = function (html, tagName) {\n if (tagName) {\n /* istanbul ignore next */\n html = \"<\".concat(tagName, \">\").concat(html, \"</\").concat(tagName, \">\");\n }\n return domParser_1.parseFromString(html, mimeType_1);\n };\n parseFromDocument = parseFromString;\n}\n/**\n * DOMImplementation (performance: fair).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument\n */\nif (typeof document === 'object' && document.implementation) {\n var htmlDocument_1 = document.implementation.createHTMLDocument();\n /**\n * Use HTML document created by `document.implementation.createHTMLDocument`.\n *\n * @param html - The HTML string.\n * @param tagName - The element to render the HTML (with 'body' as fallback).\n * @returns - Document\n */\n parseFromDocument = function (html, tagName) {\n if (tagName) {\n var element = htmlDocument_1.documentElement.querySelector(tagName);\n if (element) {\n element.innerHTML = html;\n }\n return htmlDocument_1;\n }\n htmlDocument_1.documentElement.innerHTML = html;\n return htmlDocument_1;\n };\n}\n/**\n * Template (performance: fast).\n *\n * @see https://developer.mozilla.org/docs/Web/HTML/Element/template\n */\nvar template = typeof document === 'object' && document.createElement('template');\nvar parseFromTemplate;\nif (template && template.content) {\n /**\n * Uses a template element (content fragment) to parse HTML.\n *\n * @param html - HTML string.\n * @returns - Nodes.\n */\n parseFromTemplate = function (html) {\n template.innerHTML = html;\n return template.content.childNodes;\n };\n}\n/**\n * Parses HTML string to DOM nodes.\n *\n * @param html - HTML markup.\n * @returns - DOM nodes.\n */\nfunction domparser(html) {\n var _a, _b;\n // Escape special characters before parsing\n html = (0, utilities_1.escapeSpecialCharacters)(html);\n var match = html.match(FIRST_TAG_REGEX);\n var firstTagName = match && match[1] ? match[1].toLowerCase() : '';\n switch (firstTagName) {\n case HTML: {\n var doc = parseFromString(html);\n // the created document may come with filler head/body elements,\n // so make sure to remove them if they don't actually exist\n if (!HEAD_TAG_REGEX.test(html)) {\n var element = doc.querySelector(HEAD);\n (_a = element === null || element === void 0 ? void 0 : element.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(element);\n }\n if (!BODY_TAG_REGEX.test(html)) {\n var element = doc.querySelector(BODY);\n (_b = element === null || element === void 0 ? void 0 : element.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(element);\n }\n return doc.querySelectorAll(HTML);\n }\n case HEAD:\n case BODY: {\n var elements = parseFromDocument(html).querySelectorAll(firstTagName);\n // if there's a sibling element, then return both elements\n if (BODY_TAG_REGEX.test(html) && HEAD_TAG_REGEX.test(html)) {\n return elements[0].parentNode.childNodes;\n }\n return elements;\n }\n // low-level tag or text\n default: {\n if (parseFromTemplate) {\n return parseFromTemplate(html);\n }\n var element = parseFromDocument(html, BODY).querySelector(BODY);\n return element.childNodes;\n }\n }\n}\n//# sourceMappingURL=domparser.js.map","function _regeneratorDefine(e, r, n, t) {\n var i = Object.defineProperty;\n try {\n i({}, \"\", {});\n } catch (e) {\n i = 0;\n }\n module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n if (r) i ? i(e, r, {\n value: n,\n enumerable: !t,\n configurable: !t,\n writable: !t\n }) : e[r] = n;else {\n var o = function o(r, n) {\n _regeneratorDefine(e, r, function (e) {\n return this._invoke(r, n, e);\n });\n };\n o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2);\n }\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _regeneratorDefine(e, r, n, t);\n}\nmodule.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import axios from \"axios\";\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport { STATUS_CLOSED_CHAT, STATUS_BOT_CHAT, STATUS_SUB_SURVEY_SHOW, STATUS_SUB_USER_CLOSED_CHAT, STATUS_SUB_CONTACT_FORM } from \"../constants/chat-status\";\n\nwindow.lhcAxios = axios;\n\nlet syncStatus = {\n 'msg' : false,\n 'add_msg': false,\n 'add_msg_pending': [],\n 'status' : false,\n 'error_counter' : 0,\n 'auto_close_timeout': null\n};\n\nconst defaultHeaders = {headers : {'Content-Type': 'application/x-www-form-urlencoded'}};\n\nexport function closeWidget() {\n return function(dispatch) {\n dispatch({type: \"closeWidget\"});\n }\n}\n\nexport function abtractAction(eventData) {\n return function(dispatch) {\n dispatch(eventData);\n }\n}\n\nexport function hideInvitation(persistent, asConversion) {\n return function(dispatch, getState) {\n const state = getState();\n helperFunctions.sendMessageParent('closeWidget', [{'sender' : 'closeButton'}]);\n helperFunctions.sendMessageParent('cancelInvitation', [{'name' : state.chatwidget.getIn(['proactive','data','invitation_name'])}]);\n\n axios.post(window.lhcChat['base_url'] + \"chat/chatwidgetclosed/(vid)/\" + state.chatwidget.get('vid') + (asConversion === true ? '/(conversion)/true' : ''), null, defaultHeaders).then((response) => {\n if (persistent){\n dispatch({type: \"CANCEL_INVITATION\"});\n } else {\n dispatch({type: \"HIDE_INVITATION\"});\n }\n })\n .catch((err) => {\n console.log(err);\n })\n }\n}\n\nexport function minimizeWidget(forceClose) {\n return function(dispatch, getState) {\n const state = getState();\n if (state.chatwidget.getIn(['proactive','has']) === true) {\n hideInvitation()(dispatch, getState);\n } else {\n helperFunctions.sendMessageParent('closeWidget', [{'sender' : 'closeButton'}]);\n }\n if (forceClose && (window.lhcChat['mode'] == 'popup' || window.lhcChat['mode'] == 'embed')) {\n helperFunctions.removeSessionStorage('_chat');\n helperFunctions.removeSessionStorage('_reset_chat');\n window.close();\n }\n }\n}\n\nexport function cancelPresurvey(confirm) {\n return function(dispatch, getState) {\n const state = getState();\n\n let args = '';\n\n if (state.chatwidget.get('theme')) {\n args = args + '/(theme)/' + state.chatwidget.get('theme');\n }\n\n if (confirm === true) {\n args = args + '/(confirm)/true';\n }\n\n axios.post(window.lhcChat['base_url'] + state.chatwidget.getIn(['chat_ui','pre_survey_url']) + state.chatwidget.getIn(['chatData','id']) + '/' + state.chatwidget.getIn(['chatData','hash']) + args, null, defaultHeaders).then((response) => {\n if (confirm === false || response.data.confirmed) {\n dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'pre_survey_done', 'val': 2}});\n if (!state.chatwidget.hasIn(['chat_ui','survey_id'])) {\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n }\n }\n })\n .catch((err) => {\n console.log(err);\n })\n }\n}\n\nexport function endChat(obj, action) {\n action = action || \"t\";\n return function(dispatch, getState) {\n clearTimeout(syncStatus.auto_close_timeout);\n axios.post(window.lhcChat['base_url'] + \"chat/chatwidgetclosed/(eclose)/\"+action+\"/(hash)/\" + obj['chat']['id'] +'_'+ obj['chat']['hash'] + '/(vid)/' + obj['vid'] + '/(close)/' + (!obj.noClose ? '1' : '0'), null, defaultHeaders)\n .then((response) => {\n if (!obj.noClose) {\n if (window.lhcChat['mode'] == 'popup') {\n helperFunctions.removeSessionStorage('_chat');\n helperFunctions.removeSessionStorage('_reset_chat');\n // We try to close window at first place\n window.close();\n\n // If it's direct chat window we have to show start chat form\n helperFunctions.eventEmitter.emitEvent('endedChat', [{'chat_id':obj['chat']['id'], 'hash': obj['chat']['hash']}]);\n } else {\n helperFunctions.sendMessageParent('endChat', [{show_start: obj['show_start'], 'sender' : 'endButton'}]);\n }\n } else {\n dispatch({type: \"INIT_CLOSE\", data: obj})\n }\n })\n .catch((err) => {\n console.log(err);\n })\n }\n}\n\nexport function setSiteAccess(payload) {\n return axios.post(window.lhcChat['base_url'] + \"widgetrestapi/setsiteaccess/\", JSON.stringify(payload), defaultHeaders);\n}\n\nexport function getProducts(obj) {\n return function(dispatch) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/getproducts/\" + obj['dep_id'], null, defaultHeaders)\n .then((response) => {\n dispatch({type: \"INIT_PRODUCTS\", data: response.data})\n })\n .catch((err) => {\n console.log(err);\n })\n }\n}\n\nexport function voteAction(obj) {\n return axios.post(window.lhcChat['base_url'] + \"chat/voteaction/\" + obj.id + '/' + obj.hash + '/' + obj.type, null, defaultHeaders)\n}\n\nexport function updateMessageData(obj, payload) {\n return axios.post(window.lhcChat['base_url'] + \"chat/updatemessagedata/\" + obj.id + '/' + obj.hash + '/' + obj.msg_id, JSON.stringify(payload), defaultHeaders)\n}\n\nexport function transferToHumanAction(obj) {\n return axios.post(window.lhcChat['base_url'] + \"chat/transfertohuman/\" + obj.id + '/' + obj.hash, null, defaultHeaders)\n}\n\nexport function initProactive(data) {\n return function(dispatch, getState) {\n const state = getState();\n\n let payload = {\n 'invitation' : data.invitation,\n 'vid_id' : data.vid_id,\n 'uts' : (new Date()).getTime()\n };\n\n if (state.chatwidget.get('theme')) {\n payload['theme'] = state.chatwidget.get('theme');\n }\n\n if (state.chatwidget.get('vid')) {\n payload['vid'] = state.chatwidget.get('vid');\n }\n\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/getinvitation\", JSON.stringify(payload), defaultHeaders).then((response) => {\n if (response.data.chat_id && response.data.chat_hash) {\n dispatch({type: \"ONLINE_SUBMITTED\", data: {\n success : true,\n chatLiveData : {\n message_id_first : response.data.message_id_first\n },\n chatData : {\n id : response.data.chat_id,\n hash : response.data.chat_hash\n }\n }});\n showMessageSnippet({'id' : response.data.chat_id, 'hash' : response.data.chat_hash})(dispatch, getState);\n } else {\n dispatch({type: \"PROACTIVE\", data: response.data})\n }\n });\n }\n}\n\nexport function showMessageSnippet(obj) {\n return function(dispatch, getState) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/getmessagesnippet\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n helperFunctions.sendMessageParent('msgSnippet',[response.data]);\n const state = getState();\n helperFunctions.emitEvent('play_sound', [{'type' : 'new_chat','sound_on' : (state.chatwidget.getIn(['usersettings','soundOn']) === true), 'widget_open' : false}]);\n })\n .catch((err) => {\n })\n }\n}\n\nexport function storeSubscriber(payload) {\n return function(dispatch, getState) {\n const state = getState();\n\n let args = '/(action)/sub';\n\n if (state.chatwidget.hasIn(['chatData','id']) && state.chatwidget.hasIn(['chatData','hash'])) {\n args = args + '/(hash)/' + state.chatwidget.getIn(['chatData','id']) + '_' + state.chatwidget.getIn(['chatData','hash']);\n }\n\n if (state.chatwidget.get('theme')) {\n args = args + '/(theme)/' + state.chatwidget.get('theme');\n }\n\n if (state.chatwidget.get('vid')) {\n args = args + '/(vid)/' + state.chatwidget.get('vid');\n }\n\n axios.post(window.lhcChat['base_url'] + \"notifications/subscribe\" +args, JSON.stringify({'data' : payload}), defaultHeaders)\n .then((response) => {\n if (state.chatwidget.hasIn(['chatData','id']) && state.chatwidget.hasIn(['chatData','hash'])) {\n dispatch(fetchMessages({\n 'chat_id': state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'theme' : state.chatwidget.get('theme'),\n 'active_widget' : true\n }));\n }\n })\n }\n}\n\nexport function updateTriggerClicked(typeParams, params) {\n return function(dispatch, getState) {\n const state = getState();\n return axios.post(window.lhcChat['base_url'] + \"genericbot/\"+(typeParams.mainType ? typeParams.mainType : \"buttonclicked\")+\"/\" + state.chatwidget.getIn(['chatData','id']) + '/' + state.chatwidget.getIn(['chatData','hash']) + typeParams.type, JSON.stringify(params), defaultHeaders)\n }\n}\n\nexport function subscribeNotifications(params) {\n return function(dispatch, getState) {\n const state = getState();\n helperFunctions.sendMessageParent('subscribeEvent', [{'pk' : state.chatwidget.getIn(['chat_ui','notifications_pk'])}]);\n }\n}\n\nexport function initOfflineForm(obj) {\n return function(dispatch) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/onlinesettings\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n dispatch({type: \"OFFLINE_FIELDS_UPDATED\", data: response.data})\n helperFunctions.sendMessageParent('widgetRendered',[]);\n })\n .catch((err) => {\n dispatch({type: \"OFFLINE_FIELDS_REJECTED\", data: err})\n console.error(err);\n })\n }\n}\n\nexport function initOnlineForm(obj) {\n return function(dispatch) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/onlinesettings\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n if (response.data.paid.continue && response.data.paid.continue === true) {\n dispatch({type: \"ONLINE_SUBMITTED\", data: {\n success : true,\n chatLiveData : {\n message_id_first : 0\n },\n chatData : {\n id : response.data.paid.id,\n hash : response.data.paid.hash\n }\n }});\n } else {\n dispatch({type: \"ONLINE_FIELDS_UPDATED\", data: response.data})\n }\n helperFunctions.sendMessageParent('widgetRendered',[]);\n })\n .catch((err) => {\n dispatch({type: \"ONLINE_FIELDS_REJECTED\", data: err})\n console.error(err);\n })\n }\n}\n\nexport function getCaptcha(dispatch, form, obj, getState) {\n var date = new Date();\n var timestamp = Math.round(date.getTime()/1000);\n axios.post(window.lhcChat['base_url'] + \"captcha/captchastring/fake/\" + timestamp, null, defaultHeaders)\n .then((response) => {\n dispatch({type: \"captcha\", data: {'hash' : response.data.result, 'ts' : timestamp}});\n\n // Update submit object instantly\n if (obj instanceof FormData) {\n // Get the current document content\n const currentDoc = JSON.parse(obj.get('document'));\n\n // Modify the document content\n currentDoc.fields['captcha_' + response.data.result] = timestamp\n currentDoc.fields['tscaptcha' ] = timestamp\n\n // We auto resubmit only one time\n if (!currentDoc.fields['tscaptcha_resubmit']) {\n currentDoc.fields['tscaptcha_resubmit'] = 1;\n // Put the modified content back\n obj.set('document', JSON.stringify(currentDoc));\n form(obj)(dispatch, getState);\n } else {\n delete currentDoc.fields['tscaptcha_resubmit'];\n // Put the modified content back\n obj.set('document', JSON.stringify(currentDoc));\n }\n\n } else {\n obj.fields['captcha_' + response.data.result] = timestamp;\n obj.fields['tscaptcha'] = timestamp;\n\n // We auto resubmit only one time\n if (!obj.fields['tscaptcha_resubmit']) {\n obj.fields['tscaptcha_resubmit'] = 1;\n form(obj)(dispatch, getState);\n } else {\n delete obj.fields['tscaptcha_resubmit'];\n }\n }\n\n\n });\n}\n\nexport function submitOnlineForm(obj) {\n return function(dispatch, getState) {\n\n const state = getState();\n\n if (state.chatwidget.get('processStatus') != 0) {\n return;\n }\n\n dispatch({type: \"ONLINE_SUBMITTING\"});\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/submitonline\", JSON.stringify(obj), {withCredentials: true, headers : {'Content-Type': 'application/x-www-form-urlencoded'}})\n .then((response) => {\n\n // If validation contains invalid captcha update it instantly\n if (response.data.success === false && response.data.errors.captcha) {\n dispatch({type: \"processStatus\", data: 0});\n getCaptcha(dispatch, submitOnlineForm, obj, getState);\n if (!obj.fields['tscaptcha_resubmit']) {\n return;\n }\n }\n\n dispatch({type: \"ONLINE_SUBMITTED\", data: response.data});\n\n if (response.data.t) {\n helperFunctions.sendMessageParent('botTrigger',[{'trigger' : response.data.t}]);\n }\n\n })\n .catch((err) => {\n dispatch({type: \"ONLINE_SUBMITT_REJECTED\", data: err})\n })\n }\n}\n\nexport function submitOfflineForm(obj) {\n return function(dispatch, getState) {\n dispatch({type: \"OFFLINE_SUBMITTING\"});\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/submitoffline\", (obj instanceof FormData ? obj : JSON.stringify(obj)) , {withCredentials: true, headers: { 'Content-Type': obj instanceof FormData ? 'multipart/form-data' : 'application/x-www-form-urlencoded'}})\n .then((response) => {\n // If validation contains invalid captcha update it instantly\n if (response.data.success === false && response.data.errors.captcha) {\n getCaptcha(dispatch, submitOfflineForm, obj, getState);\n if (!obj.fields['tscaptcha_resubmit']) {\n return;\n }\n }\n dispatch({type: \"OFFLINE_SUBMITTED\", data: response.data})\n })\n .catch((err) => {\n dispatch({type: \"OFFLINE_SUBMITT_REJECTED\", data: err})\n })\n }\n}\n\nexport function updateUISettings(obj) {\n return function(dispatch, getState) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/uisettings\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n dispatch({type: \"REFRESH_UI_COMPLETED\", data: response.data})\n })\n .catch((err) => {\n console.log(err);\n dispatch({type: \"REFRESH_UI_REJECTED\", data: err})\n })\n }\n}\n\nexport function initChatUI(obj) {\n\n // We should always sync chat status\n // As this value can be true if visitor starts another chat just\n syncStatus.status = false;\n\n return function(dispatch, getState) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/initchat\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n dispatch({type: \"INIT_CHAT_SUBMITTED\", data: response.data})\n if (response.data.init_calls) {\n response.data.init_calls.forEach((callExtension) => {\n if (callExtension.extension === 'nodeJSChat') {\n import('../extensions/nodejs/nodeJSChat').then((module) => {\n module.nodeJSChat.bootstrap(callExtension.params, dispatch, getState);\n });\n\n } else if (callExtension.extension === 'dummy_extensions') {\n // Import your extension here\n }\n });\n }\n helperFunctions.sendMessageParent('widgetRendered',[]);\n })\n .catch((err) => {\n console.log(err);\n dispatch({type: \"INIT_CHAT_REJECTED\", data: err})\n })\n }\n}\n\nfunction processResponseCheckStatus(response, getState, dispatch) {\n if (response.op) {\n\n response.op.forEach((op) => {\n var action = op.split(':')[0];\n if (action == 'lhc_chat_redirect') {\n helperFunctions.sendMessageParent('location',[op.split(':')[1].replace(new RegExp('__SPLIT__','g'),':')]);\n } else if (action == 'lhc_screenshot') {\n\n const state = getState();\n\n var append = '';\n\n if ( state.chatwidget.hasIn(['chatData','id'])) {\n append = append + '/(hash)/' + state.chatwidget.getIn(['chatData','id']) + '_' + state.chatwidget.getIn(['chatData','hash']);\n }\n\n if ( state.chatwidget.get('vid')) {\n append = append + '/(vid)/' + state.chatwidget.get('vid');\n }\n\n helperFunctions.sendMessageParent('screenshot',[window.lhcChat['base_url'] + 'file/storescreenshot' + append]);\n } else if (action == 'lhc_cobrowse') {\n helperFunctions.sendMessageParent('screenshare',[]);\n } else if (action == 'lhc_cobrowse_cmd') {\n helperFunctions.sendMessageParent('screenshareCommand',[op]);\n } else if (action == 'lhc_ui_refresh') {\n const state = getState();\n updateUISettings({'id' : state.chatwidget.getIn(['chatData','id']), 'hash' : state.chatwidget.getIn(['chatData','hash'])})(dispatch, getState);\n } else if (action.indexOf('lhinst.updateMessageRow') !== -1) {\n const state = getState();\n updateMessage({'msg_id' : action.replace('lhinst.updateMessageRow(','').replace(')','').replace(';',''), 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']), 'mode' : state.chatwidget.get('mode'), 'theme' : state.chatwidget.get('theme'), 'id' : state.chatwidget.getIn(['chatData','id']), 'hash' : state.chatwidget.getIn(['chatData','hash'])})(dispatch, getState);\n }\n });\n }\n}\n\nexport function updateMessage(obj) {\n return function(dispatch, getState) {\n const state = getState();\n\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/fetchmessage\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n\n // Get present className of the row\n let elm = document.getElementById('msg-'+response.data.id);\n let classNameRow = null;\n if (elm !== null) {\n classNameRow = elm.className;\n }\n\n // Now we can update as we know a class\n dispatch({type: \"FETCH_MESSAGE_SUBMITTED\", data: response.data});\n\n // Reselect updated row\n elm = document.getElementById('msg-'+response.data.id);\n\n // Update className\n if (elm && classNameRow !== null) {\n elm.className = classNameRow;\n }\n\n // Just adjust a scroll if it's required or we are updating the last message\n // Scenario with reactions being added\n if (!obj.no_scroll || (obj.lmgsid && obj.msg_id == obj.lmgsid)) {\n let elmScroll = document.getElementById('messages-scroll');\n if (elmScroll !== null) {\n elmScroll.scrollTop = elmScroll.scrollHeight + 1000;\n // Sometimes scroll does not happen because UI is not refreshed yet and content is not updated\n setTimeout(() => {\n elmScroll !== null && (elmScroll.scrollTop = elmScroll.scrollHeight + 1000);\n },150);\n }\n }\n })\n .catch((err) => {\n console.log(err);\n })\n }\n}\n\nexport function parseScript(domNode, inst, obj, dispatch, getState) {\n const attr = domNode.attribs || domNode;\n\n if (attr['data-bot-action'] == 'lhinst.disableVisitorEditor') {\n inst.disableEditor = true;\n } else if (attr['data-bot-action'] == 'lhinst.setDelay') {\n inst.delayData.push(JSON.parse(attr['data-bot-args']));\n } else if (attr['data-bot-action'] == 'button-click') {\n dispatch(updateTriggerClicked({'type' : '/(type)/'+attr['data-action-type'] + (obj.theme ? '/(theme)/' + obj.theme : '')}, {\n \"payload-id\": (typeof attr['data-identifier'] === 'undefined' ? null : attr['data-identifier']),\n payload: attr['data-payload'],\n id : attr['data-id'],\n processed : (typeof attr['data-keep'] === 'undefined')})).then((data) => {\n if (data.data.t) {\n helperFunctions.sendMessageParent('botTrigger', [{'trigger' : data.data.t}]);\n }\n if (data.data.update_message) {\n const state = getState();\n updateMessage({'no_scroll' : true, 'msg_id' : attr['data-id'], 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']), 'mode' : state.chatwidget.get('mode'), 'theme' : state.chatwidget.get('theme'), 'id' : state.chatwidget.getIn(['chatData','id']), 'hash' : state.chatwidget.getIn(['chatData','hash'])})(dispatch, getState);\n } else {\n fetchMessages({'theme' : obj.theme, 'chat_id' : obj.id, 'lmgsid' : obj.lmgsid, 'hash' : obj.hash})(dispatch, getState);\n checkChatStatus({\n 'chat_id': obj.id,\n 'hash' : obj.hash,\n 'theme' : obj.theme,\n 'mode' : obj.mode\n })\n }\n });\n\n } else if (attr['data-bot-action'] == 'execute-js') {\n if (attr['data-bot-extension']) {\n var args = {};\n if (typeof attr['data-bot-args'] !== 'undefined') {\n args = JSON.parse(attr['data-bot-args']);\n }\n helperFunctions.emitEvent('extensionExecute',[attr['data-bot-extension'],[args]]);\n } else if (attr['data-bot-emit']) {\n var args = {};\n if (typeof attr['data-bot-args'] !== 'undefined') {\n args = JSON.parse(attr['data-bot-args']);\n }\n if (attr['data-bot-emit-parent']) {\n if (attr['data-bot-emit'] == 'minWidget') {\n inst.props.dispatch(minimizeWidget());\n } else {\n helperFunctions.sendMessageParent(attr['data-bot-emit'],[args]);\n }\n } else {\n helperFunctions.emitEvent(attr['data-bot-emit'],[args]);\n }\n } else if (attr['data-bot-event']) {\n inst.props[attr['data-bot-event']]();\n } else {\n if (attr.src) {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src', attr.src);\n th.appendChild(s);\n } else if (typeof domNode.children[0] !== 'undefined' && typeof domNode.children[0]['data'] !== 'undefined') {\n eval(domNode.children[0]['data']);\n }\n }\n }\n}\n\nfunction isNetworkError(err) {\n return !!err.isAxiosError && !err.response;\n}\n\nexport function fetchMessages(obj) {\n return function(dispatch, getState) {\n\n if (syncStatus.msg == true || syncStatus.add_msg == true) {\n return;\n }\n\n syncStatus.msg = true;\n\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/fetchmessages\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n\n try {\n dispatch({type: \"FETCH_MESSAGES_SUBMITTED\", data: response.data});\n\n processResponseCheckStatus(response.data, getState, dispatch);\n\n helperFunctions.emitEvent('chat.fetch_messages',[response.data, dispatch, getState]);\n\n if (response.data.cs || (response.data.closed && response.data.closed === true)) {\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/checkchatstatus\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n if (response.data.deleted) {\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n clearTimeout(syncStatus.auto_close_timeout);\n } else {\n dispatch({type: \"CHECK_CHAT_STATUS_FINISHED\", data: response.data});\n helperFunctions.emitEvent('chat.check_status',[response.data, dispatch, getState]);\n }\n if (response.data.closed && response.data.closed === true && !response.data.deleted) {\n setAutoClose(getState);\n }\n })\n .catch((err) => {\n dispatch({type: \"CHECK_CHAT_STATUS_REJECTED\", data: err})\n })\n }\n\n } catch (e) {\n throw e;\n } finally {\n syncStatus.msg = false;\n }\n\n })\n .catch((err) => {\n\n if (isNetworkError(err)) {\n dispatch({type: \"NO_CONNECTION\", data: true});\n }\n\n syncStatus.msg = false;\n })\n }\n}\n\nexport function checkChatStatus(obj) {\n return function(dispatch, getState) {\n\n if (syncStatus.status == true) {\n return;\n }\n\n syncStatus.status = true;\n\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/checkchatstatus\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n if (response.data.deleted) {\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n clearTimeout(syncStatus.auto_close_timeout);\n } else {\n syncStatus.status = false;\n dispatch({type: \"CHECK_CHAT_STATUS_FINISHED\", data: response.data});\n helperFunctions.emitEvent('chat.check_status',[response.data, dispatch, getState]);\n }\n if (response.data.closed && response.data.closed === true && !response.data.deleted) {\n setAutoClose(getState);\n }\n })\n .catch((err) => {\n syncStatus.status = false;\n })\n }\n}\n\nfunction setAutoClose(getState) {\n const state = getState();\n if (state.chatwidget.hasIn(['chat_ui','open_timeout'])) {\n clearTimeout(syncStatus.auto_close_timeout);\n syncStatus.auto_close_timeout = setTimeout(function(){\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n clearTimeout(syncStatus.auto_close_timeout);\n },state.chatwidget.getIn(['chat_ui','open_timeout']) * 1000);\n }\n}\n\nexport function pageUnload() {\n return function(dispatch, getState) {\n const state = getState();\n\n let surveyMode = false\n let surveyByVisitor = (state.chatwidget.hasIn(['chatLiveData','status_sub']) && (state.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_CONTACT_FORM || state.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_SURVEY_SHOW || (state.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_USER_CLOSED_CHAT && (state.chatwidget.getIn(['chatLiveData','uid']) > 0 || state.chatwidget.getIn(['chatLiveData','status']) === STATUS_BOT_CHAT))));\n let surveyByOperator = (state.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT && state.chatwidget.getIn(['chatLiveData','uid']) > 0);\n\n if ((surveyByVisitor == true || surveyByOperator) && state.chatwidget.hasIn(['chat_ui','survey_id'])) {\n // If survey button is required and we have not went to survey yet\n if ((!state.chatwidget.hasIn(['chat_ui','survey_button']) || state.chatwidget.getIn(['chat_ui_state','show_survey']) === 1) || surveyByVisitor == true) {\n surveyMode = true;\n }\n }\n\n /**\n * Unload always if we have this options in theme and chat is in survey mode on mobile or is unloading in general desktop application\n * */\n if (state.chatwidget.hasIn(['chat_ui','close_on_unload']) && state.chatwidget.get('mode') == 'embed') {\n if (state.chatwidget.get('isMobile') === false || surveyMode === true) {\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n }\n }\n\n // If popoup is closed\n if (state.chatwidget.get('mode') == 'popup' && surveyMode == true) {\n helperFunctions.sendMessageParent('endChat',[{'sender' : 'endButton'}]);\n }\n\n if (state.chatwidget.hasIn(['chatData','id']) && state.chatwidget.hasIn(['chatData','hash'])) {\n axios.post(window.lhcChat['base_url'] + \"chat/userclosechat/\" + state.chatwidget.getIn(['chatData','id']) + '/' + state.chatwidget.getIn(['chatData','hash']), null, defaultHeaders);\n } else if (state.chatwidget.getIn(['proactive','has']) === true && window.lhcChat['mode'] == 'popup' && window.opener) {\n hideInvitation()(dispatch, getState);\n }\n }\n}\n\nfunction checkErrorCounter() {\n if (syncStatus.error_counter == 2) {\n // Restart widget on second error\n helperFunctions.sendMessageParent('reloadWidget',[]);\n }\n}\n\nexport function addMessage(obj, ignoreAdd) {\n return function(dispatch, getState) {\n\n if (!ignoreAdd) {\n dispatch({type: \"ADD_MSG_TO_STORE\", data: obj.msg});\n }\n\n if (syncStatus.add_msg == true) {\n syncStatus.add_msg_pending.push(obj);\n return;\n }\n\n syncStatus.add_msg = true;\n\n try {\n helperFunctions.eventEmitter.emitEvent('messageSend', [{'chat_id':obj.id, 'hash': obj.hash, msg: obj.msg}]);\n } catch (error) {\n helperFunctions.logJSError({\n 'stack' : JSON.stringify(JSON.stringify(error))\n });\n }\n\n axios.post(window.lhcChat['base_url'] + \"widgetrestapi/addmsguser\", JSON.stringify(obj), defaultHeaders)\n .then((response) => {\n try {\n // Update error state if it changed\n if (response.data.error || getState().chatwidget.getIn(['chatLiveData','error'])) {\n dispatch({type: \"ADD_MESSAGES_SUBMITTED\", data: {r: response.data.r, msg: obj.msg}});\n }\n\n syncStatus.add_msg = false;\n\n fetchMessages({'active_widget': true, 'theme' : obj.theme, 'chat_id' : obj.id, 'lmgsid' : getState().chatwidget.getIn(['chatLiveData','lmsgid']), 'hash' : obj.hash})(dispatch, getState);\n\n if (response.data.t) {\n helperFunctions.sendMessageParent('botTrigger',[{'trigger' : response.data.t}]);\n }\n\n if (typeof response.data.r === 'undefined' || (response.data.error === true && response.data.system === true)) {\n\n syncStatus.error_counter++;\n\n // Log error only if it happens two times in a row\n if (syncStatus.error_counter == 2) {\n helperFunctions.logJSError({\n 'stack' : JSON.stringify(JSON.stringify(response) + \"\\nRD:\"+JSON.stringify(response.data) +\"\\nRH:\"+ JSON.stringify(response.headers) +\"\\nRS:\"+ JSON.stringify(response.status))\n });\n\n checkErrorCounter();\n }\n\n helperFunctions.eventEmitter.emitEvent('messageSendError', [{'chat_id':obj.id, 'hash': obj.hash, msg: JSON.stringify(response.data)}]);\n } else {\n syncStatus.error_counter = 0;\n }\n } catch (e) {\n throw e;\n } finally {\n syncStatus.add_msg = false;\n // There is pending message to be added\n if (syncStatus.add_msg_pending.length > 0) {\n addMessage(syncStatus.add_msg_pending.shift(), true)(dispatch, getState);\n }\n }\n })\n .catch((error) => {\n if (isNetworkError(error)) {\n dispatch({type: \"ADD_MESSAGES_SUBMITTED\", data: {r: \"SEND_CONNECTION\", \"msg\" : obj.msg}});\n dispatch({type: \"NO_CONNECTION\", data: true});\n } else {\n syncStatus.error_counter++;\n\n var stack = null;\n\n // Error\n if (error.response) {\n stack = JSON.stringify(JSON.stringify(error) + \"\\nRD:\"+JSON.stringify(error.response.data) +\"\\nRH:\"+ JSON.stringify(error.response.headers) +\"\\nRS:\"+ JSON.stringify(error.response.status));\n } else if (error.request) {\n stack = JSON.stringify(JSON.stringify(error));\n } else {\n stack = JSON.stringify(JSON.stringify(error));\n }\n\n // Log error only if it happens two times in a row\n if (syncStatus.error_counter == 2) {\n\n helperFunctions.logJSError({\n 'stack': stack\n });\n\n helperFunctions.eventEmitter.emitEvent('messageSendError', [{'chat_id':obj.id, 'hash': obj.hash, msg: stack}]);\n\n checkErrorCounter();\n } else {\n\n dispatch({type: \"ADD_MESSAGES_SUBMITTED\", data: {r: \"SEND_FAILED\", \"msg\" : obj.msg}});\n\n syncStatus.add_msg = false;\n\n // Try to send message again\n addMessage(obj, true)(dispatch, getState);\n }\n }\n\n syncStatus.add_msg = false;\n })\n }\n}\n\nexport function userTyping(status, msg) {\n return function(dispatch, getState) {\n const state = getState();\n\n if (status === 'true') {\n helperFunctions.eventEmitter.emitEvent('visitorTyping', [{'chat_id':state.chatwidget.getIn(['chatData','id']), 'hash': state.chatwidget.getIn(['chatData','hash']),'status': true, msg: msg}]);\n } else {\n helperFunctions.eventEmitter.emitEvent('visitorTyping', [{'chat_id':state.chatwidget.getIn(['chatData','id']), 'hash': state.chatwidget.getIn(['chatData','hash']),'status': false}]);\n }\n\n if (!state.chatwidget.get('overrides').contains('typing')) {\n axios.post(window.lhcChat['base_url'] + \"chat/usertyping/\" + state.chatwidget.getIn(['chatData','id']) + '/' + state.chatwidget.getIn(['chatData','hash']) + '/' + status, JSON.stringify({'msg' : msg}), defaultHeaders)\n .then((response) => {\n }).catch((err) => {\n console.log(err);\n });\n }\n }\n}\n\nexport function removeFilePreview(obj) {\n return function(dispatch, getState) {\n const state = getState();\n \n return axios.post(window.lhcChat['base_url'] + \"file/removepreview\", JSON.stringify({\n 'file_id': obj.file_id,\n 'security_hash': obj.security_hash,\n 'chat_id': state.chatwidget.getIn(['chatData','id']),\n 'hash': state.chatwidget.getIn(['chatData','hash'])\n }), defaultHeaders)\n .then((response) => {\n // File successfully removed from server\n return response.data;\n })\n .catch((err) => {\n console.log('Error removing file preview:', err);\n throw err;\n });\n }\n}\n\nexport function submitInlineSurvey(obj) {\n return axios.post(window.lhcChat['base_url'] + \"survey/fillinline\", JSON.stringify(obj), defaultHeaders);\n}","import React, { PureComponent } from 'react';\n\nclass ChatAbort extends PureComponent {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return <React.Fragment>\n <div className=\"fade modal-backdrop show\"></div>\n <div role=\"dialog\" id=\"dialog-content\" aria-modal=\"true\" className=\"fade modal show d-block p-2\" tabIndex=\"-1\">\n <div className={\"modal-content p-2 \"+(this.props.full_height ? 'h-100' : '')}>\n\n {this.props.as_html && <div className={this.props.full_height ? 'h-100' : ''} dangerouslySetInnerHTML={{__html:this.props.text}}></div>}\n {!this.props.as_html && <p>{this.props.text}</p>}\n\n <div className=\"modal-footer\">\n <button className=\"btn btn-secondary btn-sm\" onClick={this.props.close} type=\"button\">{this.props.closeText}</button>\n </div>\n </div>\n </div>\n </React.Fragment>;\n }\n}\n\nexport default ChatAbort;\n","var regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nfunction _regeneratorAsync(n, e, r, t, o) {\n var a = regeneratorAsyncGen(n, e, r, t, o);\n return a.next().then(function (n) {\n return n.done ? n.value : a.next();\n });\n}\nmodule.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// An attribute in which the DOM/SVG standard name is the same as the React prop name (e.g., 'accept').\nvar SAME = 0;\nexports.SAME = SAME;\n\n// An attribute in which the React prop name is the camelcased version of the DOM/SVG standard name (e.g., 'acceptCharset').\nvar CAMELCASE = 1;\nexports.CAMELCASE = CAMELCASE;\n\nexports.possibleStandardNames = {\n accept: 0,\n acceptCharset: 1,\n 'accept-charset': 'acceptCharset',\n accessKey: 1,\n action: 0,\n allowFullScreen: 1,\n alt: 0,\n as: 0,\n async: 0,\n autoCapitalize: 1,\n autoComplete: 1,\n autoCorrect: 1,\n autoFocus: 1,\n autoPlay: 1,\n autoSave: 1,\n capture: 0,\n cellPadding: 1,\n cellSpacing: 1,\n challenge: 0,\n charSet: 1,\n checked: 0,\n children: 0,\n cite: 0,\n class: 'className',\n classID: 1,\n className: 1,\n cols: 0,\n colSpan: 1,\n content: 0,\n contentEditable: 1,\n contextMenu: 1,\n controls: 0,\n controlsList: 1,\n coords: 0,\n crossOrigin: 1,\n dangerouslySetInnerHTML: 1,\n data: 0,\n dateTime: 1,\n default: 0,\n defaultChecked: 1,\n defaultValue: 1,\n defer: 0,\n dir: 0,\n disabled: 0,\n disablePictureInPicture: 1,\n disableRemotePlayback: 1,\n download: 0,\n draggable: 0,\n encType: 1,\n enterKeyHint: 1,\n for: 'htmlFor',\n form: 0,\n formMethod: 1,\n formAction: 1,\n formEncType: 1,\n formNoValidate: 1,\n formTarget: 1,\n frameBorder: 1,\n headers: 0,\n height: 0,\n hidden: 0,\n high: 0,\n href: 0,\n hrefLang: 1,\n htmlFor: 1,\n httpEquiv: 1,\n 'http-equiv': 'httpEquiv',\n icon: 0,\n id: 0,\n innerHTML: 1,\n inputMode: 1,\n integrity: 0,\n is: 0,\n itemID: 1,\n itemProp: 1,\n itemRef: 1,\n itemScope: 1,\n itemType: 1,\n keyParams: 1,\n keyType: 1,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: 0,\n low: 0,\n manifest: 0,\n marginWidth: 1,\n marginHeight: 1,\n max: 0,\n maxLength: 1,\n media: 0,\n mediaGroup: 1,\n method: 0,\n min: 0,\n minLength: 1,\n multiple: 0,\n muted: 0,\n name: 0,\n noModule: 1,\n nonce: 0,\n noValidate: 1,\n open: 0,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: 1,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 1,\n readOnly: 1,\n referrerPolicy: 1,\n rel: 0,\n required: 0,\n reversed: 0,\n role: 0,\n rows: 0,\n rowSpan: 1,\n sandbox: 0,\n scope: 0,\n scoped: 0,\n scrolling: 0,\n seamless: 0,\n selected: 0,\n shape: 0,\n size: 0,\n sizes: 0,\n span: 0,\n spellCheck: 1,\n src: 0,\n srcDoc: 1,\n srcLang: 1,\n srcSet: 1,\n start: 0,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 1,\n target: 0,\n title: 0,\n type: 0,\n useMap: 1,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n about: 0,\n accentHeight: 1,\n 'accent-height': 'accentHeight',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 1,\n 'alignment-baseline': 'alignmentBaseline',\n allowReorder: 1,\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 1,\n 'arabic-form': 'arabicForm',\n ascent: 0,\n attributeName: 1,\n attributeType: 1,\n autoReverse: 1,\n azimuth: 0,\n baseFrequency: 1,\n baselineShift: 1,\n 'baseline-shift': 'baselineShift',\n baseProfile: 1,\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 1,\n capHeight: 1,\n 'cap-height': 'capHeight',\n clip: 0,\n clipPath: 1,\n 'clip-path': 'clipPath',\n clipPathUnits: 1,\n clipRule: 1,\n 'clip-rule': 'clipRule',\n color: 0,\n colorInterpolation: 1,\n 'color-interpolation': 'colorInterpolation',\n colorInterpolationFilters: 1,\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorProfile: 1,\n 'color-profile': 'colorProfile',\n colorRendering: 1,\n 'color-rendering': 'colorRendering',\n contentScriptType: 1,\n contentStyleType: 1,\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n datatype: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 1,\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 1,\n 'dominant-baseline': 'dominantBaseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 1,\n elevation: 0,\n enableBackground: 1,\n 'enable-background': 'enableBackground',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 1,\n fill: 0,\n fillOpacity: 1,\n 'fill-opacity': 'fillOpacity',\n fillRule: 1,\n 'fill-rule': 'fillRule',\n filter: 0,\n filterRes: 1,\n filterUnits: 1,\n floodOpacity: 1,\n 'flood-opacity': 'floodOpacity',\n floodColor: 1,\n 'flood-color': 'floodColor',\n focusable: 0,\n fontFamily: 1,\n 'font-family': 'fontFamily',\n fontSize: 1,\n 'font-size': 'fontSize',\n fontSizeAdjust: 1,\n 'font-size-adjust': 'fontSizeAdjust',\n fontStretch: 1,\n 'font-stretch': 'fontStretch',\n fontStyle: 1,\n 'font-style': 'fontStyle',\n fontVariant: 1,\n 'font-variant': 'fontVariant',\n fontWeight: 1,\n 'font-weight': 'fontWeight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 1,\n 'glyph-name': 'glyphName',\n glyphOrientationHorizontal: 1,\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphOrientationVertical: 1,\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphRef: 1,\n gradientTransform: 1,\n gradientUnits: 1,\n hanging: 0,\n horizAdvX: 1,\n 'horiz-adv-x': 'horizAdvX',\n horizOriginX: 1,\n 'horiz-origin-x': 'horizOriginX',\n ideographic: 0,\n imageRendering: 1,\n 'image-rendering': 'imageRendering',\n in2: 0,\n in: 0,\n inlist: 0,\n intercept: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n k: 0,\n kernelMatrix: 1,\n kernelUnitLength: 1,\n kerning: 0,\n keyPoints: 1,\n keySplines: 1,\n keyTimes: 1,\n lengthAdjust: 1,\n letterSpacing: 1,\n 'letter-spacing': 'letterSpacing',\n lightingColor: 1,\n 'lighting-color': 'lightingColor',\n limitingConeAngle: 1,\n local: 0,\n markerEnd: 1,\n 'marker-end': 'markerEnd',\n markerHeight: 1,\n markerMid: 1,\n 'marker-mid': 'markerMid',\n markerStart: 1,\n 'marker-start': 'markerStart',\n markerUnits: 1,\n markerWidth: 1,\n mask: 0,\n maskContentUnits: 1,\n maskUnits: 1,\n mathematical: 0,\n mode: 0,\n numOctaves: 1,\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 1,\n 'overline-position': 'overlinePosition',\n overlineThickness: 1,\n 'overline-thickness': 'overlineThickness',\n paintOrder: 1,\n 'paint-order': 'paintOrder',\n panose1: 0,\n 'panose-1': 'panose1',\n pathLength: 1,\n patternContentUnits: 1,\n patternTransform: 1,\n patternUnits: 1,\n pointerEvents: 1,\n 'pointer-events': 'pointerEvents',\n points: 0,\n pointsAtX: 1,\n pointsAtY: 1,\n pointsAtZ: 1,\n prefix: 0,\n preserveAlpha: 1,\n preserveAspectRatio: 1,\n primitiveUnits: 1,\n property: 0,\n r: 0,\n radius: 0,\n refX: 1,\n refY: 1,\n renderingIntent: 1,\n 'rendering-intent': 'renderingIntent',\n repeatCount: 1,\n repeatDur: 1,\n requiredExtensions: 1,\n requiredFeatures: 1,\n resource: 0,\n restart: 0,\n result: 0,\n results: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n security: 0,\n seed: 0,\n shapeRendering: 1,\n 'shape-rendering': 'shapeRendering',\n slope: 0,\n spacing: 0,\n specularConstant: 1,\n specularExponent: 1,\n speed: 0,\n spreadMethod: 1,\n startOffset: 1,\n stdDeviation: 1,\n stemh: 0,\n stemv: 0,\n stitchTiles: 1,\n stopColor: 1,\n 'stop-color': 'stopColor',\n stopOpacity: 1,\n 'stop-opacity': 'stopOpacity',\n strikethroughPosition: 1,\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughThickness: 1,\n 'strikethrough-thickness': 'strikethroughThickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 1,\n 'stroke-dasharray': 'strokeDasharray',\n strokeDashoffset: 1,\n 'stroke-dashoffset': 'strokeDashoffset',\n strokeLinecap: 1,\n 'stroke-linecap': 'strokeLinecap',\n strokeLinejoin: 1,\n 'stroke-linejoin': 'strokeLinejoin',\n strokeMiterlimit: 1,\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokeWidth: 1,\n 'stroke-width': 'strokeWidth',\n strokeOpacity: 1,\n 'stroke-opacity': 'strokeOpacity',\n suppressContentEditableWarning: 1,\n suppressHydrationWarning: 1,\n surfaceScale: 1,\n systemLanguage: 1,\n tableValues: 1,\n targetX: 1,\n targetY: 1,\n textAnchor: 1,\n 'text-anchor': 'textAnchor',\n textDecoration: 1,\n 'text-decoration': 'textDecoration',\n textLength: 1,\n textRendering: 1,\n 'text-rendering': 'textRendering',\n to: 0,\n transform: 0,\n typeof: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 1,\n 'underline-position': 'underlinePosition',\n underlineThickness: 1,\n 'underline-thickness': 'underlineThickness',\n unicode: 0,\n unicodeBidi: 1,\n 'unicode-bidi': 'unicodeBidi',\n unicodeRange: 1,\n 'unicode-range': 'unicodeRange',\n unitsPerEm: 1,\n 'units-per-em': 'unitsPerEm',\n unselectable: 0,\n vAlphabetic: 1,\n 'v-alphabetic': 'vAlphabetic',\n values: 0,\n vectorEffect: 1,\n 'vector-effect': 'vectorEffect',\n version: 0,\n vertAdvY: 1,\n 'vert-adv-y': 'vertAdvY',\n vertOriginX: 1,\n 'vert-origin-x': 'vertOriginX',\n vertOriginY: 1,\n 'vert-origin-y': 'vertOriginY',\n vHanging: 1,\n 'v-hanging': 'vHanging',\n vIdeographic: 1,\n 'v-ideographic': 'vIdeographic',\n viewBox: 1,\n viewTarget: 1,\n visibility: 0,\n vMathematical: 1,\n 'v-mathematical': 'vMathematical',\n vocab: 0,\n widths: 0,\n wordSpacing: 1,\n 'word-spacing': 'wordSpacing',\n writingMode: 1,\n 'writing-mode': 'writingMode',\n x1: 0,\n x2: 0,\n x: 0,\n xChannelSelector: 1,\n xHeight: 1,\n 'x-height': 'xHeight',\n xlinkActuate: 1,\n 'xlink:actuate': 'xlinkActuate',\n xlinkArcrole: 1,\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkHref: 1,\n 'xlink:href': 'xlinkHref',\n xlinkRole: 1,\n 'xlink:role': 'xlinkRole',\n xlinkShow: 1,\n 'xlink:show': 'xlinkShow',\n xlinkTitle: 1,\n 'xlink:title': 'xlinkTitle',\n xlinkType: 1,\n 'xlink:type': 'xlinkType',\n xmlBase: 1,\n 'xml:base': 'xmlBase',\n xmlLang: 1,\n 'xml:lang': 'xmlLang',\n xmlns: 0,\n 'xml:space': 'xmlSpace',\n xmlnsXlink: 1,\n 'xmlns:xlink': 'xmlnsXlink',\n xmlSpace: 1,\n y1: 0,\n y2: 0,\n y: 0,\n yChannelSelector: 1,\n z: 0,\n zoomAndPan: 1\n};\n","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param data The content of the data node\n */\n function DataNode(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Text;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"nodeType\", {\n get: function () {\n return 3;\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Comment;\n return _this;\n }\n Object.defineProperty(Comment.prototype, \"nodeType\", {\n get: function () {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, data) || this;\n _this.name = name;\n _this.type = domelementtype_1.ElementType.Directive;\n return _this;\n }\n Object.defineProperty(ProcessingInstruction.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(children) {\n var _this = _super.call(this) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar CDATA = /** @class */ (function (_super) {\n __extends(CDATA, _super);\n function CDATA() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.CDATA;\n return _this;\n }\n Object.defineProperty(CDATA.prototype, \"nodeType\", {\n get: function () {\n return 4;\n },\n enumerable: false,\n configurable: true\n });\n return CDATA;\n}(NodeWithChildren));\nexports.CDATA = CDATA;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Root;\n return _this;\n }\n Object.defineProperty(Document.prototype, \"nodeType\", {\n get: function () {\n return 9;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n _this.type = type;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new CDATA(children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","var regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction _regenerator() {\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n var e,\n t,\n r = \"function\" == typeof Symbol ? Symbol : {},\n n = r.iterator || \"@@iterator\",\n o = r.toStringTag || \"@@toStringTag\";\n function i(r, n, o, i) {\n var c = n && n.prototype instanceof Generator ? n : Generator,\n u = Object.create(c.prototype);\n return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n var i,\n c,\n u,\n f = 0,\n p = o || [],\n y = !1,\n G = {\n p: 0,\n n: 0,\n v: e,\n a: d,\n f: d.bind(e, 4),\n d: function d(t, r) {\n return i = t, c = 0, u = e, G.n = r, a;\n }\n };\n function d(r, n) {\n for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n var o,\n i = p[t],\n d = G.p,\n l = i[2];\n r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n }\n if (o || r > 1) return a;\n throw y = !0, n;\n }\n return function (o, p, l) {\n if (f > 1) throw TypeError(\"Generator is already running\");\n for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n try {\n if (f = 2, i) {\n if (c || (o = \"next\"), t = i[o]) {\n if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n if (!t.done) return t;\n u = t.value, c < 2 && (c = 0);\n } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n i = e;\n } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n } catch (t) {\n i = e, c = 1, u = t;\n } finally {\n f = 1;\n }\n }\n return {\n value: t,\n done: y\n };\n };\n }(r, o, i), !0), u;\n }\n var a = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n t = Object.getPrototypeOf;\n var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n return this;\n }), t),\n u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n function f(e) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n return this;\n }), regeneratorDefine(u, \"toString\", function () {\n return \"[object Generator]\";\n }), (module.exports = _regenerator = function _regenerator() {\n return {\n w: i,\n m: f\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatAttributes = formatAttributes;\nexports.escapeSpecialCharacters = escapeSpecialCharacters;\nexports.revertEscapedCharacters = revertEscapedCharacters;\nexports.formatDOM = formatDOM;\nvar domhandler_1 = require(\"domhandler\");\nvar constants_1 = require(\"./constants\");\n/**\n * Gets case-sensitive tag name.\n *\n * @param tagName - Tag name in lowercase.\n * @returns - Case-sensitive tag name.\n */\nfunction getCaseSensitiveTagName(tagName) {\n return constants_1.CASE_SENSITIVE_TAG_NAMES_MAP[tagName];\n}\n/**\n * Formats DOM attributes to a hash map.\n *\n * @param attributes - List of attributes.\n * @returns - Map of attribute name to value.\n */\nfunction formatAttributes(attributes) {\n var map = {};\n var index = 0;\n var attributesLength = attributes.length;\n // `NamedNodeMap` is array-like\n for (; index < attributesLength; index++) {\n var attribute = attributes[index];\n map[attribute.name] = attribute.value;\n }\n return map;\n}\n/**\n * Corrects the tag name if it is case-sensitive (SVG).\n * Otherwise, returns the lowercase tag name (HTML).\n *\n * @param tagName - Lowercase tag name.\n * @returns - Formatted tag name.\n */\nfunction formatTagName(tagName) {\n tagName = tagName.toLowerCase();\n var caseSensitiveTagName = getCaseSensitiveTagName(tagName);\n if (caseSensitiveTagName) {\n return caseSensitiveTagName;\n }\n return tagName;\n}\n/**\n * Escapes special characters before parsing.\n *\n * @param html - The HTML string.\n * @returns - HTML string with escaped special characters.\n */\nfunction escapeSpecialCharacters(html) {\n return html.replace(constants_1.CARRIAGE_RETURN_REGEX, constants_1.CARRIAGE_RETURN_PLACEHOLDER);\n}\n/**\n * Reverts escaped special characters back to actual characters.\n *\n * @param text - The text with escaped characters.\n * @returns - Text with escaped characters reverted.\n */\nfunction revertEscapedCharacters(text) {\n return text.replace(constants_1.CARRIAGE_RETURN_PLACEHOLDER_REGEX, constants_1.CARRIAGE_RETURN);\n}\n/**\n * Transforms DOM nodes to `domhandler` nodes.\n *\n * @param nodes - DOM nodes.\n * @param parent - Parent node.\n * @param directive - Directive.\n * @returns - Nodes.\n */\nfunction formatDOM(nodes, parent, directive) {\n if (parent === void 0) { parent = null; }\n var domNodes = [];\n var current;\n var index = 0;\n var nodesLength = nodes.length;\n for (; index < nodesLength; index++) {\n var node = nodes[index];\n // set the node data given the type\n switch (node.nodeType) {\n case 1: {\n var tagName = formatTagName(node.nodeName);\n // script, style, or tag\n current = new domhandler_1.Element(tagName, formatAttributes(node.attributes));\n current.children = formatDOM(\n // template children are on content\n tagName === 'template'\n ? node.content.childNodes\n : node.childNodes, current);\n break;\n }\n case 3:\n current = new domhandler_1.Text(revertEscapedCharacters(node.nodeValue));\n break;\n case 8:\n current = new domhandler_1.Comment(node.nodeValue);\n break;\n default:\n continue;\n }\n // set previous node next\n var prev = domNodes[index - 1] || null;\n if (prev) {\n prev.next = current;\n }\n // set properties for current node\n current.parent = parent;\n current.prev = prev;\n current.next = null;\n domNodes.push(current);\n }\n if (directive) {\n current = new domhandler_1.ProcessingInstruction(directive.substring(0, directive.indexOf(' ')).toLowerCase(), directive);\n current.next = domNodes[0] || null;\n current.parent = parent;\n domNodes.unshift(current);\n if (domNodes[1]) {\n domNodes[1].prev = domNodes[0];\n }\n }\n return domNodes;\n}\n//# sourceMappingURL=utilities.js.map","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","\nclass _helperFunctions {\n\n constructor() {\n\n var currentScript = document.currentScript || (function() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n var EventEmitter = require('wolfy87-eventemitter');\n\n this.prefix = currentScript.getAttribute('scope') || 'lhc';\n this.prefixUppercase = this.prefix.toUpperCase();\n this.eventEmitter = new EventEmitter();\n\n try {\n this.hasSessionStorage = !!window.sessionStorage;\n } catch (e) {\n this.hasSessionStorage = false;\n }\n\n try {\n this.hasLocalStorage = !!window.localStorage;\n } catch (e) {\n this.hasLocalStorage = false;\n }\n\n }\n\n emitEvent(event, data, internal) {\n this.eventEmitter.emitEvent(event,data);\n }\n\n sendMessageParent(key, data) {\n if (window.opener && window.opener.closed === false) {\n window.opener.postMessage(this.prefix + '::'+key+'::'+JSON.stringify(data || null),'*');\n // Try to send postMessage to all possible parents\n if (key === 'ready_popup' && window.opener.parent && window.opener.parent.closed === false && window.opener != window.opener.parent) {\n window.opener.parent.postMessage(this.prefix + '::'+key+'::'+JSON.stringify(data || null),'*');\n if (window.opener.parent.parent && window.opener.parent.parent.closed === false && window.opener.parent.parent != window.opener.parent) {\n window.opener.parent.parent.postMessage(this.prefix + '::'+key+'::'+JSON.stringify(data || null),'*');\n }\n }\n } else if (window.parent && window.parent.closed === false) {\n window.parent.postMessage(this.prefix + '::'+key+'::'+JSON.stringify(data || null),'/');\n }\n\n // Send to popup event listener to track an events\n if (typeof LHCEventTracker !== 'undefined') {\n LHCEventTracker(key,data);\n }\n }\n\n sendMessageParentDirect(key, data) {\n var eventEmiter = null;\n\n if (window.parent && window.parent['$_'+this.prefixUppercase] && window.parent.closed === false) {\n eventEmiter = window.parent['$_'+this.prefixUppercase].eventListener;\n } else if (window.opener && window.opener['$_'+this.prefixUppercase] && window.opener.closed === false) {\n eventEmiter = window.opener['$_'+this.prefixUppercase].eventListener;\n }\n\n if (eventEmiter !== null) {\n eventEmiter.emitEvent(key,data);\n } else {\n this.sendMessageParent(key, data);\n }\n }\n\n setLocalStorage(key, value) {\n if (this.hasLocalStorage && localStorage.setItem) try {\n localStorage.setItem(this.prefix + key, value)\n } catch (d) {\n }\n }\n\n setSessionStorage(key, value) {\n if (this.hasSessionStorage && sessionStorage.setItem) try {\n sessionStorage.setItem(this.prefix + key, value)\n } catch (d) {\n }\n }\n\n getSessionStorage(a) {\n return this.hasSessionStorage && sessionStorage.getItem ? sessionStorage.getItem(this.prefix + a) : null\n }\n\n getLocalStorage(a) {\n return this.hasLocalStorage && localStorage.getItem ? localStorage.getItem(this.prefix + a) : null\n }\n\n removeSessionStorage(a) {\n this.hasSessionStorage && sessionStorage.removeItem && sessionStorage.removeItem(this.prefix + a);\n }\n\n removeLocalStorage(a) {\n this.hasLocalStorage && localStorage.removeItem && localStorage.removeItem(this.prefix + a);\n }\n\n getTimeZone() {\n try {\n var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (tz == 'undefined') { tz = 'UTC'; }\n return tz;\n } catch (e) {\n var today = new Date();\n\n let stdTimezoneOffset = function() {\n var jan = new Date(today.getFullYear(), 0, 1);\n var jul = new Date(today.getFullYear(), 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n };\n\n var dst = function() {\n return today.getTimezoneOffset() < stdTimezoneOffset();\n };\n\n var timeZoneOffset = 0;\n\n if (dst()) {\n timeZoneOffset = today.getTimezoneOffset();\n } else {\n timeZoneOffset = today.getTimezoneOffset()-60;\n };\n\n return (((timeZoneOffset)/60) * -1);\n }\n }\n\n getCustomFieldsSubmit(customFields)\n {\n if (customFields.size > 0 ) {\n let customItems = {'name_items' : [],'values_req' : [], 'value_items' : [], 'value_types' : [], 'encattr' : [], 'value_show' : []};\n customFields.forEach(field => {\n customItems['value_items'].push(field.get('value'));\n customItems['name_items'].push(field.get('name'));\n customItems['values_req'].push(field.get('required') === true ? 't' : 'f');\n customItems['encattr'].push(field.get('encrypted') === true ? 't' : '');\n customItems['value_types'].push(field.get('type'));\n customItems['value_show'].push(field.get('show'));\n })\n return customItems;\n }\n return null;\n }\n\n prefillFields(inst) {\n const prefillOptions = inst.props.chatwidget.get('attr_prefill');\n if (prefillOptions.length > 0) {\n prefillOptions.forEach((item) => {\n inst.setState(item);\n });\n }\n }\n\n logJSError(params) {\n var e;\n e = {};\n e.location = location && location.href ? location.href : \"\";\n e.message = window.navigator.userAgent;\n e.stack = params['stack'];// error.stack ? JSON.stringify(error.stack) : \"\";\n e.stack = e.stack.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", window.lhcChat['base_url'] + 'audit/logjserror', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( JSON.stringify(e) ) );\n }\n\n};\n\nconst helperFunctions = new _helperFunctions();\nwindow.lhcHelperfunctions = helperFunctions;\nexport { helperFunctions };","import React, { PureComponent } from 'react';\n\nclass ChatOptions extends PureComponent {\n\n state = {\n dropdown: null\n };\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n if (document.getElementById(this.props.elementId)) {\n var bsn = require(\"bootstrap.native/dist/components/dropdown-native\");\n this.setState({'dropdown' : new bsn(document.getElementById(this.props.elementId))});\n }\n }\n\n componentWillUnmount() {\n if (this.state.dropdown) {\n delete this.state.dropdown;\n }\n }\n\n render() {\n return this.props.children;\n }\n}\n\nexport default ChatOptions;\n","import React, { Component } from 'react';\nimport { connect } from \"react-redux\";\nimport { closeWidget, abtractAction, minimizeWidget } from \"../actions/chatActions\"\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport { withTranslation } from 'react-i18next';\nimport ChatOptions from './ChatOptions';\n\n@connect((store) => {\n return {\n chatwidget: store.chatwidget\n };\n})\n\nclass HeaderChat extends Component {\n\n constructor(props) {\n super(props);\n this.closeWidget = this.closeWidget.bind(this);\n this.endChat = this.endChat.bind(this);\n this.popup = this.popup.bind(this);\n this.switchColumn = this.switchColumn.bind(this);\n }\n\n closeWidget() {\n this.props.dispatch(minimizeWidget());\n }\n\n endChat() {\n this.props.endChat();\n }\n\n popup() {\n this.props.popupChat();\n }\n\n switchColumn(){\n this.props.switchColumn();\n }\n\n render() {\n const { t } = this.props;\n\n const closeInst = (!this.props.chatwidget.hasIn(['chat_ui','clinst']) || this.props.chatwidget.get('isMobile'));\n const hasHeader = this.props.chatwidget.hasIn(['chat_ui','custom_html_header_body']);\n const className = 'position-relative row header-chat' + (this.props.chatwidget.get('isMobile') == true ? ' mobile-header' : ' desktop-header') + (this.props.chatwidget.get('isChatting') === true || (this.props.chatwidget.get('isOnline') === true && this.props.chatwidget.get('isOfflineMode') === false) ? ' online-header' : ' offline-header');\n const hasPopup = !this.props.chatwidget.hasIn(['chat_ui','hide_popup']);\n const showClose = this.props.chatwidget.get('isChatting') === true && !this.props.chatwidget.hasIn(['chat_ui','hide_close']);\n var iconsNumber = 0, dropdownNumber = 0, headerIconsBeforeDropdown = false, dropdownDetected = false;\n\n const headerIcons = this.props.chatwidget.hasIn(['chat_ui','header_buttons']) && this.props.chatwidget.getIn(['chat_ui','header_buttons']).map((btn, index) => {\n let position = btn.get('pos');\n\n if (position == 'dropdown') {\n dropdownDetected = true;\n return;\n }\n\n if (dropdownDetected === true) {\n headerIconsBeforeDropdown = true;\n }\n\n position = position == 'left' ? 'start' : (position == 'right' ? 'end' : position);\n if (btn.get('btn') == 'min' && closeInst) {\n iconsNumber++;\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.closeWidget() : '' }} className={\"minimize-icon header-link float-\"+position} title={this.props.chatwidget.getIn(['chat_ui','min_text']) || t('button.minimize')} onClick={this.closeWidget}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_min']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_min'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n </a>;\n } else if (btn.get('btn') == 'popup' && hasPopup) {\n iconsNumber++;\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.popup() : '' }} className={\"header-link float-\"+position} title={this.props.chatwidget.getIn(['chat_ui','popup_text']) || t('button.popup')} onClick={this.popup}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_popup']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_popup'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n </a>;\n } else if (btn.get('btn') == 'close' && showClose) {\n const endText = this.props.chatwidget.getIn(['chat_ui','end_chat_text']) || t('button.end_chat');\n iconsNumber++;\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.endChat() : '' }} title={endText} className={\"header-link float-\"+position} onClick={this.endChat}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_close']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_close'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n {btn.get('print') && <span className=\"end-chat-text\">{endText}</span>}\n </a>;\n } else if (btn.get('btn') == 'fullheight' && !this.props.chatwidget.get('isMobile')) {\n iconsNumber++;\n let fheightText = '';\n if (this.props.chatwidget.get('position_placement').includes('full_height')){\n fheightText = this.props.chatwidget.getIn(['chat_ui','fheight_text_class']) || t('button.fheight_text_class');\n } else {\n fheightText = this.props.chatwidget.getIn(['chat_ui','fheight_text_col']) || t('button.fheight_text_col');\n }\n return <a key={btn.get('pos')+index} tabIndex=\"0\" title={fheightText} onKeyPress={(e) => { e.key === \"Enter\" ? this.switchColumn() : '' }} className={\"header-link float-\"+position} onClick={this.switchColumn}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_fheight']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_fheight'])} alt=\"\" />) || (<i className=\"material-icons\">{this.props.chatwidget.get('position_placement').includes('full_height') ? <React.Fragment></React.Fragment> : <React.Fragment></React.Fragment>}</i>)}\n </a>;\n }\n });\n\n const dropdownIcons = this.props.chatwidget.hasIn(['chat_ui','header_buttons']) && this.props.chatwidget.getIn(['chat_ui','header_buttons']).map((btn, index) => {\n let position = btn.get('pos');\n if (position != 'dropdown') {\n return;\n }\n\n if (btn.get('btn') == 'min' && closeInst) {\n dropdownNumber++;\n const minText = this.props.chatwidget.getIn(['chat_ui','min_text']) || t('button.minimize');\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.closeWidget() : '' }} className={\"minimize-icon header-link header-burger-link d-block text-nowrap py-1 ps-1\"} title={minText} onClick={this.closeWidget}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_min']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_min'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n <span className=\"menu-text text-nowrap\">{minText}</span>\n </a>;\n } else if (btn.get('btn') == 'popup' && hasPopup) {\n dropdownNumber++;\n const popupText = this.props.chatwidget.getIn(['chat_ui','popup_text']) || t('button.popup');\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.popup() : '' }} className={\"header-link header-burger-link d-block text-nowrap py-1 ps-1\"} title={popupText} onClick={this.popup}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_popup']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_popup'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n <span className=\"menu-text text-nowrap\">{popupText}</span>\n </a>;\n } else if (btn.get('btn') == 'close' && showClose) {\n dropdownNumber++;\n const endText = this.props.chatwidget.getIn(['chat_ui','end_chat_text']) || t('button.end_chat');\n return <a key={btn.get('pos')+index} tabIndex=\"0\" title={endText} onKeyPress={(e) => { e.key === \"Enter\" ? this.endChat() : '' }} className={\"header-link header-burger-link py-1 d-block text-nowrap ps-1\"} onClick={this.endChat}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_close']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_close'])} alt=\"\" />) || <i className=\"material-icons\"></i>}\n <span className=\"menu-text\">{endText}</span>\n </a>;\n } else if (btn.get('btn') == 'fullheight' && !this.props.chatwidget.get('isMobile')) {\n dropdownNumber++;\n let fheightText = '';\n if (this.props.chatwidget.get('position_placement').includes('full_height')){\n fheightText = this.props.chatwidget.getIn(['chat_ui','fheight_text_class']) || t('button.fheight_text_class');\n } else {\n fheightText = this.props.chatwidget.getIn(['chat_ui','fheight_text_col']) || t('button.fheight_text_col');\n }\n return <a key={btn.get('pos')+index} tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.switchColumn() : '' }} title={fheightText} className={\"header-link header-burger-link py-1 d-block text-nowrap ps-1\"} onClick={this.switchColumn}>\n {(this.props.chatwidget.hasIn(['chat_ui','img_icon_fheight']) && <img className=\"px-1\" src={this.props.chatwidget.getIn(['chat_ui','img_icon_fheight'])} alt=\"\" />) || (<i className=\"material-icons\">{this.props.chatwidget.get('position_placement').includes('full_height') ? <React.Fragment></React.Fragment> : <React.Fragment></React.Fragment>} </i>)}\n <span className=\"menu-text text-nowrap\">{fheightText}</span>\n </a>;\n }\n });\n\n return (\n <div id=\"widget-header-content\" className={className}>\n {hasHeader && <div className=\"lhc-custom-header-inside\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_header_body'])}}></div>}\n {(iconsNumber > 0 || dropdownNumber > 0) && <div className=\"col-12 px-1 widget-header-menu\">\n {headerIconsBeforeDropdown === true && headerIcons}\n {dropdownNumber > 0 && <div className=\"float-end position-relative\">\n <ChatOptions elementId=\"headerDropDown\">\n <div className=\"btn-group dropup disable-select\">\n <button tabIndex=\"0\" className=\"header-link border-0 p-0\" id=\"headerDropDown\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"><i className=\"material-icons\" ></i></button>\n <div className=\"dropdown-menu shadow bg-white rounded lhc-dropdown-menu pe-2\">\n {dropdownIcons}\n </div>\n </div>\n </ChatOptions>\n </div>}\n {headerIconsBeforeDropdown === false && headerIcons}\n </div>}\n </div>\n );\n }\n}\n\nexport default withTranslation()(HeaderChat);\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import React, { PureComponent, Suspense } from 'react';\nimport parse, { domToReact } from 'html-react-parser';\nimport { connect } from \"react-redux\";\nimport { updateTriggerClicked, subscribeNotifications, parseScript } from \"../actions/chatActions\";\nimport { withTranslation } from 'react-i18next';\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport ChatModal from './ChatModal';\nconst InlineSurvey = React.lazy(() => import('./InlineSurvey'));\nconst InlineIframe = React.lazy(() => import('./InlineIframe'));\n\n\nclass ChatMessage extends PureComponent {\n\n state = {\n jsExecuted : false,\n moreReactions : false,\n reactToMessageId : 0\n }\n\n constructor(props) {\n super(props);\n this.abstractClick = this.abstractClick.bind(this);\n this.imageLoaded = this.imageLoaded.bind(this);\n this.updateTriggerClicked = this.updateTriggerClicked.bind(this);\n this.disableEditor = false;\n this.delayData = [];\n }\n\n getDirectInnerText(element) {\n var childNodes = element.childNodes;\n var result = '';\n\n for (var i = 0; i < childNodes.length; i++) {\n if(childNodes[i].nodeType == 3) {\n result += childNodes[i].data.trim();\n }\n }\n\n return result;\n }\n\n addLoader(attrs, element) {\n\n if (this.props.printButton == true && !attrs[\"data-no-msg\"] && (attrs.type == 'button' || element.tagName === 'A')) {\n if (element.tagName !== 'A') {\n this.removeMetaMessage(attrs['data-id'], 0);\n }\n\n this.props.dispatch({type: \"ADD_MSG_TO_STORE\", data: this.getDirectInnerText(element)});\n }\n\n if (!attrs['data-keep'] && !attrs[\"data-no-change\"] && attrs.type == 'button' && element) {\n element.setAttribute(\"disabled\",\"disabled\");\n element.innerHTML = \"<i class=\\\"material-icons lhc-spin\\\"></i>\" + element.innerHTML;\n }\n }\n\n /**\n * Here we handle bot buttons actions\n * */\n abstractClick(attrs, e) {\n\n const { t } = this.props;\n\n if (typeof attrs.onchange !== 'undefined') {\n\n // Checkbox support\n if (attrs.type && attrs.type == \"checkbox\") {\n if (attrs['payload-type'] == 'enable-confirm') {\n var elm = document.getElementById('confirm-button-'+attrs['data-id']);\n if (e.target.checked) {\n elm.removeAttribute('disabled');\n elm.onclick = (e) => this.updateTriggerClicked({type:''}, {'data-payload':'confirm', 'data-id' : attrs['data-id']}, e.target);\n } else {\n elm.setAttribute('disabled','disabled');\n }\n }\n return ;\n }\n\n // Drop down support\n const optionSelected = e.target.options[e.target.selectedIndex];\n\n const attrLoad = {\n 'data-payload': optionSelected.getAttribute('data-payload'),\n 'data-id' : optionSelected.getAttribute('data-id')\n };\n\n if (optionSelected.getAttribute('payload-type') == 'trigger') {\n this.updateTriggerClicked({type:'/(type)/triggerclicked'}, attrLoad , e.target);\n } else if (optionSelected.getAttribute('payload-type') == 'button' || optionSelected.getAttribute('payload-type') == 'payload') {\n this.updateTriggerClicked({type:''}, attrLoad, e.target);\n }\n\n return ;\n }\n\n this.addLoader(attrs,e.target);\n\n if (attrs.onclick) {\n if (attrs.onclick.indexOf('lhinst.updateTriggerClicked') !== -1) {\n this.updateTriggerClicked({type:'/(type)/triggerclicked'}, attrs, e.target);\n e.target.classList.add('visited');\n } else if (attrs.onclick.indexOf('notificationsLHC.sendNotification') !== -1) {\n\n this.props.dispatch(subscribeNotifications());\n e.target.innerHTML = t('notifications.subscribing');\n setTimeout(() => {\n this.removeMetaMessage(attrs['data-id']);\n }, 500);\n\n } else if (attrs.onclick.indexOf('lhinst.moreReactions') !== -1) {\n this.setState({moreReactions : true, reactToMessageId: attrs['data-id']});\n e.stopPropagation();\n } else if (attrs.onclick.indexOf('lhinst.reactionsToolbar') !== -1) {\n this.props.setReactingTo(attrs['data-id'] != this.props.reactToMessageId ? attrs['data-id'] : 0);\n e.stopPropagation();\n } else if (attrs.onclick.indexOf('lhinst.reactionsClicked') !== -1) {\n this.updateTriggerClicked({type:'/(type)/reactions' + (this.props.themeId ? '/(theme)/' + this.props.themeId : '')}, attrs, e.target);\n this.props.setReactingTo(0);\n } else if (attrs.onclick.indexOf('lhinst.buttonClicked') !== -1) {\n this.updateTriggerClicked({type:''}, attrs, e.target);\n e.target.classList.add('visited');\n } else if (attrs.onclick.indexOf('lhinst.startVoiceCall') !== -1) {\n this.props.voiceCall();\n } else if (attrs.onclick.indexOf('lhinst.chooseFile') !== -1) {\n this.props.abstractAction('fileupload');\n } else if (attrs.onclick.indexOf('lhinst.updateChatClicked') !== -1) {\n this.updateTriggerClicked({type:'',mainType: 'updatebuttonclicked'}, attrs, e.target);\n e.target.classList.add('visited');\n } else if (attrs.onclick.indexOf('lhinst.editGenericStep') !== -1) {\n this.updateTriggerClicked({type:'/(type)/editgenericstep'}, attrs, e.target);\n e.target.classList.add('visited');\n } else if (attrs.onclick.indexOf('lhinst.hideShowAction') !== -1) {\n const args = JSON.parse(attrs['data-load']);\n var more = document.getElementById('message-more-'+args['id']);\n if (more.classList.contains('hide')) {\n e.target.innerText = args['hide_text'];\n more.classList.remove('hide');\n } else {\n e.target.innerText = args['show_text'];\n more.classList.add('hide');\n }\n } else if (attrs.onclick.indexOf('lhinst.executeJS') !== -1) {\n parseScript(attrs, this);\n } else if (attrs.onclick.indexOf('lhinst.dropdownClicked') !== -1) {\n const list = document.getElementById('id_generic_list-' + attrs['data-id']);\n if (list && list.value != \"0\" && list.value != \"\") {\n attrs['data-payload'] = list.value;\n this.updateTriggerClicked({type:'/(type)/valueclicked'}, attrs, e.target);\n } else {\n alert(t('bot.please_choose'));\n }\n } else if (attrs.onclick.indexOf('lhinst.zoomImage') !== -1) {\n helperFunctions.sendMessageParentDirect('zoomImage', [{'txt_download': t('bbcode.img_download'), 'src' : attrs.src, title: attrs.title ? attrs.title : '' }]);\n } else {\n helperFunctions.emitEvent('MessageClick',[attrs, this.props.dispatch]);\n console.log('Unknown click event: ' + attrs.onclick);\n }\n }\n\n // Process clicks on IMG always and any tag with class process-click\n if (e.target.tagName !== 'IMG' && (!attrs.class || attrs.class.indexOf('process-click') === -1)) {\n e.preventDefault();\n }\n\n // Why did we previously auto focused on button click?\n // It just makes a screen smaller and is bad for UI\n /*if (!(attrs.src && attrs.class && attrs.class == 'img-fluid')) {\n this.props.focusMessage();\n }*/\n }\n\n removeMetaMessage(messageId, timeout) {\n setTimeout(() => {\n var block = document.getElementById('msg-' + messageId);\n if (block) {\n var x = block.getElementsByClassName(\"meta-message-\" + messageId);\n var i;\n for (i = 0; i < x.length; i++) {\n x[i].parentNode.removeChild(x[i]);\n }\n }\n },typeof timeout === 'undefined' ? 500 : timeout);\n }\n\n updateTriggerClicked(paramsType, attrs, target) {\n this.props.dispatch(updateTriggerClicked(paramsType, {\"payload-id\": (typeof attrs['data-identifier'] === 'undefined' ? null : attrs['data-identifier']) ,payload: attrs['data-payload'], id : attrs['data-id'], processed : (typeof attrs['data-keep'] === 'undefined')})).then((data) => {\n if (!attrs['data-keep']) {\n this.removeMetaMessage(attrs['data-id']);\n }\n\n if (data.data.message_id_first && data.data.message_id_first > 0) {\n this.props.dispatch({type: \"UPDATE_SCROLL_TO_MESSAGE\", data: data.data.message_id_first});\n }\n \n if (data.data.t) {\n helperFunctions.sendMessageParent('botTrigger', [{'trigger' : data.data.t}]);\n }\n\n if (data.data.update_message) {\n this.props.updateMessage(attrs['data-id'], this);\n } else {\n this.props.updateMessages({\"check_focus\":true});\n this.props.updateStatus();\n }\n });\n }\n\n imageLoaded(attrs) {\n if (this.props.scrollBottom) {\n this.props.scrollBottom(true, true);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.reactToMessageId != 0) {\n\n var elm = document.getElementById('reactions-toolbar-'+this.props.reactToMessageId);\n var elmMessage = document.getElementById('msg-'+this.props.reactToMessageId);\n\n if (!elm || !elmMessage) {\n return;\n }\n\n // Only half of the width goes to the right\n var halfWidth = elm.clientWidth / 2;\n\n var messageMaxWidth = elmMessage.offsetWidth;\n\n var offsetContainer = elm.parentNode.offsetLeft;\n\n if ((offsetContainer + halfWidth) > messageMaxWidth) {\n elm.style.right = '-'+ (halfWidth - 10) +'px';\n } else if (offsetContainer < halfWidth - 30) {\n elm.style.left = (halfWidth - 30) +'px';\n }\n }\n }\n\n componentDidMount() {\n\n this.props.setMetaUpdateState(this.props.msg['msg'].indexOf('meta-auto-hide') !== -1);\n\n if (this.disableEditor == true) {\n this.props.setEditorEnabled(false);\n } else {\n this.props.setEditorEnabled(true);\n }\n\n if (this.delayData.length > 0) {\n this.delayData.forEach((item) => {\n this.props.sendDelay(item);\n this.props.scrollBottom(false, false);\n })\n }\n }\n\n formatStringToCamelCase(str) {\n const splitted = str.split(\"-\");\n if (splitted.length === 1) return splitted[0];\n return (\n splitted[0] +\n splitted\n .slice(1)\n .map(word => word[0].toUpperCase() + word.slice(1))\n .join(\"\")\n );\n };\n\n getStyleObjectFromString(str) {\n const style = {};\n str.split(\";\").forEach(el => {\n const [property, value] = el.split(\":\");\n if (!property) return;\n\n const formattedProperty = this.formatStringToCamelCase(property.trim());\n style[formattedProperty] = value.trim();\n });\n\n return style;\n };\n\n render() {\n\n const { t } = this.props;\n\n var operatorChanged = false;\n\n if (!this.props.msg['msg'] || typeof this.props.msg['msg'] !== 'string') {\n return <React.Fragment></React.Fragment>;\n }\n\n var messages = parse(this.props.msg['msg'], {\n\n replace: domNode => {\n\n if (domNode.attribs) {\n \n var cloneAttr = Object.assign({}, domNode.attribs);\n\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n\n if (domNode.attribs.className.indexOf('message-row') !== -1 && parseInt(this.props.reactToMessageId) == parseInt(domNode.attribs.id.replace(\"msg-\",\"\"))){\n domNode.attribs.className += ' current-reacting-to';\n }\n\n if (domNode.attribs.className.indexOf('message-row') !== -1) {\n domNode.attribs.className += ' fade-in-fast index-row-' + this.props.id;\n }\n\n // Animate only if it's not first sync call\n if (domNode.attribs.className.indexOf('message-row') !== -1 && this.props.id > 0) {\n if (this.props.msg['msop'] > 0 && this.props.msg['msop'] != this.props.msg['lmsop'] && operatorChanged == false) {\n domNode.attribs.className += ' operator-changes';\n operatorChanged = true;\n }\n } else if (this.props.profilePic && domNode.attribs.className.indexOf('vis-icon-hld') !== -1) {\n return <img className=\"profile-msg-pic\" onLoad={this.imageLoaded} src={this.props.profilePic} alt=\"\" title=\"\" />\n }\n\n delete domNode.attribs.class;\n }\n\n if (domNode.attribs.onclick) {\n delete domNode.attribs.onclick;\n }\n\n if (domNode.name && domNode.name === 'img') {\n\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n\n if (typeof domNode.attribs['data-ignore-load'] === 'undefined') {\n return <img {...domNode.attribs} onLoad={this.imageLoaded} onClick={(e) => this.abstractClick(cloneAttr, e)} />\n }\n\n } else if (domNode.name && domNode.name === 'button') {\n if (cloneAttr.onclick) {\n\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n\n return <button {...domNode.attribs} onClick={(e) => this.abstractClick(cloneAttr, e)} >{domToReact(domNode.children)}</button>\n }\n } else if (domNode.name && domNode.name === 'a') {\n if (cloneAttr.onclick) {\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n return <a {...domNode.attribs} onKeyPress={(e) => { e.key === \"Enter\" ? this.abstractClick(cloneAttr, e) : '' }} onClick={(e) => this.abstractClick(cloneAttr, e)} >{domToReact(domNode.children)}</a>\n } else {\n /**\n * We can switch target to _top\n * - if we are in widget mode\n * - target is _blank\n * - website where widget is under the same domain\n * */\n if (this.props.embedMode && this.props.embedMode == 'widget' && this.props.targetSame && cloneAttr.target && cloneAttr.target == '_blank' && domNode.attribs.href) {\n const href = domNode.attribs.href;\n const parentHost = window.parent.location.host;\n const isSameHost = href.startsWith(`http://${parentHost}`) || href.startsWith(`https://${parentHost}`);\n if (isSameHost) {\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n domNode.attribs.target = '_top';\n if (this.props.isMobile) {\n return <a {...domNode.attribs} onClick={(e) => this.props.minimizeWidget()}>{domToReact(domNode.children)}</a>\n } else {\n return <a {...domNode.attribs}>{domToReact(domNode.children)}</a>\n }\n }\n }\n }\n } else if (domNode.name && domNode.name === 'select') {\n\n if (cloneAttr.onchange) {\n\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n\n return <select {...domNode.attribs} onChange={(e) => this.abstractClick(cloneAttr, e)} >{domToReact(domNode.children)}</select>\n }\n\n } else if (domNode.name && domNode.name === 'inlineiframe') {\n return <Suspense fallback=\"...\"><InlineIframe {...domNode.attribs} updateMessage={(id) => this.props.updateMessage(id, this) }/></Suspense>;\n } else if (domNode.name && domNode.name === 'inlinesurvey') {\n return <Suspense fallback=\"...\"><InlineSurvey {...domNode.attribs} surveyOptions={domNode.children} /></Suspense>;\n } else if (domNode.name && domNode.name === 'input') {\n\n if (domNode.attribs.type && domNode.attribs.type == 'checkbox' && cloneAttr.onchange) {\n\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n\n return <input type=\"checkbox\" {...domNode.attribs} onChange={(e) => this.abstractClick(cloneAttr, e)} />\n\n } else if (domNode.attribs.type && domNode.attribs.type == 'radio') {\n\n if (domNode.attribs.style) {\n domNode.attribs.style = this.getStyleObjectFromString(domNode.attribs.style);\n }\n\n if (domNode.attribs.checked) {\n domNode.attribs.defaultChecked = true;\n delete domNode.attribs.checked;\n }\n\n return <input type=\"radio\" {...domNode.attribs} />\n }\n\n } else if (domNode.name && domNode.name === 'script' && domNode.attribs['data-bot-action']) {\n\n if (!domNode.attribs['data-bot-always']) {\n // Execute JS only once\n // Happens if new message indicator is passed\n // We rerender elements, but we should not execute JS\n if (this.state.jsExecuted == true) {\n return <React.Fragment></React.Fragment>;\n }\n\n this.setState({jsExecuted : true});\n }\n\n parseScript(domNode, this);\n\n // Return empty element\n return <React.Fragment></React.Fragment>;\n }\n }\n }\n });\n\n return <React.Fragment>{this.state.moreReactions && <ChatModal setReaction={(attrs) => {this.updateTriggerClicked({type:'/(type)/reactions' + (this.props.themeId ? '/(theme)/' + this.props.themeId : '')}, JSON.parse(attrs), null);this.setState({moreReactions : false});this.props.setReactingTo(0);}} confirmClose={(e) => {this.setState({moreReactions : false})}} cancelClose={(e) => {this.setState({moreReactions : false})}} toggle={(e) => {this.setState({moreReactions : false})}} dataUrl={\"/chat/reacttomessagemodal/\"+this.state.reactToMessageId + (this.props.themeId ? '/(theme)/' + this.props.themeId : '') } />}{this.props.hasNew == true && this.props.id == this.props.newId && <div id=\"scroll-to-message\" className=\"message-admin border-bottom new-msg-holder border-danger text-center\"><span className=\"new-msg bg-danger text-white d-inline-block fs12 rounded-top\">{this.props.newTitle}</span></div>}{messages}</React.Fragment>\n }\n}\n\nexport default withTranslation()(connect()(ChatMessage));\n","import React, { PureComponent } from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\n/**\n * https://github.com/LukasMarx/react-file-upload\n * */\nclass ChatFileUploader extends PureComponent {\n\n state = {\n hightlight: false,\n files: [],\n uploading: false,\n uploadProgress: {},\n successfullUploaded: false\n };\n\n constructor(props) {\n super(props);\n\n this.fileInputRef = React.createRef();\n\n // UI Actions\n this.openFileDialog = this.openFileDialog.bind(this);\n this.onFilesAddedUI = this.onFilesAddedUI.bind(this);\n this.onDragOver = this.onDragOver.bind(this);\n this.onDragLeave = this.onDragLeave.bind(this);\n this.onDrop = this.onDrop.bind(this);\n this.onPaste = this.onPaste.bind(this);\n\n // Backend actions\n this.onFilesAdded = this.onFilesAdded.bind(this);\n this.uploadFiles = this.uploadFiles.bind(this);\n this.sendRequest = this.sendRequest.bind(this);\n }\n\n onFilesAdded(files) {\n const { t } = this.props;\n\n const ruleTest = new RegExp(\"(\\.|\\/)(\" + this.props.fileOptions.get('ft_us') + \")$\",\"i\");\n\n let uploadErrors = [];\n files.forEach(file => {\n\n if (!(ruleTest.test(file.type) || ruleTest.test(file.name))) {\n uploadErrors.push(file.name + ': ' + t('file.incorrect_type'));\n }\n\n if (file.size > this.props.fileOptions.get('fs')) {\n uploadErrors.push(file.name + ': '+ t('file.to_big_file'));\n }\n });\n\n if (uploadErrors.length > 0) {\n alert(uploadErrors.join(\"\\n\"));\n } else {\n this.setState({\n 'files': files\n })\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.files.length > 0 && this.state.uploading == false) {\n this.uploadFiles();\n }\n }\n\n async uploadFiles() {\n this.setState({ uploadProgress: {}, uploading: true });\n const promises = [];\n this.state.files.forEach(file => {\n promises.push(this.sendRequest(file));\n });\n try {\n await Promise.all(promises);\n this.setState({ successfullUploaded: true, uploading: false, files : []});\n } catch (e) {\n // Not Production ready! Do some error handling here instead...\n this.setState({ successfullUploaded: true, uploading: false, files : [] });\n }\n }\n\n sendRequest(file) {\n const { t } = this.props;\n\n return new Promise((resolve, reject) => {\n var req = new XMLHttpRequest();\n\n const formData = new FormData();\n formData.append(\"files\", file, file.name);\n\n req.upload.addEventListener(\"progress\", event => {\n if (event.lengthComputable) {\n const copy = { ...this.state.uploadProgress };\n copy[file.name] = {\n state: \"pending\",\n percentage: (event.loaded / event.total) * 100\n };\n this.props.progress(t('file.uploading')+ ' ' + Math.round((event.loaded / event.total) * 100) + '%');\n }\n });\n\n req.upload.addEventListener(\"load\", event => {\n const copy = { ...this.state.uploadProgress };\n copy[file.name] = { state: \"done\", percentage: 100 };\n this.props.progress(t('file.processing'));\n });\n\n req.onload = () => {\n let status = JSON.parse(req.response);\n if (status && status.error && status.error == 'true') {\n if (status.error_msg) {\n this.props.progress(status.error_msg);\n } else {\n this.props.progress(t('file.upload_failed'));\n }\n } else {\n this.props.progress(t('file.completed'));\n\n // If file preview is enabled, add to preview files instead of completing immediately\n if (this.props.fileOptions.has('file_preview') && this.props.fileOptions.get('file_preview')) {\n const fileData = {\n id: status.file_id || Date.now(), // Use server file ID if available\n security_hash: status.security_hash || '',\n name: file.name,\n size: file.size,\n type: file.type,\n originalFile: file\n };\n\n // Add preview URL for images\n if (file.type.startsWith('image/')) {\n fileData.previewUrl = URL.createObjectURL(file);\n }\n\n if (this.props.onFilePreview) {\n this.props.onFilePreview(fileData);\n }\n } else {\n this.props.onCompletion();\n }\n }\n resolve(req);\n }\n\n req.upload.addEventListener(\"error\", event => {\n const copy = { ...this.state.uploadProgress };\n copy[file.name] = { state: \"error\", percentage: 0 };\n this.setState({ uploadProgress: copy });\n reject(req);\n });\n\n req.open(\"POST\", this.props.base_url + '/file/uploadfile/' + this.props.chat_id + '/' + this.props.hash);\n req.send(formData);\n });\n }\n\n openFileDialog() {\n if (this.state.uploading) return;\n this.fileInputRef.current.click();\n }\n\n onFilesAddedUI(evt) {\n const files = evt.target.files;\n const array = this.fileListToArray(files);\n this.onFilesAdded(array);\n }\n\n onDragOver(event) {\n event.preventDefault();\n if (this.state.uploading) return;\n\n if (this.props.onDrag) {\n this.props.onDrag(true);\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n if (this.props.dropArea.current) {\n this.props.dropArea.current.ondragover = this.onDragOver;\n this.props.dropArea.current.ondragleave = this.onDragLeave;\n this.props.dropArea.current.ondrop = this.onDrop;\n document.addEventListener(\"paste\", this.onPaste);\n helperFunctions.eventEmitter.addListener('fileupload', this.openFileDialog);\n }\n }, 1000);\n }\n\n componentWillUnmount() {\n if (this.props.dropArea.current) {\n this.props.dropArea.current.ondragover = null;\n this.props.dropArea.current.ondragleave = null;\n this.props.dropArea.current.ondrop = null;\n }\n helperFunctions.eventEmitter.removeListener('fileupload', this.openFileDialog);\n document.removeEventListener(\"paste\", this.onPaste);\n }\n\n onPaste(e) {\n var items = e && e.clipboardData &&\n e.clipboardData.items,\n data = {files: []};\n\n if (items && items.length) {\n const array = [];\n for (var i = 0; i < items.length; i++) {\n var file = items[i].getAsFile && items[i].getAsFile();\n if (file){\n array.push(file);\n }\n }\n\n if (array.length > 0) {\n this.onFilesAdded(array);\n }\n }\n }\n\n onDragLeave(event) {\n if (this.props.onDrag) {\n this.props.onDrag(false);\n }\n }\n\n onDrop(event) {\n event.preventDefault();\n if (this.state.uploading) return;\n const files = event.dataTransfer.files;\n const array = this.fileListToArray(files);\n\n this.onFilesAdded(array);\n\n if (this.props.onDrag) {\n this.props.onDrag(false);\n }\n }\n\n fileListToArray(list) {\n const array = [];\n for (var i = 0; i < list.length; i++) {\n array.push(list.item(i));\n }\n return array;\n }\n\n render() {\n if (this.props.link) {\n return (\n <React.Fragment>\n <input onChange={this.onFilesAddedUI} ref={this.fileInputRef} id=\"fileupload\" type=\"file\" name=\"files[]\" multiple={!this.props.fileOptions.has('one_file_upload')} className=\"d-none\" />\n <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.openFileDialog() : '' }} className=\"file-uploader\" onClick={this.openFileDialog}><i className=\"material-icons chat-setting-item text-muted attach-ico\"></i></a>\n </React.Fragment>\n );\n }\n }\n}\n\nexport default withTranslation()(ChatFileUploader);","import React, { PureComponent } from 'react';\nimport { STATUS_CLOSED_CHAT, STATUS_BOT_CHAT, STATUS_SUB_SURVEY_SHOW, STATUS_ACTIVE_CHAT, STATUS_SUB_USER_CLOSED_CHAT, STATUS_SUB_OWNER_CHANGED, STATUS_SUB_CONTACT_FORM } from \"../constants/chat-status\";\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\nclass ChatSync extends PureComponent {\n\n state = {\n intervalId : null,\n intervalCheckStatusId : null\n };\n\n constructor(props) {\n super(props);\n this.syncChat = this.syncChat.bind(this);\n this.checkStatusChat = this.checkStatusChat.bind(this);\n }\n\n syncChat(issueUpdate) {\n\n if (this.state.intervalId) {\n clearTimeout(this.state.intervalId);\n }\n\n this.props.updateMessages();\n this.setState({'intervalId': setTimeout(this.syncChat,this.props.syncInterval)});\n }\n\n checkStatusChat() {\n\n if (this.state.intervalCheckStatusId) {\n clearTimeout(this.state.intervalCheckStatusId);\n }\n\n this.props.updateStatus();\n this.setState({'intervalCheckStatusId': setTimeout(this.checkStatusChat, this.props.syncInterval)});\n }\n\n componentDidMount() {\n this.syncChat();\n this.checkStatusChat();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n this.props.status == STATUS_CLOSED_CHAT ||\n this.props.status_sub == STATUS_SUB_SURVEY_SHOW ||\n this.props.status_sub == STATUS_SUB_USER_CLOSED_CHAT ||\n this.props.status_sub == STATUS_SUB_CONTACT_FORM\n ) {\n if (this.state.intervalId) {\n clearTimeout(this.state.intervalId);\n this.state.intervalId = null;\n }\n helperFunctions.sendMessageParent('chatClosed', []);\n } else if (!this.state.intervalId) {\n this.syncChat();\n }\n\n if ((this.props.status_sub != prevProps.status_sub || this.props.status != prevProps.status) || (this.props.initClose != prevProps.initClose) || (prevProps.hasSurvey != this.props.hasSurvey)) {\n this.checkStatusChat();\n }\n\n if ((this.props.status == STATUS_CLOSED_CHAT || this.props.status == STATUS_BOT_CHAT || this.props.status == STATUS_ACTIVE_CHAT || this.props.status_sub == STATUS_SUB_SURVEY_SHOW) && this.state.intervalCheckStatusId && this.props.hasSurvey == false) {\n clearTimeout(this.state.intervalCheckStatusId);\n this.state.intervalCheckStatusId = null;\n }\n }\n\n componentWillUnmount() {\n if (this.state.intervalId) {\n clearTimeout(this.state.intervalId);\n }\n\n if (this.state.intervalCheckStatusId) {\n clearTimeout(this.state.intervalCheckStatusId);\n }\n }\n\n render() {\n return null;\n }\n}\n\nexport default ChatSync;\n","import React, { PureComponent } from 'react';\nimport parse, { domToReact } from 'html-react-parser';\nimport { connect } from \"react-redux\";\nimport {voteAction, transferToHumanAction} from \"../actions/chatActions\"\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport axios from \"axios\";\n\n@connect((store) => {\n return {\n chat: store.chatwidget.get('chatData'),\n chat_ui : store.chatwidget.get('chat_ui')\n };\n})\n\nclass ChatStatus extends PureComponent {\n\n constructor(props) {\n super(props);\n this.abstractClick = this.abstractClick.bind(this);\n this.checkSwitchButtom = this.checkSwitchButtom.bind(this);\n }\n\n abstractClick(attrs) {\n if (attrs.onclick) {\n if (attrs.onclick == 'lhinst.voteAction($(this))') {\n voteAction({id : this.props.chat.get('id'), hash: this.props.chat.get('hash'), type : attrs['data-id']}).then((response) => {\n this.props.updateStatus()\n })\n } else if (attrs.onclick == 'notificationsLHC.sendNotification()') {\n helperFunctions.sendMessageParent('subscribeEvent',[{'pk' : this.props.chat_ui.get('notifications_pk')}]);\n } else if (attrs.onclick.indexOf('lhinst.transferToHuman') !== -1) {\n transferToHumanAction({id : this.props.chat.get('id'), hash: this.props.chat.get('hash')}).then((response) => {\n this.props.updateStatus()\n });\n } else {\n helperFunctions.emitEvent('StatusClick',[attrs, this.props.dispatch]);\n }\n }\n }\n\n checkSwitchButtom() {\n if (!this.props.chat_ui.has('switch_to_human')) {\n return;\n }\n\n const shouldShowButton =\n this.props.vtm &&\n this.props.vtm >= this.props.chat_ui.get('switch_to_human') &&\n this.props.survey_mode === false;\n\n const toggleTransferButton = (show) => {\n const transferButton = document.getElementById('transfer-to-human-btn');\n if (transferButton) {\n transferButton.classList[show ? 'remove' : 'add']('hide');\n }\n };\n\n if (shouldShowButton) {\n axios.get(`${window.lhcChat['base_url']}restapi/isonlinechat/${this.props.chat.get('id')}?exclude_bot=true`)\n .then(response => {\n toggleTransferButton(response.data.isonline);\n })\n } else {\n toggleTransferButton(false);\n }\n }\n\n\n componentDidMount() {\n this.checkSwitchButtom();\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.checkSwitchButtom();\n }\n\n render() {\n return parse(this.props.status, {\n replace: domNode => {\n if (domNode.attribs && domNode.attribs.onclick) {\n if (domNode.name && (domNode.name == 'i' || domNode.name == 'a')) {\n\n var cloneAttr = Object.assign({}, domNode.attribs);\n\n if (domNode.attribs.class) {\n domNode.attribs.className = domNode.attribs.class;\n delete domNode.attribs.class;\n }\n\n if (domNode.attribs.onclick) {\n delete domNode.attribs.onclick;\n }\n\n let result = <i {...domNode.attribs} onClick={(e) => this.abstractClick(cloneAttr)} >{domToReact(domNode.children)}</i>;\n\n return result;\n }\n }\n }\n });\n }\n}\n\nexport default ChatStatus;\n","import React, { PureComponent } from 'react';\nimport SharedTextarea from './SharedTextarea';\n\nclass ChatIntroStatus extends PureComponent {\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n let elm = document.getElementById('messages-scroll');\n if (elm) {\n elm.scrollTop = elm.scrollHeight + 1000;\n }\n }\n\n render() {\n return <React.Fragment>\n {this.props.profileBefore !== null && <div dangerouslySetInnerHTML={{__html:this.props.profileBefore}}></div>}\n <div className={this.props.msg_expand} id=\"messagesBlock\" dangerouslySetInnerHTML={{__html:this.props.messagesBefore}}></div>\n {!this.props.hideMessageField && <div className=\"d-flex flex-row border-top position-relative message-send-area\">\n <div className=\"btn-group dropup disable-select ps-1 pt-2\"><button type=\"button\" class=\"border-0 p-0 material-icons settings text-muted\" id=\"chat-dropdown-options\" role=\"button\" data-bs-toggle=\"dropdown\" tabindex=\"0\" aria-haspopup=\"true\" aria-expanded=\"false\"></button></div>\n <div className=\"mx-auto w-100\">\n {/* <textarea aria-label=\"Type your message here...\" defaultValue={this.props.value} placeholder={this.props.placeholderMessage} readOnly=\"readOnly\" id=\"CSChatMessage\" rows=\"1\" className=\"ps-0 no-outline form-control rounded-0 form-control rounded-start-0 rounded-end-0 border-0\" /> */}\n <SharedTextarea\n text={this.props.value}\n textMaxLength=\"500\"\n textAutoFocus={true}\n classNameText=\"ps-0 no-outline form-control rounded-0 form-control rounded-start-0 rounded-end-0 border-0\"\n textPlaceholder={this.props.placeholderMessage}\n textareaRef={this.props.textMessageRef}\n />\n </div>\n <div className=\"disable-select\">\n <div className=\"user-chatwidget-buttons pt-2 pe-1\" id=\"ChatSendButtonContainer\">\n <i className=\"material-icons text-muted-light settings me-0\"></i>\n </div>\n </div>\n </div>}\n </React.Fragment>;\n }\n}\n\nexport default ChatIntroStatus;\n","import React, { Component } from 'react';\nimport { connect } from \"react-redux\";\nimport parse from 'html-react-parser';\nimport { initChatUI, fetchMessages, addMessage, checkChatStatus, endChat, userTyping, minimizeWidget, setSiteAccess, updateMessage, cancelPresurvey, removeFilePreview} from \"../actions/chatActions\"\nimport { STATUS_CLOSED_CHAT, STATUS_BOT_CHAT, STATUS_SUB_SURVEY_SHOW, STATUS_SUB_USER_CLOSED_CHAT } from \"../constants/chat-status\";\nimport ChatMessage from './ChatMessage';\nimport ChatModal from './ChatModal';\nimport ChatFileUploader from './ChatFileUploader';\nimport ChatSync from './ChatSync';\nimport ChatOptions from './ChatOptions';\nimport ChatStatus from './ChatStatus';\nimport ChatIntroStatus from './ChatIntroStatus';\nimport ChatAbort from './ChatAbort';\nimport SharedTextarea from './SharedTextarea';\n\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport { withTranslation } from 'react-i18next';\n\nimport { Suspense, lazy } from 'react';\n\nconst VoiceMessage = React.lazy(() => import('./VoiceMessage'));\nconst MailModal = React.lazy(() => import('./MailModal'));\nconst FontSizeModal = React.lazy(() => import('./FontSizeModal'));\nconst CustomHTML = React.lazy(() => import('./CustomHTML'));\nconst FilePreview = React.lazy(() => import('./FilePreview'));\n\n@connect((store) => {\n return {\n chatwidget: store.chatwidget\n };\n})\n\nclass OnlineChat extends Component {\n\n state = {\n value: '',\n changeLanguage: false,\n showBBCode : null,\n mailChat : false,\n dragging : false,\n enabledEditor : true,\n showMessages : false,\n preloadSurvey : false, // Should survey be preloaded\n gotToSurvey : false,\n voiceMode : false,\n showMail : false,\n changeFontSize : false,\n errorMode: false,\n hasNew: false,\n newId: 0, // From what index there is a new messages\n scrollButton: false,\n fontSize: 100,\n reactToMsgId: 0,\n otm: 0, // New operator messages\n messages_ui: true, // Is visitor in messages UI, in case extension has overlay and messages was received\n previewFiles: [] // File previews before sending\n };\n\n constructor(props) {\n super(props);\n\n // Init offline form with all attributes\n this.props.dispatch(initChatUI({\n 'id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'theme' : this.props.chatwidget.get('theme')\n }));\n\n this.updateMessages();\n this.updateStatus();\n\n this.enterKeyDown = this.enterKeyDown.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.sendMessage = this.sendMessage.bind(this);\n this.endChat = this.endChat.bind(this);\n this.mailChat = this.mailChat.bind(this);\n this.changeFont = this.changeFont.bind(this);\n this.voiceCall = this.voiceCall.bind(this);\n this.toggleModal = this.toggleModal.bind(this);\n this.setStatusText = this.setStatusText.bind(this);\n this.dragging = this.dragging.bind(this);\n this.scrollBottom = this.scrollBottom.bind(this);\n this.focusMessage = this.focusMessage.bind(this);\n this.setEditorEnabled = this.setEditorEnabled.bind(this);\n this.sendDelay = this.sendDelay.bind(this);\n this.unhideDelayed = this.unhideDelayed.bind(this);\n this.toggleSound = this.toggleSound.bind(this);\n this.goToSurvey = this.goToSurvey.bind(this);\n this.startVoiceRecording = this.startVoiceRecording.bind(this);\n this.cancelVoiceRecording = this.cancelVoiceRecording.bind(this);\n this.onScrollMessages = this.onScrollMessages.bind(this);\n this.scrollToMessage = this.scrollToMessage.bind(this);\n this.changeFontAction = this.changeFontAction.bind(this);\n this.setLanguageAction = this.setLanguageAction.bind(this);\n this.changeLanguage = this.changeLanguage.bind(this);\n this.onFilePreview = this.onFilePreview.bind(this);\n this.removeFilePreview = this.removeFilePreview.bind(this);\n\n // Messages Area\n this.messagesAreaRef = React.createRef();\n this.textMessageRef = this.props.textMessageRef; // React.createRef();\n\n this.updateMessages = this.updateMessages.bind(this);\n this.updateMessage = this.updateMessage.bind(this);\n this.updateStatus = this.updateStatus.bind(this);\n this.abstractAction = this.abstractAction.bind(this);\n this.updateMetaAutoHide = this.updateMetaAutoHide.bind(this);\n this.setMetaUpdateState = this.setMetaUpdateState.bind(this);\n this.keyUp = this.keyUp.bind(this);\n\n this.delayed = false;\n this.delayQueue = [];\n this.intervalPending = null;\n this.intervalFunction = null;\n this.unhideDelayedTimer = null;\n this.pendingMetaUpdate = false;\n this.timeoutNewMessage = null;\n this.timeoutScroll = null;\n this.widgetWasOpened = false;\n\n this.isTyping = false;\n this.typingStopped = null;\n this.typingStoppedAction = this.typingStoppedAction.bind(this);\n this.currentMessageTyping = '';\n }\n\n dragging(status) {\n this.setState({dragging : status})\n }\n\n goToSurvey() {\n this.props.dispatch({\n 'type': 'UI_STATE',\n 'data' : {attr: 'show_survey', 'val': 1}\n });\n this.setState({'gotToSurvey' : true});\n }\n\n setStatusText(text){\n this.props.dispatch({\n 'type': 'chat_status_changed',\n 'data' : {text: text}\n });\n }\n\n startVoiceRecording() {\n this.setState({voiceMode: true});\n }\n\n cancelVoiceRecording() {\n this.setState({voiceMode: false});\n }\n\n handleChange(event) {\n this.setState({value: event.target.value});\n helperFunctions.setSessionStorage('_ttxt',event.target.value);\n }\n\n onScrollMessages() {\n if (this.messagesAreaRef.current) {\n\n // If there was any scroll action\n // We want to remember any other scroll position\n this.widgetWasOpened = true;\n\n let scrollValue = this.messagesAreaRef.current.scrollHeight - this.messagesAreaRef.current.scrollTop;\n // Scroll to bottom if from bottom there is already less than 70px\n if ((scrollValue - this.messagesAreaRef.current.offsetHeight) > 70 ) {\n if (this.state.scrollButton !== true) {\n this.setState({scrollButton: true});\n }\n } else if (this.state.scrollButton !== false) {\n this.setState({scrollButton: false, otm: 0, hasNew: false, newId: 0});\n this.props.dispatch({'type' : 'UPDATE_LIVE_DATA', 'data' : {'attr': 'lfmsgid', 'val': 0}});\n }\n }\n }\n\n scrollToMessage() {\n\n if (this.state.hasNew == true) {\n clearTimeout(this.timeoutNewMessage);\n this.timeoutNewMessage = setTimeout(() => {this.setState({hasNew: false, newId: 0})},1000);\n }\n\n if (this.state.hasNew == true && this.state.otm > 0) {\n this.setState({otm: 0})\n try {\n document.getElementById('scroll-to-message').scrollIntoView();\n } catch (e) {\n this.scrollBottom();\n }\n } else {\n this.scrollBottom();\n }\n }\n\n changeFontAction(action){\n this.setState({\n fontSize: this.state.fontSize + (action == true ? 5 : -5)\n });\n helperFunctions.setLocalStorage('_dfs',this.state.fontSize);\n this.scrollBottom();\n }\n\n setLanguageAction(lng) {\n helperFunctions.setLocalStorage('_lng',lng);\n this.setState({\n changeLanguage: false\n });\n setSiteAccess({\n 'lng' : lng,\n 'id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n });\n helperFunctions.emitEvent('change_language', [lng]);\n this.updateStatus();\n }\n\n componentDidMount() {\n\n var txtTyping = helperFunctions.getSessionStorage('_ttxt');\n if (txtTyping !== null) {\n this.setState({value: txtTyping})\n }\n\n var defaultFontSize = helperFunctions.getLocalStorage('_dfs');\n if (defaultFontSize !== null) {\n this.setState({fontSize: parseInt(defaultFontSize)})\n }\n\n // We want to focus only if widget is open\n var elm = document.getElementById('CSChatMessage');\n if (elm !== null && ((this.props.chatwidget.get('shown') === true && this.props.chatwidget.get('mode') == 'widget') || this.props.chatwidget.get('mode') == 'popup')) {\n elm.focus();\n }\n }\n\n focusMessage() {\n if (this.textMessageRef.current) {\n this.textMessageRef.current.focus();\n if (this.state.value.length > 0) {\n this.textMessageRef.current.selectionStart = this.state.value.length;\n this.textMessageRef.current.selectionEnd = this.state.value.length;\n }\n }\n }\n\n setEditorEnabled(status) {\n this.setState({'enabledEditor' : status});\n }\n\n hasClass(el, name) {\n return new RegExp('(\\\\s|^)'+name+'(\\\\s|$)').test(el.className);\n }\n\n addClass (el, name) {\n if (!this.hasClass(el, name)) { el.className += (el.className ? ' ' : '') +name; }\n }\n\n removeClass(el, name) {\n if (this.hasClass(el, name)) {\n el.className=el.className.replace(new RegExp('(\\\\s|^)'+name+'(\\\\s|$)'),' ').replace(/^\\s+|\\s+$/g, '');\n }\n }\n\n setMetaUpdateState(state) {\n\n if (state === false && this.pendingMetaUpdate === true){\n this.pendingMetaUpdate = false;\n this.updateMetaAutoHide(true);\n this.doScrollBottom();\n }\n\n if (state === true) {\n this.pendingMetaUpdate = true;\n this.updateMetaAutoHide();\n this.doScrollBottom();\n }\n\n }\n\n updateMetaAutoHide(hideFirst) {\n var block = document.getElementById('messages-scroll');\n if (!block){\n return;\n }\n\n let selector = '.meta-auto-hide, .meta-auto-hide-normal';\n var x = block.querySelectorAll(selector);\n\n if (x.length > 0) {\n var i;\n var lengthHide = hideFirst ? 0 : 1;\n for (i = 0; i < x.length - lengthHide ; i++) {\n x[i].style.display = 'none';\n }\n var lastChild = block.lastChild;\n\n // Checking not null not enough, because element can be text type\n if (lastChild && typeof lastChild.getElementsByClassName !== 'undefined') {\n x = lastChild.querySelectorAll(selector);\n var i;\n for (i = 0; i < x.length; i++) {\n x[i].style.display = '';\n }\n }\n }\n /*['meta-auto-hide','meta-auto-hide-normal'].forEach(function(className){\n var x = block.getElementsByClassName(className);\n if (x.length > 0) {\n var i;\n var lengthHide = hideFirst ? 0 : 1;\n for (i = 0; i < x.length - lengthHide ; i++) {\n x[i].style.display = 'none';\n }\n var lastChild = block.lastChild;\n\n // Checking not null not enough, because element can be text type\n if (lastChild && typeof lastChild.getElementsByClassName !== 'undefined') {\n x = lastChild.getElementsByClassName(className);\n var i;\n for (i = 0; i < x.length; i++) {\n x[i].style.display = '';\n }\n }\n }\n });*/\n }\n\n nextUntil(htmlElement, match, condition = true, any = false) {\n var nextUntil = [],\n until = true;\n\n while (htmlElement = htmlElement.nextElementSibling) {\n (until && htmlElement && !htmlElement.matches(match) == condition) ? nextUntil.push(htmlElement) : until = any;\n }\n return nextUntil;\n }\n\n sendDelay(params) {\n var id = params['id'],\n duration = params['duration'],\n delay = params['delay'],\n untillMessage = params['untill_message'],\n msg = document.getElementById('msg-'+id);\n\n if (!msg) {\n return;\n }\n\n if (delay > 0) {\n this.addClass(msg,'hide');\n }\n\n if (untillMessage == true && this.nextUntil(msg,'.message-admin', false, true).length > 0) {\n return;\n }\n\n setTimeout( () => {\n if (this.delayed == false) {\n if (untillMessage == true) {\n\n // Call previous function if it exists\n if (this.intervalFunction !== null) {\n this.intervalFunction();\n }\n\n this.intervalFunction = () => {\n let adminMessages = this.nextUntil(msg,'.message-admin', false, true);\n if (adminMessages.length > 0) {\n msg.parentNode.removeChild(msg);\n\n this.intervalFunction = null;\n clearInterval(this.intervalPending);\n\n adminMessages[0].scrollIntoView();\n //this.scrollBottom(false, false); // We now scroll to very first admin message after it's appearance\n\n } else {\n if (!this.hasClass(msg,'meta-hider'))\n {\n this.addClass(msg,'meta-hider');\n this.addClass(msg,'message-row-typing');\n\n this.removeClass(msg,'hide');\n this.removeClass(msg,'fade-in-fast');\n\n var elementsBody = msg.getElementsByClassName(\"msg-body\");\n\n for (var item of elementsBody) {\n this.removeClass(item, 'hide');\n }\n\n this.scrollBottom(false, false);\n }\n \n if (params['expose_delays'] && !this.hasClass(msg,'message-row-typing-stream'))\n {\n let timePassed = Math.floor(Date.now() / 1000) - parseInt(params['expose_delays']['stime']);\n if (timePassed > 0) {\n let bodyMessage = msg.querySelector('.msg-body');\n if (bodyMessage) {\n for (let i = 1; i <= 3; i++) {\n if (\n params['expose_delays']['delay_expose_' + i] &&\n timePassed > parseInt(params['expose_delays']['delay_expose_' + i]) &&\n bodyMessage.innerText != params['expose_delays']['delay_expose_text_' + i]\n ) {\n bodyMessage.innerText = params['expose_delays']['delay_expose_text_' + i];\n }\n }\n }\n }\n }\n }\n }\n\n clearInterval(this.intervalPending);\n this.intervalFunction();\n this.intervalPending = setInterval(this.intervalFunction, 200);\n } else {\n this.delayed = true;\n\n this.addClass(msg,'meta-hider');\n this.addClass(msg,'message-row-typing');\n\n this.nextUntil(msg,'.meta-hider').forEach((item) => {\n this.addClass(item,'hide');\n });\n\n this.unhideDelayedTimer = setTimeout(() => {\n this.unhideDelayed(id);\n }, duration * 1000);\n\n this.removeClass(msg,'hide');\n this.removeClass(msg,'fade-in-fast');\n\n var elementsBody = msg.getElementsByClassName(\"msg-body\");\n\n for (var item of elementsBody) {\n this.removeClass(item, 'hide');\n }\n\n if (delay > 0) {\n this.updateMetaAutoHide();\n this.scrollBottom(false, false);\n }\n }\n\n } else {\n this.addClass(msg,'message-row-typing');\n this.addClass(msg,'meta-hider');\n this.delayQueue.push({'id' : id, 'delay' : duration});\n }\n },delay*1000);\n }\n\n unhideDelayed(id) {\n\n var msg = document.getElementById('msg-'+id);\n\n if (!msg) {\n return;\n }\n\n let scrollViewScrolled = false;\n\n this.nextUntil(msg,'.meta-hider').forEach((item) => {\n this.removeClass(item,'hide');\n if (scrollViewScrolled == false) {\n item.scrollIntoView();\n scrollViewScrolled = true;\n }\n });\n\n msg.parentNode.removeChild(msg);\n\n this.updateMetaAutoHide();\n //this.scrollBottom(); // We now scroll to first unhidden element\n\n if (this.delayQueue.length > 0) {\n var data = this.delayQueue.shift();\n\n setTimeout(() => {\n this.unhideDelayed(data.id);\n }, data.delay * 1000);\n\n var messageBlock = document.getElementById('msg-'+data.id);\n\n if (messageBlock !== null) {\n this.removeClass(messageBlock,'hide');\n this.removeClass(messageBlock,'fade-in-fast');\n\n var elementsBody = messageBlock.getElementsByClassName(\"msg-body\");\n\n for (var item of elementsBody) {\n this.removeClass(item, 'hide');\n }\n }\n\n } else {\n this.delayed = false;\n }\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalPending);\n clearInterval(this.typingStopped);\n clearTimeout(this.unhideDelayedTimer);\n clearTimeout(this.timeoutNewMessage);\n clearTimeout(this.timeoutScroll);\n }\n\n // https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html\n getSnapshotBeforeUpdate(prevProps, prevState) {\n // Are we adding new item\n if (prevProps.chatwidget.getIn(['chatLiveData','messages']).size != this.props.chatwidget.getIn(['chatLiveData','messages']).size) {\n let setScroll = false;\n let setScrollBottom = true;\n let scrollValue = 0;\n\n if (this.messagesAreaRef.current) {\n scrollValue = this.messagesAreaRef.current.scrollHeight - this.messagesAreaRef.current.scrollTop;\n\n // Scroll to bottom if from bottom there is already less than 70px\n if ((scrollValue - this.messagesAreaRef.current.offsetHeight) < 70) {\n scrollValue = 0;\n } else {\n setScrollBottom = false\n }\n\n setScroll = true;\n }\n\n let hasNewMessages = this.state.hasNew;\n let oldId = hasNewMessages == true ? this.state.newId : 0;\n let otm = hasNewMessages == true ? this.state.otm : 0;\n\n if (prevProps.chatwidget.getIn(['chatLiveData','messages']).size != 0 && this.props.chatwidget.getIn(['chatLiveData','uw']) === false) {\n let widgetOpen = ((this.props.chatwidget.get('shown') && this.props.chatwidget.get('mode') == 'widget') || (this.props.chatwidget.get('mode') != 'widget' && document.hasFocus()));\n if (hasNewMessages == false) {\n hasNewMessages = widgetOpen == false || window.lhcChat['is_focused'] == false || setScrollBottom == false || this.state.messages_ui === false;\n oldId = hasNewMessages == true ? prevProps.chatwidget.getIn(['chatLiveData','messages']).size : 0;\n otm = this.props.chatwidget.getIn(['chatLiveData','otm']);\n } else {\n otm += this.props.chatwidget.getIn(['chatLiveData','otm']);\n }\n\n // Get last message\n let msg = this.props.chatwidget.hasIn(['chat_ui','msg_snippet']) && this.props.chatwidget.getIn(['chatLiveData','messages',-1,'msg']);\n\n helperFunctions.emitEvent('play_sound', [{msop: this.props.chatwidget.getIn(['chatLiveData','msop']), msg_body: msg, 'otm': otm, 'type' : 'new_message', 'sound_on' : (this.props.chatwidget.getIn(['usersettings','soundOn']) === true), 'widget_open' : widgetOpen}]);\n } else {\n hasNewMessages = false;\n oldId = 0;\n otm = 0;\n }\n\n this.setState({hasNew: hasNewMessages, newId: oldId, otm: otm, scrollButton: !setScrollBottom});\n\n if (setScroll == true) {\n return (\n (scrollValue)\n );\n }\n\n // Are we restoring widget visibility\n } else if (prevProps.chatwidget.get('shown') === false && this.props.chatwidget.get('shown') === true) {\n if (this.widgetWasOpened === true && this.messagesAreaRef.current) {\n return this.messagesAreaRef.current.scrollHeight - this.messagesAreaRef.current.scrollTop;\n }\n this.widgetWasOpened = true;\n return 0;\n } else if (this.props.chatwidget.getIn(['chatLiveData','error']) && (\n (this.props.chatwidget.getIn(['chatLiveData','lmsg']) && (this.state.errorMode == false || this.props.chatwidget.getIn(['chatLiveData','lmsg']) != prevProps.chatwidget.getIn(['chatLiveData','lmsg']))) ||\n (!this.props.chatwidget.getIn(['chatLiveData','lmsg']) && this.state.errorMode == false)))\n {\n this.setState({errorMode: true, value: this.props.chatwidget.getIn(['chatLiveData','lmsg'])});\n } else if (!this.props.chatwidget.getIn(['chatLiveData','error']) && prevProps.chatwidget.getIn(['chatLiveData','error'])) {\n this.setState({errorMode: false, value: ''});\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n\n // Scroll to the bottom if file preview was attached\n if (prevState.previewFiles.length != this.state.previewFiles.length){\n this.scrollBottom(false, false);\n }\n\n // Update untill we are sure that messages can be shown\n if (\n this.state.showMessages === false ||\n prevProps.chatwidget.getIn(['chatLiveData','status']) != this.props.chatwidget.getIn(['chatLiveData','status']) ||\n prevProps.chatwidget.getIn(['chatLiveData','msg_to_store']).size != this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size\n ) {\n if (this.props.chatwidget.get('newChat') == true && this.props.chatwidget.getIn(['chatLiveData','messages']).size == 1) {\n this.scrollBottom(false, true);\n } else {\n this.scrollBottom(false, prevProps.chatwidget.getIn(['chatLiveData','msg_to_store']).size != this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size);\n }\n }\n\n var smartScroll = false;\n\n if (\n (prevState.enabledEditor === false && prevState.enabledEditor != this.state.enabledEditor && (smartScroll = true) == true) ||\n (this.props.chatwidget.get('msgLoaded') !== prevProps.chatwidget.get('msgLoaded') && (this.props.chatwidget.get('newChat') == false || (smartScroll = true) == true))\n ) {\n if (smartScroll == false) {\n this.scrollBottom(false, false);\n } else {\n this.scrollBottom(false, true);\n }\n\n if (!(this.props.chatwidget.getIn(['chat_ui','auto_start']) === true && this.props.chatwidget.get('mode') == 'embed') || (this.props.chatwidget.getIn(['chat_ui','auto_start']) === false && this.props.chatwidget.get('mode') == 'embed') || (prevState.enabledEditor === false && prevState.enabledEditor != this.state.enabledEditor)) {\n this.focusMessage();\n // Sometimes component is not rendered itself. We want to be 100% sure it will always have a focus.\n setTimeout(() => {\n this.focusMessage();\n },500);\n }\n }\n\n if (snapshot !== null) {\n if (this.messagesAreaRef.current) {\n\n var msgScroller = document.getElementById('messages-scroll');\n var messageElement = document.getElementById('scroll-to-message') || document.getElementById('msg-'+this.props.chatwidget.getIn(['chatLiveData','lfmsgid']));\n\n if (msgScroller && messageElement && messageElement.className.indexOf('ignore-auto-scroll') === -1 && (msgScroller.scrollHeight - msgScroller.offsetHeight) - messageElement.offsetTop > 70) {\n this.setState({scrollButton: true});\n // this.messagesAreaRef.current.scrollTop = messageElement.offsetTop - 3;\n messageElement.scrollIntoView();\n } else {\n this.messagesAreaRef.current.scrollTop = this.messagesAreaRef.current.scrollHeight - snapshot;\n }\n }\n }\n\n if (this.props.chatwidget.getIn(['chat_ui_state','confirm_close']) == 1 && this.state.preloadSurvey === false) {\n this.setState({'preloadSurvey':true});\n }\n\n // Auto focus if it's show operation\n if (prevProps.chatwidget.get('shown') === false && this.props.chatwidget.get('shown') === true && this.props.chatwidget.get('mode') == 'widget' && this.textMessageRef.current) {\n this.textMessageRef.current.focus();\n }\n\n // We show start form instantly if it's enabled\n if (this.props.chatwidget.getIn(['chat_ui','start_on_close']) === true && this.props.chatwidget.getIn(['chatLiveData','closed']) === true && (typeof prevProps.chatwidget.getIn(['chatLiveData','closed']) === 'undefined' || prevProps.chatwidget.hasIn(['chatLiveData','closed']) === false || prevProps.chatwidget.getIn(['chatLiveData','closed']) === false)) {\n if (!this.props.chatwidget.getIn(['chat_ui','survey_id'])) {\n this.props.endChat({\"show_start\": this.props.chatwidget.get('shown')});\n }\n }\n\n if (this.props.chatwidget.getIn(['chatLiveData','closed']) === true && this.props.chatwidget.getIn(['chatLiveData','status_sub']) === 0 && prevProps.chatwidget.getIn(['chatLiveData','status_sub']) === 5) {\n this.props.dispatch(initChatUI({\n 'id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'theme' : this.props.chatwidget.get('theme')\n }));\n }\n\n // At the moment not used because logic migrated to one time call componentDidMount\n if (this.props.chatwidget.get('shown') === true && (this.props.chatwidget.get('mode') == 'widget' || this.props.chatwidget.get('mode') == 'embed') && this.props.chatwidget.get('initLoaded') === true && this.props.chatwidget.get('msgLoaded') === true && (prevProps.chatwidget.get('msgLoaded') == false || prevProps.chatwidget.get('initLoaded') == false)) {\n\n if (this.props.chatwidget.get('mode') == 'widget') {\n this.textMessageRef.current && this.textMessageRef.current.focus();\n }\n }\n\n if (this.intervalFunction !== null) {\n this.intervalFunction();\n }\n }\n\n doScrollBottom(smartScroll) {\n if (this.messagesAreaRef.current) {\n var messageElement;\n if (smartScroll && (messageElement = document.getElementById('msg-'+this.props.chatwidget.getIn(['chatLiveData','lfmsgid']))) !== null && messageElement.className.indexOf('ignore-auto-scroll') === -1 ) {\n // this.messagesAreaRef.current.scrollTop = messageElement.offsetTop - 3;\n messageElement.scrollIntoView();\n } else {\n this.messagesAreaRef.current.scrollTop = this.messagesAreaRef.current.scrollHeight + 1000;\n }\n }\n }\n\n scrollBottom(onlyIfAtBottom, smartScroll) {\n if (this.messagesAreaRef.current && (!onlyIfAtBottom || !this.state.scrollButton)) {\n\n clearTimeout(this.timeoutScroll);\n\n this.doScrollBottom(smartScroll);\n\n this.timeoutScroll = setTimeout(() => {\n this.doScrollBottom(smartScroll);\n if (this.state.showMessages === false) {\n this.setState({'showMessages':true});\n }\n },450);\n }\n }\n\n abstractAction(action, params) {\n helperFunctions.emitEvent(action, params);\n }\n\n updateMessage(messageId) {\n this.props.dispatch(updateMessage({\n 'msg_id' : messageId,\n 'lmgsid' : this.props.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'mode' : this.props.chatwidget.get('mode'),\n 'theme' : this.props.chatwidget.get('theme'),\n 'id' : this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'no_scroll' : true\n }));\n }\n\n updateMessages(paramsUpdate) {\n var params = {\n 'chat_id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'lmgsid' : this.props.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'lfmsgid' : this.props.chatwidget.getIn(['chatLiveData','lfmsgid']),\n 'theme' : this.props.chatwidget.get('theme'),\n 'new_chat' : this.props.chatwidget.get('newChat'),\n 'active_widget' : (((this.props.chatwidget.get('shown') && this.props.chatwidget.get('mode') == 'widget') || (this.props.chatwidget.get('mode') != 'widget' && document.hasFocus())) && window.lhcChat['is_focused'] == true && this.state.messages_ui !== false)\n };\n\n // If it's new chat check do we have last message from previous chat if so send it also\n if (params.new_chat && params.lmgsid === 0) {\n params['old_msg_id'] = this.props.chatwidget.getIn(['chatData','lmsg_id'])\n }\n\n this.props.dispatch(fetchMessages(params));\n\n if (paramsUpdate && paramsUpdate[\"check_focus\"] && this.props.chatwidget.get('isMobile') === false) {\n this.focusMessage();\n }\n }\n\n updateStatus() {\n this.props.dispatch(checkChatStatus({\n 'chat_id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'theme' : this.props.chatwidget.get('theme'),\n 'mode' : this.props.chatwidget.get('mode')\n }));\n }\n\n sendMessage() {\n\n if (this.state.value.length == 0 && this.state.previewFiles.length == 0) {\n return;\n }\n\n helperFunctions.setSessionStorage('_ttxt','');\n\n // Because message was added we want to reset scroll action, as visitor does not care about it\n this.setState({scrollButton: false, otm: 0, hasNew: false, newId: 0});\n this.props.dispatch({'type' : 'UPDATE_LIVE_DATA', 'data' : {'attr': 'lfmsgid', 'val': 0}});\n\n // Add file BBCode for each preview file\n let attachments = this.state.previewFiles.map(file => { \n return {\n 'id': file.id,\n 'security_hash': file.security_hash || 'preview'}\n });\n \n this.props.dispatch(addMessage({\n 'id': this.props.chatwidget.getIn(['chatData','id']),\n 'hash' : this.props.chatwidget.getIn(['chatData','hash']),\n 'msg' : this.state.value,\n 'mn' : this.props.chatwidget.hasIn(['chat_ui','mn']),\n 'theme' : this.props.chatwidget.get('theme'),\n 'lmgsid' : this.props.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'attachments': attachments\n }));\n\n this.setState({value: '', errorMode : false, previewFiles: []});\n this.currentMessageTyping = '';\n this.focusMessage();\n this.doScrollBottom();\n }\n\n enterKeyDown(e) {\n if (e.key === 'Enter' && !e.shiftKey) {\n if (!this.props.chatwidget.getIn(['chatLiveData','lock_send'])) {\n this.sendMessage();\n }\n e.preventDefault();\n }\n }\n\n keyUp(e) {\n if (e.key !== 'Enter' && !e.shiftKey) {\n if (this.isTyping === false) {\n const { t } = this.props;\n this.isTyping = true;\n this.props.dispatch(userTyping('true',this.props.chatwidget.hasIn(['chat_ui','hide_typing']) && this.props.chatwidget.getIn(['chat_ui','hide_typing']) === true ? t('online_chat.visitor_typing') : this.state.value));\n } else {\n clearTimeout(this.typingStopped);\n this.typingStopped = setTimeout(this.typingStoppedAction, 6000);\n if (this.currentMessageTyping != this.state.value ) {\n if (Math.abs(this.currentMessageTyping.length - this.state.value.length) > 6 || this.props.chatwidget.get('overrides').contains('typing')) {\n const { t } = this.props;\n this.currentMessageTyping = this.state.value;\n this.props.dispatch(userTyping('true', this.props.chatwidget.hasIn(['chat_ui','hide_typing']) && this.props.chatwidget.getIn(['chat_ui','hide_typing']) === true ? t('online_chat.visitor_typing') : this.state.value));\n }\n }\n }\n }\n }\n\n typingStoppedAction() {\n if (this.isTyping == true) {\n this.isTyping = false;\n this.props.dispatch(userTyping('false'));\n }\n }\n\n endChat() {\n this.props.endChat({\"show_start\": this.props.chatwidget.get('shown')});\n }\n\n toggleModal() {\n this.setState({\n showBBCode: !this.state.showBBCode\n });\n\n if (this.state.showBBCode) {\n this.focusMessage()\n }\n }\n\n mailChat() {\n this.setState({\n showMail: !this.state.showMail\n });\n }\n\n changeLanguage() {\n this.setState({\n changeLanguage: !this.state.changeLanguage\n });\n }\n\n changeFont() {\n this.setState({\n changeFontSize: !this.state.changeFontSize\n });\n }\n\n voiceCall() {\n\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - parseInt(800)) / 2 / systemZoom + dualScreenLeft;\n const top = (height - parseInt(600)) / 2 / systemZoom + dualScreenTop;\n\n var paramsWindow = \"scrollbars=yes,menubar=1,resizable=1,width=800,height=600,top=\" + top + \",left=\" + left;\n var newWin = window.open(\"\", helperFunctions.prefix + '_voice_popup_v2', paramsWindow);\n var needWindow = false;\n var windowCreated = false;\n\n // First try to find any existing window\n try {\n // It has to be new window or popup was blocked\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined' || newWin.location.href === \"about:blank\") {\n newWin = window.open(this.props.chatwidget.get('base_url') + \"voicevideo/call/\" + this.props.chatwidget.getIn(['chatData', 'id']) + '/' + this.props.chatwidget.getIn(['chatData', 'hash']), helperFunctions.prefix + '_voice_popup_v2', paramsWindow);\n windowCreated = true;\n } else {\n needWindow = true;\n }\n } catch (e) { // We get cross-origin error only if window exist and it's location is other one than about:blank\n needWindow = true;\n }\n\n // Now if visitor has blocked popup change chat status link and just allow browser handle the rest.\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined') {\n try {\n // Change href to open window\n } catch (e) {\n alert('You have disabled popups!');\n }\n } else if (windowCreated == true) {\n /*typeof chatEvents !== 'undefined' && chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();*/\n } else if (needWindow === true) {\n newWin.focus();\n }\n\n }\n\n toggleSound() {\n this.props.dispatch({type : 'toggleSound', data: !this.props.chatwidget.getIn(['usersettings','soundOn'])});\n helperFunctions.sendMessageParent('toggleSound', [{'sender' : 'toolbarButton'}]);\n }\n\n // http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/\n insertText = (text) => {\n var caretPos = this.textMessageRef.current.selectionStart;\n this.setState({value: (this.state.value.substring(0, caretPos) + text + this.state.value.substring(caretPos))});\n }\n\n onFilePreview(fileData) {\n this.setState(prevState => {\n // If one_file_upload is enabled, replace existing files instead of adding\n if (this.props.chatwidget.getIn(['chat_ui', 'file_options', 'one_file_upload']) === true) {\n // Remove existing files first\n prevState.previewFiles.forEach(file => {\n this.handleFileRemoval(file);\n });\n return {\n previewFiles: [fileData]\n };\n }\n // Otherwise, add to existing files but limit to 4 files maximum\n if (prevState.previewFiles.length >= 4) {\n // Remove the oldest file (first in array) and add the new one\n const oldestFile = prevState.previewFiles[0];\n this.handleFileRemoval(oldestFile);\n return {\n previewFiles: [...prevState.previewFiles.slice(1), fileData]\n };\n }\n return {\n previewFiles: [...prevState.previewFiles, fileData]\n };\n });\n }\n\n handleFileRemoval(file) {\n // Clean up blob URLs to prevent memory leaks\n if (file.previewUrl && file.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(file.previewUrl);\n }\n \n // If file has been uploaded to server (has security_hash), remove it from server\n if (file.security_hash && file.security_hash !== 'preview') {\n this.props.dispatch(removeFilePreview({\n 'file_id': file.id,\n 'security_hash': file.security_hash\n })).then(() => {\n \n }).catch((error) => {\n console.warn('Failed to remove file from server:', error);\n // Continue with local removal even if server removal fails\n });\n }\n }\n\n removeFilePreview(fileId) {\n this.setState(prevState => {\n const fileToRemove = prevState.previewFiles.find(file => file.id === fileId);\n if (fileToRemove) {\n this.handleFileRemoval(fileToRemove);\n }\n return {\n previewFiles: prevState.previewFiles.filter(file => file.id !== fileId)\n };\n });\n }\n\n render() {\n const { t } = this.props;\n\n if (this.props.chatwidget.get('initLoaded') === false || this.props.chatwidget.get('msgLoaded') === false) {\n\n var msg_expand = \"flex-grow-1 overflow-scroll position-relative\";\n\n if (this.props.chatwidget.hasIn(['chat_ui','msg_expand'])) {\n msg_expand = \"overflow-scroll position-relative\";\n }\n\n // If this data is not fetched it's not a form submit render and we can skip completely intro as it's just first time widget render on page refresh\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === false) {\n return null;\n }\n\n return <ChatIntroStatus textMessageRef={this.textMessageRef} value={this.state.value} profileBefore={this.props.profileBefore} msg_expand={msg_expand} messagesBefore={this.props.messagesBefore} placeholderMessage={this.props.chatwidget.hasIn(['chat_ui','placeholder_message']) ? this.props.chatwidget.getIn(['chat_ui','placeholder_message']) : t('chat.type_here')} />;\n }\n \n if (this.props.chatwidget.hasIn(['chatLiveData','ru']) && this.props.chatwidget.getIn(['chatLiveData','ru'])) {\n\n location = this.props.chatwidget.get('base_url') + this.props.chatwidget.getIn(['chatLiveData','ru']);\n\n return (\n <React.Fragment>\n <iframe allowtransparency=\"true\" src={location} frameBorder=\"0\" className=\"flex-grow-1 position-relative iframe-modal\"/>\n </React.Fragment>\n )\n\n } else {\n\n if (this.props.chatwidget.get('chatLiveData').has('messages')) {\n var messages = this.props.chatwidget.getIn(['chatLiveData','messages']).map((msg, index) =><ChatMessage minimizeWidget={(e) => this.props.dispatch(minimizeWidget())} isMobile={this.props.chatwidget.get('isMobile')} reactToMessageId={this.state.reactToMsgId} setReactingTo={(messageId) => this.setState({'reactToMsgId' : messageId})} themeId={this.props.chatwidget.get('theme')} profilePic={this.props.chatwidget.get('profile_pic')} embedMode={this.props.chatwidget.get('mode')} targetSame={this.props.chatwidget.getIn(['chat_ui','same_target_link'])} printButton={this.props.chatwidget.getIn(['chat_ui','print_btn_msg'])} newTitle={this.props.chatwidget.getIn(['chat_ui','cnew_msgh']) || t('button.new')} newId={this.state.newId} hasNew={this.state.hasNew} voiceCall={this.voiceCall} endChat={this.props.endChat} setMetaUpdateState={this.setMetaUpdateState} sendDelay={this.sendDelay} setEditorEnabled={this.setEditorEnabled} abstractAction={this.abstractAction} updateStatus={this.updateStatus} focusMessage={this.focusMessage} updateMessage={this.updateMessage} updateMessages={this.updateMessages} scrollBottom={this.scrollBottom} id={index} key={'msg_'+index} msg={msg} />);\n } else {\n var messages = \"\";\n }\n\n var placeholder = '';\n if (this.state.dragging === true) {\n placeholder = t('chat.drop_files');\n } else if (this.props.chatwidget.getIn(['chatLiveData','closed'])) {\n placeholder = t('chat.chat_closed');\n } else if (this.state.previewFiles.length > 0) {\n placeholder = this.props.chatwidget.hasIn(['chat_ui','placeholder_file_message']) ? this.props.chatwidget.getIn(['chat_ui','placeholder_file_message']) : t('chat.files_attached');\n } else {\n placeholder = this.props.chatwidget.hasIn(['chat_ui','placeholder_message']) ? this.props.chatwidget.getIn(['chat_ui','placeholder_message']) : t('chat.type_here');\n }\n\n var msg_expand = \"flex-grow-1 overflow-scroll position-relative\";\n var bottom_messages = \"bottom-message px-1\";\n\n if (this.props.chatwidget.hasIn(['chat_ui','show_ts'])){\n bottom_messages += \" show-msg-ts\";\n if (this.props.chatwidget.hasIn(['chat_ui','show_ts_below'])){\n bottom_messages += \" show-msg-ts-below\";\n }\n }\n\n if (this.props.chatwidget.hasIn(['chat_ui','msg_expand']) && this.props.chatwidget.get('mode') == 'embed') {\n msg_expand = \"overflow-scroll position-relative\";\n bottom_messages += \" position-relative\";\n }\n\n if (this.props.chatwidget.hasIn(['chatLiveData','msg_to_store']) && this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size > 0) {\n bottom_messages += \" has-msg-to-store\";\n }\n\n if (this.props.chatwidget.get('shown') === false && this.widgetWasOpened === false) {\n bottom_messages += \" invisible\";\n }\n\n var message_send_style = \"mx-auto w-100\";\n\n if (this.props.chatwidget.getIn(['chatLiveData','closed']) == true) {\n message_send_style += (this.props.chatwidget.get('mode') == 'embed' ? ' pe-2' : ' pe-1');\n }\n\n /**\n * Survey handling logic\n * */\n var showChat = true;\n var preloadSurvey = false;\n var forceSurvey = false;\n\n var location = \"\";\n var classSurvey = \"flex-grow-1 position-relative iframe-modal content-loader mb-2\";\n\n var validSurveyState = (this.props.chatwidget.hasIn(['chatLiveData','status_sub']) &&\n (\n this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_SURVEY_SHOW\n ||\n (\n this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_USER_CLOSED_CHAT &&\n (\n this.props.chatwidget.getIn(['chatLiveData','uid']) > 0 || this.props.chatwidget.getIn(['chatLiveData','status']) === STATUS_BOT_CHAT || this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT\n )\n )\n )\n )\n ||\n (this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT && this.props.chatwidget.getIn(['chatLiveData','uid']) > 0) ||\n this.state.gotToSurvey === true;\n\n if ((this.props.chatwidget.hasIn(['chatLiveData','status_sub']) && this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_SURVEY_SHOW) || (\n this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT &&\n this.props.chatwidget.getIn(['chatLiveData','status_sub']) != STATUS_SUB_USER_CLOSED_CHAT\n )) {\n forceSurvey = true;\n }\n\n if ((this.state.preloadSurvey === true || validSurveyState) && this.props.chatwidget.hasIn(['chat_ui','survey_id'])) {\n location = this.props.chatwidget.get('base_url') + \"survey/fillwidget/(chatid)/\" + this.props.chatwidget.getIn(['chatData', 'id']) + \"/(hash)/\" + this.props.chatwidget.getIn(['chatData', 'hash']);\n\n if (this.props.chatwidget.get('theme')) {\n location = location + '/(theme)/' + this.props.chatwidget.get('theme');\n }\n\n location = location + '/(survey)/' + this.props.chatwidget.getIn(['chat_ui', 'survey_id']) + (forceSurvey === true ? '/(force)/true' : '');\n \n if (this.props.chatwidget.hasIn(['chat_ui', 'survey_url'])) {\n location = this.props.chatwidget.getIn(['chat_ui', 'survey_url']).replace('{chat_id}',this.props.chatwidget.getIn(['chatData', 'id'])).replace('{chat_hash}',this.props.chatwidget.getIn(['chatData', 'hash'])) + (forceSurvey === true ? '?force=true' : '');\n }\n\n preloadSurvey = true;\n\n showChat = false;\n\n if (\n (validSurveyState === false) ||\n (this.props.chatwidget.hasIn(['chat_ui','survey_button']) && this.props.chatwidget.getIn(['chat_ui_state','show_survey']) === 0 &&\n this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT &&\n this.props.chatwidget.getIn(['chatLiveData','status_sub']) != STATUS_SUB_SURVEY_SHOW &&\n this.props.chatwidget.getIn(['chatLiveData','status_sub']) != STATUS_SUB_USER_CLOSED_CHAT\n ) ||\n (this.props.chatwidget.getIn(['chat_ui_state','confirm_close']) == 1)\n ) {\n showChat = true;\n classSurvey = \" d-none\";\n }\n }\n\n const endTitle = this.props.chatwidget.getIn(['chat_ui','end_chat_text']) || t('button.end_chat');\n\n const fontSizeStyle = {fontSize: (this.props.chatwidget.hasIn(['chat_ui','font_size']) ? this.state.fontSize : '100') + '%'};\n\n const taw = this.props.chatwidget.hasIn(['chat_ui','taw']) ? this.props.chatwidget.getIn(['chat_ui','taw']) : 8.6;\n\n return (\n <React.Fragment>\n\n {this.props.chatwidget.getIn(['chatLiveData','abort']) && <ChatAbort closeText={t('button.close')} close={(e) => this.props.dispatch(minimizeWidget(true))} text={this.props.chatwidget.getIn(['chatLiveData','abort'])} />}\n\n {this.props.chatwidget.hasIn(['chat_ui','pre_survey_url']) && this.props.chatwidget.getIn(['chatLiveData','uid']) > 0 && this.props.chatwidget.getIn(['chat_ui_state','pre_survey_done']) !== 2 && (this.props.chatwidget.getIn(['chat_ui_state','pre_survey_done']) === 1 || validSurveyState) && <ChatModal cancelClose={(e) => this.props.dispatch(cancelPresurvey(false))} confirmClose={(e) => this.props.dispatch(cancelPresurvey(true))} toggle={this.props.cancelPresurvey} dataUrl={this.props.chatwidget.getIn(['chat_ui','pre_survey_url']) + this.props.chatwidget.getIn(['chatData','id'])+\"/\"+this.props.chatwidget.getIn(['chatData','hash']) + (this.props.chatwidget.hasIn(['chat_ui','survey_id']) ? '/(hassurvey)/true' : '') + (this.props.chatwidget.get('theme') ? '/(theme)/' + this.props.chatwidget.get('theme') : null)} />}\n\n {preloadSurvey && <React.Fragment>\n {showChat == false && this.props.chatwidget.hasIn(['chatStatusData','result']) && !this.props.chatwidget.hasIn(['chat_ui','hide_status']) && this.props.chatwidget.getIn(['chatStatusData','result']) && <div id=\"chat-status-container\" className={\"p-2 border-bottom live-status-\"+this.props.chatwidget.getIn(['chatLiveData','status'])}><ChatStatus survey_mode={true} updateStatus={this.updateStatus} vtm={this.props.chatwidget.hasIn(['chat_ui','switch_to_human']) && this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_BOT_CHAT ? this.props.chatwidget.getIn(['chatLiveData','vtm']) : 0} status={this.props.chatwidget.getIn(['chatStatusData','result'])} /></div>}\n <iframe allowtransparency=\"true\" src={location} frameBorder=\"0\" className={classSurvey} />\n </React.Fragment>}\n\n {(showChat || preloadSurvey) && <ChatSync hasSurvey={preloadSurvey} syncInterval={this.props.chatwidget.getIn(['chat_ui','sync_interval'])} updateStatus={this.updateStatus} updateMessages={this.updateMessages} initClose={this.props.chatwidget.get('initClose')} dispatch={this.props.dispatch} status_sub={this.props.chatwidget.getIn(['chatLiveData','status_sub'])} status={this.props.chatwidget.getIn(['chatLiveData','status'])} theme={this.props.chatwidget.get('theme')} lmgsid={this.props.chatwidget.getIn(['chatLiveData','lmsgid'])} hash={this.props.chatwidget.getIn(['chatData','hash'])} chat_id={this.props.chatwidget.getIn(['chatData','id'])} />}\n\n {showChat && <React.Fragment>\n\n {this.props.chatwidget.getIn(['chat_ui_state','confirm_close']) == 1 && <ChatModal confirmClose={this.props.endChat} cancelClose={this.props.cancelClose} toggle={this.props.cancelClose} dataUrl={\"/chat/confirmleave/\"+this.props.chatwidget.getIn(['chatData','id'])+\"/\"+this.props.chatwidget.getIn(['chatData','hash'])} />}\n\n {this.state.showBBCode && <ChatModal showModal={this.state.showBBCode} insertText={this.insertText} toggle={this.toggleModal} dataUrl={\"/chat/bbcodeinsert/\"+this.props.chatwidget.getIn(['chatData','id'])+\"?react=1\"} />}\n\n {this.state.changeLanguage && <ChatModal showModal={this.state.changeLanguage} setLanguage={this.setLanguageAction} insertText={this.insertText} toggle={this.changeLanguage} dataUrl={\"/widgetrestapi/chooselanguage/(id)/\"+this.props.chatwidget.getIn(['chatData','id'])+\"/(hash)/\"+this.props.chatwidget.getIn(['chatData','hash'])} />}\n\n {this.state.showMail && <Suspense fallback=\"...\"><MailModal showModal={this.state.showMail} changeFont={this.changeFont} toggle={this.mailChat} chatHash={this.props.chatwidget.getIn(['chatData','hash'])} chatId={this.props.chatwidget.getIn(['chatData','id'])} /></Suspense>}\n\n {this.state.changeFontSize && <Suspense fallback=\"...\"><FontSizeModal showModal={this.state.changeFontSize} toggle={this.changeFont} changeFont={this.changeFontAction} /></Suspense>}\n\n {this.props.chatwidget.get('mode') == 'embed' && this.props.chatwidget.hasIn(['chat_ui','embed_cls']) && this.props.chatwidget.getIn(['chat_ui','embed_cls']) == 1 && <div className=\"close-modal-btn position-absolute\">\n {this.props.chatwidget.hasIn(['chat_ui','close_btn']) && <a onClick={this.endChat} title={endTitle} ><i className=\"material-icons settings text-muted\"></i><span className=\"embed-close-title\">{endTitle}</span></a>}\n </div>}\n\n {this.props.chatwidget.hasIn(['chatStatusData','result']) && !this.props.chatwidget.hasIn(['chat_ui','hide_status']) && this.props.chatwidget.getIn(['chatStatusData','result']) && <div id=\"chat-status-container\" className={\"p-2 border-bottom live-status-\"+this.props.chatwidget.getIn(['chatLiveData','status'])}><ChatStatus survey_mode={false} updateStatus={this.updateStatus} vtm={this.props.chatwidget.hasIn(['chat_ui','switch_to_human']) && this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_BOT_CHAT ? this.props.chatwidget.getIn(['chatLiveData','vtm']) : 0} status={this.props.chatwidget.getIn(['chatStatusData','result'])} /></div>}\n\n <div className={msg_expand + (this.props.chatwidget.hasIn(['chat_ui','after_chat_status']) && this.props.chatwidget.getIn(['chat_ui','after_chat_status']) != '' ? ' has-after-chat-status' : '')} onClick={(e) => {this.setState({'reactToMsgId' : 0})}} id=\"messagesBlock\" onScrollCapture={this.onScrollMessages}>\n\n {this.props.chatwidget.hasIn(['chat_ui','after_chat_status']) && this.props.chatwidget.getIn(['chat_ui','after_chat_status']) != '' && <Suspense fallback=\"\"><CustomHTML setStateParent={(state) => this.setState(state)} has_new={this.state.hasNew && this.state.otm > 0} attr=\"after_chat_status\" /></Suspense>}\n\n <div className={bottom_messages} id=\"messages-scroll\" style={fontSizeStyle} ref={this.messagesAreaRef}>\n {this.props.chatwidget.hasIn(['chat_ui','prev_chat']) && <div dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','prev_chat'])}}></div>}\n {messages}\n {this.props.chatwidget.hasIn(['chatLiveData','msg_to_store']) && this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size > 0 && this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).map((msg, index) =>\n <div data-op-id=\"0\" className=\"message-row response msg-to-store\">\n {this.props.chatwidget.hasIn(['chat_ui','show_ts']) && !this.props.chatwidget.hasIn(['chat_ui','show_ts_below']) && <div className=\"msg-date\"> </div>}\n <div className=\"msg-body\">\n {msg.split('\\n').map((item, idx) => {return (<React.Fragment key={idx}>{item}<br /></React.Fragment>)})}\n </div>\n {this.props.chatwidget.hasIn(['chat_ui','show_ts']) && this.props.chatwidget.hasIn(['chat_ui','show_ts_below']) && <div className=\"msg-date\"> </div>}\n </div>)}\n </div>\n {this.state.scrollButton && <div className=\"position-absolute btn-bottom-scroll fade-in\" id=\"id-btn-bottom-scroll\"><button type=\"button\" onClick={this.scrollToMessage} className=\"btn btn-sm btn-secondary\">{(this.state.hasNew && this.state.otm > 0 && <div><i className=\"material-icons\"></i>{this.state.otm} {(this.state.otm == 1 ? (this.props.chatwidget.getIn(['chat_ui','cnew_msg']) || t('button.new_msg')) : (this.props.chatwidget.getIn(['chat_ui','cnew_msgm']) || t('button.new_msgm')))}</div>) || (this.props.chatwidget.getIn(['chat_ui','cscroll_btn']) || t('button.scroll_bottom'))}</button></div>}\n </div>\n\n {/* File Preview Section */}\n {this.state.previewFiles.length > 0 && (\n <Suspense fallback=\"\">\n <FilePreview\n previewFiles={this.state.previewFiles}\n onRemoveFile={this.removeFilePreview}\n t={t}\n />\n </Suspense>\n )}\n\n <div className={(this.props.chatwidget.get('msgLoaded') === false || this.state.enabledEditor === false ? 'd-none ' : 'd-flex ') + \"flex-row border-top position-relative message-send-area\"} >\n {(this.props.chatwidget.getIn(['chatLiveData','ott']) || (this.props.chatwidget.getIn(['chatLiveData','error']) && this.props.chatwidget.getIn(['chatLiveData','error']) != 'SEND_CONNECTION') || this.props.chatwidget.get('network_down')) && <div id=\"id-operator-typing\" className=\"bg-white ps-1\">{this.props.chatwidget.getIn(['chatLiveData','error']) ? (this.props.chatwidget.getIn(['chatLiveData','error']).indexOf('SEND_') === -1 ? this.props.chatwidget.getIn(['chatLiveData','error']) : t('online_chat.'+this.props.chatwidget.getIn(['chatLiveData','error']).toLowerCase())) : (this.props.chatwidget.get('network_down') ? t('online_chat.send_connection') : this.props.chatwidget.getIn(['chatLiveData','ott']))}</div>}\n\n {this.props.chatwidget.get('mode') == 'embed' && this.props.chatwidget.hasIn(['chat_ui','embed_cls']) && this.props.chatwidget.getIn(['chat_ui','embed_cls']) == 2 && <div className=\"inline-cls-btn pt-1 ps-2\">\n {this.props.chatwidget.hasIn(['chat_ui','close_btn']) && <a onClick={this.endChat} title={endTitle} ><i className=\"material-icons settings text-muted me-0\"></i></a>}\n </div>}\n\n <ChatOptions elementId=\"chat-dropdown-options\">\n <div className=\"btn-group dropup disable-select ps-1 pt-2\">\n <button type=\"button\" className=\"border-0 p-0 material-icons settings text-muted\" id=\"chat-dropdown-options\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"></button>\n <div className={\"dropdown-menu shadow bg-white rounded lhc-dropdown-menu ms-1 \"+(window.lhcChat['staticJS']['dir'] == 'rtl' ? \"dropdown-menu-end\" : \"\")}>\n <div className=\"d-flex flex-row ps-1\">\n <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.toggleSound() : '' }} onClick={this.toggleSound} title={t('chat.option_sound')}><i className={\"material-icons chat-setting-item text-muted \"+(this.props.chatwidget.getIn(['usersettings','soundOn']) === true ? 'sound-on-ico' : 'sound-off-ico')}>{this.props.chatwidget.getIn(['usersettings','soundOn']) === true ? <React.Fragment></React.Fragment> : <React.Fragment></React.Fragment>}</i></a>\n {this.props.chatwidget.hasIn(['chat_ui','print']) && <a tabIndex=\"0\" target=\"_blank\" href={this.props.chatwidget.get('base_url') + \"chat/printchat/\" +this.props.chatwidget.getIn(['chatData','id']) + \"/\" + this.props.chatwidget.getIn(['chatData','hash'])} title={t('button.print')}><i className=\"material-icons chat-setting-item text-muted print-ico\"></i></a>}\n {this.props.chatwidget.hasIn(['chat_ui','dwntxt']) && <a tabIndex=\"0\" target=\"_blank\" href={this.props.chatwidget.get('base_url') + \"chat/downloadtxt/\" +this.props.chatwidget.getIn(['chatData','id']) + \"/\" + this.props.chatwidget.getIn(['chatData','hash'])} title={t('button.dwntxt')}><i className=\"material-icons chat-setting-item text-muted download-ico\"></i></a>}\n {!this.props.chatwidget.getIn(['chatLiveData','closed']) && this.props.chatwidget.hasIn(['chat_ui','file']) && <ChatFileUploader fileOptions={this.props.chatwidget.getIn(['chat_ui','file_options'])} onDrag={this.dragging} dropArea={this.textMessageRef} onCompletion={this.updateMessages} onFilePreview={this.onFilePreview} progress={this.setStatusText} base_url={this.props.chatwidget.get('base_url')} chat_id={this.props.chatwidget.getIn(['chatData','id'])} hash={this.props.chatwidget.getIn(['chatData','hash'])} link={true}/>}\n\n {!this.props.chatwidget.getIn(['chatLiveData','closed']) && this.props.chatwidget.getIn(['chatLiveData','status']) == 1 && this.props.chatwidget.hasIn(['chat_ui','voice']) && this.props.chatwidget.getIn(['chat_ui','voice']) === true && <a tabIndex=\"0\" onClick={this.voiceCall} title={t('button.voice')}><i className=\"material-icons chat-setting-item text-muted voice-ico\"></i></a>}\n \n \n {!this.props.chatwidget.getIn(['chatLiveData','closed']) && !this.props.chatwidget.hasIn(['chat_ui','bbc_btnh']) && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.toggleModal() : '' }} onClick={this.toggleModal} title={t('button.bb_code')}><i className=\"material-icons chat-setting-item text-muted bbcode-ico\"></i></a>}\n {this.props.chatwidget.hasIn(['chat_ui','mail']) && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.mailChat() : '' }} onClick={this.mailChat} title={t('button.mail')} ><i className=\"material-icons chat-setting-item text-muted mail-ico\"></i></a>}\n {this.props.chatwidget.hasIn(['chat_ui','font_size']) && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.changeFont(event) : '' }} onClick={(event) => this.changeFont(event)}><i className=\"material-icons chat-setting-item text-muted fs-ico\"></i></a>}\n {this.props.chatwidget.hasIn(['chat_ui','close_btn']) && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.props.endChat() : '' }} onClick={this.props.endChat} title={endTitle} ><i className=\"material-icons chat-setting-item text-muted close-ico\"></i></a>}\n {this.props.chatwidget.hasIn(['chat_ui','lng_btnh']) && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.changeLanguage() : '' }} onClick={this.changeLanguage} title={t('button.lang')} ><i className=\"material-icons chat-setting-item text-muted lang-ico\"></i></a>}\n </div>\n </div>\n </div>\n </ChatOptions>\n\n <div className={message_send_style}>\n {this.props.chatwidget.getIn(['chatLiveData','closed']) && this.props.chatwidget.hasIn(['chat_ui','survey_id']) && <button type=\"button\" onClick={this.goToSurvey} className=\"w-100 btn btn-success\">{t('online_chat.go_to_survey')}</button>}\n {(!this.props.chatwidget.getIn(['chatLiveData','closed'])\n || !this.props.chatwidget.hasIn(['chat_ui','survey_id'])) &&\n\n <React.Fragment>\n <SharedTextarea\n text={!this.props.chatwidget.getIn(['chatLiveData','closed']) ? this.state.value : ''}\n textMaxLength={this.props.chatwidget.getIn(['chat_ui','max_length'])}\n onTextTouchStart={this.scrollBottom}\n onTextKeyUp={this.keyUp}\n onTextChange={this.handleChange}\n onTextKeyDown={this.enterKeyDown}\n textReadOnly={this.props.chatwidget.getIn(['chatLiveData','closed']) || this.props.chatwidget.get('network_down')}\n onTextFocus={(e) => {this.setState({'reactToMsgId' : 0})}}\n classNameText={\"ps-0 no-outline form-control rounded-0 form-control rounded-start-0 rounded-end-0 border-0 \"+((this.props.chatwidget.get('shown') === true && this.textMessageRef.current && (/\\r|\\n/.exec(this.state.value) || (this.state.value.length > this.textMessageRef.current.offsetWidth/taw))) ? 'msg-two-line' : 'msg-one-line')}\n textPlaceholder={placeholder}\n textareaRef={this.props.textMessageRef}\n />\n </React.Fragment>\n }\n </div>\n\n {!this.props.chatwidget.getIn(['chatLiveData','closed']) && !this.props.chatwidget.get('network_down') && <div className=\"disable-select\" id=\"send-button-wrapper\">\n\n <div className=\"user-chatwidget-buttons pt-2 pe-1\" id=\"ChatSendButtonContainer\">\n\n {this.state.voiceMode === true && <Suspense fallback=\"...\"><VoiceMessage onCompletion={this.updateMessages} progress={this.setStatusText} base_url={this.props.chatwidget.get('base_url')} chat_id={this.props.chatwidget.getIn(['chatData','id'])} hash={this.props.chatwidget.getIn(['chatData','hash'])} maxSeconds={this.props.chatwidget.getIn(['chat_ui','voice_message'])} cancel={this.cancelVoiceRecording} /></Suspense>}\n\n {(!this.props.chatwidget.hasIn(['chatLiveData','msg_to_store']) || this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size == 0) && !this.props.chatwidget.getIn(['chatLiveData','lock_send']) && this.props.chatwidget.hasIn(['chat_ui','voice_message']) && typeof window.Audio !== \"undefined\" && (this.state.value.length == 0 && this.state.previewFiles.length == 0) && this.state.voiceMode === false && <a tabIndex=\"0\" onKeyPress={(e) => { e.key === \"Enter\" ? this.startVoiceRecording() : '' }} onClick={this.startVoiceRecording} title={t('button.record_voice')}>\n <i className=\"record-icon material-icons text-muted settings me-0\"></i>\n </a>}\n\n {(!this.props.chatwidget.hasIn(['chatLiveData','msg_to_store']) || this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size == 0) && !this.props.chatwidget.getIn(['chatLiveData','lock_send']) && (!this.props.chatwidget.hasIn(['chat_ui','voice_message']) || !(typeof window.Audio !== \"undefined\") || ( (this.state.value.length > 0 || this.state.previewFiles.length > 0) && this.state.voiceMode === false)) && <a tabIndex=\"0\" onKeyDown={(e) => { if (e.key === \"Enter\") { e.preventDefault(); this.sendMessage();}}} onClick={this.sendMessage} title={t('button.send_msg')}>\n <i className={\"send-icon material-icons settings me-0\" + (this.state.value.length == 0 && this.state.previewFiles.length == 0 && this.state.voiceMode === false ? ' text-muted-light' : ' text-muted')}></i>\n </a>}\n\n {(this.props.chatwidget.getIn(['chatLiveData','lock_send']) || (this.props.chatwidget.hasIn(['chatLiveData','msg_to_store']) && this.props.chatwidget.getIn(['chatLiveData','msg_to_store']).size > 0)) && <i className=\"in-progress-icon material-icons text-muted settings me-0\"></i>}\n\n </div>\n\n </div>}\n\n\n\n </div>\n </React.Fragment>}\n\n </React.Fragment>\n );\n }\n }\n}\n\nexport default withTranslation()(OnlineChat);\n","import React, { Component } from 'react';\nimport { connect } from \"react-redux\";\n\nimport { endChat } from \"../actions/chatActions\"\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport { Suspense, lazy } from 'react';\n\nimport { STATUS_CLOSED_CHAT, STATUS_BOT_CHAT, STATUS_SUB_SURVEY_SHOW, STATUS_SUB_USER_CLOSED_CHAT, STATUS_SUB_CONTACT_FORM } from \"../constants/chat-status\";\n\nconst OfflineChat = React.lazy(() => import('./OfflineChat'));\nconst ProactiveInvitation = React.lazy(() => import('./ProactiveInvitation'));\nconst CustomHTML = React.lazy(() => import('./CustomHTML'));\n\nimport HeaderChat from './HeaderChat';\nimport StartChat from './StartChat';\nimport OnlineChat from './OnlineChat';\n\n@connect((store) => {\n return {\n chatwidget: store.chatwidget\n };\n})\n\nclass BodyChat extends Component {\n\n state = {\n\n };\n\n constructor(props) {\n super(props);\n this.endChat = this.endChat.bind(this);\n this.popupChat = this.popupChat.bind(this);\n this.cancelClose = this.cancelClose.bind(this);\n this.setProfile = this.setProfile.bind(this);\n this.setMessages = this.setMessages.bind(this);\n this.setHideMessageField = this.setHideMessageField.bind(this);\n this.setBotPayload = this.setBotPayload.bind(this);\n this.switchColumn = this.switchColumn.bind(this);\n this.lastHeiht = 0;\n\n this.profileHTML = null;\n this.messagesHTML = null;\n this.hideMessageField = false;\n this.botPayload = null;\n\n this.textareaRef = React.createRef();\n\n helperFunctions.eventEmitter.addListener('end_chat_visitor', (e) => this.endChat());\n }\n\n cancelClose() {\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'confirm_close', 'val': 0}})\n }\n\n setBotPayload(params) {\n this.botPayload = params;\n }\n\n endChat(params) {\n\n if (typeof params === 'undefined') {\n params = {};\n }\n\n // Contact form was filled from live chat\n if (this.props.chatwidget.get('isChatting') === true && this.props.chatwidget.get('isOnline') === true && this.props.chatwidget.get('isOfflineMode') === true && this.props.chatwidget.getIn(['chat_ui','survey_id'])) {\n this.props.dispatch({type: \"attr_set\", attr: ['isOfflineMode'], data: false});\n this.props.dispatch({type: \"attr_set\", attr: ['chatLiveData','status_sub'], data: STATUS_SUB_SURVEY_SHOW});\n return;\n }\n\n let surveyMode = false;\n let navigateToSurvey = false;\n let tipMode = false;\n\n let surveyByVisitor = (this.props.chatwidget.hasIn(['chatLiveData','status_sub']) && (this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_CONTACT_FORM || this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_SURVEY_SHOW || (this.props.chatwidget.getIn(['chatLiveData','status_sub']) == STATUS_SUB_USER_CLOSED_CHAT && (\n this.props.chatwidget.getIn(['chatLiveData','uid']) > 0 ||\n this.props.chatwidget.getIn(['chatLiveData','status']) === STATUS_BOT_CHAT ||\n this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT\n ))));\n \n let surveyByOperator = (this.props.chatwidget.getIn(['chatLiveData','status']) == STATUS_CLOSED_CHAT && this.props.chatwidget.getIn(['chatLiveData','uid']) > 0);\n\n if ((surveyByVisitor == true || surveyByOperator) && this.props.chatwidget.hasIn(['chat_ui','survey_id'])) {\n\n // If survey button is required and we have not went to survey yet\n if ((!this.props.chatwidget.hasIn(['chat_ui','survey_button']) || this.props.chatwidget.getIn(['chat_ui_state','show_survey']) === 1) || surveyByVisitor == true) {\n surveyMode = true;\n } else {\n navigateToSurvey = true;\n }\n }\n\n // User has to confirm close\n if (surveyMode === false && this.props.chatwidget.hasIn(['chat_ui','confirm_close']) && this.props.chatwidget.getIn(['chat_ui_state','confirm_close']) === 0) {\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'confirm_close', 'val': 1}});\n return;\n }\n\n // User confirmed to close\n if (this.props.chatwidget.getIn(['chat_ui_state','confirm_close']) === 1) {\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'confirm_close', 'val': 2}});\n }\n\n // User has confirmed/or denied pre-survey\n if (this.props.chatwidget.getIn(['chat_ui_state','pre_survey_done']) === 1) {\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'pre_survey_done', 'val': 2}});\n }\n\n if (this.props.chatwidget.hasIn(['chat_ui','pre_survey_url']) && this.props.chatwidget.getIn(['chat_ui_state','pre_survey_done']) === 0 && this.props.chatwidget.getIn(['chatLiveData','uid']) > 0) {\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'pre_survey_done', 'val': 1}});\n tipMode = true;\n }\n\n if (navigateToSurvey === true) {\n // Forward user to survey on close\n // Means chat was closed by operator but visitor is still not in survey mode\n this.props.dispatch({'type' : 'UI_STATE', 'data' : {'attr': 'show_survey', 'val': 1}});\n return;\n }\n\n if (this.props.chatwidget.get('initClose') === false && this.props.chatwidget.hasIn(['chat_ui','survey_id']) && surveyMode == false && (this.props.chatwidget.getIn(['chatLiveData','uid']) > 0 || (!this.props.chatwidget.hasIn(['chat_ui','hide_survey_bot']) && this.props.chatwidget.getIn(['chatLiveData','status']) === STATUS_BOT_CHAT))) {\n this.props.dispatch(endChat({'show_start' : (params && params['show_start'] ? params['show_start'] : false),'noCloseReason' : 'SHOW_SURVEY', 'noClose' : true, 'vid' : this.props.chatwidget.get('vid'), 'chat': {id : this.props.chatwidget.getIn(['chatData','id']), hash : this.props.chatwidget.getIn(['chatData','hash'])}}));\n } else if (tipMode == false) {\n this.props.dispatch(endChat({'show_start' : (params && params['show_start'] ? params['show_start'] : false),'vid' : this.props.chatwidget.get('vid'), 'chat': {id : this.props.chatwidget.getIn(['chatData','id']), hash : this.props.chatwidget.getIn(['chatData','hash'])}}));\n }\n }\n\n popupChat() {\n\n var eventEmiter = null;\n\n if (window.parent && window.parent['$_'+helperFunctions.prefixUppercase] && window.parent.closed === false) {\n eventEmiter = window.parent['$_'+helperFunctions.prefixUppercase].eventListener;\n } else if (window.opener && window.opener['$_'+helperFunctions.prefixUppercase] && window.opener.closed === false) {\n eventEmiter = window.opener['$_'+helperFunctions.prefixUppercase].eventListener;\n }\n\n if (eventEmiter !== null) {\n eventEmiter.emitEvent('openPopup');\n } else {\n helperFunctions.sendMessageParent('openPopup', []);\n }\n }\n\n switchColumn() {\n let positionPlacement = this.props.chatwidget.get('position_placement').includes('full_height_') ? this.props.chatwidget.get('position_placement_original') : \"full_height\" + (this.props.chatwidget.get('position_placement_original').includes('_right') ? '_right' : '_left');\n helperFunctions.sendMessageParent('widgetHeight', [{\"position_placement\": positionPlacement}]);\n this.props.dispatch({'type' : 'position_placement', 'data' : positionPlacement});\n }\n\n setProfile(profile) {\n this.profileHTML = profile;\n }\n\n setMessages(messages) {\n this.messagesHTML = messages;\n }\n\n setHideMessageField(hide) {\n this.hideMessageField = hide;\n }\n\n render() {\n\n if (this.props.chatwidget.get('loadedCore') === false) {\n return null;\n }\n\n if (this.props.chatwidget.getIn(['proactive','pending']) === true) {\n return <Suspense fallback=\"...\"><ProactiveInvitation setBotPayload={this.setBotPayload} /></Suspense>\n }\n\n var className = 'd-flex flex-column flex-grow-1 reset-container-margins';\n\n if (this.props.chatwidget.get('mode') == 'widget') {\n className = className + (this.props.chatwidget.get('isMobile') == true ? ' mobile-body' : ' desktop-body');\n } else if (this.props.chatwidget.get('mode') == 'embed') {\n className = className + (this.props.chatwidget.get('isMobile') == true ? ' mobile-embed-body' : ' desktop-embed-body');\n }\n\n if (this.props.chatwidget.hasIn(['chat_ui','msg_expand']) && this.props.chatwidget.get('mode') == 'embed') {\n className += \" mh-100\";\n }\n\n if (this.props.chatwidget.get('isChatting') === true && this.props.chatwidget.get('isOfflineMode') === false) {\n className += \" online-chat online-chat-status-\" + this.props.chatwidget.getIn(['chatLiveData','status']);\n if (this.props.chatwidget.getIn(['onlineData','fetched']) === false && this.props.chatwidget.get('initLoaded') === false) {\n className += \" hide\";\n }\n return (<React.Fragment>\n {this.props.chatwidget.hasIn(['chat_ui','custom_html_header']) && (this.props.chatwidget.getIn(['onlineData','fetched']) === true || this.props.chatwidget.get('initLoaded') === true) && <div className=\"lhc-custom-header-above\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_header'])}}></div>}\n {(this.props.chatwidget.getIn(['onlineData','fetched']) === true || this.props.chatwidget.get('initLoaded') === true) && this.props.chatwidget.get('mode') == 'widget' && <HeaderChat switchColumn={this.switchColumn} popupChat={this.popupChat} endChat={this.endChat} />}\n <div className={className}><OnlineChat textMessageRef={this.textareaRef} hideMessageField={this.hideMessageField} profileBefore={this.profileHTML} messagesBefore={this.messagesHTML} cancelClose={this.cancelClose} endChat={this.endChat} /></div>\n {this.props.chatwidget.hasIn(['chat_ui','custom_html_footer']) && this.props.chatwidget.getIn(['chat_ui','custom_html_footer']) != '' && (this.props.chatwidget.getIn(['onlineData','fetched']) === true || this.props.chatwidget.get('initLoaded') === true) && ((this.props.chatwidget.hasIn(['chat_ui','chfr']) && <div className=\"lhc-custom-footer-below\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_footer'])}}></div>) || (<Suspense fallback=\"\"><div className=\"lhc-custom-footer-below\"><CustomHTML setStateParent={(state) => this.setState(state)} attr=\"custom_html_footer\" /></div></Suspense>))}\n </React.Fragment>)\n } else if (this.props.chatwidget.get('isOnline') === true && this.props.chatwidget.get('isOfflineMode') === false) {\n if (!this.props.chatwidget.getIn(['onlineData','fetched']) && this.props.chatwidget.get('chatEnded') === false) {\n className += \" hide\";\n }\n className += \" start-chat\";\n return (<React.Fragment>{this.props.chatwidget.hasIn(['chat_ui','custom_html_header']) && (this.props.chatwidget.getIn(['onlineData','fetched']) || this.props.chatwidget.get('chatEnded') === true) && <div className=\"lhc-custom-header-above\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_header'])}}></div>}\n {(this.props.chatwidget.getIn(['onlineData','fetched']) || this.props.chatwidget.get('chatEnded') === true) && this.props.chatwidget.get('mode') == 'widget' && <HeaderChat switchColumn={this.switchColumn} popupChat={this.popupChat} endChat={this.endChat} />}<div className={className}><StartChat textMessageRef={this.textareaRef} botPayload={this.botPayload} setHideMessageField={this.setHideMessageField} setProfile={this.setProfile} setMessages={this.setMessages} /></div>\n {this.props.chatwidget.hasIn(['chat_ui','custom_html_footer']) && this.props.chatwidget.getIn(['onlineData','fetched']) && this.props.chatwidget.getIn(['chat_ui','custom_html_footer']) != '' && ((this.props.chatwidget.hasIn(['chat_ui','chfr']) && <div className=\"lhc-custom-footer-below\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_footer'])}}></div>) || (<Suspense fallback=\"\"><div className=\"lhc-custom-footer-below\"><CustomHTML setStateParent={(state) => this.setState(state)} attr=\"custom_html_footer\" /></div></Suspense>))}\n </React.Fragment>)\n } else {\n className += \" offline-chat\";\n return (<React.Fragment>{this.props.chatwidget.hasIn(['chat_ui','custom_html_header']) && <div className=\"lhc-custom-header-above\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_header'])}}></div>}{this.props.chatwidget.get('mode') == 'widget' && <HeaderChat switchColumn={this.switchColumn} popupChat={this.popupChat} endChat={this.endChat} />}<div className={className}><Suspense fallback=\"\"><OfflineChat /></Suspense></div>\n {this.props.chatwidget.hasIn(['chat_ui','custom_html_footer']) && this.props.chatwidget.getIn(['chat_ui','custom_html_footer']) != '' && ((this.props.chatwidget.hasIn(['chat_ui','chfr']) && <div className=\"lhc-custom-footer-below\" dangerouslySetInnerHTML={{__html:this.props.chatwidget.getIn(['chat_ui','custom_html_footer'])}}></div>) || (<Suspense fallback=\"\"><div className=\"lhc-custom-footer-below\"><CustomHTML setStateParent={(state) => this.setState(state)} attr=\"custom_html_footer\" /></div></Suspense>))}\n </React.Fragment>)\n }\n }\n}\n\nexport default BodyChat;\n","import React, { PureComponent } from 'react';\nimport {Howl, Howler} from 'howler';\nimport { storeSubscriber } from \"../actions/chatActions\"\n\nimport { connect } from \"react-redux\";\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\nclass ChatSound extends PureComponent {\n\n state = {\n\n };\n\n constructor(props) {\n super(props);\n helperFunctions.eventEmitter.addListener('play_sound', (e) => this.playSound(e));\n }\n\n playSound = (e) => {\n if (e.type == 'new_message') {\n if (e.sound_on === true && (e.widget_open === false || (e.widget_open === true && window.lhcChat['is_focused'] == false))) {\n this.playSoundFile('new_message');\n }\n if (e.widget_open == false) {\n helperFunctions.sendMessageParent('unread_message',[{'msop': (e.msop || null), 'msg_body':(e.msg_body || null), 'type' : 'unread_message','otm' : (e.otm || 0)}]);\n }\n } else if (e.type == 'new_invitation' && e.sound_on === true) {\n if (helperFunctions.getSessionStorage('_invs') === null) {\n helperFunctions.setSessionStorage('_invs',1);\n this.playSoundFile('new_invitation');\n }\n } else if (e.type == 'new_chat' && e.sound_on === true) {\n this.playSoundFile('new_invitation');\n }\n\n if (window.lhcChat['is_focused'] == false) {\n helperFunctions.sendMessageParent('unread_message_title',[{'status':false}]);\n }\n\n }\n\n playSoundFile = (file) => {\n var sound = new Howl({\n src: [\n window.lhcChat['base_url'] + \"/widgetrestapi/loadsound/\"+file+\"_mp3\",\n window.lhcChat['base_url'] + \"/widgetrestapi/loadsound/\"+file+\"_ogg\",\n window.lhcChat['base_url'] + \"/widgetrestapi/loadsound/\"+file+\"_wav\"],\n format: ['mp3', 'ogg', 'wav'],\n autoplay : true\n });\n }\n\n render() {\n return null;\n }\n}\n\nexport default connect()(ChatSound)\n\n","import React, { Component } from 'react';\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n componentDidCatch(error, info) {\n // Display fallback UI\n this.setState({ hasError: true, error : error, info : info });\n\n helperFunctions.logJSError({\n 'stack' : (error.stack ? JSON.stringify(error.stack) : \"\")\n });\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return <p>Please re-load window because of an error.</p>;\n //return this.props.children;\n } else {\n return this.props.children;\n }\n\n }\n}\n\nexport default ErrorBoundary;","import React, { Component } from 'react';\nimport BodyChat from './components/BodyChat';\nimport ChatSound from './components/ChatSound';\nimport ErrorBoundary from './components/ErrorBoundary';\n\nclass App extends Component {\n render() {\n return (\n <React.Fragment>\n <ErrorBoundary>\n <ChatSound />\n <BodyChat />\n </ErrorBoundary>\n </React.Fragment>\n );\n }\n}\n\nexport default App;\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","export const CLOSED_WIDGET = \"closedWidget\";\nexport const SHOWN_WIDGET = \"shownWidget\";\nexport const IS_MOBILE = \"isMobile\";\nexport const IS_ONLINE = \"onlineStatus\";\nexport const SOUND_ENABLED = \"toggleSound\";\nexport const ENDED_CHAT = \"endedChat\";\n\n// Internal actions\nexport const OFFLINE_FIELDS_UPDATED = \"OFFLINE_FIELDS_UPDATED\";\nexport const ONLINE_SUBMITTED = \"ONLINE_SUBMITTED\";","import { SHOWN_WIDGET, CLOSED_WIDGET, IS_MOBILE, IS_ONLINE, OFFLINE_FIELDS_UPDATED, ONLINE_SUBMITTED, ENDED_CHAT, SOUND_ENABLED } from \"../constants/action-types\";\nimport {fromJS} from 'immutable';\nimport { helperFunctions } from \"../lib/helperFunctions\";\n\nconst initialState = fromJS({\n loadedCore: false, // Was the core loaded. IT's set after all initial attributes are loaded and app can proceed futher.\n shown: true,\n isMobile: false,\n isOnline: false,\n isChatting: false,\n isOfflineMode: false,\n vars_encrypted: false,\n newChat: true,\n departmentDefault: null,\n theme: null,\n pvhash: null,\n phash: null,\n network_down: false,\n leave_message: true,\n mode: 'widget',\n overrides: [], // we store here extensions flags. Like do we override typing monitoring so we send every request\n department: [],\n product: [],\n jsVars: [],\n jsVarsPrefill: [],\n offlineData: {'fetched' : false},\n onlineData: {'fetched' : false},\n customData: {'fields' : []},\n api_data: null,\n attr_prefill: [],\n attr_prefill_admin: [],\n extension: {}, // Holds extensions data for reuse\n chat_ui : {}, // Settings from themes, UI\n chat_ui_state : {'confirm_close': 0, 'show_survey' : 0, 'pre_survey_done' : 0}, // Settings from themes, UI we store our present state here\n processStatus : 0,\n processStatusOffline : 0,\n chatData : {}, // Stores only chat id and hash\n chatLiveData : {'msg_to_store':[] ,'lock_send' : false, 'lmsop':0, 'vtm':0,'otm':0, 'msop':0, 'uid' : 0, 'error' : '','lfmsgid':0, 'lmsgid' : 0, 'operator' : '', 'messages' : [], 'closed' : false, 'ott' : '', 'status_sub' : 0, 'status' : 0}, // Stores live chat data\n chatStatusData : {},\n usersettings : {soundOn : false},\n vid: null,\n base_url: null,\n position_placement: '',\n position_placement_original: '',\n initClose : false,\n // Was initialized data loaded\n initLoaded : false,\n msgLoaded : false,\n chatEnded : false,\n proactive : {'pending' : false, 'has' : false, data : {}}, // Proactive invitation data holder\n lang : '',\n bot_id : '',\n trigger_id : '',\n subject_id : '',\n operator : '',\n priority : null,\n ses_ref : null,\n captcha : {},\n validationErrors : {},\n})\n// Prrocess Status\n// 0 Not submitted\n// 1 Submitting\n// 2 Submitted\n\nconst applyFn = (state, fn) => fn(state)\nexport const pipe = (fns, state) => state.withMutations(s => fns.reduce(applyFn, s))\n\nconst chatWidgetReducer = (state = initialState, action) => {\n\n switch (action.type) {\n\n case CLOSED_WIDGET : {\n if (state.get('isChatting') === false) {\n state = state.set('processStatus',0).set('isOfflineMode',false);\n }\n return state.set('shown',false);\n }\n\n case 'loadedCore': {\n return state.set('loadedCore',true);\n }\n\n case 'attr_set': {\n return state.setIn(action.attr, action.data);\n }\n\n case 'profile_pic': {\n return state.set('profile_pic', (action.data.indexOf('http:') !== -1 || action.data.indexOf('https:') !== -1) ? action.data : window.lhcChat['base_url'] + 'widgetrestapi/avatar/' + action.data);\n }\n\n case 'attr_rem': {\n return state.removeIn(action.attr);\n }\n\n case 'vars_encrypted':\n case 'processStatus':\n case 'processStatusOffline':\n case 'operator':\n case 'leave_message':\n case 'phash':\n case 'pvhash':\n case 'attr_prefill':\n case 'attr_prefill_admin':\n case IS_MOBILE:\n case 'base_url':\n case 'theme':\n case 'jsVars':\n case 'jsVarsPrefill':\n case 'subject_id':\n case 'bot_id':\n case 'trigger_id':\n case 'priority':\n case 'position_placement':\n case 'position_placement_original':\n case 'lang': {\n return state.set(action.type,action.data);\n }\n\n case 'widgetStatus': {\n // Visitor clicked widget and it has invitation shown. We leave invitation mode\n if (action.data == true && state.getIn(['proactive','pending']) === true) {\n state = state.setIn(['proactive','pending'],false);\n }\n\n // This type of invitation should not be ever appended to content\n if (action.data == true && state.hasIn(['proactive','data','hide_on_open'])) {\n state = state.set('proactive',fromJS({'pending' : false, 'has' : false, data : {}}));\n }\n\n return state.set('shown',action.data);\n }\n\n // Proactive invitation has arrived\n case 'PROACTIVE': {\n return state.set('proactive',{'pending' : (state.get('shown') === false && action.data.qinv === false ? true : false), 'has': true, data : action.data});\n }\n\n // Visitor clicks hide invitation\n case 'HIDE_INVITATION': {\n return state.setIn(['proactive','pending'],false);\n }\n\n case 'CANCEL_INVITATION': {\n return state.set('proactive',fromJS({'pending' : false, 'has' : false, data : {}}));\n }\n\n // Visitor was interested and clicked invitation tooltip itself.\n case 'FULL_INVITATION': {\n return state.setIn(['proactive','pending'],false);\n }\n\n case SOUND_ENABLED : {\n return state.setIn(['usersettings','soundOn'],action.data);\n }\n\n case ENDED_CHAT : {\n return state.set('shown',false)\n .set('processStatus', 0)\n .set('processStatusOffline', 0)\n .set('isChatting',false)\n .set('newChat',true)\n .set('isOfflineMode',false)\n .set('proactive',fromJS({'pending' : false, 'has' : false, data : {}}))\n .set('chatData',fromJS({}))\n .removeIn(['chat_ui','survey_id'])\n .removeIn(['chat_ui','cmmsg_widget'])\n .setIn(['onlineData','fetched'],false)\n .set('chatLiveData',fromJS({'msg_to_store':[], 'lock_send' : false, 'lmsop':0, 'vtm':0, 'otm':0, 'msop':0, 'uid':0, 'status' : 0, 'status_sub' : 0, 'uw' : false, 'ott' : '', 'closed' : false, 'lfmsgid': 0, 'lmsgid' : 0, 'operator' : '', 'messages' : []}))\n .set('chatStatusData',fromJS({}))\n .set('chat_ui_state',fromJS({'confirm_close': 0, 'show_survey' : 0, 'pre_survey_done' : 0}))\n .set('chatEnded',true)\n .set('initClose',false)\n .set('msgLoaded',false)\n .set('initLoaded',false);\n }\n\n case 'chat_status_changed':\n {\n return state.setIn(['chatLiveData','ott'],action.data.text);\n }\n\n case IS_ONLINE : {\n return state.set('isOnline',action.data)\n .setIn(['onlineData','fetched'], false)\n .setIn(['offlineData','fetched'], false);\n }\n\n case OFFLINE_FIELDS_UPDATED : {\n return state.set('offlineData', fromJS({'fetched' : true, 'disabled': action.data.disabled, 'fields_visible': action.data.fields_visible, 'fields' : action.data.fields, 'department' : action.data.department})).set('chat_ui', state.get('chat_ui').merge(fromJS(action.data.chat_ui)));\n }\n\n case 'department':\n case 'mode':\n case 'product':\n case 'captcha': {\n return state.set(action.type,fromJS(action.data));\n }\n \n case 'INIT_PRODUCTS': {\n return state.setIn(['onlineData','department','products'], fromJS(action.data.products)).setIn(['onlineData','department','settings','product_required'],action.data.required);\n }\n\n case 'CHAT_SESSION_REFFERER': {\n return state.set('ses_ref',action.data.ref);\n }\n\n case 'CHAT_ADD_OVERRIDE' : {\n return state.update('overrides',list => list.push(action.data));\n }\n\n case 'CHAT_REMOVE_OVERRIDE': {\n return state.update('overrides',list => list.filter(item => item != action.data));\n }\n\n case ONLINE_SUBMITTED : {\n if (action.data.success === true) {\n helperFunctions.sendMessageParent('chatStarted',[action.data.chatData,state.get('mode')]);\n \n // If we are in popup mode and visitor refreshes page, remember chat\n if (state.get('mode') == 'popup') {\n if (helperFunctions.hasSessionStorage === true) {\n helperFunctions.setSessionStorage('_chat',JSON.stringify(action.data.chatData));\n helperFunctions.removeSessionStorage('_reset_chat');\n } else {\n document.location = '#/' + action.data.chatData.id + \"/\" + action.data.chatData.hash;\n }\n }\n\n return state.set('processStatus', 2).\n set('isChatting',true).\n set('shown',true).\n set('chatData',fromJS(action.data.chatData)).\n setIn(['chatLiveData','lfmsgid'],action.data.chatLiveData.message_id_first).\n set('validationErrors',fromJS({}));\n } else {\n return state.set('validationErrors',fromJS(action.data.errors)).set('processStatus',0).setIn(['chat_ui','auto_start'],false);\n }\n }\n\n case 'OFFLINE_SUBMITTED' : {\n if (action.data.success === true) {\n helperFunctions.sendMessageParent('offlineMessage',[]);\n return state.set('processStatusOffline', 2).set('validationErrors',fromJS({}));\n } else {\n return state.set('validationErrors',fromJS(action.data.errors)).set('processStatusOffline',0);\n }\n }\n\n case 'INIT_CLOSE': {\n return state.set('initClose',true);\n }\n\n // If we receive chat id and hash from parent\n case 'CHAT_ALREADY_STARTED': {\n return state.set('processStatus', 2)\n .set('isChatting',true)\n .set('newChat',false)\n .set('chatData',fromJS(action.data));\n }\n\n case 'OFFLINE_SUBMITTING' : {\n return state.set('processStatusOffline', 1);\n }\n\n case 'CHAT_SET_VID' : {\n return state.set('vid', action.data);\n }\n\n case 'ONLINE_SUBMITTING' : {\n return state.set('processStatus', 1);\n }\n\n case 'UI_STATE':{\n return state.setIn(['chat_ui_state',action.data.attr],action.data.val);\n }\n\n case 'UPDATE_LIVE_DATA': {\n return state.setIn(['chatLiveData', action.data.attr], action.data.val);\n }\n\n case 'ADD_MSG_TO_STORE': {\n return state.updateIn(['chatLiveData','msg_to_store'],list => list.push(action.data))\n }\n\n case 'UPDATE_SCROLL_TO_MESSAGE': {\n if (action.data > state.getIn(['chatLiveData','lfmsgid'])) {\n return state.setIn(['chatLiveData', 'lfmsgid'], action.data);\n }\n return state;\n }\n\n case 'INIT_CHAT_SUBMITTED' : {\n\n if (action.data.chat_ui_state) {\n state = state.set('chat_ui_state', state.get('chat_ui_state').merge(fromJS(action.data.chat_ui_state)));\n }\n\n return state.setIn(['chatLiveData','operator'], action.data.operator)\n .set('chat_ui', state.get('chat_ui').merge(fromJS(action.data.chat_ui)))\n .setIn(['chatLiveData','status_sub'], action.data.status_sub)\n .setIn(['chatLiveData','status'], action.data.status)\n .set('initLoaded', true)\n .setIn(['chatLiveData','closed'], action.data.closed && action.data.closed === true);\n }\n\n case 'REFRESH_UI_COMPLETED' : {\n \n if (action.data.chat_ui_remove) {\n action.data.chat_ui_remove.forEach((item) => {\n state = state.removeIn(item);\n })\n }\n\n return state.set('chat_ui', state.get('chat_ui').merge(fromJS(action.data.chat_ui)));\n }\n\n case 'REMOVE_CHAT_MESSAGE' : {\n let index = state.getIn(['chatLiveData','messages']).findIndex(msg => {\n if (msg.msg.includes(\"id=\\\"msg-\"+action.data.msg_id+\"\\\"\")) {\n return true;\n }\n });\n\n if (index !== -1) {\n var nodeParse = document.createElement('div');\n nodeParse.innerHTML = state.getIn([\"chatLiveData\", \"messages\", index, \"msg\"]);\n var messageExtractor = nodeParse.querySelector(\"#msg-\"+action.data.id);\n if (messageExtractor) {\n nodeParse.innerHTML = nodeParse.innerHTML.replace(messageExtractor.outerHTML,\"\");\n state = state.setIn([\"chatLiveData\", \"messages\", index, \"msg\"], nodeParse.innerHTML);\n }\n }\n return state;\n }\n\n case 'FETCH_MESSAGE_SUBMITTED' : {\n\n let index = state.getIn(['chatLiveData','messages']).findIndex(msg => {\n if (msg.msg.includes(\"id=\\\"msg-\"+action.data.id+\"\\\"\")) {\n return true;\n }\n });\n\n if (index !== -1) {\n var nodeParse = document.createElement('div');\n nodeParse.innerHTML = state.getIn([\"chatLiveData\", \"messages\", index, \"msg\"]);\n var messageExtractor = nodeParse.querySelector(\"#msg-\"+action.data.id);\n if (messageExtractor) {\n nodeParse.innerHTML = nodeParse.innerHTML.replace(messageExtractor.outerHTML,action.data.msg);\n state = state.setIn([\"chatLiveData\", \"messages\", index, \"msg\"], nodeParse.innerHTML);\n }\n }\n\n return state;\n }\n\n case 'FETCH_MESSAGES_SUBMITTED' : {\n\n // Ignore request if chat is gone\n // Avoids flicker\n if (!state.hasIn(['chatData','id'])) {\n return state;\n }\n\n if (action.data.closed_arg && action.data.closed_arg.survey_id) {\n state = state.setIn(['chat_ui','survey_id'],action.data.closed_arg.survey_id);\n }\n\n if (action.data.disable_survey) {\n state = state.removeIn(['chat_ui','survey_id']);\n }\n\n if (action.data.extension) {\n state = state.set('extension',state.get('extension').merge(fromJS(action.data.extension)));\n }\n\n if (action.data.messages !== '') {\n\n // Make sure fetched data is always new\n if (action.data.f_msg_id < state.getIn(['chatLiveData','lmsgid'])) {\n return state;\n }\n\n state = state.updateIn(['chatLiveData','messages'],list => list.push({\n 'lmsop': state.getIn(['chatLiveData','msop']),\n 'msop': action.data.msop,\n 'msg': action.data.messages\n }))\n .setIn(['chatLiveData','uw'], action.data.uw && action.data.uw === true)\n .setIn(['chatLiveData','lmsgid'],action.data.message_id)\n .setIn(['chatLiveData','lfmsgid'],action.data.message_id_first)\n .setIn(['chatLiveData','msop'],action.data.lmsop || action.data.msop);\n }\n\n if (action.data.vtm) {\n state = state.updateIn(['chatLiveData','vtm'], (counter) => {return counter + action.data.vtm})\n .updateIn(['chatLiveData','msg_to_store'],list => list.splice(0,action.data.vtm))\n }\n\n if (action.data.otm) {\n state = state.setIn(['chatLiveData','otm'], action.data.otm)\n }\n\n if (!state.get('overrides').contains('typing')) {\n state = state.setIn(['chatLiveData','ott'], action.data.ott);\n }\n\n return state.setIn(['chatLiveData','status_sub'], action.data.status_sub)\n .setIn(['chatLiveData','status'], action.data.status)\n .set('msgLoaded', true)\n .setIn(['chatLiveData','lock_send'], action.data.lock_send ? true : false)\n .set('network_down', false)\n .setIn(['chatLiveData','closed'], action.data.closed && action.data.closed === true)\n }\n\n case 'CHECK_CHAT_STATUS_FINISHED' : {\n\n if (action.data.extension) {\n state = state.set('extension',state.get('extension').merge(fromJS(action.data.extension)));\n }\n\n if (action.data.offline_mode) {\n state = state.set('isOfflineMode',true);\n }\n\n return state.set('chatStatusData',fromJS(action.data))\n .setIn(['chatLiveData','closed'], action.data.closed && action.data.closed === true || state.getIn(['chatLiveData','closed']))\n .setIn(['chatLiveData','status'], action.data.status)\n .setIn(['chatLiveData','uid'], action.data.uid)\n .setIn(['chatLiveData','ru'], action.data.ru ? action.data.ru : null)\n .set('chat_ui',state.get('chat_ui').merge(fromJS(action.data.chat_ui)))\n .set('network_down', false)\n .setIn(['chatLiveData','status_sub'], action.data.status_sub);\n }\n\n case 'ONLINE_FIELDS_UPDATED' : {\n return state.set('onlineData', fromJS({'dep_forms': action.data.dep_forms, 'disabled': action.data.disabled, 'fetched' : true, 'paid': action.data.paid, 'fields_visible': action.data.fields_visible, 'fields' : action.data.fields, 'department' : action.data.department})).set('chat_ui', state.get('chat_ui').merge(fromJS(action.data.chat_ui)));\n }\n\n case 'CHAT_UI_UPDATE' : {\n return state.set('chat_ui',state.get('chat_ui').merge(fromJS(action.data)));\n }\n\n case 'CUSTOM_FIELDS': {\n return state.set('customData', fromJS({'fields' : action.data}));\n }\n\n case 'dep_default': {\n return state.set('departmentDefault',action.data);\n }\n\n case 'survey': {\n return state.setIn(['chat_ui','survey_id'], action.data);\n }\n\n case 'CUSTOM_FIELDS_ITEM': {\n return state.setIn(['customData','fields',action.data.id,'value'], action.data.value);\n }\n\n case 'ADD_MESSAGES_SUBMITTED': {\n return state.setIn(['chatLiveData','error'], action.data.r)\n .setIn(['chatLiveData','lmsg'], action.data.r ? action.data.msg : \"\")\n .setIn(['chatLiveData','msg_to_store'], fromJS([]));\n }\n\n case 'NO_CONNECTION': {\n return state.set('network_down', action.data);\n }\n\n default:\n return state;\n }\n};\n\nexport default chatWidgetReducer;","import { combineReducers } from \"redux\";\r\nimport chatWidgetReducer from \"./chatWidgetReducer\";\r\n\r\nexport default combineReducers({\r\n chatwidget: chatWidgetReducer\r\n});","import { applyMiddleware, createStore } from \"redux\";\r\nimport rootReducer from \"../reducers/index\";\r\n\r\nimport thunk from \"redux-thunk\"\r\nimport promise from \"redux-promise-middleware\"\r\n\r\n//import {logger} from \"redux-logger\"\r\n//import { createLogger } from 'redux-logger'\r\n\r\nimport addChatWidgetListener from './chatWidgetListener';\r\n\r\nconst middleware = applyMiddleware(promise, thunk/*, logger*/)\r\n\r\nconst store = createStore(\r\n rootReducer,\r\n middleware\r\n);\r\n\r\naddChatWidgetListener(store.dispatch, store.getState);\r\n\r\nexport default store;","import { endChat, initChatUI, pageUnload, storeSubscriber, initProactive, checkChatStatus, fetchMessages, addMessage, updateTriggerClicked, updateMessage, updateMessageData, hideInvitation } from \"../actions/chatActions\"\nimport { helperFunctions } from \"../lib/helperFunctions\";\nimport i18n from \"../i18n\";\n\nexport default function (dispatch, getState) {\n\n // Holds extensions\n let extensions = {};\n let jsLoaded = [];\n let jsPendingExecution = [];\n let readyReceived = false;\n\n function insertJS(extension, src, args) {\n if (document.getElementById('ext-' + extension) === null) {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src',src);\n s.setAttribute('id','ext-' + extension);\n th.appendChild(s);\n s.onreadystatechange = s.onload = function() {\n jsLoaded.push(extension + '.init');\n helperFunctions.emitEvent(extension + '.init', args);\n if (jsPendingExecution[extension + '.init'] !== 'undefined' && Array.isArray(jsPendingExecution[extension + '.init'])) {\n jsPendingExecution[extension + '.init'].forEach((args) => {\n helperFunctions.emitEvent(extension + '.init', args);\n });\n delete jsPendingExecution[extension + '.init'];\n }\n };\n } else {\n if (jsLoaded.indexOf(extension + '.init') !== -1) {\n helperFunctions.emitEvent(extension + '.init', args);\n } else {\n if (typeof jsPendingExecution[extension + '.init'] === 'undefined') {\n jsPendingExecution[extension + '.init'] = [];\n }\n jsPendingExecution[extension + '.init'].push(args);\n }\n }\n }\n\n function executeExtension(extension, args) {\n if (Array.isArray(args)) {\n args.push(dispatch);\n args.push(getState);\n args.push(updateMessage);\n }\n\n if (typeof extensions[extension] !== 'undefined') {\n insertJS(extension, extensions[extension], args);\n } else if (extension == 'modal_ext') {\n var date = new Date();\n insertJS(extension, __webpack_public_path__.replace('/widgetv2/','') + '/modal.ext.min.js?'+(\"\"+date.getFullYear() + date.getMonth() + date.getDate()), args);\n } else {\n\n var url = \"/(ext)/\" + extension;\n\n const state = getState();\n\n if (state.chatwidget.hasIn(['chatData', 'id'])) {\n url += \"/(id)/\" + state.chatwidget.getIn(['chatData', 'id']);\n url += \"/(hash)/\" + state.chatwidget.getIn(['chatData', 'hash']);\n }\n\n var dep = state.chatwidget.get('department').join(\"/\");\n\n if (dep != \"\") {\n url += \"/(dep)/\"+dep;\n }\n\n var date = new Date();\n\n insertJS(extension, window.lhcChat['base_url'] + \"widgetrestapi/executejs\" + url + (\"?\" + date.getFullYear() + date.getMonth() + date.getDate()), args);\n }\n }\n\n const events = [\n {id : 'closedWidget', cb : (data) => {\n\n if (data && data.mode && data.mode === 'control') {\n const state = getState();\n if (state.chatwidget.getIn(['proactive','has']) == true) {\n dispatch(hideInvitation());\n }\n }\n\n dispatch({type: 'closedWidget', data: data})\n }},\n {id : 'endedChat', cb : (data) => {\n dispatch({type: 'endedChat', data: data});\n if (window.lhcChat['mode'] == 'popup') {\n window.close();\n }\n\n if (data.survey) {\n dispatch({type: 'attr_set', attr : ['chat_ui','survey_id'], data : data.survey});\n }\n }},\n {id : 'endCookies', cb : (data) => {\n helperFunctions.sendMessageParent('endChatCookies', [{force: true}]);\n if (window.lhcChat['mode'] == 'popup') {\n // Remove local storage\n helperFunctions.removeSessionStorage('_chat');\n\n // Make sure on refresh old chat is not loaded\n helperFunctions.setSessionStorage('_reset_chat',1);\n }\n }},\n {id : 'reopenNotification', cb : (data) => {dispatch({type: 'CHAT_ALREADY_STARTED', data: {'id' : data.id, 'hash' : data.hash}})}},\n {id : 'subcribedEvent', cb : (e) => {dispatch(storeSubscriber(e.payload))}},\n {id : 'dispatch_direct', cb : (data) => {dispatch({type: data.type, data : data.data})}},\n {id : 'attr_set', cb : (data) => {dispatch({type: 'attr_set', attr : data.attr, data : data.data})}},\n {id : 'attr_rem', cb : (data) => {dispatch({type: 'attr_rem', attr : data.attr})}},\n {id : 'dispatch_event', cb : (data) => {\n\n const state = getState();\n\n let attributesCall = {};\n\n data.attr && Object.keys(data.attr).forEach(key => {\n attributesCall[key] = state.chatwidget.getIn(data.attr[key]);\n })\n\n data.attr_params && Object.keys(data.attr_params).forEach(key => {\n attributesCall[key] = data.attr_params[key];\n })\n\n const operations = {fetchMessages, addMessage};\n\n dispatch(operations[data.func](attributesCall));\n }},\n {id : 'onlineStatus',cb : (data) => {dispatch({type: 'onlineStatus', data: data})}},\n {id : 'toggleSound',cb : (data) => {dispatch({type: 'toggleSound', data: data})}},\n {id : 'widgetStatus',cb : (data) => {dispatch({type: 'widgetStatus', data: data})}},\n {id : 'vars_encrypted',cb : (data) => {dispatch({type: 'vars_encrypted', data: data})}},\n {id : 'jsVars',cb : (data, data2) => {\n dispatch({type: 'jsVars', data: data});\n if (typeof data2 !== 'undefined') {\n dispatch({type: 'jsVarsPrefill', data: data2});\n }\n }},\n {id : 'ext_modules',cb : (data) => {\n extensions = data;\n }},\n {id : 'extensionExecute',cb : (extension, args) => {\n executeExtension(extension, args);\n }},\n {id : 'chat_check_messages', cb : () => {\n const state = getState();\n if (state.chatwidget.hasIn(['chatData','id'])){\n dispatch(fetchMessages({\n 'chat_id': state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'theme' : state.chatwidget.get('theme')\n }));\n }\n }},\n {id : 'chat_check_status',cb : () => {\n const state = getState();\n if (state.chatwidget.hasIn(['chatData','id'])){\n dispatch(checkChatStatus({\n 'chat_id': state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'mode' : state.chatwidget.get('mode'),\n 'theme' : state.chatwidget.get('theme')\n }));\n }\n }},\n {id : 'proactive', cb : (data) => {\n setTimeout(() => {\n dispatch(initProactive(data))\n }, readyReceived === true ? 0 : 700);\n }},\n {id : 'focus_changed', cb : (data) => {\n var newValue = data.status || document.hasFocus();\n if (newValue != window.lhcChat['is_focused']){\n window.lhcChat['is_focused'] = newValue;\n if (newValue == true) {\n helperFunctions.sendMessageParent('unread_message_title',[{'status':true}]);\n }\n }\n }},\n {\n id : 'change_language', cb : (data) => {\n window.lhcChat['base_url'] = window.lhcChat['base_url_direct'] + (data != '' ? data.replace('/','') + '/' : '');\n data != '' && i18n.changeLanguage(data);\n helperFunctions.sendMessageParent('change_language',[{'lng':data}]);\n }\n }\n ];\n\n // Event listeners\n events.forEach((evt) => {\n helperFunctions.eventEmitter.addListener(evt.id, evt.cb);\n });\n\n function handleParentMessage(e) {\n\n if (typeof e.data !== 'string') { return; }\n\n var action = e.data.split(':')[0];\n\n if (typeof e.origin !== 'undefined') {\n \n var originDomain = e.origin.replace(\"http://\", \"\").replace(\"https://\", \"\").replace(/:(\\d+)$/,'');\n\n // We allow to send events only from chat installation or page where script is embeded.\n if (originDomain !== document.domain && (typeof window.lhcChat !== 'undefined' && (typeof window.lhcChat['domain_lhc'] === 'undefined' || window.lhcChat['domain_lhc'] !== originDomain))) {\n // Third party domains can send only these two events\n if (action != 'lhc_chat_closed_explicit' && action != 'lhc_survey_completed' && action != 'lhc_end_cookies' && (action != 'lhc_event' || (action == 'lhc_event' && !window.initializeLHC))) {\n return;\n }\n }\n }\n\n if (action == 'lhc_chat_closed_explicit') {\n const state = getState();\n\n if (state.chatwidget.hasIn(['chatData','hash']) && state.chatwidget.hasIn(['chatData','id'])) {\n dispatch(\n endChat({\n 'vid' : state.chatwidget.get('vid'),\n 'chat': {\n id : state.chatwidget.getIn(['chatData','id']),\n hash : state.chatwidget.getIn(['chatData','hash'])\n }\n }));\n } else {\n if (state.chatwidget.get('mode') == 'popup') {\n helperFunctions.sendMessageParent('endChat', [{'sender' : 'endButton'}]);\n window.close();\n } else {\n helperFunctions.sendMessageParent('closeWidget', [{'sender' : 'closeButton'}]);\n }\n }\n\n } else if (action == 'lhc_end_cookies') {\n const state = getState();\n helperFunctions.emitEvent('endCookies',[]);\n } else if (action == 'lhc_survey_completed') {\n const state = getState();\n dispatch(\n endChat({\n 'vid' : state.chatwidget.get('vid'),\n 'chat': {\n id : state.chatwidget.getIn(['chatData','id']),\n hash : state.chatwidget.getIn(['chatData','hash'])\n }\n },'survey'));\n } else if (action == 'lhc_load_ext') {\n const parts = e.data.replace('lhc_load_ext:','').split('::');\n executeExtension(parts[0],JSON.parse(parts[1]));\n } else if (action == 'lhc_update_msg') {\n const parts = e.data.replace('lhc_update_msg:','').split('::');\n const state = getState();\n\n // In all those actions message content is always removed, so we can update UI faster\n if (parts[1] == 'iframe_close' || parts[1] == 'iframe_inline_close') {\n let elm = document.getElementById('msg-'+parts[0]); elm && elm.parentNode.removeChild(elm);\n dispatch({type: \"REMOVE_CHAT_MESSAGE\", data: {'msg_id' : parts[0]}});\n }\n\n updateMessageData({\n 'id' : state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'msg_id' : parts[0]\n }, {'action' : parts[1]}).then(() => {\n // Update only if it's non standard action\n if (parts[1] != 'iframe_close' && parts[1] != 'iframe_inline_close') {\n dispatch(updateMessage({\n 'msg_id' : parts[0],\n 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'mode' : state.chatwidget.get('mode'),\n 'theme' : state.chatwidget.get('theme'),\n 'id' : state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'no_scroll' : true\n }));\n }\n });\n } else if (action == 'lhc_trigger_click') {\n const parts = e.data.replace('lhc_trigger_click:','').split('::');\n dispatch(updateTriggerClicked(\n {'type': '/(type)/manualtrigger'},\n {'payload':parts[0]}\n )).then((data) => {\n if (data.data.t) {\n helperFunctions.sendMessageParent('botTrigger', [{'trigger' : data.data.t}]);\n // Update messages\n const state = getState();\n if (state.chatwidget.hasIn(['chatData','id'])) {\n dispatch(fetchMessages({\n 'chat_id': state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'lmgsid' : state.chatwidget.getIn(['chatLiveData','lmsgid']),\n 'theme' : state.chatwidget.get('theme')\n }));\n }\n }\n });\n } else if (action == 'lhc_event') {\n const parts = e.data.replace('lhc_event:','').split('::');\n let args = JSON.parse(parts[1]);\n if (Array.isArray(args)) {\n args.push(dispatch);\n args.push(getState);\n }\n helperFunctions.emitEvent(parts[0],args);\n } else if (action == 'lhc_sizing_chat') {\n helperFunctions.sendMessageParent('widgetHeight', [{'height' : (parseInt(e.data.split(':')[1]) + 50)}]);\n } else if (action == 'lhc_init') {\n\n if (readyReceived === true) {\n return;\n }\n\n readyReceived = true;\n\n var paramsInit = JSON.parse(e.data.replace('lhc_init:',''));\n\n window.lhcChat = {};\n window.lhcChat['base_url'] = paramsInit['base_url'] + (paramsInit['lang'] && paramsInit['lang'] != '' ? paramsInit['lang'].replace('/','') + '/' : '');\n window.lhcChat['base_url_direct'] = paramsInit['base_url']; // We will use it for language change workflow\n window.lhcChat['staticJS'] = paramsInit['staticJS'];\n window.lhcChat['mode'] = paramsInit['mode'];\n window.lhcChat['is_focused'] = true;\n window.lhcChat['domain_lhc'] = paramsInit['domain_lhc'] || null;\n window.lhcChat['theme'] = paramsInit['theme'] || null;\n window.lhcChat['theme_v'] = paramsInit['theme_v'] || null;\n\n __webpack_public_path__ = window.lhcChat['staticJS']['chunk_js'] + \"/\";\n\n var date = new Date();\n\n i18n.init({\n backend: {\n loadPath: paramsInit['base_url']+'{{lng}}/widgetrestapi/lang/{{ns}}?v=11'+(\"\"+date.getFullYear() + date.getMonth() + date.getDate())\n },\n lng: ((paramsInit['lang'] && paramsInit['lang'] != '') ? paramsInit['lang'].replace('/','') : 'eng'),\n fallbackLng: 'eng',\n debug: false,\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n }\n }, () => {\n dispatch({\n type: 'loadedCore'\n })\n });\n\n paramsInit['base_url'] = window.lhcChat['base_url'];\n\n Object.keys(paramsInit).forEach(key => {\n \n let value = paramsInit[key];\n\n if (key === 'static_chat') {\n if (value.id && value.hash) {\n dispatch({\n type: 'CHAT_ALREADY_STARTED',\n data: {'id' : value.id, 'hash' : value.hash}\n })\n };\n\n if (value.vid) {\n dispatch({\n type: 'CHAT_SET_VID',\n data: value.vid\n })\n }\n\n } else if (key === 'ses_ref') {\n dispatch({\n type: 'CHAT_SESSION_REFFERER',\n data: {'ref' : value}\n })\n } else if (key === 'proactive') {\n setTimeout(() => {\n dispatch(initProactive(value))\n }, readyReceived === true ? 0 : 700);\n } else if (key === 'lhc_event') {\n Object.keys(value).forEach(keyEvent => {\n let argsEvent = value[keyEvent];\n if (Array.isArray(argsEvent)) {\n argsEvent.push(dispatch);\n argsEvent.push(getState);\n }\n helperFunctions.emitEvent(keyEvent,[argsEvent]);\n });\n } else {\n dispatch({\n type: key,\n data: value\n });\n }\n });\n\n const focusChangeCb = (e) => {\n const focused = e.type === \"focus\";\n if (focused == true) {\n helperFunctions.sendMessageParent('unread_message_title',[{'status':true}]);\n }\n window.lhcChat['is_focused'] = focused;\n };\n\n window.addEventListener('focus', focusChangeCb);\n window.addEventListener('blur', focusChangeCb);\n window.addEventListener('pageshow', focusChangeCb);\n window.addEventListener('pagehide', focusChangeCb);\n\n if (paramsInit['mode'] == 'popup') {\n helperFunctions.sendMessageParent('endChatCookies');\n\n if (helperFunctions.getSessionStorage('_reset_chat')) {\n window.location.hash = '/#';\n helperFunctions.emitEvent('endedChat');\n }\n\n const sessionChat = helperFunctions.getSessionStorage('_chat');\n\n if (sessionChat !== null && !paramsInit['static_chat']['id']) {\n dispatch({\n type: 'CHAT_ALREADY_STARTED',\n data: JSON.parse(sessionChat)\n })\n } else if (paramsInit['static_chat']['id']) {\n helperFunctions.setSessionStorage('_chat',JSON.stringify(paramsInit['static_chat']));\n }\n }\n\n } else if (action == 'lhc_continue_chat') {\n const state = getState();\n dispatch(initChatUI({\n 'id': state.chatwidget.getIn(['chatData','id']),\n 'hash' : state.chatwidget.getIn(['chatData','hash']),\n 'theme' : state.chatwidget.get('theme')\n }));\n\n dispatch({type: 'attr_rem', attr : ['chat_ui','survey_id']});\n }\n }\n\n if ( window.addEventListener ) {\n // FF\n window.addEventListener(\"message\", handleParentMessage, false);\n window.addEventListener(\"beforeunload\", () => {\n dispatch(pageUnload());\n }, false);\n\n } else if ( window.attachEvent ) {\n // IE\n window.attachEvent(\"onmessage\", handleParentMessage);\n window.attachEvent(\"beforeunload\", () => {\n dispatch(pageUnload());\n });\n } else if ( document.attachEvent ) {\n // IE\n document.attachEvent(\"onmessage\", handleParentMessage);\n document.attachEvent(\"beforeunload\", () => {\n dispatch(pageUnload());\n });\n };\n\n // We are not listening online event, because we want that this attribute would be changed by xhr call so we will be sure there is an internet.\n // window.addEventListener('online', () => dispatch({type: \"NO_CONNECTION\", data: false}));\n window.addEventListener('offline', () => dispatch({type: \"NO_CONNECTION\", data: true}));\n\n // Iframe is ready to receive updates\n // But we do not want to receive any updates as popup\n if (!window.opener && !window.initializeLHC) {\n helperFunctions.sendMessageParent('ready', window.opener ? true : false);\n } else if (window.initializeLHC) {\n handleParentMessage({data : window.initializeLHC});\n // Send message that popup is ready\n // Parent window will send additional form data in a secure way\n // Without exposing parameters in URL\n helperFunctions.sendMessageParent('ready_popup', window.opener ? true : false);\n }\n\n}","import React from 'react';\r\nimport App from './App';\r\nimport { Provider } from \"react-redux\";\r\nimport store from \"./store/index\";\r\nimport { createRoot } from 'react-dom/client';\r\n\r\nvar container = document.getElementById('root');\r\nconst root = createRoot(container);\r\nroot.render(<Provider store={store}>\r\n <App {...(root.dataset)} />\r\n</Provider>);","export const STATUS_PENDING_CHAT = 0;\nexport const STATUS_ACTIVE_CHAT = 1;\nexport const STATUS_CLOSED_CHAT = 2;\nexport const STATUS_CHATBOX_CHAT = 3;\nexport const STATUS_OPERATORS_CHAT = 4;\nexport const STATUS_BOT_CHAT = 5;\n\nexport const CHAT_INITIATOR_DEFAULT = 0;\nexport const CHAT_INITIATOR_PROACTIVE = 1;\n\nexport const STATUS_SUB_DEFAULT = 0;\nexport const STATUS_SUB_OWNER_CHANGED = 1;\nexport const STATUS_SUB_CONTACT_FORM = 2;\nexport const STATUS_SUB_USER_CLOSED_CHAT = 3;\nexport const STATUS_SUB_START_ON_KEY_UP = 4;\nexport const STATUS_SUB_SURVEY_SHOW = 5;\nexport const STATUS_SUB_SURVEY_COLLECTED = 6;\nexport const STATUS_SUB_OFFLINE_REQUEST = 7;\nexport const STATUS_SUB_ON_HOLD = 8;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n/**\n * Checks whether to skip camelCase.\n */\nvar skipCamelCase = function (property) {\n return !property ||\n NO_HYPHEN_REGEX.test(property) ||\n CUSTOM_PROPERTY_REGEX.test(property);\n};\n/**\n * Replacer that capitalizes first character.\n */\nvar capitalize = function (match, character) {\n return character.toUpperCase();\n};\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\n/**\n * CamelCases a CSS property.\n */\nvar camelCase = function (property, options) {\n if (options === void 0) { options = {}; }\n if (skipCamelCase(property)) {\n return property;\n }\n property = property.toLowerCase();\n if (options.reactCompat) {\n // `-ms` vendor prefix should not be capitalized\n property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n }\n else {\n // for non-React, remove first hyphen so vendor prefix is not capitalized\n property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n }\n return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n//# sourceMappingURL=utilities.js.map","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport HttpApi from 'i18next-http-backend';\n\ni18n.use(HttpApi).use(initReactI18next);\n\nexport default i18n;","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"LHCReactAPP:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"14\":\"29311e7cb90a78401a2e\",\"277\":\"f33d909ada22a49ceaa8\",\"396\":\"da7a8f4bd7f9edbaeadc\",\"436\":\"4b6f73a354508f8c15da\",\"472\":\"045d7029d0be887844e5\",\"507\":\"222ede2356ebeb58bb8e\",\"595\":\"833a645b16b67091a9d1\",\"806\":\"12706780f867038187f2\",\"835\":\"17d2b69b4aa52ddd9245\",\"923\":\"a558b1aca01ce5dbd82b\",\"941\":\"4a7e68cf912c762c1ece\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLHCReactAPP\"] = self[\"webpackChunkLHCReactAPP\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], function() { return __webpack_require__(8016); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["root","factory","exports","module","define","amd","self","_objectWithoutProperties","e","t","o","r","i","Object","getOwnPropertySymbols","n","length","indexOf","propertyIsEnumerable","call","_objectSpread","arguments","keys","push","apply","filter","getOwnPropertyDescriptor","enumerable","forEach","_slicedToArray","Array","isArray","l","Symbol","iterator","u","a","f","next","done","value","unsupportedIterableToArray","TypeError","ChatModal","_PureComponent","props","_this","_classCallCheck","_defineProperty","body","toggle","stopPropagation","txtToAdd","link","prompt","insertText","event","_inherits","_createClass","key","_this2","axios","get","window","lhcChat","this","dataUrl","then","response","flushSync","setState","data","container","document","getElementById","bsn","require","tabs","querySelectorAll","activeTab","prototype","element","tabItem","xwiper","Xwiper","onSwipeLeft","show","onSwipeRight","catch","err","console","log","_this3","React","state","className","role","id","tabIndex","parse","replace","domNode","attribs","type","onClick","dismissModal","linkaction","class","_extends","generalDataActionClick","domToReact","children","bbitem","onKeyDown","preventDefault","generalOnClick","name","setTimeout","newScript","createElement","appendChild","createTextNode","getElementsByTagName","item","src","PureComponent","withTranslation","asyncGeneratorStep","c","Promise","resolve","_asyncToGenerator","_next","_throw","_typeof","isNaN","__esModule","toPropertyKey","toPrimitive","String","regenerator","regeneratorAsyncIterator","w","SharedTextarea","_React$Component","_this$props","text","onTextChange","textareaRef","classNameText","textPlaceholder","onTextKeyDown","onTextFocus","textAutoFocus","textMaxLength","onTextTouchStart","onTextKeyUp","textReadOnly","onChange","rows","onTouchStart","maxLength","autoFocus","ref","onKeyUp","onFocus","placeholder","readOnly","__importDefault","mod","defineProperty","style","styleObject","declarations","inline_style_parser_1","default","hasIterator","declaration","property","__createBinding","create","m","k","k2","undefined","desc","writable","configurable","__exportStar","p","hasOwnProperty","DomHandler","domelementtype_1","node_js_1","defaultOpts","withStartIndices","withEndIndices","xmlMode","callback","options","elementCB","dom","Document","tagStack","lastNode","parser","onparserinit","onreset","onend","handleCallback","onerror","error","onclosetag","elem","pop","endIndex","onopentag","ElementType","Tag","Element","addNode","ontext","Text","node","oncomment","Comment","oncommentend","oncdatastart","CDATA","parent","oncdataend","onprocessinginstruction","ProcessingInstruction","previousSibling","startIndex","prev","ChatField","_Component","hiddenIfPrefilled","onchangeAttr","bind","onFileAdded","onChangeContent","field","selectedOption","parseInt","target","selectedIndex","getAttribute","subject_id","list","files","ruleTest","RegExp","uploadErrors","file","test","size","alert","join","defaultValueField","has","isInvalid","map","dep","set_default","attrPrefill","attr_prefill_admin","index","attr_prefill","string","toUpperCase","slice","_this4","required","classNameInput","defaultValue","validationError","autocomplete","chatUI","defaultChecked","checked","for","dangerouslySetInnerHTML","__html","selected","Component","OverloadYield","regeneratorDefine","AsyncIterator","v","asyncIterator","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","listener","alias","isValidListener","getListeners","evt","events","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","splice","off","addListeners","manipulateListeners","removeListeners","remove","single","multiple","removeEvent","_events","removeAllListeners","emitEvent","args","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","constructor","ChatErrorList","mappedFields","errors","mapEntries","_ref","_ref2","html","match","DIRECTIVE_REGEX","directive","utilities_1","formatDOM","domparser_1","b","d","g","h","x","isContextConsumer","$$typeof","y","ChatDepartment","onchangeAttrProduct","departments","getIn","dispatch","getProducts","hasIn","setDefaultValue","departmentOutput","productOutput","classNameInputProduct","isInvalidProduct","prouducts","connect","ChatBotIntroMessage","_dec","store","chatwidget","_class","_callSuper","abstractClick","updateTriggerClicked","processBotAction","disableEditor","childNodes","result","nodeType","trim","attrs","printButton","tagName","getDirectInnerText","removeMetaMessage","setAttribute","innerHTML","messageId","msgArea","getElementsByClassName","parentNode","removeChild","addLoader","onclick","mainType","parseScript","helperFunctions","paramsType","setBotPayload","payload","processed","attr","setTextAreaHidden","eval","content","cloneAttr","assign","embedMode","targetSame","href","parentHost","location","host","startsWith","concat","isMobile","minimizeWidget","split","idx","_defineProperties","ChatStartOptions","bbEnabled","langEnabled","toggleModal","title","changeLanguage","onKeyPress","ChatInvitationMessage","sendMessageParent","invitation","invitation_name","mode","prev_msg","message","name_support","extra_profile","bubble","photo","alt","message_full","width","height","photo_title","hide_name","StartChat","caretPos","textMessageRef","current","selectionStart","substring","apiLoaded","customHTMLPriority","showBBCode","Question","hasBotData","textAreaHidden","botPayload","handleSubmit","enterKeyDown","handleContentChange","handleContentChangeCustom","setLanguageAction","messagesAreaRef","eventEmitter","lng","setLocalStorage","shiftKey","elm","focus","setHideMessageField","fields","getTimeZone","iframeMode","opener","protocol","instWindow","customFields","getCustomFieldsSubmit","origin","submitData","setSessionStorage","submitOnlineForm","obj","currentState","updateOnlineFieldsInit","prefillFields","updateOnlineFields","params","dep_default","initOnlineForm","prevProps","prevState","snapshot","offsetHeight","messagesScroll","setMessages","scrollBottom","profileBody","setProfile","needFocus","hasFocus","scrollTop","scrollHeight","temp_value","_this5","hasVisibleCustomFields","mappedFieldsCustom","ChatAbort","closeText","full_height","close","as_html","taw","classMessageInput","exec","offsetWidth","msg_expand","bottom_messages","showModal","setLanguage","processStatus","moveCaretAtEnd","onSubmit","disabled","q","z","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_arrayLikeToArray","ownKeys","getOwnPropertyDescriptors","defineProperties","defaults","threshold","passive","touchStartX","touchStartY","touchEndX","touchEndY","onSwipeLeftAgent","onSwipeRightAgent","onSwipeUpAgent","onSwipeDownAgent","onTapAgent","onTouchEnd","onSwipeUp","onSwipeDown","onTap","destroy","handleGesture","EventTarget","querySelector","addEventListener","changedTouches","screenX","screenY","removeEventListener","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","render","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","HowlerGlobal","init","Howler","_counter","_html5AudioPool","html5PoolSize","_codecs","_howls","_muted","_volume","_canPlayEvent","_navigator","navigator","masterGain","noAudio","usingWebAudio","autoSuspend","ctx","autoUnlock","_setup","volume","vol","parseFloat","setupAudioContext","gain","setValueAtTime","currentTime","_webAudio","ids","_getSoundIds","j","sound","_soundById","_node","mute","muted","stop","unload","codecs","ext","_autoSuspend","Audio","oncanplaythrough","_setupCodecs","audioTest","canPlayType","mpegTest","ua","userAgent","checkOpera","isOldOpera","checkSafari","safariVersion","isOldSafari","mp3","mpeg","opus","ogg","oga","wav","aac","caf","m4a","m4b","mp4","weba","webm","dolby","flac","_unlockAudio","_audioUnlocked","_mobileUnloaded","sampleRate","_scratchBuffer","createBuffer","unlock","audioNode","_unlocked","_releaseHtml5Audio","load","_autoResume","source","createBufferSource","buffer","destination","start","noteOn","resume","onended","disconnect","_emit","_obtainHtml5Audio","testPlay","play","warn","audio","suspend","_sounds","_paused","_suspendTimer","clearTimeout","handleSuspension","_resumeAfterSuspend","Howl","_autoplay","autoplay","_format","format","_html5","html5","_loop","loop","_pool","pool","_preload","preload","_rate","rate","_sprite","sprite","_src","_xhr","method","xhr","headers","withCredentials","_duration","_state","_endTimers","_queue","_playLock","_onend","fn","_onfade","onfade","_onload","onload","_onloaderror","onloaderror","_onplayerror","onplayerror","_onpause","onpause","_onplay","onplay","_onstop","onstop","_onmute","onmute","_onvolume","onvolume","_onrate","onrate","_onseek","onseek","_onunlock","onunlock","_onresume","action","url","str","toLowerCase","Sound","loadBuffer","internal","num","_ended","_id","_inactiveSound","soundId","_loadQueue","seek","Math","max","_seek","duration","timeout","abs","setParams","_start","_stop","playWebAudio","_refreshBuffer","_playStart","bufferSource","noteGrainOn","Infinity","_clearTimer","playHtml5","playbackRate","paused","loadedNoReadyState","ejecta","readyState","isCocoonJS","pause","_rateSeek","_stopFade","noteOff","_cleanBuffer","_clearSound","_interval","fade","from","to","len","min","end","linearRampToValueAtTime","_startFadeInterval","isGroup","diff","steps","stepLen","lastTick","Date","now","_fadeTo","setInterval","tick","round","clearInterval","cancelScheduledValues","loopStart","loopEnd","playing","realTime","rateSeek","seekAndEmit","emitSeek","sounds","_errorFn","_loadFn","_endFn","remCache","cache","isId","msg","task","shift","ended","_drain","reset","limit","cnt","_panner","isIOS","vendor","howl","_parent","createGain","createGainNode","_errorListener","_loadListener","_endListener","code","ceil","__default","loadSound","atob","dataView","Uint8Array","charCodeAt","decodeAudioData","XMLHttpRequest","open","responseType","setRequestHeader","status","safeXhrSend","send","arraybuffer","success","AudioContext","webkitAudioContext","iOS","platform","appVersion","version","safari","_super","_pos","_orientation","stereo","pan","pos","positionX","setTargetAtTime","positionY","positionZ","setPosition","orientation","xUp","yUp","zUp","or","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","_stereo","_pannerAttr","coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","panningModel","refDistance","rolloffFactor","_onstereo","onstereo","_onpos","onpos","_onorientation","onorientation","pannerType","createStereoPanner","setupPanner","orientationX","orientationY","orientationZ","pannerAttr","_coneInnerAngle","_coneOuterAngle","_coneOuterGain","_distanceModel","_maxDistance","_refDistance","_rolloffFactor","_panningModel","pa","panner","createPanner","PropertyInfoRecord","mustUseProperty","attributeName","attributeNamespace","sanitizeURL","removeEmptyString","acceptsBooleans","propertyName","properties","CAMELIZE","capitalize","token","CAMELCASE","SAME","possibleStandardNames","possibleStandardNamesOptimized","isCustomAttribute","reduce","accumulator","standardName","propName","BOOLEAN","BOOLEANISH_STRING","NUMERIC","OVERLOADED_BOOLEAN","POSITIVE_NUMERIC","RESERVED","STRING","getPropertyInfo","unshift","regeneratorAsync","regeneratorAsyncGen","regeneratorKeys","regeneratorValues","_regeneratorRuntime","abrupt","delegateYield","resultName","finish","_t","sent","wrap","reverse","isGeneratorFunction","mark","awrap","async","values","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","global","__self__","F","fetch","DOMException","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","toString","normalizeName","normalizeValue","iteratorFor","items","Headers","append","header","consumed","bodyUsed","reject","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","byteLength","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","Error","arrayBuffer","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","JSON","oldValue","thisArg","entries","methods","Request","input","upcased","credentials","signal","referrer","form","bytes","decodeURIComponent","Response","bodyInit","ok","statusText","clone","redirectStatuses","redirect","RangeError","stack","request","aborted","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","onabort","onreadystatechange","polyfill","ponyfill","style_to_object_1","StyleToJS","output","camelCase","CARRIAGE_RETURN_PLACEHOLDER_REGEX","CARRIAGE_RETURN_PLACEHOLDER","CARRIAGE_RETURN_REGEX","CARRIAGE_RETURN","CASE_SENSITIVE_TAG_NAMES_MAP","CASE_SENSITIVE_TAG_NAMES","_setPrototypeOf","Doctype","Style","Script","Directive","Root","isTag","_a","_b","escapeSpecialCharacters","FIRST_TAG_REGEX","firstTagName","HTML","doc","parseFromString","HEAD_TAG_REGEX","HEAD","BODY_TAG_REGEX","BODY","elements","parseFromDocument","parseFromTemplate","DOMParser","domParser_1","implementation","htmlDocument_1","createHTMLDocument","documentElement","template","_regeneratorDefine","_invoke","lhcAxios","syncStatus","defaultHeaders","closeWidget","abtractAction","eventData","hideInvitation","persistent","asConversion","getState","post","forceClose","removeSessionStorage","cancelPresurvey","confirm","confirmed","endChat","auto_close_timeout","noClose","show_start","setSiteAccess","stringify","voteAction","hash","updateMessageData","msg_id","transferToHumanAction","initProactive","vid_id","getTime","chat_id","chat_hash","chatLiveData","message_id_first","chatData","showMessageSnippet","storeSubscriber","fetchMessages","typeParams","subscribeNotifications","initOfflineForm","paid","continue","getCaptcha","date","timestamp","currentDoc","captcha","submitOfflineForm","updateUISettings","initChatUI","init_calls","callExtension","extension","nodeJSChat","bootstrap","processResponseCheckStatus","op","updateMessage","classNameRow","no_scroll","lmgsid","elmScroll","inst","delayData","theme","update_message","checkChatStatus","th","s","isNetworkError","isAxiosError","add_msg","cs","closed","deleted","setAutoClose","pageUnload","surveyMode","surveyByVisitor","STATUS_SUB_CONTACT_FORM","STATUS_SUB_SURVEY_SHOW","STATUS_SUB_USER_CLOSED_CHAT","STATUS_BOT_CHAT","surveyByOperator","STATUS_CLOSED_CHAT","checkErrorCounter","error_counter","addMessage","ignoreAdd","logJSError","system","add_msg_pending","userTyping","contains","removeFilePreview","file_id","security_hash","submitInlineSurvey","accept","acceptCharset","accessKey","allowFullScreen","as","autoCapitalize","autoComplete","autoCorrect","autoPlay","autoSave","capture","cellPadding","cellSpacing","challenge","charSet","cite","classID","cols","colSpan","contentEditable","contextMenu","controls","controlsList","coords","crossOrigin","dateTime","defer","dir","disablePictureInPicture","disableRemotePlayback","download","draggable","encType","enterKeyHint","formMethod","formAction","formEncType","formNoValidate","formTarget","frameBorder","hidden","high","hrefLang","htmlFor","httpEquiv","icon","inputMode","integrity","is","itemID","itemProp","itemRef","itemScope","itemType","keyParams","keyType","kind","label","lang","low","manifest","marginWidth","marginHeight","media","mediaGroup","minLength","noModule","nonce","noValidate","optimum","pattern","playsInline","poster","profile","radioGroup","referrerPolicy","rel","reversed","rowSpan","sandbox","scope","scoped","scrolling","seamless","shape","sizes","span","spellCheck","srcDoc","srcLang","srcSet","step","summary","useMap","wmode","about","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","color","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","datatype","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filterRes","filterUnits","floodOpacity","floodColor","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","in","inlist","intercept","k1","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","numOctaves","offset","opacity","operator","order","orient","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","prefix","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","resource","restart","results","rotate","rx","ry","scale","security","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeWidth","strokeOpacity","suppressContentEditableWarning","suppressHydrationWarning","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","transform","typeof","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","unselectable","vAlphabetic","vectorEffect","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewBox","viewTarget","visibility","vMathematical","vocab","widths","wordSpacing","writingMode","x1","x2","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","yChannelSelector","zoomAndPan","_possibleConstructorReturn","extendStatics","__extends","__","__assign","cloneNode","hasChildren","isDocument","isDirective","isComment","isText","isCDATA","NodeWithChildren","DataNode","Node","recursive","namespace","cloneChildren","clone_1","child","clone_2","clone_3","instruction","sourceCodeLocation","childs","_regenerator","toStringTag","Generator","G","GeneratorFunction","GeneratorFunctionPrototype","C","sortIndex","performance","unstable_now","B","D","E","setImmediate","startTime","expirationTime","H","I","J","K","L","M","priorityLevel","scheduling","isInputPending","S","N","O","P","Q","R","MessageChannel","T","U","port2","port1","onmessage","postMessage","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","formatAttributes","constants_1","revertEscapedCharacters","nodes","domNodes","nodesLength","formatTagName","nodeName","domhandler_1","attributes","nodeValue","attributesLength","attribute","getCaseSensitiveTagName","_unsupportedIterableToArray","_helperFunctions","scripts","currentScript","prefixUppercase","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","LHCEventTracker","eventEmiter","eventListener","setItem","getItem","removeItem","tz","Intl","DateTimeFormat","resolvedOptions","timeZone","today","getTimezoneOffset","jan","getFullYear","jul","customItems","prefillOptions","encodeURIComponent","lhcHelperfunctions","ChatOptions","dropdown","elementId","HeaderChat","popup","switchColumn","popupChat","closeInst","hasHeader","hasPopup","showClose","iconsNumber","dropdownNumber","headerIconsBeforeDropdown","dropdownDetected","headerIcons","btn","position","endText","fheightText","includes","dropdownIcons","minText","popupText","_toConsumableArray","arrayLikeToArray","InlineSurvey","InlineIframe","ChatMessage","jsExecuted","moreReactions","reactToMessageId","imageLoaded","onchange","classList","add","setReactingTo","themeId","voiceCall","abstractAction","more","innerText","sendMessageParentDirect","removeAttribute","optionSelected","attrLoad","block","updateMessages","updateStatus","elmMessage","halfWidth","clientWidth","messageMaxWidth","offsetContainer","offsetLeft","right","left","setMetaUpdateState","setEditorEnabled","sendDelay","splitted","word","el","_el$split","_el$split2","formattedProperty","formatStringToCamelCase","_this6","operatorChanged","messages","profilePic","onLoad","getStyleObjectFromString","fallback","surveyOptions","setReaction","confirmClose","cancelClose","hasNew","newId","newTitle","ChatFileUploader","hightlight","uploading","uploadProgress","successfullUploaded","fileInputRef","openFileDialog","onFilesAddedUI","onDragOver","onDragLeave","onDrop","onPaste","onFilesAdded","uploadFiles","sendRequest","fileOptions","_uploadFiles","_callee","promises","_context","all","req","upload","lengthComputable","percentage","loaded","total","progress","error_msg","fileData","originalFile","previewUrl","URL","createObjectURL","onFilePreview","onCompletion","copy","base_url","click","array","fileListToArray","onDrag","dropArea","ondragover","ondragleave","ondrop","clipboardData","getAsFile","dataTransfer","ChatSync","intervalId","intervalCheckStatusId","syncChat","checkStatusChat","issueUpdate","syncInterval","status_sub","initClose","hasSurvey","STATUS_ACTIVE_CHAT","ChatStatus","chat","chat_ui","checkSwitchButtom","shouldShowButton","vtm","survey_mode","toggleTransferButton","transferButton","isonline","ChatIntroStatus","profileBefore","messagesBefore","hideMessageField","tabindex","placeholderMessage","VoiceMessage","MailModal","FontSizeModal","CustomHTML","FilePreview","OnlineChat","mailChat","dragging","enabledEditor","showMessages","preloadSurvey","gotToSurvey","voiceMode","showMail","changeFontSize","errorMode","scrollButton","reactToMsgId","otm","messages_ui","previewFiles","handleChange","sendMessage","changeFont","setStatusText","focusMessage","unhideDelayed","toggleSound","goToSurvey","startVoiceRecording","cancelVoiceRecording","onScrollMessages","scrollToMessage","changeFontAction","updateMetaAutoHide","keyUp","delayed","delayQueue","intervalPending","intervalFunction","unhideDelayedTimer","pendingMetaUpdate","timeoutNewMessage","timeoutScroll","widgetWasOpened","isTyping","typingStopped","typingStoppedAction","currentMessageTyping","scrollIntoView","txtTyping","getSessionStorage","defaultFontSize","getLocalStorage","selectionEnd","hasClass","doScrollBottom","hideFirst","selector","lengthHide","lastChild","htmlElement","condition","any","nextUntil","until","nextElementSibling","matches","untillMessage","addClass","adminMessages","removeClass","_step","_iterator","_createForOfIteratorHelper","timePassed","bodyMessage","_step2","_iterator2","scrollViewScrolled","messageBlock","_step3","_iterator3","setScroll","setScrollBottom","scrollValue","hasNewMessages","oldId","widgetOpen","msop","msg_body","smartScroll","msgScroller","messageElement","offsetTop","onlyIfAtBottom","paramsUpdate","new_chat","attachments","dualScreenLeft","screenLeft","dualScreenTop","screenTop","innerWidth","screen","innerHeight","clientHeight","systemZoom","availWidth","paramsWindow","newWin","needWindow","windowCreated","_this7","handleFileRemoval","oldestFile","revokeObjectURL","fileId","_this8","fileToRemove","find","_this9","allowtransparency","message_send_style","showChat","forceSurvey","classSurvey","validSurveyState","endTitle","fontSizeStyle","chatHash","chatId","onScrollCapture","setStateParent","has_new","onRemoveFile","maxSeconds","cancel","OfflineChat","ProactiveInvitation","BodyChat","lastHeiht","profileHTML","messagesHTML","navigateToSurvey","tipMode","positionPlacement","hide","ChatSound","sound_on","widget_open","playSoundFile","playSound","ErrorBoundary","hasError","info","App","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","random","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","compose","_len","funcs","_key","arg","initialState","fromJS","loadedCore","shown","isOnline","isChatting","isOfflineMode","vars_encrypted","newChat","departmentDefault","pvhash","phash","network_down","leave_message","overrides","department","product","jsVars","jsVarsPrefill","offlineData","onlineData","customData","api_data","chat_ui_state","processStatusOffline","chatStatusData","usersettings","soundOn","vid","position_placement","position_placement_original","initLoaded","msgLoaded","chatEnded","proactive","bot_id","trigger_id","priority","ses_ref","validationErrors","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","reducer","assertReducerShape","hasChanged","nextState","_i","previousStateForKey","nextStateForKey","setIn","removeIn","qinv","fields_visible","merge","products","update","val","updateIn","chat_ui_remove","findIndex","nodeParse","messageExtractor","outerHTML","closed_arg","survey_id","disable_survey","f_msg_id","uw","message_id","lmsop","counter","ott","lock_send","offline_mode","uid","ru","dep_forms","middleware","middlewares","createStore","_dispatch","middlewareAPI","chain","applyMiddleware","thunk","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","isSubscribed","isPlainObject","replaceReducer","nextReducer","outerSubscribe","observer","observeState","unsubscribe","rootReducer","extensions","jsLoaded","jsPendingExecution","readyReceived","insertJS","executeExtension","__webpack_public_path__","getMonth","getDate","handleParentMessage","originDomain","domain","initializeLHC","paramsInit","i18n","backend","loadPath","fallbackLng","debug","interpolation","escapeValue","keyEvent","argsEvent","focusChangeCb","focused","sessionChat","cb","survey","force","attributesCall","attr_params","operations","func","data2","newValue","attachEvent","addChatWidgetListener","createRoot","Provider","dataset","_objectWithoutPropertiesLoose","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","character","trimHyphen","skipCamelCase","reactCompat","_assertThisInitialized","ReferenceError","use","HttpApi","initReactI18next","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","column","updatePosition","lines","lastIndexOf","Position","whitespace","errorsList","reason","filename","silent","re","comments","rules","comment","charAt","prop","ret","decl","decls","__webpack_module_cache__","deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","chunkIds","notFulfilled","fulfilled","every","getter","ns","def","definition","chunkId","script","needAttach","charset","nc","onScriptComplete","doneFns","head","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
| ver. 1.4 |
Github
|
.
| PHP 8.2.30 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0.05 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�