{"version":3,"file":"static/js/main.57caf62a.js","mappings":";sBAeAA,EAAOC,QAfY,CACf,EAAK,CAAC,MAAO,KAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAS,KAAS,SACtE,UAAQ,CAAC,MAAO,MAAO,KAAO,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SACvE,EAAO,CAAC,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SACxE,UAAQ,CAAC,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SACvE,EAAO,CAAC,KAAO,KAAO,MAAO,OAAQ,OAAQ,OAAQ,QAAS,SAC9D,EAAO,CAAC,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAAS,SAC/D,UAAQ,CAAC,MAAO,MAAO,KAAO,IAAQ,OAAQ,OAAQ,QAAS,SAC9D,EAAO,CAAC,KAAO,GAAO,GAAO,IAAQ,IAAQ,OAAQ,QAAS,SAC/D,UAAQ,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAQ,OAAQ,QAAS,SAC/D,EAAO,CAAC,KAAO,GAAO,IAAQ,IAAQ,IAAQ,IAAQ,KAAS,MAChE,UAAQ,CAAC,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,SAC/D,EAAO,CAAC,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,qCCVnEA,EAAQC,WAuCR,SAAqBC,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,CAClD,EA3CAN,EAAQO,YAiDR,SAAsBL,GACpB,IAAIM,EAcAC,EAbAN,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBO,EAAM,IAAIC,EAVhB,SAAsBT,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBM,CAAYV,EAAKG,EAAUC,IAEzCO,EAAU,EAGVC,EAAMR,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKI,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EACxBD,EACGO,EAAUb,EAAIc,WAAWP,KAAO,GAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,GACpCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACrCM,EAAUb,EAAIc,WAAWP,EAAI,IAC/BC,EAAIG,KAAcL,GAAO,GAAM,IAC/BE,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,EAGK,IAApBF,IACFE,EACGO,EAAUb,EAAIc,WAAWP,KAAO,EAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAmB,IAANL,GAGK,IAApBF,IACFE,EACGO,EAAUb,EAAIc,WAAWP,KAAO,GAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACpCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,GAGnB,OAAOE,CACT,EA5FAV,EAAQiB,cAkHR,SAAwBC,GAQtB,IAPA,IAAIV,EACAM,EAAMI,EAAMC,OACZC,EAAaN,EAAM,EACnBO,EAAQ,GACRC,EAAiB,MAGZb,EAAI,EAAGc,EAAOT,EAAMM,EAAYX,EAAIc,EAAMd,GAAKa,EACtDD,EAAMG,KAAKC,EAAYP,EAAOT,EAAIA,EAAIa,EAAkBC,EAAOA,EAAQd,EAAIa,IAI1D,IAAfF,GACFZ,EAAMU,EAAMJ,EAAM,GAClBO,EAAMG,KACJE,EAAOlB,GAAO,GACdkB,EAAQlB,GAAO,EAAK,IACpB,OAEsB,IAAfY,IACTZ,GAAOU,EAAMJ,EAAM,IAAM,GAAKI,EAAMJ,EAAM,GAC1CO,EAAMG,KACJE,EAAOlB,GAAO,IACdkB,EAAQlB,GAAO,EAAK,IACpBkB,EAAQlB,GAAO,EAAK,IACpB,MAIJ,OAAOa,EAAMM,KAAK,GACpB,EA1IA,IALA,IAAID,EAAS,GACTX,EAAY,GACZJ,EAA4B,qBAAfiB,WAA6BA,WAAaC,MAEvDC,EAAO,mEACFrB,EAAI,EAAsBA,EAAbqB,KAAwBrB,EAC5CiB,EAAOjB,GAAKqB,EAAKrB,GACjBM,EAAUe,EAAKd,WAAWP,IAAMA,EAQlC,SAASL,EAASF,GAChB,IAAIY,EAAMZ,EAAIiB,OAEd,GAAIL,EAAM,EAAI,EACZ,MAAM,IAAIiB,MAAM,kDAKlB,IAAI1B,EAAWH,EAAI8B,QAAQ,KAO3B,OANkB,IAAd3B,IAAiBA,EAAWS,GAMzB,CAACT,EAJcA,IAAaS,EAC/B,EACA,EAAKT,EAAW,EAGtB,CAmEA,SAASoB,EAAaP,EAAOe,EAAOC,GAGlC,IAFA,IAAI1B,EARoB2B,EASpBC,EAAS,GACJ3B,EAAIwB,EAAOxB,EAAIyB,EAAKzB,GAAK,EAChCD,GACIU,EAAMT,IAAM,GAAM,WAClBS,EAAMT,EAAI,IAAM,EAAK,QACP,IAAfS,EAAMT,EAAI,IACb2B,EAAOZ,KAdFE,GADiBS,EAeM3B,IAdT,GAAK,IACxBkB,EAAOS,GAAO,GAAK,IACnBT,EAAOS,GAAO,EAAI,IAClBT,EAAa,GAANS,IAaT,OAAOC,EAAOT,KAAK,GACrB,CAlGAZ,EAAU,IAAIC,WAAW,IAAM,GAC/BD,EAAU,IAAIC,WAAW,IAAM,wCCjB3BqB,EAAWC,OAAOC,UAAUF,SAE5BG,EACgB,qBAAXC,GACiB,oBAAjBA,EAAOC,OACgB,oBAAvBD,EAAOE,aACS,oBAAhBF,EAAOG,KA+DhB7C,EAAOC,QAlBP,SAAqB6C,EAAOC,EAAkB3B,GAC5C,GAAqB,kBAAV0B,EACT,MAAM,IAAIE,UAAU,yCAGtB,OA/CsBC,EA+CJH,EA9C2B,gBAAtCR,EAASY,KAAKD,GAAOE,MAAM,GAAI,GAGxC,SAA0BC,EAAKC,EAAYjC,GACzCiC,KAAgB,EAEhB,IAAIC,EAAYF,EAAIlD,WAAamD,EAEjC,GAAIC,EAAY,EACd,MAAM,IAAIC,WAAW,6BAGvB,QAAeC,IAAXpC,EACFA,EAASkC,OAIT,IAFAlC,KAAY,GAECkC,EACX,MAAM,IAAIC,WAAW,6BAIzB,OAAOd,EACHC,EAAOG,KAAKO,EAAID,MAAME,EAAYA,EAAajC,IAC/C,IAAIsB,EAAO,IAAIb,WAAWuB,EAAID,MAAME,EAAYA,EAAajC,IACnE,CAsBWqC,CAAgBX,EAAOC,EAAkB3B,GAG7B,kBAAV0B,EAvBb,SAAqBY,EAAQC,GAK3B,GAJwB,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRjB,EAAOkB,WAAWD,GACrB,MAAM,IAAIX,UAAU,8CAGtB,OAAOP,EACHC,EAAOG,KAAKa,EAAQC,GACpB,IAAIjB,EAAOgB,EAAQC,EACzB,CAYWE,CAAWf,EAAOC,GAGpBN,EACHC,EAAOG,KAAKC,GACZ,IAAIJ,EAAOI,GAzDjB,IAAwBG,CA0DxB,+BC3DA,MAAMa,EAASC,EAAQ,MACjBC,EAAUD,EAAQ,MAClBE,EACe,oBAAXC,QAAkD,oBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENjE,EAAQyC,OAASA,EACjBzC,EAAQkE,WAyTR,SAAqB/C,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOsB,EAAOC,OAAOvB,EACvB,EA7TAnB,EAAQmE,kBAAoB,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAclD,GACrB,GAAIA,EAASiD,EACX,MAAM,IAAId,WAAW,cAAgBnC,EAAS,kCAGhD,MAAMmD,EAAM,IAAI1C,WAAWT,GAE3B,OADAmB,OAAOiC,eAAeD,EAAK7B,EAAOF,WAC3B+B,CACT,CAYA,SAAS7B,EAAQ+B,EAAK1B,EAAkB3B,GAEtC,GAAmB,kBAARqD,EAAkB,CAC3B,GAAgC,kBAArB1B,EACT,MAAM,IAAIC,UACR,sEAGJ,OAAOJ,EAAY6B,EACrB,CACA,OAAO5B,EAAK4B,EAAK1B,EAAkB3B,EACrC,CAIA,SAASyB,EAAMC,EAAOC,EAAkB3B,GACtC,GAAqB,kBAAV0B,EACT,OAqHJ,SAAqBY,EAAQC,GACH,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKjB,EAAOkB,WAAWD,GACrB,MAAM,IAAIX,UAAU,qBAAuBW,GAG7C,MAAMvC,EAAwC,EAA/BlB,EAAWwD,EAAQC,GAClC,IAAIY,EAAMD,EAAalD,GAEvB,MAAMsD,EAASH,EAAII,MAAMjB,EAAQC,GAE7Be,IAAWtD,IAIbmD,EAAMA,EAAIpB,MAAM,EAAGuB,IAGrB,OAAOH,CACT,CA3IWV,CAAWf,EAAOC,GAG3B,GAAI6B,YAAYC,OAAO/B,GACrB,OAkJJ,SAAwBgC,GACtB,GAAIC,EAAWD,EAAWjD,YAAa,CACrC,MAAMmD,EAAO,IAAInD,WAAWiD,GAC5B,OAAOrB,EAAgBuB,EAAKC,OAAQD,EAAK3B,WAAY2B,EAAK9E,WAC5D,CACA,OAAOgF,EAAcJ,EACvB,CAxJWK,CAAcrC,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIE,UACR,yHACiDF,GAIrD,GAAIiC,EAAWjC,EAAO8B,cACjB9B,GAASiC,EAAWjC,EAAMmC,OAAQL,aACrC,OAAOnB,EAAgBX,EAAOC,EAAkB3B,GAGlD,GAAiC,qBAAtBgE,oBACNL,EAAWjC,EAAOsC,oBAClBtC,GAASiC,EAAWjC,EAAMmC,OAAQG,oBACrC,OAAO3B,EAAgBX,EAAOC,EAAkB3B,GAGlD,GAAqB,kBAAV0B,EACT,MAAM,IAAIE,UACR,yEAIJ,MAAMqC,EAAUvC,EAAMuC,SAAWvC,EAAMuC,UACvC,GAAe,MAAXA,GAAmBA,IAAYvC,EACjC,OAAOJ,EAAOG,KAAKwC,EAAStC,EAAkB3B,GAGhD,MAAMkE,EAkJR,SAAqBlC,GACnB,GAAIV,EAAO6C,SAASnC,GAAM,CACxB,MAAMrC,EAA4B,EAAtByE,EAAQpC,EAAIhC,QAClBmD,EAAMD,EAAavD,GAEzB,OAAmB,IAAfwD,EAAInD,QAIRgC,EAAI4B,KAAKT,EAAK,EAAG,EAAGxD,GAHXwD,CAKX,CAEA,QAAmBf,IAAfJ,EAAIhC,OACN,MAA0B,kBAAfgC,EAAIhC,QAAuBqE,EAAYrC,EAAIhC,QAC7CkD,EAAa,GAEfY,EAAc9B,GAGvB,GAAiB,WAAbA,EAAIsC,MAAqB5D,MAAM6D,QAAQvC,EAAIwC,MAC7C,OAAOV,EAAc9B,EAAIwC,KAE7B,CAzKYC,CAAW/C,GACrB,GAAIwC,EAAG,OAAOA,EAEd,GAAsB,qBAAXpB,QAAgD,MAAtBA,OAAO4B,aACH,oBAA9BhD,EAAMoB,OAAO4B,aACtB,OAAOpD,EAAOG,KAAKC,EAAMoB,OAAO4B,aAAa,UAAW/C,EAAkB3B,GAG5E,MAAM,IAAI4B,UACR,yHACiDF,EAErD,CAmBA,SAASiD,EAAYC,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAIhD,UAAU,0CACf,GAAIgD,EAAO,EAChB,MAAM,IAAIzC,WAAW,cAAgByC,EAAO,iCAEhD,CA0BA,SAASpD,EAAaoD,GAEpB,OADAD,EAAWC,GACJ1B,EAAa0B,EAAO,EAAI,EAAoB,EAAhBR,EAAQQ,GAC7C,CAuCA,SAASd,EAAee,GACtB,MAAM7E,EAAS6E,EAAM7E,OAAS,EAAI,EAA4B,EAAxBoE,EAAQS,EAAM7E,QAC9CmD,EAAMD,EAAalD,GACzB,IAAK,IAAIV,EAAI,EAAGA,EAAIU,EAAQV,GAAK,EAC/B6D,EAAI7D,GAAgB,IAAXuF,EAAMvF,GAEjB,OAAO6D,CACT,CAUA,SAASd,EAAiBwC,EAAO5C,EAAYjC,GAC3C,GAAIiC,EAAa,GAAK4C,EAAM/F,WAAamD,EACvC,MAAM,IAAIE,WAAW,wCAGvB,GAAI0C,EAAM/F,WAAamD,GAAcjC,GAAU,GAC7C,MAAM,IAAImC,WAAW,wCAGvB,IAAIgB,EAYJ,OAVEA,OADiBf,IAAfH,QAAuCG,IAAXpC,EACxB,IAAIS,WAAWoE,QACDzC,IAAXpC,EACH,IAAIS,WAAWoE,EAAO5C,GAEtB,IAAIxB,WAAWoE,EAAO5C,EAAYjC,GAI1CmB,OAAOiC,eAAeD,EAAK7B,EAAOF,WAE3B+B,CACT,CA2BA,SAASiB,EAASpE,GAGhB,GAAIA,GAAUiD,EACZ,MAAM,IAAId,WAAW,0DACac,EAAa/B,SAAS,IAAM,UAEhE,OAAgB,EAATlB,CACT,CAsGA,SAASlB,EAAYwD,EAAQC,GAC3B,GAAIjB,EAAO6C,SAAS7B,GAClB,OAAOA,EAAOtC,OAEhB,GAAIwD,YAAYC,OAAOnB,IAAWqB,EAAWrB,EAAQkB,aACnD,OAAOlB,EAAOxD,WAEhB,GAAsB,kBAAXwD,EACT,MAAM,IAAIV,UACR,kGAC0BU,GAI9B,MAAM3C,EAAM2C,EAAOtC,OACb8E,EAAaC,UAAU/E,OAAS,IAAsB,IAAjB+E,UAAU,GACrD,IAAKD,GAAqB,IAARnF,EAAW,OAAO,EAGpC,IAAIqF,GAAc,EAClB,OACE,OAAQzC,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO5C,EACT,IAAK,OACL,IAAK,QACH,OAAOsF,EAAY3C,GAAQtC,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANL,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOuF,EAAc5C,GAAQtC,OAC/B,QACE,GAAIgF,EACF,OAAOF,GAAa,EAAIG,EAAY3C,GAAQtC,OAE9CuC,GAAY,GAAKA,GAAU4C,cAC3BH,GAAc,EAGtB,CAGA,SAASI,EAAc7C,EAAUzB,EAAOC,GACtC,IAAIiE,GAAc,EAclB,SALc5C,IAAVtB,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQuE,KAAKrF,OACf,MAAO,GAOT,SAJYoC,IAARrB,GAAqBA,EAAMsE,KAAKrF,UAClCe,EAAMsE,KAAKrF,QAGTe,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKyB,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAO+C,EAASD,KAAMvE,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOwE,EAAUF,KAAMvE,EAAOC,GAEhC,IAAK,QACH,OAAOyE,EAAWH,KAAMvE,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAO0E,EAAYJ,KAAMvE,EAAOC,GAElC,IAAK,SACH,OAAO2E,EAAYL,KAAMvE,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO4E,EAAaN,KAAMvE,EAAOC,GAEnC,QACE,GAAIiE,EAAa,MAAM,IAAIpD,UAAU,qBAAuBW,GAC5DA,GAAYA,EAAW,IAAI4C,cAC3BH,GAAc,EAGtB,CAUA,SAASY,EAAM1B,EAAG2B,EAAGC,GACnB,MAAMxG,EAAI4E,EAAE2B,GACZ3B,EAAE2B,GAAK3B,EAAE4B,GACT5B,EAAE4B,GAAKxG,CACT,CA2IA,SAASyG,EAAsBlC,EAAQmC,EAAK/D,EAAYM,EAAU0D,GAEhE,GAAsB,IAAlBpC,EAAO7D,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfiC,GACTM,EAAWN,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZoC,EADJpC,GAAcA,KAGZA,EAAagE,EAAM,EAAKpC,EAAO7D,OAAS,GAItCiC,EAAa,IAAGA,EAAa4B,EAAO7D,OAASiC,GAC7CA,GAAc4B,EAAO7D,OAAQ,CAC/B,GAAIiG,EAAK,OAAQ,EACZhE,EAAa4B,EAAO7D,OAAS,CACpC,MAAO,GAAIiC,EAAa,EAAG,CACzB,IAAIgE,EACC,OAAQ,EADJhE,EAAa,CAExB,CAQA,GALmB,kBAAR+D,IACTA,EAAM1E,EAAOG,KAAKuE,EAAKzD,IAIrBjB,EAAO6C,SAAS6B,GAElB,OAAmB,IAAfA,EAAIhG,QACE,EAEHkG,EAAarC,EAAQmC,EAAK/D,EAAYM,EAAU0D,GAClD,GAAmB,kBAARD,EAEhB,OADAA,GAAY,IACgC,oBAAjCvF,WAAWW,UAAUP,QAC1BoF,EACKxF,WAAWW,UAAUP,QAAQiB,KAAK+B,EAAQmC,EAAK/D,GAE/CxB,WAAWW,UAAU+E,YAAYrE,KAAK+B,EAAQmC,EAAK/D,GAGvDiE,EAAarC,EAAQ,CAACmC,GAAM/D,EAAYM,EAAU0D,GAG3D,MAAM,IAAIrE,UAAU,uCACtB,CAEA,SAASsE,EAAc3G,EAAKyG,EAAK/D,EAAYM,EAAU0D,GACrD,IA0BI3G,EA1BA8G,EAAY,EACZC,EAAY9G,EAAIS,OAChBsG,EAAYN,EAAIhG,OAEpB,QAAiBoC,IAAbG,IAEe,UADjBA,EAAWgE,OAAOhE,GAAU4C,gBACY,UAAb5C,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIhD,EAAIS,OAAS,GAAKgG,EAAIhG,OAAS,EACjC,OAAQ,EAEVoG,EAAY,EACZC,GAAa,EACbC,GAAa,EACbrE,GAAc,CAChB,CAGF,SAASuE,EAAMrD,EAAK7D,GAClB,OAAkB,IAAd8G,EACKjD,EAAI7D,GAEJ6D,EAAIsD,aAAanH,EAAI8G,EAEhC,CAGA,GAAIH,EAAK,CACP,IAAIS,GAAc,EAClB,IAAKpH,EAAI2C,EAAY3C,EAAI+G,EAAW/G,IAClC,GAAIkH,EAAKjH,EAAKD,KAAOkH,EAAKR,GAAqB,IAAhBU,EAAoB,EAAIpH,EAAIoH,IAEzD,IADoB,IAAhBA,IAAmBA,EAAapH,GAChCA,EAAIoH,EAAa,IAAMJ,EAAW,OAAOI,EAAaN,OAEtC,IAAhBM,IAAmBpH,GAAKA,EAAIoH,GAChCA,GAAc,CAGpB,MAEE,IADIzE,EAAaqE,EAAYD,IAAWpE,EAAaoE,EAAYC,GAC5DhH,EAAI2C,EAAY3C,GAAK,EAAGA,IAAK,CAChC,IAAIqH,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAWM,IAC7B,GAAIJ,EAAKjH,EAAKD,EAAIsH,KAAOJ,EAAKR,EAAKY,GAAI,CACrCD,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOrH,CACpB,CAGF,OAAQ,CACV,CAcA,SAASuH,EAAU1D,EAAKb,EAAQwE,EAAQ9G,GACtC8G,EAASC,OAAOD,IAAW,EAC3B,MAAME,EAAY7D,EAAInD,OAAS8G,EAC1B9G,GAGHA,EAAS+G,OAAO/G,IACHgH,IACXhH,EAASgH,GAJXhH,EAASgH,EAQX,MAAMC,EAAS3E,EAAOtC,OAKtB,IAAIV,EACJ,IAJIU,EAASiH,EAAS,IACpBjH,EAASiH,EAAS,GAGf3H,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAC3B,MAAM4H,EAASC,SAAS7E,EAAO8E,OAAW,EAAJ9H,EAAO,GAAI,IACjD,GAAI+E,EAAY6C,GAAS,OAAO5H,EAChC6D,EAAI2D,EAASxH,GAAK4H,CACpB,CACA,OAAO5H,CACT,CAEA,SAAS+H,EAAWlE,EAAKb,EAAQwE,EAAQ9G,GACvC,OAAOsH,EAAWrC,EAAY3C,EAAQa,EAAInD,OAAS8G,GAAS3D,EAAK2D,EAAQ9G,EAC3E,CAEA,SAASuH,EAAYpE,EAAKb,EAAQwE,EAAQ9G,GACxC,OAAOsH,EAypCT,SAAuBE,GACrB,MAAMC,EAAY,GAClB,IAAK,IAAInI,EAAI,EAAGA,EAAIkI,EAAIxH,SAAUV,EAEhCmI,EAAUpH,KAAyB,IAApBmH,EAAI3H,WAAWP,IAEhC,OAAOmI,CACT,CAhqCoBC,CAAapF,GAASa,EAAK2D,EAAQ9G,EACvD,CAEA,SAAS2H,EAAaxE,EAAKb,EAAQwE,EAAQ9G,GACzC,OAAOsH,EAAWpC,EAAc5C,GAASa,EAAK2D,EAAQ9G,EACxD,CAEA,SAAS4H,EAAWzE,EAAKb,EAAQwE,EAAQ9G,GACvC,OAAOsH,EA0pCT,SAAyBE,EAAKK,GAC5B,IAAIC,EAAGC,EAAIC,EACX,MAAMP,EAAY,GAClB,IAAK,IAAInI,EAAI,EAAGA,EAAIkI,EAAIxH,WACjB6H,GAAS,GAAK,KADavI,EAGhCwI,EAAIN,EAAI3H,WAAWP,GACnByI,EAAKD,GAAK,EACVE,EAAKF,EAAI,IACTL,EAAUpH,KAAK2H,GACfP,EAAUpH,KAAK0H,GAGjB,OAAON,CACT,CAxqCoBQ,CAAe3F,EAAQa,EAAInD,OAAS8G,GAAS3D,EAAK2D,EAAQ9G,EAC9E,CA8EA,SAAS0F,EAAavC,EAAKrC,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQoC,EAAInD,OACtB0C,EAAO5C,cAAcqD,GAErBT,EAAO5C,cAAcqD,EAAIpB,MAAMjB,EAAOC,GAEjD,CAEA,SAASwE,EAAWpC,EAAKrC,EAAOC,GAC9BA,EAAMmH,KAAKC,IAAIhF,EAAInD,OAAQe,GAC3B,MAAMqH,EAAM,GAEZ,IAAI9I,EAAIwB,EACR,KAAOxB,EAAIyB,GAAK,CACd,MAAMsH,EAAYlF,EAAI7D,GACtB,IAAIgJ,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI/I,EAAIiJ,GAAoBxH,EAAK,CAC/B,IAAIyH,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAarF,EAAI7D,EAAI,GACO,OAAV,IAAbkJ,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAarF,EAAI7D,EAAI,GACrBmJ,EAAYtF,EAAI7D,EAAI,GACQ,OAAV,IAAbkJ,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAarF,EAAI7D,EAAI,GACrBmJ,EAAYtF,EAAI7D,EAAI,GACpBoJ,EAAavF,EAAI7D,EAAI,GACO,OAAV,IAAbkJ,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAItB,CAEkB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAI/H,KAAKiI,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBF,EAAI/H,KAAKiI,GACThJ,GAAKiJ,CACP,CAEA,OAQF,SAAgCK,GAC9B,MAAMjJ,EAAMiJ,EAAW5I,OACvB,GAAIL,GAAOkJ,EACT,OAAOtC,OAAOuC,aAAaC,MAAMxC,OAAQqC,GAI3C,IAAIR,EAAM,GACN9I,EAAI,EACR,KAAOA,EAAIK,GACTyI,GAAO7B,OAAOuC,aAAaC,MACzBxC,OACAqC,EAAW7G,MAAMzC,EAAGA,GAAKuJ,IAG7B,OAAOT,CACT,CAxBSY,CAAsBZ,EAC/B,CA3+BAvJ,EAAQoK,WAAahG,EAgBrB3B,EAAO4H,oBAUP,WAEE,IACE,MAAM3J,EAAM,IAAIkB,WAAW,GACrB0I,EAAQ,CAAEC,IAAK,WAAc,OAAO,EAAG,GAG7C,OAFAjI,OAAOiC,eAAe+F,EAAO1I,WAAWW,WACxCD,OAAOiC,eAAe7D,EAAK4J,GACN,KAAd5J,EAAI6J,KACb,CAAE,MAAOC,GACP,OAAO,CACT,CACF,CArB6BC,GAExBhI,EAAO4H,qBAA0C,qBAAZK,SACb,oBAAlBA,QAAQC,OACjBD,QAAQC,MACN,iJAkBJrI,OAAOsI,eAAenI,EAAOF,UAAW,SAAU,CAChDsI,YAAY,EACZC,IAAK,WACH,GAAKrI,EAAO6C,SAASkB,MACrB,OAAOA,KAAKxB,MACd,IAGF1C,OAAOsI,eAAenI,EAAOF,UAAW,SAAU,CAChDsI,YAAY,EACZC,IAAK,WACH,GAAKrI,EAAO6C,SAASkB,MACrB,OAAOA,KAAKpD,UACd,IAoCFX,EAAOsI,SAAW,KA8DlBtI,EAAOG,KAAO,SAAUC,EAAOC,EAAkB3B,GAC/C,OAAOyB,EAAKC,EAAOC,EAAkB3B,EACvC,EAIAmB,OAAOiC,eAAe9B,EAAOF,UAAWX,WAAWW,WACnDD,OAAOiC,eAAe9B,EAAQb,YA8B9Ba,EAAOC,MAAQ,SAAUqD,EAAMiF,EAAMtH,GACnC,OArBF,SAAgBqC,EAAMiF,EAAMtH,GAE1B,OADAoC,EAAWC,GACPA,GAAQ,EACH1B,EAAa0B,QAETxC,IAATyH,EAIyB,kBAAbtH,EACVW,EAAa0B,GAAMiF,KAAKA,EAAMtH,GAC9BW,EAAa0B,GAAMiF,KAAKA,GAEvB3G,EAAa0B,EACtB,CAOSrD,CAAMqD,EAAMiF,EAAMtH,EAC3B,EAUAjB,EAAOE,YAAc,SAAUoD,GAC7B,OAAOpD,EAAYoD,EACrB,EAIAtD,EAAOwI,gBAAkB,SAAUlF,GACjC,OAAOpD,EAAYoD,EACrB,EA6GAtD,EAAO6C,SAAW,SAAmBD,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAE6F,WACpB7F,IAAM5C,EAAOF,SACjB,EAEAE,EAAO0I,QAAU,SAAkBC,EAAG/F,GAGpC,GAFIP,EAAWsG,EAAGxJ,cAAawJ,EAAI3I,EAAOG,KAAKwI,EAAGA,EAAEnD,OAAQmD,EAAEnL,aAC1D6E,EAAWO,EAAGzD,cAAayD,EAAI5C,EAAOG,KAAKyC,EAAGA,EAAE4C,OAAQ5C,EAAEpF,cACzDwC,EAAO6C,SAAS8F,KAAO3I,EAAO6C,SAASD,GAC1C,MAAM,IAAItC,UACR,yEAIJ,GAAIqI,IAAM/F,EAAG,OAAO,EAEpB,IAAIgG,EAAID,EAAEjK,OACNmK,EAAIjG,EAAElE,OAEV,IAAK,IAAIV,EAAI,EAAGK,EAAMuI,KAAKC,IAAI+B,EAAGC,GAAI7K,EAAIK,IAAOL,EAC/C,GAAI2K,EAAE3K,KAAO4E,EAAE5E,GAAI,CACjB4K,EAAID,EAAE3K,GACN6K,EAAIjG,EAAE5E,GACN,KACF,CAGF,OAAI4K,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EAEA5I,EAAOkB,WAAa,SAAqBD,GACvC,OAAQgE,OAAOhE,GAAU4C,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EAEA7D,EAAO8I,OAAS,SAAiBC,EAAMrK,GACrC,IAAKU,MAAM6D,QAAQ8F,GACjB,MAAM,IAAIzI,UAAU,+CAGtB,GAAoB,IAAhByI,EAAKrK,OACP,OAAOsB,EAAOC,MAAM,GAGtB,IAAIjC,EACJ,QAAe8C,IAAXpC,EAEF,IADAA,EAAS,EACJV,EAAI,EAAGA,EAAI+K,EAAKrK,SAAUV,EAC7BU,GAAUqK,EAAK/K,GAAGU,OAItB,MAAM6D,EAASvC,EAAOE,YAAYxB,GAClC,IAAIsK,EAAM,EACV,IAAKhL,EAAI,EAAGA,EAAI+K,EAAKrK,SAAUV,EAAG,CAChC,IAAI6D,EAAMkH,EAAK/K,GACf,GAAIqE,EAAWR,EAAK1C,YACd6J,EAAMnH,EAAInD,OAAS6D,EAAO7D,QACvBsB,EAAO6C,SAAShB,KAAMA,EAAM7B,EAAOG,KAAK0B,IAC7CA,EAAIS,KAAKC,EAAQyG,IAEjB7J,WAAWW,UAAUmJ,IAAIzI,KACvB+B,EACAV,EACAmH,OAGC,KAAKhJ,EAAO6C,SAAShB,GAC1B,MAAM,IAAIvB,UAAU,+CAEpBuB,EAAIS,KAAKC,EAAQyG,EACnB,CACAA,GAAOnH,EAAInD,MACb,CACA,OAAO6D,CACT,EAiDAvC,EAAOxC,WAAaA,EA8EpBwC,EAAOF,UAAU2I,WAAY,EAQ7BzI,EAAOF,UAAUoJ,OAAS,WACxB,MAAM7K,EAAM0F,KAAKrF,OACjB,GAAIL,EAAM,IAAM,EACd,MAAM,IAAIwC,WAAW,6CAEvB,IAAK,IAAI7C,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BsG,EAAKP,KAAM/F,EAAGA,EAAI,GAEpB,OAAO+F,IACT,EAEA/D,EAAOF,UAAUqJ,OAAS,WACxB,MAAM9K,EAAM0F,KAAKrF,OACjB,GAAIL,EAAM,IAAM,EACd,MAAM,IAAIwC,WAAW,6CAEvB,IAAK,IAAI7C,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BsG,EAAKP,KAAM/F,EAAGA,EAAI,GAClBsG,EAAKP,KAAM/F,EAAI,EAAGA,EAAI,GAExB,OAAO+F,IACT,EAEA/D,EAAOF,UAAUsJ,OAAS,WACxB,MAAM/K,EAAM0F,KAAKrF,OACjB,GAAIL,EAAM,IAAM,EACd,MAAM,IAAIwC,WAAW,6CAEvB,IAAK,IAAI7C,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BsG,EAAKP,KAAM/F,EAAGA,EAAI,GAClBsG,EAAKP,KAAM/F,EAAI,EAAGA,EAAI,GACtBsG,EAAKP,KAAM/F,EAAI,EAAGA,EAAI,GACtBsG,EAAKP,KAAM/F,EAAI,EAAGA,EAAI,GAExB,OAAO+F,IACT,EAEA/D,EAAOF,UAAUF,SAAW,WAC1B,MAAMlB,EAASqF,KAAKrF,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArB+E,UAAU/E,OAAqBuF,EAAUF,KAAM,EAAGrF,GAC/CoF,EAAa2D,MAAM1D,KAAMN,UAClC,EAEAzD,EAAOF,UAAUuJ,eAAiBrJ,EAAOF,UAAUF,SAEnDI,EAAOF,UAAUwJ,OAAS,SAAiB1G,GACzC,IAAK5C,EAAO6C,SAASD,GAAI,MAAM,IAAItC,UAAU,6BAC7C,OAAIyD,OAASnB,GACsB,IAA5B5C,EAAO0I,QAAQ3E,KAAMnB,EAC9B,EAEA5C,EAAOF,UAAUyJ,QAAU,WACzB,IAAIrD,EAAM,GACV,MAAMsD,EAAMjM,EAAQmE,kBAGpB,OAFAwE,EAAMnC,KAAKnE,SAAS,MAAO,EAAG4J,GAAKC,QAAQ,UAAW,OAAOC,OACzD3F,KAAKrF,OAAS8K,IAAKtD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACI3E,IACFvB,EAAOF,UAAUyB,GAAuBvB,EAAOF,UAAUyJ,SAG3DvJ,EAAOF,UAAU4I,QAAU,SAAkBiB,EAAQnK,EAAOC,EAAKmK,EAAWC,GAI1E,GAHIxH,EAAWsH,EAAQxK,cACrBwK,EAAS3J,EAAOG,KAAKwJ,EAAQA,EAAOnE,OAAQmE,EAAOnM,cAEhDwC,EAAO6C,SAAS8G,GACnB,MAAM,IAAIrJ,UACR,wFAC2BqJ,GAiB/B,QAbc7I,IAAVtB,IACFA,EAAQ,QAEEsB,IAARrB,IACFA,EAAMkK,EAASA,EAAOjL,OAAS,QAEfoC,IAAd8I,IACFA,EAAY,QAEE9I,IAAZ+I,IACFA,EAAU9F,KAAKrF,QAGbc,EAAQ,GAAKC,EAAMkK,EAAOjL,QAAUkL,EAAY,GAAKC,EAAU9F,KAAKrF,OACtE,MAAM,IAAImC,WAAW,sBAGvB,GAAI+I,GAAaC,GAAWrK,GAASC,EACnC,OAAO,EAET,GAAImK,GAAaC,EACf,OAAQ,EAEV,GAAIrK,GAASC,EACX,OAAO,EAQT,GAAIsE,OAAS4F,EAAQ,OAAO,EAE5B,IAAIf,GAJJiB,KAAa,IADbD,KAAe,GAMXf,GAPJpJ,KAAS,IADTD,KAAW,GASX,MAAMnB,EAAMuI,KAAKC,IAAI+B,EAAGC,GAElBiB,EAAW/F,KAAKtD,MAAMmJ,EAAWC,GACjCE,EAAaJ,EAAOlJ,MAAMjB,EAAOC,GAEvC,IAAK,IAAIzB,EAAI,EAAGA,EAAIK,IAAOL,EACzB,GAAI8L,EAAS9L,KAAO+L,EAAW/L,GAAI,CACjC4K,EAAIkB,EAAS9L,GACb6K,EAAIkB,EAAW/L,GACf,KACF,CAGF,OAAI4K,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EA2HA5I,EAAOF,UAAUkK,SAAW,SAAmBtF,EAAK/D,EAAYM,GAC9D,OAAoD,IAA7C8C,KAAKxE,QAAQmF,EAAK/D,EAAYM,EACvC,EAEAjB,EAAOF,UAAUP,QAAU,SAAkBmF,EAAK/D,EAAYM,GAC5D,OAAOwD,EAAqBV,KAAMW,EAAK/D,EAAYM,GAAU,EAC/D,EAEAjB,EAAOF,UAAU+E,YAAc,SAAsBH,EAAK/D,EAAYM,GACpE,OAAOwD,EAAqBV,KAAMW,EAAK/D,EAAYM,GAAU,EAC/D,EA4CAjB,EAAOF,UAAUmC,MAAQ,SAAgBjB,EAAQwE,EAAQ9G,EAAQuC,GAE/D,QAAeH,IAAX0E,EACFvE,EAAW,OACXvC,EAASqF,KAAKrF,OACd8G,EAAS,OAEJ,QAAe1E,IAAXpC,GAA0C,kBAAX8G,EACxCvE,EAAWuE,EACX9G,EAASqF,KAAKrF,OACd8G,EAAS,MAEJ,KAAIyE,SAASzE,GAUlB,MAAM,IAAIlG,MACR,2EAVFkG,KAAoB,EAChByE,SAASvL,IACXA,KAAoB,OACHoC,IAAbG,IAAwBA,EAAW,UAEvCA,EAAWvC,EACXA,OAASoC,EAMb,CAEA,MAAM4E,EAAY3B,KAAKrF,OAAS8G,EAGhC,SAFe1E,IAAXpC,GAAwBA,EAASgH,KAAWhH,EAASgH,GAEpD1E,EAAOtC,OAAS,IAAMA,EAAS,GAAK8G,EAAS,IAAOA,EAASzB,KAAKrF,OACrE,MAAM,IAAImC,WAAW,0CAGlBI,IAAUA,EAAW,QAE1B,IAAIyC,GAAc,EAClB,OACE,OAAQzC,GACN,IAAK,MACH,OAAOsE,EAASxB,KAAM/C,EAAQwE,EAAQ9G,GAExC,IAAK,OACL,IAAK,QACH,OAAOqH,EAAUhC,KAAM/C,EAAQwE,EAAQ9G,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOuH,EAAWlC,KAAM/C,EAAQwE,EAAQ9G,GAE1C,IAAK,SAEH,OAAO2H,EAAYtC,KAAM/C,EAAQwE,EAAQ9G,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO4H,EAAUvC,KAAM/C,EAAQwE,EAAQ9G,GAEzC,QACE,GAAIgF,EAAa,MAAM,IAAIpD,UAAU,qBAAuBW,GAC5DA,GAAY,GAAKA,GAAU4C,cAC3BH,GAAc,EAGtB,EAEA1D,EAAOF,UAAUoK,OAAS,WACxB,MAAO,CACLlH,KAAM,SACNE,KAAM9D,MAAMU,UAAUW,MAAMD,KAAKuD,KAAKoG,MAAQpG,KAAM,GAExD,EAyFA,MAAMwD,EAAuB,KAoB7B,SAASrD,EAAYrC,EAAKrC,EAAOC,GAC/B,IAAI2K,EAAM,GACV3K,EAAMmH,KAAKC,IAAIhF,EAAInD,OAAQe,GAE3B,IAAK,IAAIzB,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BoM,GAAOnF,OAAOuC,aAAsB,IAAT3F,EAAI7D,IAEjC,OAAOoM,CACT,CAEA,SAASjG,EAAatC,EAAKrC,EAAOC,GAChC,IAAI2K,EAAM,GACV3K,EAAMmH,KAAKC,IAAIhF,EAAInD,OAAQe,GAE3B,IAAK,IAAIzB,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BoM,GAAOnF,OAAOuC,aAAa3F,EAAI7D,IAEjC,OAAOoM,CACT,CAEA,SAASpG,EAAUnC,EAAKrC,EAAOC,GAC7B,MAAMpB,EAAMwD,EAAInD,SAEXc,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMpB,KAAKoB,EAAMpB,GAExC,IAAIgM,EAAM,GACV,IAAK,IAAIrM,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BqM,GAAOC,EAAoBzI,EAAI7D,IAEjC,OAAOqM,CACT,CAEA,SAAShG,EAAcxC,EAAKrC,EAAOC,GACjC,MAAM8K,EAAQ1I,EAAIpB,MAAMjB,EAAOC,GAC/B,IAAIqH,EAAM,GAEV,IAAK,IAAI9I,EAAI,EAAGA,EAAIuM,EAAM7L,OAAS,EAAGV,GAAK,EACzC8I,GAAO7B,OAAOuC,aAAa+C,EAAMvM,GAAqB,IAAfuM,EAAMvM,EAAI,IAEnD,OAAO8I,CACT,CAiCA,SAAS0D,EAAahF,EAAQiF,EAAK/L,GACjC,GAAK8G,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI3E,WAAW,sBAC3D,GAAI2E,EAASiF,EAAM/L,EAAQ,MAAM,IAAImC,WAAW,wCAClD,CAyQA,SAAS6J,EAAU7I,EAAKzB,EAAOoF,EAAQiF,EAAKjB,EAAK3C,GAC/C,IAAK7G,EAAO6C,SAAShB,GAAM,MAAM,IAAIvB,UAAU,+CAC/C,GAAIF,EAAQoJ,GAAOpJ,EAAQyG,EAAK,MAAM,IAAIhG,WAAW,qCACrD,GAAI2E,EAASiF,EAAM5I,EAAInD,OAAQ,MAAM,IAAImC,WAAW,qBACtD,CA+FA,SAAS8J,EAAgB9I,EAAKzB,EAAOoF,EAAQqB,EAAK2C,GAChDoB,EAAWxK,EAAOyG,EAAK2C,EAAK3H,EAAK2D,EAAQ,GAEzC,IAAIkB,EAAKjB,OAAOrF,EAAQyK,OAAO,aAC/BhJ,EAAI2D,KAAYkB,EAChBA,IAAW,EACX7E,EAAI2D,KAAYkB,EAChBA,IAAW,EACX7E,EAAI2D,KAAYkB,EAChBA,IAAW,EACX7E,EAAI2D,KAAYkB,EAChB,IAAID,EAAKhB,OAAOrF,GAASyK,OAAO,IAAMA,OAAO,aAQ7C,OAPAhJ,EAAI2D,KAAYiB,EAChBA,IAAW,EACX5E,EAAI2D,KAAYiB,EAChBA,IAAW,EACX5E,EAAI2D,KAAYiB,EAChBA,IAAW,EACX5E,EAAI2D,KAAYiB,EACTjB,CACT,CAEA,SAASsF,EAAgBjJ,EAAKzB,EAAOoF,EAAQqB,EAAK2C,GAChDoB,EAAWxK,EAAOyG,EAAK2C,EAAK3H,EAAK2D,EAAQ,GAEzC,IAAIkB,EAAKjB,OAAOrF,EAAQyK,OAAO,aAC/BhJ,EAAI2D,EAAS,GAAKkB,EAClBA,IAAW,EACX7E,EAAI2D,EAAS,GAAKkB,EAClBA,IAAW,EACX7E,EAAI2D,EAAS,GAAKkB,EAClBA,IAAW,EACX7E,EAAI2D,EAAS,GAAKkB,EAClB,IAAID,EAAKhB,OAAOrF,GAASyK,OAAO,IAAMA,OAAO,aAQ7C,OAPAhJ,EAAI2D,EAAS,GAAKiB,EAClBA,IAAW,EACX5E,EAAI2D,EAAS,GAAKiB,EAClBA,IAAW,EACX5E,EAAI2D,EAAS,GAAKiB,EAClBA,IAAW,EACX5E,EAAI2D,GAAUiB,EACPjB,EAAS,CAClB,CAkHA,SAASuF,EAAclJ,EAAKzB,EAAOoF,EAAQiF,EAAKjB,EAAK3C,GACnD,GAAIrB,EAASiF,EAAM5I,EAAInD,OAAQ,MAAM,IAAImC,WAAW,sBACpD,GAAI2E,EAAS,EAAG,MAAM,IAAI3E,WAAW,qBACvC,CAEA,SAASmK,EAAYnJ,EAAKzB,EAAOoF,EAAQyF,EAAcC,GAOrD,OANA9K,GAASA,EACToF,KAAoB,EACf0F,GACHH,EAAalJ,EAAKzB,EAAOoF,EAAQ,GAEnClE,EAAQW,MAAMJ,EAAKzB,EAAOoF,EAAQyF,EAAc,GAAI,GAC7CzF,EAAS,CAClB,CAUA,SAAS2F,EAAatJ,EAAKzB,EAAOoF,EAAQyF,EAAcC,GAOtD,OANA9K,GAASA,EACToF,KAAoB,EACf0F,GACHH,EAAalJ,EAAKzB,EAAOoF,EAAQ,GAEnClE,EAAQW,MAAMJ,EAAKzB,EAAOoF,EAAQyF,EAAc,GAAI,GAC7CzF,EAAS,CAClB,CAzkBAxF,EAAOF,UAAUW,MAAQ,SAAgBjB,EAAOC,GAC9C,MAAMpB,EAAM0F,KAAKrF,QACjBc,IAAUA,GAGE,GACVA,GAASnB,GACG,IAAGmB,EAAQ,GACdA,EAAQnB,IACjBmB,EAAQnB,IANVoB,OAAcqB,IAARrB,EAAoBpB,IAAQoB,GASxB,GACRA,GAAOpB,GACG,IAAGoB,EAAM,GACVA,EAAMpB,IACfoB,EAAMpB,GAGJoB,EAAMD,IAAOC,EAAMD,GAEvB,MAAM4L,EAASrH,KAAKsH,SAAS7L,EAAOC,GAIpC,OAFAI,OAAOiC,eAAesJ,EAAQpL,EAAOF,WAE9BsL,CACT,EAUApL,EAAOF,UAAUwL,WACjBtL,EAAOF,UAAUyL,WAAa,SAAqB/F,EAAQhI,EAAY0N,GACrE1F,KAAoB,EACpBhI,KAA4B,EACvB0N,GAAUV,EAAYhF,EAAQhI,EAAYuG,KAAKrF,QAEpD,IAAIgG,EAAMX,KAAKyB,GACXgG,EAAM,EACNxN,EAAI,EACR,OAASA,EAAIR,IAAegO,GAAO,MACjC9G,GAAOX,KAAKyB,EAASxH,GAAKwN,EAG5B,OAAO9G,CACT,EAEA1E,EAAOF,UAAU2L,WACjBzL,EAAOF,UAAU4L,WAAa,SAAqBlG,EAAQhI,EAAY0N,GACrE1F,KAAoB,EACpBhI,KAA4B,EACvB0N,GACHV,EAAYhF,EAAQhI,EAAYuG,KAAKrF,QAGvC,IAAIgG,EAAMX,KAAKyB,IAAWhI,GACtBgO,EAAM,EACV,KAAOhO,EAAa,IAAMgO,GAAO,MAC/B9G,GAAOX,KAAKyB,IAAWhI,GAAcgO,EAGvC,OAAO9G,CACT,EAEA1E,EAAOF,UAAU6L,UACjB3L,EAAOF,UAAU8L,UAAY,SAAoBpG,EAAQ0F,GAGvD,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpCqF,KAAKyB,EACd,EAEAxF,EAAOF,UAAU+L,aACjB7L,EAAOF,UAAUgM,aAAe,SAAuBtG,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpCqF,KAAKyB,GAAWzB,KAAKyB,EAAS,IAAM,CAC7C,EAEAxF,EAAOF,UAAUiM,aACjB/L,EAAOF,UAAUqF,aAAe,SAAuBK,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACnCqF,KAAKyB,IAAW,EAAKzB,KAAKyB,EAAS,EAC7C,EAEAxF,EAAOF,UAAUkM,aACjBhM,EAAOF,UAAUmM,aAAe,SAAuBzG,EAAQ0F,GAI7D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,SAElCqF,KAAKyB,GACTzB,KAAKyB,EAAS,IAAM,EACpBzB,KAAKyB,EAAS,IAAM,IACD,SAAnBzB,KAAKyB,EAAS,EACrB,EAEAxF,EAAOF,UAAUoM,aACjBlM,EAAOF,UAAUqM,aAAe,SAAuB3G,EAAQ0F,GAI7D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QAEpB,SAAfqF,KAAKyB,IACTzB,KAAKyB,EAAS,IAAM,GACrBzB,KAAKyB,EAAS,IAAM,EACrBzB,KAAKyB,EAAS,GAClB,EAEAxF,EAAOF,UAAUsM,gBAAkBC,GAAmB,SAA0B7G,GAE9E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQxI,KAAKyB,GACbgH,EAAOzI,KAAKyB,EAAS,QACb1E,IAAVyL,QAAgCzL,IAAT0L,GACzBC,EAAYjH,EAAQzB,KAAKrF,OAAS,GAGpC,MAAMgI,EAAK6F,EACQ,IAAjBxI,OAAOyB,GACU,MAAjBzB,OAAOyB,GACPzB,OAAOyB,GAAU,GAAK,GAElBiB,EAAK1C,OAAOyB,GACC,IAAjBzB,OAAOyB,GACU,MAAjBzB,OAAOyB,GACPgH,EAAO,GAAK,GAEd,OAAO3B,OAAOnE,IAAOmE,OAAOpE,IAAOoE,OAAO,IAC5C,IAEA7K,EAAOF,UAAU4M,gBAAkBL,GAAmB,SAA0B7G,GAE9E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQxI,KAAKyB,GACbgH,EAAOzI,KAAKyB,EAAS,QACb1E,IAAVyL,QAAgCzL,IAAT0L,GACzBC,EAAYjH,EAAQzB,KAAKrF,OAAS,GAGpC,MAAM+H,EAAK8F,EAAQ,GAAK,GACL,MAAjBxI,OAAOyB,GACU,IAAjBzB,OAAOyB,GACPzB,OAAOyB,GAEHkB,EAAK3C,OAAOyB,GAAU,GAAK,GACd,MAAjBzB,OAAOyB,GACU,IAAjBzB,OAAOyB,GACPgH,EAEF,OAAQ3B,OAAOpE,IAAOoE,OAAO,KAAOA,OAAOnE,EAC7C,IAEA1G,EAAOF,UAAU6M,UAAY,SAAoBnH,EAAQhI,EAAY0N,GACnE1F,KAAoB,EACpBhI,KAA4B,EACvB0N,GAAUV,EAAYhF,EAAQhI,EAAYuG,KAAKrF,QAEpD,IAAIgG,EAAMX,KAAKyB,GACXgG,EAAM,EACNxN,EAAI,EACR,OAASA,EAAIR,IAAegO,GAAO,MACjC9G,GAAOX,KAAKyB,EAASxH,GAAKwN,EAM5B,OAJAA,GAAO,IAEH9G,GAAO8G,IAAK9G,GAAOkC,KAAKgG,IAAI,EAAG,EAAIpP,IAEhCkH,CACT,EAEA1E,EAAOF,UAAU+M,UAAY,SAAoBrH,EAAQhI,EAAY0N,GACnE1F,KAAoB,EACpBhI,KAA4B,EACvB0N,GAAUV,EAAYhF,EAAQhI,EAAYuG,KAAKrF,QAEpD,IAAIV,EAAIR,EACJgO,EAAM,EACN9G,EAAMX,KAAKyB,IAAWxH,GAC1B,KAAOA,EAAI,IAAMwN,GAAO,MACtB9G,GAAOX,KAAKyB,IAAWxH,GAAKwN,EAM9B,OAJAA,GAAO,IAEH9G,GAAO8G,IAAK9G,GAAOkC,KAAKgG,IAAI,EAAG,EAAIpP,IAEhCkH,CACT,EAEA1E,EAAOF,UAAUgN,SAAW,SAAmBtH,EAAQ0F,GAGrD,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACtB,IAAfqF,KAAKyB,IAC0B,GAA5B,IAAOzB,KAAKyB,GAAU,GADKzB,KAAKyB,EAE3C,EAEAxF,EAAOF,UAAUiN,YAAc,SAAsBvH,EAAQ0F,GAC3D1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QAC3C,MAAMgG,EAAMX,KAAKyB,GAAWzB,KAAKyB,EAAS,IAAM,EAChD,OAAc,MAANd,EAAsB,WAANA,EAAmBA,CAC7C,EAEA1E,EAAOF,UAAUkN,YAAc,SAAsBxH,EAAQ0F,GAC3D1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QAC3C,MAAMgG,EAAMX,KAAKyB,EAAS,GAAMzB,KAAKyB,IAAW,EAChD,OAAc,MAANd,EAAsB,WAANA,EAAmBA,CAC7C,EAEA1E,EAAOF,UAAUmN,YAAc,SAAsBzH,EAAQ0F,GAI3D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QAEnCqF,KAAKyB,GACVzB,KAAKyB,EAAS,IAAM,EACpBzB,KAAKyB,EAAS,IAAM,GACpBzB,KAAKyB,EAAS,IAAM,EACzB,EAEAxF,EAAOF,UAAUoN,YAAc,SAAsB1H,EAAQ0F,GAI3D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QAEnCqF,KAAKyB,IAAW,GACrBzB,KAAKyB,EAAS,IAAM,GACpBzB,KAAKyB,EAAS,IAAM,EACpBzB,KAAKyB,EAAS,EACnB,EAEAxF,EAAOF,UAAUqN,eAAiBd,GAAmB,SAAyB7G,GAE5E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQxI,KAAKyB,GACbgH,EAAOzI,KAAKyB,EAAS,QACb1E,IAAVyL,QAAgCzL,IAAT0L,GACzBC,EAAYjH,EAAQzB,KAAKrF,OAAS,GAGpC,MAAMgG,EAAMX,KAAKyB,EAAS,GACL,IAAnBzB,KAAKyB,EAAS,GACK,MAAnBzB,KAAKyB,EAAS,IACbgH,GAAQ,IAEX,OAAQ3B,OAAOnG,IAAQmG,OAAO,KAC5BA,OAAO0B,EACU,IAAjBxI,OAAOyB,GACU,MAAjBzB,OAAOyB,GACPzB,OAAOyB,GAAU,GAAK,GAC1B,IAEAxF,EAAOF,UAAUsN,eAAiBf,GAAmB,SAAyB7G,GAE5E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQxI,KAAKyB,GACbgH,EAAOzI,KAAKyB,EAAS,QACb1E,IAAVyL,QAAgCzL,IAAT0L,GACzBC,EAAYjH,EAAQzB,KAAKrF,OAAS,GAGpC,MAAMgG,GAAO6H,GAAS,IACH,MAAjBxI,OAAOyB,GACU,IAAjBzB,OAAOyB,GACPzB,OAAOyB,GAET,OAAQqF,OAAOnG,IAAQmG,OAAO,KAC5BA,OAAO9G,OAAOyB,GAAU,GAAK,GACZ,MAAjBzB,OAAOyB,GACU,IAAjBzB,OAAOyB,GACPgH,EACJ,IAEAxM,EAAOF,UAAUuN,YAAc,SAAsB7H,EAAQ0F,GAG3D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpC4C,EAAQ4D,KAAKnB,KAAMyB,GAAQ,EAAM,GAAI,EAC9C,EAEAxF,EAAOF,UAAUwN,YAAc,SAAsB9H,EAAQ0F,GAG3D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpC4C,EAAQ4D,KAAKnB,KAAMyB,GAAQ,EAAO,GAAI,EAC/C,EAEAxF,EAAOF,UAAUyN,aAAe,SAAuB/H,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpC4C,EAAQ4D,KAAKnB,KAAMyB,GAAQ,EAAM,GAAI,EAC9C,EAEAxF,EAAOF,UAAU0N,aAAe,SAAuBhI,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAGzB,KAAKrF,QACpC4C,EAAQ4D,KAAKnB,KAAMyB,GAAQ,EAAO,GAAI,EAC/C,EAQAxF,EAAOF,UAAU2N,YACjBzN,EAAOF,UAAU4N,YAAc,SAAsBtN,EAAOoF,EAAQhI,EAAY0N,GAI9E,GAHA9K,GAASA,EACToF,KAAoB,EACpBhI,KAA4B,GACvB0N,EAAU,CAEbR,EAAS3G,KAAM3D,EAAOoF,EAAQhI,EADboJ,KAAKgG,IAAI,EAAG,EAAIpP,GAAc,EACK,EACtD,CAEA,IAAIgO,EAAM,EACNxN,EAAI,EAER,IADA+F,KAAKyB,GAAkB,IAARpF,IACNpC,EAAIR,IAAegO,GAAO,MACjCzH,KAAKyB,EAASxH,GAAMoC,EAAQoL,EAAO,IAGrC,OAAOhG,EAAShI,CAClB,EAEAwC,EAAOF,UAAU6N,YACjB3N,EAAOF,UAAU8N,YAAc,SAAsBxN,EAAOoF,EAAQhI,EAAY0N,GAI9E,GAHA9K,GAASA,EACToF,KAAoB,EACpBhI,KAA4B,GACvB0N,EAAU,CAEbR,EAAS3G,KAAM3D,EAAOoF,EAAQhI,EADboJ,KAAKgG,IAAI,EAAG,EAAIpP,GAAc,EACK,EACtD,CAEA,IAAIQ,EAAIR,EAAa,EACjBgO,EAAM,EAEV,IADAzH,KAAKyB,EAASxH,GAAa,IAARoC,IACVpC,GAAK,IAAMwN,GAAO,MACzBzH,KAAKyB,EAASxH,GAAMoC,EAAQoL,EAAO,IAGrC,OAAOhG,EAAShI,CAClB,EAEAwC,EAAOF,UAAU+N,WACjB7N,EAAOF,UAAUgO,WAAa,SAAqB1N,EAAOoF,EAAQ0F,GAKhE,OAJA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,IAAM,GACtDzB,KAAKyB,GAAmB,IAARpF,EACToF,EAAS,CAClB,EAEAxF,EAAOF,UAAUiO,cACjB/N,EAAOF,UAAUkO,cAAgB,SAAwB5N,EAAOoF,EAAQ0F,GAMtE,OALA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,MAAQ,GACxDzB,KAAKyB,GAAmB,IAARpF,EAChB2D,KAAKyB,EAAS,GAAMpF,IAAU,EACvBoF,EAAS,CAClB,EAEAxF,EAAOF,UAAUmO,cACjBjO,EAAOF,UAAUoO,cAAgB,SAAwB9N,EAAOoF,EAAQ0F,GAMtE,OALA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,MAAQ,GACxDzB,KAAKyB,GAAWpF,IAAU,EAC1B2D,KAAKyB,EAAS,GAAc,IAARpF,EACboF,EAAS,CAClB,EAEAxF,EAAOF,UAAUqO,cACjBnO,EAAOF,UAAUsO,cAAgB,SAAwBhO,EAAOoF,EAAQ0F,GAQtE,OAPA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,WAAY,GAC5DzB,KAAKyB,EAAS,GAAMpF,IAAU,GAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,GAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,EAC9B2D,KAAKyB,GAAmB,IAARpF,EACToF,EAAS,CAClB,EAEAxF,EAAOF,UAAUuO,cACjBrO,EAAOF,UAAUwO,cAAgB,SAAwBlO,EAAOoF,EAAQ0F,GAQtE,OAPA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,WAAY,GAC5DzB,KAAKyB,GAAWpF,IAAU,GAC1B2D,KAAKyB,EAAS,GAAMpF,IAAU,GAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,EAC9B2D,KAAKyB,EAAS,GAAc,IAARpF,EACboF,EAAS,CAClB,EA8CAxF,EAAOF,UAAUyO,iBAAmBlC,GAAmB,SAA2BjM,GAChF,OAAOuK,EAAe5G,KAAM3D,EADiEqD,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,EACrDoH,OAAO,GAAIA,OAAO,sBAC/D,IAEA7K,EAAOF,UAAU0O,iBAAmBnC,GAAmB,SAA2BjM,GAChF,OAAO0K,EAAe/G,KAAM3D,EADiEqD,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,EACrDoH,OAAO,GAAIA,OAAO,sBAC/D,IAEA7K,EAAOF,UAAU2O,WAAa,SAAqBrO,EAAOoF,EAAQhI,EAAY0N,GAG5E,GAFA9K,GAASA,EACToF,KAAoB,GACf0F,EAAU,CACb,MAAMwD,EAAQ9H,KAAKgG,IAAI,EAAI,EAAIpP,EAAc,GAE7CkN,EAAS3G,KAAM3D,EAAOoF,EAAQhI,EAAYkR,EAAQ,GAAIA,EACxD,CAEA,IAAI1Q,EAAI,EACJwN,EAAM,EACNmD,EAAM,EAEV,IADA5K,KAAKyB,GAAkB,IAARpF,IACNpC,EAAIR,IAAegO,GAAO,MAC7BpL,EAAQ,GAAa,IAARuO,GAAsC,IAAzB5K,KAAKyB,EAASxH,EAAI,KAC9C2Q,EAAM,GAER5K,KAAKyB,EAASxH,IAAOoC,EAAQoL,EAAQ,GAAKmD,EAAM,IAGlD,OAAOnJ,EAAShI,CAClB,EAEAwC,EAAOF,UAAU8O,WAAa,SAAqBxO,EAAOoF,EAAQhI,EAAY0N,GAG5E,GAFA9K,GAASA,EACToF,KAAoB,GACf0F,EAAU,CACb,MAAMwD,EAAQ9H,KAAKgG,IAAI,EAAI,EAAIpP,EAAc,GAE7CkN,EAAS3G,KAAM3D,EAAOoF,EAAQhI,EAAYkR,EAAQ,GAAIA,EACxD,CAEA,IAAI1Q,EAAIR,EAAa,EACjBgO,EAAM,EACNmD,EAAM,EAEV,IADA5K,KAAKyB,EAASxH,GAAa,IAARoC,IACVpC,GAAK,IAAMwN,GAAO,MACrBpL,EAAQ,GAAa,IAARuO,GAAsC,IAAzB5K,KAAKyB,EAASxH,EAAI,KAC9C2Q,EAAM,GAER5K,KAAKyB,EAASxH,IAAOoC,EAAQoL,EAAQ,GAAKmD,EAAM,IAGlD,OAAOnJ,EAAShI,CAClB,EAEAwC,EAAOF,UAAU+O,UAAY,SAAoBzO,EAAOoF,EAAQ0F,GAM9D,OALA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,KAAO,KACnDpF,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC2D,KAAKyB,GAAmB,IAARpF,EACToF,EAAS,CAClB,EAEAxF,EAAOF,UAAUgP,aAAe,SAAuB1O,EAAOoF,EAAQ0F,GAMpE,OALA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,OAAS,OACzDzB,KAAKyB,GAAmB,IAARpF,EAChB2D,KAAKyB,EAAS,GAAMpF,IAAU,EACvBoF,EAAS,CAClB,EAEAxF,EAAOF,UAAUiP,aAAe,SAAuB3O,EAAOoF,EAAQ0F,GAMpE,OALA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,OAAS,OACzDzB,KAAKyB,GAAWpF,IAAU,EAC1B2D,KAAKyB,EAAS,GAAc,IAARpF,EACboF,EAAS,CAClB,EAEAxF,EAAOF,UAAUkP,aAAe,SAAuB5O,EAAOoF,EAAQ0F,GAQpE,OAPA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,YAAa,YAC7DzB,KAAKyB,GAAmB,IAARpF,EAChB2D,KAAKyB,EAAS,GAAMpF,IAAU,EAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,GAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,GACvBoF,EAAS,CAClB,EAEAxF,EAAOF,UAAUmP,aAAe,SAAuB7O,EAAOoF,EAAQ0F,GASpE,OARA9K,GAASA,EACToF,KAAoB,EACf0F,GAAUR,EAAS3G,KAAM3D,EAAOoF,EAAQ,EAAG,YAAa,YACzDpF,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C2D,KAAKyB,GAAWpF,IAAU,GAC1B2D,KAAKyB,EAAS,GAAMpF,IAAU,GAC9B2D,KAAKyB,EAAS,GAAMpF,IAAU,EAC9B2D,KAAKyB,EAAS,GAAc,IAARpF,EACboF,EAAS,CAClB,EAEAxF,EAAOF,UAAUoP,gBAAkB7C,GAAmB,SAA0BjM,GAC9E,OAAOuK,EAAe5G,KAAM3D,EAD+DqD,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,GAClDoH,OAAO,sBAAuBA,OAAO,sBACnF,IAEA7K,EAAOF,UAAUqP,gBAAkB9C,GAAmB,SAA0BjM,GAC9E,OAAO0K,EAAe/G,KAAM3D,EAD+DqD,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,GAClDoH,OAAO,sBAAuBA,OAAO,sBACnF,IAiBA7K,EAAOF,UAAUsP,aAAe,SAAuBhP,EAAOoF,EAAQ0F,GACpE,OAAOF,EAAWjH,KAAM3D,EAAOoF,GAAQ,EAAM0F,EAC/C,EAEAlL,EAAOF,UAAUuP,aAAe,SAAuBjP,EAAOoF,EAAQ0F,GACpE,OAAOF,EAAWjH,KAAM3D,EAAOoF,GAAQ,EAAO0F,EAChD,EAYAlL,EAAOF,UAAUwP,cAAgB,SAAwBlP,EAAOoF,EAAQ0F,GACtE,OAAOC,EAAYpH,KAAM3D,EAAOoF,GAAQ,EAAM0F,EAChD,EAEAlL,EAAOF,UAAUyP,cAAgB,SAAwBnP,EAAOoF,EAAQ0F,GACtE,OAAOC,EAAYpH,KAAM3D,EAAOoF,GAAQ,EAAO0F,EACjD,EAGAlL,EAAOF,UAAUwC,KAAO,SAAeqH,EAAQ6F,EAAahQ,EAAOC,GACjE,IAAKO,EAAO6C,SAAS8G,GAAS,MAAM,IAAIrJ,UAAU,+BAQlD,GAPKd,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMsE,KAAKrF,QAC9B8Q,GAAe7F,EAAOjL,SAAQ8Q,EAAc7F,EAAOjL,QAClD8Q,IAAaA,EAAc,GAC5B/P,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBmK,EAAOjL,QAAgC,IAAhBqF,KAAKrF,OAAc,OAAO,EAGrD,GAAI8Q,EAAc,EAChB,MAAM,IAAI3O,WAAW,6BAEvB,GAAIrB,EAAQ,GAAKA,GAASuE,KAAKrF,OAAQ,MAAM,IAAImC,WAAW,sBAC5D,GAAIpB,EAAM,EAAG,MAAM,IAAIoB,WAAW,2BAG9BpB,EAAMsE,KAAKrF,SAAQe,EAAMsE,KAAKrF,QAC9BiL,EAAOjL,OAAS8Q,EAAc/P,EAAMD,IACtCC,EAAMkK,EAAOjL,OAAS8Q,EAAchQ,GAGtC,MAAMnB,EAAMoB,EAAMD,EAalB,OAXIuE,OAAS4F,GAAqD,oBAApCxK,WAAWW,UAAU2P,WAEjD1L,KAAK0L,WAAWD,EAAahQ,EAAOC,GAEpCN,WAAWW,UAAUmJ,IAAIzI,KACvBmJ,EACA5F,KAAKsH,SAAS7L,EAAOC,GACrB+P,GAIGnR,CACT,EAMA2B,EAAOF,UAAUyI,KAAO,SAAe7D,EAAKlF,EAAOC,EAAKwB,GAEtD,GAAmB,kBAARyD,EAAkB,CAS3B,GARqB,kBAAVlF,GACTyB,EAAWzB,EACXA,EAAQ,EACRC,EAAMsE,KAAKrF,QACa,kBAARe,IAChBwB,EAAWxB,EACXA,EAAMsE,KAAKrF,aAEIoC,IAAbG,GAA8C,kBAAbA,EACnC,MAAM,IAAIX,UAAU,6BAEtB,GAAwB,kBAAbW,IAA0BjB,EAAOkB,WAAWD,GACrD,MAAM,IAAIX,UAAU,qBAAuBW,GAE7C,GAAmB,IAAfyD,EAAIhG,OAAc,CACpB,MAAMW,EAAOqF,EAAInG,WAAW,IACV,SAAb0C,GAAuB5B,EAAO,KAClB,WAAb4B,KAEFyD,EAAMrF,EAEV,CACF,KAA0B,kBAARqF,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAMe,OAAOf,IAIf,GAAIlF,EAAQ,GAAKuE,KAAKrF,OAASc,GAASuE,KAAKrF,OAASe,EACpD,MAAM,IAAIoB,WAAW,sBAGvB,GAAIpB,GAAOD,EACT,OAAOuE,KAQT,IAAI/F,EACJ,GANAwB,KAAkB,EAClBC,OAAcqB,IAARrB,EAAoBsE,KAAKrF,OAASe,IAAQ,EAE3CiF,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAK1G,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EACzB+F,KAAK/F,GAAK0G,MAEP,CACL,MAAM6F,EAAQvK,EAAO6C,SAAS6B,GAC1BA,EACA1E,EAAOG,KAAKuE,EAAKzD,GACf5C,EAAMkM,EAAM7L,OAClB,GAAY,IAARL,EACF,MAAM,IAAIiC,UAAU,cAAgBoE,EAClC,qCAEJ,IAAK1G,EAAI,EAAGA,EAAIyB,EAAMD,IAASxB,EAC7B+F,KAAK/F,EAAIwB,GAAS+K,EAAMvM,EAAIK,EAEhC,CAEA,OAAO0F,IACT,EAMA,MAAM2L,EAAS,CAAC,EAChB,SAASC,EAAGC,EAAKC,EAAYC,GAC3BJ,EAAOE,GAAO,cAAwBE,EACpCC,WAAAA,GACEC,QAEAnQ,OAAOsI,eAAepE,KAAM,UAAW,CACrC3D,MAAOyP,EAAWpI,MAAM1D,KAAMN,WAC9BwM,UAAU,EACVC,cAAc,IAIhBnM,KAAKoM,KAAO,GAAHrH,OAAM/E,KAAKoM,KAAI,MAAArH,OAAK8G,EAAG,KAGhC7L,KAAKqM,aAEErM,KAAKoM,IACd,CAEA,QAAI9Q,GACF,OAAOuQ,CACT,CAEA,QAAIvQ,CAAMe,GACRP,OAAOsI,eAAepE,KAAM,OAAQ,CAClCmM,cAAc,EACd9H,YAAY,EACZhI,QACA6P,UAAU,GAEd,CAEArQ,QAAAA,GACE,MAAO,GAAPkJ,OAAU/E,KAAKoM,KAAI,MAAArH,OAAK8G,EAAG,OAAA9G,OAAM/E,KAAKsM,QACxC,EAEJ,CA+BA,SAASC,EAAuB5L,GAC9B,IAAIoC,EAAM,GACN9I,EAAI0G,EAAIhG,OACZ,MAAMc,EAAmB,MAAXkF,EAAI,GAAa,EAAI,EACnC,KAAO1G,GAAKwB,EAAQ,EAAGxB,GAAK,EAC1B8I,EAAM,IAAHgC,OAAOpE,EAAIjE,MAAMzC,EAAI,EAAGA,IAAE8K,OAAGhC,GAElC,MAAO,GAAPgC,OAAUpE,EAAIjE,MAAM,EAAGzC,IAAE8K,OAAGhC,EAC9B,CAYA,SAAS8D,EAAYxK,EAAOyG,EAAK2C,EAAK3H,EAAK2D,EAAQhI,GACjD,GAAI4C,EAAQoJ,GAAOpJ,EAAQyG,EAAK,CAC9B,MAAMtC,EAAmB,kBAARsC,EAAmB,IAAM,GAC1C,IAAI0J,EAWJ,MARIA,EAFA/S,EAAa,EACH,IAARqJ,GAAaA,IAAQgE,OAAO,GACtB,OAAH/B,OAAUvE,EAAC,YAAAuE,OAAWvE,EAAC,QAAAuE,OAA0B,GAAlBtL,EAAa,IAAMsL,OAAGvE,GAElD,SAAAuE,OAASvE,EAAC,QAAAuE,OAA0B,GAAlBtL,EAAa,GAAS,GAACsL,OAAGvE,EAAC,oBAAAuE,OACvB,GAAlBtL,EAAa,GAAS,GAACsL,OAAGvE,GAGhC,MAAHuE,OAASjC,GAAGiC,OAAGvE,EAAC,YAAAuE,OAAWU,GAAGV,OAAGvE,GAElC,IAAImL,EAAOc,iBAAiB,QAASD,EAAOnQ,EACpD,EAtBF,SAAsByB,EAAK2D,EAAQhI,GACjC8O,EAAe9G,EAAQ,eACH1E,IAAhBe,EAAI2D,SAAsD1E,IAA7Be,EAAI2D,EAAShI,IAC5CiP,EAAYjH,EAAQ3D,EAAInD,QAAUlB,EAAa,GAEnD,CAkBEiT,CAAY5O,EAAK2D,EAAQhI,EAC3B,CAEA,SAAS8O,EAAgBlM,EAAO+P,GAC9B,GAAqB,kBAAV/P,EACT,MAAM,IAAIsP,EAAOgB,qBAAqBP,EAAM,SAAU/P,EAE1D,CAEA,SAASqM,EAAarM,EAAO1B,EAAQsE,GACnC,GAAI4D,KAAK+J,MAAMvQ,KAAWA,EAExB,MADAkM,EAAelM,EAAO4C,GAChB,IAAI0M,EAAOc,iBAAiBxN,GAAQ,SAAU,aAAc5C,GAGpE,GAAI1B,EAAS,EACX,MAAM,IAAIgR,EAAOkB,yBAGnB,MAAM,IAAIlB,EAAOc,iBAAiBxN,GAAQ,SAAQ,MAAA8F,OACV9F,EAAO,EAAI,EAAC,YAAA8F,OAAWpK,GAC7B0B,EACpC,CAvFAuP,EAAE,4BACA,SAAUQ,GACR,OAAIA,EACK,GAAPrH,OAAUqH,EAAI,gCAGT,gDACT,GAAGtP,YACL8O,EAAE,wBACA,SAAUQ,EAAMnO,GACd,MAAO,QAAP8G,OAAeqH,EAAI,qDAAArH,cAA2D9G,EAChF,GAAG1B,WACLqP,EAAE,oBACA,SAAUzJ,EAAKqK,EAAOhQ,GACpB,IAAIsQ,EAAM,iBAAH/H,OAAoB5C,EAAG,sBAC1B4K,EAAWvQ,EAWf,OAVIkF,OAAOsL,UAAUxQ,IAAUqG,KAAKoK,IAAIzQ,GAAS,GAAK,GACpDuQ,EAAWR,EAAsBrL,OAAO1E,IACd,kBAAVA,IAChBuQ,EAAW7L,OAAO1E,IACdA,EAAQsK,OAAO,IAAMA,OAAO,KAAOtK,IAAUsK,OAAO,IAAMA,OAAO,QACnEiG,EAAWR,EAAsBQ,IAEnCA,GAAY,KAEdD,GAAO,eAAJ/H,OAAmByH,EAAK,eAAAzH,OAAcgI,GAClCD,CACT,GAAGhQ,YAiEL,MAAMoQ,EAAoB,oBAgB1B,SAAStN,EAAa3C,EAAQuF,GAE5B,IAAIS,EADJT,EAAQA,GAAS2K,IAEjB,MAAMxS,EAASsC,EAAOtC,OACtB,IAAIyS,EAAgB,KACpB,MAAM5G,EAAQ,GAEd,IAAK,IAAIvM,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAI/B,GAHAgJ,EAAYhG,EAAOzC,WAAWP,GAG1BgJ,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKmK,EAAe,CAElB,GAAInK,EAAY,MAAQ,EAEjBT,GAAS,IAAM,GAAGgE,EAAMxL,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAIf,EAAI,IAAMU,EAAQ,EAEtB6H,GAAS,IAAM,GAAGgE,EAAMxL,KAAK,IAAM,IAAM,KAC9C,QACF,CAGAoS,EAAgBnK,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBT,GAAS,IAAM,GAAGgE,EAAMxL,KAAK,IAAM,IAAM,KAC9CoS,EAAgBnK,EAChB,QACF,CAGAA,EAAkE,OAArDmK,EAAgB,OAAU,GAAKnK,EAAY,MAC1D,MAAWmK,IAEJ5K,GAAS,IAAM,GAAGgE,EAAMxL,KAAK,IAAM,IAAM,KAMhD,GAHAoS,EAAgB,KAGZnK,EAAY,IAAM,CACpB,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMxL,KAAKiI,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMxL,KACJiI,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMxL,KACJiI,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAI1H,MAAM,sBARhB,IAAKiH,GAAS,GAAK,EAAG,MACtBgE,EAAMxL,KACJiI,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOuD,CACT,CA2BA,SAAS3G,EAAesC,GACtB,OAAO9E,EAAOtD,YAxHhB,SAAsBoI,GAMpB,IAFAA,GAFAA,EAAMA,EAAIkL,MAAM,KAAK,IAEX1H,OAAOD,QAAQwH,EAAmB,KAEpCvS,OAAS,EAAG,MAAO,GAE3B,KAAOwH,EAAIxH,OAAS,IAAM,GACxBwH,GAAY,IAEd,OAAOA,CACT,CA4G4BmL,CAAYnL,GACxC,CAEA,SAASF,EAAYsL,EAAKC,EAAK/L,EAAQ9G,GACrC,IAAIV,EACJ,IAAKA,EAAI,EAAGA,EAAIU,KACTV,EAAIwH,GAAU+L,EAAI7S,QAAYV,GAAKsT,EAAI5S,UADpBV,EAExBuT,EAAIvT,EAAIwH,GAAU8L,EAAItT,GAExB,OAAOA,CACT,CAKA,SAASqE,EAAY3B,EAAKsC,GACxB,OAAOtC,aAAesC,GACZ,MAAPtC,GAAkC,MAAnBA,EAAIqP,aAA+C,MAAxBrP,EAAIqP,YAAYI,MACzDzP,EAAIqP,YAAYI,OAASnN,EAAKmN,IACpC,CACA,SAASpN,EAAarC,GAEpB,OAAOA,IAAQA,CACjB,CAIA,MAAM4J,EAAuB,WAC3B,MAAMkH,EAAW,mBACXC,EAAQ,IAAIrS,MAAM,KACxB,IAAK,IAAIpB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAM0T,EAAU,GAAJ1T,EACZ,IAAK,IAAIsH,EAAI,EAAGA,EAAI,KAAMA,EACxBmM,EAAMC,EAAMpM,GAAKkM,EAASxT,GAAKwT,EAASlM,EAE5C,CACA,OAAOmM,CACT,CAV6B,GAa7B,SAASpF,EAAoBsF,GAC3B,MAAyB,qBAAX9G,OAAyB+G,EAAyBD,CAClE,CAEA,SAASC,IACP,MAAM,IAAItS,MAAM,uBAClB,yBCliEA,IAOIuS,EAPAC,EAAuB,kBAAZC,QAAuBA,QAAU,KAC5CC,EAAeF,GAAwB,oBAAZA,EAAErK,MAC7BqK,EAAErK,MACF,SAAsBkC,EAAQsI,EAAUC,GACxC,OAAOC,SAASrS,UAAU2H,MAAMjH,KAAKmJ,EAAQsI,EAAUC,EACzD,EAIAL,EADEC,GAA0B,oBAAdA,EAAEM,QACCN,EAAEM,QACVvS,OAAOwS,sBACC,SAAwB1I,GACvC,OAAO9J,OAAOyS,oBAAoB3I,GAC/Bb,OAAOjJ,OAAOwS,sBAAsB1I,GACzC,EAEiB,SAAwBA,GACvC,OAAO9J,OAAOyS,oBAAoB3I,EACpC,EAOF,IAAI4I,EAAc9M,OAAO+M,OAAS,SAAqBpS,GACrD,OAAOA,IAAUA,CACnB,EAEA,SAASqS,IACPA,EAAaC,KAAKlS,KAAKuD,KACzB,CACAzG,EAAOC,QAAUkV,EACjBnV,EAAOC,QAAQoV,KAwYf,SAAcC,EAASzC,GACrB,OAAO,IAAI0C,SAAQ,SAAUC,EAASC,GACpC,SAASC,EAAcC,GACrBL,EAAQM,eAAe/C,EAAMgD,GAC7BJ,EAAOE,EACT,CAEA,SAASE,IAC+B,oBAA3BP,EAAQM,gBACjBN,EAAQM,eAAe,QAASF,GAElCF,EAAQ,GAAGrS,MAAMD,KAAKiD,WACxB,CAEA2P,EAA+BR,EAASzC,EAAMgD,EAAU,CAAER,MAAM,IACnD,UAATxC,GAMR,SAAuCyC,EAASS,EAASC,GAC7B,oBAAfV,EAAQW,IACjBH,EAA+BR,EAAS,QAASS,EAASC,EAE9D,CATME,CAA8BZ,EAASI,EAAe,CAAEL,MAAM,GAElE,GACF,EAxZAF,EAAaA,aAAeA,EAE5BA,EAAa3S,UAAU2T,aAAU3S,EACjC2R,EAAa3S,UAAU4T,aAAe,EACtCjB,EAAa3S,UAAU6T,mBAAgB7S,EAIvC,IAAI8S,EAAsB,GAE1B,SAASC,EAAcC,GACrB,GAAwB,oBAAbA,EACT,MAAM,IAAIxT,UAAU,0EAA4EwT,EAEpG,CAoCA,SAASC,EAAiBC,GACxB,YAA2BlT,IAAvBkT,EAAKL,cACAlB,EAAamB,oBACfI,EAAKL,aACd,CAkDA,SAASM,EAAatK,EAAQ3G,EAAM8Q,EAAUI,GAC5C,IAAI1P,EACA2P,EACAC,EA1HsBC,EAgJ1B,GApBAR,EAAcC,QAGChT,KADfqT,EAASxK,EAAO8J,UAEdU,EAASxK,EAAO8J,QAAU5T,OAAOyU,OAAO,MACxC3K,EAAO+J,aAAe,SAIK5S,IAAvBqT,EAAOI,cACT5K,EAAO6K,KAAK,cAAexR,EACf8Q,EAASA,SAAWA,EAASA,SAAWA,GAIpDK,EAASxK,EAAO8J,SAElBW,EAAWD,EAAOnR,SAGHlC,IAAbsT,EAEFA,EAAWD,EAAOnR,GAAQ8Q,IACxBnK,EAAO+J,kBAeT,GAbwB,oBAAbU,EAETA,EAAWD,EAAOnR,GAChBkR,EAAU,CAACJ,EAAUM,GAAY,CAACA,EAAUN,GAErCI,EACTE,EAASK,QAAQX,GAEjBM,EAASrV,KAAK+U,IAIhBtP,EAAIuP,EAAiBpK,IACb,GAAKyK,EAAS1V,OAAS8F,IAAM4P,EAASM,OAAQ,CACpDN,EAASM,QAAS,EAGlB,IAAIC,EAAI,IAAIrV,MAAM,+CACE8U,EAAS1V,OAAS,IAAMuG,OAAOjC,GADjC,qEAIlB2R,EAAExE,KAAO,8BACTwE,EAAE/B,QAAUjJ,EACZgL,EAAE3R,KAAOA,EACT2R,EAAEC,MAAQR,EAAS1V,OA7KG2V,EA8KHM,EA7KnB1M,SAAWA,QAAQ4M,MAAM5M,QAAQ4M,KAAKR,EA8KxC,CAGF,OAAO1K,CACT,CAaA,SAASmL,IACP,IAAK/Q,KAAKgR,MAGR,OAFAhR,KAAK4F,OAAOuJ,eAAenP,KAAKf,KAAMe,KAAKiR,QAC3CjR,KAAKgR,OAAQ,EACY,IAArBtR,UAAU/E,OACLqF,KAAK+P,SAAStT,KAAKuD,KAAK4F,QAC1B5F,KAAK+P,SAASrM,MAAM1D,KAAK4F,OAAQlG,UAE5C,CAEA,SAASwR,EAAUtL,EAAQ3G,EAAM8Q,GAC/B,IAAIoB,EAAQ,CAAEH,OAAO,EAAOC,YAAQlU,EAAW6I,OAAQA,EAAQ3G,KAAMA,EAAM8Q,SAAUA,GACjFqB,EAAUL,EAAYM,KAAKF,GAG/B,OAFAC,EAAQrB,SAAWA,EACnBoB,EAAMF,OAASG,EACRA,CACT,CAyHA,SAASE,EAAW1L,EAAQ3G,EAAMsS,GAChC,IAAInB,EAASxK,EAAO8J,QAEpB,QAAe3S,IAAXqT,EACF,MAAO,GAET,IAAIoB,EAAapB,EAAOnR,GACxB,YAAmBlC,IAAfyU,EACK,GAEiB,oBAAfA,EACFD,EAAS,CAACC,EAAWzB,UAAYyB,GAAc,CAACA,GAElDD,EAsDT,SAAyBrX,GAEvB,IADA,IAAImM,EAAM,IAAIhL,MAAMnB,EAAIS,QACfV,EAAI,EAAGA,EAAIoM,EAAI1L,SAAUV,EAChCoM,EAAIpM,GAAKC,EAAID,GAAG8V,UAAY7V,EAAID,GAElC,OAAOoM,CACT,CA3DIoL,CAAgBD,GAAcE,EAAWF,EAAYA,EAAW7W,OACpE,CAmBA,SAASgX,EAAc1S,GACrB,IAAImR,EAASpQ,KAAK0P,QAElB,QAAe3S,IAAXqT,EAAsB,CACxB,IAAIoB,EAAapB,EAAOnR,GAExB,GAA0B,oBAAfuS,EACT,OAAO,EACF,QAAmBzU,IAAfyU,EACT,OAAOA,EAAW7W,MAEtB,CAEA,OAAO,CACT,CAMA,SAAS+W,EAAWxX,EAAKsG,GAEvB,IADA,IAAIjC,EAAO,IAAIlD,MAAMmF,GACZvG,EAAI,EAAGA,EAAIuG,IAAKvG,EACvBsE,EAAKtE,GAAKC,EAAID,GAChB,OAAOsE,CACT,CA2CA,SAAS8Q,EAA+BR,EAASzC,EAAM2D,EAAUR,GAC/D,GAA0B,oBAAfV,EAAQW,GACbD,EAAMX,KACRC,EAAQD,KAAKxC,EAAM2D,GAEnBlB,EAAQW,GAAGpD,EAAM2D,OAEd,IAAwC,oBAA7BlB,EAAQ+C,iBAYxB,MAAM,IAAIrV,UAAU,6EAA+EsS,GATnGA,EAAQ+C,iBAAiBxF,GAAM,SAASyF,EAAa7T,GAG/CuR,EAAMX,MACRC,EAAQiD,oBAAoB1F,EAAMyF,GAEpC9B,EAAS/R,EACX,GAGF,CACF,CAraAlC,OAAOsI,eAAesK,EAAc,sBAAuB,CACzDrK,YAAY,EACZC,IAAK,WACH,OAAOuL,CACT,EACA3K,IAAK,SAASlH,GACZ,GAAmB,kBAARA,GAAoBA,EAAM,GAAKwQ,EAAYxQ,GACpD,MAAM,IAAIlB,WAAW,kGAAoGkB,EAAM,KAEjI6R,EAAsB7R,CACxB,IAGF0Q,EAAaC,KAAO,gBAEG5R,IAAjBiD,KAAK0P,SACL1P,KAAK0P,UAAY5T,OAAOiW,eAAe/R,MAAM0P,UAC/C1P,KAAK0P,QAAU5T,OAAOyU,OAAO,MAC7BvQ,KAAK2P,aAAe,GAGtB3P,KAAK4P,cAAgB5P,KAAK4P,oBAAiB7S,CAC7C,EAIA2R,EAAa3S,UAAUiW,gBAAkB,SAAyBxR,GAChE,GAAiB,kBAANA,GAAkBA,EAAI,GAAKgO,EAAYhO,GAChD,MAAM,IAAI1D,WAAW,gFAAkF0D,EAAI,KAG7G,OADAR,KAAK4P,cAAgBpP,EACdR,IACT,EAQA0O,EAAa3S,UAAUkW,gBAAkB,WACvC,OAAOjC,EAAiBhQ,KAC1B,EAEA0O,EAAa3S,UAAU0U,KAAO,SAAcxR,GAE1C,IADA,IAAIkP,EAAO,GACFlU,EAAI,EAAGA,EAAIyF,UAAU/E,OAAQV,IAAKkU,EAAKnT,KAAK0E,UAAUzF,IAC/D,IAAIiY,EAAoB,UAATjT,EAEXmR,EAASpQ,KAAK0P,QAClB,QAAe3S,IAAXqT,EACF8B,EAAWA,QAA4BnV,IAAjBqT,EAAOjM,WAC1B,IAAK+N,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFIhE,EAAKxT,OAAS,IAChBwX,EAAKhE,EAAK,IACRgE,aAAc5W,MAGhB,MAAM4W,EAGR,IAAIjD,EAAM,IAAI3T,MAAM,oBAAsB4W,EAAK,KAAOA,EAAG7F,QAAU,IAAM,KAEzE,MADA4C,EAAIkD,QAAUD,EACRjD,CACR,CAEA,IAAII,EAAUc,EAAOnR,GAErB,QAAgBlC,IAAZuS,EACF,OAAO,EAET,GAAuB,oBAAZA,EACTrB,EAAaqB,EAAStP,KAAMmO,OAE5B,KAAI7T,EAAMgV,EAAQ3U,OACd0X,EAAYX,EAAWpC,EAAShV,GACpC,IAASL,EAAI,EAAGA,EAAIK,IAAOL,EACzBgU,EAAaoE,EAAUpY,GAAI+F,KAAMmO,EAHX,CAM1B,OAAO,CACT,EAgEAO,EAAa3S,UAAUuW,YAAc,SAAqBrT,EAAM8Q,GAC9D,OAAOG,EAAalQ,KAAMf,EAAM8Q,GAAU,EAC5C,EAEArB,EAAa3S,UAAUyT,GAAKd,EAAa3S,UAAUuW,YAEnD5D,EAAa3S,UAAUwW,gBACnB,SAAyBtT,EAAM8Q,GAC7B,OAAOG,EAAalQ,KAAMf,EAAM8Q,GAAU,EAC5C,EAoBJrB,EAAa3S,UAAU6S,KAAO,SAAc3P,EAAM8Q,GAGhD,OAFAD,EAAcC,GACd/P,KAAKwP,GAAGvQ,EAAMiS,EAAUlR,KAAMf,EAAM8Q,IAC7B/P,IACT,EAEA0O,EAAa3S,UAAUyW,oBACnB,SAA6BvT,EAAM8Q,GAGjC,OAFAD,EAAcC,GACd/P,KAAKuS,gBAAgBtT,EAAMiS,EAAUlR,KAAMf,EAAM8Q,IAC1C/P,IACT,EAGJ0O,EAAa3S,UAAUoT,eACnB,SAAwBlQ,EAAM8Q,GAC5B,IAAI/K,EAAMoL,EAAQqC,EAAUxY,EAAGyY,EAK/B,GAHA5C,EAAcC,QAGChT,KADfqT,EAASpQ,KAAK0P,SAEZ,OAAO1P,KAGT,QAAajD,KADbiI,EAAOoL,EAAOnR,IAEZ,OAAOe,KAET,GAAIgF,IAAS+K,GAAY/K,EAAK+K,WAAaA,EACb,MAAtB/P,KAAK2P,aACT3P,KAAK0P,QAAU5T,OAAOyU,OAAO,cAEtBH,EAAOnR,GACVmR,EAAOjB,gBACTnP,KAAKyQ,KAAK,iBAAkBxR,EAAM+F,EAAK+K,UAAYA,SAElD,GAAoB,oBAAT/K,EAAqB,CAGrC,IAFAyN,GAAY,EAEPxY,EAAI+K,EAAKrK,OAAS,EAAGV,GAAK,EAAGA,IAChC,GAAI+K,EAAK/K,KAAO8V,GAAY/K,EAAK/K,GAAG8V,WAAaA,EAAU,CACzD2C,EAAmB1N,EAAK/K,GAAG8V,SAC3B0C,EAAWxY,EACX,KACF,CAGF,GAAIwY,EAAW,EACb,OAAOzS,KAEQ,IAAbyS,EACFzN,EAAK2N,QAiIf,SAAmB3N,EAAM4N,GACvB,KAAOA,EAAQ,EAAI5N,EAAKrK,OAAQiY,IAC9B5N,EAAK4N,GAAS5N,EAAK4N,EAAQ,GAC7B5N,EAAK6N,KACP,CAnIUC,CAAU9N,EAAMyN,GAGE,IAAhBzN,EAAKrK,SACPyV,EAAOnR,GAAQ+F,EAAK,SAEQjI,IAA1BqT,EAAOjB,gBACTnP,KAAKyQ,KAAK,iBAAkBxR,EAAMyT,GAAoB3C,EAC1D,CAEA,OAAO/P,IACT,EAEJ0O,EAAa3S,UAAUgX,IAAMrE,EAAa3S,UAAUoT,eAEpDT,EAAa3S,UAAUiX,mBACnB,SAA4B/T,GAC1B,IAAIoT,EAAWjC,EAAQnW,EAGvB,QAAe8C,KADfqT,EAASpQ,KAAK0P,SAEZ,OAAO1P,KAGT,QAA8BjD,IAA1BqT,EAAOjB,eAUT,OATyB,IAArBzP,UAAU/E,QACZqF,KAAK0P,QAAU5T,OAAOyU,OAAO,MAC7BvQ,KAAK2P,aAAe,QACM5S,IAAjBqT,EAAOnR,KACY,MAAtBe,KAAK2P,aACT3P,KAAK0P,QAAU5T,OAAOyU,OAAO,aAEtBH,EAAOnR,IAEXe,KAIT,GAAyB,IAArBN,UAAU/E,OAAc,CAC1B,IACIsY,EADAC,EAAOpX,OAAOoX,KAAK9C,GAEvB,IAAKnW,EAAI,EAAGA,EAAIiZ,EAAKvY,SAAUV,EAEjB,oBADZgZ,EAAMC,EAAKjZ,KAEX+F,KAAKgT,mBAAmBC,GAK1B,OAHAjT,KAAKgT,mBAAmB,kBACxBhT,KAAK0P,QAAU5T,OAAOyU,OAAO,MAC7BvQ,KAAK2P,aAAe,EACb3P,IACT,CAIA,GAAyB,oBAFzBqS,EAAYjC,EAAOnR,IAGjBe,KAAKmP,eAAelQ,EAAMoT,QACrB,QAAkBtV,IAAdsV,EAET,IAAKpY,EAAIoY,EAAU1X,OAAS,EAAGV,GAAK,EAAGA,IACrC+F,KAAKmP,eAAelQ,EAAMoT,EAAUpY,IAIxC,OAAO+F,IACT,EAmBJ0O,EAAa3S,UAAUsW,UAAY,SAAmBpT,GACpD,OAAOqS,EAAWtR,KAAMf,GAAM,EAChC,EAEAyP,EAAa3S,UAAUoX,aAAe,SAAsBlU,GAC1D,OAAOqS,EAAWtR,KAAMf,GAAM,EAChC,EAEAyP,EAAaiD,cAAgB,SAAS9C,EAAS5P,GAC7C,MAAqC,oBAA1B4P,EAAQ8C,cACV9C,EAAQ8C,cAAc1S,GAEtB0S,EAAclV,KAAKoS,EAAS5P,EAEvC,EAEAyP,EAAa3S,UAAU4V,cAAgBA,EAiBvCjD,EAAa3S,UAAUqX,WAAa,WAClC,OAAOpT,KAAK2P,aAAe,EAAI7B,EAAe9N,KAAK0P,SAAW,EAChE,kBCxacpS,EAAQ,MAEtB/D,EAAOC,QAAU,SAAU6Z,EAAaC,GACpC,IAAInP,EAIAoP,EAAS,wBAETC,EAAe,8BASnB,OAdoC,IAArB9T,UAAU/E,SASrB2Y,EAAKD,EACLA,EATc,CAACI,OAAO,EAAMC,OAAO,IAad,qBAAdC,WAA8BA,UAAUC,aAY9CP,EAAYK,OAAUL,EAAYI,WAUvCE,UAAUE,aAAaD,aAAaP,GACnCS,MAAK,SAAUC,GACZT,EAAG,KAAMS,EACb,IAAGC,OAAM,SAAU9E,GACf,IAAI/K,EAIe,kBAAR+K,GACP/K,EAAQ,IAAI5I,MAAM,qBAER6Q,KADN8C,IAAQqE,GA1CJ,sBA0CcrE,EACLqE,EAEAC,GAKjBrP,EAAQ+K,GACG9C,OAIHjI,EAAMoP,GACNrE,EAAI9C,KAAOmH,EAEXrE,EAAI9C,KAAOoH,GAKvBF,EAAGnP,EACP,MAzCIA,EAAQ,IAAI5I,MAAM,qBACZ6Q,KAAO,wBAGN6H,YAAW,WACdX,EAAGnP,EACP,GAAG,MAjBHA,EAAQ,IAAI5I,MAAM,qBACZ6Q,KAAO,oBAGN6H,YAAW,WACdX,EAAGnP,EACP,GAAG,GA+CX,gBCzEA3K,EAAQ2H,KAAO,SAAU3C,EAAQiD,EAAQyS,EAAMC,EAAMC,GACnD,IAAIpQ,EAAGvD,EACH4T,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTva,EAAIia,EAAQE,EAAS,EAAK,EAC1BK,EAAIP,GAAQ,EAAI,EAChBQ,EAAIlW,EAAOiD,EAASxH,GAOxB,IALAA,GAAKwa,EAELzQ,EAAI0Q,GAAM,IAAOF,GAAU,EAC3BE,KAAQF,EACRA,GAASH,EACFG,EAAQ,EAAGxQ,EAAS,IAAJA,EAAWxF,EAAOiD,EAASxH,GAAIA,GAAKwa,EAAGD,GAAS,GAKvE,IAHA/T,EAAIuD,GAAM,IAAOwQ,GAAU,EAC3BxQ,KAAQwQ,EACRA,GAASL,EACFK,EAAQ,EAAG/T,EAAS,IAAJA,EAAWjC,EAAOiD,EAASxH,GAAIA,GAAKwa,EAAGD,GAAS,GAEvE,GAAU,IAANxQ,EACFA,EAAI,EAAIuQ,MACH,IAAIvQ,IAAMsQ,EACf,OAAO7T,EAAIkU,IAAsBxH,KAAduH,GAAK,EAAI,GAE5BjU,GAAQoC,KAAKgG,IAAI,EAAGsL,GACpBnQ,GAAQuQ,CACV,CACA,OAAQG,GAAK,EAAI,GAAKjU,EAAIoC,KAAKgG,IAAI,EAAG7E,EAAImQ,EAC5C,EAEA3a,EAAQ0E,MAAQ,SAAUM,EAAQnC,EAAOoF,EAAQyS,EAAMC,EAAMC,GAC3D,IAAIpQ,EAAGvD,EAAGgC,EACN4R,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBM,EAAe,KAATT,EAActR,KAAKgG,IAAI,GAAI,IAAMhG,KAAKgG,IAAI,GAAI,IAAM,EAC1D5O,EAAIia,EAAO,EAAKE,EAAS,EACzBK,EAAIP,EAAO,GAAK,EAChBQ,EAAIrY,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQwG,KAAKoK,IAAI5Q,GAEboS,MAAMpS,IAAUA,IAAU8Q,KAC5B1M,EAAIgO,MAAMpS,GAAS,EAAI,EACvB2H,EAAIsQ,IAEJtQ,EAAInB,KAAK+J,MAAM/J,KAAKgS,IAAIxY,GAASwG,KAAKiS,KAClCzY,GAASoG,EAAII,KAAKgG,IAAI,GAAI7E,IAAM,IAClCA,IACAvB,GAAK,IAGLpG,GADE2H,EAAIuQ,GAAS,EACNK,EAAKnS,EAELmS,EAAK/R,KAAKgG,IAAI,EAAG,EAAI0L,IAEpB9R,GAAK,IACfuB,IACAvB,GAAK,GAGHuB,EAAIuQ,GAASD,GACf7T,EAAI,EACJuD,EAAIsQ,GACKtQ,EAAIuQ,GAAS,GACtB9T,GAAMpE,EAAQoG,EAAK,GAAKI,KAAKgG,IAAI,EAAGsL,GACpCnQ,GAAQuQ,IAER9T,EAAIpE,EAAQwG,KAAKgG,IAAI,EAAG0L,EAAQ,GAAK1R,KAAKgG,IAAI,EAAGsL,GACjDnQ,EAAI,IAIDmQ,GAAQ,EAAG3V,EAAOiD,EAASxH,GAAS,IAAJwG,EAAUxG,GAAKwa,EAAGhU,GAAK,IAAK0T,GAAQ,GAI3E,IAFAnQ,EAAKA,GAAKmQ,EAAQ1T,EAClB4T,GAAQF,EACDE,EAAO,EAAG7V,EAAOiD,EAASxH,GAAS,IAAJ+J,EAAU/J,GAAKwa,EAAGzQ,GAAK,IAAKqQ,GAAQ,GAE1E7V,EAAOiD,EAASxH,EAAIwa,IAAU,IAAJC,CAC5B,YCpF6B,oBAAlB5Y,OAAOyU,OAEhBhX,EAAOC,QAAU,SAAkBub,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAKhZ,UAAYD,OAAOyU,OAAOyE,EAAUjZ,UAAW,CAClDiQ,YAAa,CACX3P,MAAO0Y,EACP1Q,YAAY,EACZ6H,UAAU,EACVC,cAAc,KAItB,EAGA5S,EAAOC,QAAU,SAAkBub,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASnZ,UAAYiZ,EAAUjZ,UAC/BgZ,EAAKhZ,UAAY,IAAImZ,EACrBH,EAAKhZ,UAAUiQ,YAAc+I,CAC/B,CACF,qCCxBF,IAAII,EAAanV,MAAQA,KAAKmV,WAAe,WACzC,IAAIC,EAAgB,SAAUX,EAAG5V,GAI7B,OAHAuW,EAAgBtZ,OAAOiC,gBAClB,CAAEsX,UAAW,cAAgBha,OAAS,SAAUoZ,EAAG5V,GAAK4V,EAAEY,UAAYxW,CAAG,GAC1E,SAAU4V,EAAG5V,GAAK,IAAK,IAAIyW,KAAKzW,EAAO/C,OAAOC,UAAUwZ,eAAe9Y,KAAKoC,EAAGyW,KAAIb,EAAEa,GAAKzW,EAAEyW,GAAI,EAC7FF,EAAcX,EAAG5V,EAC5B,EACA,OAAO,SAAU4V,EAAG5V,GAEhB,SAAS2W,IAAOxV,KAAKgM,YAAcyI,CAAG,CADtCW,EAAcX,EAAG5V,GAEjB4V,EAAE1Y,UAAkB,OAAN8C,EAAa/C,OAAOyU,OAAO1R,IAAM2W,EAAGzZ,UAAY8C,EAAE9C,UAAW,IAAIyZ,EACnF,CACJ,CAZ6C,GAazCC,EAAmBzV,MAAQA,KAAKyV,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACA5Z,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAIuZ,EAAoBtY,EAAQ,MAG5BuY,EAAgBJ,EAAgBnY,EAAQ,OAOxCwY,EAAkC,SAAUC,GAe5C,SAASD,EAAiBE,QACT,IAATA,IAAmBA,EAAO,CAAEC,YAAY,IAC5C,IAAIC,EAAQH,EAAOtZ,KAAKuD,KAAM,CAAEiW,WAAYD,EAAKC,cAAiBjW,KAClEkW,EAAMC,WAAa,KACnBD,EAAME,WAAY,EAClB,IAAIrC,EAASiC,EAAKjC,OAAQkC,EAAaD,EAAKC,WAAYI,EAAaL,EAAKK,WAAYjE,EAAU4D,EAAK5D,QACrG8D,EAAMD,WAAaA,EAMnBC,EAAMG,WACFA,GAA6C,qBAAxBC,OAAOC,aAA+B,KAAO,KAEtE,IAAIA,EAAeD,OAAOC,cAAgBD,OAAOE,mBACjDN,EAAM9D,QAAUA,GAAW,IAAImE,EAsB/B,OAfAL,EAAMO,SAAWP,EAAM9D,QAAQsE,sBAAsBL,EAJjC,EAGC,GAGrBH,EAAMO,SAASE,QAAQT,EAAM9D,QAAQwE,aACjC7C,GACAmC,EAAMW,UAAU9C,GAEpBE,YAAW,WACPiC,EAAMzF,KAAK,SAAU,CACjBqG,SAAU,EACVC,SAAU,GACVC,WAAYd,EAAM9D,QAAQ4E,WAC1BC,QAAQ,EACRC,OAAO,GAEf,GAAG,GACIhB,CACX,CA+FA,OApJAf,EAAUW,EAAkBC,GAiE5BD,EAAiB/Z,UAAU8a,UAAY,SAAU9C,GAC7C,IAAImC,EAAQlW,KACZA,KAAK+T,OAASA,EACd/T,KAAKmW,WAAanW,KAAKoS,QAAQ+E,wBAAwBpD,GACvD/T,KAAKmW,WAAWQ,QAAQ3W,KAAKyW,UAc7BzW,KAAKyW,SAASW,eARQ,SAAUpT,GAExBkS,EAAME,WACNF,EAAMlb,KAAKkb,EAAMD,WACXjS,EAAEqT,YACFxB,EAAcyB,QAAQtT,EAAEqT,YAAYE,eAAe,GAAG/Y,QAEpE,CAEJ,EAQAsX,EAAiB/Z,UAAUyb,eAAiB,WACxCxX,KAAKoW,WAAY,CACrB,EAIAN,EAAiB/Z,UAAU0b,cAAgB,WACvCzX,KAAKoW,WAAY,CACrB,EAMAN,EAAiB/Z,UAAU2b,KAAO,WAC9B,GAA2B,WAAvB1X,KAAKoS,QAAQjB,MAAjB,CAGA,IACInR,KAAK+T,OAAO4D,YAAY,GAAGD,MAC/B,CACA,MAAOE,GACH,CAEJ5X,KAAKyW,SAASoB,aACV7X,KAAKmW,YACLnW,KAAKmW,WAAW0B,aAEpB,IACI7X,KAAKoS,QAAQ0F,OACjB,CACA,MAAOF,GACH,CAEJ5X,KAAKoW,WAAY,EACjBpW,KAAKhF,KAAK,MACVgF,KAAKyQ,KAAK,QAnBV,CAoBJ,EAIAqF,EAAiB/Z,UAAUgc,MAAQ,WAC/B,EAWJjC,EAAiBkC,MAAQ,SAAUC,GAC/B,OAAO,IAAIC,aAAaD,EAAMzZ,OAClC,EACOsX,CACX,CAtJsC,CAsJpCF,EAAkBuC,UACpB3e,EAAAA,QAAkBsc,yBC/KlB,IAAIsC,EAAQ,CAAC,EAEb,SAASC,EAAgB/c,EAAMgR,EAASP,GACjCA,IACHA,EAAOxQ,OAWT,IAAI+c,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAM9b,KAAKuD,KAdtB,SAAoB0Y,EAAMC,EAAMC,GAC9B,MAAuB,kBAAZtM,EACFA,EAEAA,EAAQoM,EAAMC,EAAMC,EAE/B,CAQ4B9M,CAAW4M,EAAMC,EAAMC,KAAU5Y,IAC3D,CAEA,OA1B8ByY,EAoBJF,GApBNC,EAoBLF,GApBsCvc,UAAYD,OAAOyU,OAAOkI,EAAW1c,WAAYyc,EAASzc,UAAUiQ,YAAcwM,EAAUA,EAASnD,UAAYoD,EA0B/JH,CACT,CARA,CAQEvM,GAEFuM,EAAUvc,UAAUqQ,KAAOL,EAAKK,KAChCkM,EAAUvc,UAAUT,KAAOA,EAC3B8c,EAAM9c,GAAQgd,CAChB,CAGA,SAASO,EAAMC,EAAUC,GACvB,GAAI1d,MAAM6D,QAAQ4Z,GAAW,CAC3B,IAAIxe,EAAMwe,EAASne,OAKnB,OAJAme,EAAWA,EAASE,KAAI,SAAU/e,GAChC,OAAOiH,OAAOjH,EAChB,IAEIK,EAAM,EACD,UAAUyK,OAAOgU,EAAO,KAAKhU,OAAO+T,EAASpc,MAAM,EAAGpC,EAAM,GAAGa,KAAK,MAAO,SAAW2d,EAASxe,EAAM,GAC3F,IAARA,EACF,UAAUyK,OAAOgU,EAAO,KAAKhU,OAAO+T,EAAS,GAAI,QAAQ/T,OAAO+T,EAAS,IAEzE,MAAM/T,OAAOgU,EAAO,KAAKhU,OAAO+T,EAAS,GAEpD,CACE,MAAO,MAAM/T,OAAOgU,EAAO,KAAKhU,OAAO7D,OAAO4X,GAElD,CA6BAT,EAAgB,yBAAyB,SAAUjM,EAAM/P,GACvD,MAAO,cAAgBA,EAAQ,4BAA8B+P,EAAO,GACtE,GAAG7P,WACH8b,EAAgB,wBAAwB,SAAUjM,EAAM0M,EAAU7a,GAEhE,IAAIgb,EA/BmBC,EAAQjU,EAwC3B6H,EAEJ,GATwB,kBAAbgM,IAjCYI,EAiCkC,OAAVJ,EAhCpC/W,QAAQkD,GAAOA,EAAM,EAAI,GAAKA,EAAKiU,EAAOve,UAAYue,IAiC/DD,EAAa,cACbH,EAAWA,EAASpT,QAAQ,QAAS,KAErCuT,EAAa,UAhCjB,SAAkB9W,EAAK+W,EAAQC,GAK7B,YAJiBpc,IAAboc,GAA0BA,EAAWhX,EAAIxH,UAC3Cwe,EAAWhX,EAAIxH,QAGVwH,EAAIiX,UAAUD,EAAWD,EAAOve,OAAQwe,KAAcD,CAC/D,CA+BMG,CAASjN,EAAM,aAEjBU,EAAM,OAAO/H,OAAOqH,EAAM,KAAKrH,OAAOkU,EAAY,KAAKlU,OAAO8T,EAAMC,EAAU,aACzE,CACL,IAAI7Z,EAhCR,SAAkBkD,EAAK+W,EAAQzd,GAK7B,MAJqB,kBAAVA,IACTA,EAAQ,KAGNA,EAAQyd,EAAOve,OAASwH,EAAIxH,UAGS,IAAhCwH,EAAI3G,QAAQ0d,EAAQzd,EAE/B,CAsBewK,CAASmG,EAAM,KAAO,WAAa,WAC9CU,EAAM,QAAS/H,OAAOqH,EAAM,MAAOrH,OAAO9F,EAAM,KAAK8F,OAAOkU,EAAY,KAAKlU,OAAO8T,EAAMC,EAAU,QACtG,CAGA,OADAhM,GAAO,mBAAmB/H,cAAc9G,EAE1C,GAAG1B,WACH8b,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUjM,GACtD,MAAO,OAASA,EAAO,4BACzB,IACAiM,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUjM,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACAiM,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuC9b,WACjF8b,EAAgB,wBAAwB,SAAUra,GAChD,MAAO,qBAAuBA,CAChC,GAAGzB,WACH8b,EAAgB,qCAAsC,oCACtD9e,EAAOC,QAAQ,EAAQ4e,6CCjGnBkB,EAAaxd,OAAOoX,MAAQ,SAAUvW,GACxC,IAAIuW,EAAO,GACX,IAAK,IAAID,KAAOtW,EAAKuW,EAAKlY,KAAKiY,GAC/B,OAAOC,CACT,EAGA3Z,EAAOC,QAAU+f,EACjB,IAAIpB,EAAW7a,EAAQ,KACnBkc,EAAWlc,EAAQ,MACvBA,EAAQ,KAARA,CAAoBic,EAAQpB,GAI1B,IADA,IAAIjF,EAAOoG,EAAWE,EAASzd,WACtB0d,EAAI,EAAGA,EAAIvG,EAAKvY,OAAQ8e,IAAK,CACpC,IAAIC,EAASxG,EAAKuG,GACbF,EAAOxd,UAAU2d,KAASH,EAAOxd,UAAU2d,GAAUF,EAASzd,UAAU2d,GAC/E,CAEF,SAASH,EAAOI,GACd,KAAM3Z,gBAAgBuZ,GAAS,OAAO,IAAIA,EAAOI,GACjDxB,EAAS1b,KAAKuD,KAAM2Z,GACpBH,EAAS/c,KAAKuD,KAAM2Z,GACpB3Z,KAAK4Z,eAAgB,EACjBD,KACuB,IAArBA,EAAQE,WAAoB7Z,KAAK6Z,UAAW,IACvB,IAArBF,EAAQzN,WAAoBlM,KAAKkM,UAAW,IAClB,IAA1ByN,EAAQC,gBACV5Z,KAAK4Z,eAAgB,EACrB5Z,KAAK4O,KAAK,MAAOkL,IAGvB,CA8BA,SAASA,IAEH9Z,KAAK+Z,eAAeC,OAIxBC,EAAQC,SAASC,EAASna,KAC5B,CACA,SAASma,EAAQC,GACfA,EAAK1e,KACP,CAvCAI,OAAOsI,eAAemV,EAAOxd,UAAW,wBAAyB,CAI/DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,eAAeM,aAC7B,IAEFve,OAAOsI,eAAemV,EAAOxd,UAAW,iBAAkB,CAIxDsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,gBAAkB/Z,KAAK+Z,eAAeO,WACpD,IAEFxe,OAAOsI,eAAemV,EAAOxd,UAAW,iBAAkB,CAIxDsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,eAAepf,MAC7B,IAeFmB,OAAOsI,eAAemV,EAAOxd,UAAW,YAAa,CAInDsI,YAAY,EACZC,IAAK,WACH,YAA4BvH,IAAxBiD,KAAKua,qBAAwDxd,IAAxBiD,KAAK+Z,iBAGvC/Z,KAAKua,eAAeC,WAAaxa,KAAK+Z,eAAeS,UAC9D,EACAtV,IAAK,SAAa7I,QAGYU,IAAxBiD,KAAKua,qBAAwDxd,IAAxBiD,KAAK+Z,iBAM9C/Z,KAAKua,eAAeC,UAAYne,EAChC2D,KAAK+Z,eAAeS,UAAYne,EAClC,iCCjGF9C,EAAOC,QAAUihB,EACjB,IAAIC,EAAYpd,EAAQ,MAExB,SAASmd,EAAYd,GACnB,KAAM3Z,gBAAgBya,GAAc,OAAO,IAAIA,EAAYd,GAC3De,EAAUje,KAAKuD,KAAM2Z,EACvB,CAJArc,EAAQ,KAARA,CAAoBmd,EAAaC,GAKjCD,EAAY1e,UAAU4e,WAAa,SAAU1C,EAAO/a,EAAUoW,GAC5DA,EAAG,KAAM2E,EACX,kCCVIsB,YAHJhgB,EAAOC,QAAU2e,EAMjBA,EAASyC,cAAgBA,EAGhBtd,EAAAA,MAAAA,aAAT,IACIud,EAAkB,SAAyBhM,EAAS5P,GACtD,OAAO4P,EAAQwD,UAAUpT,GAAMtE,MACjC,EAIImgB,EAASxd,EAAQ,MAGjBrB,EAASqB,EAAAA,MAAAA,OACTyd,GAAmC,qBAAXC,EAAAA,EAAyBA,EAAAA,EAA2B,qBAAX1E,OAAyBA,OAAyB,qBAAT8D,KAAuBA,KAAO,CAAC,GAAGhf,YAAc,WAAa,EAS3K,IACI6f,EADAC,EAAY5d,EAAQ,MAGtB2d,EADEC,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAI5B,IAWIC,EACAC,EACAjf,EAbAkf,EAAahe,EAAQ,MACrBie,EAAcje,EAAQ,MAExBke,EADale,EAAQ,MACOke,iBAC1BC,EAAiBne,EAAAA,MAAAA,EACnBqP,EAAuB8O,EAAe9O,qBACtC+O,EAA4BD,EAAeC,0BAC3CC,EAA6BF,EAAeE,2BAC5CC,EAAqCH,EAAeG,mCAMtDte,EAAQ,KAARA,CAAoB6a,EAAU2C,GAC9B,IAAIe,EAAiBN,EAAYM,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAY1D,SAASlB,EAAcjB,EAAS5F,EAAQgI,GACtCxC,EAASA,GAAUjc,EAAQ,MAC3Bqc,EAAUA,GAAW,CAAC,EAOE,mBAAboC,IAAwBA,EAAWhI,aAAkBwF,GAIhEvZ,KAAKiW,aAAe0D,EAAQ1D,WACxB8F,IAAU/b,KAAKiW,WAAajW,KAAKiW,cAAgB0D,EAAQqC,oBAI7Dhc,KAAKqa,cAAgBmB,EAAiBxb,KAAM2Z,EAAS,wBAAyBoC,GAK9E/b,KAAKxB,OAAS,IAAI8c,EAClBtb,KAAKrF,OAAS,EACdqF,KAAKic,MAAQ,KACbjc,KAAKkc,WAAa,EAClBlc,KAAKmc,QAAU,KACfnc,KAAKga,OAAQ,EACbha,KAAKoc,YAAa,EAClBpc,KAAKqc,SAAU,EAMfrc,KAAKsc,MAAO,EAIZtc,KAAKuc,cAAe,EACpBvc,KAAKwc,iBAAkB,EACvBxc,KAAKyc,mBAAoB,EACzBzc,KAAK0c,iBAAkB,EACvB1c,KAAK2c,QAAS,EAGd3c,KAAK4c,WAAkC,IAAtBjD,EAAQiD,UAGzB5c,KAAK6c,cAAgBlD,EAAQkD,YAG7B7c,KAAKwa,WAAY,EAKjBxa,KAAK8c,gBAAkBnD,EAAQmD,iBAAmB,OAGlD9c,KAAK+c,WAAa,EAGlB/c,KAAKgd,aAAc,EACnBhd,KAAKid,QAAU,KACfjd,KAAK9C,SAAW,KACZyc,EAAQzc,WACLke,IAAeA,EAAgB9d,EAAAA,MAAAA,GACpC0C,KAAKid,QAAU,IAAI7B,EAAczB,EAAQzc,UACzC8C,KAAK9C,SAAWyc,EAAQzc,SAE5B,CACA,SAASib,EAASwB,GAEhB,GADAJ,EAASA,GAAUjc,EAAQ,QACrB0C,gBAAgBmY,GAAW,OAAO,IAAIA,EAASwB,GAIrD,IAAIoC,EAAW/b,gBAAgBuZ,EAC/BvZ,KAAKua,eAAiB,IAAIK,EAAcjB,EAAS3Z,KAAM+b,GAGvD/b,KAAK6Z,UAAW,EACZF,IAC0B,oBAAjBA,EAAQxY,OAAqBnB,KAAK+X,MAAQ4B,EAAQxY,MAC9B,oBAApBwY,EAAQuD,UAAwBld,KAAKmd,SAAWxD,EAAQuD,UAErEpC,EAAOre,KAAKuD,KACd,CAwDA,SAASod,EAAiBrJ,EAAQkE,EAAO/a,EAAUmgB,EAAYC,GAC7DrC,EAAM,mBAAoBhD,GAC1B,IAKM9F,EALFhB,EAAQ4C,EAAOwG,eACnB,GAAc,OAAVtC,EACF9G,EAAMkL,SAAU,EAuNpB,SAAoBtI,EAAQ5C,GAE1B,GADA8J,EAAM,cACF9J,EAAM6I,MAAO,OACjB,GAAI7I,EAAM8L,QAAS,CACjB,IAAIhF,EAAQ9G,EAAM8L,QAAQvhB,MACtBuc,GAASA,EAAMtd,SACjBwW,EAAM3S,OAAOxD,KAAKid,GAClB9G,EAAMxW,QAAUwW,EAAM8E,WAAa,EAAIgC,EAAMtd,OAEjD,CACAwW,EAAM6I,OAAQ,EACV7I,EAAMmL,KAIRiB,EAAaxJ,IAGb5C,EAAMoL,cAAe,EAChBpL,EAAMqL,kBACTrL,EAAMqL,iBAAkB,EACxBgB,EAAczJ,IAGpB,CA9OI0J,CAAW1J,EAAQ5C,QAInB,GADKmM,IAAgBnL,EA6CzB,SAAsBhB,EAAO8G,GAC3B,IAAI9F,EAjPiBxV,EAkPFsb,EAjPZhc,EAAO6C,SAASnC,IAAQA,aAAeoe,GAiPA,kBAAV9C,QAAgClb,IAAVkb,GAAwB9G,EAAM8E,aACtF9D,EAAK,IAAIxF,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAesL,IAnP/E,IAAuBtb,EAqPrB,OAAOwV,CACT,CAnD8BuL,CAAavM,EAAO8G,IAC1C9F,EACF0J,EAAe9H,EAAQ5B,QAClB,GAAIhB,EAAM8E,YAAcgC,GAASA,EAAMtd,OAAS,EAIrD,GAHqB,kBAAVsd,GAAuB9G,EAAM8E,YAAcna,OAAOiW,eAAekG,KAAWhc,EAAOF,YAC5Fkc,EA3MR,SAA6BA,GAC3B,OAAOhc,EAAOG,KAAK6b,EACrB,CAyMgB0F,CAAoB1F,IAE1BoF,EACElM,EAAMiL,WAAYP,EAAe9H,EAAQ,IAAI6H,GAA2CgC,EAAS7J,EAAQ5C,EAAO8G,GAAO,QACtH,GAAI9G,EAAM6I,MACf6B,EAAe9H,EAAQ,IAAI2H,OACtB,IAAIvK,EAAMqJ,UACf,OAAO,EAEPrJ,EAAMkL,SAAU,EACZlL,EAAM8L,UAAY/f,GACpB+a,EAAQ9G,EAAM8L,QAAQ/e,MAAM+Z,GACxB9G,EAAM8E,YAA+B,IAAjBgC,EAAMtd,OAAcijB,EAAS7J,EAAQ5C,EAAO8G,GAAO,GAAY4F,EAAc9J,EAAQ5C,IAE7GyM,EAAS7J,EAAQ5C,EAAO8G,GAAO,EAEnC,MACUoF,IACVlM,EAAMkL,SAAU,EAChBwB,EAAc9J,EAAQ5C,IAO1B,OAAQA,EAAM6I,QAAU7I,EAAMxW,OAASwW,EAAMkJ,eAAkC,IAAjBlJ,EAAMxW,OACtE,CACA,SAASijB,EAAS7J,EAAQ5C,EAAO8G,EAAOoF,GAClClM,EAAMgL,SAA4B,IAAjBhL,EAAMxW,SAAiBwW,EAAMmL,MAChDnL,EAAM4L,WAAa,EACnBhJ,EAAOtD,KAAK,OAAQwH,KAGpB9G,EAAMxW,QAAUwW,EAAM8E,WAAa,EAAIgC,EAAMtd,OACzC0iB,EAAYlM,EAAM3S,OAAOkS,QAAQuH,GAAY9G,EAAM3S,OAAOxD,KAAKid,GAC/D9G,EAAMoL,cAAcgB,EAAaxJ,IAEvC8J,EAAc9J,EAAQ5C,EACxB,CA3GArV,OAAOsI,eAAe+T,EAASpc,UAAW,YAAa,CAIrDsI,YAAY,EACZC,IAAK,WACH,YAA4BvH,IAAxBiD,KAAKua,gBAGFva,KAAKua,eAAeC,SAC7B,EACAtV,IAAK,SAAa7I,GAGX2D,KAAKua,iBAMVva,KAAKua,eAAeC,UAAYne,EAClC,IAEF8b,EAASpc,UAAUmhB,QAAU3B,EAAY2B,QACzC/E,EAASpc,UAAU+hB,WAAavC,EAAYwC,UAC5C5F,EAASpc,UAAUohB,SAAW,SAAUjO,EAAKoE,GAC3CA,EAAGpE,EACL,EAMAiJ,EAASpc,UAAUf,KAAO,SAAUid,EAAO/a,GACzC,IACIogB,EADAnM,EAAQnR,KAAKua,eAcjB,OAZKpJ,EAAM8E,WAUTqH,GAAiB,EATI,kBAAVrF,KACT/a,EAAWA,GAAYiU,EAAM2L,mBACZ3L,EAAMjU,WACrB+a,EAAQhc,EAAOG,KAAK6b,EAAO/a,GAC3BA,EAAW,IAEbogB,GAAiB,GAKdF,EAAiBpd,KAAMiY,EAAO/a,GAAU,EAAOogB,EACxD,EAGAnF,EAASpc,UAAU2U,QAAU,SAAUuH,GACrC,OAAOmF,EAAiBpd,KAAMiY,EAAO,MAAM,GAAM,EACnD,EA6DAE,EAASpc,UAAUiiB,SAAW,WAC5B,OAAuC,IAAhChe,KAAKua,eAAe4B,OAC7B,EAGAhE,EAASpc,UAAUkiB,YAAc,SAAUC,GACpC9C,IAAeA,EAAgB9d,EAAAA,MAAAA,GACpC,IAAI2f,EAAU,IAAI7B,EAAc8C,GAChCle,KAAKua,eAAe0C,QAAUA,EAE9Bjd,KAAKua,eAAerd,SAAW8C,KAAKua,eAAe0C,QAAQ/f,SAK3D,IAFA,IAAIoY,EAAItV,KAAKua,eAAe/b,OAAO2f,KAC/BC,EAAU,GACD,OAAN9I,GACL8I,GAAWnB,EAAQ/e,MAAMoX,EAAEnW,MAC3BmW,EAAIA,EAAE+I,KAKR,OAHAre,KAAKua,eAAe/b,OAAO8f,QACX,KAAZF,GAAgBpe,KAAKua,eAAe/b,OAAOxD,KAAKojB,GACpDpe,KAAKua,eAAe5f,OAASyjB,EAAQzjB,OAC9BqF,IACT,EAGA,IAAIue,EAAU,WAqBd,SAASC,EAAche,EAAG2Q,GACxB,OAAI3Q,GAAK,GAAsB,IAAjB2Q,EAAMxW,QAAgBwW,EAAM6I,MAAc,EACpD7I,EAAM8E,WAAmB,EACzBzV,IAAMA,EAEJ2Q,EAAMgL,SAAWhL,EAAMxW,OAAewW,EAAM3S,OAAO2f,KAAKhf,KAAKxE,OAAmBwW,EAAMxW,QAGxF6F,EAAI2Q,EAAMkJ,gBAAelJ,EAAMkJ,cA5BrC,SAAiC7Z,GAe/B,OAdIA,GAAK+d,EAEP/d,EAAI+d,GAIJ/d,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAEKA,CACT,CAYqDie,CAAwBje,IACvEA,GAAK2Q,EAAMxW,OAAe6F,EAEzB2Q,EAAM6I,MAIJ7I,EAAMxW,QAHXwW,EAAMoL,cAAe,EACd,GAGX,CA6HA,SAASgB,EAAaxJ,GACpB,IAAI5C,EAAQ4C,EAAOwG,eACnBU,EAAM,eAAgB9J,EAAMoL,aAAcpL,EAAMqL,iBAChDrL,EAAMoL,cAAe,EAChBpL,EAAMqL,kBACTvB,EAAM,eAAgB9J,EAAMgL,SAC5BhL,EAAMqL,iBAAkB,EACxBvC,EAAQC,SAASsD,EAAezJ,GAEpC,CACA,SAASyJ,EAAczJ,GACrB,IAAI5C,EAAQ4C,EAAOwG,eACnBU,EAAM,gBAAiB9J,EAAMqJ,UAAWrJ,EAAMxW,OAAQwW,EAAM6I,OACvD7I,EAAMqJ,YAAcrJ,EAAMxW,SAAUwW,EAAM6I,QAC7CjG,EAAOtD,KAAK,YACZU,EAAMqL,iBAAkB,GAS1BrL,EAAMoL,cAAgBpL,EAAMgL,UAAYhL,EAAM6I,OAAS7I,EAAMxW,QAAUwW,EAAMkJ,cAC7EqE,EAAK3K,EACP,CAQA,SAAS8J,EAAc9J,EAAQ5C,GACxBA,EAAM6L,cACT7L,EAAM6L,aAAc,EACpB/C,EAAQC,SAASyE,EAAgB5K,EAAQ5C,GAE7C,CACA,SAASwN,EAAe5K,EAAQ5C,GAwB9B,MAAQA,EAAMkL,UAAYlL,EAAM6I,QAAU7I,EAAMxW,OAASwW,EAAMkJ,eAAiBlJ,EAAMgL,SAA4B,IAAjBhL,EAAMxW,SAAe,CACpH,IAAIL,EAAM6W,EAAMxW,OAGhB,GAFAsgB,EAAM,wBACNlH,EAAO5S,KAAK,GACR7G,IAAQ6W,EAAMxW,OAEhB,KACJ,CACAwW,EAAM6L,aAAc,CACtB,CAgPA,SAAS4B,EAAwBxE,GAC/B,IAAIjJ,EAAQiJ,EAAKG,eACjBpJ,EAAMsL,kBAAoBrC,EAAKzI,cAAc,YAAc,EACvDR,EAAMuL,kBAAoBvL,EAAMwL,OAGlCxL,EAAMgL,SAAU,EAGP/B,EAAKzI,cAAc,QAAU,GACtCyI,EAAKyE,QAET,CACA,SAASC,EAAiB1E,GACxBa,EAAM,4BACNb,EAAKjZ,KAAK,EACZ,CAuBA,SAAS4d,EAAQhL,EAAQ5C,GACvB8J,EAAM,SAAU9J,EAAMkL,SACjBlL,EAAMkL,SACTtI,EAAO5S,KAAK,GAEdgQ,EAAMuL,iBAAkB,EACxB3I,EAAOtD,KAAK,UACZiO,EAAK3K,GACD5C,EAAMgL,UAAYhL,EAAMkL,SAAStI,EAAO5S,KAAK,EACnD,CAWA,SAASud,EAAK3K,GACZ,IAAI5C,EAAQ4C,EAAOwG,eAEnB,IADAU,EAAM,OAAQ9J,EAAMgL,SACbhL,EAAMgL,SAA6B,OAAlBpI,EAAO5S,SACjC,CAmHA,SAAS6d,EAASxe,EAAG2Q,GAEnB,OAAqB,IAAjBA,EAAMxW,OAAqB,MAE3BwW,EAAM8E,WAAY5P,EAAM8K,EAAM3S,OAAOmU,SAAkBnS,GAAKA,GAAK2Q,EAAMxW,QAEtD0L,EAAf8K,EAAM8L,QAAe9L,EAAM3S,OAAOrD,KAAK,IAAqC,IAAxBgW,EAAM3S,OAAO7D,OAAoBwW,EAAM3S,OAAOgK,QAAmB2I,EAAM3S,OAAOuG,OAAOoM,EAAMxW,QACnJwW,EAAM3S,OAAO8f,SAGbjY,EAAM8K,EAAM3S,OAAOygB,QAAQze,EAAG2Q,EAAM8L,SAE/B5W,GATP,IAAIA,CAUN,CACA,SAAS6Y,EAAYnL,GACnB,IAAI5C,EAAQ4C,EAAOwG,eACnBU,EAAM,cAAe9J,EAAMiL,YACtBjL,EAAMiL,aACTjL,EAAM6I,OAAQ,EACdC,EAAQC,SAASiF,EAAehO,EAAO4C,GAE3C,CACA,SAASoL,EAAchO,EAAO4C,GAI5B,GAHAkH,EAAM,gBAAiB9J,EAAMiL,WAAYjL,EAAMxW,SAG1CwW,EAAMiL,YAA+B,IAAjBjL,EAAMxW,SAC7BwW,EAAMiL,YAAa,EACnBrI,EAAO8F,UAAW,EAClB9F,EAAOtD,KAAK,OACRU,EAAM0L,aAAa,CAGrB,IAAIuC,EAASrL,EAAOgG,iBACfqF,GAAUA,EAAOvC,aAAeuC,EAAOC,WAC1CtL,EAAOmJ,SAEX,CAEJ,CASA,SAAS1hB,EAAQ8jB,EAAIza,GACnB,IAAK,IAAI5K,EAAI,EAAGslB,EAAID,EAAG3kB,OAAQV,EAAIslB,EAAGtlB,IACpC,GAAIqlB,EAAGrlB,KAAO4K,EAAG,OAAO5K,EAE1B,OAAQ,CACV,CA1pBAke,EAASpc,UAAUoF,KAAO,SAAUX,GAClCya,EAAM,OAAQza,GACdA,EAAIsB,SAAStB,EAAG,IAChB,IAAI2Q,EAAQnR,KAAKua,eACbiF,EAAQhf,EAMZ,GALU,IAANA,IAAS2Q,EAAMqL,iBAAkB,GAK3B,IAANhc,GAAW2Q,EAAMoL,gBAA0C,IAAxBpL,EAAMkJ,cAAsBlJ,EAAMxW,QAAUwW,EAAMkJ,cAAgBlJ,EAAMxW,OAAS,IAAMwW,EAAM6I,OAGlI,OAFAiB,EAAM,qBAAsB9J,EAAMxW,OAAQwW,EAAM6I,OAC3B,IAAjB7I,EAAMxW,QAAgBwW,EAAM6I,MAAOkF,EAAYlf,MAAWud,EAAavd,MACpE,KAKT,GAAU,KAHVQ,EAAIge,EAAche,EAAG2Q,KAGNA,EAAM6I,MAEnB,OADqB,IAAjB7I,EAAMxW,QAAcukB,EAAYlf,MAC7B,KA0BT,IA2BIqG,EA3BAoZ,EAAStO,EAAMoL,aA6CnB,OA5CAtB,EAAM,gBAAiBwE,IAGF,IAAjBtO,EAAMxW,QAAgBwW,EAAMxW,OAAS6F,EAAI2Q,EAAMkJ,gBAEjDY,EAAM,6BADNwE,GAAS,GAMPtO,EAAM6I,OAAS7I,EAAMkL,QAEvBpB,EAAM,mBADNwE,GAAS,GAEAA,IACTxE,EAAM,WACN9J,EAAMkL,SAAU,EAChBlL,EAAMmL,MAAO,EAEQ,IAAjBnL,EAAMxW,SAAcwW,EAAMoL,cAAe,GAE7Cvc,KAAK+X,MAAM5G,EAAMkJ,eACjBlJ,EAAMmL,MAAO,EAGRnL,EAAMkL,UAAS7b,EAAIge,EAAcgB,EAAOrO,KAInC,QADD9K,EAAP7F,EAAI,EAASwe,EAASxe,EAAG2Q,GAAkB,OAE7CA,EAAMoL,aAAepL,EAAMxW,QAAUwW,EAAMkJ,cAC3C7Z,EAAI,IAEJ2Q,EAAMxW,QAAU6F,EAChB2Q,EAAM4L,WAAa,GAEA,IAAjB5L,EAAMxW,SAGHwW,EAAM6I,QAAO7I,EAAMoL,cAAe,GAGnCiD,IAAUhf,GAAK2Q,EAAM6I,OAAOkF,EAAYlf,OAElC,OAARqG,GAAcrG,KAAKyQ,KAAK,OAAQpK,GAC7BA,CACT,EA6GA8R,EAASpc,UAAUgc,MAAQ,SAAUvX,GACnCqb,EAAe7b,KAAM,IAAI2b,EAA2B,WACtD,EACAxD,EAASpc,UAAU2jB,KAAO,SAAUC,EAAMC,GACxC,IAAIrS,EAAMvN,KACNmR,EAAQnR,KAAKua,eACjB,OAAQpJ,EAAM+K,YACZ,KAAK,EACH/K,EAAM8K,MAAQ0D,EACd,MACF,KAAK,EACHxO,EAAM8K,MAAQ,CAAC9K,EAAM8K,MAAO0D,GAC5B,MACF,QACExO,EAAM8K,MAAMjhB,KAAK2kB,GAGrBxO,EAAM+K,YAAc,EACpBjB,EAAM,wBAAyB9J,EAAM+K,WAAY0D,GACjD,IACIC,IADUD,IAA6B,IAAjBA,EAASlkB,MAAkBikB,IAAS1F,EAAQ6F,QAAUH,IAAS1F,EAAQ8F,OAC7EjG,EAAQkG,EAG5B,SAASC,EAASpG,EAAUqG,GAC1BjF,EAAM,YACFpB,IAAatM,GACX2S,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAkB5BlF,EAAM,WAEN0E,EAAKxQ,eAAe,QAASiR,GAC7BT,EAAKxQ,eAAe,SAAUkR,GAC9BV,EAAKxQ,eAAe,QAASmR,GAC7BX,EAAKxQ,eAAe,QAASoR,GAC7BZ,EAAKxQ,eAAe,SAAU8Q,GAC9B1S,EAAI4B,eAAe,MAAO2K,GAC1BvM,EAAI4B,eAAe,MAAO6Q,GAC1BzS,EAAI4B,eAAe,OAAQqR,GAC3BC,GAAY,GAORtP,EAAM4L,YAAgB4C,EAAK5F,iBAAkB4F,EAAK5F,eAAe2G,WAAYJ,IA/BnF,CACA,SAASxG,IACPmB,EAAM,SACN0E,EAAKjkB,KACP,CAdIyV,EAAMiL,WAAYnC,EAAQC,SAAS2F,GAAYtS,EAAIqB,KAAK,MAAOiR,GACnEF,EAAKnQ,GAAG,SAAUyQ,GAmBlB,IAAIK,EAgFN,SAAqB/S,GACnB,OAAO,WACL,IAAI4D,EAAQ5D,EAAIgN,eAChBU,EAAM,cAAe9J,EAAM4L,YACvB5L,EAAM4L,YAAY5L,EAAM4L,aACH,IAArB5L,EAAM4L,YAAoBlC,EAAgBtN,EAAK,UACjD4D,EAAMgL,SAAU,EAChBuC,EAAKnR,GAET,CACF,CA1FgBoT,CAAYpT,GAC1BoS,EAAKnQ,GAAG,QAAS8Q,GACjB,IAAIG,GAAY,EAsBhB,SAASD,EAAOvI,GACdgD,EAAM,UACN,IAAI5U,EAAMsZ,EAAKzhB,MAAM+Z,GACrBgD,EAAM,aAAc5U,IACR,IAARA,KAKwB,IAArB8K,EAAM+K,YAAoB/K,EAAM8K,QAAU0D,GAAQxO,EAAM+K,WAAa,IAAqC,IAAhC1gB,EAAQ2V,EAAM8K,MAAO0D,MAAkBc,IACpHxF,EAAM,8BAA+B9J,EAAM4L,YAC3C5L,EAAM4L,cAERxP,EAAIqT,QAER,CAIA,SAASL,EAAQpO,GACf8I,EAAM,UAAW9I,GACjB6N,IACAL,EAAKxQ,eAAe,QAASoR,GACU,IAAnC1F,EAAgB8E,EAAM,UAAgB9D,EAAe8D,EAAMxN,EACjE,CAMA,SAASiO,IACPT,EAAKxQ,eAAe,SAAUkR,GAC9BL,GACF,CAEA,SAASK,IACPpF,EAAM,YACN0E,EAAKxQ,eAAe,QAASiR,GAC7BJ,GACF,CAEA,SAASA,IACP/E,EAAM,UACN1N,EAAIyS,OAAOL,EACb,CAUA,OAvDApS,EAAIiC,GAAG,OAAQgR,GAniBjB,SAAyB3R,EAASgS,EAAOjT,GAGvC,GAAuC,oBAA5BiB,EAAQ0D,gBAAgC,OAAO1D,EAAQ0D,gBAAgBsO,EAAOjT,GAMpFiB,EAAQa,SAAYb,EAAQa,QAAQmR,GAAuCxlB,MAAM6D,QAAQ2P,EAAQa,QAAQmR,IAAShS,EAAQa,QAAQmR,GAAOnQ,QAAQ9C,GAASiB,EAAQa,QAAQmR,GAAS,CAACjT,EAAIiB,EAAQa,QAAQmR,IAA5JhS,EAAQW,GAAGqR,EAAOjT,EACrE,CAqjBE2E,CAAgBoN,EAAM,QAASY,GAO/BZ,EAAK/Q,KAAK,QAASwR,GAMnBT,EAAK/Q,KAAK,SAAUyR,GAOpBV,EAAKlP,KAAK,OAAQlD,GAGb4D,EAAMgL,UACTlB,EAAM,eACN1N,EAAIsR,UAECc,CACT,EAYAxH,EAASpc,UAAUikB,OAAS,SAAUL,GACpC,IAAIxO,EAAQnR,KAAKua,eACb2F,EAAa,CACfC,YAAY,GAId,GAAyB,IAArBhP,EAAM+K,WAAkB,OAAOlc,KAGnC,GAAyB,IAArBmR,EAAM+K,WAER,OAAIyD,GAAQA,IAASxO,EAAM8K,QACtB0D,IAAMA,EAAOxO,EAAM8K,OAGxB9K,EAAM8K,MAAQ,KACd9K,EAAM+K,WAAa,EACnB/K,EAAMgL,SAAU,EACZwD,GAAMA,EAAKlP,KAAK,SAAUzQ,KAAMkgB,IAPKlgB,KAa3C,IAAK2f,EAAM,CAET,IAAImB,EAAQ3P,EAAM8K,MACd3hB,EAAM6W,EAAM+K,WAChB/K,EAAM8K,MAAQ,KACd9K,EAAM+K,WAAa,EACnB/K,EAAMgL,SAAU,EAChB,IAAK,IAAIliB,EAAI,EAAGA,EAAIK,EAAKL,IAAK6mB,EAAM7mB,GAAGwW,KAAK,SAAUzQ,KAAM,CAC1DmgB,YAAY,IAEd,OAAOngB,IACT,CAGA,IAAI4S,EAAQpX,EAAQ2V,EAAM8K,MAAO0D,GACjC,OAAe,IAAX/M,IACJzB,EAAM8K,MAAM8E,OAAOnO,EAAO,GAC1BzB,EAAM+K,YAAc,EACK,IAArB/K,EAAM+K,aAAkB/K,EAAM8K,MAAQ9K,EAAM8K,MAAM,IACtD0D,EAAKlP,KAAK,SAAUzQ,KAAMkgB,IAJDlgB,IAM3B,EAIAmY,EAASpc,UAAUyT,GAAK,SAAUwR,EAAIpT,GACpC,IAAI7K,EAAM+X,EAAO/e,UAAUyT,GAAG/S,KAAKuD,KAAMghB,EAAIpT,GACzCuD,EAAQnR,KAAKua,eAqBjB,MApBW,SAAPyG,GAGF7P,EAAMsL,kBAAoBzc,KAAK2R,cAAc,YAAc,GAGrC,IAAlBR,EAAMgL,SAAmBnc,KAAK6e,UAClB,aAAPmC,IACJ7P,EAAMiL,YAAejL,EAAMsL,oBAC9BtL,EAAMsL,kBAAoBtL,EAAMoL,cAAe,EAC/CpL,EAAMgL,SAAU,EAChBhL,EAAMqL,iBAAkB,EACxBvB,EAAM,cAAe9J,EAAMxW,OAAQwW,EAAMkL,SACrClL,EAAMxW,OACR4iB,EAAavd,MACHmR,EAAMkL,SAChBpC,EAAQC,SAAS4E,EAAkB9e,QAIlC+C,CACT,EACAoV,EAASpc,UAAUuW,YAAc6F,EAASpc,UAAUyT,GACpD2I,EAASpc,UAAUoT,eAAiB,SAAU6R,EAAIpT,GAChD,IAAI7K,EAAM+X,EAAO/e,UAAUoT,eAAe1S,KAAKuD,KAAMghB,EAAIpT,GAUzD,MATW,aAAPoT,GAOF/G,EAAQC,SAAS0E,EAAyB5e,MAErC+C,CACT,EACAoV,EAASpc,UAAUiX,mBAAqB,SAAUgO,GAChD,IAAIje,EAAM+X,EAAO/e,UAAUiX,mBAAmBtP,MAAM1D,KAAMN,WAU1D,MATW,aAAPshB,QAA4BjkB,IAAPikB,GAOvB/G,EAAQC,SAAS0E,EAAyB5e,MAErC+C,CACT,EAqBAoV,EAASpc,UAAU8iB,OAAS,WAC1B,IAAI1N,EAAQnR,KAAKua,eAUjB,OATKpJ,EAAMgL,UACTlB,EAAM,UAIN9J,EAAMgL,SAAWhL,EAAMsL,kBAM3B,SAAgB1I,EAAQ5C,GACjBA,EAAMuL,kBACTvL,EAAMuL,iBAAkB,EACxBzC,EAAQC,SAAS6E,EAAShL,EAAQ5C,GAEtC,CAVI0N,CAAO7e,KAAMmR,IAEfA,EAAMwL,QAAS,EACR3c,IACT,EAiBAmY,EAASpc,UAAU6kB,MAAQ,WAQzB,OAPA3F,EAAM,wBAAyBjb,KAAKua,eAAe4B,UACf,IAAhCnc,KAAKua,eAAe4B,UACtBlB,EAAM,SACNjb,KAAKua,eAAe4B,SAAU,EAC9Bnc,KAAKyQ,KAAK,UAEZzQ,KAAKua,eAAeoC,QAAS,EACtB3c,IACT,EAUAmY,EAASpc,UAAUklB,KAAO,SAAUlN,GAClC,IAAImC,EAAQlW,KACRmR,EAAQnR,KAAKua,eACboC,GAAS,EAwBb,IAAK,IAAI1iB,KAvBT8Z,EAAOvE,GAAG,OAAO,WAEf,GADAyL,EAAM,eACF9J,EAAM8L,UAAY9L,EAAM6I,MAAO,CACjC,IAAI/B,EAAQ9G,EAAM8L,QAAQvhB,MACtBuc,GAASA,EAAMtd,QAAQub,EAAMlb,KAAKid,EACxC,CACA/B,EAAMlb,KAAK,KACb,IACA+Y,EAAOvE,GAAG,QAAQ,SAAUyI,IAC1BgD,EAAM,gBACF9J,EAAM8L,UAAShF,EAAQ9G,EAAM8L,QAAQ/e,MAAM+Z,KAG3C9G,EAAM8E,YAAyB,OAAVgC,QAA4Blb,IAAVkb,MAAuC9G,EAAM8E,YAAgBgC,GAAUA,EAAMtd,UAC9Gub,EAAMlb,KAAKid,KAEnB0E,GAAS,EACT5I,EAAO6M,UAEX,IAIc7M,OACIhX,IAAZiD,KAAK/F,IAAyC,oBAAd8Z,EAAO9Z,KACzC+F,KAAK/F,GAAK,SAAoByf,GAC5B,OAAO,WACL,OAAO3F,EAAO2F,GAAQhW,MAAMqQ,EAAQrU,UACtC,CACF,CAJU,CAIRzF,IAKN,IAAK,IAAIuG,EAAI,EAAGA,EAAIsb,EAAanhB,OAAQ6F,IACvCuT,EAAOvE,GAAGsM,EAAatb,GAAIR,KAAKyQ,KAAKY,KAAKrR,KAAM8b,EAAatb,KAY/D,OAPAR,KAAK+X,MAAQ,SAAUvX,GACrBya,EAAM,gBAAiBza,GACnBmc,IACFA,GAAS,EACT5I,EAAO8K,SAEX,EACO7e,IACT,EACsB,oBAAXvC,SACT0a,EAASpc,UAAU0B,OAAOyjB,eAAiB,WAIzC,YAH0CnkB,IAAtCse,IACFA,EAAoC/d,EAAQ,OAEvC+d,EAAkCrb,KAC3C,GAEFlE,OAAOsI,eAAe+T,EAASpc,UAAW,wBAAyB,CAIjEsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAKua,eAAeF,aAC7B,IAEFve,OAAOsI,eAAe+T,EAASpc,UAAW,iBAAkB,CAI1DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAKua,gBAAkBva,KAAKua,eAAe/b,MACpD,IAEF1C,OAAOsI,eAAe+T,EAASpc,UAAW,kBAAmB,CAI3DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAKua,eAAe4B,OAC7B,EACAjX,IAAK,SAAaiM,GACZnR,KAAKua,iBACPva,KAAKua,eAAe4B,QAAUhL,EAElC,IAIFgH,EAASgJ,UAAYnC,EACrBljB,OAAOsI,eAAe+T,EAASpc,UAAW,iBAAkB,CAI1DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAKua,eAAe5f,MAC7B,IA+CoB,oBAAX8C,SACT0a,EAAS/b,KAAO,SAAUglB,EAAUpL,GAIlC,YAHajZ,IAATX,IACFA,EAAOkB,EAAQ,OAEVlB,EAAK+b,EAAUiJ,EAAUpL,EAClC,gCC17BFzc,EAAOC,QAAUkhB,EACjB,IAAIe,EAAiBne,EAAAA,MAAAA,EACnBqe,EAA6BF,EAAeE,2BAC5C0F,EAAwB5F,EAAe4F,sBACvCC,EAAqC7F,EAAe6F,mCACpDC,EAA8B9F,EAAe8F,4BAC3ChI,EAASjc,EAAQ,MAErB,SAASkkB,EAAerP,EAAIhT,GAC1B,IAAIsiB,EAAKzhB,KAAK0hB,gBACdD,EAAGE,cAAe,EAClB,IAAIrO,EAAKmO,EAAGG,QACZ,GAAW,OAAPtO,EACF,OAAOtT,KAAKyQ,KAAK,QAAS,IAAI4Q,GAEhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAARziB,GAEFa,KAAKhF,KAAKmE,GACZmU,EAAGnB,GACH,IAAI2P,EAAK9hB,KAAKua,eACduH,EAAGzF,SAAU,GACTyF,EAAGvF,cAAgBuF,EAAGnnB,OAASmnB,EAAGzH,gBACpCra,KAAK+X,MAAM+J,EAAGzH,cAElB,CACA,SAASK,EAAUf,GACjB,KAAM3Z,gBAAgB0a,GAAY,OAAO,IAAIA,EAAUf,GACvDJ,EAAO9c,KAAKuD,KAAM2Z,GAClB3Z,KAAK0hB,gBAAkB,CACrBF,eAAgBA,EAAenQ,KAAKrR,MACpC+hB,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAIjBhiB,KAAKua,eAAegC,cAAe,EAKnCvc,KAAKua,eAAe+B,MAAO,EACvB3C,IAC+B,oBAAtBA,EAAQsI,YAA0BjiB,KAAK2a,WAAahB,EAAQsI,WAC1C,oBAAlBtI,EAAQuI,QAAsBliB,KAAKmiB,OAASxI,EAAQuI,QAIjEliB,KAAKwP,GAAG,YAAa4S,EACvB,CACA,SAASA,IACP,IAAIlM,EAAQlW,KACe,oBAAhBA,KAAKmiB,QAA0BniB,KAAKua,eAAeC,UAK5D6H,EAAKriB,KAAM,KAAM,MAJjBA,KAAKmiB,QAAO,SAAUhQ,EAAIhT,GACxBkjB,EAAKnM,EAAO/D,EAAIhT,EAClB,GAIJ,CAiDA,SAASkjB,EAAKtO,EAAQ5B,EAAIhT,GACxB,GAAIgT,EAAI,OAAO4B,EAAOtD,KAAK,QAAS0B,GAQpC,GAPY,MAARhT,GAEF4U,EAAO/Y,KAAKmE,GAKV4U,EAAOgG,eAAepf,OAAQ,MAAM,IAAI4mB,EAC5C,GAAIxN,EAAO2N,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAOvN,EAAO/Y,KAAK,KACrB,CArHAsC,EAAQ,KAARA,CAAoBod,EAAWnB,GAyD/BmB,EAAU3e,UAAUf,KAAO,SAAUid,EAAO/a,GAE1C,OADA8C,KAAK0hB,gBAAgBK,eAAgB,EAC9BxI,EAAOxd,UAAUf,KAAKyB,KAAKuD,KAAMiY,EAAO/a,EACjD,EAYAwd,EAAU3e,UAAU4e,WAAa,SAAU1C,EAAO/a,EAAUoW,GAC1DA,EAAG,IAAIqI,EAA2B,gBACpC,EACAjB,EAAU3e,UAAUumB,OAAS,SAAUrK,EAAO/a,EAAUoW,GACtD,IAAImO,EAAKzhB,KAAK0hB,gBAId,GAHAD,EAAGG,QAAUtO,EACbmO,EAAGI,WAAa5J,EAChBwJ,EAAGO,cAAgB9kB,GACdukB,EAAGE,aAAc,CACpB,IAAIG,EAAK9hB,KAAKua,gBACVkH,EAAGM,eAAiBD,EAAGvF,cAAgBuF,EAAGnnB,OAASmnB,EAAGzH,gBAAera,KAAK+X,MAAM+J,EAAGzH,cACzF,CACF,EAKAK,EAAU3e,UAAUgc,MAAQ,SAAUvX,GACpC,IAAIihB,EAAKzhB,KAAK0hB,gBACQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAMhCF,EAAGM,eAAgB,GALnBN,EAAGE,cAAe,EAClB3hB,KAAK2a,WAAW8G,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,gBAMxD,EACA9G,EAAU3e,UAAUohB,SAAW,SAAUjO,EAAKoE,GAC5CiG,EAAOxd,UAAUohB,SAAS1gB,KAAKuD,KAAMkP,GAAK,SAAUqT,GAClDjP,EAAGiP,EACL,GACF,mCC9HIhJ,YAXJ,SAASiJ,EAAcrR,GACrB,IAAI+E,EAAQlW,KACZA,KAAKqe,KAAO,KACZre,KAAKyiB,MAAQ,KACbziB,KAAK0iB,OAAS,YA6iBhB,SAAwBC,EAASxR,EAAOjC,GACtC,IAAIuT,EAAQE,EAAQF,MACpBE,EAAQF,MAAQ,KAChB,KAAOA,GAAO,CACZ,IAAInP,EAAKmP,EAAMG,SACfzR,EAAM0R,YACNvP,EAAGpE,GACHuT,EAAQA,EAAMpE,IAChB,CAGAlN,EAAM2R,mBAAmBzE,KAAOsE,CAClC,CAxjBII,CAAe7M,EAAO/E,EACxB,CACF,CAnBA5X,EAAOC,QAAUggB,EA0BjBA,EAASwJ,cAAgBA,EAGzB,IAAIC,EAAe,CACjBC,UAAW5lB,EAAQ,OAKjBwd,EAASxd,EAAQ,MAGjBrB,EAASqB,EAAAA,MAAAA,OACTyd,GAAmC,qBAAXC,EAAAA,EAAyBA,EAAAA,EAA2B,qBAAX1E,OAAyBA,OAAyB,qBAAT8D,KAAuBA,KAAO,CAAC,GAAGhf,YAAc,WAAa,EAO3K,IA8II+nB,EA9IA5H,EAAcje,EAAQ,MAExBke,EADale,EAAQ,MACOke,iBAC1BC,EAAiBne,EAAAA,MAAAA,EACnBqP,EAAuB8O,EAAe9O,qBACtCgP,EAA6BF,EAAeE,2BAC5C0F,EAAwB5F,EAAe4F,sBACvC+B,EAAyB3H,EAAe2H,uBACxCC,EAAuB5H,EAAe4H,qBACtCC,EAAyB7H,EAAe6H,uBACxCC,EAA6B9H,EAAe8H,2BAC5CC,EAAuB/H,EAAe+H,qBACpC3H,EAAiBN,EAAYM,eAEjC,SAAS4H,IAAO,CAChB,SAAST,EAAcrJ,EAAS5F,EAAQgI,GACtCxC,EAASA,GAAUjc,EAAQ,MAC3Bqc,EAAUA,GAAW,CAAC,EAOE,mBAAboC,IAAwBA,EAAWhI,aAAkBwF,GAIhEvZ,KAAKiW,aAAe0D,EAAQ1D,WACxB8F,IAAU/b,KAAKiW,WAAajW,KAAKiW,cAAgB0D,EAAQ+J,oBAK7D1jB,KAAKqa,cAAgBmB,EAAiBxb,KAAM2Z,EAAS,wBAAyBoC,GAG9E/b,KAAK2jB,aAAc,EAGnB3jB,KAAK0gB,WAAY,EAEjB1gB,KAAK4jB,QAAS,EAEd5jB,KAAKga,OAAQ,EAEbha,KAAKqf,UAAW,EAGhBrf,KAAKwa,WAAY,EAKjB,IAAIqJ,GAAqC,IAA1BlK,EAAQmK,cACvB9jB,KAAK8jB,eAAiBD,EAKtB7jB,KAAK8c,gBAAkBnD,EAAQmD,iBAAmB,OAKlD9c,KAAKrF,OAAS,EAGdqF,KAAK+jB,SAAU,EAGf/jB,KAAKgkB,OAAS,EAMdhkB,KAAKsc,MAAO,EAKZtc,KAAKikB,kBAAmB,EAGxBjkB,KAAKkkB,QAAU,SAAU/R,IAsQ3B,SAAiB4B,EAAQ5B,GACvB,IAAIhB,EAAQ4C,EAAOgG,eACfuC,EAAOnL,EAAMmL,KACbhJ,EAAKnC,EAAMyQ,QACf,GAAkB,oBAAPtO,EAAmB,MAAM,IAAI+N,EAExC,GAZF,SAA4BlQ,GAC1BA,EAAM4S,SAAU,EAChB5S,EAAMyQ,QAAU,KAChBzQ,EAAMxW,QAAUwW,EAAMgT,SACtBhT,EAAMgT,SAAW,CACnB,CAMEC,CAAmBjT,GACfgB,GAlCN,SAAsB4B,EAAQ5C,EAAOmL,EAAMnK,EAAImB,KAC3CnC,EAAM0R,UACJvG,GAGFrC,EAAQC,SAAS5G,EAAInB,GAGrB8H,EAAQC,SAASmK,EAAatQ,EAAQ5C,GACtC4C,EAAOgG,eAAeuK,cAAe,EACrCzI,EAAe9H,EAAQ5B,KAIvBmB,EAAGnB,GACH4B,EAAOgG,eAAeuK,cAAe,EACrCzI,EAAe9H,EAAQ5B,GAGvBkS,EAAYtQ,EAAQ5C,GAExB,CAaUoT,CAAaxQ,EAAQ5C,EAAOmL,EAAMnK,EAAImB,OAAS,CAErD,IAAI+L,EAAWmF,EAAWrT,IAAU4C,EAAOyG,UACtC6E,GAAalO,EAAM6S,QAAW7S,EAAM8S,mBAAoB9S,EAAMsT,iBACjEC,EAAY3Q,EAAQ5C,GAElBmL,EACFrC,EAAQC,SAASyK,EAAY5Q,EAAQ5C,EAAOkO,EAAU/L,GAEtDqR,EAAW5Q,EAAQ5C,EAAOkO,EAAU/L,EAExC,CACF,CAvRI4Q,CAAQnQ,EAAQ5B,EAClB,EAGAnS,KAAK4hB,QAAU,KAGf5hB,KAAKmkB,SAAW,EAChBnkB,KAAKykB,gBAAkB,KACvBzkB,KAAK4kB,oBAAsB,KAI3B5kB,KAAK6iB,UAAY,EAIjB7iB,KAAK6kB,aAAc,EAGnB7kB,KAAKskB,cAAe,EAGpBtkB,KAAK4c,WAAkC,IAAtBjD,EAAQiD,UAGzB5c,KAAK6c,cAAgBlD,EAAQkD,YAG7B7c,KAAK8kB,qBAAuB,EAI5B9kB,KAAK8iB,mBAAqB,IAAIN,EAAcxiB,KAC9C,CAqCA,SAASwZ,EAASG,GAahB,IAAIoC,EAAW/b,gBAZfuZ,EAASA,GAAUjc,EAAQ,OAa3B,IAAKye,IAAaoH,EAAgB1mB,KAAK+c,EAAUxZ,MAAO,OAAO,IAAIwZ,EAASG,GAC5E3Z,KAAK+Z,eAAiB,IAAIiJ,EAAcrJ,EAAS3Z,KAAM+b,GAGvD/b,KAAKkM,UAAW,EACZyN,IAC2B,oBAAlBA,EAAQzb,QAAsB8B,KAAKsiB,OAAS3I,EAAQzb,OACjC,oBAAnByb,EAAQoL,SAAuB/kB,KAAKglB,QAAUrL,EAAQoL,QAClC,oBAApBpL,EAAQuD,UAAwBld,KAAKmd,SAAWxD,EAAQuD,SACtC,oBAAlBvD,EAAQsL,QAAsBjlB,KAAKklB,OAASvL,EAAQsL,QAEjEnK,EAAOre,KAAKuD,KACd,CAgIA,SAASmlB,EAAQpR,EAAQ5C,EAAO4T,EAAQzqB,EAAK2d,EAAO/a,EAAUoW,GAC5DnC,EAAMgT,SAAW7pB,EACjB6W,EAAMyQ,QAAUtO,EAChBnC,EAAM4S,SAAU,EAChB5S,EAAMmL,MAAO,EACTnL,EAAMqJ,UAAWrJ,EAAM+S,QAAQ,IAAIb,EAAqB,UAAmB0B,EAAQhR,EAAOiR,QAAQ/M,EAAO9G,EAAM+S,SAAcnQ,EAAOuO,OAAOrK,EAAO/a,EAAUiU,EAAM+S,SACtK/S,EAAMmL,MAAO,CACf,CAgDA,SAASqI,EAAW5Q,EAAQ5C,EAAOkO,EAAU/L,GACtC+L,GASP,SAAsBtL,EAAQ5C,GACP,IAAjBA,EAAMxW,QAAgBwW,EAAMuP,YAC9BvP,EAAMuP,WAAY,EAClB3M,EAAOtD,KAAK,SAEhB,CAdiB2U,CAAarR,EAAQ5C,GACpCA,EAAM0R,YACNvP,IACA+Q,EAAYtQ,EAAQ5C,EACtB,CAaA,SAASuT,EAAY3Q,EAAQ5C,GAC3BA,EAAM8S,kBAAmB,EACzB,IAAIxB,EAAQtR,EAAMsT,gBAClB,GAAI1Q,EAAOiR,SAAWvC,GAASA,EAAMpE,KAAM,CAEzC,IAAIkB,EAAIpO,EAAM2T,qBACVtmB,EAAS,IAAInD,MAAMkkB,GACnB8F,EAASlU,EAAM2R,mBACnBuC,EAAO5C,MAAQA,EAGf,IAFA,IAAI5R,EAAQ,EACRyU,GAAa,EACV7C,GACLjkB,EAAOqS,GAAS4R,EACXA,EAAM8C,QAAOD,GAAa,GAC/B7C,EAAQA,EAAMpE,KACdxN,GAAS,EAEXrS,EAAO8mB,WAAaA,EACpBH,EAAQpR,EAAQ5C,GAAO,EAAMA,EAAMxW,OAAQ6D,EAAQ,GAAI6mB,EAAO3C,QAI9DvR,EAAM0R,YACN1R,EAAMyT,oBAAsB,KACxBS,EAAOhH,MACTlN,EAAM2R,mBAAqBuC,EAAOhH,KAClCgH,EAAOhH,KAAO,MAEdlN,EAAM2R,mBAAqB,IAAIN,EAAcrR,GAE/CA,EAAM2T,qBAAuB,CAC/B,KAAO,CAEL,KAAOrC,GAAO,CACZ,IAAIxK,EAAQwK,EAAMxK,MACd/a,EAAWulB,EAAMvlB,SACjBoW,EAAKmP,EAAMG,SASf,GAPAuC,EAAQpR,EAAQ5C,GAAO,EADbA,EAAM8E,WAAa,EAAIgC,EAAMtd,OACJsd,EAAO/a,EAAUoW,GACpDmP,EAAQA,EAAMpE,KACdlN,EAAM2T,uBAKF3T,EAAM4S,QACR,KAEJ,CACc,OAAVtB,IAAgBtR,EAAMyT,oBAAsB,KAClD,CACAzT,EAAMsT,gBAAkBhC,EACxBtR,EAAM8S,kBAAmB,CAC3B,CAoCA,SAASO,EAAWrT,GAClB,OAAOA,EAAMyS,QAA2B,IAAjBzS,EAAMxW,QAA0C,OAA1BwW,EAAMsT,kBAA6BtT,EAAMkO,WAAalO,EAAM4S,OAC3G,CACA,SAASyB,EAAUzR,EAAQ5C,GACzB4C,EAAOmR,QAAO,SAAUhW,GACtBiC,EAAM0R,YACF3T,GACF2M,EAAe9H,EAAQ7E,GAEzBiC,EAAM0T,aAAc,EACpB9Q,EAAOtD,KAAK,aACZ4T,EAAYtQ,EAAQ5C,EACtB,GACF,CAaA,SAASkT,EAAYtQ,EAAQ5C,GAC3B,IAAIsU,EAAOjB,EAAWrT,GACtB,GAAIsU,IAdN,SAAmB1R,EAAQ5C,GACpBA,EAAM0T,aAAgB1T,EAAMwS,cACF,oBAAlB5P,EAAOmR,QAA0B/T,EAAMqJ,WAKhDrJ,EAAM0T,aAAc,EACpB9Q,EAAOtD,KAAK,eALZU,EAAM0R,YACN1R,EAAMwS,aAAc,EACpB1J,EAAQC,SAASsL,EAAWzR,EAAQ5C,IAM1C,CAIIiR,CAAUrO,EAAQ5C,GACM,IAApBA,EAAM0R,YACR1R,EAAMkO,UAAW,EACjBtL,EAAOtD,KAAK,UACRU,EAAM0L,cAAa,CAGrB,IAAI6I,EAAS3R,EAAOwG,iBACfmL,GAAUA,EAAO7I,aAAe6I,EAAOtJ,aAC1CrI,EAAOmJ,SAEX,CAGJ,OAAOuI,CACT,CAxfAnoB,EAAQ,KAARA,CAAoBkc,EAAUsB,GA4G9BkI,EAAcjnB,UAAUue,UAAY,WAGlC,IAFA,IAAIqL,EAAU3lB,KAAKykB,gBACfne,EAAM,GACHqf,GACLrf,EAAItL,KAAK2qB,GACTA,EAAUA,EAAQtH,KAEpB,OAAO/X,CACT,EACA,WACE,IACExK,OAAOsI,eAAe4e,EAAcjnB,UAAW,SAAU,CACvDuI,IAAK2e,EAAaC,WAAU,WAC1B,OAAOljB,KAAKsa,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAOsL,GAAI,CACd,CARD,GAasB,oBAAXnoB,QAAyBA,OAAOooB,aAAiE,oBAA3CzX,SAASrS,UAAU0B,OAAOooB,cACzF1C,EAAkB/U,SAASrS,UAAU0B,OAAOooB,aAC5C/pB,OAAOsI,eAAeoV,EAAU/b,OAAOooB,YAAa,CAClDxpB,MAAO,SAAeypB,GACpB,QAAI3C,EAAgB1mB,KAAKuD,KAAM8lB,IAC3B9lB,OAASwZ,IACNsM,GAAUA,EAAO/L,0BAA0BiJ,EACpD,KAGFG,EAAkB,SAAyB2C,GACzC,OAAOA,aAAkB9lB,IAC3B,EA+BFwZ,EAASzd,UAAU2jB,KAAO,WACxB7D,EAAe7b,KAAM,IAAIojB,EAC3B,EAyBA5J,EAASzd,UAAUmC,MAAQ,SAAU+Z,EAAO/a,EAAUoW,GACpD,IAzNqB3W,EAyNjBwU,EAAQnR,KAAK+Z,eACb1T,GAAM,EACNkf,GAASpU,EAAM8E,aA3NEtZ,EA2N0Bsb,EA1NxChc,EAAO6C,SAASnC,IAAQA,aAAeoe,GAwO9C,OAbIwK,IAAUtpB,EAAO6C,SAASmZ,KAC5BA,EAhOJ,SAA6BA,GAC3B,OAAOhc,EAAOG,KAAK6b,EACrB,CA8NY0F,CAAoB1F,IAEN,oBAAb/a,IACToW,EAAKpW,EACLA,EAAW,MAETqoB,EAAOroB,EAAW,SAAmBA,IAAUA,EAAWiU,EAAM2L,iBAClD,oBAAPxJ,IAAmBA,EAAKmQ,GAC/BtS,EAAMyS,OArCZ,SAAuB7P,EAAQT,GAC7B,IAAInB,EAAK,IAAIoR,EAEb1H,EAAe9H,EAAQ5B,GACvB8H,EAAQC,SAAS5G,EAAInB,EACvB,CAgCoB4T,CAAc/lB,KAAMsT,IAAaiS,GA3BrD,SAAoBxR,EAAQ5C,EAAO8G,EAAO3E,GACxC,IAAInB,EAMJ,OALc,OAAV8F,EACF9F,EAAK,IAAImR,EACiB,kBAAVrL,GAAuB9G,EAAM8E,aAC7C9D,EAAK,IAAIxF,EAAqB,QAAS,CAAC,SAAU,UAAWsL,KAE3D9F,IACF0J,EAAe9H,EAAQ5B,GACvB8H,EAAQC,SAAS5G,EAAInB,IACd,EAGX,CAc8D6T,CAAWhmB,KAAMmR,EAAO8G,EAAO3E,MACzFnC,EAAM0R,YACNxc,EAiDJ,SAAuB0N,EAAQ5C,EAAOoU,EAAOtN,EAAO/a,EAAUoW,GAC5D,IAAKiS,EAAO,CACV,IAAIU,EArBR,SAAqB9U,EAAO8G,EAAO/a,GAC5BiU,EAAM8E,aAAsC,IAAxB9E,EAAM2S,eAA4C,kBAAV7L,IAC/DA,EAAQhc,EAAOG,KAAK6b,EAAO/a,IAE7B,OAAO+a,CACT,CAgBmBiO,CAAY/U,EAAO8G,EAAO/a,GACrC+a,IAAUgO,IACZV,GAAQ,EACRroB,EAAW,SACX+a,EAAQgO,EAEZ,CACA,IAAI3rB,EAAM6W,EAAM8E,WAAa,EAAIgC,EAAMtd,OACvCwW,EAAMxW,QAAUL,EAChB,IAAI+L,EAAM8K,EAAMxW,OAASwW,EAAMkJ,cAE1BhU,IAAK8K,EAAMuP,WAAY,GAC5B,GAAIvP,EAAM4S,SAAW5S,EAAM6S,OAAQ,CACjC,IAAIvb,EAAO0I,EAAMyT,oBACjBzT,EAAMyT,oBAAsB,CAC1B3M,MAAOA,EACP/a,SAAUA,EACVqoB,MAAOA,EACP3C,SAAUtP,EACV+K,KAAM,MAEJ5V,EACFA,EAAK4V,KAAOlN,EAAMyT,oBAElBzT,EAAMsT,gBAAkBtT,EAAMyT,oBAEhCzT,EAAM2T,sBAAwB,CAChC,MACEK,EAAQpR,EAAQ5C,GAAO,EAAO7W,EAAK2d,EAAO/a,EAAUoW,GAEtD,OAAOjN,CACT,CAlFU8f,CAAcnmB,KAAMmR,EAAOoU,EAAOtN,EAAO/a,EAAUoW,IAEpDjN,CACT,EACAmT,EAASzd,UAAUqqB,KAAO,WACxBpmB,KAAK+Z,eAAeiK,QACtB,EACAxK,EAASzd,UAAUsqB,OAAS,WAC1B,IAAIlV,EAAQnR,KAAK+Z,eACb5I,EAAM6S,SACR7S,EAAM6S,SACD7S,EAAM4S,SAAY5S,EAAM6S,QAAW7S,EAAM8S,mBAAoB9S,EAAMsT,iBAAiBC,EAAY1kB,KAAMmR,GAE/G,EACAqI,EAASzd,UAAUuqB,mBAAqB,SAA4BppB,GAGlE,GADwB,kBAAbA,IAAuBA,EAAWA,EAAS4C,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOtE,SAAS0B,EAAW,IAAI4C,gBAAkB,GAAI,MAAM,IAAI0jB,EAAqBtmB,GAExL,OADA8C,KAAK+Z,eAAe+C,gBAAkB5f,EAC/B8C,IACT,EACAlE,OAAOsI,eAAeoV,EAASzd,UAAW,iBAAkB,CAI1DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,gBAAkB/Z,KAAK+Z,eAAeO,WACpD,IAQFxe,OAAOsI,eAAeoV,EAASzd,UAAW,wBAAyB,CAIjEsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,eAAeM,aAC7B,IAuKFb,EAASzd,UAAUumB,OAAS,SAAUrK,EAAO/a,EAAUoW,GACrDA,EAAG,IAAIqI,EAA2B,YACpC,EACAnC,EAASzd,UAAUipB,QAAU,KAC7BxL,EAASzd,UAAUL,IAAM,SAAUuc,EAAO/a,EAAUoW,GAClD,IAAInC,EAAQnR,KAAK+Z,eAmBjB,MAlBqB,oBAAV9B,GACT3E,EAAK2E,EACLA,EAAQ,KACR/a,EAAW,MACkB,oBAAbA,IAChBoW,EAAKpW,EACLA,EAAW,MAEC,OAAV+a,QAA4Blb,IAAVkb,GAAqBjY,KAAK9B,MAAM+Z,EAAO/a,GAGzDiU,EAAM6S,SACR7S,EAAM6S,OAAS,EACfhkB,KAAKqmB,UAIFlV,EAAMyS,QAyDb,SAAqB7P,EAAQ5C,EAAOmC,GAClCnC,EAAMyS,QAAS,EACfS,EAAYtQ,EAAQ5C,GAChBmC,IACEnC,EAAMkO,SAAUpF,EAAQC,SAAS5G,GAASS,EAAOnF,KAAK,SAAU0E,IAEtEnC,EAAM6I,OAAQ,EACdjG,EAAO7H,UAAW,CACpB,CAjEqBqa,CAAYvmB,KAAMmR,EAAOmC,GACrCtT,IACT,EACAlE,OAAOsI,eAAeoV,EAASzd,UAAW,iBAAkB,CAI1DsI,YAAY,EACZC,IAAK,WACH,OAAOtE,KAAK+Z,eAAepf,MAC7B,IAqEFmB,OAAOsI,eAAeoV,EAASzd,UAAW,YAAa,CAIrDsI,YAAY,EACZC,IAAK,WACH,YAA4BvH,IAAxBiD,KAAK+Z,gBAGF/Z,KAAK+Z,eAAeS,SAC7B,EACAtV,IAAK,SAAa7I,GAGX2D,KAAK+Z,iBAMV/Z,KAAK+Z,eAAeS,UAAYne,EAClC,IAEFmd,EAASzd,UAAUmhB,QAAU3B,EAAY2B,QACzC1D,EAASzd,UAAU+hB,WAAavC,EAAYwC,UAC5CvE,EAASzd,UAAUohB,SAAW,SAAUjO,EAAKoE,GAC3CA,EAAGpE,EACL,mCC9nBIsX,YACJ,SAASC,EAAgB9pB,EAAKsW,EAAK5W,GAA4L,OAAnL4W,EAC5C,SAAwBjV,GAAO,IAAIiV,EACnC,SAAsBzW,EAAOkqB,GAAQ,GAAqB,kBAAVlqB,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAImqB,EAAOnqB,EAAMiB,OAAO4B,aAAc,QAAatC,IAAT4pB,EAAoB,CAAE,IAAI5jB,EAAM4jB,EAAKlqB,KAAKD,EAAOkqB,GAAQ,WAAY,GAAmB,kBAAR3jB,EAAkB,OAAOA,EAAK,MAAM,IAAIxG,UAAU,+CAAiD,CAAE,OAAiB,WAATmqB,EAAoBxlB,OAASQ,QAAQlF,EAAQ,CAD/UoqB,CAAa5oB,EAAK,UAAW,MAAsB,kBAARiV,EAAmBA,EAAM/R,OAAO+R,EAAM,CADxE4T,CAAe5T,MAAiBtW,EAAOb,OAAOsI,eAAezH,EAAKsW,EAAK,CAAE5W,MAAOA,EAAOgI,YAAY,EAAM8H,cAAc,EAAMD,UAAU,IAAkBvP,EAAIsW,GAAO5W,EAAgBM,CAAK,CAG3O,IAAI0iB,EAAW/hB,EAAQ,MACnBwpB,EAAerpB,OAAO,eACtBspB,EAActpB,OAAO,cACrBupB,EAASvpB,OAAO,SAChBwpB,EAASxpB,OAAO,SAChBypB,EAAezpB,OAAO,eACtB0pB,EAAiB1pB,OAAO,iBACxB2pB,EAAU3pB,OAAO,UACrB,SAAS4pB,EAAiBhrB,EAAOgmB,GAC/B,MAAO,CACLhmB,MAAOA,EACPgmB,KAAMA,EAEV,CACA,SAASiF,EAAeC,GACtB,IAAIxY,EAAUwY,EAAKT,GACnB,GAAgB,OAAZ/X,EAAkB,CACpB,IAAI5P,EAAOooB,EAAKH,GAASjmB,OAIZ,OAAThC,IACFooB,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpBhY,EAAQsY,EAAiBloB,GAAM,IAEnC,CACF,CACA,SAASqoB,EAAWD,GAGlBtN,EAAQC,SAASoN,EAAgBC,EACnC,CAYA,IAAIE,EAAyB3rB,OAAOiW,gBAAe,WAAa,IAC5D2V,EAAuC5rB,OAAOiC,gBAmD/C0oB,EAnD+DD,EAAwB,CACxF,UAAIzS,GACF,OAAO/T,KAAKonB,EACd,EACA/I,KAAM,WACJ,IAAInI,EAAQlW,KAGRmE,EAAQnE,KAAKgnB,GACjB,GAAc,OAAV7iB,EACF,OAAO2K,QAAQE,OAAO7K,GAExB,GAAInE,KAAKinB,GACP,OAAOnY,QAAQC,QAAQsY,OAAiBtqB,GAAW,IAErD,GAAIiD,KAAKonB,GAAS5M,UAKhB,OAAO,IAAI1L,SAAQ,SAAUC,EAASC,GACpCiL,EAAQC,UAAS,WACXhE,EAAM8Q,GACRhY,EAAOkH,EAAM8Q,IAEbjY,EAAQsY,OAAiBtqB,GAAW,GAExC,GACF,IAOF,IACI4qB,EADAC,EAAc5nB,KAAKknB,GAEvB,GAAIU,EACFD,EAAU,IAAI7Y,QAlDpB,SAAqB8Y,EAAaL,GAChC,OAAO,SAAUxY,EAASC,GACxB4Y,EAAY9T,MAAK,WACXyT,EAAKN,GACPlY,EAAQsY,OAAiBtqB,GAAW,IAGtCwqB,EAAKJ,GAAgBpY,EAASC,EAChC,GAAGA,EACL,CACF,CAwC4B6Y,CAAYD,EAAa5nB,WAC1C,CAGL,IAAIb,EAAOa,KAAKonB,GAASjmB,OACzB,GAAa,OAAThC,EACF,OAAO2P,QAAQC,QAAQsY,EAAiBloB,GAAM,IAEhDwoB,EAAU,IAAI7Y,QAAQ9O,KAAKmnB,GAC7B,CAEA,OADAnnB,KAAKknB,GAAgBS,EACdA,CACT,GACwClqB,OAAOyjB,eAAe,WAC9D,OAAOlhB,IACT,IAAIymB,EAAgBD,EAAuB,UAAU,WACnD,IAAIsB,EAAS9nB,KAIb,OAAO,IAAI8O,SAAQ,SAAUC,EAASC,GACpC8Y,EAAOV,GAASlK,QAAQ,MAAM,SAAUhO,GAClCA,EACFF,EAAOE,GAGTH,EAAQsY,OAAiBtqB,GAAW,GACtC,GACF,GACF,IAAIypB,GAAwBiB,GA4D5BluB,EAAOC,QA3DiC,SAA2Cua,GACjF,IAAIgU,EACAC,EAAWlsB,OAAOyU,OAAOmX,GAA4DjB,EAArBsB,EAAiB,CAAC,EAAmCX,EAAS,CAChI/qB,MAAO0X,EACP7H,UAAU,IACRua,EAAgBsB,EAAgBjB,EAAc,CAChDzqB,MAAO,KACP6P,UAAU,IACRua,EAAgBsB,EAAgBhB,EAAa,CAC/C1qB,MAAO,KACP6P,UAAU,IACRua,EAAgBsB,EAAgBf,EAAQ,CAC1C3qB,MAAO,KACP6P,UAAU,IACRua,EAAgBsB,EAAgBd,EAAQ,CAC1C5qB,MAAO0X,EAAOwG,eAAe6B,WAC7BlQ,UAAU,IACRua,EAAgBsB,EAAgBZ,EAAgB,CAClD9qB,MAAO,SAAe0S,EAASC,GAC7B,IAAI7P,EAAO6oB,EAASZ,GAASjmB,OACzBhC,GACF6oB,EAASd,GAAgB,KACzBc,EAASlB,GAAgB,KACzBkB,EAASjB,GAAe,KACxBhY,EAAQsY,EAAiBloB,GAAM,MAE/B6oB,EAASlB,GAAgB/X,EACzBiZ,EAASjB,GAAe/X,EAE5B,EACA9C,UAAU,IACR6b,IA0BJ,OAzBAC,EAASd,GAAgB,KACzB7H,EAAStL,GAAQ,SAAU7E,GACzB,GAAIA,GAAoB,+BAAbA,EAAI5T,KAAuC,CACpD,IAAI0T,EAASgZ,EAASjB,GAUtB,OAPe,OAAX/X,IACFgZ,EAASd,GAAgB,KACzBc,EAASlB,GAAgB,KACzBkB,EAASjB,GAAe,KACxB/X,EAAOE,SAET8Y,EAAShB,GAAU9X,EAErB,CACA,IAAIH,EAAUiZ,EAASlB,GACP,OAAZ/X,IACFiZ,EAASd,GAAgB,KACzBc,EAASlB,GAAgB,KACzBkB,EAASjB,GAAe,KACxBhY,EAAQsY,OAAiBtqB,GAAW,KAEtCirB,EAASf,IAAU,CACrB,IACAlT,EAAOvE,GAAG,WAAYgY,EAAWnW,KAAK,KAAM2W,IACrCA,CACT,+BChLA,SAAS3Z,EAAQyX,EAAQmC,GAAkB,IAAI/U,EAAOpX,OAAOoX,KAAK4S,GAAS,GAAIhqB,OAAOwS,sBAAuB,CAAE,IAAI4Z,EAAUpsB,OAAOwS,sBAAsBwX,GAASmC,IAAmBC,EAAUA,EAAQC,QAAO,SAAUtc,GAAO,OAAO/P,OAAOssB,yBAAyBtC,EAAQja,GAAKxH,UAAY,KAAK6O,EAAKlY,KAAK0I,MAAMwP,EAAMgV,EAAU,CAAE,OAAOhV,CAAM,CACpV,SAASmV,EAAcziB,GAAU,IAAK,IAAI3L,EAAI,EAAGA,EAAIyF,UAAU/E,OAAQV,IAAK,CAAE,IAAIquB,EAAS,MAAQ5oB,UAAUzF,GAAKyF,UAAUzF,GAAK,CAAC,EAAGA,EAAI,EAAIoU,EAAQvS,OAAOwsB,IAAS,GAAIC,SAAQ,SAAUtV,GAAOwT,EAAgB7gB,EAAQqN,EAAKqV,EAAOrV,GAAO,IAAKnX,OAAO0sB,0BAA4B1sB,OAAO2sB,iBAAiB7iB,EAAQ9J,OAAO0sB,0BAA0BF,IAAWja,EAAQvS,OAAOwsB,IAASC,SAAQ,SAAUtV,GAAOnX,OAAOsI,eAAewB,EAAQqN,EAAKnX,OAAOssB,yBAAyBE,EAAQrV,GAAO,GAAI,CAAE,OAAOrN,CAAQ,CACzf,SAAS6gB,EAAgB9pB,EAAKsW,EAAK5W,GAA4L,OAAnL4W,EAAM4T,EAAe5T,MAAiBtW,EAAOb,OAAOsI,eAAezH,EAAKsW,EAAK,CAAE5W,MAAOA,EAAOgI,YAAY,EAAM8H,cAAc,EAAMD,UAAU,IAAkBvP,EAAIsW,GAAO5W,EAAgBM,CAAK,CAE3O,SAAS+rB,EAAkB9iB,EAAQ+iB,GAAS,IAAK,IAAI1uB,EAAI,EAAGA,EAAI0uB,EAAMhuB,OAAQV,IAAK,CAAE,IAAI2uB,EAAaD,EAAM1uB,GAAI2uB,EAAWvkB,WAAaukB,EAAWvkB,aAAc,EAAOukB,EAAWzc,cAAe,EAAU,UAAWyc,IAAYA,EAAW1c,UAAW,GAAMpQ,OAAOsI,eAAewB,EAAQihB,EAAe+B,EAAW3V,KAAM2V,EAAa,CAAE,CAE5U,SAAS/B,EAAe7oB,GAAO,IAAIiV,EACnC,SAAsBzW,EAAOkqB,GAAQ,GAAqB,kBAAVlqB,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAImqB,EAAOnqB,EAAMiB,OAAO4B,aAAc,QAAatC,IAAT4pB,EAAoB,CAAE,IAAI5jB,EAAM4jB,EAAKlqB,KAAKD,EAAOkqB,GAAQ,WAAY,GAAmB,kBAAR3jB,EAAkB,OAAOA,EAAK,MAAM,IAAIxG,UAAU,+CAAiD,CAAE,OAAiB,WAATmqB,EAAoBxlB,OAASQ,QAAQlF,EAAQ,CAD/UoqB,CAAa5oB,EAAK,UAAW,MAAsB,kBAARiV,EAAmBA,EAAM/R,OAAO+R,EAAM,CAE1H,IACEhX,EADaqB,EAAQ,MACHrB,OAElBuJ,EADclI,EAAQ,KACFkI,QAClBqjB,EAASrjB,GAAWA,EAAQqjB,QAAU,UAI1CtvB,EAAOC,QAAuB,WAC5B,SAAS8hB,KAdX,SAAyBwN,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIxsB,UAAU,oCAAwC,CAepJysB,CAAgBhpB,KAAMsb,GACtBtb,KAAKme,KAAO,KACZne,KAAKipB,KAAO,KACZjpB,KAAKrF,OAAS,CAChB,CAjBF,IAAsBouB,EAAaG,EAAYC,EA8K7C,OA9KoBJ,EAkBPzN,GAlBoB4N,EAkBR,CAAC,CACxBjW,IAAK,OACL5W,MAAO,SAAcod,GACnB,IAAIgJ,EAAQ,CACVtjB,KAAMsa,EACN4E,KAAM,MAEJre,KAAKrF,OAAS,EAAGqF,KAAKipB,KAAK5K,KAAOoE,EAAWziB,KAAKme,KAAOsE,EAC7DziB,KAAKipB,KAAOxG,IACVziB,KAAKrF,MACT,GACC,CACDsY,IAAK,UACL5W,MAAO,SAAiBod,GACtB,IAAIgJ,EAAQ,CACVtjB,KAAMsa,EACN4E,KAAMre,KAAKme,MAEO,IAAhBne,KAAKrF,SAAcqF,KAAKipB,KAAOxG,GACnCziB,KAAKme,KAAOsE,IACVziB,KAAKrF,MACT,GACC,CACDsY,IAAK,QACL5W,MAAO,WACL,GAAoB,IAAhB2D,KAAKrF,OAAT,CACA,IAAI0L,EAAMrG,KAAKme,KAAKhf,KAGpB,OAFoB,IAAhBa,KAAKrF,OAAcqF,KAAKme,KAAOne,KAAKipB,KAAO,KAAUjpB,KAAKme,KAAOne,KAAKme,KAAKE,OAC7Ere,KAAKrF,OACA0L,CAJsB,CAK/B,GACC,CACD4M,IAAK,QACL5W,MAAO,WACL2D,KAAKme,KAAOne,KAAKipB,KAAO,KACxBjpB,KAAKrF,OAAS,CAChB,GACC,CACDsY,IAAK,OACL5W,MAAO,SAAcqY,GACnB,GAAoB,IAAhB1U,KAAKrF,OAAc,MAAO,GAG9B,IAFA,IAAI2a,EAAItV,KAAKme,KACT9X,EAAM,GAAKiP,EAAEnW,KACVmW,EAAIA,EAAE+I,MAAMhY,GAAOqO,EAAIY,EAAEnW,KAChC,OAAOkH,CACT,GACC,CACD4M,IAAK,SACL5W,MAAO,SAAgBmE,GACrB,GAAoB,IAAhBR,KAAKrF,OAAc,OAAOsB,EAAOC,MAAM,GAI3C,IAHA,IA5DcqR,EAAK3H,EAAQnE,EA4DvB4E,EAAMpK,EAAOE,YAAYqE,IAAM,GAC/B8U,EAAItV,KAAKme,KACTlkB,EAAI,EACDqb,GA/DO/H,EAgED+H,EAAEnW,KAhEIyG,EAgEES,EAhEM5E,EAgEDxH,EA/D9BgC,EAAOF,UAAUwC,KAAK9B,KAAK8Q,EAAK3H,EAAQnE,GAgElCxH,GAAKqb,EAAEnW,KAAKxE,OACZ2a,EAAIA,EAAE+I,KAER,OAAOhY,CACT,GAGC,CACD4M,IAAK,UACL5W,MAAO,SAAiBmE,EAAG4oB,GACzB,IAAI/iB,EAYJ,OAXI7F,EAAIR,KAAKme,KAAKhf,KAAKxE,QAErB0L,EAAMrG,KAAKme,KAAKhf,KAAKzC,MAAM,EAAG8D,GAC9BR,KAAKme,KAAKhf,KAAOa,KAAKme,KAAKhf,KAAKzC,MAAM8D,IAGtC6F,EAFS7F,IAAMR,KAAKme,KAAKhf,KAAKxE,OAExBqF,KAAK2S,QAGLyW,EAAappB,KAAKqpB,WAAW7oB,GAAKR,KAAKspB,WAAW9oB,GAEnD6F,CACT,GACC,CACD4M,IAAK,QACL5W,MAAO,WACL,OAAO2D,KAAKme,KAAKhf,IACnB,GAGC,CACD8T,IAAK,aACL5W,MAAO,SAAoBmE,GACzB,IAAI8U,EAAItV,KAAKme,KACT1b,EAAI,EACJ4D,EAAMiP,EAAEnW,KAEZ,IADAqB,GAAK6F,EAAI1L,OACF2a,EAAIA,EAAE+I,MAAM,CACjB,IAAIlc,EAAMmT,EAAEnW,KACRoqB,EAAK/oB,EAAI2B,EAAIxH,OAASwH,EAAIxH,OAAS6F,EAGvC,GAFI+oB,IAAOpnB,EAAIxH,OAAQ0L,GAAOlE,EAASkE,GAAOlE,EAAIzF,MAAM,EAAG8D,GAEjD,KADVA,GAAK+oB,GACQ,CACPA,IAAOpnB,EAAIxH,UACX8H,EACE6S,EAAE+I,KAAMre,KAAKme,KAAO7I,EAAE+I,KAAUre,KAAKme,KAAOne,KAAKipB,KAAO,OAE5DjpB,KAAKme,KAAO7I,EACZA,EAAEnW,KAAOgD,EAAIzF,MAAM6sB,IAErB,KACF,GACE9mB,CACJ,CAEA,OADAzC,KAAKrF,QAAU8H,EACR4D,CACT,GAGC,CACD4M,IAAK,aACL5W,MAAO,SAAoBmE,GACzB,IAAI6F,EAAMpK,EAAOE,YAAYqE,GACzB8U,EAAItV,KAAKme,KACT1b,EAAI,EAGR,IAFA6S,EAAEnW,KAAKZ,KAAK8H,GACZ7F,GAAK8U,EAAEnW,KAAKxE,OACL2a,EAAIA,EAAE+I,MAAM,CACjB,IAAIvgB,EAAMwX,EAAEnW,KACRoqB,EAAK/oB,EAAI1C,EAAInD,OAASmD,EAAInD,OAAS6F,EAGvC,GAFA1C,EAAIS,KAAK8H,EAAKA,EAAI1L,OAAS6F,EAAG,EAAG+oB,GAEvB,KADV/oB,GAAK+oB,GACQ,CACPA,IAAOzrB,EAAInD,UACX8H,EACE6S,EAAE+I,KAAMre,KAAKme,KAAO7I,EAAE+I,KAAUre,KAAKme,KAAOne,KAAKipB,KAAO,OAE5DjpB,KAAKme,KAAO7I,EACZA,EAAEnW,KAAOrB,EAAIpB,MAAM6sB,IAErB,KACF,GACE9mB,CACJ,CAEA,OADAzC,KAAKrF,QAAU8H,EACR4D,CACT,GAGC,CACD4M,IAAK4V,EACLxsB,MAAO,SAAeupB,EAAGjM,GACvB,OAAOnU,EAAQxF,KAAMqoB,EAAcA,EAAc,CAAC,EAAG1O,GAAU,CAAC,EAAG,CAEjE6P,MAAO,EAEPC,eAAe,IAEnB,MA5K0Ef,EAAkBK,EAAYhtB,UAAWmtB,GAAiBC,GAAaT,EAAkBK,EAAaI,GAAcrtB,OAAOsI,eAAe2kB,EAAa,YAAa,CAAE7c,UAAU,IA8KrPoP,CACT,CApK8B,8CCiC9B,SAASoO,EAAoBtP,EAAMlL,GACjCya,EAAYvP,EAAMlL,GAClB0a,EAAYxP,EACd,CACA,SAASwP,EAAYxP,GACfA,EAAKL,iBAAmBK,EAAKL,eAAe6C,WAC5CxC,EAAKG,iBAAmBH,EAAKG,eAAeqC,WAChDxC,EAAK3J,KAAK,QACZ,CAkBA,SAASkZ,EAAYvP,EAAMlL,GACzBkL,EAAK3J,KAAK,QAASvB,EACrB,CAYA3V,EAAOC,QAAU,CACf0jB,QAzFF,SAAiBhO,EAAKoE,GACpB,IAAI4C,EAAQlW,KACR6pB,EAAoB7pB,KAAKua,gBAAkBva,KAAKua,eAAeC,UAC/DsP,EAAoB9pB,KAAK+Z,gBAAkB/Z,KAAK+Z,eAAeS,UACnE,OAAIqP,GAAqBC,GACnBxW,EACFA,EAAGpE,GACMA,IACJlP,KAAK+Z,eAEE/Z,KAAK+Z,eAAeuK,eAC9BtkB,KAAK+Z,eAAeuK,cAAe,EACnCrK,EAAQC,SAASyP,EAAa3pB,KAAMkP,IAHpC+K,EAAQC,SAASyP,EAAa3pB,KAAMkP,IAMjClP,OAMLA,KAAKua,iBACPva,KAAKua,eAAeC,WAAY,GAI9Bxa,KAAK+Z,iBACP/Z,KAAK+Z,eAAeS,WAAY,GAElCxa,KAAKmd,SAASjO,GAAO,MAAM,SAAUA,IAC9BoE,GAAMpE,EACJgH,EAAM6D,eAEC7D,EAAM6D,eAAeuK,aAI/BrK,EAAQC,SAAS0P,EAAa1T,IAH9BA,EAAM6D,eAAeuK,cAAe,EACpCrK,EAAQC,SAASwP,EAAqBxT,EAAOhH,IAH7C+K,EAAQC,SAASwP,EAAqBxT,EAAOhH,GAOtCoE,GACT2G,EAAQC,SAAS0P,EAAa1T,GAC9B5C,EAAGpE,IAEH+K,EAAQC,SAAS0P,EAAa1T,EAElC,IACOlW,KACT,EA2CE+d,UAjCF,WACM/d,KAAKua,iBACPva,KAAKua,eAAeC,WAAY,EAChCxa,KAAKua,eAAe8B,SAAU,EAC9Brc,KAAKua,eAAeP,OAAQ,EAC5Bha,KAAKua,eAAe6B,YAAa,GAE/Bpc,KAAK+Z,iBACP/Z,KAAK+Z,eAAeS,WAAY,EAChCxa,KAAK+Z,eAAeC,OAAQ,EAC5Bha,KAAK+Z,eAAe6J,QAAS,EAC7B5jB,KAAK+Z,eAAe4J,aAAc,EAClC3jB,KAAK+Z,eAAe8K,aAAc,EAClC7kB,KAAK+Z,eAAesF,UAAW,EAC/Brf,KAAK+Z,eAAeuK,cAAe,EAEvC,EAkBEzI,eAdF,SAAwB9H,EAAQ7E,GAO9B,IAAIwW,EAAS3R,EAAOwG,eAChB6E,EAASrL,EAAOgG,eAChB2L,GAAUA,EAAO7I,aAAeuC,GAAUA,EAAOvC,YAAa9I,EAAOmJ,QAAQhO,GAAU6E,EAAOtD,KAAK,QAASvB,EAClH,gCCrFA,IAAI6a,EAA6BzsB,EAAAA,MAAAA,EAAiCysB,2BAYlE,SAASC,IAAQ,CAoEjBzwB,EAAOC,QAhEP,SAASywB,EAAIlW,EAAQiC,EAAM4M,GACzB,GAAoB,oBAAT5M,EAAqB,OAAOiU,EAAIlW,EAAQ,KAAMiC,GACpDA,IAAMA,EAAO,CAAC,GACnB4M,EAlBF,SAAcA,GACZ,IAAIsH,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EACT,IAAK,IAAIC,EAAOzqB,UAAU/E,OAAQwT,EAAO,IAAI9S,MAAM8uB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ejc,EAAKic,GAAQ1qB,UAAU0qB,GAEzBxH,EAASlf,MAAM1D,KAAMmO,EALH,CAMpB,CACF,CAQaS,CAAKgU,GAAYoH,GAC5B,IAAInQ,EAAW7D,EAAK6D,WAA8B,IAAlB7D,EAAK6D,UAAsB9F,EAAO8F,SAC9D3N,EAAW8J,EAAK9J,WAA8B,IAAlB8J,EAAK9J,UAAsB6H,EAAO7H,SAC9Dme,EAAiB,WACdtW,EAAO7H,UAAUmU,GACxB,EACIiK,EAAgBvW,EAAOgG,gBAAkBhG,EAAOgG,eAAesF,SAC/DgB,EAAW,WACbnU,GAAW,EACXoe,GAAgB,EACXzQ,GAAU+I,EAASnmB,KAAKsX,EAC/B,EACIwW,EAAgBxW,EAAOwG,gBAAkBxG,EAAOwG,eAAe6B,WAC/DtC,EAAQ,WACVD,GAAW,EACX0Q,GAAgB,EACXre,GAAU0W,EAASnmB,KAAKsX,EAC/B,EACIwM,EAAU,SAAiBrR,GAC7B0T,EAASnmB,KAAKsX,EAAQ7E,EACxB,EACIkR,EAAU,WACZ,IAAIlR,EACJ,OAAI2K,IAAa0Q,GACVxW,EAAOwG,gBAAmBxG,EAAOwG,eAAeP,QAAO9K,EAAM,IAAI6a,GAC/DnH,EAASnmB,KAAKsX,EAAQ7E,IAE3BhD,IAAaoe,GACVvW,EAAOgG,gBAAmBhG,EAAOgG,eAAeC,QAAO9K,EAAM,IAAI6a,GAC/DnH,EAASnmB,KAAKsX,EAAQ7E,SAF/B,CAIF,EACIsb,EAAY,WACdzW,EAAO0W,IAAIjb,GAAG,SAAU6Q,EAC1B,EAcA,OAtDF,SAAmBtM,GACjB,OAAOA,EAAO2W,WAAqC,oBAAjB3W,EAAO4W,KAC3C,CAuCMC,CAAU7W,GAIH7H,IAAa6H,EAAOgG,iBAE7BhG,EAAOvE,GAAG,MAAO6a,GACjBtW,EAAOvE,GAAG,QAAS6a,KANnBtW,EAAOvE,GAAG,WAAY6Q,GACtBtM,EAAOvE,GAAG,QAAS4Q,GACfrM,EAAO0W,IAAKD,IAAiBzW,EAAOvE,GAAG,UAAWgb,IAMxDzW,EAAOvE,GAAG,MAAOsK,GACjB/F,EAAOvE,GAAG,SAAU6Q,IACD,IAAfrK,EAAK7R,OAAiB4P,EAAOvE,GAAG,QAAS+Q,GAC7CxM,EAAOvE,GAAG,QAAS4Q,GACZ,WACLrM,EAAO5E,eAAe,WAAYkR,GAClCtM,EAAO5E,eAAe,QAASiR,GAC/BrM,EAAO5E,eAAe,UAAWqb,GAC7BzW,EAAO0W,KAAK1W,EAAO0W,IAAItb,eAAe,SAAUkR,GACpDtM,EAAO5E,eAAe,MAAOkb,GAC7BtW,EAAO5E,eAAe,QAASkb,GAC/BtW,EAAO5E,eAAe,SAAUkR,GAChCtM,EAAO5E,eAAe,MAAO2K,GAC7B/F,EAAO5E,eAAe,QAASoR,GAC/BxM,EAAO5E,eAAe,QAASiR,EACjC,CACF,YCpFA7mB,EAAOC,QAAU,WACf,MAAM,IAAI+B,MAAM,gDAClB,+BCGA,IAAI0uB,EASJ,IAAIxO,EAAiBne,EAAAA,MAAAA,EACnButB,EAAmBpP,EAAeoP,iBAClCxH,EAAuB5H,EAAe4H,qBACxC,SAAS2G,EAAK9a,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CA+BA,SAASzS,EAAKmR,GACZA,GACF,CACA,SAAS8R,EAAKtjB,EAAM0uB,GAClB,OAAO1uB,EAAKsjB,KAAKoL,EACnB,CA6BAvxB,EAAOC,QAvBP,WACE,IAAK,IAAI2wB,EAAOzqB,UAAU/E,OAAQowB,EAAU,IAAI1vB,MAAM8uB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFW,EAAQX,GAAQ1qB,UAAU0qB,GAE5B,IAKIjmB,EALAye,EATN,SAAqBmI,GACnB,OAAKA,EAAQpwB,OAC8B,oBAAhCowB,EAAQA,EAAQpwB,OAAS,GAA0BqvB,EACvDe,EAAQlY,MAFamX,CAG9B,CAKiBgB,CAAYD,GAE3B,GADI1vB,MAAM6D,QAAQ6rB,EAAQ,MAAKA,EAAUA,EAAQ,IAC7CA,EAAQpwB,OAAS,EACnB,MAAM,IAAIkwB,EAAiB,WAG7B,IAAII,EAAWF,EAAQ/R,KAAI,SAAUjF,EAAQ9Z,GAC3C,IAAIoiB,EAAUpiB,EAAI8wB,EAAQpwB,OAAS,EAEnC,OAnDJ,SAAmBoZ,EAAQsI,EAAS0H,EAASnB,GAC3CA,EAnBF,SAAcA,GACZ,IAAIsH,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTtH,EAASlf,WAAM,EAAQhE,WACzB,CACF,CAYakP,CAAKgU,GAChB,IAAIsI,GAAS,EACbnX,EAAOvE,GAAG,SAAS,WACjB0b,GAAS,CACX,SACYnuB,IAARktB,IAAmBA,EAAM3sB,EAAQ,OACrC2sB,EAAIlW,EAAQ,CACV8F,SAAUwC,EACVnQ,SAAU6X,IACT,SAAU7U,GACX,GAAIA,EAAK,OAAO0T,EAAS1T,GACzBgc,GAAS,EACTtI,GACF,IACA,IAAIpI,GAAY,EAChB,OAAO,SAAUtL,GACf,IAAIgc,IACA1Q,EAIJ,OAHAA,GAAY,EAtBhB,SAAmBzG,GACjB,OAAOA,EAAO2W,WAAqC,oBAAjB3W,EAAO4W,KAC3C,CAuBQC,CAAU7W,GAAgBA,EAAO4W,QACP,oBAAnB5W,EAAOmJ,QAA+BnJ,EAAOmJ,eACxD0F,EAAS1T,GAAO,IAAImU,EAAqB,QAC3C,CACF,CAyBW8H,CAAUpX,EAAQsI,EADXpiB,EAAI,GACyB,SAAUiV,GAC9C/K,IAAOA,EAAQ+K,GAChBA,GAAK+b,EAAS1C,QAAQ9rB,GACtB4f,IACJ4O,EAAS1C,QAAQ9rB,GACjBmmB,EAASze,GACX,GACF,IACA,OAAO4mB,EAAQK,OAAO1L,EACxB,+BClFA,IAAI2L,EAAwB/tB,EAAAA,MAAAA,EAAiC+tB,sBAiB7D9xB,EAAOC,QAAU,CACfgiB,iBAdF,SAA0BrK,EAAOwI,EAAS2R,EAAWvP,GACnD,IAAIwP,EAJN,SAA2B5R,EAASoC,EAAUuP,GAC5C,OAAgC,MAAzB3R,EAAQU,cAAwBV,EAAQU,cAAgB0B,EAAWpC,EAAQ2R,GAAa,IACjG,CAEYE,CAAkB7R,EAASoC,EAAUuP,GAC/C,GAAW,MAAPC,EAAa,CACf,IAAMrlB,SAASqlB,IAAQ1oB,KAAK+J,MAAM2e,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADCtP,EAAWuP,EAAY,gBACIC,GAExC,OAAO1oB,KAAK+J,MAAM2e,EACpB,CAGA,OAAOpa,EAAM8E,WAAa,GAAK,KACjC,mBClBA1c,EAAOC,QAAU,EAAjBD,MAAAA,8BCAAC,EAAUD,EAAOC,QAAU,EAAjBD,MACFuhB,OAASthB,EACjBA,EAAQ2e,SAAW3e,EACnBA,EAAQggB,SAAW,EAAnBhgB,MACAA,EAAQ+f,OAAS,EAAjB/f,MACAA,EAAQkhB,UAAY,EAApBlhB,MACAA,EAAQihB,YAAc,EAAtBjhB,MACAA,EAAQ6lB,SAAW,EAAnB7lB,MACAA,EAAQiyB,SAAW,EAAnBjyB,6BCAA,IAAI8U,EAAwBxS,OAAOwS,sBAC/BiH,EAAiBzZ,OAAOC,UAAUwZ,eAClCmW,EAAmB5vB,OAAOC,UAAU4vB,qBAsDxCpyB,EAAOC,QA5CP,WACC,IACC,IAAKsC,OAAO8vB,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAI3qB,OAAO,OAEvB,GADA2qB,EAAM,GAAK,KACkC,MAAzC/vB,OAAOyS,oBAAoBsd,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJ7xB,EAAI,EAAGA,EAAI,GAAIA,IACvB6xB,EAAM,IAAM5qB,OAAOuC,aAAaxJ,IAAMA,EAKvC,GAAwB,eAHX6B,OAAOyS,oBAAoBud,GAAO9S,KAAI,SAAUxY,GAC5D,OAAOsrB,EAAMtrB,EACd,IACWrF,KAAK,IACf,OAAO,EAIR,IAAI4wB,EAAQ,CAAC,EAIb,MAHA,uBAAuB1e,MAAM,IAAIkb,SAAQ,SAAUyD,GAClDD,EAAMC,GAAUA,CACjB,IAEE,yBADElwB,OAAOoX,KAAKpX,OAAO8vB,OAAO,CAAC,EAAGG,IAAQ5wB,KAAK,GAMhD,CAAE,MAAO+T,GAER,OAAO,CACR,CACD,CAEiB+c,GAAoBnwB,OAAO8vB,OAAS,SAAUhmB,EAAQ0iB,GAKtE,IAJA,IAAIlsB,EAEA8rB,EADA4C,EAtDL,SAAkBnqB,GACjB,GAAY,OAARA,QAAwB5D,IAAR4D,EACnB,MAAM,IAAIpE,UAAU,yDAGrB,OAAOT,OAAO6E,EACf,CAgDUurB,CAAStmB,GAGT8O,EAAI,EAAGA,EAAIhV,UAAU/E,OAAQ+Z,IAAK,CAG1C,IAAK,IAAIzB,KAFT7W,EAAON,OAAO4D,UAAUgV,IAGnBa,EAAe9Y,KAAKL,EAAM6W,KAC7B6X,EAAG7X,GAAO7W,EAAK6W,IAIjB,GAAI3E,EAAuB,CAC1B4Z,EAAU5Z,EAAsBlS,GAChC,IAAK,IAAInC,EAAI,EAAGA,EAAIiuB,EAAQvtB,OAAQV,IAC/ByxB,EAAiBjvB,KAAKL,EAAM8rB,EAAQjuB,MACvC6wB,EAAG5C,EAAQjuB,IAAMmC,EAAK8rB,EAAQjuB,IAGjC,CACD,CAEA,OAAO6wB,CACR,mCCxFA,IAAIqB,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EACA5D,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAIgwB,EAAiB,CACjBrV,WAAY,OAgEhBxd,EAAQ8yB,SA9DR,SAAkBC,QACC,IAAXA,IAAqBA,EAASF,GAClC,IACIrV,EADSmV,EAASA,EAAS,CAAC,EAAGE,GAAiBE,GAC5BvV,WAExB,OAAO,SAA0BwV,GAC7B,IAEIvyB,EAAGsH,EAAGkrB,EAAGzyB,EAFT0yB,EAAWF,EAAmB7xB,OAC9BgyB,EAAM,EAEV,IAAK1yB,EAAI,EAAGA,EAAIyyB,EAAUzyB,IAEtB0yB,IADA3yB,EAAMwyB,EAAmBvyB,IACZD,EAGjB,IADA2yB,EAAM9pB,KAAK+pB,KAAKD,EAAMD,IACZ,IAEN,OAAQ,EAGZ,IAAIG,EAAO,EACPC,EAAOJ,EAAW,EAEtB,IAAKzyB,EAAI,EAAGA,EAAIyyB,EAAW,EAAGzyB,IAC1B,GAAI4I,KAAKoK,IAAIuf,EAAmBvyB,IAFxB,GAEqC,CACzC4yB,EAAO5yB,EACP,KACJ,CACJ,IAAKA,EAAI,EAAGA,EAAIyyB,EAAW,EAAGzyB,IAC1B,GAAI4I,KAAKoK,IAAIuf,EAAmBE,EAAWzyB,IAPnC,GAOgD,CACpD6yB,EAAOJ,EAAWzyB,EAClB,KACJ,CACJ,IAAI8yB,EAASP,EAAmB9vB,MAAMmwB,EAAMC,GACxCE,EAAeD,EAAOpyB,OACtBsyB,EAAU,IAAI5xB,MAAM2xB,GAAcxoB,KAAK,GAC3C,IAAKvK,EAAI,EAAGA,EAAI+yB,EAAc/yB,IAC1B,IAAKsH,EAAI,EAAGA,EAAIyrB,EAAe/yB,EAAGsH,IAC9B0rB,EAAQhzB,GAAKgzB,EAAQhzB,GAAK8yB,EAAOxrB,GAAKwrB,EAAOxrB,EAAItH,GAEzD,IADAwyB,EAAI,EACGQ,EAAQR,GAAKQ,EAAQR,EAAI,IAC5BA,IACJ,IAAIS,GAAU,EAAGC,GAAU,EAC3B,IAAKlzB,EAAIwyB,EAAGxyB,EAAI+yB,EAAc/yB,IACtBgzB,EAAQhzB,GAAKizB,IACbA,EAASD,EAAQhzB,GACjBkzB,EAASlzB,GAGjB,IAAImzB,EAAKD,EAMLE,EAAKJ,EAAQG,EAAK,GAAIE,EAAKL,EAAQG,GAAKG,EAAKN,EAAQG,EAAK,GAC1DxoB,GAAKyoB,EAAKE,EAAK,EAAID,GAAM,EAI7B,OAFI1oB,IACAwoB,IAFKG,EAAKF,GAAM,GAED,EAAIzoB,IAChBoS,EAAaoW,CACxB,CACJ,mCC5EA,IAAIjB,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EACA5D,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAImxB,EAAsB,CACtBxW,WAAY,MACZyW,aAAc,GACdC,aAAc,IACdC,MAAO,EACPC,YAAa,IAsEjBp0B,EAAQq0B,KApER,SAActB,QACK,IAAXA,IAAqBA,EAAS,CAAC,GACnC,IAAIuB,EAAS3B,EAASA,EAAS,CAAC,EAAGqB,GAAsBjB,GACrDvV,EAAa8W,EAAO9W,WACpByW,EAAeK,EAAOL,aACtBC,EAAeI,EAAOJ,aACtBE,EAAcE,EAAOF,YACrBD,EAAQG,EAAOH,MACfI,EAAM,GAKNC,EAAYnrB,KAAKorB,KAAKjX,EAAayW,GACnCS,EAAYrrB,KAAK+J,MAAMoK,EAAa0W,GACxC,OAAO,SAAsBlB,GACzB,IAII2B,EAASC,EAASnB,EAAShzB,EAAGsH,EAAGkrB,EAAGI,EAAMC,EAJ1CJ,EAAWF,EAAmB7xB,OAC9ByxB,EAAI,EACJiC,EAASlhB,IACT+f,GAAU/f,IAGd,IAAKlT,EAAI,EAAGA,EAAIyyB,EAAUzyB,IACtB,GAAIi0B,GAAaj0B,GAAKA,GAAK+zB,EAAW,CAClC,IAAKnB,EAAO,EAAGC,EAAO7yB,EAAGmyB,EAAI,EAAG+B,EAAU,GAAIC,EAAU,GAAIvB,EAAOH,EAAWzyB,EAAGmyB,IAAKU,IAAQD,IAC1FsB,EAAQ/B,GAAKI,EAAmBK,GAChCuB,EAAQhC,GAAKI,EAAmBM,GAGpC,IAAIwB,EAAcH,EAAQxzB,OAE1B,IADAsyB,EAAU,GACLR,EAAI,EAAGA,EAAI6B,EAAa7B,IACzBQ,EAAQR,GAAK0B,EAAQ1B,GAAK2B,EAAQ3B,GAGtC,IAAI8B,EAAY,EAChB,IAAK9B,EAAI,EAAGA,EAAI6B,EAAa7B,IACzB8B,GAAa1rB,KAAKoK,IAAIggB,EAAQR,IAElCsB,EAAI9zB,GAAKs0B,CACb,CAEJ,IAAKhtB,EAAI2sB,EAAW3sB,EAAIysB,EAAWzsB,IAC3BwsB,EAAIxsB,GAAK8sB,IACTA,EAASN,EAAIxsB,IACbwsB,EAAIxsB,GAAK2rB,IACTA,EAASa,EAAIxsB,IAErB,IAAIitB,EAAS3rB,KAAK4rB,MAAMb,GAAeV,EAASmB,GAAUA,GAC1D,IAAK9sB,EAAI2sB,EAAW3sB,GAAKysB,GAAaD,EAAIxsB,GAAKitB,EAAQjtB,KAEvD,IAAImtB,EAAeR,EAAY,EAC/BG,EAASN,EAAIxsB,GACb,IAAIotB,EAASptB,EACb,IAAKtH,EAAIsH,EAAI,EAAGtH,EAAIsH,EAAImtB,GAAgBz0B,GAAK+zB,EAAW/zB,IAChD8zB,EAAI9zB,GAAKo0B,IACTA,EAASN,EAAI9zB,GACb00B,EAAS10B,GAGjB,OAAI4I,KAAK4rB,MAAMV,EAAIY,GAAUhB,GAAST,EAC3BlW,EAAa2X,EAGb,IAEf,CACJ,kCCtFA,IAAIxC,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EACA5D,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAIIuyB,EAAiC,CACjC5X,WAAY,OA6JhBxd,EAAQq1B,eA3JR,SAAwBtC,QACL,IAAXA,IAAqBA,EAAS,CAAC,GACnC,IACIvV,EADSmV,EAASA,EAAS,CAAC,EAAGyC,GAAiCrC,GAC5CvV,WACxB,OAAO,SAAgCwV,GASnC,IARA,IAAIsC,EAAO,GACPC,EAAO,GACPC,EAAexC,EAAmB7xB,OAClCs0B,EAAO,KACPC,EAAQ,EACRC,EAAW,EACXC,EAAW,EAENn1B,EAAI,EAAGA,EAAI+0B,EAAc/0B,IAAK,CACnC,IAAIo1B,EAAS7C,EAAmBvyB,GAChCi1B,GAAgBG,EAChBD,EAAWvsB,KAAK4C,IAAI2pB,EAAUC,GAC9BF,EAAWtsB,KAAKC,IAAIqsB,EAAUE,EAClC,CAYA,IARA,IAMIC,EAAOC,EAAQC,EALfC,EA3BiB,MAyBrBL,GAFAF,GAASF,IAGsB,GAF/BG,GAAYD,GAEkCE,GAAY,EAAID,GAG1DO,EAAW,EACXC,GAAmB,EACnBC,EAAWpD,EAAmB7xB,OAI9B20B,KAAWtY,GArCX,IAqCyBnU,KAAKgG,IAAI,EAAG6mB,OACjCE,EAAW,IAFN,CAIT,IAAIC,OAAK,EACLC,GAAc,IACdC,GAAgB,IAChBC,GAAgB,IAChBC,GAAU,EACVC,GAAU,EACdV,EAAS,EACTD,EAAS,EACT,IAASt1B,EAAI,EAAGA,EAAI21B,EAAU31B,IAAK,CAC/B,IAAIk2B,EAAK3D,EAAmBvyB,GAAKi1B,EAC7BkB,EAAM5D,EAAmBvyB,EAAI,GAAKi1B,EAClCkB,GAAO,GAAKD,EAAK,IACjBF,GAAU,GACVG,GAAO,GAAKD,EAAK,IACjBD,GAAU,GAEdL,EAAKM,EAAKC,EACNN,GAAc,MACVI,GAAWJ,EAAa,GAAKD,GAAM,GAE/BhtB,KAAKoK,IAAIkjB,IAAOV,GACZx1B,EAAI81B,EAAeT,IACnBR,EAAKU,KAAYv1B,EACjB81B,EAAe91B,EACfi2B,GAAU,GAIlBD,GAAWH,EAAa,GAAKD,GAAM,GAE/BhtB,KAAKoK,IAAIkjB,IAAOV,GACZx1B,EAAI+1B,EAAeV,IACnBP,EAAKQ,KAAYt1B,EACjB+1B,EAAe/1B,EACfg2B,GAAU,IAK1BH,EAAaD,CACjB,CACA,GAAe,IAAXL,GAA2B,IAAXD,EAEhB,MAEJ,IACIc,EAAY,GAChB,IAASp2B,EAAI,EAAGA,EAAI21B,EAAU31B,IAC1Bo2B,EAAUp2B,GAAK,EAEnB,IAASA,EAAI,EAAGA,EAAIu1B,EAAQv1B,IACxB,IAAK,IAAIsH,EAAI,EAAGA,EA1FN,EA0F+BA,IACjCtH,EAAIsH,EAAIiuB,IAERa,EADIxtB,KAAKoK,IAAI6hB,EAAK70B,GAAK60B,EAAK70B,EAAIsH,MAChB,GAI5B,IAAI+uB,GAAgB,EAChBC,GAAa,EACjB,IAASt2B,EAAI,EAAGA,EAAI21B,EAAU31B,IAAK,CAC/B,IAAIu2B,EAAS,EACb,IAASjvB,GAAK,EAAI+tB,EAAO/tB,GAAK+tB,EAAO/tB,IAC7BtH,EAAIsH,GAAK,GAAKtH,EAAIsH,EAAIquB,IACtBY,GAAUH,EAAUp2B,EAAIsH,IAG5BivB,IAAWD,EACPt2B,IAAM,EAAIq2B,IACVA,EAAer2B,GAGdu2B,EAASD,IACdA,EAAYC,EACZF,EAAer2B,EAEvB,CAEA,IAAIw2B,EAAU,EACVC,EAAU,EACd,IAASnvB,GAAK+tB,EAAO/tB,GAAK+tB,EAAO/tB,IAC7B,GAAI+uB,EAAe/uB,GAAK,GAAK+uB,EAAe/uB,EAAIytB,EAAc,CAC1D,IAAI2B,EAASN,EAAUC,EAAe/uB,GAClCovB,EAAS,IACTD,GAAWC,EACXF,IAAYH,EAAe/uB,GAAKovB,EAExC,CAKJ,GAFAF,GAAWC,EAEPf,GAAmB,GACf9sB,KAAKoK,IAAc,EAAVwjB,EAAcd,IAAoB,EAAIL,EAAO,CAEtDL,EAAOjY,GAAcnU,KAAKgG,IAAI,EAAG6mB,EAAW,GAAKC,GACjD,KACJ,CAKJ,GAFAA,EAAkBc,IAClBf,GA9IU,GA+IyBE,EAAW,EAC1C,MAIJ,IAAIgB,EAAwBpE,EAAmBllB,SAAS,GACpDsoB,IAAaS,EAAU11B,SACvBi2B,EAAwB,IAAI1Y,aAAa0X,EAAW,IAExD,IAAS31B,EAAI,EAAGA,EAAI21B,EAAW,EAAG31B,IAC9B22B,EAAsB32B,IACjBuyB,EAAmB,EAAIvyB,GAAKuyB,EAAmB,EAAIvyB,EAAI,IAAM,EAEtEuyB,EAAqBoE,EACrBhB,GAAY,CAChB,CACA,OAAOX,CACX,CACJ,gCC7KA,IAAI9C,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EACA5D,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAIw0B,EAAyB,CACzBxa,WAAY,KACZmY,OAAQ,IACRxX,WAAY,OAwLhBxd,EAAQs3B,QAtLR,SAAiBvE,QACE,IAAXA,IAAqBA,EAAS,CAAC,GACnC,IAwBIwE,EACAC,EAzBAlD,EAAS3B,EAASA,EAAS,CAAC,EAAG0E,GAAyBtE,GACxDlW,EAAayX,EAAOzX,WAAYmY,EAASV,EAAOU,OAAQxX,EAAa8W,EAAO9W,WAc5Eia,EAAO,IAAI/Y,aAAa7B,GAKxB6a,EAAmB,IAAIhZ,aAAa7B,GASpC8a,EAAe,GAIfC,EAAkB,GAKlBC,EAAe,GA8BnB,SAASC,EAAuBC,GAC5B,IAAIC,EAAQP,EAAKM,EAAM,GAAIE,EAAQR,EAAKM,GAAMG,EAAQT,EAAKM,EAAM,GAAkBI,EAASD,EAAQF,EAAQ,EAAIC,EAChH,GAAe,IAAXE,EACAZ,EAF0EQ,EAG1EP,EAAgBS,MAEf,CACD,IAAInC,EAAQkC,EAAQE,EACpBX,EAP0EQ,EAOjDjC,GAAS,EAAIqC,GACtCX,EAAgBS,EAASnC,EAAQA,GAAU,EAAIqC,EACnD,CACJ,CA8CA,OAAO,SAAiBnF,GAEpB,IAAIoF,EACJT,EAAe,GACfC,EAAkB,GAClBC,EAAe,GAtFnB,SAAoC7E,GAChC,IAAIqF,EACAC,EACJZ,EAAiB,GAAK1E,EAAmB,GAAKA,EAAmB,GACjE,IAAK,IAAIvyB,EAAI,EAAGA,EAAIuyB,EAAmB7xB,OAAQV,GAAK,EAChDi3B,EAAiBj3B,GACbuyB,EAAmBvyB,GAAKuyB,EAAmBvyB,GAAKi3B,EAAiBj3B,EAAI,GAE7E,IAAK,IAAIs3B,EAAM,EAAGA,EAAM/E,EAAmB7xB,OAAQ42B,IAAO,CAMtD,IALAM,EAAM,EACNC,EACIZ,EAAiB1E,EAAmB7xB,OAAS,EAAI42B,GAC7CL,EAAiB1E,EAAmB7xB,OAAS,GAC7Cu2B,EAAiBK,GAChBt3B,EAAI,EAAGA,EAAIuyB,EAAmB7xB,OAAS42B,EAAKt3B,IACjD43B,GAAOrF,EAAmBvyB,GAAKuyB,EAAmBvyB,EAAIs3B,GAE1DN,EAAKM,GAAQ,EAAIM,EAAOC,CAC5B,CACJ,CAqEIC,CAA2BvF,GAnD/B,WAII,IAHA,IAAIvnB,EAAM,EACN+sB,EAAY,EAET/sB,GAAOgsB,EAAKt2B,OAAS,GAAK,GAAKs2B,EAAKhsB,GAAO,GAC9CA,IAGJ,KAAOA,EAAMgsB,EAAKt2B,OAAS,GAAKs2B,EAAKhsB,IAAQ,GACzCA,IAMJ,IAHW,GAAPA,IACAA,EAAM,GAEHA,EAAMgsB,EAAKt2B,OAAS,GAavB,GAZIs2B,EAAKhsB,GAAOgsB,EAAKhsB,EAAM,IAAMgsB,EAAKhsB,IAAQgsB,EAAKhsB,EAAM,KACpC,GAAb+sB,GAIKf,EAAKhsB,GAAOgsB,EAAKe,MAFtBA,EAAY/sB,KAOpBA,EAEUgsB,EAAKt2B,OAAS,GAAKs2B,EAAKhsB,IAAQ,EAOtC,IALI+sB,EAAY,IACZb,EAAan2B,KAAKg3B,GAClBA,EAAY,GAGT/sB,EAAMgsB,EAAKt2B,OAAS,GAAKs2B,EAAKhsB,IAAQ,GACzCA,IAIR+sB,EAAY,GACZb,EAAan2B,KAAKg3B,EAE1B,CAUIC,GAEA,IADA,IAAIC,GAAoB/kB,IACflT,EAAI,EAAGA,EAAIk3B,EAAax2B,OAAQV,IAAK,CAC1C,IAAIs3B,EAAMJ,EAAal3B,GAEvBi4B,EAAmBrvB,KAAK4C,IAAIysB,EAAkBjB,EAAKM,IAC/CN,EAAKM,GAvIE,KAyIPD,EAAuBC,GAEvBF,EAAar2B,KAAKg2B,GAClBI,EAAgBp2B,KAAK+1B,GAErBmB,EAAmBrvB,KAAK4C,IAAIysB,EAAkBlB,GAEtD,CACA,GAAII,EAAgBz2B,OAAQ,CAIxB,IAAIw3B,EAAe3D,EAAS0D,EACxBE,EAAc,EAClB,IAASn4B,EAAI,EAAGA,EAAIo3B,EAAa12B,OAAQV,IACrC,GAAIo3B,EAAap3B,IAAMk4B,EAAc,CACjCC,EAAcn4B,EACd,KACJ,CAEJ,IAAIo4B,EAASjB,EAAgBgB,GAAcE,EAAgBtb,EAAaqb,EAEpET,EADAU,EAzJa,GA0JLA,GAGC,CAEjB,MAGIV,GAAS,EAEb,MAAO,CACHW,YAAaL,EACbjD,KAAM2C,EAEd,CACJ,mCCxLA,IAAIzF,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EACA5D,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAIm2B,EAAqB,CACrBC,UAAW,GACXzb,WAAY,MACZ0b,qBAAsB,IA8G1Bl5B,EAAQm5B,IA5GR,SAAapG,QACM,IAAXA,IAAqBA,EAAS,CAAC,GACnC,IAAIuB,EAAS3B,EAASA,EAAS,CAAC,EAAGqG,GAAqBjG,GACpDkG,EAAY3E,EAAO2E,UAAWzb,EAAa8W,EAAO9W,WAAY0b,EAAuB5E,EAAO4E,qBAChG,OAAO,SAAqBlG,GAExB,IAAInW,EACJ,IAAKA,EAAa,EAAGA,EAAamW,EAAmB7xB,OAAQ0b,GAAc,GAQ3E,IAJA,IAEqBkb,EAFjBqB,GAFJvc,GAAc,GAEqB,EAC/Bwc,EAAY,IAAI3a,aAAa0a,GAC7BL,EAAc,EAETnG,EAAI,EAAGA,EAAIwG,EAAiBxG,IACjCyG,EAAUzG,GAAK,EAEnB,IAASA,EAAI,EAAGA,EAAIwG,EAAiBxG,IACjC,IAAK,IAAInyB,EAAI,EAAGA,EAAI24B,EAAiB34B,IAAK,CACtC,IAAIq1B,EAAQ9C,EAAmBvyB,GAAKuyB,EAAmBvyB,EAAImyB,GAC3DyG,EAAUzG,IAAMkD,EAAQA,CAC5B,CAGJuD,EAAU,GAAK,EACfA,EAAU,GAAK,EACf,IAyCIC,EAAWC,EAAIC,EAzCfC,EAAa,EACjB,IAAS7G,EAAI,EAAGA,EAAIwG,EAAiBxG,IACjC6G,GAAcJ,EAAUzG,GACxByG,EAAUzG,IAAMA,EAAI6G,EAKxB,IAAK1B,EAAM,EAAGA,EAAMqB,EAAiBrB,IACjC,GAAIsB,EAAUtB,GAAOkB,EAAW,CAC5B,KAAOlB,EAAM,EAAIqB,GAAmBC,EAAUtB,EAAM,GAAKsB,EAAUtB,IAC/DA,IAWJgB,EAAc,EAAIM,EAAUtB,GAC5B,KACJ,CAGJ,GAAIA,IAAQqB,GAAmBC,EAAUtB,IAAQkB,EAC7C,OAAO,KAGX,GAAIF,EAAcG,EACd,OAAO,KAsBX,GALIM,EADAzB,EAAM,EAAIqB,EACLrB,EAAM,EAGNA,GATLwB,EADAxB,EAAM,EACDA,EAGAA,EAAM,KAQJA,EAEHuB,EADAD,EAAUtB,IAAQsB,EAAUG,GAChBzB,EAGAyB,OAGf,GAAIA,IAAOzB,EAERuB,EADAD,EAAUtB,IAAQsB,EAAUE,GAChBxB,EAGAwB,MAGf,CACD,IAAIG,EAAKL,EAAUE,GACfI,EAAKN,EAAUtB,GACf6B,EAAKP,EAAUG,GAGnBF,EAAYvB,GAAO6B,EAAKF,IAAO,GAAK,EAAIC,EAAKC,EAAKF,GACtD,CACA,OAAOlc,EAAa8b,CACxB,CACJ,+BC1IAh3B,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD,IAAIg3B,EAAQ/1B,EAAQ,MACpB9D,EAAQm5B,IAAMU,EAAMV,IACpB,IAAIW,EAASh2B,EAAQ,MACrB9D,EAAQq0B,KAAOyF,EAAOzF,KACtB,IAAI0F,EAAaj2B,EAAQ,MACzB9D,EAAQ8yB,SAAWiH,EAAWjH,SAC9B,IAAIkH,EAAoBl2B,EAAQ,KAChC9D,EAAQq1B,eAAiB2E,EAAkB3E,eAC3C,IAAI4E,EAAYn2B,EAAQ,GACxB9D,EAAQs3B,QAAU2C,EAAU3C,QAC5B,IAAI4C,EAAgBp2B,EAAQ,MAC5B9D,EAAQm6B,YAAcD,EAAcC,YACpCn6B,EAAAA,QAAkB,CACdm5B,IAAKU,EAAMV,IACX9E,KAAMyF,EAAOzF,KACbvB,SAAUiH,EAAWjH,SACrBuC,eAAgB2E,EAAkB3E,eAClCiC,QAAS2C,EAAU3C,QACnB6C,YAAaD,EAAcC,8CCnB/B,IAAIxH,EAAYnsB,MAAQA,KAAKmsB,UAAa,WAStC,OARAA,EAAWrwB,OAAO8vB,QAAU,SAASQ,GACjC,IAAK,IAAI1X,EAAGza,EAAI,EAAGuG,EAAId,UAAU/E,OAAQV,EAAIuG,EAAGvG,IAE5C,IAAK,IAAIqb,KADTZ,EAAIhV,UAAUzF,GACO6B,OAAOC,UAAUwZ,eAAe9Y,KAAKiY,EAAGY,KACzD8W,EAAE9W,GAAKZ,EAAEY,IAEjB,OAAO8W,CACX,EACOD,EAASzoB,MAAM1D,KAAMN,UAChC,EAOA,SAASk0B,EAAeC,EAAW5b,GAC/B,IAAI6b,EAAUD,EACT7a,KAAI,SAAUpL,GAAM,OAAOA,EAAGqK,EAAQ,IACtCkQ,QAAO,SAAU9rB,GAAS,OAAiB,OAAVA,CAAgB,IACjD03B,MAAK,SAAUnvB,EAAG/F,GAAK,OAAO+F,EAAI/F,CAAG,IAE1C,GAAuB,IAAnBi1B,EAAQn5B,OACR,OAAOm5B,EAAQ,GAId,GAAuB,IAAnBA,EAAQn5B,OAEb,OAAe,GADX6N,EAAQsrB,EAAQ,KAAIE,EAASF,EAAQ,IACbjxB,KAAK+pB,KAAKpkB,EAAQwrB,GAAUxrB,EAKxD,IAAIA,EAAQsrB,EAAQ,GAChBE,EAASF,EAAQ,GACjBG,EAAeH,EAAQA,EAAQn5B,OAAS,GACxC8N,EAAOqrB,EAAQA,EAAQn5B,OAAS,GAChCu5B,EAAoB,EAAR1rB,EAAYwrB,EAASF,EAAUA,EAAQp3B,MAAM,GACzDy3B,EAA2B,EAAfF,EAAmBxrB,EAAOyrB,EAAYA,EAAUx3B,MAAM,GAAI,GAC1E,OAAOmG,KAAKgG,IAAIsrB,EAAU/I,QAAO,SAAUgB,EAAG9W,GAAK,OAAO8W,EAAI9W,CAAG,GAAG,GAAI,EAAI6e,EAAUx5B,OAE9F,CAhCAmB,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,IACtD7C,EAAQ46B,2BAA6B,CACjCC,MAAO,IACPC,aAAc,EACdtd,WAAY,OAkDhBxd,EAAQm6B,YArBR,SAAqBY,EAAU/H,EAAoB7S,QAC/B,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAII6a,EAJA1G,EAAS3B,EAASA,EAAS,CAAC,EAAG3yB,EAAQ46B,4BAA6Bza,GACpE0a,EAAQvG,EAAOuG,MAAOC,EAAexG,EAAOwG,aAActd,EAAa8W,EAAO9W,WAC9EgY,EAAexC,EAAmB7xB,OAClC85B,EAAY5xB,KAAK4rB,MAAoB,GAAbzX,GAAoBsd,EAAeD,IAG3DG,EADAn5B,MAAM6D,QAAQq1B,GACHX,EAAeviB,KAAK,KAAMkjB,GAG1BA,EAGf,IADA,IAAIT,EAAU,GACL75B,EAAI,EAAGwL,EAAMupB,EAAeyF,EAAWx6B,GAAKwL,EAAKxL,GAAKw6B,EAAW,CACtE,IACI7C,EAAQ4C,EADAhI,EAAmB9vB,MAAMzC,EAAGA,EAAIw6B,IAE5CX,EAAQ94B,KAAK42B,EACjB,CACA,OAAOkC,CACX,YChEA,IAOIY,EACAC,EARA1a,EAAU1gB,EAAOC,QAAU,CAAC,EAUhC,SAASo7B,IACL,MAAM,IAAIr5B,MAAM,kCACpB,CACA,SAASs5B,IACL,MAAM,IAAIt5B,MAAM,oCACpB,CAqBA,SAASu5B,EAAWC,GAChB,GAAIL,IAAqBzgB,WAErB,OAAOA,WAAW8gB,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBzgB,WAEhE,OADAygB,EAAmBzgB,WACZA,WAAW8gB,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,EACjC,CAAE,MAAM/wB,GACJ,IAEI,OAAO0wB,EAAiBj4B,KAAK,KAAMs4B,EAAK,EAC5C,CAAE,MAAM/wB,GAEJ,OAAO0wB,EAAiBj4B,KAAKuD,KAAM+0B,EAAK,EAC5C,CACJ,CAGJ,EA5CC,WACG,IAEQL,EADsB,oBAAfzgB,WACYA,WAEA2gB,CAE3B,CAAE,MAAO5wB,GACL0wB,EAAmBE,CACvB,CACA,IAEQD,EADwB,oBAAjBK,aACcA,aAEAH,CAE7B,CAAE,MAAO7wB,GACL2wB,EAAqBE,CACzB,CACH,CAnBA,GAwED,IAEII,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAat6B,OACbu6B,EAAQD,EAAalwB,OAAOmwB,GAE5BE,GAAc,EAEdF,EAAMv6B,QACN26B,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAII,EAAUT,EAAWO,GACzBF,GAAW,EAGX,IADA,IAAI76B,EAAM46B,EAAMv6B,OACVL,GAAK,CAGP,IAFA26B,EAAeC,EACfA,EAAQ,KACCE,EAAa96B,GACd26B,GACAA,EAAaG,GAAYI,MAGjCJ,GAAc,EACd96B,EAAM46B,EAAMv6B,MAChB,CACAs6B,EAAe,KACfE,GAAW,EAnEf,SAAyBM,GACrB,GAAId,IAAuBK,aAEvB,OAAOA,aAAaS,GAGxB,IAAKd,IAAuBE,IAAwBF,IAAuBK,aAEvE,OADAL,EAAqBK,aACdA,aAAaS,GAExB,IAEI,OAAOd,EAAmBc,EAC9B,CAAE,MAAOzxB,GACL,IAEI,OAAO2wB,EAAmBl4B,KAAK,KAAMg5B,EACzC,CAAE,MAAOzxB,GAGL,OAAO2wB,EAAmBl4B,KAAKuD,KAAMy1B,EACzC,CACJ,CAIJ,CA0CIC,CAAgBH,EAlBhB,CAmBJ,CAgBA,SAASI,EAAKZ,EAAKv1B,GACfQ,KAAK+0B,IAAMA,EACX/0B,KAAKR,MAAQA,CACjB,CAWA,SAASwqB,IAAQ,CA5BjB/P,EAAQC,SAAW,SAAU6a,GACzB,IAAI5mB,EAAO,IAAI9S,MAAMqE,UAAU/E,OAAS,GACxC,GAAI+E,UAAU/E,OAAS,EACnB,IAAK,IAAIV,EAAI,EAAGA,EAAIyF,UAAU/E,OAAQV,IAClCkU,EAAKlU,EAAI,GAAKyF,UAAUzF,GAGhCi7B,EAAMl6B,KAAK,IAAI26B,EAAKZ,EAAK5mB,IACJ,IAAjB+mB,EAAMv6B,QAAiBw6B,GACvBL,EAAWQ,EAEnB,EAOAK,EAAK55B,UAAUy5B,IAAM,WACjBx1B,KAAK+0B,IAAIrxB,MAAM,KAAM1D,KAAKR,MAC9B,EACAya,EAAQ2b,MAAQ,UAChB3b,EAAQ4b,SAAU,EAClB5b,EAAQ6b,IAAM,CAAC,EACf7b,EAAQ8b,KAAO,GACf9b,EAAQ+b,QAAU,GAClB/b,EAAQgc,SAAW,CAAC,EAIpBhc,EAAQzK,GAAKwa,EACb/P,EAAQ3H,YAAc0X,EACtB/P,EAAQrL,KAAOob,EACf/P,EAAQlH,IAAMiX,EACd/P,EAAQ9K,eAAiB6a,EACzB/P,EAAQjH,mBAAqBgX,EAC7B/P,EAAQxJ,KAAOuZ,EACf/P,EAAQ1H,gBAAkByX,EAC1B/P,EAAQzH,oBAAsBwX,EAE9B/P,EAAQ5H,UAAY,SAAUjG,GAAQ,MAAO,EAAG,EAEhD6N,EAAQic,QAAU,SAAU9pB,GACxB,MAAM,IAAI7Q,MAAM,mCACpB,EAEA0e,EAAQkc,IAAM,WAAc,MAAO,GAAI,EACvClc,EAAQmc,MAAQ,SAAUx1B,GACtB,MAAM,IAAIrF,MAAM,iCACpB,EACA0e,EAAQoc,MAAQ,WAAa,OAAO,CAAG,+BC5K1B,IAAIC,EAAGh5B,EAAQ,MAASmD,EAAEnD,EAAQ,MAAiBi5B,EAAEj5B,EAAQ,MAAa,SAASwH,EAAEF,GAAG,IAAI,IAAI/F,EAAE,yDAAyD+F,EAAEnC,EAAE,EAAEA,EAAE/C,UAAU/E,OAAO8H,IAAI5D,GAAG,WAAW23B,mBAAmB92B,UAAU+C,IAAI,MAAM,yBAAyBmC,EAAE,WAAW/F,EAAE,gHAAgH,CAAC,IAAIy3B,EAAG,MAAM/6B,MAAMuJ,EAAE,MAAM,IAAI2xB,EAAG,IAAIC,IAAIC,EAAG,CAAC,EAAE,SAASC,EAAGhyB,EAAE/F,GAAGg4B,EAAGjyB,EAAE/F,GAAGg4B,EAAGjyB,EAAE,UAAU/F,EAAE,CAC7e,SAASg4B,EAAGjyB,EAAE/F,GAAW,IAAR83B,EAAG/xB,GAAG/F,EAAM+F,EAAE,EAAEA,EAAE/F,EAAElE,OAAOiK,IAAI6xB,EAAGK,IAAIj4B,EAAE+F,GAAG,CAC5D,IAAImyB,IAAK,qBAAqBzgB,QAAQ,qBAAqBA,OAAO0gB,UAAU,qBAAqB1gB,OAAO0gB,SAASC,eAAeC,EAAG,8VAA8VC,EAAGr7B,OAAOC,UAAUwZ,eACrf6hB,EAAG,CAAC,EAAEC,EAAG,CAAC,EAC8M,SAASC,EAAE1yB,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,EAAEC,GAAGx3B,KAAKy3B,gBAAgB,IAAI54B,GAAG,IAAIA,GAAG,IAAIA,EAAEmB,KAAK03B,cAAcjjB,EAAEzU,KAAK23B,mBAAmB3zB,EAAEhE,KAAK43B,gBAAgBn1B,EAAEzC,KAAK63B,aAAajzB,EAAE5E,KAAKf,KAAKJ,EAAEmB,KAAK83B,YAAYP,EAAEv3B,KAAK+3B,kBAAkBP,CAAC,CAAC,IAAIQ,EAAE,CAAC,EACpb,uIAAuI3qB,MAAM,KAAKkb,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe2jB,SAAQ,SAAS3jB,GAAG,IAAI/F,EAAE+F,EAAE,GAAGozB,EAAEn5B,GAAG,IAAIy4B,EAAEz4B,EAAE,GAAE,EAAG+F,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAAS2jB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE9E,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiByoB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OyI,MAAM,KAAKkb,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE9E,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYyoB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAY2jB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQ2jB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAAS2jB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE9E,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIm4B,EAAG,gBAAgB,SAASC,EAAGtzB,GAAG,OAAOA,EAAE,GAAGuzB,aAAa,CAIxZ,SAASC,EAAGxzB,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEg0B,EAAEziB,eAAe1W,GAAGm5B,EAAEn5B,GAAG,MAAW,OAAOmF,EAAE,IAAIA,EAAE/E,MAAKwV,IAAO,EAAE5V,EAAElE,SAAS,MAAMkE,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAY+F,EAAE/F,EAAE4D,EAAEgS,GAAG,GAAG,OAAO5V,GAAG,qBAAqBA,GADwE,SAAY+F,EAAE/F,EAAE4D,EAAEgS,GAAG,GAAG,OAAOhS,GAAG,IAAIA,EAAExD,KAAK,OAAM,EAAG,cAAcJ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAG4V,IAAc,OAAOhS,GAASA,EAAEg1B,gBAAmD,WAAnC7yB,EAAEA,EAAE9E,cAAcpD,MAAM,EAAE,KAAsB,UAAUkI,GAAE,QAAQ,OAAM,EAAG,CAClUyzB,CAAGzzB,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOhS,EAAE,OAAOA,EAAExD,MAAM,KAAK,EAAE,OAAOJ,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO4P,MAAM5P,GAAG,KAAK,EAAE,OAAO4P,MAAM5P,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOvDy5B,CAAGz5B,EAAE4D,EAAEuB,EAAEyQ,KAAKhS,EAAE,MAAMgS,GAAG,OAAOzQ,EARpL,SAAYY,GAAG,QAAGuyB,EAAG16B,KAAK46B,EAAGzyB,KAAeuyB,EAAG16B,KAAK26B,EAAGxyB,KAAesyB,EAAGqB,KAAK3zB,GAAUyyB,EAAGzyB,IAAG,GAAGwyB,EAAGxyB,IAAG,GAAS,GAAE,CAQoE4zB,CAAG35B,KAAK,OAAO4D,EAAEmC,EAAE6zB,gBAAgB55B,GAAG+F,EAAE8zB,aAAa75B,EAAE,GAAG4D,IAAIuB,EAAE4zB,gBAAgBhzB,EAAEZ,EAAE6zB,cAAc,OAAOp1B,EAAE,IAAIuB,EAAE/E,MAAQ,GAAGwD,GAAG5D,EAAEmF,EAAE0zB,cAAcjjB,EAAEzQ,EAAE2zB,mBAAmB,OAAOl1B,EAAEmC,EAAE6zB,gBAAgB55B,IAAa4D,EAAE,KAAXuB,EAAEA,EAAE/E,OAAc,IAAI+E,IAAG,IAAKvB,EAAE,GAAG,GAAGA,EAAEgS,EAAE7P,EAAE+zB,eAAelkB,EAAE5V,EAAE4D,GAAGmC,EAAE8zB,aAAa75B,EAAE4D,KAAK,CAHje,0jCAA0jC4K,MAAM,KAAKkb,SAAQ,SAAS3jB,GAAG,IAAI/F,EAAE+F,EAAEc,QAAQuyB,EACzmCC,GAAIF,EAAEn5B,GAAG,IAAIy4B,EAAEz4B,EAAE,GAAE,EAAG+F,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EyI,MAAM,KAAKkb,SAAQ,SAAS3jB,GAAG,IAAI/F,EAAE+F,EAAEc,QAAQuyB,EAAGC,GAAIF,EAAEn5B,GAAG,IAAIy4B,EAAEz4B,EAAE,GAAE,EAAG+F,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAa2jB,SAAQ,SAAS3jB,GAAG,IAAI/F,EAAE+F,EAAEc,QAAQuyB,EAAGC,GAAIF,EAAEn5B,GAAG,IAAIy4B,EAAEz4B,EAAE,GAAE,EAAG+F,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAe2jB,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE9E,cAAc,MAAK,GAAG,EAAG,IACldk4B,EAAEY,UAAU,IAAItB,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc/O,SAAQ,SAAS3jB,GAAGozB,EAAEpzB,GAAG,IAAI0yB,EAAE1yB,EAAE,GAAE,EAAGA,EAAE9E,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAI+4B,EAAGvC,EAAGwC,mDAAmDC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAChN,GAAG,oBAAoBt8B,QAAQA,OAAOu8B,IAAI,CAAC,IAAIpuB,EAAEnO,OAAOu8B,IAAIjB,EAAGntB,EAAE,iBAAiBotB,EAAGptB,EAAE,gBAAgBqtB,EAAGrtB,EAAE,kBAAkBstB,EAAGttB,EAAE,qBAAqButB,EAAGvtB,EAAE,kBAAkBwtB,EAAGxtB,EAAE,kBAAkBytB,EAAGztB,EAAE,iBAAiB0tB,EAAG1tB,EAAE,qBAAqB2tB,EAAG3tB,EAAE,kBAAkB4tB,EAAG5tB,EAAE,uBAAuB6tB,EAAG7tB,EAAE,cAAc8tB,EAAG9tB,EAAE,cAAc+tB,EAAG/tB,EAAE,eAAeA,EAAE,eAAeguB,EAAGhuB,EAAE,mBAAmBiuB,EAAGjuB,EAAE,0BAA0BkuB,EAAGluB,EAAE,mBAAmBmuB,EAAGnuB,EAAE,sBAAsB,CAC9d,IAAmLquB,EAA/KC,EAAG,oBAAoBz8B,QAAQA,OAAOuqB,SAAS,SAASmS,EAAGv1B,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEs1B,GAAIt1B,EAAEs1B,IAAKt1B,EAAE,eAA0CA,EAAE,IAAI,CAAQ,SAASw1B,EAAGx1B,GAAG,QAAG,IAASq1B,EAAG,IAAI,MAAM1+B,OAAQ,CAAC,MAAMkH,GAAG,IAAI5D,EAAE4D,EAAE4J,MAAM1G,OAAO00B,MAAM,gBAAgBJ,EAAGp7B,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAKo7B,EAAGr1B,CAAC,CAAC,IAAI01B,GAAG,EACjU,SAASC,EAAG31B,EAAE/F,GAAG,IAAI+F,GAAG01B,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI73B,EAAElH,MAAMi/B,kBAAkBj/B,MAAMi/B,uBAAkB,EAAO,IAAI,GAAG37B,EAAE,GAAGA,EAAE,WAAW,MAAMtD,OAAQ,EAAEO,OAAOsI,eAAevF,EAAE9C,UAAU,QAAQ,CAACmJ,IAAI,WAAW,MAAM3J,OAAQ,IAAI,kBAAkByS,SAASA,QAAQysB,UAAU,CAAC,IAAIzsB,QAAQysB,UAAU57B,EAAE,GAAG,CAAC,MAAM67B,GAAG,IAAIjmB,EAAEimB,CAAC,CAAC1sB,QAAQysB,UAAU71B,EAAE,GAAG/F,EAAE,KAAK,CAAC,IAAIA,EAAEpC,MAAM,CAAC,MAAMi+B,GAAGjmB,EAAEimB,CAAC,CAAC91B,EAAEnI,KAAKoC,EAAE9C,UAAU,KAAK,CAAC,IAAI,MAAMR,OAAQ,CAAC,MAAMm/B,GAAGjmB,EAAEimB,CAAC,CAAC91B,GAAG,CAAC,CAAC,MAAM81B,GAAG,GAAGA,GAAGjmB,GAAG,kBAAkBimB,EAAEruB,MAAM,CAAC,IAAI,IAAIrI,EAAE02B,EAAEruB,MAAMgB,MAAM,MACnfkqB,EAAE9iB,EAAEpI,MAAMgB,MAAM,MAAMmqB,EAAExzB,EAAErJ,OAAO,EAAEggC,EAAEpD,EAAE58B,OAAO,EAAE,GAAG68B,GAAG,GAAGmD,GAAG32B,EAAEwzB,KAAKD,EAAEoD,IAAIA,IAAI,KAAK,GAAGnD,GAAG,GAAGmD,EAAEnD,IAAImD,IAAI,GAAG32B,EAAEwzB,KAAKD,EAAEoD,GAAG,CAAC,GAAG,IAAInD,GAAG,IAAImD,EAAG,MAAMnD,IAAQ,IAAJmD,GAAS32B,EAAEwzB,KAAKD,EAAEoD,GAAG,MAAM,KAAK32B,EAAEwzB,GAAG9xB,QAAQ,WAAW,cAAc,GAAG8xB,GAAG,GAAGmD,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQL,GAAG,EAAG/+B,MAAMi/B,kBAAkB/3B,CAAC,CAAC,OAAOmC,EAAEA,EAAEA,EAAEg2B,aAAah2B,EAAEwH,KAAK,IAAIguB,EAAGx1B,GAAG,EAAE,CAC/T,SAASi2B,EAAGj2B,GAAG,OAAOA,EAAEk2B,KAAK,KAAK,EAAE,OAAOV,EAAGx1B,EAAE3F,MAAM,KAAK,GAAG,OAAOm7B,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOx1B,EAAE21B,EAAG31B,EAAE3F,MAAK,GAAM,KAAK,GAAG,OAAO2F,EAAE21B,EAAG31B,EAAE3F,KAAK87B,QAAO,GAAM,KAAK,GAAG,OAAOn2B,EAAE21B,EAAG31B,EAAE3F,KAAK+7B,SAAQ,GAAM,KAAK,EAAE,OAAOp2B,EAAE21B,EAAG31B,EAAE3F,MAAK,GAAM,QAAQ,MAAM,GAAG,CACjU,SAASg8B,EAAGr2B,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEg2B,aAAah2B,EAAEwH,MAAM,KAAK,GAAG,kBAAkBxH,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKq0B,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkB50B,EAAE,OAAOA,EAAEs2B,UAAU,KAAK7B,EAAG,OAAOz0B,EAAEg2B,aAAa,WAAW,YAAY,KAAKxB,EAAG,OAAOx0B,EAAEu2B,SAASP,aAAa,WAAW,YAAY,KAAKtB,EAAG,IAAIz6B,EAAE+F,EAAEm2B,OACnd,OAD0dl8B,EAAEA,EAAE+7B,aAAa/7B,EAAEuN,MAAM,GAC5exH,EAAEg2B,cAAc,KAAK/7B,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK46B,EAAG,OAAOwB,EAAGr2B,EAAE3F,MAAM,KAAK06B,EAAG,OAAOsB,EAAGr2B,EAAEo2B,SAAS,KAAKtB,EAAG76B,EAAE+F,EAAEw2B,SAASx2B,EAAEA,EAAEy2B,MAAM,IAAI,OAAOJ,EAAGr2B,EAAE/F,GAAG,CAAC,MAAM4D,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS64B,EAAG12B,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,GAAG,CAAC,SAAS22B,EAAG32B,GAAG,IAAI/F,EAAE+F,EAAE3F,KAAK,OAAO2F,EAAEA,EAAE42B,WAAW,UAAU52B,EAAE9E,gBAAgB,aAAajB,GAAG,UAAUA,EAAE,CAE5Z,SAAS48B,EAAG72B,GAAGA,EAAE82B,gBAAgB92B,EAAE82B,cADvD,SAAY92B,GAAG,IAAI/F,EAAE08B,EAAG32B,GAAG,UAAU,QAAQnC,EAAE3G,OAAOssB,yBAAyBxjB,EAAEoH,YAAYjQ,UAAU8C,GAAG4V,EAAE,GAAG7P,EAAE/F,GAAG,IAAI+F,EAAE2Q,eAAe1W,IAAI,qBAAqB4D,GAAG,oBAAoBA,EAAE6B,KAAK,oBAAoB7B,EAAEyC,IAAI,CAAC,IAAIlB,EAAEvB,EAAE6B,IAAIizB,EAAE90B,EAAEyC,IAAiL,OAA7KpJ,OAAOsI,eAAeQ,EAAE/F,EAAE,CAACsN,cAAa,EAAG7H,IAAI,WAAW,OAAON,EAAEvH,KAAKuD,KAAK,EAAEkF,IAAI,SAASN,GAAG6P,EAAE,GAAG7P,EAAE2yB,EAAE96B,KAAKuD,KAAK4E,EAAE,IAAI9I,OAAOsI,eAAeQ,EAAE/F,EAAE,CAACwF,WAAW5B,EAAE4B,aAAmB,CAACs3B,SAAS,WAAW,OAAOlnB,CAAC,EAAEmnB,SAAS,SAASh3B,GAAG6P,EAAE,GAAG7P,CAAC,EAAEi3B,aAAa,WAAWj3B,EAAE82B,cACxf,YAAY92B,EAAE/F,EAAE,EAAE,CAAC,CAAkDi9B,CAAGl3B,GAAG,CAAC,SAASm3B,EAAGn3B,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAI/F,EAAE+F,EAAE82B,cAAc,IAAI78B,EAAE,OAAM,EAAG,IAAI4D,EAAE5D,EAAE88B,WAAelnB,EAAE,GAAqD,OAAlD7P,IAAI6P,EAAE8mB,EAAG32B,GAAGA,EAAE7F,QAAQ,OAAO,QAAQ6F,EAAEvI,QAAOuI,EAAE6P,KAAahS,IAAG5D,EAAE+8B,SAASh3B,IAAG,EAAM,CAAC,SAASo3B,EAAGp3B,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqBoyB,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOpyB,EAAEq3B,eAAer3B,EAAEs3B,IAAI,CAAC,MAAMr9B,GAAG,OAAO+F,EAAEs3B,IAAI,CAAC,CACpa,SAASC,EAAGv3B,EAAE/F,GAAG,IAAI4D,EAAE5D,EAAEE,QAAQ,OAAO0B,EAAE,CAAC,EAAE5B,EAAE,CAACu9B,oBAAe,EAAOC,kBAAa,EAAOhgC,WAAM,EAAO0C,QAAQ,MAAM0D,EAAEA,EAAEmC,EAAE03B,cAAcC,gBAAgB,CAAC,SAASC,GAAG53B,EAAE/F,GAAG,IAAI4D,EAAE,MAAM5D,EAAEw9B,aAAa,GAAGx9B,EAAEw9B,aAAa5nB,EAAE,MAAM5V,EAAEE,QAAQF,EAAEE,QAAQF,EAAEu9B,eAAe35B,EAAE64B,EAAG,MAAMz8B,EAAExC,MAAMwC,EAAExC,MAAMoG,GAAGmC,EAAE03B,cAAc,CAACC,eAAe9nB,EAAEgoB,aAAah6B,EAAEi6B,WAAW,aAAa79B,EAAEI,MAAM,UAAUJ,EAAEI,KAAK,MAAMJ,EAAEE,QAAQ,MAAMF,EAAExC,MAAM,CAAC,SAASsgC,GAAG/3B,EAAE/F,GAAe,OAAZA,EAAEA,EAAEE,UAAiBq5B,EAAGxzB,EAAE,UAAU/F,GAAE,EAAG,CAC9d,SAAS+9B,GAAGh4B,EAAE/F,GAAG89B,GAAG/3B,EAAE/F,GAAG,IAAI4D,EAAE64B,EAAGz8B,EAAExC,OAAOoY,EAAE5V,EAAEI,KAAK,GAAG,MAAMwD,EAAK,WAAWgS,GAAM,IAAIhS,GAAG,KAAKmC,EAAEvI,OAAOuI,EAAEvI,OAAOoG,KAAEmC,EAAEvI,MAAM,GAAGoG,GAAOmC,EAAEvI,QAAQ,GAAGoG,IAAImC,EAAEvI,MAAM,GAAGoG,QAAQ,GAAG,WAAWgS,GAAG,UAAUA,EAA8B,YAA3B7P,EAAE6zB,gBAAgB,SAAgB55B,EAAE0W,eAAe,SAASsnB,GAAGj4B,EAAE/F,EAAEI,KAAKwD,GAAG5D,EAAE0W,eAAe,iBAAiBsnB,GAAGj4B,EAAE/F,EAAEI,KAAKq8B,EAAGz8B,EAAEw9B,eAAe,MAAMx9B,EAAEE,SAAS,MAAMF,EAAEu9B,iBAAiBx3B,EAAEw3B,iBAAiBv9B,EAAEu9B,eAAe,CACla,SAAS9oB,GAAG1O,EAAE/F,EAAE4D,GAAG,GAAG5D,EAAE0W,eAAe,UAAU1W,EAAE0W,eAAe,gBAAgB,CAAC,IAAId,EAAE5V,EAAEI,KAAK,KAAK,WAAWwV,GAAG,UAAUA,QAAG,IAAS5V,EAAExC,OAAO,OAAOwC,EAAExC,OAAO,OAAOwC,EAAE,GAAG+F,EAAE03B,cAAcG,aAAah6B,GAAG5D,IAAI+F,EAAEvI,QAAQuI,EAAEvI,MAAMwC,GAAG+F,EAAEy3B,aAAax9B,CAAC,CAAU,MAAT4D,EAAEmC,EAAEwH,QAAcxH,EAAEwH,KAAK,IAAIxH,EAAEw3B,iBAAiBx3B,EAAE03B,cAAcC,eAAe,KAAK95B,IAAImC,EAAEwH,KAAK3J,EAAE,CACzV,SAASo6B,GAAGj4B,EAAE/F,EAAE4D,GAAM,WAAW5D,GAAGm9B,EAAGp3B,EAAEk4B,iBAAiBl4B,IAAE,MAAMnC,EAAEmC,EAAEy3B,aAAa,GAAGz3B,EAAE03B,cAAcG,aAAa73B,EAAEy3B,eAAe,GAAG55B,IAAImC,EAAEy3B,aAAa,GAAG55B,GAAE,CAAsF,SAASs6B,GAAGn4B,EAAE/F,GAA6D,OAA1D+F,EAAEnE,EAAE,CAACu8B,cAAS,GAAQn+B,IAAMA,EAAlI,SAAY+F,GAAG,IAAI/F,EAAE,GAAuD,OAApDy3B,EAAG2G,SAAS1U,QAAQ3jB,GAAE,SAASA,GAAG,MAAMA,IAAI/F,GAAG+F,EAAE,IAAU/F,CAAC,CAAgDq+B,CAAGr+B,EAAEm+B,aAAUp4B,EAAEo4B,SAASn+B,GAAS+F,CAAC,CACxU,SAASu4B,GAAGv4B,EAAE/F,EAAE4D,EAAEgS,GAAe,GAAZ7P,EAAEA,EAAE+U,QAAW9a,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAImF,EAAE,EAAEA,EAAEvB,EAAE9H,OAAOqJ,IAAInF,EAAE,IAAI4D,EAAEuB,KAAI,EAAG,IAAIvB,EAAE,EAAEA,EAAEmC,EAAEjK,OAAO8H,IAAIuB,EAAEnF,EAAE0W,eAAe,IAAI3Q,EAAEnC,GAAGpG,OAAOuI,EAAEnC,GAAG26B,WAAWp5B,IAAIY,EAAEnC,GAAG26B,SAASp5B,GAAGA,GAAGyQ,IAAI7P,EAAEnC,GAAG46B,iBAAgB,EAAG,KAAK,CAAmB,IAAlB56B,EAAE,GAAG64B,EAAG74B,GAAG5D,EAAE,KAASmF,EAAE,EAAEA,EAAEY,EAAEjK,OAAOqJ,IAAI,CAAC,GAAGY,EAAEZ,GAAG3H,QAAQoG,EAAiD,OAA9CmC,EAAEZ,GAAGo5B,UAAS,OAAG3oB,IAAI7P,EAAEZ,GAAGq5B,iBAAgB,IAAW,OAAOx+B,GAAG+F,EAAEZ,GAAGs5B,WAAWz+B,EAAE+F,EAAEZ,GAAG,CAAC,OAAOnF,IAAIA,EAAEu+B,UAAS,EAAG,CAAC,CACxY,SAASG,GAAG34B,EAAE/F,GAAG,GAAG,MAAMA,EAAE2+B,wBAAwB,MAAMjiC,MAAMuJ,EAAE,KAAK,OAAOrE,EAAE,CAAC,EAAE5B,EAAE,CAACxC,WAAM,EAAOggC,kBAAa,EAAOW,SAAS,GAAGp4B,EAAE03B,cAAcG,cAAc,CAAC,SAASgB,GAAG74B,EAAE/F,GAAG,IAAI4D,EAAE5D,EAAExC,MAAM,GAAG,MAAMoG,EAAE,CAA+B,GAA9BA,EAAE5D,EAAEm+B,SAASn+B,EAAEA,EAAEw9B,aAAgB,MAAM55B,EAAE,CAAC,GAAG,MAAM5D,EAAE,MAAMtD,MAAMuJ,EAAE,KAAK,GAAGzJ,MAAM6D,QAAQuD,GAAG,CAAC,KAAK,GAAGA,EAAE9H,QAAQ,MAAMY,MAAMuJ,EAAE,KAAKrC,EAAEA,EAAE,EAAE,CAAC5D,EAAE4D,CAAC,CAAC,MAAM5D,IAAIA,EAAE,IAAI4D,EAAE5D,CAAC,CAAC+F,EAAE03B,cAAc,CAACG,aAAanB,EAAG74B,GAAG,CAClZ,SAASi7B,GAAG94B,EAAE/F,GAAG,IAAI4D,EAAE64B,EAAGz8B,EAAExC,OAAOoY,EAAE6mB,EAAGz8B,EAAEw9B,cAAc,MAAM55B,KAAIA,EAAE,GAAGA,KAAMmC,EAAEvI,QAAQuI,EAAEvI,MAAMoG,GAAG,MAAM5D,EAAEw9B,cAAcz3B,EAAEy3B,eAAe55B,IAAImC,EAAEy3B,aAAa55B,IAAI,MAAMgS,IAAI7P,EAAEy3B,aAAa,GAAG5nB,EAAE,CAAC,SAASkpB,GAAG/4B,GAAG,IAAI/F,EAAE+F,EAAEg5B,YAAY/+B,IAAI+F,EAAE03B,cAAcG,cAAc,KAAK59B,GAAG,OAAOA,IAAI+F,EAAEvI,MAAMwC,EAAE,CAAC,IAAIg/B,GAAG,CAACC,KAAK,+BAA+BC,OAAO,qCAAqCC,IAAI,8BAC9X,SAASC,GAAGr5B,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAAC,SAASs5B,GAAGt5B,EAAE/F,GAAG,OAAO,MAAM+F,GAAG,iCAAiCA,EAAEq5B,GAAGp/B,GAAG,+BAA+B+F,GAAG,kBAAkB/F,EAAE,+BAA+B+F,CAAC,CAC5U,IAAI2kB,GAAe3kB,GAAZu5B,IAAYv5B,GAAsJ,SAASA,EAAE/F,GAAG,GAAG+F,EAAEw5B,eAAeP,GAAGG,KAAK,cAAcp5B,EAAEA,EAAEy5B,UAAUx/B,MAAM,CAA2F,KAA1F0qB,GAAGA,IAAIyN,SAASC,cAAc,QAAUoH,UAAU,QAAQx/B,EAAED,UAAU/C,WAAW,SAAagD,EAAE0qB,GAAG+U,WAAW15B,EAAE05B,YAAY15B,EAAE25B,YAAY35B,EAAE05B,YAAY,KAAKz/B,EAAEy/B,YAAY15B,EAAE45B,YAAY3/B,EAAEy/B,WAAW,CAAC,EAAja,qBAAqBG,OAAOA,MAAMC,wBAAwB,SAAS7/B,EAAE4D,EAAEgS,EAAEzQ,GAAGy6B,MAAMC,yBAAwB,WAAW,OAAO95B,GAAE/F,EAAE4D,EAAM,GAAE,EAAEmC,IACtK,SAAS+5B,GAAG/5B,EAAE/F,GAAG,GAAGA,EAAE,CAAC,IAAI4D,EAAEmC,EAAE05B,WAAW,GAAG77B,GAAGA,IAAImC,EAAEg6B,WAAW,IAAIn8B,EAAEo8B,SAAwB,YAAdp8B,EAAEq8B,UAAUjgC,EAAS,CAAC+F,EAAEg5B,YAAY/+B,CAAC,CACtH,IAAIkgC,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG/8B,EAAE/F,EAAE4D,GAAG,OAAO,MAAM5D,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAG4D,GAAG,kBAAkB5D,GAAG,IAAIA,GAAGkgC,GAAGxpB,eAAe3Q,IAAIm6B,GAAGn6B,IAAI,GAAG/F,GAAG8G,OAAO9G,EAAE,IAAI,CACla,SAAS+iC,GAAGh9B,EAAE/F,GAAa,IAAI,IAAI4D,KAAlBmC,EAAEA,EAAEi9B,MAAmBhjC,EAAE,GAAGA,EAAE0W,eAAe9S,GAAG,CAAC,IAAIgS,EAAE,IAAIhS,EAAEjH,QAAQ,MAAMwI,EAAE29B,GAAGl/B,EAAE5D,EAAE4D,GAAGgS,GAAG,UAAUhS,IAAIA,EAAE,YAAYgS,EAAE7P,EAAEk9B,YAAYr/B,EAAEuB,GAAGY,EAAEnC,GAAGuB,CAAC,CAAC,CADXlI,OAAOoX,KAAK6rB,IAAIxW,SAAQ,SAAS3jB,GAAG88B,GAAGnZ,SAAQ,SAAS1pB,GAAGA,EAAEA,EAAE+F,EAAEm9B,OAAO,GAAG5J,cAAcvzB,EAAEwU,UAAU,GAAG2lB,GAAGlgC,GAAGkgC,GAAGn6B,EAAE,GAAE,IACzG,IAAIo9B,GAAGvhC,EAAE,CAACwhC,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGhmC,OAAM,EAAGimC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGta,QAAO,EAAGua,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGn+B,EAAE/F,GAAG,GAAGA,EAAE,CAAC,GAAGmjC,GAAGp9B,KAAK,MAAM/F,EAAEm+B,UAAU,MAAMn+B,EAAE2+B,yBAAyB,MAAMjiC,MAAMuJ,EAAE,IAAIF,IAAI,GAAG,MAAM/F,EAAE2+B,wBAAwB,CAAC,GAAG,MAAM3+B,EAAEm+B,SAAS,MAAMzhC,MAAMuJ,EAAE,KAAK,GAAK,kBAAkBjG,EAAE2+B,2BAAyB,WAAW3+B,EAAE2+B,yBAAyB,MAAMjiC,MAAMuJ,EAAE,IAAK,CAAC,GAAG,MAAMjG,EAAEgjC,OAAO,kBAAkBhjC,EAAEgjC,MAAM,MAAMtmC,MAAMuJ,EAAE,IAAK,CAAC,CAClW,SAASk+B,GAAGp+B,EAAE/F,GAAG,IAAI,IAAI+F,EAAEpJ,QAAQ,KAAK,MAAM,kBAAkBqD,EAAEokC,GAAG,OAAOr+B,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASs+B,GAAGt+B,GAA6F,OAA1FA,EAAEA,EAAEgB,QAAQhB,EAAEu+B,YAAY7sB,QAAS8sB,0BAA0Bx+B,EAAEA,EAAEw+B,yBAAgC,IAAIx+B,EAAEi6B,SAASj6B,EAAEy+B,WAAWz+B,CAAC,CAAC,IAAI0+B,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAG7+B,GAAG,GAAGA,EAAE8+B,GAAG9+B,GAAG,CAAC,GAAG,oBAAoB0+B,GAAG,MAAM/nC,MAAMuJ,EAAE,MAAM,IAAIjG,EAAE+F,EAAE++B,UAAU9kC,IAAIA,EAAE+kC,GAAG/kC,GAAGykC,GAAG1+B,EAAE++B,UAAU/+B,EAAE3F,KAAKJ,GAAG,CAAC,CAAC,SAASglC,GAAGj/B,GAAG2+B,GAAGC,GAAGA,GAAGxoC,KAAK4J,GAAG4+B,GAAG,CAAC5+B,GAAG2+B,GAAG3+B,CAAC,CAAC,SAASk/B,KAAK,GAAGP,GAAG,CAAC,IAAI3+B,EAAE2+B,GAAG1kC,EAAE2kC,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG7+B,GAAM/F,EAAE,IAAI+F,EAAE,EAAEA,EAAE/F,EAAElE,OAAOiK,IAAI6+B,GAAG5kC,EAAE+F,GAAG,CAAC,CAAC,SAASm/B,GAAGn/B,EAAE/F,GAAG,OAAO+F,EAAE/F,EAAE,CAAC,SAASmlC,GAAGp/B,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,OAAOY,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAE,CAAC,SAASigC,KAAK,CAAC,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOd,IAAI,OAAOC,KAAGS,KAAKH,KAAI,CAEla,SAASQ,GAAG1/B,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAE++B,UAAU,GAAG,OAAOlhC,EAAE,OAAO,KAAK,IAAIgS,EAAEmvB,GAAGnhC,GAAG,GAAG,OAAOgS,EAAE,OAAO,KAAKhS,EAAEgS,EAAE5V,GAAG+F,EAAE,OAAO/F,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgB4V,GAAGA,EAAE6oB,YAAqB7oB,IAAI,YAAb7P,EAAEA,EAAE3F,OAAuB,UAAU2F,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG6P,EAAE,MAAM7P,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGnC,GAAG,oBACleA,EAAE,MAAMlH,MAAMuJ,EAAE,IAAIjG,SAAS4D,IAAI,OAAOA,CAAC,CAAC,IAAI8hC,IAAG,EAAG,GAAGxN,EAAG,IAAI,IAAIyN,GAAG,CAAC,EAAE1oC,OAAOsI,eAAeogC,GAAG,UAAU,CAAClgC,IAAI,WAAWigC,IAAG,CAAE,IAAIjuB,OAAO1E,iBAAiB,OAAO4yB,GAAGA,IAAIluB,OAAOxE,oBAAoB,OAAO0yB,GAAGA,GAAG,CAAC,MAAM5/B,IAAG2/B,IAAG,CAAE,CAAC,SAASE,GAAG7/B,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,EAAEC,EAAEmD,EAAED,GAAG,IAAInb,EAAElkB,MAAMU,UAAUW,MAAMD,KAAKiD,UAAU,GAAG,IAAIb,EAAE6E,MAAMjB,EAAE8c,EAAE,CAAC,MAAM/e,GAAGR,KAAK0kC,QAAQlkC,EAAE,CAAC,CAAC,IAAImkC,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAAS9/B,GAAG+/B,IAAG,EAAGC,GAAGhgC,CAAC,GAAG,SAASogC,GAAGpgC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,EAAEC,EAAEmD,EAAED,GAAGiK,IAAG,EAAGC,GAAG,KAAKH,GAAG/gC,MAAMqhC,GAAGrlC,UAAU,CACjW,SAASulC,GAAGrgC,GAAG,IAAI/F,EAAE+F,EAAEnC,EAAEmC,EAAE,GAAGA,EAAEsgC,UAAU,KAAKrmC,EAAEsmC,QAAQtmC,EAAEA,EAAEsmC,WAAW,CAACvgC,EAAE/F,EAAE,GAAO,KAAa,MAAjBA,EAAE+F,GAAS2K,SAAc9M,EAAE5D,EAAEsmC,QAAQvgC,EAAE/F,EAAEsmC,aAAavgC,EAAE,CAAC,OAAO,IAAI/F,EAAEi8B,IAAIr4B,EAAE,IAAI,CAAC,SAAS2iC,GAAGxgC,GAAG,GAAG,KAAKA,EAAEk2B,IAAI,CAAC,IAAIj8B,EAAE+F,EAAEygC,cAAsE,GAAxD,OAAOxmC,IAAkB,QAAd+F,EAAEA,EAAEsgC,aAAqBrmC,EAAE+F,EAAEygC,gBAAmB,OAAOxmC,EAAE,OAAOA,EAAEymC,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAG3gC,GAAG,GAAGqgC,GAAGrgC,KAAKA,EAAE,MAAMrJ,MAAMuJ,EAAE,KAAM,CAE1S,SAAS0gC,GAAG5gC,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAI/F,EAAE+F,EAAEsgC,UAAU,IAAIrmC,EAAE,CAAS,GAAG,QAAXA,EAAEomC,GAAGrgC,IAAe,MAAMrJ,MAAMuJ,EAAE,MAAM,OAAOjG,IAAI+F,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAInC,EAAEmC,EAAE6P,EAAE5V,IAAI,CAAC,IAAImF,EAAEvB,EAAE0iC,OAAO,GAAG,OAAOnhC,EAAE,MAAM,IAAIuzB,EAAEvzB,EAAEkhC,UAAU,GAAG,OAAO3N,EAAE,CAAY,GAAG,QAAd9iB,EAAEzQ,EAAEmhC,QAAmB,CAAC1iC,EAAEgS,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGzQ,EAAEyhC,QAAQlO,EAAEkO,MAAM,CAAC,IAAIlO,EAAEvzB,EAAEyhC,MAAMlO,GAAG,CAAC,GAAGA,IAAI90B,EAAE,OAAO8iC,GAAGvhC,GAAGY,EAAE,GAAG2yB,IAAI9iB,EAAE,OAAO8wB,GAAGvhC,GAAGnF,EAAE04B,EAAEA,EAAEmO,OAAO,CAAC,MAAMnqC,MAAMuJ,EAAE,KAAM,CAAC,GAAGrC,EAAE0iC,SAAS1wB,EAAE0wB,OAAO1iC,EAAEuB,EAAEyQ,EAAE8iB,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGmD,EAAE32B,EAAEyhC,MAAM9K,GAAG,CAAC,GAAGA,IAAIl4B,EAAE,CAAC+0B,GAAE,EAAG/0B,EAAEuB,EAAEyQ,EAAE8iB,EAAE,KAAK,CAAC,GAAGoD,IAAIlmB,EAAE,CAAC+iB,GAAE,EAAG/iB,EAAEzQ,EAAEvB,EAAE80B,EAAE,KAAK,CAACoD,EAAEA,EAAE+K,OAAO,CAAC,IAAIlO,EAAE,CAAC,IAAImD,EAAEpD,EAAEkO,MAAM9K,GAAG,CAAC,GAAGA,IAC5fl4B,EAAE,CAAC+0B,GAAE,EAAG/0B,EAAE80B,EAAE9iB,EAAEzQ,EAAE,KAAK,CAAC,GAAG22B,IAAIlmB,EAAE,CAAC+iB,GAAE,EAAG/iB,EAAE8iB,EAAE90B,EAAEuB,EAAE,KAAK,CAAC22B,EAAEA,EAAE+K,OAAO,CAAC,IAAIlO,EAAE,MAAMj8B,MAAMuJ,EAAE,KAAM,CAAC,CAAC,GAAGrC,EAAEyiC,YAAYzwB,EAAE,MAAMlZ,MAAMuJ,EAAE,KAAM,CAAC,GAAG,IAAIrC,EAAEq4B,IAAI,MAAMv/B,MAAMuJ,EAAE,MAAM,OAAOrC,EAAEkhC,UAAUhe,UAAUljB,EAAEmC,EAAE/F,CAAC,CAAkB8mC,CAAG/gC,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAI/F,EAAE+F,IAAI,CAAC,GAAG,IAAI/F,EAAEi8B,KAAK,IAAIj8B,EAAEi8B,IAAI,OAAOj8B,EAAE,GAAGA,EAAE4mC,MAAM5mC,EAAE4mC,MAAMN,OAAOtmC,EAAEA,EAAEA,EAAE4mC,UAAU,CAAC,GAAG5mC,IAAI+F,EAAE,MAAM,MAAM/F,EAAE6mC,SAAS,CAAC,IAAI7mC,EAAEsmC,QAAQtmC,EAAEsmC,SAASvgC,EAAE,OAAO,KAAK/F,EAAEA,EAAEsmC,MAAM,CAACtmC,EAAE6mC,QAAQP,OAAOtmC,EAAEsmC,OAAOtmC,EAAEA,EAAE6mC,OAAO,CAAC,CAAC,OAAO,IAAI,CAChd,SAASE,GAAGhhC,EAAE/F,GAAG,IAAI,IAAI4D,EAAEmC,EAAEsgC,UAAU,OAAOrmC,GAAG,CAAC,GAAGA,IAAI+F,GAAG/F,IAAI4D,EAAE,OAAM,EAAG5D,EAAEA,EAAEsmC,MAAM,CAAC,OAAM,CAAE,CAAC,IAAIU,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,IAAIC,GAAG,IAAID,IAAIE,GAAG,GAAGC,GAAG,6PAA6Pr5B,MAAM,KACrb,SAASs5B,GAAG/hC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,MAAM,CAAC4iC,UAAUhiC,EAAEiiC,aAAahoC,EAAEioC,iBAAmB,GAAFrkC,EAAKskC,YAAY/iC,EAAEgjC,iBAAiB,CAACvyB,GAAG,CAAC,SAASwyB,GAAGriC,EAAE/F,GAAG,OAAO+F,GAAG,IAAK,UAAU,IAAK,WAAWuhC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGY,OAAOroC,EAAEsoC,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBX,GAAGU,OAAOroC,EAAEsoC,WAAW,CACta,SAASC,GAAGxiC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,OAAG,OAAO3yB,GAAGA,EAAEmiC,cAAcxP,GAAS3yB,EAAE+hC,GAAG9nC,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,OAAO14B,IAAY,QAARA,EAAE6kC,GAAG7kC,KAAainC,GAAGjnC,IAAI+F,IAAEA,EAAEkiC,kBAAkBryB,EAAE5V,EAAE+F,EAAEoiC,iBAAiB,OAAOhjC,IAAI,IAAInF,EAAErD,QAAQwI,IAAInF,EAAE7D,KAAKgJ,GAAUY,EAAC,CAE/M,SAASyiC,GAAGziC,GAAG,IAAI/F,EAAEyoC,GAAG1iC,EAAEgB,QAAQ,GAAG,OAAO/G,EAAE,CAAC,IAAI4D,EAAEwiC,GAAGpmC,GAAG,GAAG,OAAO4D,EAAE,GAAW,MAAR5D,EAAE4D,EAAEq4B,MAAY,GAAW,QAARj8B,EAAEumC,GAAG3iC,IAAmH,OAAtGmC,EAAEgiC,UAAU/nC,OAAEmnC,GAAGphC,EAAE2iC,cAAa,WAAWhR,EAAEiR,yBAAyB5iC,EAAE6iC,UAAS,WAAW1B,GAAGtjC,EAAE,GAAE,SAAgB,GAAG,IAAI5D,GAAG4D,EAAEkhC,UAAU+D,QAA8D,YAArD9iC,EAAEgiC,UAAU,IAAInkC,EAAEq4B,IAAIr4B,EAAEkhC,UAAUgE,cAAc,KAAY,CAAC/iC,EAAEgiC,UAAU,IAAI,CAC9U,SAASgB,GAAGhjC,GAAG,GAAG,OAAOA,EAAEgiC,UAAU,OAAM,EAAG,IAAI,IAAI/nC,EAAE+F,EAAEoiC,iBAAiB,EAAEnoC,EAAElE,QAAQ,CAAC,IAAI8H,EAAEolC,GAAGjjC,EAAEiiC,aAAajiC,EAAEkiC,iBAAiBjoC,EAAE,GAAG+F,EAAEmiC,aAAa,GAAG,OAAOtkC,EAAE,OAAe,QAAR5D,EAAE6kC,GAAGjhC,KAAaqjC,GAAGjnC,GAAG+F,EAAEgiC,UAAUnkC,GAAE,EAAG5D,EAAE8T,OAAO,CAAC,OAAM,CAAE,CAAC,SAASm1B,GAAGljC,EAAE/F,EAAE4D,GAAGmlC,GAAGhjC,IAAInC,EAAEykC,OAAOroC,EAAE,CAC3Q,SAASkpC,KAAK,IAAI9B,IAAG,EAAG,EAAEC,GAAGvrC,QAAQ,CAAC,IAAIiK,EAAEshC,GAAG,GAAG,GAAG,OAAOthC,EAAEgiC,UAAU,CAAmB,QAAlBhiC,EAAE8+B,GAAG9+B,EAAEgiC,aAAqBf,GAAGjhC,GAAG,KAAK,CAAC,IAAI,IAAI/F,EAAE+F,EAAEoiC,iBAAiB,EAAEnoC,EAAElE,QAAQ,CAAC,IAAI8H,EAAEolC,GAAGjjC,EAAEiiC,aAAajiC,EAAEkiC,iBAAiBjoC,EAAE,GAAG+F,EAAEmiC,aAAa,GAAG,OAAOtkC,EAAE,CAACmC,EAAEgiC,UAAUnkC,EAAE,KAAK,CAAC5D,EAAE8T,OAAO,CAAC,OAAO/N,EAAEgiC,WAAWV,GAAGvzB,OAAO,CAAC,OAAOwzB,IAAIyB,GAAGzB,MAAMA,GAAG,MAAM,OAAOC,IAAIwB,GAAGxB,MAAMA,GAAG,MAAM,OAAOC,IAAIuB,GAAGvB,MAAMA,GAAG,MAAMC,GAAG/d,QAAQuf,IAAItB,GAAGje,QAAQuf,GAAG,CACxZ,SAASE,GAAGpjC,EAAE/F,GAAG+F,EAAEgiC,YAAY/nC,IAAI+F,EAAEgiC,UAAU,KAAKX,KAAKA,IAAG,EAAG1P,EAAE0R,0BAA0B1R,EAAE2R,wBAAwBH,KAAK,CAC1H,SAASI,GAAGvjC,GAAG,SAAS/F,EAAEA,GAAG,OAAOmpC,GAAGnpC,EAAE+F,EAAE,CAAC,GAAG,EAAEshC,GAAGvrC,OAAO,CAACqtC,GAAG9B,GAAG,GAAGthC,GAAG,IAAI,IAAInC,EAAE,EAAEA,EAAEyjC,GAAGvrC,OAAO8H,IAAI,CAAC,IAAIgS,EAAEyxB,GAAGzjC,GAAGgS,EAAEmyB,YAAYhiC,IAAI6P,EAAEmyB,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOT,IAAI6B,GAAG7B,GAAGvhC,GAAG,OAAOwhC,IAAI4B,GAAG5B,GAAGxhC,GAAG,OAAOyhC,IAAI2B,GAAG3B,GAAGzhC,GAAG0hC,GAAG/d,QAAQ1pB,GAAG2nC,GAAGje,QAAQ1pB,GAAO4D,EAAE,EAAEA,EAAEgkC,GAAG9rC,OAAO8H,KAAIgS,EAAEgyB,GAAGhkC,IAAKmkC,YAAYhiC,IAAI6P,EAAEmyB,UAAU,MAAM,KAAK,EAAEH,GAAG9rC,QAAiB,QAAR8H,EAAEgkC,GAAG,IAAYG,WAAYS,GAAG5kC,GAAG,OAAOA,EAAEmkC,WAAWH,GAAG9zB,OAAO,CACtY,SAASy1B,GAAGxjC,EAAE/F,GAAG,IAAI4D,EAAE,CAAC,EAAiF,OAA/EA,EAAEmC,EAAE9E,eAAejB,EAAEiB,cAAc2C,EAAE,SAASmC,GAAG,SAAS/F,EAAE4D,EAAE,MAAMmC,GAAG,MAAM/F,EAAS4D,CAAC,CAAC,IAAI4lC,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGhkC,GAAG,GAAG8jC,GAAG9jC,GAAG,OAAO8jC,GAAG9jC,GAAG,IAAIyjC,GAAGzjC,GAAG,OAAOA,EAAE,IAAYnC,EAAR5D,EAAEwpC,GAAGzjC,GAAK,IAAInC,KAAK5D,EAAE,GAAGA,EAAE0W,eAAe9S,IAAIA,KAAKkmC,GAAG,OAAOD,GAAG9jC,GAAG/F,EAAE4D,GAAG,OAAOmC,CAAC,CAA/XmyB,IAAK4R,GAAG3R,SAASC,cAAc,OAAO4K,MAAM,mBAAmBvrB,gBAAgB+xB,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBvyB,eAAe+xB,GAAGI,cAAcK,YACxO,IAAIC,GAAGH,GAAG,gBAAgBI,GAAGJ,GAAG,sBAAsBK,GAAGL,GAAG,kBAAkBM,GAAGN,GAAG,iBAAiBO,GAAG,IAAI5C,IAAI6C,GAAG,IAAI7C,IAAI8C,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAG1kC,EAAE/F,GAAG,IAAI,IAAI4D,EAAE,EAAEA,EAAEmC,EAAEjK,OAAO8H,GAAG,EAAE,CAAC,IAAIgS,EAAE7P,EAAEnC,GAAGuB,EAAEY,EAAEnC,EAAE,GAAGuB,EAAE,MAAMA,EAAE,GAAGm0B,cAAcn0B,EAAEtH,MAAM,IAAI0sC,GAAGlkC,IAAIuP,EAAE5V,GAAGsqC,GAAGjkC,IAAIuP,EAAEzQ,GAAG4yB,EAAG5yB,EAAE,CAACyQ,GAAG,CAAC,EAAuB80B,EAAfhT,EAAEiT,gBAAkB,IAAIC,GAAE,EAC/X,SAASC,GAAG9kC,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAO6kC,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE7kC,GAAG,OAAO6kC,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE7kC,GAAG,OAAO6kC,GAAE,GAAG,EAAE,IAAI5qC,EAAE,GAAG+F,EAAE,OAAG,IAAI/F,GAAS4qC,GAAE,GAAG5qC,GAAK,KAAO,GAAF+F,IAAa6kC,GAAE,GAAG,IAAc,KAAX5qC,EAAE,IAAI+F,IAAkB6kC,GAAE,GAAG5qC,GAAK,KAAO,IAAF+F,IAAc6kC,GAAE,EAAE,KAAgB,KAAZ5qC,EAAE,KAAK+F,IAAkB6kC,GAAE,EAAE5qC,GAAK,KAAO,KAAF+F,IAAe6kC,GAAE,EAAE,MAAoB,KAAf5qC,EAAE,QAAQ+F,IAAkB6kC,GAAE,EAAE5qC,GAAkB,KAAhBA,EAAE,SAAS+F,IAAkB6kC,GAAE,EAAE5qC,GAAO,SAAF+F,GAAkB6kC,GAAE,EAAE,UAAY,KAAO,UAAF7kC,IAAoB6kC,GAAE,EAAE,WAA2B,KAAjB5qC,EAAE,UAAU+F,IAAkB6kC,GAAE,EAAE5qC,GAAK,KAAK,WAAW+F,IAAU6kC,GAAE,EAAE,aACjfA,GAAE,EAAS7kC,EAAC,CACZ,SAAS+kC,GAAG/kC,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAEglC,aAAa,GAAG,IAAInnC,EAAE,OAAOgnC,GAAE,EAAE,IAAIh1B,EAAE,EAAEzQ,EAAE,EAAEuzB,EAAE3yB,EAAEilC,aAAarS,EAAE5yB,EAAEklC,eAAenP,EAAE/1B,EAAEmlC,YAAY,GAAG,IAAIxS,EAAE9iB,EAAE8iB,EAAEvzB,EAAEylC,GAAE,QAAQ,GAAiB,KAAdlS,EAAI,UAAF90B,GAAkB,CAAC,IAAIi4B,EAAEnD,GAAGC,EAAE,IAAIkD,GAAGjmB,EAAEi1B,GAAGhP,GAAG12B,EAAEylC,IAAS,KAAL9O,GAAGpD,KAAU9iB,EAAEi1B,GAAG/O,GAAG32B,EAAEylC,GAAG,MAAa,KAAPlS,EAAE90B,GAAG+0B,IAAS/iB,EAAEi1B,GAAGnS,GAAGvzB,EAAEylC,IAAG,IAAI9O,IAAIlmB,EAAEi1B,GAAG/O,GAAG32B,EAAEylC,IAAG,GAAG,IAAIh1B,EAAE,OAAO,EAAqC,GAAxBA,EAAEhS,IAAI,GAAjBgS,EAAE,GAAGu1B,GAAGv1B,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAI5V,GAAGA,IAAI4V,GAAG,KAAK5V,EAAE24B,GAAG,CAAO,GAANkS,GAAG7qC,GAAMmF,GAAGylC,GAAE,OAAO5qC,EAAE4qC,GAAEzlC,CAAC,CAAoB,GAAG,KAAtBnF,EAAE+F,EAAEqlC,gBAAwB,IAAIrlC,EAAEA,EAAEslC,cAAcrrC,GAAG4V,EAAE,EAAE5V,GAAcmF,EAAE,IAAbvB,EAAE,GAAGunC,GAAGnrC,IAAU4V,GAAG7P,EAAEnC,GAAG5D,IAAImF,EAAE,OAAOyQ,CAAC,CAC3e,SAAS01B,GAAGvlC,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEglC,cAAsChlC,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASwlC,GAAGxlC,EAAE/F,GAAG,OAAO+F,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEylC,GAAG,IAAIxrC,IAASurC,GAAG,GAAGvrC,GAAG+F,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEylC,GAAG,KAAKxrC,IAASurC,GAAG,EAAEvrC,GAAG+F,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEylC,GAAG,MAAMxrC,MAA4B,KAAjB+F,EAAEylC,GAAG,SAASxrC,MAAW+F,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnB/F,EAAEwrC,GAAG,WAAWxrC,MAAWA,EAAE,WAAWA,EAAE,MAAMtD,MAAMuJ,EAAE,IAAIF,GAAI,CAAC,SAASylC,GAAGzlC,GAAG,OAAOA,GAAGA,CAAC,CAAC,SAAS0lC,GAAG1lC,GAAG,IAAI,IAAI/F,EAAE,GAAG4D,EAAE,EAAE,GAAGA,EAAEA,IAAI5D,EAAE7D,KAAK4J,GAAG,OAAO/F,CAAC,CACtd,SAAS0rC,GAAG3lC,EAAE/F,EAAE4D,GAAGmC,EAAEglC,cAAc/qC,EAAE,IAAI4V,EAAE5V,EAAE,EAAE+F,EAAEklC,gBAAgBr1B,EAAE7P,EAAEmlC,aAAat1B,GAAE7P,EAAEA,EAAE4lC,YAAW3rC,EAAE,GAAGmrC,GAAGnrC,IAAQ4D,CAAC,CAAC,IAAIunC,GAAGnnC,KAAK4nC,MAAM5nC,KAAK4nC,MAAiC,SAAY7lC,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAI8lC,GAAG9lC,GAAG+lC,GAAG,GAAG,CAAC,EAAxED,GAAG7nC,KAAKgS,IAAI81B,GAAG9nC,KAAKiS,IAAqD,IAAI81B,GAAGrU,EAAEsU,8BAA8BC,GAAGvU,EAAEiR,yBAAyBuD,IAAG,EAAG,SAASC,GAAGpmC,EAAE/F,EAAE4D,EAAEgS,GAAG0vB,IAAIF,KAAK,IAAIjgC,EAAEinC,GAAG1T,EAAE4M,GAAGA,IAAG,EAAG,IAAIH,GAAGhgC,EAAEY,EAAE/F,EAAE4D,EAAEgS,EAAE,CAAC,SAAS0vB,GAAG5M,IAAI8M,IAAI,CAAC,CAAC,SAAS6G,GAAGtmC,EAAE/F,EAAE4D,EAAEgS,GAAGq2B,GAAGF,GAAGK,GAAG55B,KAAK,KAAKzM,EAAE/F,EAAE4D,EAAEgS,GAAG,CACpb,SAASw2B,GAAGrmC,EAAE/F,EAAE4D,EAAEgS,GAAU,IAAIzQ,EAAX,GAAG+mC,GAAU,IAAI/mC,EAAE,KAAO,EAAFnF,KAAO,EAAEqnC,GAAGvrC,SAAS,EAAE+rC,GAAGlrC,QAAQoJ,GAAGA,EAAE+hC,GAAG,KAAK/hC,EAAE/F,EAAE4D,EAAEgS,GAAGyxB,GAAGlrC,KAAK4J,OAAO,CAAC,IAAI2yB,EAAEsQ,GAAGjjC,EAAE/F,EAAE4D,EAAEgS,GAAG,GAAG,OAAO8iB,EAAEvzB,GAAGijC,GAAGriC,EAAE6P,OAAO,CAAC,GAAGzQ,EAAE,CAAC,IAAI,EAAE0iC,GAAGlrC,QAAQoJ,GAA+B,OAA3BA,EAAE+hC,GAAGpP,EAAE3yB,EAAE/F,EAAE4D,EAAEgS,QAAGyxB,GAAGlrC,KAAK4J,GAAU,GAfhO,SAAYA,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,OAAOnF,GAAG,IAAK,UAAU,OAAOsnC,GAAGiB,GAAGjB,GAAGvhC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,IAAG,EAAG,IAAK,YAAY,OAAOoiC,GAAGgB,GAAGhB,GAAGxhC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,IAAG,EAAG,IAAK,YAAY,OAAOqiC,GAAGe,GAAGf,GAAGzhC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,IAAG,EAAG,IAAK,cAAc,IAAIuzB,EAAEvzB,EAAEmjC,UAAkD,OAAxCb,GAAGphC,IAAIqyB,EAAE6P,GAAGd,GAAGhiC,IAAIizB,IAAI,KAAK3yB,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,KAAU,EAAG,IAAK,oBAAoB,OAAOuzB,EAAEvzB,EAAEmjC,UAAUX,GAAGthC,IAAIqyB,EAAE6P,GAAGZ,GAAGliC,IAAIizB,IAAI,KAAK3yB,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,KAAI,EAAG,OAAM,CAAE,CAehImnC,CAAG5T,EAAE3yB,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAOwyB,GAAGriC,EAAE6P,EAAE,CAAC22B,GAAGxmC,EAAE/F,EAAE4V,EAAE,KAAKhS,EAAE,CAAC,CAAE,CACnR,SAASolC,GAAGjjC,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEk/B,GAAGzuB,GAAW,GAAG,QAAXzQ,EAAEsjC,GAAGtjC,IAAe,CAAC,IAAIuzB,EAAE0N,GAAGjhC,GAAG,GAAG,OAAOuzB,EAAEvzB,EAAE,SAAS,CAAC,IAAIwzB,EAAED,EAAEuD,IAAI,GAAG,KAAKtD,EAAE,CAAS,GAAG,QAAXxzB,EAAEohC,GAAG7N,IAAe,OAAOvzB,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIwzB,EAAE,CAAC,GAAGD,EAAEoM,UAAU+D,QAAQ,OAAO,IAAInQ,EAAEuD,IAAIvD,EAAEoM,UAAUgE,cAAc,KAAK3jC,EAAE,IAAI,MAAMuzB,IAAIvzB,IAAIA,EAAE,KAAK,CAAC,CAAe,OAAdonC,GAAGxmC,EAAE/F,EAAE4V,EAAEzQ,EAAEvB,GAAU,IAAI,CAAC,IAAI4oC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACzT,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI3mC,EAAkB6P,EAAhB5V,EAAEysC,GAAG7oC,EAAE5D,EAAElE,OAASqJ,EAAE,UAAUqnC,GAAGA,GAAGhvC,MAAMgvC,GAAGzN,YAAYrG,EAAEvzB,EAAErJ,OAAO,IAAIiK,EAAE,EAAEA,EAAEnC,GAAG5D,EAAE+F,KAAKZ,EAAEY,GAAGA,KAAK,IAAI4yB,EAAE/0B,EAAEmC,EAAE,IAAI6P,EAAE,EAAEA,GAAG+iB,GAAG34B,EAAE4D,EAAEgS,KAAKzQ,EAAEuzB,EAAE9iB,GAAGA,KAAK,OAAO82B,GAAGvnC,EAAEtH,MAAMkI,EAAE,EAAE6P,EAAE,EAAEA,OAAE,EAAO,CAAC,SAASg3B,GAAG7mC,GAAG,IAAI/F,EAAE+F,EAAE8mC,QAA+E,MAAvE,aAAa9mC,EAAgB,KAAbA,EAAEA,EAAE+mC,WAAgB,KAAK9sC,IAAI+F,EAAE,IAAKA,EAAE/F,EAAE,KAAK+F,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAASgnC,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CACnY,SAASC,GAAGlnC,GAAG,SAAS/F,EAAEA,EAAE4V,EAAEzQ,EAAEuzB,EAAEC,GAA6G,IAAI,IAAI/0B,KAAlHzC,KAAK+rC,WAAWltC,EAAEmB,KAAKgsC,YAAYhoC,EAAEhE,KAAKf,KAAKwV,EAAEzU,KAAK+mC,YAAYxP,EAAEv3B,KAAK4F,OAAO4xB,EAAEx3B,KAAKisC,cAAc,KAAkBrnC,EAAEA,EAAE2Q,eAAe9S,KAAK5D,EAAE+F,EAAEnC,GAAGzC,KAAKyC,GAAG5D,EAAEA,EAAE04B,GAAGA,EAAE90B,IAAgI,OAA5HzC,KAAKksC,oBAAoB,MAAM3U,EAAE4U,iBAAiB5U,EAAE4U,kBAAiB,IAAK5U,EAAE6U,aAAaR,GAAGC,GAAG7rC,KAAKqsC,qBAAqBR,GAAU7rC,IAAI,CAC9E,OAD+ES,EAAE5B,EAAE9C,UAAU,CAACuwC,eAAe,WAAWtsC,KAAKmsC,kBAAiB,EAAG,IAAIvnC,EAAE5E,KAAK+mC,YAAYniC,IAAIA,EAAE0nC,eAAe1nC,EAAE0nC,iBAAiB,mBAAmB1nC,EAAEwnC,cAC7exnC,EAAEwnC,aAAY,GAAIpsC,KAAKksC,mBAAmBN,GAAG,EAAEW,gBAAgB,WAAW,IAAI3nC,EAAE5E,KAAK+mC,YAAYniC,IAAIA,EAAE2nC,gBAAgB3nC,EAAE2nC,kBAAkB,mBAAmB3nC,EAAE4nC,eAAe5nC,EAAE4nC,cAAa,GAAIxsC,KAAKqsC,qBAAqBT,GAAG,EAAEa,QAAQ,WAAW,EAAEC,aAAad,KAAY/sC,CAAC,CACjR,IAAoL8tC,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAAStoC,GAAG,OAAOA,EAAEsoC,WAAWC,KAAKC,KAAK,EAAEjB,iBAAiB,EAAEkB,UAAU,GAAGC,GAAGxB,GAAGgB,IAAIS,GAAG9sC,EAAE,CAAC,EAAEqsC,GAAG,CAACU,KAAK,EAAEC,OAAO,IAAIC,GAAG5B,GAAGyB,IAAaI,GAAGltC,EAAE,CAAC,EAAE8sC,GAAG,CAACK,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAAS9pC,GAAG,YAAO,IAASA,EAAE8pC,cAAc9pC,EAAE+pC,cAAc/pC,EAAEu+B,WAAWv+B,EAAEgqC,UAAUhqC,EAAE+pC,YAAY/pC,EAAE8pC,aAAa,EAAEG,UAAU,SAASjqC,GAAG,MAAG,cAC3eA,EAASA,EAAEiqC,WAAUjqC,IAAIioC,KAAKA,IAAI,cAAcjoC,EAAE3F,MAAM0tC,GAAG/nC,EAAEgpC,QAAQf,GAAGe,QAAQhB,GAAGhoC,EAAEipC,QAAQhB,GAAGgB,SAASjB,GAAGD,GAAG,EAAEE,GAAGjoC,GAAU+nC,GAAE,EAAEmC,UAAU,SAASlqC,GAAG,MAAM,cAAcA,EAAEA,EAAEkqC,UAAUlC,EAAE,IAAImC,GAAGjD,GAAG6B,IAAiCqB,GAAGlD,GAA7BrrC,EAAE,CAAC,EAAEktC,GAAG,CAACsB,aAAa,KAA4CC,GAAGpD,GAA9BrrC,EAAE,CAAC,EAAE8sC,GAAG,CAACmB,cAAc,KAA0ES,GAAGrD,GAA5DrrC,EAAE,CAAC,EAAEqsC,GAAG,CAACsC,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG9uC,EAAE,CAAC,EAAEqsC,GAAG,CAAC0C,cAAc,SAAS5qC,GAAG,MAAM,kBAAkBA,EAAEA,EAAE4qC,cAAcl5B,OAAOk5B,aAAa,IAAIC,GAAG3D,GAAGyD,IAAyBG,GAAG5D,GAArBrrC,EAAE,CAAC,EAAEqsC,GAAG,CAAC3tC,KAAK,KAAcwwC,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGlsC,GAAG,IAAI/F,EAAEmB,KAAK+mC,YAAY,OAAOloC,EAAEyvC,iBAAiBzvC,EAAEyvC,iBAAiB1pC,MAAIA,EAAE6rC,GAAG7rC,OAAM/F,EAAE+F,EAAK,CAAC,SAAS2pC,KAAK,OAAOuC,EAAE,CAChS,IAAIC,GAAGtwC,EAAE,CAAC,EAAE8sC,GAAG,CAACt6B,IAAI,SAASrO,GAAG,GAAGA,EAAEqO,IAAI,CAAC,IAAIpU,EAAE8wC,GAAG/qC,EAAEqO,MAAMrO,EAAEqO,IAAI,GAAG,iBAAiBpU,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAa+F,EAAE3F,KAAc,MAAR2F,EAAE6mC,GAAG7mC,IAAU,QAAQ1D,OAAOuC,aAAamB,GAAI,YAAYA,EAAE3F,MAAM,UAAU2F,EAAE3F,KAAKuxC,GAAG5rC,EAAE8mC,UAAU,eAAe,EAAE,EAAEpwC,KAAK,EAAE01C,SAAS,EAAE9C,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAE4C,OAAO,EAAEC,OAAO,EAAE5C,iBAAiBC,GAAG5C,SAAS,SAAS/mC,GAAG,MAAM,aAAaA,EAAE3F,KAAKwsC,GAAG7mC,GAAG,CAAC,EAAE8mC,QAAQ,SAAS9mC,GAAG,MAAM,YAAYA,EAAE3F,MAAM,UAAU2F,EAAE3F,KAAK2F,EAAE8mC,QAAQ,CAAC,EAAEyF,MAAM,SAASvsC,GAAG,MAAM,aAC7eA,EAAE3F,KAAKwsC,GAAG7mC,GAAG,YAAYA,EAAE3F,MAAM,UAAU2F,EAAE3F,KAAK2F,EAAE8mC,QAAQ,CAAC,IAAI0F,GAAGtF,GAAGiF,IAAiIM,GAAGvF,GAA7HrrC,EAAE,CAAC,EAAEktC,GAAG,CAACxG,UAAU,EAAEmK,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGjG,GAArHrrC,EAAE,CAAC,EAAE8sC,GAAG,CAACyE,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAE9D,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0E4D,GAAGrG,GAA3DrrC,EAAE,CAAC,EAAEqsC,GAAG,CAACjV,aAAa,EAAEwX,YAAY,EAAEC,cAAc,KAAc8C,GAAG3xC,EAAE,CAAC,EAAEktC,GAAG,CAAC0E,OAAO,SAASztC,GAAG,MAAM,WAAWA,EAAEA,EAAEytC,OAAO,gBAAgBztC,GAAGA,EAAE0tC,YAAY,CAAC,EACnfC,OAAO,SAAS3tC,GAAG,MAAM,WAAWA,EAAEA,EAAE2tC,OAAO,gBAAgB3tC,GAAGA,EAAE4tC,YAAY,eAAe5tC,GAAGA,EAAE6tC,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAG9G,GAAGsG,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG/b,GAAI,qBAAqBzgB,OAAOy8B,GAAG,KAAKhc,GAAI,iBAAiBC,WAAW+b,GAAG/b,SAASgc,cAAc,IAAIC,GAAGlc,GAAI,cAAczgB,SAASy8B,GAAGG,GAAGnc,KAAM+b,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGjyC,OAAOuC,aAAa,IAAI2vC,IAAG,EAC1W,SAASC,GAAGzuC,EAAE/F,GAAG,OAAO+F,GAAG,IAAK,QAAQ,OAAO,IAAIiuC,GAAGr3C,QAAQqD,EAAE6sC,SAAS,IAAK,UAAU,OAAO,MAAM7sC,EAAE6sC,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAAS4H,GAAG1uC,GAAc,MAAM,kBAAjBA,EAAEA,EAAE6oC,SAAkC,SAAS7oC,EAAEA,EAAEzF,KAAK,IAAI,CAAC,IAAIo0C,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAGC,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGC,QAAO,EAAGC,UAAS,EAAGvnC,OAAM,EAAG0M,QAAO,EAAG86B,KAAI,EAAGC,MAAK,EAAGC,MAAK,EAAGC,KAAI,EAAGC,MAAK,GAAI,SAASC,GAAGzvC,GAAG,IAAI/F,EAAE+F,GAAGA,EAAE42B,UAAU52B,EAAE42B,SAAS17B,cAAc,MAAM,UAAUjB,IAAI20C,GAAG5uC,EAAE3F,MAAM,aAAaJ,CAAO,CAAC,SAASy1C,GAAG1vC,EAAE/F,EAAE4D,EAAEgS,GAAGovB,GAAGpvB,GAAsB,GAAnB5V,EAAE01C,GAAG11C,EAAE,aAAgBlE,SAAS8H,EAAE,IAAI6qC,GAAG,WAAW,SAAS,KAAK7qC,EAAEgS,GAAG7P,EAAE5J,KAAK,CAAC6lB,MAAMpe,EAAE4P,UAAUxT,IAAI,CAAC,IAAI21C,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG9vC,GAAG+vC,GAAG/vC,EAAE,EAAE,CAAC,SAASgwC,GAAGhwC,GAAe,GAAGm3B,EAAT8Y,GAAGjwC,IAAY,OAAOA,CAAC,CACpe,SAASkwC,GAAGlwC,EAAE/F,GAAG,GAAG,WAAW+F,EAAE,OAAO/F,CAAC,CAAC,IAAIk2C,IAAG,EAAG,GAAGhe,EAAG,CAAC,IAAIie,GAAG,GAAGje,EAAG,CAAC,IAAIke,GAAG,YAAYje,SAAS,IAAIie,GAAG,CAAC,IAAIC,GAAGle,SAASC,cAAc,OAAOie,GAAGxc,aAAa,UAAU,WAAWuc,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAMhe,SAASgc,cAAc,EAAEhc,SAASgc,aAAa,CAAC,SAASoC,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAG1wC,GAAG,GAAG,UAAUA,EAAEizB,cAAc+c,GAAGH,IAAI,CAAC,IAAI51C,EAAE,GAAyB,GAAtBy1C,GAAGz1C,EAAE41C,GAAG7vC,EAAEs+B,GAAGt+B,IAAIA,EAAE8vC,GAAMvQ,GAAGv/B,EAAE/F,OAAO,CAACslC,IAAG,EAAG,IAAIJ,GAAGn/B,EAAE/F,EAAE,CAAC,QAAQslC,IAAG,EAAGE,IAAI,CAAC,CAAC,CAAC,CAClf,SAASkR,GAAG3wC,EAAE/F,EAAE4D,GAAG,YAAYmC,GAAGwwC,KAAUX,GAAGhyC,GAAR+xC,GAAG31C,GAAU22C,YAAY,mBAAmBF,KAAK,aAAa1wC,GAAGwwC,IAAI,CAAC,SAASK,GAAG7wC,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOgwC,GAAGH,GAAG,CAAC,SAASiB,GAAG9wC,EAAE/F,GAAG,GAAG,UAAU+F,EAAE,OAAOgwC,GAAG/1C,EAAE,CAAC,SAAS82C,GAAG/wC,EAAE/F,GAAG,GAAG,UAAU+F,GAAG,WAAWA,EAAE,OAAOgwC,GAAG/1C,EAAE,CAAiE,IAAI+2C,GAAG,oBAAoB95C,OAAOmnC,GAAGnnC,OAAOmnC,GAA5G,SAAYr+B,EAAE/F,GAAG,OAAO+F,IAAI/F,IAAI,IAAI+F,GAAG,EAAEA,IAAI,EAAE/F,IAAI+F,IAAIA,GAAG/F,IAAIA,CAAC,EAAmDg3C,GAAG/5C,OAAOC,UAAUwZ,eAC7a,SAASugC,GAAGlxC,EAAE/F,GAAG,GAAG+2C,GAAGhxC,EAAE/F,GAAG,OAAM,EAAG,GAAG,kBAAkB+F,GAAG,OAAOA,GAAG,kBAAkB/F,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI4D,EAAE3G,OAAOoX,KAAKtO,GAAG6P,EAAE3Y,OAAOoX,KAAKrU,GAAG,GAAG4D,EAAE9H,SAAS8Z,EAAE9Z,OAAO,OAAM,EAAG,IAAI8Z,EAAE,EAAEA,EAAEhS,EAAE9H,OAAO8Z,IAAI,IAAIohC,GAAGp5C,KAAKoC,EAAE4D,EAAEgS,MAAMmhC,GAAGhxC,EAAEnC,EAAEgS,IAAI5V,EAAE4D,EAAEgS,KAAK,OAAM,EAAG,OAAM,CAAE,CAAC,SAASshC,GAAGnxC,GAAG,KAAKA,GAAGA,EAAE05B,YAAY15B,EAAEA,EAAE05B,WAAW,OAAO15B,CAAC,CACnU,SAASoxC,GAAGpxC,EAAE/F,GAAG,IAAwB4V,EAApBhS,EAAEszC,GAAGnxC,GAAO,IAAJA,EAAE,EAAYnC,GAAG,CAAC,GAAG,IAAIA,EAAEo8B,SAAS,CAA0B,GAAzBpqB,EAAE7P,EAAEnC,EAAEm7B,YAAYjjC,OAAUiK,GAAG/F,GAAG4V,GAAG5V,EAAE,MAAM,CAACo3C,KAAKxzC,EAAEhB,OAAO5C,EAAE+F,GAAGA,EAAE6P,CAAC,CAAC7P,EAAE,CAAC,KAAKnC,GAAG,CAAC,GAAGA,EAAEyzC,YAAY,CAACzzC,EAAEA,EAAEyzC,YAAY,MAAMtxC,CAAC,CAACnC,EAAEA,EAAE4gC,UAAU,CAAC5gC,OAAE,CAAM,CAACA,EAAEszC,GAAGtzC,EAAE,CAAC,CAAC,SAAS0zC,GAAGvxC,EAAE/F,GAAG,SAAO+F,IAAG/F,KAAE+F,IAAI/F,KAAK+F,GAAG,IAAIA,EAAEi6B,YAAYhgC,GAAG,IAAIA,EAAEggC,SAASsX,GAAGvxC,EAAE/F,EAAEwkC,YAAY,aAAaz+B,EAAEA,EAAEwxC,SAASv3C,KAAG+F,EAAEyxC,4BAAwD,GAA7BzxC,EAAEyxC,wBAAwBx3C,KAAY,CAC9Z,SAASy3C,KAAK,IAAI,IAAI1xC,EAAE0R,OAAOzX,EAAEm9B,IAAKn9B,aAAa+F,EAAE2xC,mBAAmB,CAAC,IAAI,IAAI9zC,EAAE,kBAAkB5D,EAAE23C,cAAcxF,SAASyF,IAAI,CAAC,MAAMhiC,GAAGhS,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAM5D,EAAEm9B,GAA/Bp3B,EAAE/F,EAAE23C,eAAgCxf,SAAS,CAAC,OAAOn4B,CAAC,CAAC,SAAS63C,GAAG9xC,GAAG,IAAI/F,EAAE+F,GAAGA,EAAE42B,UAAU52B,EAAE42B,SAAS17B,cAAc,OAAOjB,IAAI,UAAUA,IAAI,SAAS+F,EAAE3F,MAAM,WAAW2F,EAAE3F,MAAM,QAAQ2F,EAAE3F,MAAM,QAAQ2F,EAAE3F,MAAM,aAAa2F,EAAE3F,OAAO,aAAaJ,GAAG,SAAS+F,EAAE+xC,gBAAgB,CACxa,IAAIC,GAAG7f,GAAI,iBAAiBC,UAAU,IAAIA,SAASgc,aAAa6D,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGryC,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAEhS,EAAE6T,SAAS7T,EAAEA,EAAEu0B,SAAS,IAAIv0B,EAAEo8B,SAASp8B,EAAEA,EAAEq6B,cAAcka,IAAI,MAAMH,IAAIA,KAAK7a,EAAGvnB,KAAU,mBAALA,EAAEoiC,KAAyBH,GAAGjiC,GAAGA,EAAE,CAAChZ,MAAMgZ,EAAEyiC,eAAex7C,IAAI+Y,EAAE0iC,cAAuF1iC,EAAE,CAAC2iC,YAA3E3iC,GAAGA,EAAEqoB,eAAeroB,EAAEqoB,cAAcua,aAAa/gC,QAAQghC,gBAA+BF,WAAWG,aAAa9iC,EAAE8iC,aAAaC,UAAU/iC,EAAE+iC,UAAUC,YAAYhjC,EAAEgjC,aAAcV,IAAIjB,GAAGiB,GAAGtiC,KAAKsiC,GAAGtiC,EAAsB,GAApBA,EAAE8/B,GAAGuC,GAAG,aAAgBn8C,SAASkE,EAAE,IAAIyuC,GAAG,WAAW,SAAS,KAAKzuC,EAAE4D,GAAGmC,EAAE5J,KAAK,CAAC6lB,MAAMhiB,EAAEwT,UAAUoC,IAAI5V,EAAE+G,OAAOixC,KAAK,CACtfvN,GAAG,mjBAAmjBj8B,MAAM,KAC5jB,GAAGi8B,GAAG,oRAAoRj8B,MAAM,KAAK,GAAGi8B,GAAGD,GAAG,GAAG,IAAI,IAAIqO,GAAG,qFAAqFrqC,MAAM,KAAKsqC,GAAG,EAAEA,GAAGD,GAAG/8C,OAAOg9C,KAAKvO,GAAGlkC,IAAIwyC,GAAGC,IAAI,GAAG9gB,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoEvpB,MAAM,MAAMupB,EAAG,WAAW,uFAAuFvpB,MAAM,MAAMupB,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DvpB,MAAM,MAC5fupB,EAAG,qBAAqB,6DAA6DvpB,MAAM,MAAMupB,EAAG,sBAAsB,8DAA8DvpB,MAAM,MAAM,IAAIuqC,GAAG,sNAAsNvqC,MAAM,KAAKwqC,GAAG,IAAInhB,IAAI,0CAA0CrpB,MAAM,KAAKtI,OAAO6yC,KACnf,SAASE,GAAGlzC,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAE3F,MAAM,gBAAgB2F,EAAEqnC,cAAcxpC,EA/CjE,SAAYmC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,EAAEC,EAAEmD,EAAED,GAA4B,GAAzBsK,GAAGthC,MAAM1D,KAAKN,WAAcilC,GAAG,CAAC,IAAGA,GAAgC,MAAMppC,MAAMuJ,EAAE,MAA1C,IAAIya,EAAEqlB,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGvlB,EAAE,CAAC,CA+CpEw4B,CAAGtjC,EAAE5V,OAAE,EAAO+F,GAAGA,EAAEqnC,cAAc,IAAI,CACxG,SAAS0I,GAAG/vC,EAAE/F,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAI4D,EAAE,EAAEA,EAAEmC,EAAEjK,OAAO8H,IAAI,CAAC,IAAIgS,EAAE7P,EAAEnC,GAAGuB,EAAEyQ,EAAEoM,MAAMpM,EAAEA,EAAEpC,UAAUzN,EAAE,CAAC,IAAI2yB,OAAE,EAAO,GAAG14B,EAAE,IAAI,IAAI24B,EAAE/iB,EAAE9Z,OAAO,EAAE,GAAG68B,EAAEA,IAAI,CAAC,IAAImD,EAAElmB,EAAE+iB,GAAGkD,EAAEC,EAAE7R,SAASvJ,EAAEob,EAAEsR,cAA2B,GAAbtR,EAAEA,EAAE5qB,SAAY2qB,IAAInD,GAAGvzB,EAAEqoC,uBAAuB,MAAMznC,EAAEkzC,GAAG9zC,EAAE22B,EAAEpb,GAAGgY,EAAEmD,CAAC,MAAM,IAAIlD,EAAE,EAAEA,EAAE/iB,EAAE9Z,OAAO68B,IAAI,CAAoD,GAA5CkD,GAAPC,EAAElmB,EAAE+iB,IAAO1O,SAASvJ,EAAEob,EAAEsR,cAActR,EAAEA,EAAE5qB,SAAY2qB,IAAInD,GAAGvzB,EAAEqoC,uBAAuB,MAAMznC,EAAEkzC,GAAG9zC,EAAE22B,EAAEpb,GAAGgY,EAAEmD,CAAC,CAAC,CAAC,CAAC,GAAGmK,GAAG,MAAMjgC,EAAEkgC,GAAGD,IAAG,EAAGC,GAAG,KAAKlgC,CAAE,CAC5a,SAASozC,GAAEpzC,EAAE/F,GAAG,IAAI4D,EAAEw1C,GAAGp5C,GAAG4V,EAAE7P,EAAE,WAAWnC,EAAEy1C,IAAIzjC,KAAK0jC,GAAGt5C,EAAE+F,EAAE,GAAE,GAAInC,EAAEq0B,IAAIriB,GAAG,CAAC,IAAI2jC,GAAG,kBAAkBv1C,KAAKw1C,SAASx8C,SAAS,IAAIa,MAAM,GAAG,SAAS47C,GAAG1zC,GAAGA,EAAEwzC,MAAMxzC,EAAEwzC,KAAI,EAAG3hB,EAAGlO,SAAQ,SAAS1pB,GAAGg5C,GAAGK,IAAIr5C,IAAI05C,GAAG15C,GAAE,EAAG+F,EAAE,MAAM2zC,GAAG15C,GAAE,EAAG+F,EAAE,KAAK,IAAG,CAC9O,SAAS2zC,GAAG3zC,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAE,EAAEtE,UAAU/E,aAAQ,IAAS+E,UAAU,GAAGA,UAAU,GAAG,EAAE63B,EAAE90B,EAA6D,GAA3D,oBAAoBmC,GAAG,IAAInC,EAAEo8B,WAAWtH,EAAE90B,EAAEq6B,eAAkB,OAAOroB,IAAI5V,GAAGg5C,GAAGK,IAAItzC,GAAG,CAAC,GAAG,WAAWA,EAAE,OAAOZ,GAAG,EAAEuzB,EAAE9iB,CAAC,CAAC,IAAI+iB,EAAEygB,GAAG1gB,GAAGoD,EAAE/1B,EAAE,MAAM/F,EAAE,UAAU,UAAU24B,EAAE0gB,IAAIvd,KAAK97B,IAAImF,GAAG,GAAGm0C,GAAG5gB,EAAE3yB,EAAEZ,EAAEnF,GAAG24B,EAAEV,IAAI6D,GAAG,CACrS,SAASwd,GAAGvzC,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEolC,GAAG9kC,IAAIzF,GAAG,YAAO,IAASmF,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAEgnC,GAAG,MAAM,KAAK,EAAEhnC,EAAEknC,GAAG,MAAM,QAAQlnC,EAAEinC,GAAGxoC,EAAEuB,EAAEqN,KAAK,KAAKxS,EAAE4D,EAAEmC,GAAGZ,OAAE,GAAQugC,IAAI,eAAe1lC,GAAG,cAAcA,GAAG,UAAUA,IAAImF,GAAE,GAAIyQ,OAAE,IAASzQ,EAAEY,EAAEgN,iBAAiB/S,EAAE4D,EAAE,CAAC+1C,SAAQ,EAAGC,QAAQz0C,IAAIY,EAAEgN,iBAAiB/S,EAAE4D,GAAE,QAAI,IAASuB,EAAEY,EAAEgN,iBAAiB/S,EAAE4D,EAAE,CAACg2C,QAAQz0C,IAAIY,EAAEgN,iBAAiB/S,EAAE4D,GAAE,EAAG,CACvW,SAAS2oC,GAAGxmC,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAIuzB,EAAE9iB,EAAE,GAAG,KAAO,EAAF5V,IAAM,KAAO,EAAFA,IAAM,OAAO4V,EAAE7P,EAAE,OAAO,CAAC,GAAG,OAAO6P,EAAE,OAAO,IAAI+iB,EAAE/iB,EAAEqmB,IAAI,GAAG,IAAItD,GAAG,IAAIA,EAAE,CAAC,IAAImD,EAAElmB,EAAEkvB,UAAUgE,cAAc,GAAGhN,IAAI32B,GAAG,IAAI22B,EAAEkE,UAAUlE,EAAE0I,aAAar/B,EAAE,MAAM,GAAG,IAAIwzB,EAAE,IAAIA,EAAE/iB,EAAE0wB,OAAO,OAAO3N,GAAG,CAAC,IAAIkD,EAAElD,EAAEsD,IAAI,IAAG,IAAIJ,GAAG,IAAIA,MAAKA,EAAElD,EAAEmM,UAAUgE,iBAAkB3jC,GAAG,IAAI02B,EAAEmE,UAAUnE,EAAE2I,aAAar/B,GAAE,OAAOwzB,EAAEA,EAAE2N,MAAM,CAAC,KAAK,OAAOxK,GAAG,CAAS,GAAG,QAAXnD,EAAE8P,GAAG3M,IAAe,OAAe,GAAG,KAAXD,EAAElD,EAAEsD,MAAc,IAAIJ,EAAE,CAACjmB,EAAE8iB,EAAEC,EAAE,SAAS5yB,CAAC,CAAC+1B,EAAEA,EAAE0I,UAAU,CAAC,CAAC5uB,EAAEA,EAAE0wB,MAAM,EAvDnd,SAAYvgC,EAAE/F,EAAE4D,GAAG,GAAG2hC,GAAG,OAAOx/B,EAAE/F,EAAE4D,GAAG2hC,IAAG,EAAG,IAAI,OAAOF,GAAGt/B,EAAE/F,EAAE4D,EAAE,CAAC,QAAQ2hC,IAAG,EAAGC,IAAI,CAAC,CAuD+XqU,EAAG,WAAW,IAAIjkC,EAAE8iB,EAAEvzB,EAAEk/B,GAAGzgC,GAAG+0B,EAAE,GACpf5yB,EAAE,CAAC,IAAI+1B,EAAEwO,GAAG7kC,IAAIM,GAAG,QAAG,IAAS+1B,EAAE,CAAC,IAAID,EAAE4S,GAAGzoC,EAAED,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI6mC,GAAGhpC,GAAG,MAAMmC,EAAE,IAAK,UAAU,IAAK,QAAQ81B,EAAE0W,GAAG,MAAM,IAAK,UAAUvsC,EAAE,QAAQ61B,EAAEwU,GAAG,MAAM,IAAK,WAAWrqC,EAAE,OAAO61B,EAAEwU,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYxU,EAAEwU,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIzsC,EAAE+rC,OAAO,MAAM5pC,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc81B,EAAEqU,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOrU,EAC1iBsU,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAatU,EAAEqX,GAAG,MAAM,KAAKhJ,GAAG,KAAKC,GAAG,KAAKC,GAAGvO,EAAEyU,GAAG,MAAM,KAAKjG,GAAGxO,EAAEyX,GAAG,MAAM,IAAK,SAASzX,EAAEgT,GAAG,MAAM,IAAK,QAAQhT,EAAEkY,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQlY,EAAE+U,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY/U,EAAE2W,GAAG,IAAIzgC,EAAE,KAAO,EAAF/R,GAAK85C,GAAG/nC,GAAG,WAAWhM,EAAE6nB,EAAE7b,EAAE,OAAO+pB,EAAEA,EAAE,UAAU,KAAKA,EAAE/pB,EAAE,GAAG,IAAI,IAAQgoC,EAAJxsB,EAAE3X,EAAI,OAC/e2X,GAAG,CAAK,IAAI3S,GAARm/B,EAAExsB,GAAUuX,UAAsF,GAA5E,IAAIiV,EAAE9d,KAAK,OAAOrhB,IAAIm/B,EAAEn/B,EAAE,OAAOgT,IAAc,OAAVhT,EAAE6qB,GAAGlY,EAAEK,KAAY7b,EAAE5V,KAAK69C,GAAGzsB,EAAE3S,EAAEm/B,MAASD,EAAE,MAAMvsB,EAAEA,EAAE+Y,MAAM,CAAC,EAAEv0B,EAAEjW,SAASggC,EAAE,IAAID,EAAEC,EAAE91B,EAAE,KAAKpC,EAAEuB,GAAGwzB,EAAEx8B,KAAK,CAAC6lB,MAAM8Z,EAAEtoB,UAAUzB,IAAI,CAAC,CAAC,GAAG,KAAO,EAAF/R,GAAK,CAA4E,GAAnC67B,EAAE,aAAa91B,GAAG,eAAeA,KAAtE+1B,EAAE,cAAc/1B,GAAG,gBAAgBA,IAA2C,KAAO,GAAF/F,MAAQgG,EAAEpC,EAAEisC,eAAejsC,EAAEksC,eAAerH,GAAGziC,KAAIA,EAAEi0C,OAAgBpe,GAAGC,KAAGA,EAAE32B,EAAEsS,SAAStS,EAAEA,GAAG22B,EAAE32B,EAAE84B,eAAenC,EAAE0c,aAAa1c,EAAEoe,aAAaziC,OAAUokB,GAAqCA,EAAEjmB,EAAiB,QAAf5P,GAAnCA,EAAEpC,EAAEisC,eAAejsC,EAAEmsC,WAAkBtH,GAAGziC,GAAG,QACleA,KAAR8zC,EAAE1T,GAAGpgC,KAAU,IAAIA,EAAEi2B,KAAK,IAAIj2B,EAAEi2B,OAAKj2B,EAAE,QAAU61B,EAAE,KAAK71B,EAAE4P,GAAKimB,IAAI71B,GAAE,CAAgU,GAA/T+L,EAAEm+B,GAAGt1B,EAAE,eAAegT,EAAE,eAAeL,EAAE,QAAW,eAAexnB,GAAG,gBAAgBA,IAAEgM,EAAEygC,GAAG53B,EAAE,iBAAiBgT,EAAE,iBAAiBL,EAAE,WAAUusB,EAAE,MAAMje,EAAEC,EAAEka,GAAGna,GAAGke,EAAE,MAAM/zC,EAAE81B,EAAEka,GAAGhwC,IAAG81B,EAAE,IAAI/pB,EAAE6I,EAAE2S,EAAE,QAAQsO,EAAEj4B,EAAEuB,IAAK4B,OAAO+yC,EAAEhe,EAAE+T,cAAckK,EAAEn/B,EAAE,KAAK6tB,GAAGtjC,KAAKyQ,KAAI7D,EAAE,IAAIA,EAAE6b,EAAEL,EAAE,QAAQvnB,EAAEpC,EAAEuB,IAAK4B,OAAOgzC,EAAEhoC,EAAE89B,cAAciK,EAAEl/B,EAAE7I,GAAG+nC,EAAEl/B,EAAKihB,GAAG71B,EAAEhG,EAAE,CAAa,IAAR4tB,EAAE5nB,EAAEunB,EAAE,EAAMwsB,EAAhBhoC,EAAE8pB,EAAkBke,EAAEA,EAAEI,GAAGJ,GAAGxsB,IAAQ,IAAJwsB,EAAE,EAAMn/B,EAAEgT,EAAEhT,EAAEA,EAAEu/B,GAAGv/B,GAAGm/B,IAAI,KAAK,EAAExsB,EAAEwsB,GAAGhoC,EAAEooC,GAAGpoC,GAAGwb,IAAI,KAAK,EAAEwsB,EAAExsB,GAAGK,EACpfusB,GAAGvsB,GAAGmsB,IAAI,KAAKxsB,KAAK,CAAC,GAAGxb,IAAI6b,GAAG,OAAOA,GAAG7b,IAAI6b,EAAEyY,UAAU,MAAMrmC,EAAE+R,EAAEooC,GAAGpoC,GAAG6b,EAAEusB,GAAGvsB,EAAE,CAAC7b,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAO8pB,GAAGue,GAAGzhB,EAAEmD,EAAED,EAAE9pB,GAAE,GAAI,OAAO/L,GAAG,OAAO8zC,GAAGM,GAAGzhB,EAAEmhB,EAAE9zC,EAAE+L,GAAE,EAAG,CAA8D,GAAG,YAA1C8pB,GAAjBC,EAAElmB,EAAEogC,GAAGpgC,GAAG6B,QAAWklB,UAAUb,EAAEa,SAAS17B,gBAA+B,UAAU46B,GAAG,SAASC,EAAE17B,KAAK,IAAIi6C,EAAEpE,QAAQ,GAAGT,GAAG1Z,GAAG,GAAGoa,GAAGmE,EAAEvD,OAAO,CAACuD,EAAEzD,GAAG,IAAI0D,EAAE5D,EAAE,MAAM7a,EAAEC,EAAEa,WAAW,UAAUd,EAAE56B,gBAAgB,aAAa66B,EAAE17B,MAAM,UAAU07B,EAAE17B,QAAQi6C,EAAExD,IAClV,OADyVwD,IAAIA,EAAEA,EAAEt0C,EAAE6P,IAAK6/B,GAAG9c,EAAE0hB,EAAEz2C,EAAEuB,IAAWm1C,GAAGA,EAAEv0C,EAAE+1B,EAAElmB,GAAG,aAAa7P,IAAIu0C,EAAExe,EAAE2B,gBACte6c,EAAEzc,YAAY,WAAW/B,EAAE17B,MAAM49B,GAAGlC,EAAE,SAASA,EAAEt+B,QAAO88C,EAAE1kC,EAAEogC,GAAGpgC,GAAG6B,OAAc1R,GAAG,IAAK,WAAayvC,GAAG8E,IAAI,SAASA,EAAExC,mBAAgBE,GAAGsC,EAAErC,GAAGriC,EAAEsiC,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGzf,EAAE/0B,EAAEuB,GAAG,MAAM,IAAK,kBAAkB,GAAG4yC,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGzf,EAAE/0B,EAAEuB,GAAG,IAAIo1C,EAAE,GAAGtG,GAAGj0C,EAAE,CAAC,OAAO+F,GAAG,IAAK,mBAAmB,IAAIy0C,EAAE,qBAAqB,MAAMx6C,EAAE,IAAK,iBAAiBw6C,EAAE,mBAAmB,MAAMx6C,EACrf,IAAK,oBAAoBw6C,EAAE,sBAAsB,MAAMx6C,EAAEw6C,OAAE,CAAM,MAAM9F,GAAGF,GAAGzuC,EAAEnC,KAAK42C,EAAE,oBAAoB,YAAYz0C,GAAG,MAAMnC,EAAEipC,UAAU2N,EAAE,sBAAsBA,IAAInG,IAAI,OAAOzwC,EAAEyuC,SAASqC,IAAI,uBAAuB8F,EAAE,qBAAqBA,GAAG9F,KAAK6F,EAAE5N,OAAYF,GAAG,UAARD,GAAGrnC,GAAkBqnC,GAAGhvC,MAAMgvC,GAAGzN,YAAY2V,IAAG,IAAe,GAAV4F,EAAE5E,GAAG9/B,EAAE4kC,IAAO1+C,SAAS0+C,EAAE,IAAI3J,GAAG2J,EAAEz0C,EAAE,KAAKnC,EAAEuB,GAAGwzB,EAAEx8B,KAAK,CAAC6lB,MAAMw4B,EAAEhnC,UAAU8mC,IAAIC,EAAEC,EAAEl6C,KAAKi6C,EAAW,QAARA,EAAE9F,GAAG7wC,MAAc42C,EAAEl6C,KAAKi6C,MAASA,EAAEnG,GA1BjK,SAAYruC,EAAE/F,GAAG,OAAO+F,GAAG,IAAK,iBAAiB,OAAO0uC,GAAGz0C,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEsyC,MAAa,MAAKiC,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOvuC,EAAE/F,EAAEM,QAASg0C,IAAIC,GAAG,KAAKxuC,EAAE,QAAQ,OAAO,KAAK,CA0B7B00C,CAAG10C,EAAEnC,GAzB1b,SAAYmC,EAAE/F,GAAG,GAAG00C,GAAG,MAAM,mBAAmB3uC,IAAIkuC,IAAIO,GAAGzuC,EAAE/F,IAAI+F,EAAE4mC,KAAKD,GAAGD,GAAGD,GAAG,KAAKkI,IAAG,EAAG3uC,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAK/F,EAAEqvC,SAASrvC,EAAEuvC,QAAQvvC,EAAEwvC,UAAUxvC,EAAEqvC,SAASrvC,EAAEuvC,OAAO,CAAC,GAAGvvC,EAAE06C,MAAM,EAAE16C,EAAE06C,KAAK5+C,OAAO,OAAOkE,EAAE06C,KAAK,GAAG16C,EAAEsyC,MAAM,OAAOjwC,OAAOuC,aAAa5E,EAAEsyC,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO+B,IAAI,OAAOr0C,EAAEqyC,OAAO,KAAKryC,EAAEM,KAAyB,CAyBsDq6C,CAAG50C,EAAEnC,MAA2B,GAAxBgS,EAAE8/B,GAAG9/B,EAAE,kBAAqB9Z,SAASqJ,EAAE,IAAI0rC,GAAG,gBACnf,cAAc,KAAKjtC,EAAEuB,GAAGwzB,EAAEx8B,KAAK,CAAC6lB,MAAM7c,EAAEqO,UAAUoC,IAAIzQ,EAAE7E,KAAKi6C,GAAE,CAACzE,GAAGnd,EAAE34B,EAAE,GAAE,CAAC,SAASg6C,GAAGj0C,EAAE/F,EAAE4D,GAAG,MAAM,CAACqmB,SAASlkB,EAAEmL,SAASlR,EAAEotC,cAAcxpC,EAAE,CAAC,SAAS8xC,GAAG3vC,EAAE/F,GAAG,IAAI,IAAI4D,EAAE5D,EAAE,UAAU4V,EAAE,GAAG,OAAO7P,GAAG,CAAC,IAAIZ,EAAEY,EAAE2yB,EAAEvzB,EAAE2/B,UAAU,IAAI3/B,EAAE82B,KAAK,OAAOvD,IAAIvzB,EAAEuzB,EAAY,OAAVA,EAAE+M,GAAG1/B,EAAEnC,KAAYgS,EAAE/D,QAAQmoC,GAAGj0C,EAAE2yB,EAAEvzB,IAAc,OAAVuzB,EAAE+M,GAAG1/B,EAAE/F,KAAY4V,EAAEzZ,KAAK69C,GAAGj0C,EAAE2yB,EAAEvzB,KAAKY,EAAEA,EAAEugC,MAAM,CAAC,OAAO1wB,CAAC,CAAC,SAASukC,GAAGp0C,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEugC,aAAavgC,GAAG,IAAIA,EAAEk2B,KAAK,OAAOl2B,GAAI,IAAI,CAC5a,SAASq0C,GAAGr0C,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAI,IAAIuzB,EAAE14B,EAAEktC,WAAWvU,EAAE,GAAG,OAAO/0B,GAAGA,IAAIgS,GAAG,CAAC,IAAIkmB,EAAEl4B,EAAEi4B,EAAEC,EAAEuK,UAAU3lB,EAAEob,EAAEgJ,UAAU,GAAG,OAAOjJ,GAAGA,IAAIjmB,EAAE,MAAM,IAAIkmB,EAAEG,KAAK,OAAOvb,IAAIob,EAAEpb,EAAEvb,EAAa,OAAV02B,EAAE4J,GAAG7hC,EAAE80B,KAAYC,EAAE9mB,QAAQmoC,GAAGp2C,EAAEi4B,EAAEC,IAAK32B,GAAc,OAAV02B,EAAE4J,GAAG7hC,EAAE80B,KAAYC,EAAEx8B,KAAK69C,GAAGp2C,EAAEi4B,EAAEC,KAAMl4B,EAAEA,EAAE0iC,MAAM,CAAC,IAAI3N,EAAE78B,QAAQiK,EAAE5J,KAAK,CAAC6lB,MAAMhiB,EAAEwT,UAAUmlB,GAAG,CAAC,SAASiiB,KAAK,CAAC,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGh1C,EAAE/F,GAAG,OAAO+F,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQ/F,EAAEg7C,UAAU,OAAM,CAAE,CAC7b,SAASC,GAAGl1C,EAAE/F,GAAG,MAAM,aAAa+F,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkB/F,EAAEm+B,UAAU,kBAAkBn+B,EAAEm+B,UAAU,kBAAkBn+B,EAAE2+B,yBAAyB,OAAO3+B,EAAE2+B,yBAAyB,MAAM3+B,EAAE2+B,wBAAwBuc,MAAM,CAAC,IAAIC,GAAG,oBAAoB/lC,WAAWA,gBAAW,EAAOgmC,GAAG,oBAAoBjlB,aAAaA,kBAAa,EAAO,SAASklB,GAAGt1C,GAAG,IAAIA,EAAEi6B,SAASj6B,EAAEg5B,YAAY,GAAG,IAAIh5B,EAAEi6B,WAAoB,OAATj6B,EAAEA,EAAEs3B,QAAet3B,EAAEg5B,YAAY,IAAI,CAC5c,SAASuc,GAAGv1C,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEsxC,YAAY,CAAC,IAAIr3C,EAAE+F,EAAEi6B,SAAS,GAAG,IAAIhgC,GAAG,IAAIA,EAAE,KAAK,CAAC,OAAO+F,CAAC,CAAC,SAASw1C,GAAGx1C,GAAGA,EAAEA,EAAEy1C,gBAAgB,IAAI,IAAIx7C,EAAE,EAAE+F,GAAG,CAAC,GAAG,IAAIA,EAAEi6B,SAAS,CAAC,IAAIp8B,EAAEmC,EAAEzF,KAAK,GAAG,MAAMsD,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAI5D,EAAE,OAAO+F,EAAE/F,GAAG,KAAK,OAAO4D,GAAG5D,GAAG,CAAC+F,EAAEA,EAAEy1C,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG,EAA0D,IAAIC,GAAG13C,KAAKw1C,SAASx8C,SAAS,IAAIa,MAAM,GAAG89C,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGzB,GAAG,oBAAoByB,GAAGG,GAAG,iBAAiBH,GAC9d,SAASjT,GAAG1iC,GAAG,IAAI/F,EAAE+F,EAAE41C,IAAI,GAAG37C,EAAE,OAAOA,EAAE,IAAI,IAAI4D,EAAEmC,EAAEy+B,WAAW5gC,GAAG,CAAC,GAAG5D,EAAE4D,EAAEq2C,KAAKr2C,EAAE+3C,IAAI,CAAe,GAAd/3C,EAAE5D,EAAEqmC,UAAa,OAAOrmC,EAAE4mC,OAAO,OAAOhjC,GAAG,OAAOA,EAAEgjC,MAAM,IAAI7gC,EAAEw1C,GAAGx1C,GAAG,OAAOA,GAAG,CAAC,GAAGnC,EAAEmC,EAAE41C,IAAI,OAAO/3C,EAAEmC,EAAEw1C,GAAGx1C,EAAE,CAAC,OAAO/F,CAAC,CAAK4D,GAAJmC,EAAEnC,GAAM4gC,UAAU,CAAC,OAAO,IAAI,CAAC,SAASK,GAAG9+B,GAAkB,QAAfA,EAAEA,EAAE41C,KAAK51C,EAAEk0C,MAAc,IAAIl0C,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,KAAK,KAAKl2B,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,IAAI,KAAKl2B,CAAC,CAAC,SAASiwC,GAAGjwC,GAAG,GAAG,IAAIA,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,IAAI,OAAOl2B,EAAE++B,UAAU,MAAMpoC,MAAMuJ,EAAE,IAAK,CAAC,SAAS8+B,GAAGh/B,GAAG,OAAOA,EAAE61C,KAAK,IAAI,CACtb,SAASxC,GAAGrzC,GAAG,IAAI/F,EAAE+F,EAAE81C,IAAkC,YAA9B,IAAS77C,IAAIA,EAAE+F,EAAE81C,IAAI,IAAIhkB,KAAY73B,CAAC,CAAC,IAAI87C,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGj2C,GAAG,MAAM,CAAC+gB,QAAQ/gB,EAAE,CAAC,SAASk2C,GAAEl2C,GAAG,EAAEg2C,KAAKh2C,EAAE+gB,QAAQg1B,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASG,GAAEn2C,EAAE/F,GAAG+7C,KAAKD,GAAGC,IAAIh2C,EAAE+gB,QAAQ/gB,EAAE+gB,QAAQ9mB,CAAC,CAAC,IAAIm8C,GAAG,CAAC,EAAEC,GAAEJ,GAAGG,IAAIE,GAAEL,IAAG,GAAIM,GAAGH,GAC5P,SAASI,GAAGx2C,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAE3F,KAAKo8C,aAAa,IAAI54C,EAAE,OAAOu4C,GAAG,IAAIvmC,EAAE7P,EAAE++B,UAAU,GAAGlvB,GAAGA,EAAE6mC,8CAA8Cz8C,EAAE,OAAO4V,EAAE8mC,0CAA0C,IAAShkB,EAALvzB,EAAE,CAAC,EAAI,IAAIuzB,KAAK90B,EAAEuB,EAAEuzB,GAAG14B,EAAE04B,GAAoH,OAAjH9iB,KAAI7P,EAAEA,EAAE++B,WAAY2X,4CAA4Cz8C,EAAE+F,EAAE22C,0CAA0Cv3C,GAAUA,CAAC,CAAC,SAASw3C,GAAG52C,GAAyB,OAAO,QAA7BA,EAAEA,EAAE62C,yBAAmC,IAAS72C,CAAC,CAAC,SAAS82C,KAAKZ,GAAEI,IAAGJ,GAAEG,GAAE,CAAC,SAASU,GAAG/2C,EAAE/F,EAAE4D,GAAG,GAAGw4C,GAAEt1B,UAAUq1B,GAAG,MAAMz/C,MAAMuJ,EAAE,MAAMi2C,GAAEE,GAAEp8C,GAAGk8C,GAAEG,GAAEz4C,EAAE,CACjf,SAASm5C,GAAGh3C,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAE++B,UAAgC,GAAtB/+B,EAAE/F,EAAE48C,kBAAqB,oBAAoBhnC,EAAEonC,gBAAgB,OAAOp5C,EAAwB,IAAI,IAAIuB,KAA9ByQ,EAAEA,EAAEonC,kBAAiC,KAAK73C,KAAKY,GAAG,MAAMrJ,MAAMuJ,EAAE,IAAIm2B,EAAGp8B,IAAI,UAAUmF,IAAI,OAAOvD,EAAE,CAAC,EAAEgC,EAAEgS,EAAE,CAAC,SAASqnC,GAAGl3C,GAAyG,OAAtGA,GAAGA,EAAEA,EAAE++B,YAAY/+B,EAAEm3C,2CAA2Cf,GAAGG,GAAGF,GAAEt1B,QAAQo1B,GAAEE,GAAEr2C,GAAGm2C,GAAEG,GAAEA,GAAEv1B,UAAe,CAAE,CAAC,SAASq2B,GAAGp3C,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAE++B,UAAU,IAAIlvB,EAAE,MAAMlZ,MAAMuJ,EAAE,MAAMrC,GAAGmC,EAAEg3C,GAAGh3C,EAAE/F,EAAEs8C,IAAI1mC,EAAEsnC,0CAA0Cn3C,EAAEk2C,GAAEI,IAAGJ,GAAEG,IAAGF,GAAEE,GAAEr2C,IAAIk2C,GAAEI,IAAGH,GAAEG,GAAEz4C,EAAE,CAC/e,IAAIw5C,GAAG,KAAKC,GAAG,KAAKC,GAAG5lB,EAAEiR,yBAAyB4U,GAAG7lB,EAAE0R,0BAA0BoU,GAAG9lB,EAAE+lB,wBAAwBC,GAAGhmB,EAAEimB,qBAAqBC,GAAGlmB,EAAEmmB,sBAAsBC,GAAGpmB,EAAEiT,aAAaoT,GAAGrmB,EAAEsmB,iCAAiCC,GAAGvmB,EAAEwmB,2BAA2BC,GAAGzmB,EAAEsU,8BAA8BoS,GAAG1mB,EAAE2R,wBAAwBgV,GAAG3mB,EAAE4mB,qBAAqBC,GAAG7mB,EAAE8mB,sBAAsBC,GAAG,CAAC,EAAEC,QAAG,IAASd,GAAGA,GAAG,WAAW,EAAEe,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGhB,KAAKiB,GAAE,IAAID,GAAGhB,GAAG,WAAW,OAAOA,KAAKgB,EAAE,EACxd,SAASE,KAAK,OAAOjB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM7hD,MAAMuJ,EAAE,MAAO,CAAC,SAASg5C,GAAGl5C,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOk4C,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM7hD,MAAMuJ,EAAE,MAAO,CAAC,SAASi5C,GAAGn5C,EAAE/F,GAAW,OAAR+F,EAAEk5C,GAAGl5C,GAAUu3C,GAAGv3C,EAAE/F,EAAE,CAAC,SAASm/C,GAAGp5C,EAAE/F,EAAE4D,GAAW,OAARmC,EAAEk5C,GAAGl5C,GAAUw3C,GAAGx3C,EAAE/F,EAAE4D,EAAE,CAAC,SAASw7C,KAAK,GAAG,OAAOR,GAAG,CAAC,IAAI74C,EAAE64C,GAAGA,GAAG,KAAKpB,GAAGz3C,EAAE,CAACs5C,IAAI,CAC/a,SAASA,KAAK,IAAIR,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAI94C,EAAE,EAAE,IAAI,IAAI/F,EAAE2+C,GAAGO,GAAG,IAAG,WAAW,KAAKn5C,EAAE/F,EAAElE,OAAOiK,IAAI,CAAC,IAAInC,EAAE5D,EAAE+F,GAAG,GAAGnC,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC,IAAG+6C,GAAG,IAAI,CAAC,MAAM/6C,GAAG,MAAM,OAAO+6C,KAAKA,GAAGA,GAAG9gD,MAAMkI,EAAE,IAAIw3C,GAAGU,GAAGmB,IAAIx7C,CAAE,CAAC,QAAQi7C,IAAG,CAAE,CAAC,CAAC,CAAC,IAAIS,GAAGtlB,EAAGulB,wBAAwB,SAASC,GAAGz5C,EAAE/F,GAAG,GAAG+F,GAAGA,EAAE05C,aAAa,CAA4B,IAAI,IAAI77C,KAAnC5D,EAAE4B,EAAE,CAAC,EAAE5B,GAAG+F,EAAEA,EAAE05C,kBAA4B,IAASz/C,EAAE4D,KAAK5D,EAAE4D,GAAGmC,EAAEnC,IAAI,OAAO5D,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAI0/C,GAAG1D,GAAG,MAAM2D,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAChc,SAASI,GAAGh6C,GAAG,IAAI/F,EAAE0/C,GAAG54B,QAAQm1B,GAAEyD,IAAI35C,EAAE3F,KAAKk8B,SAAS0jB,cAAchgD,CAAC,CAAC,SAASigD,GAAGl6C,EAAE/F,GAAG,KAAK,OAAO+F,GAAG,CAAC,IAAInC,EAAEmC,EAAEsgC,UAAU,IAAItgC,EAAEm6C,WAAWlgD,KAAKA,EAAC,CAAC,GAAG,OAAO4D,IAAIA,EAAEs8C,WAAWlgD,KAAKA,EAAE,MAAW4D,EAAEs8C,YAAYlgD,CAAE,MAAK+F,EAAEm6C,YAAYlgD,EAAE,OAAO4D,IAAIA,EAAEs8C,YAAYlgD,GAAG+F,EAAEA,EAAEugC,MAAM,CAAC,CAAC,SAAS6Z,GAAGp6C,EAAE/F,GAAG2/C,GAAG55C,EAAE85C,GAAGD,GAAG,KAAsB,QAAjB75C,EAAEA,EAAEq6C,eAAuB,OAAOr6C,EAAEs6C,eAAe,KAAKt6C,EAAEu6C,MAAMtgD,KAAKugD,IAAG,GAAIx6C,EAAEs6C,aAAa,KAAK,CAC5Y,SAASG,GAAGz6C,EAAE/F,GAAG,GAAG6/C,KAAK95C,IAAG,IAAK/F,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE6/C,GAAG95C,EAAE/F,EAAE,YAAWA,EAAE,CAACuT,QAAQxN,EAAE06C,aAAazgD,EAAEwf,KAAK,MAAS,OAAOogC,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMjjD,MAAMuJ,EAAE,MAAM25C,GAAG5/C,EAAE2/C,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAargD,EAAE0gD,WAAW,KAAK,MAAMd,GAAGA,GAAGpgC,KAAKxf,EAAE,OAAO+F,EAAEi6C,aAAa,CAAC,IAAIW,IAAG,EAAG,SAASC,GAAG76C,GAAGA,EAAE86C,YAAY,CAACC,UAAU/6C,EAAEygC,cAAcua,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,MAAMC,QAAQ,KAAK,CAC/a,SAASC,GAAGr7C,EAAE/F,GAAG+F,EAAEA,EAAE86C,YAAY7gD,EAAE6gD,cAAc96C,IAAI/F,EAAE6gD,YAAY,CAACC,UAAU/6C,EAAE+6C,UAAUC,gBAAgBh7C,EAAEg7C,gBAAgBC,eAAej7C,EAAEi7C,eAAeC,OAAOl7C,EAAEk7C,OAAOE,QAAQp7C,EAAEo7C,SAAS,CAAC,SAASE,GAAGt7C,EAAE/F,GAAG,MAAM,CAACshD,UAAUv7C,EAAEw7C,KAAKvhD,EAAEi8B,IAAI,EAAEulB,QAAQ,KAAKz9B,SAAS,KAAKvE,KAAK,KAAK,CAAC,SAASiiC,GAAG17C,EAAE/F,GAAmB,GAAG,QAAnB+F,EAAEA,EAAE86C,aAAwB,CAAY,IAAIj9C,GAAfmC,EAAEA,EAAEk7C,QAAeC,QAAQ,OAAOt9C,EAAE5D,EAAEwf,KAAKxf,GAAGA,EAAEwf,KAAK5b,EAAE4b,KAAK5b,EAAE4b,KAAKxf,GAAG+F,EAAEm7C,QAAQlhD,CAAC,CAAC,CACvZ,SAAS0hD,GAAG37C,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAE86C,YAAYjrC,EAAE7P,EAAEsgC,UAAU,GAAG,OAAOzwB,GAAoBhS,KAAhBgS,EAAEA,EAAEirC,aAAmB,CAAC,IAAI17C,EAAE,KAAKuzB,EAAE,KAAyB,GAAG,QAAvB90B,EAAEA,EAAEm9C,iBAA4B,CAAC,EAAE,CAAC,IAAIpoB,EAAE,CAAC2oB,UAAU19C,EAAE09C,UAAUC,KAAK39C,EAAE29C,KAAKtlB,IAAIr4B,EAAEq4B,IAAIulB,QAAQ59C,EAAE49C,QAAQz9B,SAASngB,EAAEmgB,SAASvE,KAAK,MAAM,OAAOkZ,EAAEvzB,EAAEuzB,EAAEC,EAAED,EAAEA,EAAElZ,KAAKmZ,EAAE/0B,EAAEA,EAAE4b,IAAI,OAAO,OAAO5b,GAAG,OAAO80B,EAAEvzB,EAAEuzB,EAAE14B,EAAE04B,EAAEA,EAAElZ,KAAKxf,CAAC,MAAMmF,EAAEuzB,EAAE14B,EAAiH,OAA/G4D,EAAE,CAACk9C,UAAUlrC,EAAEkrC,UAAUC,gBAAgB57C,EAAE67C,eAAetoB,EAAEuoB,OAAOrrC,EAAEqrC,OAAOE,QAAQvrC,EAAEurC,cAASp7C,EAAE86C,YAAYj9C,EAAQ,CAAoB,QAAnBmC,EAAEnC,EAAEo9C,gBAAwBp9C,EAAEm9C,gBAAgB/gD,EAAE+F,EAAEyZ,KACnfxf,EAAE4D,EAAEo9C,eAAehhD,CAAC,CACpB,SAAS2hD,GAAG57C,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEY,EAAE86C,YAAYF,IAAG,EAAG,IAAIjoB,EAAEvzB,EAAE47C,gBAAgBpoB,EAAExzB,EAAE67C,eAAellB,EAAE32B,EAAE87C,OAAOC,QAAQ,GAAG,OAAOplB,EAAE,CAAC32B,EAAE87C,OAAOC,QAAQ,KAAK,IAAIrlB,EAAEC,EAAEpb,EAAEmb,EAAErc,KAAKqc,EAAErc,KAAK,KAAK,OAAOmZ,EAAED,EAAEhY,EAAEiY,EAAEnZ,KAAKkB,EAAEiY,EAAEkD,EAAE,IAAIl6B,EAAEoE,EAAEsgC,UAAU,GAAG,OAAO1kC,EAAE,CAAiB,IAAIigD,GAApBjgD,EAAEA,EAAEk/C,aAAoBG,eAAeY,IAAIjpB,IAAI,OAAOipB,EAAEjgD,EAAEo/C,gBAAgBrgC,EAAEkhC,EAAEpiC,KAAKkB,EAAE/e,EAAEq/C,eAAenlB,EAAE,CAAC,CAAC,GAAG,OAAOnD,EAAE,CAA8B,IAA7BkpB,EAAEz8C,EAAE27C,UAAUnoB,EAAE,EAAEh3B,EAAE+e,EAAEmb,EAAE,OAAO,CAACC,EAAEpD,EAAE6oB,KAAK,IAAI9qC,EAAEiiB,EAAE4oB,UAAU,IAAI1rC,EAAEkmB,KAAKA,EAAE,CAAC,OAAOn6B,IAAIA,EAAEA,EAAE6d,KAAK,CAAC8hC,UAAU7qC,EAAE8qC,KAAK,EAAEtlB,IAAIvD,EAAEuD,IAAIulB,QAAQ9oB,EAAE8oB,QAAQz9B,SAAS2U,EAAE3U,SACrfvE,KAAK,OAAOzZ,EAAE,CAAC,IAAI87C,EAAE97C,EAAEC,EAAE0yB,EAAU,OAARoD,EAAE97B,EAAEyW,EAAE7S,EAASoC,EAAEi2B,KAAK,KAAK,EAAc,GAAG,oBAAf4lB,EAAE77C,EAAEw7C,SAAiC,CAACI,EAAEC,EAAEjkD,KAAK6Y,EAAEmrC,EAAE9lB,GAAG,MAAM/1B,CAAC,CAAC67C,EAAEC,EAAE,MAAM97C,EAAE,KAAK,EAAE87C,EAAEnxC,OAAe,KAATmxC,EAAEnxC,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3CorB,EAAE,oBAAd+lB,EAAE77C,EAAEw7C,SAAgCK,EAAEjkD,KAAK6Y,EAAEmrC,EAAE9lB,GAAG+lB,SAAe,IAAS/lB,EAAE,MAAM/1B,EAAE67C,EAAEhgD,EAAE,CAAC,EAAEggD,EAAE9lB,GAAG,MAAM/1B,EAAE,KAAK,EAAE46C,IAAG,EAAG,CAAC,OAAOjoB,EAAE3U,WAAWhe,EAAE2K,OAAO,GAAe,QAAZorB,EAAE32B,EAAEg8C,SAAiBh8C,EAAEg8C,QAAQ,CAACzoB,GAAGoD,EAAE3/B,KAAKu8B,GAAG,MAAMjiB,EAAE,CAAC6qC,UAAU7qC,EAAE8qC,KAAKzlB,EAAEG,IAAIvD,EAAEuD,IAAIulB,QAAQ9oB,EAAE8oB,QAAQz9B,SAAS2U,EAAE3U,SAASvE,KAAK,MAAM,OAAO7d,GAAG+e,EAAE/e,EAAE8U,EAAEolB,EAAE+lB,GAAGjgD,EAAEA,EAAE6d,KAAK/I,EAAEkiB,GAAGmD,EAAW,GAAG,QAAZpD,EAAEA,EAAElZ,MAC1e,IAAsB,QAAnBsc,EAAE32B,EAAE87C,OAAOC,SAAiB,MAAWxoB,EAAEoD,EAAEtc,KAAKsc,EAAEtc,KAAK,KAAKra,EAAE67C,eAAellB,EAAE32B,EAAE87C,OAAOC,QAAQ,IAAI,EAAU,OAAOv/C,IAAIk6B,EAAE+lB,GAAGz8C,EAAE27C,UAAUjlB,EAAE12B,EAAE47C,gBAAgBrgC,EAAEvb,EAAE67C,eAAer/C,EAAEmgD,IAAInpB,EAAE5yB,EAAEu6C,MAAM3nB,EAAE5yB,EAAEygC,cAAcob,CAAC,CAAC,CAAC,SAASG,GAAGh8C,EAAE/F,EAAE4D,GAA8B,GAA3BmC,EAAE/F,EAAEmhD,QAAQnhD,EAAEmhD,QAAQ,KAAQ,OAAOp7C,EAAE,IAAI/F,EAAE,EAAEA,EAAE+F,EAAEjK,OAAOkE,IAAI,CAAC,IAAI4V,EAAE7P,EAAE/F,GAAGmF,EAAEyQ,EAAEmO,SAAS,GAAG,OAAO5e,EAAE,CAAqB,GAApByQ,EAAEmO,SAAS,KAAKnO,EAAEhS,EAAK,oBAAoBuB,EAAE,MAAMzI,MAAMuJ,EAAE,IAAId,IAAIA,EAAEvH,KAAKgY,EAAE,CAAC,CAAC,CAAC,IAAIosC,IAAI,IAAIvqB,EAAGwqB,WAAWC,KAC3b,SAASC,GAAGp8C,EAAE/F,EAAE4D,EAAEgS,GAA8BhS,EAAE,QAAXA,EAAEA,EAAEgS,EAAtB5V,EAAE+F,EAAEygC,sBAAmC,IAAS5iC,EAAE5D,EAAE4B,EAAE,CAAC,EAAE5B,EAAE4D,GAAGmC,EAAEygC,cAAc5iC,EAAE,IAAImC,EAAEu6C,QAAQv6C,EAAE86C,YAAYC,UAAUl9C,EAAE,CAC7I,IAAIw+C,GAAG,CAACC,UAAU,SAASt8C,GAAG,SAAOA,EAAEA,EAAEu8C,kBAAiBlc,GAAGrgC,KAAKA,CAAI,EAAEw8C,gBAAgB,SAASx8C,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAEu8C,gBAAgB,IAAI1sC,EAAE4sC,KAAKr9C,EAAEs9C,GAAG18C,GAAG2yB,EAAE2oB,GAAGzrC,EAAEzQ,GAAGuzB,EAAE8oB,QAAQxhD,OAAE,IAAS4D,GAAG,OAAOA,IAAI80B,EAAE3U,SAASngB,GAAG69C,GAAG17C,EAAE2yB,GAAGgqB,GAAG38C,EAAEZ,EAAEyQ,EAAE,EAAE+sC,oBAAoB,SAAS58C,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAEu8C,gBAAgB,IAAI1sC,EAAE4sC,KAAKr9C,EAAEs9C,GAAG18C,GAAG2yB,EAAE2oB,GAAGzrC,EAAEzQ,GAAGuzB,EAAEuD,IAAI,EAAEvD,EAAE8oB,QAAQxhD,OAAE,IAAS4D,GAAG,OAAOA,IAAI80B,EAAE3U,SAASngB,GAAG69C,GAAG17C,EAAE2yB,GAAGgqB,GAAG38C,EAAEZ,EAAEyQ,EAAE,EAAEgtC,mBAAmB,SAAS78C,EAAE/F,GAAG+F,EAAEA,EAAEu8C,gBAAgB,IAAI1+C,EAAE4+C,KAAK5sC,EAAE6sC,GAAG18C,GAAGZ,EAAEk8C,GAAGz9C,EAAEgS,GAAGzQ,EAAE82B,IAAI,OAAE,IAASj8B,GAAG,OAAOA,IAAImF,EAAE4e,SACjf/jB,GAAGyhD,GAAG17C,EAAEZ,GAAGu9C,GAAG38C,EAAE6P,EAAEhS,EAAE,GAAG,SAASi/C,GAAG98C,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,EAAEC,GAAiB,MAAM,oBAApB5yB,EAAEA,EAAE++B,WAAsCge,sBAAsB/8C,EAAE+8C,sBAAsBltC,EAAE8iB,EAAEC,IAAG34B,EAAE9C,YAAW8C,EAAE9C,UAAU6lD,wBAAsB9L,GAAGrzC,EAAEgS,KAAKqhC,GAAG9xC,EAAEuzB,GAAK,CACpN,SAASsqB,GAAGj9C,EAAE/F,EAAE4D,GAAG,IAAIgS,GAAE,EAAGzQ,EAAEg3C,GAAOzjB,EAAE14B,EAAEijD,YAA2W,MAA/V,kBAAkBvqB,GAAG,OAAOA,EAAEA,EAAE8nB,GAAG9nB,IAAIvzB,EAAEw3C,GAAG38C,GAAGs8C,GAAGF,GAAEt1B,QAAyB4R,GAAG9iB,EAAE,QAAtBA,EAAE5V,EAAEw8C,oBAA4B,IAAS5mC,GAAG2mC,GAAGx2C,EAAEZ,GAAGg3C,IAAIn8C,EAAE,IAAIA,EAAE4D,EAAE80B,GAAG3yB,EAAEygC,cAAc,OAAOxmC,EAAEsS,YAAO,IAAStS,EAAEsS,MAAMtS,EAAEsS,MAAM,KAAKtS,EAAEkjD,QAAQd,GAAGr8C,EAAE++B,UAAU9kC,EAAEA,EAAEsiD,gBAAgBv8C,EAAE6P,KAAI7P,EAAEA,EAAE++B,WAAY2X,4CAA4Ct3C,EAAEY,EAAE22C,0CAA0ChkB,GAAU14B,CAAC,CAC5Z,SAASmjD,GAAGp9C,EAAE/F,EAAE4D,EAAEgS,GAAG7P,EAAE/F,EAAEsS,MAAM,oBAAoBtS,EAAEojD,2BAA2BpjD,EAAEojD,0BAA0Bx/C,EAAEgS,GAAG,oBAAoB5V,EAAEqjD,kCAAkCrjD,EAAEqjD,iCAAiCz/C,EAAEgS,GAAG5V,EAAEsS,QAAQvM,GAAGq8C,GAAGO,oBAAoB3iD,EAAEA,EAAEsS,MAAM,KAAK,CACpQ,SAASgxC,GAAGv9C,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEY,EAAE++B,UAAU3/B,EAAE2kB,MAAMlmB,EAAEuB,EAAEmN,MAAMvM,EAAEygC,cAAcrhC,EAAE+8C,KAAKF,GAAGpB,GAAG76C,GAAG,IAAI2yB,EAAE14B,EAAEijD,YAAY,kBAAkBvqB,GAAG,OAAOA,EAAEvzB,EAAEoO,QAAQitC,GAAG9nB,IAAIA,EAAEikB,GAAG38C,GAAGs8C,GAAGF,GAAEt1B,QAAQ3hB,EAAEoO,QAAQgpC,GAAGx2C,EAAE2yB,IAAIipB,GAAG57C,EAAEnC,EAAEuB,EAAEyQ,GAAGzQ,EAAEmN,MAAMvM,EAAEygC,cAA2C,oBAA7B9N,EAAE14B,EAAEujD,4BAAiDpB,GAAGp8C,EAAE/F,EAAE04B,EAAE90B,GAAGuB,EAAEmN,MAAMvM,EAAEygC,eAAe,oBAAoBxmC,EAAEujD,0BAA0B,oBAAoBp+C,EAAEq+C,yBAAyB,oBAAoBr+C,EAAEs+C,2BAA2B,oBAAoBt+C,EAAEu+C,qBACve1jD,EAAEmF,EAAEmN,MAAM,oBAAoBnN,EAAEu+C,oBAAoBv+C,EAAEu+C,qBAAqB,oBAAoBv+C,EAAEs+C,2BAA2Bt+C,EAAEs+C,4BAA4BzjD,IAAImF,EAAEmN,OAAO8vC,GAAGO,oBAAoBx9C,EAAEA,EAAEmN,MAAM,MAAMqvC,GAAG57C,EAAEnC,EAAEuB,EAAEyQ,GAAGzQ,EAAEmN,MAAMvM,EAAEygC,eAAe,oBAAoBrhC,EAAEw+C,oBAAoB59C,EAAE2K,OAAO,EAAE,CAAC,IAAIkzC,GAAGpnD,MAAM6D,QACvT,SAASwjD,GAAG99C,EAAE/F,EAAE4D,GAAW,GAAG,QAAXmC,EAAEnC,EAAEkgD,MAAiB,oBAAoB/9C,GAAG,kBAAkBA,EAAE,CAAC,GAAGnC,EAAEmgD,OAAO,CAAY,GAAXngD,EAAEA,EAAEmgD,OAAY,CAAC,GAAG,IAAIngD,EAAEq4B,IAAI,MAAMv/B,MAAMuJ,EAAE,MAAM,IAAI2P,EAAEhS,EAAEkhC,SAAS,CAAC,IAAIlvB,EAAE,MAAMlZ,MAAMuJ,EAAE,IAAIF,IAAI,IAAIZ,EAAE,GAAGY,EAAE,OAAG,OAAO/F,GAAG,OAAOA,EAAE8jD,KAAK,oBAAoB9jD,EAAE8jD,KAAK9jD,EAAE8jD,IAAIE,aAAa7+C,EAASnF,EAAE8jD,KAAI9jD,EAAE,SAAS+F,GAAG,IAAI/F,EAAE4V,EAAEssC,KAAKliD,IAAIgiD,KAAKhiD,EAAE4V,EAAEssC,KAAK,CAAC,GAAG,OAAOn8C,SAAS/F,EAAEmF,GAAGnF,EAAEmF,GAAGY,CAAC,EAAE/F,EAAEgkD,WAAW7+C,EAASnF,EAAC,CAAC,GAAG,kBAAkB+F,EAAE,MAAMrJ,MAAMuJ,EAAE,MAAM,IAAIrC,EAAEmgD,OAAO,MAAMrnD,MAAMuJ,EAAE,IAAIF,GAAI,CAAC,OAAOA,CAAC,CACje,SAASk+C,GAAGl+C,EAAE/F,GAAG,GAAG,aAAa+F,EAAE3F,KAAK,MAAM1D,MAAMuJ,EAAE,GAAG,oBAAoBhJ,OAAOC,UAAUF,SAASY,KAAKoC,GAAG,qBAAqB/C,OAAOoX,KAAKrU,GAAG1D,KAAK,MAAM,IAAI0D,GAAI,CACtK,SAASkkD,GAAGn+C,GAAG,SAAS/F,EAAEA,EAAE4D,GAAG,GAAGmC,EAAE,CAAC,IAAI6P,EAAE5V,EAAEmkD,WAAW,OAAOvuC,GAAGA,EAAEwuC,WAAWxgD,EAAE5D,EAAEmkD,WAAWvgD,GAAG5D,EAAEqkD,YAAYrkD,EAAEmkD,WAAWvgD,EAAEA,EAAEwgD,WAAW,KAAKxgD,EAAE8M,MAAM,CAAC,CAAC,CAAC,SAAS9M,EAAEA,EAAEgS,GAAG,IAAI7P,EAAE,OAAO,KAAK,KAAK,OAAO6P,GAAG5V,EAAE4D,EAAEgS,GAAGA,EAAEA,EAAEixB,QAAQ,OAAO,IAAI,CAAC,SAASjxB,EAAE7P,EAAE/F,GAAG,IAAI+F,EAAE,IAAI2hC,IAAI,OAAO1nC,GAAG,OAAOA,EAAEoU,IAAIrO,EAAEM,IAAIrG,EAAEoU,IAAIpU,GAAG+F,EAAEM,IAAIrG,EAAE+T,MAAM/T,GAAGA,EAAEA,EAAE6mC,QAAQ,OAAO9gC,CAAC,CAAC,SAASZ,EAAEY,EAAE/F,GAAsC,OAAnC+F,EAAEu+C,GAAGv+C,EAAE/F,IAAK+T,MAAM,EAAEhO,EAAE8gC,QAAQ,KAAY9gC,CAAC,CAAC,SAAS2yB,EAAE14B,EAAE4D,EAAEgS,GAAa,OAAV5V,EAAE+T,MAAM6B,EAAM7P,EAA4B,QAAjB6P,EAAE5V,EAAEqmC,YAA6BzwB,EAAEA,EAAE7B,OAAQnQ,GAAG5D,EAAE0Q,MAAM,EACpf9M,GAAGgS,GAAE5V,EAAE0Q,MAAM,EAAS9M,GADoaA,CACna,CAAC,SAAS+0B,EAAE34B,GAAsC,OAAnC+F,GAAG,OAAO/F,EAAEqmC,YAAYrmC,EAAE0Q,MAAM,GAAU1Q,CAAC,CAAC,SAAS87B,EAAE/1B,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAG,OAAO5V,GAAG,IAAIA,EAAEi8B,MAAWj8B,EAAEukD,GAAG3gD,EAAEmC,EAAEy+C,KAAK5uC,IAAK0wB,OAAOvgC,EAAE/F,KAAEA,EAAEmF,EAAEnF,EAAE4D,IAAK0iC,OAAOvgC,EAAS/F,EAAC,CAAC,SAAS67B,EAAE91B,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAG,OAAO5V,GAAGA,EAAEykD,cAAc7gD,EAAExD,OAAYwV,EAAEzQ,EAAEnF,EAAE4D,EAAEkmB,QAASg6B,IAAID,GAAG99C,EAAE/F,EAAE4D,GAAGgS,EAAE0wB,OAAOvgC,EAAE6P,KAAEA,EAAE8uC,GAAG9gD,EAAExD,KAAKwD,EAAEwQ,IAAIxQ,EAAEkmB,MAAM,KAAK/jB,EAAEy+C,KAAK5uC,IAAKkuC,IAAID,GAAG99C,EAAE/F,EAAE4D,GAAGgS,EAAE0wB,OAAOvgC,EAAS6P,EAAC,CAAC,SAAS8K,EAAE3a,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAG,OAAO5V,GAAG,IAAIA,EAAEi8B,KAAKj8B,EAAE8kC,UAAUgE,gBAAgBllC,EAAEklC,eAAe9oC,EAAE8kC,UAAU6f,iBAAiB/gD,EAAE+gD,iBAAsB3kD,EACrgB4kD,GAAGhhD,EAAEmC,EAAEy+C,KAAK5uC,IAAK0wB,OAAOvgC,EAAE/F,KAAEA,EAAEmF,EAAEnF,EAAE4D,EAAEu6B,UAAU,KAAMmI,OAAOvgC,EAAS/F,EAAC,CAAC,SAAS2B,EAAEoE,EAAE/F,EAAE4D,EAAEgS,EAAE8iB,GAAG,OAAG,OAAO14B,GAAG,IAAIA,EAAEi8B,MAAWj8B,EAAE6kD,GAAGjhD,EAAEmC,EAAEy+C,KAAK5uC,EAAE8iB,IAAK4N,OAAOvgC,EAAE/F,KAAEA,EAAEmF,EAAEnF,EAAE4D,IAAK0iC,OAAOvgC,EAAS/F,EAAC,CAAC,SAAS4hD,EAAE77C,EAAE/F,EAAE4D,GAAG,GAAG,kBAAkB5D,GAAG,kBAAkBA,EAAE,OAAOA,EAAEukD,GAAG,GAAGvkD,EAAE+F,EAAEy+C,KAAK5gD,IAAK0iC,OAAOvgC,EAAE/F,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEq8B,UAAU,KAAKnC,EAAG,OAAOt2B,EAAE8gD,GAAG1kD,EAAEI,KAAKJ,EAAEoU,IAAIpU,EAAE8pB,MAAM,KAAK/jB,EAAEy+C,KAAK5gD,IAAKkgD,IAAID,GAAG99C,EAAE,KAAK/F,GAAG4D,EAAE0iC,OAAOvgC,EAAEnC,EAAE,KAAKu2B,EAAG,OAAOn6B,EAAE4kD,GAAG5kD,EAAE+F,EAAEy+C,KAAK5gD,IAAK0iC,OAAOvgC,EAAE/F,EAAE,GAAG4jD,GAAG5jD,IAAIs7B,EAAGt7B,GAAG,OAAOA,EAAE6kD,GAAG7kD,EACnf+F,EAAEy+C,KAAK5gD,EAAE,OAAQ0iC,OAAOvgC,EAAE/F,EAAEikD,GAAGl+C,EAAE/F,EAAE,CAAC,OAAO,IAAI,CAAC,SAASyW,EAAE1Q,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAE,OAAOnF,EAAEA,EAAEoU,IAAI,KAAK,GAAG,kBAAkBxQ,GAAG,kBAAkBA,EAAE,OAAO,OAAOuB,EAAE,KAAK22B,EAAE/1B,EAAE/F,EAAE,GAAG4D,EAAEgS,GAAG,GAAG,kBAAkBhS,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEy4B,UAAU,KAAKnC,EAAG,OAAOt2B,EAAEwQ,MAAMjP,EAAEvB,EAAExD,OAAOg6B,EAAGz4B,EAAEoE,EAAE/F,EAAE4D,EAAEkmB,MAAMqU,SAASvoB,EAAEzQ,GAAG02B,EAAE91B,EAAE/F,EAAE4D,EAAEgS,GAAG,KAAK,KAAKukB,EAAG,OAAOv2B,EAAEwQ,MAAMjP,EAAEub,EAAE3a,EAAE/F,EAAE4D,EAAEgS,GAAG,KAAK,GAAGguC,GAAGhgD,IAAI03B,EAAG13B,GAAG,OAAO,OAAOuB,EAAE,KAAKxD,EAAEoE,EAAE/F,EAAE4D,EAAEgS,EAAE,MAAMquC,GAAGl+C,EAAEnC,EAAE,CAAC,OAAO,IAAI,CAAC,SAASi+C,EAAE97C,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,GAAG,kBAAkByQ,GAAG,kBAAkBA,EAAE,OAClekmB,EAAE97B,EADue+F,EAAEA,EAAEN,IAAI7B,IACtf,KAAW,GAAGgS,EAAEzQ,GAAG,GAAG,kBAAkByQ,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEymB,UAAU,KAAKnC,EAAG,OAAOn0B,EAAEA,EAAEN,IAAI,OAAOmQ,EAAExB,IAAIxQ,EAAEgS,EAAExB,MAAM,KAAKwB,EAAExV,OAAOg6B,EAAGz4B,EAAE3B,EAAE+F,EAAE6P,EAAEkU,MAAMqU,SAASh5B,EAAEyQ,EAAExB,KAAKynB,EAAE77B,EAAE+F,EAAE6P,EAAEzQ,GAAG,KAAKg1B,EAAG,OAA2CzZ,EAAE1gB,EAAtC+F,EAAEA,EAAEN,IAAI,OAAOmQ,EAAExB,IAAIxQ,EAAEgS,EAAExB,MAAM,KAAWwB,EAAEzQ,GAAG,GAAGy+C,GAAGhuC,IAAI0lB,EAAG1lB,GAAG,OAAwBjU,EAAE3B,EAAnB+F,EAAEA,EAAEN,IAAI7B,IAAI,KAAWgS,EAAEzQ,EAAE,MAAM8+C,GAAGjkD,EAAE4V,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS5P,EAAEb,EAAEwzB,EAAEmD,EAAED,GAAG,IAAI,IAAInb,EAAE,KAAK6M,EAAE,KAAKK,EAAE+K,EAAEmhB,EAAEnhB,EAAE,EAAEohB,EAAE,KAAK,OAAOnsB,GAAGksB,EAAEhe,EAAEhgC,OAAOg+C,IAAI,CAAClsB,EAAE7Z,MAAM+lC,GAAGC,EAAEnsB,EAAEA,EAAE,MAAMmsB,EAAEnsB,EAAEiZ,QAAQ,IAAIllC,EAAE8U,EAAEtR,EAAEyoB,EAAEkO,EAAEge,GAAGje,GAAG,GAAG,OAAOl6B,EAAE,CAAC,OAAOisB,IAAIA,EAAEmsB,GAAG,KAAK,CAACh0C,GAAG6nB,GAAG,OACjfjsB,EAAE0kC,WAAWrmC,EAAEmF,EAAEyoB,GAAG+K,EAAED,EAAE/2B,EAAEg3B,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAE/e,EAAE4rB,EAAEsZ,QAAQllC,EAAE4rB,EAAE5rB,EAAEisB,EAAEmsB,CAAC,CAAC,GAAGD,IAAIhe,EAAEhgC,OAAO,OAAO8H,EAAEuB,EAAEyoB,GAAGlN,EAAE,GAAG,OAAOkN,EAAE,CAAC,KAAKksB,EAAEhe,EAAEhgC,OAAOg+C,IAAkB,QAAdlsB,EAAEg0B,EAAEz8C,EAAE22B,EAAEge,GAAGje,MAAclD,EAAED,EAAE9K,EAAE+K,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAEkN,EAAEL,EAAEsZ,QAAQjZ,EAAEL,EAAEK,GAAG,OAAOlN,CAAC,CAAC,IAAIkN,EAAEhY,EAAEzQ,EAAEyoB,GAAGksB,EAAEhe,EAAEhgC,OAAOg+C,IAAsB,QAAlBC,EAAE8H,EAAEj0B,EAAEzoB,EAAE20C,EAAEhe,EAAEge,GAAGje,MAAc91B,GAAG,OAAOg0C,EAAE1T,WAAWzY,EAAEya,OAAO,OAAO0R,EAAE3lC,IAAI0lC,EAAEC,EAAE3lC,KAAKukB,EAAED,EAAEqhB,EAAEphB,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAEq5B,EAAExsB,EAAEsZ,QAAQkT,EAAExsB,EAAEwsB,GAA4C,OAAzCh0C,GAAG6nB,EAAElE,SAAQ,SAAS3jB,GAAG,OAAO/F,EAAEmF,EAAEY,EAAE,IAAU2a,CAAC,CAAC,SAAS3O,EAAE5M,EAAEwzB,EAAEmD,EAAED,GAAG,IAAInb,EAAE4a,EAAGQ,GAAG,GAAG,oBAAoBpb,EAAE,MAAMhkB,MAAMuJ,EAAE,MAAkB,GAAG,OAAf61B,EAAEpb,EAAE9iB,KAAKk+B,IAC1e,MAAMp/B,MAAMuJ,EAAE,MAAM,IAAI,IAAIsnB,EAAE7M,EAAE,KAAKkN,EAAE+K,EAAEmhB,EAAEnhB,EAAE,EAAEohB,EAAE,KAAKp4C,EAAEm6B,EAAEtc,OAAO,OAAOoO,IAAIjsB,EAAE6hB,KAAKs2B,IAAIn4C,EAAEm6B,EAAEtc,OAAO,CAACoO,EAAE7Z,MAAM+lC,GAAGC,EAAEnsB,EAAEA,EAAE,MAAMmsB,EAAEnsB,EAAEiZ,QAAQ,IAAI90B,EAAE0E,EAAEtR,EAAEyoB,EAAEjsB,EAAEnE,MAAMq+B,GAAG,GAAG,OAAO9pB,EAAE,CAAC,OAAO6b,IAAIA,EAAEmsB,GAAG,KAAK,CAACh0C,GAAG6nB,GAAG,OAAO7b,EAAEs0B,WAAWrmC,EAAEmF,EAAEyoB,GAAG+K,EAAED,EAAE3mB,EAAE4mB,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAE3O,EAAEwb,EAAEsZ,QAAQ90B,EAAEwb,EAAExb,EAAE6b,EAAEmsB,CAAC,CAAC,GAAGp4C,EAAE6hB,KAAK,OAAO5f,EAAEuB,EAAEyoB,GAAGlN,EAAE,GAAG,OAAOkN,EAAE,CAAC,MAAMjsB,EAAE6hB,KAAKs2B,IAAIn4C,EAAEm6B,EAAEtc,OAAwB,QAAjB7d,EAAEigD,EAAEz8C,EAAExD,EAAEnE,MAAMq+B,MAAclD,EAAED,EAAE/2B,EAAEg3B,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAE/e,EAAE4rB,EAAEsZ,QAAQllC,EAAE4rB,EAAE5rB,GAAG,OAAO+e,CAAC,CAAC,IAAIkN,EAAEhY,EAAEzQ,EAAEyoB,IAAIjsB,EAAE6hB,KAAKs2B,IAAIn4C,EAAEm6B,EAAEtc,OAA4B,QAArB7d,EAAEkgD,EAAEj0B,EAAEzoB,EAAE20C,EAAEn4C,EAAEnE,MAAMq+B,MAAc91B,GAAG,OAAOpE,EAAE0kC,WAChfzY,EAAEya,OAAO,OAAO1mC,EAAEyS,IAAI0lC,EAAEn4C,EAAEyS,KAAKukB,EAAED,EAAE/2B,EAAEg3B,EAAEmhB,GAAG,OAAOvsB,EAAE7M,EAAE/e,EAAE4rB,EAAEsZ,QAAQllC,EAAE4rB,EAAE5rB,GAA4C,OAAzCoE,GAAG6nB,EAAElE,SAAQ,SAAS3jB,GAAG,OAAO/F,EAAEmF,EAAEY,EAAE,IAAU2a,CAAC,CAAC,OAAO,SAAS3a,EAAE6P,EAAE8iB,EAAEoD,GAAG,IAAID,EAAE,kBAAkBnD,GAAG,OAAOA,GAAGA,EAAEt4B,OAAOg6B,GAAI,OAAO1B,EAAEtkB,IAAIynB,IAAInD,EAAEA,EAAE5O,MAAMqU,UAAU,IAAIzd,EAAE,kBAAkBgY,GAAG,OAAOA,EAAE,GAAGhY,EAAE,OAAOgY,EAAE2D,UAAU,KAAKnC,EAAGn0B,EAAE,CAAS,IAAR2a,EAAEgY,EAAEtkB,IAAQynB,EAAEjmB,EAAE,OAAOimB,GAAG,CAAC,GAAGA,EAAEznB,MAAMsM,EAAE,CAAC,GAAmB,IAAZmb,EAAEI,KAAY,GAAGvD,EAAEt4B,OAAOg6B,EAAG,CAACx2B,EAAEmC,EAAE81B,EAAEgL,UAASjxB,EAAEzQ,EAAE02B,EAAEnD,EAAE5O,MAAMqU,WAAYmI,OAAOvgC,EAAEA,EAAE6P,EAAE,MAAM7P,CAAC,OAAe,GAAG81B,EAAE4oB,cAAc/rB,EAAEt4B,KAAK,CAACwD,EAAEmC,EAAE81B,EAAEgL,UAC5ejxB,EAAEzQ,EAAE02B,EAAEnD,EAAE5O,QAASg6B,IAAID,GAAG99C,EAAE81B,EAAEnD,GAAG9iB,EAAE0wB,OAAOvgC,EAAEA,EAAE6P,EAAE,MAAM7P,CAAC,CAAEnC,EAAEmC,EAAE81B,GAAG,KAAK,CAAM77B,EAAE+F,EAAE81B,GAAGA,EAAEA,EAAEgL,OAAO,CAACnO,EAAEt4B,OAAOg6B,IAAIxkB,EAAEivC,GAAGnsB,EAAE5O,MAAMqU,SAASp4B,EAAEy+C,KAAK1oB,EAAEpD,EAAEtkB,MAAOkyB,OAAOvgC,EAAEA,EAAE6P,KAAIkmB,EAAE4oB,GAAGhsB,EAAEt4B,KAAKs4B,EAAEtkB,IAAIskB,EAAE5O,MAAM,KAAK/jB,EAAEy+C,KAAK1oB,IAAKgoB,IAAID,GAAG99C,EAAE6P,EAAE8iB,GAAGoD,EAAEwK,OAAOvgC,EAAEA,EAAE+1B,EAAE,CAAC,OAAOnD,EAAE5yB,GAAG,KAAKo0B,EAAGp0B,EAAE,CAAC,IAAI81B,EAAEnD,EAAEtkB,IAAI,OAAOwB,GAAG,CAAC,GAAGA,EAAExB,MAAMynB,EAAC,CAAC,GAAG,IAAIjmB,EAAEqmB,KAAKrmB,EAAEkvB,UAAUgE,gBAAgBpQ,EAAEoQ,eAAelzB,EAAEkvB,UAAU6f,iBAAiBjsB,EAAEisB,eAAe,CAAC/gD,EAAEmC,EAAE6P,EAAEixB,UAASjxB,EAAEzQ,EAAEyQ,EAAE8iB,EAAEyF,UAAU,KAAMmI,OAAOvgC,EAAEA,EAAE6P,EAAE,MAAM7P,CAAC,CAAMnC,EAAEmC,EAAE6P,GAAG,KAAM,CAAK5V,EAAE+F,EAAE6P,GAAGA,EAAEA,EAAEixB,OAAO,EAACjxB,EACpfgvC,GAAGlsB,EAAE3yB,EAAEy+C,KAAK1oB,IAAKwK,OAAOvgC,EAAEA,EAAE6P,CAAC,CAAC,OAAO+iB,EAAE5yB,GAAG,GAAG,kBAAkB2yB,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAO9iB,GAAG,IAAIA,EAAEqmB,KAAKr4B,EAAEmC,EAAE6P,EAAEixB,UAASjxB,EAAEzQ,EAAEyQ,EAAE8iB,IAAK4N,OAAOvgC,EAAEA,EAAE6P,IAAIhS,EAAEmC,EAAE6P,IAAGA,EAAE2uC,GAAG7rB,EAAE3yB,EAAEy+C,KAAK1oB,IAAKwK,OAAOvgC,EAAEA,EAAE6P,GAAG+iB,EAAE5yB,GAAG,GAAG69C,GAAGlrB,GAAG,OAAO1yB,EAAED,EAAE6P,EAAE8iB,EAAEoD,GAAG,GAAGR,EAAG5C,GAAG,OAAO3mB,EAAEhM,EAAE6P,EAAE8iB,EAAEoD,GAAc,GAAXpb,GAAGujC,GAAGl+C,EAAE2yB,GAAM,qBAAqBA,IAAImD,EAAE,OAAO91B,EAAEk2B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMv/B,MAAMuJ,EAAE,IAAIm2B,EAAGr2B,EAAE3F,OAAO,cAAe,OAAOwD,EAAEmC,EAAE6P,EAAE,CAAC,CAAC,IAAIkvC,GAAGZ,IAAG,GAAIa,GAAGb,IAAG,GAAIc,GAAG,CAAC,EAAEC,GAAGjJ,GAAGgJ,IAAIE,GAAGlJ,GAAGgJ,IAAIG,GAAGnJ,GAAGgJ,IACtd,SAASI,GAAGr/C,GAAG,GAAGA,IAAIi/C,GAAG,MAAMtoD,MAAMuJ,EAAE,MAAM,OAAOF,CAAC,CAAC,SAASs/C,GAAGt/C,EAAE/F,GAAyC,OAAtCk8C,GAAEiJ,GAAGnlD,GAAGk8C,GAAEgJ,GAAGn/C,GAAGm2C,GAAE+I,GAAGD,IAAIj/C,EAAE/F,EAAEggC,UAAmB,KAAK,EAAE,KAAK,GAAGhgC,GAAGA,EAAEA,EAAEslD,iBAAiBtlD,EAAEu/B,aAAaF,GAAG,KAAK,IAAI,MAAM,QAAkEr/B,EAAEq/B,GAArCr/B,GAAvB+F,EAAE,IAAIA,EAAE/F,EAAEwkC,WAAWxkC,GAAMu/B,cAAc,KAAKx5B,EAAEA,EAAEw/C,SAAkBtJ,GAAEgJ,IAAI/I,GAAE+I,GAAGjlD,EAAE,CAAC,SAASwlD,KAAKvJ,GAAEgJ,IAAIhJ,GAAEiJ,IAAIjJ,GAAEkJ,GAAG,CAAC,SAASM,GAAG1/C,GAAGq/C,GAAGD,GAAGr+B,SAAS,IAAI9mB,EAAEolD,GAAGH,GAAGn+B,SAAaljB,EAAEy7B,GAAGr/B,EAAE+F,EAAE3F,MAAMJ,IAAI4D,IAAIs4C,GAAEgJ,GAAGn/C,GAAGm2C,GAAE+I,GAAGrhD,GAAG,CAAC,SAAS8hD,GAAG3/C,GAAGm/C,GAAGp+B,UAAU/gB,IAAIk2C,GAAEgJ,IAAIhJ,GAAEiJ,IAAI,CAAC,IAAIS,GAAE3J,GAAG,GAC9c,SAAS4J,GAAG7/C,GAAG,IAAI,IAAI/F,EAAE+F,EAAE,OAAO/F,GAAG,CAAC,GAAG,KAAKA,EAAEi8B,IAAI,CAAC,IAAIr4B,EAAE5D,EAAEwmC,cAAc,GAAG,OAAO5iC,IAAmB,QAAfA,EAAEA,EAAE6iC,aAAqB,OAAO7iC,EAAEtD,MAAM,OAAOsD,EAAEtD,MAAM,OAAON,CAAC,MAAM,GAAG,KAAKA,EAAEi8B,UAAK,IAASj8B,EAAE6lD,cAAcC,aAAa,GAAG,KAAa,GAAR9lD,EAAE0Q,OAAU,OAAO1Q,OAAO,GAAG,OAAOA,EAAE4mC,MAAM,CAAC5mC,EAAE4mC,MAAMN,OAAOtmC,EAAEA,EAAEA,EAAE4mC,MAAM,QAAQ,CAAC,GAAG5mC,IAAI+F,EAAE,MAAM,KAAK,OAAO/F,EAAE6mC,SAAS,CAAC,GAAG,OAAO7mC,EAAEsmC,QAAQtmC,EAAEsmC,SAASvgC,EAAE,OAAO,KAAK/F,EAAEA,EAAEsmC,MAAM,CAACtmC,EAAE6mC,QAAQP,OAAOtmC,EAAEsmC,OAAOtmC,EAAEA,EAAE6mC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIkf,GAAG,KAAKC,GAAG,KAAKC,IAAG,EACpd,SAASC,GAAGngD,EAAE/F,GAAG,IAAI4D,EAAEuiD,GAAG,EAAE,KAAK,KAAK,GAAGviD,EAAE6gD,YAAY,UAAU7gD,EAAExD,KAAK,UAAUwD,EAAEkhC,UAAU9kC,EAAE4D,EAAE0iC,OAAOvgC,EAAEnC,EAAE8M,MAAM,EAAE,OAAO3K,EAAEo+C,YAAYp+C,EAAEo+C,WAAWC,WAAWxgD,EAAEmC,EAAEo+C,WAAWvgD,GAAGmC,EAAEs+C,YAAYt+C,EAAEo+C,WAAWvgD,CAAC,CAAC,SAASwiD,GAAGrgD,EAAE/F,GAAG,OAAO+F,EAAEk2B,KAAK,KAAK,EAAE,IAAIr4B,EAAEmC,EAAE3F,KAAyE,OAAO,QAA3EJ,EAAE,IAAIA,EAAEggC,UAAUp8B,EAAE3C,gBAAgBjB,EAAE28B,SAAS17B,cAAc,KAAKjB,KAAmB+F,EAAE++B,UAAU9kC,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAK+F,EAAEsgD,cAAc,IAAIrmD,EAAEggC,SAAS,KAAKhgC,KAAY+F,EAAE++B,UAAU9kC,GAAE,GAAwB,QAAQ,OAAM,EAAG,CAC1e,SAASsmD,GAAGvgD,GAAG,GAAGkgD,GAAG,CAAC,IAAIjmD,EAAEgmD,GAAG,GAAGhmD,EAAE,CAAC,IAAI4D,EAAE5D,EAAE,IAAIomD,GAAGrgD,EAAE/F,GAAG,CAAqB,KAApBA,EAAEs7C,GAAG13C,EAAEyzC,gBAAqB+O,GAAGrgD,EAAE/F,GAAuC,OAAnC+F,EAAE2K,OAAe,KAAT3K,EAAE2K,MAAY,EAAEu1C,IAAG,OAAGF,GAAGhgD,GAASmgD,GAAGH,GAAGniD,EAAE,CAACmiD,GAAGhgD,EAAEigD,GAAG1K,GAAGt7C,EAAEy/B,WAAW,MAAM15B,EAAE2K,OAAe,KAAT3K,EAAE2K,MAAY,EAAEu1C,IAAG,EAAGF,GAAGhgD,CAAC,CAAC,CAAC,SAASwgD,GAAGxgD,GAAG,IAAIA,EAAEA,EAAEugC,OAAO,OAAOvgC,GAAG,IAAIA,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,KAAK,KAAKl2B,EAAEk2B,KAAKl2B,EAAEA,EAAEugC,OAAOyf,GAAGhgD,CAAC,CAC7S,SAASygD,GAAGzgD,GAAG,GAAGA,IAAIggD,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAGxgD,GAAGkgD,IAAG,GAAG,EAAG,IAAIjmD,EAAE+F,EAAE3F,KAAK,GAAG,IAAI2F,EAAEk2B,KAAK,SAASj8B,GAAG,SAASA,IAAIi7C,GAAGj7C,EAAE+F,EAAE8/C,eAAe,IAAI7lD,EAAEgmD,GAAGhmD,GAAGkmD,GAAGngD,EAAE/F,GAAGA,EAAEs7C,GAAGt7C,EAAEq3C,aAAmB,GAANkP,GAAGxgD,GAAM,KAAKA,EAAEk2B,IAAI,CAAgD,KAA7Bl2B,EAAE,QAApBA,EAAEA,EAAEygC,eAAyBzgC,EAAE0gC,WAAW,MAAW,MAAM/pC,MAAMuJ,EAAE,MAAMF,EAAE,CAAiB,IAAhBA,EAAEA,EAAEsxC,YAAgBr3C,EAAE,EAAE+F,GAAG,CAAC,GAAG,IAAIA,EAAEi6B,SAAS,CAAC,IAAIp8B,EAAEmC,EAAEzF,KAAK,GAAG,OAAOsD,EAAE,CAAC,GAAG,IAAI5D,EAAE,CAACgmD,GAAG1K,GAAGv1C,EAAEsxC,aAAa,MAAMtxC,CAAC,CAAC/F,GAAG,KAAK,MAAM4D,GAAG,OAAOA,GAAG,OAAOA,GAAG5D,GAAG,CAAC+F,EAAEA,EAAEsxC,WAAW,CAAC2O,GAAG,IAAI,CAAC,MAAMA,GAAGD,GAAGzK,GAAGv1C,EAAE++B,UAAUuS,aAAa,KAAK,OAAM,CAAE,CACxf,SAASoP,KAAKT,GAAGD,GAAG,KAAKE,IAAG,CAAE,CAAC,IAAIS,GAAG,GAAG,SAASC,KAAK,IAAI,IAAI5gD,EAAE,EAAEA,EAAE2gD,GAAG5qD,OAAOiK,IAAI2gD,GAAG3gD,GAAG6gD,8BAA8B,KAAKF,GAAG5qD,OAAO,CAAC,CAAC,IAAI+qD,GAAG7sB,EAAG8sB,uBAAuBC,GAAG/sB,EAAGulB,wBAAwByH,GAAG,EAAE93C,GAAE,KAAK+3C,GAAE,KAAKC,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAM3qD,MAAMuJ,EAAE,KAAM,CAAC,SAASqhD,GAAGvhD,EAAE/F,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAI4D,EAAE,EAAEA,EAAE5D,EAAElE,QAAQ8H,EAAEmC,EAAEjK,OAAO8H,IAAI,IAAImzC,GAAGhxC,EAAEnC,GAAG5D,EAAE4D,IAAI,OAAM,EAAG,OAAM,CAAE,CAChY,SAAS2jD,GAAGxhD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAyH,GAAtHsuB,GAAGtuB,EAAExpB,GAAElP,EAAEA,EAAEwmC,cAAc,KAAKxmC,EAAE6gD,YAAY,KAAK7gD,EAAEsgD,MAAM,EAAEuG,GAAG//B,QAAQ,OAAO/gB,GAAG,OAAOA,EAAEygC,cAAcghB,GAAGC,GAAG1hD,EAAEnC,EAAEgS,EAAEzQ,GAAMiiD,GAAG,CAAC1uB,EAAE,EAAE,EAAE,CAAO,GAAN0uB,IAAG,IAAQ,GAAG1uB,GAAG,MAAMh8B,MAAMuJ,EAAE,MAAMyyB,GAAG,EAAEwuB,GAAED,GAAE,KAAKjnD,EAAE6gD,YAAY,KAAKgG,GAAG//B,QAAQ4gC,GAAG3hD,EAAEnC,EAAEgS,EAAEzQ,EAAE,OAAOiiD,GAAG,CAA+D,GAA9DP,GAAG//B,QAAQ6gC,GAAG3nD,EAAE,OAAOinD,IAAG,OAAOA,GAAEznC,KAAKwnC,GAAG,EAAEE,GAAED,GAAE/3C,GAAE,KAAKi4C,IAAG,EAAMnnD,EAAE,MAAMtD,MAAMuJ,EAAE,MAAM,OAAOF,CAAC,CAAC,SAAS6hD,KAAK,IAAI7hD,EAAE,CAACygC,cAAc,KAAKsa,UAAU,KAAK+G,UAAU,KAAKxxB,MAAM,KAAK7W,KAAK,MAA8C,OAAxC,OAAO0nC,GAAEh4C,GAAEs3B,cAAc0gB,GAAEnhD,EAAEmhD,GAAEA,GAAE1nC,KAAKzZ,EAASmhD,EAAC,CAChf,SAASY,KAAK,GAAG,OAAOb,GAAE,CAAC,IAAIlhD,EAAEmJ,GAAEm3B,UAAUtgC,EAAE,OAAOA,EAAEA,EAAEygC,cAAc,IAAI,MAAMzgC,EAAEkhD,GAAEznC,KAAK,IAAIxf,EAAE,OAAOknD,GAAEh4C,GAAEs3B,cAAc0gB,GAAE1nC,KAAK,GAAG,OAAOxf,EAAEknD,GAAElnD,EAAEinD,GAAElhD,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMrJ,MAAMuJ,EAAE,MAAUF,EAAE,CAACygC,eAAPygB,GAAElhD,GAAqBygC,cAAcsa,UAAUmG,GAAEnG,UAAU+G,UAAUZ,GAAEY,UAAUxxB,MAAM4wB,GAAE5wB,MAAM7W,KAAK,MAAM,OAAO0nC,GAAEh4C,GAAEs3B,cAAc0gB,GAAEnhD,EAAEmhD,GAAEA,GAAE1nC,KAAKzZ,CAAC,CAAC,OAAOmhD,EAAC,CAAC,SAASa,GAAGhiD,EAAE/F,GAAG,MAAM,oBAAoBA,EAAEA,EAAE+F,GAAG/F,CAAC,CACxY,SAASgoD,GAAGjiD,GAAG,IAAI/F,EAAE8nD,KAAKlkD,EAAE5D,EAAEq2B,MAAM,GAAG,OAAOzyB,EAAE,MAAMlH,MAAMuJ,EAAE,MAAMrC,EAAEqkD,oBAAoBliD,EAAE,IAAI6P,EAAEqxC,GAAE9hD,EAAEyQ,EAAEiyC,UAAUnvB,EAAE90B,EAAEs9C,QAAQ,GAAG,OAAOxoB,EAAE,CAAC,GAAG,OAAOvzB,EAAE,CAAC,IAAIwzB,EAAExzB,EAAEqa,KAAKra,EAAEqa,KAAKkZ,EAAElZ,KAAKkZ,EAAElZ,KAAKmZ,CAAC,CAAC/iB,EAAEiyC,UAAU1iD,EAAEuzB,EAAE90B,EAAEs9C,QAAQ,IAAI,CAAC,GAAG,OAAO/7C,EAAE,CAACA,EAAEA,EAAEqa,KAAK5J,EAAEA,EAAEkrC,UAAU,IAAIhlB,EAAEnD,EAAED,EAAE,KAAKmD,EAAE12B,EAAE,EAAE,CAAC,IAAIub,EAAEmb,EAAE0lB,KAAK,IAAIyF,GAAGtmC,KAAKA,EAAE,OAAOob,IAAIA,EAAEA,EAAEtc,KAAK,CAAC+hC,KAAK,EAAE2G,OAAOrsB,EAAEqsB,OAAOC,aAAatsB,EAAEssB,aAAaC,WAAWvsB,EAAEusB,WAAW5oC,KAAK,OAAO5J,EAAEimB,EAAEssB,eAAepiD,EAAE81B,EAAEusB,WAAWriD,EAAE6P,EAAEimB,EAAEqsB,YAAY,CAAC,IAAIvmD,EAAE,CAAC4/C,KAAK7gC,EAAEwnC,OAAOrsB,EAAEqsB,OAAOC,aAAatsB,EAAEssB,aAC9fC,WAAWvsB,EAAEusB,WAAW5oC,KAAK,MAAM,OAAOsc,GAAGnD,EAAEmD,EAAEn6B,EAAE+2B,EAAE9iB,GAAGkmB,EAAEA,EAAEtc,KAAK7d,EAAEuN,GAAEoxC,OAAO5/B,EAAEohC,IAAIphC,CAAC,CAACmb,EAAEA,EAAErc,IAAI,OAAO,OAAOqc,GAAGA,IAAI12B,GAAG,OAAO22B,EAAEpD,EAAE9iB,EAAEkmB,EAAEtc,KAAKmZ,EAAEoe,GAAGnhC,EAAE5V,EAAEwmC,iBAAiB+Z,IAAG,GAAIvgD,EAAEwmC,cAAc5wB,EAAE5V,EAAE8gD,UAAUpoB,EAAE14B,EAAE6nD,UAAU/rB,EAAEl4B,EAAEykD,kBAAkBzyC,CAAC,CAAC,MAAM,CAAC5V,EAAEwmC,cAAc5iC,EAAE0kD,SAAS,CAC/Q,SAASC,GAAGxiD,GAAG,IAAI/F,EAAE8nD,KAAKlkD,EAAE5D,EAAEq2B,MAAM,GAAG,OAAOzyB,EAAE,MAAMlH,MAAMuJ,EAAE,MAAMrC,EAAEqkD,oBAAoBliD,EAAE,IAAI6P,EAAEhS,EAAE0kD,SAASnjD,EAAEvB,EAAEs9C,QAAQxoB,EAAE14B,EAAEwmC,cAAc,GAAG,OAAOrhC,EAAE,CAACvB,EAAEs9C,QAAQ,KAAK,IAAIvoB,EAAExzB,EAAEA,EAAEqa,KAAK,GAAGkZ,EAAE3yB,EAAE2yB,EAAEC,EAAEuvB,QAAQvvB,EAAEA,EAAEnZ,WAAWmZ,IAAIxzB,GAAG4xC,GAAGre,EAAE14B,EAAEwmC,iBAAiB+Z,IAAG,GAAIvgD,EAAEwmC,cAAc9N,EAAE,OAAO14B,EAAE6nD,YAAY7nD,EAAE8gD,UAAUpoB,GAAG90B,EAAEykD,kBAAkB3vB,CAAC,CAAC,MAAM,CAACA,EAAE9iB,EAAE,CACrV,SAAS4yC,GAAGziD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE5V,EAAEyoD,YAAY7yC,EAAEA,EAAE5V,EAAE0oD,SAAS,IAAIvjD,EAAEnF,EAAE4mD,8BAAyI,GAAxG,OAAOzhD,EAAEY,EAAEZ,IAAIyQ,GAAU7P,EAAEA,EAAE4iD,kBAAiB5iD,GAAGihD,GAAGjhD,KAAKA,KAAE/F,EAAE4mD,8BAA8BhxC,EAAE8wC,GAAGvqD,KAAK6D,KAAM+F,EAAE,OAAOnC,EAAE5D,EAAE0oD,SAAoB,MAAXhC,GAAGvqD,KAAK6D,GAAStD,MAAMuJ,EAAE,KAAM,CAC/P,SAAS2iD,GAAG7iD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAE0jD,GAAE,GAAG,OAAO1jD,EAAE,MAAMzI,MAAMuJ,EAAE,MAAM,IAAIyyB,EAAE14B,EAAEyoD,YAAY9vB,EAAED,EAAE14B,EAAE0oD,SAAS5sB,EAAE+qB,GAAG//B,QAAQ+U,EAAEC,EAAEgtB,UAAS,WAAW,OAAON,GAAGrjD,EAAEnF,EAAE4D,EAAE,IAAG8c,EAAEmb,EAAE,GAAGl6B,EAAEk6B,EAAE,GAAGA,EAAEqrB,GAAE,IAAItF,EAAE77C,EAAEygC,cAAc/vB,EAAEmrC,EAAEM,KAAKL,EAAEprC,EAAEsyC,YAAY/iD,EAAE47C,EAAEn4B,OAAOm4B,EAAEA,EAAEoH,UAAU,IAAIj3C,EAAE7C,GACuO,OADrOnJ,EAAEygC,cAAc,CAAC0b,KAAKzrC,EAAEgT,OAAOzpB,EAAEgpD,UAAUpzC,GAAGkmB,EAAEmtB,WAAU,WAAWxyC,EAAEsyC,YAAYnlD,EAAE6S,EAAEyyC,YAAYxoC,EAAE,IAAI3a,EAAE2yB,EAAE14B,EAAE0oD,SAAS,IAAI3R,GAAGpe,EAAE5yB,GAAG,CAACA,EAAEnC,EAAE5D,EAAE0oD,SAAS3R,GAAGp1C,EAAEoE,KAAK2a,EAAE3a,GAAGA,EAAE08C,GAAG1wC,GAAG5M,EAAEwjD,kBAAkB5iD,EAAEZ,EAAE4lC,cAAchlC,EAAEZ,EAAEwjD,iBAAiBxjD,EAAEimC,gBAAgBrlC,EAAE,IAAI,IAAI6P,EAC5fzQ,EAAEkmC,cAAcvP,EAAE/1B,EAAE,EAAE+1B,GAAG,CAAC,IAAID,EAAE,GAAGsP,GAAGrP,GAAGlhB,EAAE,GAAGihB,EAAEjmB,EAAEimB,IAAI91B,EAAE+1B,IAAIlhB,CAAC,CAAC,CAAC,GAAE,CAAChX,EAAE5D,EAAE4V,IAAIkmB,EAAEmtB,WAAU,WAAW,OAAOrzC,EAAE5V,EAAE0oD,SAAQ,WAAW,IAAI3iD,EAAE0Q,EAAEsyC,YAAYnlD,EAAE6S,EAAEyyC,YAAY,IAAItlD,EAAEmC,EAAE/F,EAAE0oD,UAAU,IAAI9yC,EAAE6sC,GAAG1wC,GAAG5M,EAAEwjD,kBAAkB/yC,EAAEzQ,EAAE4lC,YAAY,CAAC,MAAMgP,GAAGn2C,GAAE,WAAW,MAAMm2C,CAAE,GAAE,CAAC,GAAE,GAAE,CAAC/5C,EAAE4V,IAAImhC,GAAG8K,EAAEj+C,IAAImzC,GAAG/wC,EAAEhG,IAAI+2C,GAAG6K,EAAEhsC,MAAK7P,EAAE,CAACm7C,QAAQ,KAAKoH,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkB1mD,IAAK2mD,SAAS5nC,EAAEyoC,GAAG32C,KAAK,KAAKtD,GAAEnJ,GAAG81B,EAAExF,MAAMtwB,EAAE81B,EAAEgsB,UAAU,KAAKlmD,EAAE6mD,GAAGrjD,EAAEnF,EAAE4D,GAAGi4B,EAAE2K,cAAc3K,EAAEilB,UAAUn/C,GAAUA,CAAC,CACve,SAASynD,GAAGrjD,EAAE/F,EAAE4D,GAAc,OAAOglD,GAAZd,KAAiB/hD,EAAE/F,EAAE4D,EAAE,CAAC,SAASylD,GAAGtjD,GAAG,IAAI/F,EAAE4nD,KAAmL,MAA9K,oBAAoB7hD,IAAIA,EAAEA,KAAK/F,EAAEwmC,cAAcxmC,EAAE8gD,UAAU/6C,EAAoFA,GAAlFA,EAAE/F,EAAEq2B,MAAM,CAAC6qB,QAAQ,KAAKoH,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkBtiD,IAAOuiD,SAASa,GAAG32C,KAAK,KAAKtD,GAAEnJ,GAAS,CAAC/F,EAAEwmC,cAAczgC,EAAE,CAClR,SAASujD,GAAGvjD,EAAE/F,EAAE4D,EAAEgS,GAAkO,OAA/N7P,EAAE,CAACk2B,IAAIl2B,EAAE2L,OAAO1R,EAAEqe,QAAQza,EAAE2lD,KAAK3zC,EAAE4J,KAAK,MAAsB,QAAhBxf,EAAEkP,GAAE2xC,cAAsB7gD,EAAE,CAACmkD,WAAW,MAAMj1C,GAAE2xC,YAAY7gD,EAAEA,EAAEmkD,WAAWp+C,EAAEyZ,KAAKzZ,GAAmB,QAAfnC,EAAE5D,EAAEmkD,YAAoBnkD,EAAEmkD,WAAWp+C,EAAEyZ,KAAKzZ,GAAG6P,EAAEhS,EAAE4b,KAAK5b,EAAE4b,KAAKzZ,EAAEA,EAAEyZ,KAAK5J,EAAE5V,EAAEmkD,WAAWp+C,GAAWA,CAAC,CAAC,SAASyjD,GAAGzjD,GAA4B,OAAdA,EAAE,CAAC+gB,QAAQ/gB,GAAhB6hD,KAA4BphB,cAAczgC,CAAC,CAAC,SAAS0jD,KAAK,OAAO3B,KAAKthB,aAAa,CAAC,SAASkjB,GAAG3jD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEyiD,KAAK14C,GAAEwB,OAAO3K,EAAEZ,EAAEqhC,cAAc8iB,GAAG,EAAEtpD,EAAE4D,OAAE,OAAO,IAASgS,EAAE,KAAKA,EAAE,CACnc,SAAS+zC,GAAG5jD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAE2iD,KAAKlyC,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI8iB,OAAE,EAAO,GAAG,OAAOuuB,GAAE,CAAC,IAAItuB,EAAEsuB,GAAEzgB,cAA0B,GAAZ9N,EAAEC,EAAEta,QAAW,OAAOzI,GAAG0xC,GAAG1xC,EAAE+iB,EAAE4wB,MAAmB,YAAZD,GAAGtpD,EAAE4D,EAAE80B,EAAE9iB,EAAU,CAAC1G,GAAEwB,OAAO3K,EAAEZ,EAAEqhC,cAAc8iB,GAAG,EAAEtpD,EAAE4D,EAAE80B,EAAE9iB,EAAE,CAAC,SAASg0C,GAAG7jD,EAAE/F,GAAG,OAAO0pD,GAAG,IAAI,EAAE3jD,EAAE/F,EAAE,CAAC,SAAS6pD,GAAG9jD,EAAE/F,GAAG,OAAO2pD,GAAG,IAAI,EAAE5jD,EAAE/F,EAAE,CAAC,SAAS8pD,GAAG/jD,EAAE/F,GAAG,OAAO2pD,GAAG,EAAE,EAAE5jD,EAAE/F,EAAE,CAAC,SAAS+pD,GAAGhkD,EAAE/F,GAAG,MAAG,oBAAoBA,GAAS+F,EAAEA,IAAI/F,EAAE+F,GAAG,WAAW/F,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAAS+F,EAAEA,IAAI/F,EAAE8mB,QAAQ/gB,EAAE,WAAW/F,EAAE8mB,QAAQ,IAAI,QAA1E,CAA2E,CACnd,SAASkjC,GAAGjkD,EAAE/F,EAAE4D,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEsC,OAAO,CAACH,IAAI,KAAY4jD,GAAG,EAAE,EAAEI,GAAGv3C,KAAK,KAAKxS,EAAE+F,GAAGnC,EAAE,CAAC,SAASqmD,KAAK,CAAC,SAASC,GAAGnkD,EAAE/F,GAAG,IAAI4D,EAAEkkD,KAAK9nD,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI4V,EAAEhS,EAAE4iC,cAAc,OAAG,OAAO5wB,GAAG,OAAO5V,GAAGsnD,GAAGtnD,EAAE4V,EAAE,IAAWA,EAAE,IAAGhS,EAAE4iC,cAAc,CAACzgC,EAAE/F,GAAU+F,EAAC,CAAC,SAASokD,GAAGpkD,EAAE/F,GAAG,IAAI4D,EAAEkkD,KAAK9nD,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI4V,EAAEhS,EAAE4iC,cAAc,OAAG,OAAO5wB,GAAG,OAAO5V,GAAGsnD,GAAGtnD,EAAE4V,EAAE,IAAWA,EAAE,IAAG7P,EAAEA,IAAInC,EAAE4iC,cAAc,CAACzgC,EAAE/F,GAAU+F,EAAC,CAC1Z,SAASqkD,GAAGrkD,EAAE/F,GAAG,IAAI4D,EAAEo7C,KAAKE,GAAG,GAAGt7C,EAAE,GAAGA,GAAE,WAAWmC,GAAE,EAAG,IAAGm5C,GAAG,GAAGt7C,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEmjD,GAAG9c,WAAW8c,GAAG9c,WAAW,EAAE,IAAIlkC,GAAE,GAAI/F,GAAG,CAAC,QAAQ+mD,GAAG9c,WAAWrmC,CAAC,CAAC,GAAE,CAChK,SAASulD,GAAGpjD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE4sC,KAAKr9C,EAAEs9C,GAAG18C,GAAG2yB,EAAE,CAAC6oB,KAAKp8C,EAAE+iD,OAAOtkD,EAAEukD,aAAa,KAAKC,WAAW,KAAK5oC,KAAK,MAAMmZ,EAAE34B,EAAEkhD,QAA6E,GAArE,OAAOvoB,EAAED,EAAElZ,KAAKkZ,GAAGA,EAAElZ,KAAKmZ,EAAEnZ,KAAKmZ,EAAEnZ,KAAKkZ,GAAG14B,EAAEkhD,QAAQxoB,EAAEC,EAAE5yB,EAAEsgC,UAAatgC,IAAImJ,IAAG,OAAOypB,GAAGA,IAAIzpB,GAAEk4C,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAIphD,EAAEu6C,QAAQ,OAAO3nB,GAAG,IAAIA,EAAE2nB,QAAiC,QAAxB3nB,EAAE34B,EAAEioD,qBAA8B,IAAI,IAAInsB,EAAE97B,EAAEqoD,kBAAkBxsB,EAAElD,EAAEmD,EAAEl4B,GAAmC,GAAhC80B,EAAEyvB,aAAaxvB,EAAED,EAAE0vB,WAAWvsB,EAAKkb,GAAGlb,EAAEC,GAAG,MAAM,CAAC,MAAMpb,GAAG,CAAUgiC,GAAG38C,EAAEZ,EAAEyQ,EAAE,CAAC,CACja,IAAI+xC,GAAG,CAAC0C,YAAY7J,GAAG8J,YAAYjD,GAAGkD,WAAWlD,GAAG4B,UAAU5B,GAAGmD,oBAAoBnD,GAAGoD,gBAAgBpD,GAAGqD,QAAQrD,GAAGsD,WAAWtD,GAAGuD,OAAOvD,GAAGyB,SAASzB,GAAGwD,cAAcxD,GAAGyD,iBAAiBzD,GAAG0D,cAAc1D,GAAG2D,iBAAiB3D,GAAG4D,oBAAoB5D,GAAG6D,0BAAyB,GAAI1D,GAAG,CAAC6C,YAAY7J,GAAG8J,YAAY,SAASvkD,EAAE/F,GAA4C,OAAzC4nD,KAAKphB,cAAc,CAACzgC,OAAE,IAAS/F,EAAE,KAAKA,GAAU+F,CAAC,EAAEwkD,WAAW/J,GAAGyI,UAAUW,GAAGY,oBAAoB,SAASzkD,EAAE/F,EAAE4D,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEsC,OAAO,CAACH,IAAI,KAAY2jD,GAAG,EAAE,EAAEK,GAAGv3C,KAAK,KACvfxS,EAAE+F,GAAGnC,EAAE,EAAE6mD,gBAAgB,SAAS1kD,EAAE/F,GAAG,OAAO0pD,GAAG,EAAE,EAAE3jD,EAAE/F,EAAE,EAAE0qD,QAAQ,SAAS3kD,EAAE/F,GAAG,IAAI4D,EAAEgkD,KAAqD,OAAhD5nD,OAAE,IAASA,EAAE,KAAKA,EAAE+F,EAAEA,IAAInC,EAAE4iC,cAAc,CAACzgC,EAAE/F,GAAU+F,CAAC,EAAE4kD,WAAW,SAAS5kD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAEgyC,KAAuK,OAAlK5nD,OAAE,IAAS4D,EAAEA,EAAE5D,GAAGA,EAAE4V,EAAE4wB,cAAc5wB,EAAEkrC,UAAU9gD,EAAmF+F,GAAjFA,EAAE6P,EAAEygB,MAAM,CAAC6qB,QAAQ,KAAKoH,SAAS,KAAKL,oBAAoBliD,EAAEsiD,kBAAkBroD,IAAOsoD,SAASa,GAAG32C,KAAK,KAAKtD,GAAEnJ,GAAS,CAAC6P,EAAE4wB,cAAczgC,EAAE,EAAE6kD,OAAOpB,GAAGV,SAASO,GAAGwB,cAAcZ,GAAGa,iBAAiB,SAAS/kD,GAAG,IAAI/F,EAAEqpD,GAAGtjD,GAAGnC,EAAE5D,EAAE,GAAG4V,EAAE5V,EAAE,GAC5Z,OAD+Z4pD,IAAG,WAAW,IAAI5pD,EAAE+mD,GAAG9c,WAC9e8c,GAAG9c,WAAW,EAAE,IAAIr0B,EAAE7P,EAAE,CAAC,QAAQghD,GAAG9c,WAAWjqC,CAAC,CAAC,GAAE,CAAC+F,IAAWnC,CAAC,EAAEmnD,cAAc,WAAW,IAAIhlD,EAAEsjD,IAAG,GAAIrpD,EAAE+F,EAAE,GAA8B,OAANyjD,GAArBzjD,EAAEqkD,GAAG53C,KAAK,KAAKzM,EAAE,KAAgB,CAACA,EAAE/F,EAAE,EAAEgrD,iBAAiB,SAASjlD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAEgyC,KAAkF,OAA7EhyC,EAAE4wB,cAAc,CAAC0b,KAAK,CAAC6G,YAAY/oD,EAAEkpD,YAAY,MAAMz/B,OAAO1jB,EAAEijD,UAAUplD,GAAUglD,GAAGhzC,EAAE7P,EAAE/F,EAAE4D,EAAE,EAAEqnD,oBAAoB,WAAW,GAAGhF,GAAG,CAAC,IAAIlgD,GAAE,EAAG/F,EAzDlD,SAAY+F,GAAG,MAAM,CAACs2B,SAAStB,EAAG/9B,SAAS+I,EAAEhG,QAAQgG,EAAE,CAyDHolD,EAAG,WAAiD,MAAtCplD,IAAIA,GAAE,EAAGnC,EAAE,MAAM63C,MAAMz+C,SAAS,MAAYN,MAAMuJ,EAAE,KAAM,IAAGrC,EAAEylD,GAAGrpD,GAAG,GAC1Z,OAD6Z,KAAY,EAAPkP,GAAEs1C,QAAUt1C,GAAEwB,OAAO,IAAI44C,GAAG,GAAE,WAAW1lD,EAAE,MAAM63C,MAAMz+C,SAAS,IAAI,QACpf,EAAO,OAAcgD,CAAC,CAAkC,OAANqpD,GAA3BrpD,EAAE,MAAMy7C,MAAMz+C,SAAS,KAAiBgD,CAAC,EAAEkrD,0BAAyB,GAAIzD,GAAG,CAAC4C,YAAY7J,GAAG8J,YAAYJ,GAAGK,WAAW/J,GAAGyI,UAAUY,GAAGW,oBAAoBR,GAAGS,gBAAgBX,GAAGY,QAAQP,GAAGQ,WAAW3C,GAAG4C,OAAOnB,GAAGX,SAAS,WAAW,OAAOd,GAAGD,GAAG,EAAE8C,cAAcZ,GAAGa,iBAAiB,SAAS/kD,GAAG,IAAI/F,EAAEgoD,GAAGD,IAAInkD,EAAE5D,EAAE,GAAG4V,EAAE5V,EAAE,GAA6F,OAA1F6pD,IAAG,WAAW,IAAI7pD,EAAE+mD,GAAG9c,WAAW8c,GAAG9c,WAAW,EAAE,IAAIr0B,EAAE7P,EAAE,CAAC,QAAQghD,GAAG9c,WAAWjqC,CAAC,CAAC,GAAE,CAAC+F,IAAWnC,CAAC,EAAEmnD,cAAc,WAAW,IAAIhlD,EAAEiiD,GAAGD,IAAI,GAAG,MAAM,CAAC0B,KAAK3iC,QAC9e/gB,EAAE,EAAEilD,iBAAiB5B,GAAG6B,oBAAoB,WAAW,OAAOjD,GAAGD,IAAI,EAAE,EAAEmD,0BAAyB,GAAIxD,GAAG,CAAC2C,YAAY7J,GAAG8J,YAAYJ,GAAGK,WAAW/J,GAAGyI,UAAUY,GAAGW,oBAAoBR,GAAGS,gBAAgBX,GAAGY,QAAQP,GAAGQ,WAAWpC,GAAGqC,OAAOnB,GAAGX,SAAS,WAAW,OAAOP,GAAGR,GAAG,EAAE8C,cAAcZ,GAAGa,iBAAiB,SAAS/kD,GAAG,IAAI/F,EAAEuoD,GAAGR,IAAInkD,EAAE5D,EAAE,GAAG4V,EAAE5V,EAAE,GAA6F,OAA1F6pD,IAAG,WAAW,IAAI7pD,EAAE+mD,GAAG9c,WAAW8c,GAAG9c,WAAW,EAAE,IAAIr0B,EAAE7P,EAAE,CAAC,QAAQghD,GAAG9c,WAAWjqC,CAAC,CAAC,GAAE,CAAC+F,IAAWnC,CAAC,EAAEmnD,cAAc,WAAW,IAAIhlD,EAAEwiD,GAAGR,IAAI,GAAG,MAAM,CAAC0B,KAAK3iC,QACrf/gB,EAAE,EAAEilD,iBAAiB5B,GAAG6B,oBAAoB,WAAW,OAAO1C,GAAGR,IAAI,EAAE,EAAEmD,0BAAyB,GAAIE,GAAGpxB,EAAGqxB,kBAAkB9K,IAAG,EAAG,SAAS+K,GAAGvlD,EAAE/F,EAAE4D,EAAEgS,GAAG5V,EAAE4mC,MAAM,OAAO7gC,EAAEg/C,GAAG/kD,EAAE,KAAK4D,EAAEgS,GAAGkvC,GAAG9kD,EAAE+F,EAAE6gC,MAAMhjC,EAAEgS,EAAE,CAAC,SAAS21C,GAAGxlD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAGvB,EAAEA,EAAEs4B,OAAO,IAAIxD,EAAE14B,EAAE8jD,IAA8B,OAA1B3D,GAAGngD,EAAEmF,GAAGyQ,EAAE2xC,GAAGxhD,EAAE/F,EAAE4D,EAAEgS,EAAE8iB,EAAEvzB,GAAM,OAAOY,GAAIw6C,IAA0EvgD,EAAE0Q,OAAO,EAAE46C,GAAGvlD,EAAE/F,EAAE4V,EAAEzQ,GAAUnF,EAAE4mC,QAAhG5mC,EAAE6gD,YAAY96C,EAAE86C,YAAY7gD,EAAE0Q,QAAQ,IAAI3K,EAAEu6C,QAAQn7C,EAAEtB,GAAGkC,EAAE/F,EAAEmF,GAAwC,CAChZ,SAASqmD,GAAGzlD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,GAAG,OAAO3yB,EAAE,CAAC,IAAI4yB,EAAE/0B,EAAExD,KAAK,MAAG,oBAAoBu4B,GAAI8yB,GAAG9yB,SAAI,IAASA,EAAE8mB,cAAc,OAAO77C,EAAEkC,cAAS,IAASlC,EAAE67C,eAAsD15C,EAAE2+C,GAAG9gD,EAAExD,KAAK,KAAKwV,EAAE5V,EAAEA,EAAEwkD,KAAK9rB,IAAKorB,IAAI9jD,EAAE8jD,IAAI/9C,EAAEugC,OAAOtmC,EAASA,EAAE4mC,MAAM7gC,IAAvG/F,EAAEi8B,IAAI,GAAGj8B,EAAEI,KAAKu4B,EAAE+yB,GAAG3lD,EAAE/F,EAAE24B,EAAE/iB,EAAEzQ,EAAEuzB,GAAyE,CAAW,OAAVC,EAAE5yB,EAAE6gC,MAAS,KAAKzhC,EAAEuzB,KAAKvzB,EAAEwzB,EAAEktB,eAA0BjiD,EAAE,QAAdA,EAAEA,EAAEkC,SAAmBlC,EAAEqzC,IAAK9xC,EAAEyQ,IAAI7P,EAAE+9C,MAAM9jD,EAAE8jD,KAAYjgD,GAAGkC,EAAE/F,EAAE04B,IAAG14B,EAAE0Q,OAAO,GAAE3K,EAAEu+C,GAAG3rB,EAAE/iB,IAAKkuC,IAAI9jD,EAAE8jD,IAAI/9C,EAAEugC,OAAOtmC,EAASA,EAAE4mC,MAAM7gC,EAAC,CACnb,SAAS2lD,GAAG3lD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,GAAG,OAAO3yB,GAAGkxC,GAAGlxC,EAAE8/C,cAAcjwC,IAAI7P,EAAE+9C,MAAM9jD,EAAE8jD,IAAI,IAAGvD,IAAG,EAAG,KAAK7nB,EAAEvzB,GAAqC,OAAOnF,EAAEsgD,MAAMv6C,EAAEu6C,MAAMz8C,GAAGkC,EAAE/F,EAAE04B,GAAhE,KAAa,MAAR3yB,EAAE2K,SAAe6vC,IAAG,EAAyC,CAAC,OAAOoL,GAAG5lD,EAAE/F,EAAE4D,EAAEgS,EAAE8iB,EAAE,CACrL,SAASkzB,GAAG7lD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE5V,EAAEqmD,aAAalhD,EAAEyQ,EAAEuoB,SAASzF,EAAE,OAAO3yB,EAAEA,EAAEygC,cAAc,KAAK,GAAG,WAAW5wB,EAAE4uC,MAAM,kCAAkC5uC,EAAE4uC,KAAK,GAAG,KAAY,EAAPxkD,EAAEwkD,MAAQxkD,EAAEwmC,cAAc,CAACqlB,UAAU,GAAGC,GAAG9rD,EAAE4D,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOmC,EAAE,OAAO2yB,EAAEA,EAAEmzB,UAAUjoD,EAAEA,EAAE5D,EAAEsgD,MAAMtgD,EAAEkgD,WAAW,WAAWlgD,EAAEwmC,cAAc,CAACqlB,UAAU9lD,GAAG+lD,GAAG9rD,EAAE+F,GAAG,KAAxK/F,EAAEwmC,cAAc,CAACqlB,UAAU,GAAGC,GAAG9rD,EAAE,OAAO04B,EAAEA,EAAEmzB,UAAUjoD,EAAoH,MAAM,OAAO80B,GAAG9iB,EAAE8iB,EAAEmzB,UAAUjoD,EAAE5D,EAAEwmC,cAAc,MAAM5wB,EAAEhS,EAAEkoD,GAAG9rD,EAAE4V,GAAe,OAAZ01C,GAAGvlD,EAAE/F,EAAEmF,EAAEvB,GAAU5D,EAAE4mC,KAAK,CAC/e,SAASmlB,GAAGhmD,EAAE/F,GAAG,IAAI4D,EAAE5D,EAAE8jD,KAAO,OAAO/9C,GAAG,OAAOnC,GAAG,OAAOmC,GAAGA,EAAE+9C,MAAMlgD,KAAE5D,EAAE0Q,OAAO,IAAG,CAAC,SAASi7C,GAAG5lD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAIuzB,EAAEikB,GAAG/4C,GAAG04C,GAAGF,GAAEt1B,QAA4C,OAApC4R,EAAE6jB,GAAGv8C,EAAE04B,GAAGynB,GAAGngD,EAAEmF,GAAGvB,EAAE2jD,GAAGxhD,EAAE/F,EAAE4D,EAAEgS,EAAE8iB,EAAEvzB,GAAM,OAAOY,GAAIw6C,IAA0EvgD,EAAE0Q,OAAO,EAAE46C,GAAGvlD,EAAE/F,EAAE4D,EAAEuB,GAAUnF,EAAE4mC,QAAhG5mC,EAAE6gD,YAAY96C,EAAE86C,YAAY7gD,EAAE0Q,QAAQ,IAAI3K,EAAEu6C,QAAQn7C,EAAEtB,GAAGkC,EAAE/F,EAAEmF,GAAwC,CACtS,SAAS6mD,GAAGjmD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,GAAGw3C,GAAG/4C,GAAG,CAAC,IAAI80B,GAAE,EAAGukB,GAAGj9C,EAAE,MAAM04B,GAAE,EAAW,GAARynB,GAAGngD,EAAEmF,GAAM,OAAOnF,EAAE8kC,UAAU,OAAO/+B,IAAIA,EAAEsgC,UAAU,KAAKrmC,EAAEqmC,UAAU,KAAKrmC,EAAE0Q,OAAO,GAAGsyC,GAAGhjD,EAAE4D,EAAEgS,GAAG0tC,GAAGtjD,EAAE4D,EAAEgS,EAAEzQ,GAAGyQ,GAAE,OAAQ,GAAG,OAAO7P,EAAE,CAAC,IAAI4yB,EAAE34B,EAAE8kC,UAAUhJ,EAAE97B,EAAE6lD,cAAcltB,EAAE7O,MAAMgS,EAAE,IAAID,EAAElD,EAAEplB,QAAQmN,EAAE9c,EAAEq/C,YAAY,kBAAkBviC,GAAG,OAAOA,EAAEA,EAAE8/B,GAAG9/B,GAAyBA,EAAE67B,GAAGv8C,EAA1B0gB,EAAEi8B,GAAG/4C,GAAG04C,GAAGF,GAAEt1B,SAAmB,IAAInlB,EAAEiC,EAAE2/C,yBAAyB3B,EAAE,oBAAoBjgD,GAAG,oBAAoBg3B,EAAE6qB,wBAAwB5B,GAAG,oBAAoBjpB,EAAE0qB,kCACpd,oBAAoB1qB,EAAEyqB,4BAA4BtnB,IAAIlmB,GAAGimB,IAAInb,IAAIyiC,GAAGnjD,EAAE24B,EAAE/iB,EAAE8K,GAAGigC,IAAG,EAAG,IAAIlqC,EAAEzW,EAAEwmC,cAAc7N,EAAErmB,MAAMmE,EAAEkrC,GAAG3hD,EAAE4V,EAAE+iB,EAAExzB,GAAG02B,EAAE77B,EAAEwmC,cAAc1K,IAAIlmB,GAAGa,IAAIolB,GAAGwgB,GAAEv1B,SAAS65B,IAAI,oBAAoBh/C,IAAIwgD,GAAGniD,EAAE4D,EAAEjC,EAAEiU,GAAGimB,EAAE77B,EAAEwmC,gBAAgB1K,EAAE6kB,IAAIkC,GAAG7iD,EAAE4D,EAAEk4B,EAAElmB,EAAEa,EAAEolB,EAAEnb,KAAKkhC,GAAG,oBAAoBjpB,EAAE8qB,2BAA2B,oBAAoB9qB,EAAE+qB,qBAAqB,oBAAoB/qB,EAAE+qB,oBAAoB/qB,EAAE+qB,qBAAqB,oBAAoB/qB,EAAE8qB,2BAA2B9qB,EAAE8qB,6BAA6B,oBACze9qB,EAAEgrB,oBAAoB3jD,EAAE0Q,OAAO,KAAK,oBAAoBioB,EAAEgrB,oBAAoB3jD,EAAE0Q,OAAO,GAAG1Q,EAAE6lD,cAAcjwC,EAAE5V,EAAEwmC,cAAc3K,GAAGlD,EAAE7O,MAAMlU,EAAE+iB,EAAErmB,MAAMupB,EAAElD,EAAEplB,QAAQmN,EAAE9K,EAAEkmB,IAAI,oBAAoBnD,EAAEgrB,oBAAoB3jD,EAAE0Q,OAAO,GAAGkF,GAAE,EAAG,KAAK,CAAC+iB,EAAE34B,EAAE8kC,UAAUsc,GAAGr7C,EAAE/F,GAAG87B,EAAE97B,EAAE6lD,cAAcnlC,EAAE1gB,EAAEI,OAAOJ,EAAEykD,YAAY3oB,EAAE0jB,GAAGx/C,EAAEI,KAAK07B,GAAGnD,EAAE7O,MAAMpJ,EAAEkhC,EAAE5hD,EAAEqmD,aAAa5vC,EAAEkiB,EAAEplB,QAAwB,kBAAhBsoB,EAAEj4B,EAAEq/C,cAAiC,OAAOpnB,EAAEA,EAAE2kB,GAAG3kB,GAAyBA,EAAE0gB,GAAGv8C,EAA1B67B,EAAE8gB,GAAG/4C,GAAG04C,GAAGF,GAAEt1B,SAAmB,IAAI+6B,EAAEj+C,EAAE2/C,0BAA0B5hD,EAAE,oBAAoBkgD,GACnf,oBAAoBlpB,EAAE6qB,0BAA0B,oBAAoB7qB,EAAE0qB,kCAAkC,oBAAoB1qB,EAAEyqB,4BAA4BtnB,IAAI8lB,GAAGnrC,IAAIolB,IAAIsnB,GAAGnjD,EAAE24B,EAAE/iB,EAAEimB,GAAG8kB,IAAG,EAAGlqC,EAAEzW,EAAEwmC,cAAc7N,EAAErmB,MAAMmE,EAAEkrC,GAAG3hD,EAAE4V,EAAE+iB,EAAExzB,GAAG,IAAIa,EAAEhG,EAAEwmC,cAAc1K,IAAI8lB,GAAGnrC,IAAIzQ,GAAGq2C,GAAEv1B,SAAS65B,IAAI,oBAAoBkB,IAAIM,GAAGniD,EAAE4D,EAAEi+C,EAAEjsC,GAAG5P,EAAEhG,EAAEwmC,gBAAgB9lB,EAAEigC,IAAIkC,GAAG7iD,EAAE4D,EAAE8c,EAAE9K,EAAEa,EAAEzQ,EAAE61B,KAAKl6B,GAAG,oBAAoBg3B,EAAEszB,4BAA4B,oBAAoBtzB,EAAEuzB,sBAAsB,oBAAoBvzB,EAAEuzB,qBAAqBvzB,EAAEuzB,oBAAoBt2C,EAC1gB5P,EAAE61B,GAAG,oBAAoBlD,EAAEszB,4BAA4BtzB,EAAEszB,2BAA2Br2C,EAAE5P,EAAE61B,IAAI,oBAAoBlD,EAAEwzB,qBAAqBnsD,EAAE0Q,OAAO,GAAG,oBAAoBioB,EAAE6qB,0BAA0BxjD,EAAE0Q,OAAO,OAAO,oBAAoBioB,EAAEwzB,oBAAoBrwB,IAAI/1B,EAAE8/C,eAAepvC,IAAI1Q,EAAEygC,gBAAgBxmC,EAAE0Q,OAAO,GAAG,oBAAoBioB,EAAE6qB,yBAAyB1nB,IAAI/1B,EAAE8/C,eAAepvC,IAAI1Q,EAAEygC,gBAAgBxmC,EAAE0Q,OAAO,KAAK1Q,EAAE6lD,cAAcjwC,EAAE5V,EAAEwmC,cAAcxgC,GAAG2yB,EAAE7O,MAAMlU,EAAE+iB,EAAErmB,MAAMtM,EAAE2yB,EAAEplB,QAAQsoB,EAAEjmB,EAAE8K,IAAI,oBAAoBiY,EAAEwzB,oBAC7frwB,IAAI/1B,EAAE8/C,eAAepvC,IAAI1Q,EAAEygC,gBAAgBxmC,EAAE0Q,OAAO,GAAG,oBAAoBioB,EAAE6qB,yBAAyB1nB,IAAI/1B,EAAE8/C,eAAepvC,IAAI1Q,EAAEygC,gBAAgBxmC,EAAE0Q,OAAO,KAAKkF,GAAE,EAAG,CAAC,OAAOw2C,GAAGrmD,EAAE/F,EAAE4D,EAAEgS,EAAE8iB,EAAEvzB,EAAE,CAC3L,SAASinD,GAAGrmD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAGqzB,GAAGhmD,EAAE/F,GAAG,IAAI24B,EAAE,KAAa,GAAR34B,EAAE0Q,OAAU,IAAIkF,IAAI+iB,EAAE,OAAOxzB,GAAGg4C,GAAGn9C,EAAE4D,GAAE,GAAIC,GAAGkC,EAAE/F,EAAE04B,GAAG9iB,EAAE5V,EAAE8kC,UAAUsmB,GAAGtkC,QAAQ9mB,EAAE,IAAI87B,EAAEnD,GAAG,oBAAoB/0B,EAAEyoD,yBAAyB,KAAKz2C,EAAEsmB,SAAwI,OAA/Hl8B,EAAE0Q,OAAO,EAAE,OAAO3K,GAAG4yB,GAAG34B,EAAE4mC,MAAMke,GAAG9kD,EAAE+F,EAAE6gC,MAAM,KAAKlO,GAAG14B,EAAE4mC,MAAMke,GAAG9kD,EAAE,KAAK87B,EAAEpD,IAAI4yB,GAAGvlD,EAAE/F,EAAE87B,EAAEpD,GAAG14B,EAAEwmC,cAAc5wB,EAAEtD,MAAMnN,GAAGg4C,GAAGn9C,EAAE4D,GAAE,GAAW5D,EAAE4mC,KAAK,CAAC,SAAS0lB,GAAGvmD,GAAG,IAAI/F,EAAE+F,EAAE++B,UAAU9kC,EAAEusD,eAAezP,GAAG/2C,EAAE/F,EAAEusD,eAAevsD,EAAEusD,iBAAiBvsD,EAAEuT,SAASvT,EAAEuT,SAASupC,GAAG/2C,EAAE/F,EAAEuT,SAAQ,GAAI8xC,GAAGt/C,EAAE/F,EAAE8oC,cAAc,CAC3e,IAS0V0jB,GAAGC,GAAGC,GAAGC,GAT/Vr7B,GAAG,CAACmV,WAAW,KAAKmmB,UAAU,GAClC,SAASC,GAAG9mD,EAAE/F,EAAE4D,GAAG,IAAsC+0B,EAAlC/iB,EAAE5V,EAAEqmD,aAAalhD,EAAEwgD,GAAE7+B,QAAQ4R,GAAE,EAA6M,OAAvMC,EAAE,KAAa,GAAR34B,EAAE0Q,UAAaioB,GAAE,OAAO5yB,GAAG,OAAOA,EAAEygC,gBAAiB,KAAO,EAAFrhC,IAAMwzB,GAAGD,GAAE,EAAG14B,EAAE0Q,QAAQ,IAAI,OAAO3K,GAAG,OAAOA,EAAEygC,oBAAe,IAAS5wB,EAAEk3C,WAAU,IAAKl3C,EAAEm3C,6BAA6B5nD,GAAG,GAAG+2C,GAAEyJ,GAAI,EAAFxgD,GAAQ,OAAOY,QAAG,IAAS6P,EAAEk3C,UAAUxG,GAAGtmD,GAAG+F,EAAE6P,EAAEuoB,SAASh5B,EAAEyQ,EAAEk3C,SAAYp0B,GAAS3yB,EAAEinD,GAAGhtD,EAAE+F,EAAEZ,EAAEvB,GAAG5D,EAAE4mC,MAAMJ,cAAc,CAACqlB,UAAUjoD,GAAG5D,EAAEwmC,cAAclV,GAAGvrB,GAAK,kBAAkB6P,EAAEq3C,2BAAiClnD,EAAEinD,GAAGhtD,EAAE+F,EAAEZ,EAAEvB,GAAG5D,EAAE4mC,MAAMJ,cAAc,CAACqlB,UAAUjoD,GAC/f5D,EAAEwmC,cAAclV,GAAGtxB,EAAEsgD,MAAM,SAASv6C,KAAEnC,EAAEspD,GAAG,CAAC1I,KAAK,UAAUrmB,SAASp4B,GAAG/F,EAAEwkD,KAAK5gD,EAAE,OAAQ0iC,OAAOtmC,EAASA,EAAE4mC,MAAMhjC,KAAYmC,EAAEygC,cAAkB9N,GAAS9iB,EAAEu3C,GAAGpnD,EAAE/F,EAAE4V,EAAEuoB,SAASvoB,EAAEk3C,SAASlpD,GAAG80B,EAAE14B,EAAE4mC,MAAMzhC,EAAEY,EAAE6gC,MAAMJ,cAAc9N,EAAE8N,cAAc,OAAOrhC,EAAE,CAAC0mD,UAAUjoD,GAAG,CAACioD,UAAU1mD,EAAE0mD,UAAUjoD,GAAG80B,EAAEwnB,WAAWn6C,EAAEm6C,YAAYt8C,EAAE5D,EAAEwmC,cAAclV,GAAG1b,IAAEhS,EAAEwpD,GAAGrnD,EAAE/F,EAAE4V,EAAEuoB,SAASv6B,GAAG5D,EAAEwmC,cAAc,KAAY5iC,GACnQ,CAAC,SAASopD,GAAGjnD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEY,EAAEy+C,KAAK9rB,EAAE3yB,EAAE6gC,MAAuK,OAAjK5mC,EAAE,CAACwkD,KAAK,SAASrmB,SAASn+B,GAAG,KAAO,EAAFmF,IAAM,OAAOuzB,GAAGA,EAAEwnB,WAAW,EAAExnB,EAAE2tB,aAAarmD,GAAG04B,EAAEw0B,GAAGltD,EAAEmF,EAAE,EAAE,MAAMvB,EAAEihD,GAAGjhD,EAAEuB,EAAEyQ,EAAE,MAAM8iB,EAAE4N,OAAOvgC,EAAEnC,EAAE0iC,OAAOvgC,EAAE2yB,EAAEmO,QAAQjjC,EAAEmC,EAAE6gC,MAAMlO,EAAS90B,CAAC,CACtV,SAASwpD,GAAGrnD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEY,EAAE6gC,MAAiL,OAA3K7gC,EAAEZ,EAAE0hC,QAAQjjC,EAAE0gD,GAAGn/C,EAAE,CAACq/C,KAAK,UAAUrmB,SAASv6B,IAAI,KAAY,EAAP5D,EAAEwkD,QAAU5gD,EAAE08C,MAAM1qC,GAAGhS,EAAE0iC,OAAOtmC,EAAE4D,EAAEijC,QAAQ,KAAK,OAAO9gC,IAAIA,EAAEq+C,WAAW,KAAKr+C,EAAE2K,MAAM,EAAE1Q,EAAEqkD,YAAYrkD,EAAEmkD,WAAWp+C,GAAU/F,EAAE4mC,MAAMhjC,CAAC,CAC9N,SAASupD,GAAGpnD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAIuzB,EAAE14B,EAAEwkD,KAAK7rB,EAAE5yB,EAAE6gC,MAAM7gC,EAAE4yB,EAAEkO,QAAQ,IAAI/K,EAAE,CAAC0oB,KAAK,SAASrmB,SAASv6B,GAAoS,OAAjS,KAAO,EAAF80B,IAAM14B,EAAE4mC,QAAQjO,IAAG/0B,EAAE5D,EAAE4mC,OAAQsZ,WAAW,EAAEt8C,EAAEyiD,aAAavqB,EAAiB,QAAfnD,EAAE/0B,EAAEugD,aAAqBnkD,EAAEqkD,YAAYzgD,EAAEygD,YAAYrkD,EAAEmkD,WAAWxrB,EAAEA,EAAEyrB,WAAW,MAAMpkD,EAAEqkD,YAAYrkD,EAAEmkD,WAAW,MAAMvgD,EAAE0gD,GAAG3rB,EAAEmD,GAAG,OAAO/1B,EAAE6P,EAAE0uC,GAAGv+C,EAAE6P,IAAIA,EAAEivC,GAAGjvC,EAAE8iB,EAAEvzB,EAAE,OAAQuL,OAAO,EAAGkF,EAAE0wB,OAAOtmC,EAAE4D,EAAE0iC,OAAOtmC,EAAE4D,EAAEijC,QAAQjxB,EAAE5V,EAAE4mC,MAAMhjC,EAASgS,CAAC,CAAC,SAASy3C,GAAGtnD,EAAE/F,GAAG+F,EAAEu6C,OAAOtgD,EAAE,IAAI4D,EAAEmC,EAAEsgC,UAAU,OAAOziC,IAAIA,EAAE08C,OAAOtgD,GAAGigD,GAAGl6C,EAAEugC,OAAOtmC,EAAE,CACxd,SAASstD,GAAGvnD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,IAAIC,EAAE5yB,EAAEygC,cAAc,OAAO7N,EAAE5yB,EAAEygC,cAAc,CAAC+mB,YAAYvtD,EAAEwtD,UAAU,KAAKC,mBAAmB,EAAE7jD,KAAKgM,EAAEwU,KAAKxmB,EAAE8pD,SAASvoD,EAAEg/C,WAAWzrB,IAAIC,EAAE40B,YAAYvtD,EAAE24B,EAAE60B,UAAU,KAAK70B,EAAE80B,mBAAmB,EAAE90B,EAAE/uB,KAAKgM,EAAE+iB,EAAEvO,KAAKxmB,EAAE+0B,EAAE+0B,SAASvoD,EAAEwzB,EAAEwrB,WAAWzrB,EAAE,CACzQ,SAASi1B,GAAG5nD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE5V,EAAEqmD,aAAalhD,EAAEyQ,EAAEkwC,YAAYptB,EAAE9iB,EAAEwU,KAAsC,GAAjCkhC,GAAGvlD,EAAE/F,EAAE4V,EAAEuoB,SAASv6B,GAAkB,KAAO,GAAtBgS,EAAE+vC,GAAE7+B,UAAqBlR,EAAI,EAAFA,EAAI,EAAE5V,EAAE0Q,OAAO,OAAO,CAAC,GAAG,OAAO3K,GAAG,KAAa,GAARA,EAAE2K,OAAU3K,EAAE,IAAIA,EAAE/F,EAAE4mC,MAAM,OAAO7gC,GAAG,CAAC,GAAG,KAAKA,EAAEk2B,IAAI,OAAOl2B,EAAEygC,eAAe6mB,GAAGtnD,EAAEnC,QAAQ,GAAG,KAAKmC,EAAEk2B,IAAIoxB,GAAGtnD,EAAEnC,QAAQ,GAAG,OAAOmC,EAAE6gC,MAAM,CAAC7gC,EAAE6gC,MAAMN,OAAOvgC,EAAEA,EAAEA,EAAE6gC,MAAM,QAAQ,CAAC,GAAG7gC,IAAI/F,EAAE,MAAM+F,EAAE,KAAK,OAAOA,EAAE8gC,SAAS,CAAC,GAAG,OAAO9gC,EAAEugC,QAAQvgC,EAAEugC,SAAStmC,EAAE,MAAM+F,EAAEA,EAAEA,EAAEugC,MAAM,CAACvgC,EAAE8gC,QAAQP,OAAOvgC,EAAEugC,OAAOvgC,EAAEA,EAAE8gC,OAAO,CAACjxB,GAAG,CAAC,CAAQ,GAAPsmC,GAAEyJ,GAAE/vC,GAAM,KAAY,EAAP5V,EAAEwkD,MAAQxkD,EAAEwmC,cACze,UAAU,OAAOrhC,GAAG,IAAK,WAAqB,IAAVvB,EAAE5D,EAAE4mC,MAAUzhC,EAAE,KAAK,OAAOvB,GAAiB,QAAdmC,EAAEnC,EAAEyiC,YAAoB,OAAOuf,GAAG7/C,KAAKZ,EAAEvB,GAAGA,EAAEA,EAAEijC,QAAY,QAAJjjC,EAAEuB,IAAYA,EAAEnF,EAAE4mC,MAAM5mC,EAAE4mC,MAAM,OAAOzhC,EAAEvB,EAAEijC,QAAQjjC,EAAEijC,QAAQ,MAAMymB,GAAGttD,GAAE,EAAGmF,EAAEvB,EAAE80B,EAAE14B,EAAEmkD,YAAY,MAAM,IAAK,YAA6B,IAAjBvgD,EAAE,KAAKuB,EAAEnF,EAAE4mC,MAAU5mC,EAAE4mC,MAAM,KAAK,OAAOzhC,GAAG,CAAe,GAAG,QAAjBY,EAAEZ,EAAEkhC,YAAuB,OAAOuf,GAAG7/C,GAAG,CAAC/F,EAAE4mC,MAAMzhC,EAAE,KAAK,CAACY,EAAEZ,EAAE0hC,QAAQ1hC,EAAE0hC,QAAQjjC,EAAEA,EAAEuB,EAAEA,EAAEY,CAAC,CAACunD,GAAGttD,GAAE,EAAG4D,EAAE,KAAK80B,EAAE14B,EAAEmkD,YAAY,MAAM,IAAK,WAAWmJ,GAAGttD,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEmkD,YAAY,MAAM,QAAQnkD,EAAEwmC,cAAc,KAAK,OAAOxmC,EAAE4mC,KAAK,CACpgB,SAAS/iC,GAAGkC,EAAE/F,EAAE4D,GAAyD,GAAtD,OAAOmC,IAAI/F,EAAEogD,aAAar6C,EAAEq6C,cAAc0B,IAAI9hD,EAAEsgD,MAAS,KAAK18C,EAAE5D,EAAEkgD,YAAY,CAAC,GAAG,OAAOn6C,GAAG/F,EAAE4mC,QAAQ7gC,EAAE6gC,MAAM,MAAMlqC,MAAMuJ,EAAE,MAAM,GAAG,OAAOjG,EAAE4mC,MAAM,CAA4C,IAAjChjC,EAAE0gD,GAAZv+C,EAAE/F,EAAE4mC,MAAa7gC,EAAEsgD,cAAcrmD,EAAE4mC,MAAMhjC,EAAMA,EAAE0iC,OAAOtmC,EAAE,OAAO+F,EAAE8gC,SAAS9gC,EAAEA,EAAE8gC,SAAQjjC,EAAEA,EAAEijC,QAAQyd,GAAGv+C,EAAEA,EAAEsgD,eAAgB/f,OAAOtmC,EAAE4D,EAAEijC,QAAQ,IAAI,CAAC,OAAO7mC,EAAE4mC,KAAK,CAAC,OAAO,IAAI,CAKhQ,SAASgnB,GAAG7nD,EAAE/F,GAAG,IAAIimD,GAAG,OAAOlgD,EAAE2nD,UAAU,IAAK,SAAS1tD,EAAE+F,EAAEqkB,KAAK,IAAI,IAAIxmB,EAAE,KAAK,OAAO5D,GAAG,OAAOA,EAAEqmC,YAAYziC,EAAE5D,GAAGA,EAAEA,EAAE6mC,QAAQ,OAAOjjC,EAAEmC,EAAEqkB,KAAK,KAAKxmB,EAAEijC,QAAQ,KAAK,MAAM,IAAK,YAAYjjC,EAAEmC,EAAEqkB,KAAK,IAAI,IAAIxU,EAAE,KAAK,OAAOhS,GAAG,OAAOA,EAAEyiC,YAAYzwB,EAAEhS,GAAGA,EAAEA,EAAEijC,QAAQ,OAAOjxB,EAAE5V,GAAG,OAAO+F,EAAEqkB,KAAKrkB,EAAEqkB,KAAK,KAAKrkB,EAAEqkB,KAAKyc,QAAQ,KAAKjxB,EAAEixB,QAAQ,KAAK,CACla,SAASgnB,GAAG9nD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE5V,EAAEqmD,aAAa,OAAOrmD,EAAEi8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAQyC,KAAK,GAAG,OAAO0gB,GAAG38C,EAAEI,OAAOy8C,KAAK,KAR1C,KAAK,EAAsL,OAApL2I,KAAKvJ,GAAEI,IAAGJ,GAAEG,IAAGuK,MAAK/wC,EAAE5V,EAAE8kC,WAAYynB,iBAAiB32C,EAAErC,QAAQqC,EAAE22C,eAAe32C,EAAE22C,eAAe,MAAS,OAAOxmD,GAAG,OAAOA,EAAE6gC,QAAM4f,GAAGxmD,GAAGA,EAAE0Q,OAAO,EAAEkF,EAAEizB,UAAU7oC,EAAE0Q,OAAO,MAAK+7C,GAAGzsD,GAAU,KAAK,KAAK,EAAE0lD,GAAG1lD,GAAG,IAAImF,EAAEigD,GAAGD,GAAGr+B,SAAkB,GAATljB,EAAE5D,EAAEI,KAAQ,OAAO2F,GAAG,MAAM/F,EAAE8kC,UAAU4nB,GAAG3mD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAGY,EAAE+9C,MAAM9jD,EAAE8jD,MAAM9jD,EAAE0Q,OAAO,SAAS,CAAC,IAAIkF,EAAE,CAAC,GAAG,OAC7f5V,EAAE8kC,UAAU,MAAMpoC,MAAMuJ,EAAE,MAAM,OAAO,IAAI,CAAkB,GAAjBF,EAAEq/C,GAAGH,GAAGn+B,SAAY0/B,GAAGxmD,GAAG,CAAC4V,EAAE5V,EAAE8kC,UAAUlhC,EAAE5D,EAAEI,KAAK,IAAIs4B,EAAE14B,EAAE6lD,cAA8B,OAAhBjwC,EAAE+lC,IAAI37C,EAAE4V,EAAEgmC,IAAIljB,EAAS90B,GAAG,IAAK,SAASu1C,GAAE,SAASvjC,GAAGujC,GAAE,QAAQvjC,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQujC,GAAE,OAAOvjC,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI7P,EAAE,EAAEA,EAAEgzC,GAAGj9C,OAAOiK,IAAIozC,GAAEJ,GAAGhzC,GAAG6P,GAAG,MAAM,IAAK,SAASujC,GAAE,QAAQvjC,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOujC,GAAE,QAAQvjC,GAAGujC,GAAE,OAAOvjC,GAAG,MAAM,IAAK,UAAUujC,GAAE,SAASvjC,GAAG,MAAM,IAAK,QAAQ+nB,GAAG/nB,EAAE8iB,GAAGygB,GAAE,UAAUvjC,GAAG,MAAM,IAAK,SAASA,EAAE6nB,cAC5f,CAACqwB,cAAcp1B,EAAEq1B,UAAU5U,GAAE,UAAUvjC,GAAG,MAAM,IAAK,WAAWgpB,GAAGhpB,EAAE8iB,GAAGygB,GAAE,UAAUvjC,GAAkB,IAAI,IAAI+iB,KAAvBuL,GAAGtgC,EAAE80B,GAAG3yB,EAAE,KAAkB2yB,EAAEA,EAAEhiB,eAAeiiB,KAAKxzB,EAAEuzB,EAAEC,GAAG,aAAaA,EAAE,kBAAkBxzB,EAAEyQ,EAAEmpB,cAAc55B,IAAIY,EAAE,CAAC,WAAWZ,IAAI,kBAAkBA,GAAGyQ,EAAEmpB,cAAc,GAAG55B,IAAIY,EAAE,CAAC,WAAW,GAAGZ,IAAI2yB,EAAGphB,eAAeiiB,IAAI,MAAMxzB,GAAG,aAAawzB,GAAGwgB,GAAE,SAASvjC,IAAI,OAAOhS,GAAG,IAAK,QAAQg5B,EAAGhnB,GAAGnB,GAAGmB,EAAE8iB,GAAE,GAAI,MAAM,IAAK,WAAWkE,EAAGhnB,GAAGkpB,GAAGlpB,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoB8iB,EAAEs1B,UAAUp4C,EAAEq4C,QACtfrT,IAAIhlC,EAAE7P,EAAE/F,EAAE6gD,YAAYjrC,EAAE,OAAOA,IAAI5V,EAAE0Q,OAAO,EAAE,KAAK,CAAiZ,OAAhZioB,EAAE,IAAIxzB,EAAE66B,SAAS76B,EAAEA,EAAE84B,cAAcl4B,IAAIi5B,GAAGC,OAAOl5B,EAAEq5B,GAAGx7B,IAAImC,IAAIi5B,GAAGC,KAAK,WAAWr7B,IAAGmC,EAAE4yB,EAAEP,cAAc,QAASoH,UAAU,qBAAuBz5B,EAAEA,EAAE25B,YAAY35B,EAAE05B,aAAa,kBAAkB7pB,EAAEwuB,GAAGr+B,EAAE4yB,EAAEP,cAAcx0B,EAAE,CAACwgC,GAAGxuB,EAAEwuB,MAAMr+B,EAAE4yB,EAAEP,cAAcx0B,GAAG,WAAWA,IAAI+0B,EAAE5yB,EAAE6P,EAAEm4C,SAASp1B,EAAEo1B,UAAS,EAAGn4C,EAAElV,OAAOi4B,EAAEj4B,KAAKkV,EAAElV,QAAQqF,EAAE4yB,EAAEu1B,gBAAgBnoD,EAAEnC,GAAGmC,EAAE41C,IAAI37C,EAAE+F,EAAE61C,IAAIhmC,EAAE42C,GAAGzmD,EAAE/F,GAAE,GAAG,GAAIA,EAAE8kC,UAAU/+B,EAAE4yB,EAAEwL,GAAGvgC,EAAEgS,GAAUhS,GAAG,IAAK,SAASu1C,GAAE,SAASpzC,GAAGozC,GAAE,QAAQpzC,GACpfZ,EAAEyQ,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQujC,GAAE,OAAOpzC,GAAGZ,EAAEyQ,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIzQ,EAAE,EAAEA,EAAE4zC,GAAGj9C,OAAOqJ,IAAIg0C,GAAEJ,GAAG5zC,GAAGY,GAAGZ,EAAEyQ,EAAE,MAAM,IAAK,SAASujC,GAAE,QAAQpzC,GAAGZ,EAAEyQ,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOujC,GAAE,QAAQpzC,GAAGozC,GAAE,OAAOpzC,GAAGZ,EAAEyQ,EAAE,MAAM,IAAK,UAAUujC,GAAE,SAASpzC,GAAGZ,EAAEyQ,EAAE,MAAM,IAAK,QAAQ+nB,GAAG53B,EAAE6P,GAAGzQ,EAAEm4B,EAAGv3B,EAAE6P,GAAGujC,GAAE,UAAUpzC,GAAG,MAAM,IAAK,SAASZ,EAAE+4B,GAAGn4B,EAAE6P,GAAG,MAAM,IAAK,SAAS7P,EAAE03B,cAAc,CAACqwB,cAAcl4C,EAAEm4C,UAAU5oD,EAAEvD,EAAE,CAAC,EAAEgU,EAAE,CAACpY,WAAM,IAAS27C,GAAE,UAAUpzC,GAAG,MAAM,IAAK,WAAW64B,GAAG74B,EAAE6P,GAAGzQ,EACpfu5B,GAAG34B,EAAE6P,GAAGujC,GAAE,UAAUpzC,GAAG,MAAM,QAAQZ,EAAEyQ,EAAEsuB,GAAGtgC,EAAEuB,GAAG,IAAI22B,EAAE32B,EAAE,IAAIuzB,KAAKoD,EAAE,GAAGA,EAAEplB,eAAegiB,GAAG,CAAC,IAAImD,EAAEC,EAAEpD,GAAG,UAAUA,EAAEqK,GAAGh9B,EAAE81B,GAAG,4BAA4BnD,EAAuB,OAApBmD,EAAEA,EAAEA,EAAEqf,YAAO,IAAgB5b,GAAGv5B,EAAE81B,GAAI,aAAanD,EAAE,kBAAkBmD,GAAG,aAAaj4B,GAAG,KAAKi4B,IAAIiE,GAAG/5B,EAAE81B,GAAG,kBAAkBA,GAAGiE,GAAG/5B,EAAE,GAAG81B,GAAG,mCAAmCnD,GAAG,6BAA6BA,GAAG,cAAcA,IAAIZ,EAAGphB,eAAegiB,GAAG,MAAMmD,GAAG,aAAanD,GAAGygB,GAAE,SAASpzC,GAAG,MAAM81B,GAAGtC,EAAGxzB,EAAE2yB,EAAEmD,EAAElD,GAAG,CAAC,OAAO/0B,GAAG,IAAK,QAAQg5B,EAAG72B,GAAG0O,GAAG1O,EAAE6P,GAAE,GACnf,MAAM,IAAK,WAAWgnB,EAAG72B,GAAG+4B,GAAG/4B,GAAG,MAAM,IAAK,SAAS,MAAM6P,EAAEpY,OAAOuI,EAAE8zB,aAAa,QAAQ,GAAG4C,EAAG7mB,EAAEpY,QAAQ,MAAM,IAAK,SAASuI,EAAEgoD,WAAWn4C,EAAEm4C,SAAmB,OAAVr1B,EAAE9iB,EAAEpY,OAAc8gC,GAAGv4B,IAAI6P,EAAEm4C,SAASr1B,GAAE,GAAI,MAAM9iB,EAAE4nB,cAAcc,GAAGv4B,IAAI6P,EAAEm4C,SAASn4C,EAAE4nB,cAAa,GAAI,MAAM,QAAQ,oBAAoBr4B,EAAE6oD,UAAUjoD,EAAEkoD,QAAQrT,IAAIG,GAAGn3C,EAAEgS,KAAK5V,EAAE0Q,OAAO,EAAE,CAAC,OAAO1Q,EAAE8jD,MAAM9jD,EAAE0Q,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,GAAG3K,GAAG,MAAM/F,EAAE8kC,UAAU6nB,GAAG5mD,EAAE/F,EAAE+F,EAAE8/C,cAAcjwC,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAO5V,EAAE8kC,UAAU,MAAMpoC,MAAMuJ,EAAE,MAC/erC,EAAEwhD,GAAGD,GAAGr+B,SAASs+B,GAAGH,GAAGn+B,SAAS0/B,GAAGxmD,IAAI4V,EAAE5V,EAAE8kC,UAAUlhC,EAAE5D,EAAE6lD,cAAcjwC,EAAE+lC,IAAI37C,EAAE4V,EAAEqqB,YAAYr8B,IAAI5D,EAAE0Q,OAAO,MAAKkF,GAAG,IAAIhS,EAAEo8B,SAASp8B,EAAEA,EAAEq6B,eAAekwB,eAAev4C,IAAK+lC,IAAI37C,EAAEA,EAAE8kC,UAAUlvB,EAAE,CAAC,OAAO,KAAK,KAAK,GAA0B,OAAvBqmC,GAAE0J,IAAG/vC,EAAE5V,EAAEwmC,cAAiB,KAAa,GAARxmC,EAAE0Q,QAAiB1Q,EAAEsgD,MAAM18C,EAAE5D,IAAE4V,EAAE,OAAOA,EAAEhS,GAAE,EAAG,OAAOmC,OAAE,IAAS/F,EAAE6lD,cAAciH,UAAUtG,GAAGxmD,GAAG4D,EAAE,OAAOmC,EAAEygC,cAAiB5wB,IAAIhS,GAAG,KAAY,EAAP5D,EAAEwkD,QAAW,OAAOz+C,IAAG,IAAK/F,EAAE6lD,cAAckH,4BAA4B,KAAe,EAAVpH,GAAE7+B,SAAW,IAAIsnC,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GACrf,GAAE,OAAOvF,IAAG,KAAQ,UAAH/G,KAAe,KAAQ,UAAHuM,KAAeC,GAAGzF,GAAE0F,OAAM34C,GAAGhS,KAAE5D,EAAE0Q,OAAO,GAAS,MAAK,KAAK,EAAE,OAAO80C,KAAKiH,GAAGzsD,GAAG,OAAO+F,GAAG0zC,GAAGz5C,EAAE8kC,UAAUgE,eAAe,KAAK,KAAK,GAAG,OAAOiX,GAAG//C,GAAG,KAA0C,KAAK,GAA0B,GAAvBi8C,GAAE0J,IAAwB,QAArB/vC,EAAE5V,EAAEwmC,eAA0B,OAAO,KAAsC,GAAjC9N,EAAE,KAAa,GAAR14B,EAAE0Q,OAA2B,QAAjBioB,EAAE/iB,EAAE43C,WAAsB,GAAG90B,EAAEk1B,GAAGh4C,GAAE,OAAQ,CAAC,GAAG,IAAIw4C,IAAG,OAAOroD,GAAG,KAAa,GAARA,EAAE2K,OAAU,IAAI3K,EAAE/F,EAAE4mC,MAAM,OAAO7gC,GAAG,CAAS,GAAG,QAAX4yB,EAAEitB,GAAG7/C,IAAe,CACjW,IADkW/F,EAAE0Q,OAAO,GAAGk9C,GAAGh4C,GAAE,GAAoB,QAAhB8iB,EAAEC,EAAEkoB,eAAuB7gD,EAAE6gD,YAAYnoB,EAAE14B,EAAE0Q,OAAO,GACnf,OAAOkF,EAAEuuC,aAAankD,EAAEqkD,YAAY,MAAMrkD,EAAEmkD,WAAWvuC,EAAEuuC,WAAWvuC,EAAEhS,EAAMA,EAAE5D,EAAE4mC,MAAM,OAAOhjC,GAAOmC,EAAE6P,GAAN8iB,EAAE90B,GAAQ8M,OAAO,EAAEgoB,EAAE0rB,WAAW,KAAK1rB,EAAE2rB,YAAY,KAAK3rB,EAAEyrB,WAAW,KAAmB,QAAdxrB,EAAED,EAAE2N,YAAoB3N,EAAEwnB,WAAW,EAAExnB,EAAE4nB,MAAMv6C,EAAE2yB,EAAEkO,MAAM,KAAKlO,EAAEmtB,cAAc,KAAKntB,EAAE8N,cAAc,KAAK9N,EAAEmoB,YAAY,KAAKnoB,EAAE0nB,aAAa,KAAK1nB,EAAEoM,UAAU,OAAOpM,EAAEwnB,WAAWvnB,EAAEunB,WAAWxnB,EAAE4nB,MAAM3nB,EAAE2nB,MAAM5nB,EAAEkO,MAAMjO,EAAEiO,MAAMlO,EAAEmtB,cAAcltB,EAAEktB,cAAcntB,EAAE8N,cAAc7N,EAAE6N,cAAc9N,EAAEmoB,YAAYloB,EAAEkoB,YAAYnoB,EAAEt4B,KAAKu4B,EAAEv4B,KAAK2F,EAAE4yB,EAAEynB,aACpf1nB,EAAE0nB,aAAa,OAAOr6C,EAAE,KAAK,CAACu6C,MAAMv6C,EAAEu6C,MAAMD,aAAat6C,EAAEs6C,eAAez8C,EAAEA,EAAEijC,QAA2B,OAAnBqV,GAAEyJ,GAAY,EAAVA,GAAE7+B,QAAU,GAAU9mB,EAAE4mC,KAAK,CAAC7gC,EAAEA,EAAE8gC,OAAO,CAAC,OAAOjxB,EAAEwU,MAAM20B,KAAIyP,KAAKxuD,EAAE0Q,OAAO,GAAGgoB,GAAE,EAAGk1B,GAAGh4C,GAAE,GAAI5V,EAAEsgD,MAAM,SAAS,KAAK,CAAC,IAAI5nB,EAAE,GAAW,QAAR3yB,EAAE6/C,GAAGjtB,KAAa,GAAG34B,EAAE0Q,OAAO,GAAGgoB,GAAE,EAAmB,QAAhB90B,EAAEmC,EAAE86C,eAAuB7gD,EAAE6gD,YAAYj9C,EAAE5D,EAAE0Q,OAAO,GAAGk9C,GAAGh4C,GAAE,GAAI,OAAOA,EAAEwU,MAAM,WAAWxU,EAAE83C,WAAW/0B,EAAE0N,YAAY4f,GAAG,OAAmC,QAA5BjmD,EAAEA,EAAEmkD,WAAWvuC,EAAEuuC,cAAsBnkD,EAAEokD,WAAW,MAAM,UAAU,EAAErF,KAAInpC,EAAE63C,mBAAmBe,IAAI,aAAa5qD,IAAI5D,EAAE0Q,OACjf,GAAGgoB,GAAE,EAAGk1B,GAAGh4C,GAAE,GAAI5V,EAAEsgD,MAAM,UAAU1qC,EAAE23C,aAAa50B,EAAEkO,QAAQ7mC,EAAE4mC,MAAM5mC,EAAE4mC,MAAMjO,IAAa,QAAT/0B,EAAEgS,EAAEhM,MAAchG,EAAEijC,QAAQlO,EAAE34B,EAAE4mC,MAAMjO,EAAE/iB,EAAEhM,KAAK+uB,EAAE,CAAC,OAAO,OAAO/iB,EAAEwU,MAAMxmB,EAAEgS,EAAEwU,KAAKxU,EAAE43C,UAAU5pD,EAAEgS,EAAEwU,KAAKxmB,EAAEijC,QAAQjxB,EAAEuuC,WAAWnkD,EAAEmkD,WAAWvuC,EAAE63C,mBAAmB1O,KAAIn7C,EAAEijC,QAAQ,KAAK7mC,EAAE2lD,GAAE7+B,QAAQo1B,GAAEyJ,GAAEjtB,EAAI,EAAF14B,EAAI,EAAI,EAAFA,GAAK4D,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO6qD,KAAK,OAAO1oD,GAAG,OAAOA,EAAEygC,iBAAiB,OAAOxmC,EAAEwmC,gBAAgB,kCAAkC5wB,EAAE4uC,OAAOxkD,EAAE0Q,OAAO,GAAG,KAAK,MAAMhU,MAAMuJ,EAAE,IAAIjG,EAAEi8B,KAAM,CACtd,SAASyyB,GAAG3oD,GAAG,OAAOA,EAAEk2B,KAAK,KAAK,EAAE0gB,GAAG52C,EAAE3F,OAAOy8C,KAAK,IAAI78C,EAAE+F,EAAE2K,MAAM,OAAS,KAAF1Q,GAAQ+F,EAAE2K,OAAS,KAAH1Q,EAAQ,GAAG+F,GAAG,KAAK,KAAK,EAAgC,GAA9By/C,KAAKvJ,GAAEI,IAAGJ,GAAEG,IAAGuK,KAAkB,KAAO,IAApB3mD,EAAE+F,EAAE2K,QAAoB,MAAMhU,MAAMuJ,EAAE,MAAyB,OAAnBF,EAAE2K,OAAS,KAAH1Q,EAAQ,GAAU+F,EAAE,KAAK,EAAE,OAAO2/C,GAAG3/C,GAAG,KAAK,KAAK,GAAG,OAAOk2C,GAAE0J,IAAe,MAAZ3lD,EAAE+F,EAAE2K,QAAc3K,EAAE2K,OAAS,KAAH1Q,EAAQ,GAAG+F,GAAG,KAAK,KAAK,GAAG,OAAOk2C,GAAE0J,IAAG,KAAK,KAAK,EAAE,OAAOH,KAAK,KAAK,KAAK,GAAG,OAAOzF,GAAGh6C,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO0oD,KAAK,KAAK,QAAQ,OAAO,KAAK,CAC1a,SAASE,GAAG5oD,EAAE/F,GAAG,IAAI,IAAI4D,EAAE,GAAGgS,EAAE5V,EAAE,GAAG4D,GAAGo4B,EAAGpmB,GAAGA,EAAEA,EAAE0wB,aAAa1wB,GAAG,IAAIzQ,EAAEvB,CAAC,CAAC,MAAM80B,GAAGvzB,EAAE,6BAA6BuzB,EAAEjrB,QAAQ,KAAKirB,EAAElrB,KAAK,CAAC,MAAM,CAAChQ,MAAMuI,EAAE0jB,OAAOzpB,EAAEwN,MAAMrI,EAAE,CAAC,SAASypD,GAAG7oD,EAAE/F,GAAG,IAAIqF,QAAQC,MAAMtF,EAAExC,MAAM,CAAC,MAAMoG,GAAGwR,YAAW,WAAW,MAAMxR,CAAE,GAAE,CAAC,CAlBhQ4oD,GAAG,SAASzmD,EAAE/F,GAAG,IAAI,IAAI4D,EAAE5D,EAAE4mC,MAAM,OAAOhjC,GAAG,CAAC,GAAG,IAAIA,EAAEq4B,KAAK,IAAIr4B,EAAEq4B,IAAIl2B,EAAE45B,YAAY/7B,EAAEkhC,gBAAgB,GAAG,IAAIlhC,EAAEq4B,KAAK,OAAOr4B,EAAEgjC,MAAM,CAAChjC,EAAEgjC,MAAMN,OAAO1iC,EAAEA,EAAEA,EAAEgjC,MAAM,QAAQ,CAAC,GAAGhjC,IAAI5D,EAAE,MAAM,KAAK,OAAO4D,EAAEijC,SAAS,CAAC,GAAG,OAAOjjC,EAAE0iC,QAAQ1iC,EAAE0iC,SAAStmC,EAAE,OAAO4D,EAAEA,EAAE0iC,MAAM,CAAC1iC,EAAEijC,QAAQP,OAAO1iC,EAAE0iC,OAAO1iC,EAAEA,EAAEijC,OAAO,CAAC,EAAE4lB,GAAG,WAAW,EACxTC,GAAG,SAAS3mD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEY,EAAE8/C,cAAc,GAAG1gD,IAAIyQ,EAAE,CAAC7P,EAAE/F,EAAE8kC,UAAUsgB,GAAGH,GAAGn+B,SAAS,IAAyU6R,EAArUD,EAAE,KAAK,OAAO90B,GAAG,IAAK,QAAQuB,EAAEm4B,EAAGv3B,EAAEZ,GAAGyQ,EAAE0nB,EAAGv3B,EAAE6P,GAAG8iB,EAAE,GAAG,MAAM,IAAK,SAASvzB,EAAE+4B,GAAGn4B,EAAEZ,GAAGyQ,EAAEsoB,GAAGn4B,EAAE6P,GAAG8iB,EAAE,GAAG,MAAM,IAAK,SAASvzB,EAAEvD,EAAE,CAAC,EAAEuD,EAAE,CAAC3H,WAAM,IAASoY,EAAEhU,EAAE,CAAC,EAAEgU,EAAE,CAACpY,WAAM,IAASk7B,EAAE,GAAG,MAAM,IAAK,WAAWvzB,EAAEu5B,GAAG34B,EAAEZ,GAAGyQ,EAAE8oB,GAAG34B,EAAE6P,GAAG8iB,EAAE,GAAG,MAAM,QAAQ,oBAAoBvzB,EAAE6oD,SAAS,oBAAoBp4C,EAAEo4C,UAAUjoD,EAAEkoD,QAAQrT,IAAyB,IAAIl6B,KAAzBwjB,GAAGtgC,EAAEgS,GAAShS,EAAE,KAAcuB,EAAE,IAAIyQ,EAAEc,eAAegK,IAAIvb,EAAEuR,eAAegK,IAAI,MAAMvb,EAAEub,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAIob,EAAE32B,EAAEub,GAAG,IAAIiY,KAAKmD,EAAEA,EAAEplB,eAAeiiB,KAAK/0B,IAAIA,EAAE,CAAC,GAAGA,EAAE+0B,GAAG,GAAG,KAAK,4BAA4BjY,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIoX,EAAGphB,eAAegK,GAAGgY,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIv8B,KAAKukB,EAAE,OAAO,IAAIA,KAAK9K,EAAE,CAAC,IAAIimB,EAAEjmB,EAAE8K,GAAyB,GAAtBob,EAAE,MAAM32B,EAAEA,EAAEub,QAAG,EAAU9K,EAAEc,eAAegK,IAAImb,IAAIC,IAAI,MAAMD,GAAG,MAAMC,GAAG,GAAG,UAAUpb,EAAE,GAAGob,EAAE,CAAC,IAAInD,KAAKmD,GAAGA,EAAEplB,eAAeiiB,IAAIkD,GAAGA,EAAEnlB,eAAeiiB,KAAK/0B,IAAIA,EAAE,CAAC,GAAGA,EAAE+0B,GAAG,IAAI,IAAIA,KAAKkD,EAAEA,EAAEnlB,eAAeiiB,IAAImD,EAAEnD,KAAKkD,EAAElD,KAAK/0B,IAClfA,EAAE,CAAC,GAAGA,EAAE+0B,GAAGkD,EAAElD,GAAG,MAAM/0B,IAAI80B,IAAIA,EAAE,IAAIA,EAAEv8B,KAAKukB,EAAE9c,IAAIA,EAAEi4B,MAAM,4BAA4Bnb,GAAGmb,EAAEA,EAAEA,EAAEqf,YAAO,EAAOpf,EAAEA,EAAEA,EAAEof,YAAO,EAAO,MAAMrf,GAAGC,IAAID,IAAInD,EAAEA,GAAG,IAAIv8B,KAAKukB,EAAEmb,IAAI,aAAanb,EAAE,kBAAkBmb,GAAG,kBAAkBA,IAAInD,EAAEA,GAAG,IAAIv8B,KAAKukB,EAAE,GAAGmb,GAAG,mCAAmCnb,GAAG,6BAA6BA,IAAIoX,EAAGphB,eAAegK,IAAI,MAAMmb,GAAG,aAAanb,GAAGy4B,GAAE,SAASpzC,GAAG2yB,GAAGoD,IAAID,IAAInD,EAAE,KAAK,kBAAkBmD,GAAG,OAAOA,GAAGA,EAAEQ,WAAWtB,EAAGc,EAAE7+B,YAAY07B,EAAEA,GAAG,IAAIv8B,KAAKukB,EAAEmb,GAAG,CAACj4B,IAAI80B,EAAEA,GAAG,IAAIv8B,KAAK,QAC/eyH,GAAG,IAAI8c,EAAEgY,GAAK14B,EAAE6gD,YAAYngC,KAAE1gB,EAAE0Q,OAAO,EAAC,CAAC,EAAEi8C,GAAG,SAAS5mD,EAAE/F,EAAE4D,EAAEgS,GAAGhS,IAAIgS,IAAI5V,EAAE0Q,OAAO,EAAE,EAc8K,IAAIm+C,GAAG,oBAAoBC,QAAQA,QAAQpnB,IAAI,SAASqnB,GAAGhpD,EAAE/F,EAAE4D,IAAGA,EAAEy9C,IAAI,EAAEz9C,IAAKq4B,IAAI,EAAEr4B,EAAE49C,QAAQ,CAACwN,QAAQ,MAAM,IAAIp5C,EAAE5V,EAAExC,MAAsD,OAAhDoG,EAAEmgB,SAAS,WAAWkrC,KAAKA,IAAG,EAAGC,GAAGt5C,GAAGg5C,GAAG7oD,EAAE/F,EAAE,EAAS4D,CAAC,CACrb,SAASurD,GAAGppD,EAAE/F,EAAE4D,IAAGA,EAAEy9C,IAAI,EAAEz9C,IAAKq4B,IAAI,EAAE,IAAIrmB,EAAE7P,EAAE3F,KAAKisD,yBAAyB,GAAG,oBAAoBz2C,EAAE,CAAC,IAAIzQ,EAAEnF,EAAExC,MAAMoG,EAAE49C,QAAQ,WAAmB,OAARoN,GAAG7oD,EAAE/F,GAAU4V,EAAEzQ,EAAE,CAAC,CAAC,IAAIuzB,EAAE3yB,EAAE++B,UAA8O,OAApO,OAAOpM,GAAG,oBAAoBA,EAAE02B,oBAAoBxrD,EAAEmgB,SAAS,WAAW,oBAAoBnO,IAAI,OAAOy5C,GAAGA,GAAG,IAAIx3B,IAAI,CAAC12B,OAAOkuD,GAAGp3B,IAAI92B,MAAMytD,GAAG7oD,EAAE/F,IAAI,IAAI4D,EAAE5D,EAAEwN,MAAMrM,KAAKiuD,kBAAkBpvD,EAAExC,MAAM,CAAC8xD,eAAe,OAAO1rD,EAAEA,EAAE,IAAI,GAAUA,CAAC,CAAC,IAAI2rD,GAAG,oBAAoBC,QAAQA,QAAQ33B,IACxc,SAAS43B,GAAG1pD,GAAG,IAAI/F,EAAE+F,EAAE+9C,IAAI,GAAG,OAAO9jD,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAM4D,GAAG8rD,GAAG3pD,EAAEnC,EAAE,MAAM5D,EAAE8mB,QAAQ,IAAI,CAAC,SAAS6oC,GAAG5pD,EAAE/F,GAAG,OAAOA,EAAEi8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAA8Q,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAjS,KAAK,EAAE,GAAW,IAARj8B,EAAE0Q,OAAW,OAAO3K,EAAE,CAAC,IAAInC,EAAEmC,EAAE8/C,cAAcjwC,EAAE7P,EAAEygC,cAA4BxmC,GAAd+F,EAAE/F,EAAE8kC,WAAc0e,wBAAwBxjD,EAAEykD,cAAczkD,EAAEI,KAAKwD,EAAE47C,GAAGx/C,EAAEI,KAAKwD,GAAGgS,GAAG7P,EAAE6pD,oCAAoC5vD,CAAC,CAAC,OAAO,KAAK,EAA6C,YAAnC,IAARA,EAAE0Q,OAAW2qC,GAAGr7C,EAAE8kC,UAAUgE,gBAA0D,MAAMpsC,MAAMuJ,EAAE,KAAM,CAClf,SAAS4pD,GAAG9pD,EAAE/F,EAAE4D,GAAG,OAAOA,EAAEq4B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhCj8B,EAAE,QAAlBA,EAAE4D,EAAEi9C,aAAuB7gD,EAAEmkD,WAAW,MAAiB,CAACp+C,EAAE/F,EAAEA,EAAEwf,KAAK,EAAE,CAAC,GAAG,KAAW,EAANzZ,EAAEk2B,KAAO,CAAC,IAAIrmB,EAAE7P,EAAE2L,OAAO3L,EAAEsY,QAAQzI,GAAG,CAAC7P,EAAEA,EAAEyZ,IAAI,OAAOzZ,IAAI/F,EAAE,CAA8C,GAAG,QAAhCA,EAAE,QAAlBA,EAAE4D,EAAEi9C,aAAuB7gD,EAAEmkD,WAAW,MAAiB,CAACp+C,EAAE/F,EAAEA,EAAEwf,KAAK,EAAE,CAAC,IAAIra,EAAEY,EAAE6P,EAAEzQ,EAAEqa,KAAa,KAAO,GAAfra,EAAEA,EAAE82B,OAAe,KAAO,EAAF92B,KAAO2qD,GAAGlsD,EAAEmC,GAAGgqD,GAAGnsD,EAAEmC,IAAIA,EAAE6P,CAAC,OAAO7P,IAAI/F,EAAE,CAAC,OAAO,KAAK,EACtR,OADwR+F,EAAEnC,EAAEkhC,UAAkB,EAARlhC,EAAE8M,QAAU,OAAO1Q,EAAE+F,EAAE49C,qBAAqB/tC,EAAEhS,EAAE6gD,cAAc7gD,EAAExD,KAAKJ,EAAE6lD,cAAcrG,GAAG57C,EAAExD,KAAKJ,EAAE6lD,eAAe9/C,EAAEomD,mBAAmBv2C,EACxgB5V,EAAEwmC,cAAczgC,EAAE6pD,4CAAuD,QAAhB5vD,EAAE4D,EAAEi9C,cAAsBkB,GAAGn+C,EAAE5D,EAAE+F,IAAU,KAAK,EAAkB,GAAG,QAAnB/F,EAAE4D,EAAEi9C,aAAwB,CAAQ,GAAP96C,EAAE,KAAQ,OAAOnC,EAAEgjC,MAAM,OAAOhjC,EAAEgjC,MAAM3K,KAAK,KAAK,EAA4B,KAAK,EAAEl2B,EAAEnC,EAAEgjC,MAAM9B,UAAUid,GAAGn+C,EAAE5D,EAAE+F,EAAE,CAAC,OAAO,KAAK,EAA2E,OAAzEA,EAAEnC,EAAEkhC,eAAU,OAAO9kC,GAAW,EAAR4D,EAAE8M,OAASqqC,GAAGn3C,EAAExD,KAAKwD,EAAEiiD,gBAAgB9/C,EAAEiqD,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GACnX,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAD6U,KAAK,GACzY,YAD4Y,OAAOpsD,EAAE4iC,gBAAgB5iC,EAAEA,EAAEyiC,UAAU,OAAOziC,IAAIA,EAAEA,EAAE4iC,cAAc,OAAO5iC,IAAIA,EAAEA,EAAE6iC,WAAW,OAAO7iC,GAAG0lC,GAAG1lC,OACzb,MAAMlH,MAAMuJ,EAAE,KAAM,CAClF,SAASgqD,GAAGlqD,EAAE/F,GAAG,IAAI,IAAI4D,EAAEmC,IAAI,CAAC,GAAG,IAAInC,EAAEq4B,IAAI,CAAC,IAAIrmB,EAAEhS,EAAEkhC,UAAU,GAAG9kC,EAAY,oBAAV4V,EAAEA,EAAEotB,OAA4BC,YAAYrtB,EAAEqtB,YAAY,UAAU,OAAO,aAAartB,EAAEs6C,QAAQ,WAAW,CAACt6C,EAAEhS,EAAEkhC,UAAU,IAAI3/B,EAAEvB,EAAEiiD,cAAc7iB,MAAM79B,OAAE,IAASA,GAAG,OAAOA,GAAGA,EAAEuR,eAAe,WAAWvR,EAAE+qD,QAAQ,KAAKt6C,EAAEotB,MAAMktB,QAAQptB,GAAG,UAAU39B,EAAE,CAAC,MAAM,GAAG,IAAIvB,EAAEq4B,IAAIr4B,EAAEkhC,UAAU7E,UAAUjgC,EAAE,GAAG4D,EAAEiiD,mBAAmB,IAAI,KAAKjiD,EAAEq4B,KAAK,KAAKr4B,EAAEq4B,KAAK,OAAOr4B,EAAE4iC,eAAe5iC,IAAImC,IAAI,OAAOnC,EAAEgjC,MAAM,CAAChjC,EAAEgjC,MAAMN,OAAO1iC,EAAEA,EAAEA,EAAEgjC,MAAM,QAAQ,CAAC,GAAGhjC,IACtfmC,EAAE,MAAM,KAAK,OAAOnC,EAAEijC,SAAS,CAAC,GAAG,OAAOjjC,EAAE0iC,QAAQ1iC,EAAE0iC,SAASvgC,EAAE,OAAOnC,EAAEA,EAAE0iC,MAAM,CAAC1iC,EAAEijC,QAAQP,OAAO1iC,EAAE0iC,OAAO1iC,EAAEA,EAAEijC,OAAO,CAAC,CACzH,SAASspB,GAAGpqD,EAAE/F,GAAG,GAAGq9C,IAAI,oBAAoBA,GAAG+S,qBAAqB,IAAI/S,GAAG+S,qBAAqBhT,GAAGp9C,EAAE,CAAC,MAAM04B,GAAG,CAAC,OAAO14B,EAAEi8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnBl2B,EAAE/F,EAAE6gD,cAAyC,QAAf96C,EAAEA,EAAEo+C,YAAqB,CAAC,IAAIvgD,EAAEmC,EAAEA,EAAEyZ,KAAK,EAAE,CAAC,IAAI5J,EAAEhS,EAAEuB,EAAEyQ,EAAEyI,QAAgB,GAARzI,EAAEA,EAAEqmB,SAAO,IAAS92B,EAAE,GAAG,KAAO,EAAFyQ,GAAKk6C,GAAG9vD,EAAE4D,OAAO,CAACgS,EAAE5V,EAAE,IAAImF,GAAG,CAAC,MAAMuzB,GAAGg3B,GAAG95C,EAAE8iB,EAAE,CAAC,CAAC90B,EAAEA,EAAE4b,IAAI,OAAO5b,IAAImC,EAAE,CAAC,MAAM,KAAK,EAAsB,GAApB0pD,GAAGzvD,GAAoB,oBAAjB+F,EAAE/F,EAAE8kC,WAAmCurB,qBAAqB,IAAItqD,EAAE+jB,MAAM9pB,EAAE6lD,cAAc9/C,EAAEuM,MAAMtS,EAAEwmC,cAAczgC,EAAEsqD,sBAAsB,CAAC,MAAM33B,GAAGg3B,GAAG1vD,EAC/gB04B,EAAE,CAAC,MAAM,KAAK,EAAE+2B,GAAGzvD,GAAG,MAAM,KAAK,EAAEswD,GAAGvqD,EAAE/F,GAAG,CAAC,SAASuwD,GAAGxqD,GAAGA,EAAEsgC,UAAU,KAAKtgC,EAAE6gC,MAAM,KAAK7gC,EAAEq6C,aAAa,KAAKr6C,EAAEs+C,YAAY,KAAKt+C,EAAEo+C,WAAW,KAAKp+C,EAAE8/C,cAAc,KAAK9/C,EAAEygC,cAAc,KAAKzgC,EAAEsgD,aAAa,KAAKtgD,EAAEugC,OAAO,KAAKvgC,EAAE86C,YAAY,IAAI,CAAC,SAAS2P,GAAGzqD,GAAG,OAAO,IAAIA,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,KAAK,IAAIl2B,EAAEk2B,GAAG,CACtS,SAASw0B,GAAG1qD,GAAGA,EAAE,CAAC,IAAI,IAAI/F,EAAE+F,EAAEugC,OAAO,OAAOtmC,GAAG,CAAC,GAAGwwD,GAAGxwD,GAAG,MAAM+F,EAAE/F,EAAEA,EAAEsmC,MAAM,CAAC,MAAM5pC,MAAMuJ,EAAE,KAAM,CAAC,IAAIrC,EAAE5D,EAAgB,OAAdA,EAAE4D,EAAEkhC,UAAiBlhC,EAAEq4B,KAAK,KAAK,EAAE,IAAIrmB,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAE5V,EAAEA,EAAE8oC,cAAclzB,GAAE,EAAG,MAAM,QAAQ,MAAMlZ,MAAMuJ,EAAE,MAAe,GAARrC,EAAE8M,QAAWovB,GAAG9/B,EAAE,IAAI4D,EAAE8M,QAAQ,IAAI3K,EAAE/F,EAAE,IAAI4D,EAAEmC,IAAI,CAAC,KAAK,OAAOnC,EAAEijC,SAAS,CAAC,GAAG,OAAOjjC,EAAE0iC,QAAQkqB,GAAG5sD,EAAE0iC,QAAQ,CAAC1iC,EAAE,KAAK,MAAMmC,CAAC,CAACnC,EAAEA,EAAE0iC,MAAM,CAA2B,IAA1B1iC,EAAEijC,QAAQP,OAAO1iC,EAAE0iC,OAAW1iC,EAAEA,EAAEijC,QAAQ,IAAIjjC,EAAEq4B,KAAK,IAAIr4B,EAAEq4B,KAAK,KAAKr4B,EAAEq4B,KAAK,CAAC,GAAW,EAARr4B,EAAE8M,MAAQ,SAAS1Q,EAAE,GAAG,OAC/e4D,EAAEgjC,OAAO,IAAIhjC,EAAEq4B,IAAI,SAASj8B,EAAO4D,EAAEgjC,MAAMN,OAAO1iC,EAAEA,EAAEA,EAAEgjC,KAAK,CAAC,KAAa,EAARhjC,EAAE8M,OAAS,CAAC9M,EAAEA,EAAEkhC,UAAU,MAAM/+B,CAAC,CAAC,CAAC6P,EAAE86C,GAAG3qD,EAAEnC,EAAE5D,GAAG2wD,GAAG5qD,EAAEnC,EAAE5D,EAAE,CAC3H,SAAS0wD,GAAG3qD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAEk2B,IAAI92B,EAAE,IAAIyQ,GAAG,IAAIA,EAAE,GAAGzQ,EAAEY,EAAEZ,EAAEY,EAAE++B,UAAU/+B,EAAE++B,UAAU7a,SAASjqB,EAAE,IAAI4D,EAAEo8B,SAASp8B,EAAE4gC,WAAWosB,aAAa7qD,EAAE/F,GAAG4D,EAAEgtD,aAAa7qD,EAAE/F,IAAI,IAAI4D,EAAEo8B,UAAUhgC,EAAE4D,EAAE4gC,YAAaosB,aAAa7qD,EAAEnC,IAAK5D,EAAE4D,GAAI+7B,YAAY55B,GAA4B,QAAxBnC,EAAEA,EAAEitD,2BAA8B,IAASjtD,GAAG,OAAO5D,EAAEiuD,UAAUjuD,EAAEiuD,QAAQrT,UAAU,GAAG,IAAIhlC,GAAc,QAAV7P,EAAEA,EAAE6gC,OAAgB,IAAI8pB,GAAG3qD,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAE8gC,QAAQ,OAAO9gC,GAAG2qD,GAAG3qD,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAE8gC,OAAO,CACrZ,SAAS8pB,GAAG5qD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAEk2B,IAAI92B,EAAE,IAAIyQ,GAAG,IAAIA,EAAE,GAAGzQ,EAAEY,EAAEZ,EAAEY,EAAE++B,UAAU/+B,EAAE++B,UAAU7a,SAASjqB,EAAE4D,EAAEgtD,aAAa7qD,EAAE/F,GAAG4D,EAAE+7B,YAAY55B,QAAQ,GAAG,IAAI6P,GAAc,QAAV7P,EAAEA,EAAE6gC,OAAgB,IAAI+pB,GAAG5qD,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAE8gC,QAAQ,OAAO9gC,GAAG4qD,GAAG5qD,EAAE/F,EAAE4D,GAAGmC,EAAEA,EAAE8gC,OAAO,CAC5N,SAASypB,GAAGvqD,EAAE/F,GAAG,IAAI,IAAamF,EAAEuzB,EAAX90B,EAAE5D,EAAE4V,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEhS,EAAE0iC,OAAOvgC,EAAE,OAAO,CAAC,GAAG,OAAO6P,EAAE,MAAMlZ,MAAMuJ,EAAE,MAAoB,OAAdd,EAAEyQ,EAAEkvB,UAAiBlvB,EAAEqmB,KAAK,KAAK,EAAEvD,GAAE,EAAG,MAAM3yB,EAAE,KAAK,EAAiC,KAAK,EAAEZ,EAAEA,EAAE2jC,cAAcpQ,GAAE,EAAG,MAAM3yB,EAAE6P,EAAEA,EAAE0wB,MAAM,CAAC1wB,GAAE,CAAE,CAAC,GAAG,IAAIhS,EAAEq4B,KAAK,IAAIr4B,EAAEq4B,IAAI,CAACl2B,EAAE,IAAI,IAAI4yB,EAAE5yB,EAAE+1B,EAAEl4B,EAAEi4B,EAAEC,IAAI,GAAGq0B,GAAGx3B,EAAEkD,GAAG,OAAOA,EAAE+K,OAAO,IAAI/K,EAAEI,IAAIJ,EAAE+K,MAAMN,OAAOzK,EAAEA,EAAEA,EAAE+K,UAAU,CAAC,GAAG/K,IAAIC,EAAE,MAAM/1B,EAAE,KAAK,OAAO81B,EAAEgL,SAAS,CAAC,GAAG,OAAOhL,EAAEyK,QAAQzK,EAAEyK,SAASxK,EAAE,MAAM/1B,EAAE81B,EAAEA,EAAEyK,MAAM,CAACzK,EAAEgL,QAAQP,OAAOzK,EAAEyK,OAAOzK,EAAEA,EAAEgL,OAAO,CAACnO,GAAGC,EAAExzB,EAAE22B,EAAEl4B,EAAEkhC,UACrf,IAAInM,EAAEqH,SAASrH,EAAE6L,WAAW9E,YAAY5D,GAAGnD,EAAE+G,YAAY5D,IAAI32B,EAAEu6B,YAAY97B,EAAEkhC,UAAU,MAAM,GAAG,IAAIlhC,EAAEq4B,KAAK,GAAG,OAAOr4B,EAAEgjC,MAAM,CAACzhC,EAAEvB,EAAEkhC,UAAUgE,cAAcpQ,GAAE,EAAG90B,EAAEgjC,MAAMN,OAAO1iC,EAAEA,EAAEA,EAAEgjC,MAAM,QAAQ,OAAO,GAAGupB,GAAGpqD,EAAEnC,GAAG,OAAOA,EAAEgjC,MAAM,CAAChjC,EAAEgjC,MAAMN,OAAO1iC,EAAEA,EAAEA,EAAEgjC,MAAM,QAAQ,CAAC,GAAGhjC,IAAI5D,EAAE,MAAM,KAAK,OAAO4D,EAAEijC,SAAS,CAAC,GAAG,OAAOjjC,EAAE0iC,QAAQ1iC,EAAE0iC,SAAStmC,EAAE,OAAkB,KAAX4D,EAAEA,EAAE0iC,QAAarK,MAAMrmB,GAAE,EAAG,CAAChS,EAAEijC,QAAQP,OAAO1iC,EAAE0iC,OAAO1iC,EAAEA,EAAEijC,OAAO,CAAC,CAC1Z,SAASiqB,GAAG/qD,EAAE/F,GAAG,OAAOA,EAAEi8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIr4B,EAAE5D,EAAE6gD,YAAyC,GAAG,QAAhCj9C,EAAE,OAAOA,EAAEA,EAAEugD,WAAW,MAAiB,CAAC,IAAIvuC,EAAEhS,EAAEA,EAAE4b,KAAK,GAAG,KAAW,EAAN5J,EAAEqmB,OAASl2B,EAAE6P,EAAEyI,QAAQzI,EAAEyI,aAAQ,OAAO,IAAStY,GAAGA,KAAK6P,EAAEA,EAAE4J,WAAW5J,IAAIhS,EAAE,CAAC,OAAO,KAAK,EAErJ,KAAK,GAAoG,KAAK,GAAG,OAF6C,KAAK,EAAgB,GAAG,OAAjBA,EAAE5D,EAAE8kC,WAAqB,CAAClvB,EAAE5V,EAAE6lD,cAAc,IAAI1gD,EAAE,OAAOY,EAAEA,EAAE8/C,cAAcjwC,EAAE7P,EAAE/F,EAAEI,KAAK,IAAIs4B,EAAE14B,EAAE6gD,YAA+B,GAAnB7gD,EAAE6gD,YAAY,KAAQ,OAAOnoB,EAAE,CAAgF,IAA/E90B,EAAEg4C,IAAIhmC,EAAE,UAAU7P,GAAG,UAAU6P,EAAExV,MAAM,MAAMwV,EAAErI,MAAMuwB,GAAGl6B,EAAEgS,GAAGuuB,GAAGp+B,EAAEZ,GAAGnF,EAAEmkC,GAAGp+B,EAAE6P,GAAOzQ,EAAE,EAAEA,EAAEuzB,EAAE58B,OAAOqJ,GAClf,EAAE,CAAC,IAAIwzB,EAAED,EAAEvzB,GAAG22B,EAAEpD,EAAEvzB,EAAE,GAAG,UAAUwzB,EAAEoK,GAAGn/B,EAAEk4B,GAAG,4BAA4BnD,EAAE2G,GAAG17B,EAAEk4B,GAAG,aAAanD,EAAEmH,GAAGl8B,EAAEk4B,GAAGvC,EAAG31B,EAAE+0B,EAAEmD,EAAE97B,EAAE,CAAC,OAAO+F,GAAG,IAAK,QAAQg4B,GAAGn6B,EAAEgS,GAAG,MAAM,IAAK,WAAWipB,GAAGj7B,EAAEgS,GAAG,MAAM,IAAK,SAAS7P,EAAEnC,EAAE65B,cAAcqwB,YAAYlqD,EAAE65B,cAAcqwB,cAAcl4C,EAAEm4C,SAAmB,OAAVr1B,EAAE9iB,EAAEpY,OAAc8gC,GAAG16B,IAAIgS,EAAEm4C,SAASr1B,GAAE,GAAI3yB,MAAM6P,EAAEm4C,WAAW,MAAMn4C,EAAE4nB,aAAac,GAAG16B,IAAIgS,EAAEm4C,SAASn4C,EAAE4nB,cAAa,GAAIc,GAAG16B,IAAIgS,EAAEm4C,SAASn4C,EAAEm4C,SAAS,GAAG,IAAG,IAAK,CAAC,CAAC,OAAO,KAAK,EAAE,GAAG,OAAO/tD,EAAE8kC,UAAU,MAAMpoC,MAAMuJ,EAAE,MAC/c,YADqdjG,EAAE8kC,UAAU7E,UACjfjgC,EAAE6lD,eAAqB,KAAK,EAA8D,aAA5DjiD,EAAE5D,EAAE8kC,WAAY+D,UAAUjlC,EAAEilC,SAAQ,EAAGS,GAAG1lC,EAAEklC,iBAAsC,KAAK,GAAyD,OAAtD,OAAO9oC,EAAEwmC,gBAAgBuqB,GAAGhS,KAAIkR,GAAGjwD,EAAE4mC,OAAM,SAAKoqB,GAAGhxD,GAAU,KAAK,GAAS,YAANgxD,GAAGhxD,GAAyB,KAAK,GAAG,KAAK,GAAgC,YAA7BiwD,GAAGjwD,EAAE,OAAOA,EAAEwmC,eAAsB,MAAM9pC,MAAMuJ,EAAE,KAAM,CAAC,SAAS+qD,GAAGjrD,GAAG,IAAI/F,EAAE+F,EAAE86C,YAAY,GAAG,OAAO7gD,EAAE,CAAC+F,EAAE86C,YAAY,KAAK,IAAIj9C,EAAEmC,EAAE++B,UAAU,OAAOlhC,IAAIA,EAAEmC,EAAE++B,UAAU,IAAIyqB,IAAIvvD,EAAE0pB,SAAQ,SAAS1pB,GAAG,IAAI4V,EAAEq7C,GAAGz+C,KAAK,KAAKzM,EAAE/F,GAAG4D,EAAEy1C,IAAIr5C,KAAK4D,EAAEq0B,IAAIj4B,GAAGA,EAAEiV,KAAKW,EAAEA,GAAG,GAAE,CAAC,CACze,SAASs7C,GAAGnrD,EAAE/F,GAAG,OAAO,OAAO+F,IAAsB,QAAlBA,EAAEA,EAAEygC,gBAAwB,OAAOzgC,EAAE0gC,cAA+B,QAAlBzmC,EAAEA,EAAEwmC,gBAAwB,OAAOxmC,EAAEymC,WAAc,CAAC,IAAI0qB,GAAGntD,KAAKorB,KAAKgiC,GAAGp3B,EAAG8sB,uBAAuBuK,GAAGr3B,EAAGqxB,kBAAkBiG,GAAE,EAAEzI,GAAE,KAAK0I,GAAE,KAAKhD,GAAE,EAAEiD,GAAG,EAAEC,GAAGzV,GAAG,GAAGoS,GAAE,EAAEsD,GAAG,KAAKC,GAAG,EAAE7P,GAAG,EAAEuM,GAAG,EAAEuD,GAAG,EAAEC,GAAG,KAAKd,GAAG,EAAEvC,GAAGlgD,IAAS,SAASwjD,KAAKtD,GAAGzP,KAAI,GAAG,CAAC,IA8BsFgT,GA9BlFC,GAAE,KAAK/C,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAK4C,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAASrQ,KAAK,OAAO,KAAO,GAAF8O,IAAMvS,MAAK,IAAI0T,GAAGA,GAAGA,GAAG1T,IAAG,CAC9e,SAAS0D,GAAG18C,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAEy+C,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAFz+C,GAAK,OAAO,KAAKi5C,KAAK,EAAE,EAAkB,GAAhB,IAAI0T,KAAKA,GAAGf,IAAO,IAAIrS,GAAGrV,WAAW,CAAC,IAAI0oB,KAAKA,GAAG,OAAOd,GAAGA,GAAG9mB,aAAa,GAAGhlC,EAAE2sD,GAAG,IAAI1yD,EAAE,SAAS2yD,GAAsD,OAA7C,KAAN3yD,IAAIA,KAA8B,KAAPA,GAAb+F,EAAE,SAASA,IAAOA,KAAU/F,EAAE,OAAcA,CAAC,CAA2D,OAA1D+F,EAAEi5C,KAAK,KAAO,EAAFsS,KAAM,KAAKvrD,EAAEA,EAAEwlC,GAAG,GAAGmnB,IAAa3sD,EAAEwlC,GAAVxlC,EAtK3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,EAAE,CAsKqJ+sD,CAAG/sD,GAAU2sD,IAAY3sD,CAAC,CACpT,SAAS28C,GAAG38C,EAAE/F,EAAE4D,GAAG,GAAG,GAAG2uD,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK91D,MAAMuJ,EAAE,MAAgB,GAAG,QAAbF,EAAEgtD,GAAGhtD,EAAE/F,IAAe,OAAO,KAAK0rC,GAAG3lC,EAAE/F,EAAE4D,GAAGmC,IAAI8iD,KAAIwF,IAAIruD,EAAE,IAAIouD,IAAGE,GAAGvoD,EAAEwoD,KAAI,IAAI34C,EAAEopC,KAAK,IAAIh/C,EAAE,KAAO,EAAFsxD,KAAM,KAAO,GAAFA,IAAM0B,GAAGjtD,IAAIktD,GAAGltD,EAAEnC,GAAG,IAAI0tD,KAAIQ,KAAK1S,QAAQ,KAAO,EAAFkS,KAAM,KAAK17C,GAAG,KAAKA,IAAI,OAAO08C,GAAGA,GAAG,IAAIz6B,IAAI,CAAC9xB,IAAIusD,GAAGr6B,IAAIlyB,IAAIktD,GAAGltD,EAAEnC,IAAIiuD,GAAG9rD,CAAC,CAAC,SAASgtD,GAAGhtD,EAAE/F,GAAG+F,EAAEu6C,OAAOtgD,EAAE,IAAI4D,EAAEmC,EAAEsgC,UAAqC,IAA3B,OAAOziC,IAAIA,EAAE08C,OAAOtgD,GAAG4D,EAAEmC,EAAMA,EAAEA,EAAEugC,OAAO,OAAOvgC,GAAGA,EAAEm6C,YAAYlgD,EAAgB,QAAd4D,EAAEmC,EAAEsgC,aAAqBziC,EAAEs8C,YAAYlgD,GAAG4D,EAAEmC,EAAEA,EAAEA,EAAEugC,OAAO,OAAO,IAAI1iC,EAAEq4B,IAAIr4B,EAAEkhC,UAAU,IAAI,CAC7e,SAASmuB,GAAGltD,EAAE/F,GAAG,IAAI,IAAI4D,EAAEmC,EAAEmtD,aAAat9C,EAAE7P,EAAEklC,eAAe9lC,EAAEY,EAAEmlC,YAAYxS,EAAE3yB,EAAEotD,gBAAgBx6B,EAAE5yB,EAAEglC,aAAa,EAAEpS,GAAG,CAAC,IAAImD,EAAE,GAAGqP,GAAGxS,GAAGkD,EAAE,GAAGC,EAAEpb,EAAEgY,EAAEoD,GAAG,IAAI,IAAIpb,GAAG,GAAG,KAAKmb,EAAEjmB,IAAI,KAAKimB,EAAE12B,GAAG,CAACub,EAAE1gB,EAAE6qC,GAAGhP,GAAG,IAAIl6B,EAAEipC,GAAElS,EAAEoD,GAAG,IAAIn6B,EAAE+e,EAAE,IAAI,GAAG/e,EAAE+e,EAAE,KAAK,CAAC,OAAOA,GAAG1gB,IAAI+F,EAAEilC,cAAcnP,GAAGlD,IAAIkD,CAAC,CAAuB,GAAtBjmB,EAAEk1B,GAAG/kC,EAAEA,IAAI8iD,GAAE0F,GAAE,GAAGvuD,EAAE4qC,GAAK,IAAIh1B,EAAE,OAAOhS,IAAIA,IAAI66C,IAAIjB,GAAG55C,GAAGmC,EAAEmtD,aAAa,KAAKntD,EAAEqtD,iBAAiB,OAAO,CAAC,GAAG,OAAOxvD,EAAE,CAAC,GAAGmC,EAAEqtD,mBAAmBpzD,EAAE,OAAO4D,IAAI66C,IAAIjB,GAAG55C,EAAE,CAAC,KAAK5D,GAAG4D,EAAEovD,GAAGxgD,KAAK,KAAKzM,GAAG,OAAO44C,IAAIA,GAAG,CAAC/6C,GAAGg7C,GAAGrB,GAAGU,GAAGoB,KAAKV,GAAGxiD,KAAKyH,GACrfA,EAAE66C,IAAI,KAAKz+C,EAAE4D,EAAEu7C,GAAG,GAAG6T,GAAGxgD,KAAK,KAAKzM,KAAKnC,EAzK+F,SAAYmC,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAMrJ,MAAMuJ,EAAE,IAAIF,IAAK,CAyK7TstD,CAAGrzD,GAAG4D,EAAEu7C,GAAGv7C,EAAE0vD,GAAG9gD,KAAK,KAAKzM,KAAKA,EAAEqtD,iBAAiBpzD,EAAE+F,EAAEmtD,aAAatvD,CAAC,CAAC,CAC9G,SAAS0vD,GAAGvtD,GAAiB,GAAd0sD,IAAI,EAAEE,GAAGD,GAAG,EAAK,KAAO,GAAFpB,IAAM,MAAM50D,MAAMuJ,EAAE,MAAM,IAAIjG,EAAE+F,EAAEmtD,aAAa,GAAGK,MAAMxtD,EAAEmtD,eAAelzD,EAAE,OAAO,KAAK,IAAI4D,EAAEknC,GAAG/kC,EAAEA,IAAI8iD,GAAE0F,GAAE,GAAG,GAAG,IAAI3qD,EAAE,OAAO,KAAK,IAAIgS,EAAEhS,EAAMuB,EAAEmsD,GAAEA,IAAG,GAAG,IAAI54B,EAAE86B,KAAkC,IAA1B3K,KAAI9iD,GAAGwoD,KAAI34C,IAAEk8C,KAAK2B,GAAG1tD,EAAE6P,UAAU89C,KAAK,KAAK,CAAC,MAAM53B,GAAG63B,GAAG5tD,EAAE+1B,EAAE,CAA8D,GAApDgkB,KAAKsR,GAAGtqC,QAAQ4R,EAAE44B,GAAEnsD,EAAE,OAAOosD,GAAE37C,EAAE,GAAGizC,GAAE,KAAK0F,GAAE,EAAE34C,EAAEw4C,IAAM,KAAKuD,GAAGtD,IAAIoF,GAAG1tD,EAAE,QAAQ,GAAG,IAAI6P,EAAE,CAAyF,GAAxF,IAAIA,IAAI07C,IAAG,GAAGvrD,EAAE8iC,UAAU9iC,EAAE8iC,SAAQ,EAAGwS,GAAGt1C,EAAE+iC,gBAAwB,KAARllC,EAAE0nC,GAAGvlC,MAAW6P,EAAEg+C,GAAG7tD,EAAEnC,KAAQ,IAAIgS,EAAE,MAAM5V,EAAE0xD,GAAG+B,GAAG1tD,EAAE,GAAGuoD,GAAGvoD,EAAEnC,GAAGqvD,GAAGltD,EAAEg5C,MAAK/+C,EAC3c,OAD6c+F,EAAE8tD,aACrf9tD,EAAE+gB,QAAQuf,UAAUtgC,EAAE+tD,cAAclwD,EAASgS,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMlZ,MAAMuJ,EAAE,MAAM,KAAK,EACI,KAAK,EAAE8tD,GAAGhuD,GAAG,MADH,KAAK,EAAU,GAARuoD,GAAGvoD,EAAEnC,IAAS,SAAFA,KAAcA,GAAiB,IAAbgS,EAAEm7C,GAAG,IAAIhS,MAAU,CAAC,GAAG,IAAIjU,GAAG/kC,EAAE,GAAG,MAAyB,KAAnBZ,EAAEY,EAAEklC,gBAAqBrnC,KAAKA,EAAE,CAAC4+C,KAAKz8C,EAAEmlC,aAAanlC,EAAEklC,eAAe9lC,EAAE,KAAK,CAACY,EAAEiuD,cAAc7Y,GAAG4Y,GAAGvhD,KAAK,KAAKzM,GAAG6P,GAAG,KAAK,CAACm+C,GAAGhuD,GAAG,MAAM,KAAK,EAAU,GAARuoD,GAAGvoD,EAAEnC,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfgS,EAAE7P,EAAE4lC,WAAexmC,GAAG,EAAE,EAAEvB,GAAG,CAAC,IAAI+0B,EAAE,GAAGwS,GAAGvnC,GAAG80B,EAAE,GAAGC,GAAEA,EAAE/iB,EAAE+iB,IAAKxzB,IAAIA,EAAEwzB,GAAG/0B,IAAI80B,CAAC,CAClZ,GADmZ90B,EAAEuB,EAClZ,IAD4ZvB,GAAG,KAAXA,EAAEm7C,KAAIn7C,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAKutD,GAAGvtD,EAAE,OAAOA,GAAU,CAACmC,EAAEiuD,cAAc7Y,GAAG4Y,GAAGvhD,KAAK,KAAKzM,GAAGnC,GAAG,KAAK,CAACmwD,GAAGhuD,GAAG,MAAyB,QAAQ,MAAMrJ,MAAMuJ,EAAE,MAAO,CAAW,OAAVgtD,GAAGltD,EAAEg5C,MAAYh5C,EAAEmtD,eAAelzD,EAAEszD,GAAG9gD,KAAK,KAAKzM,GAAG,IAAI,CAAC,SAASuoD,GAAGvoD,EAAE/F,GAAuD,IAApDA,IAAI4xD,GAAG5xD,IAAIquD,GAAGtoD,EAAEklC,gBAAgBjrC,EAAE+F,EAAEmlC,cAAclrC,EAAM+F,EAAEA,EAAEotD,gBAAgB,EAAEnzD,GAAG,CAAC,IAAI4D,EAAE,GAAGunC,GAAGnrC,GAAG4V,EAAE,GAAGhS,EAAEmC,EAAEnC,IAAI,EAAE5D,IAAI4V,CAAC,CAAC,CAC5U,SAASo9C,GAAGjtD,GAAG,GAAG,KAAO,GAAFurD,IAAM,MAAM50D,MAAMuJ,EAAE,MAAW,GAALstD,KAAQxtD,IAAI8iD,IAAG,KAAK9iD,EAAEilC,aAAaujB,IAAG,CAAC,IAAIvuD,EAAEuuD,GAAM3qD,EAAEgwD,GAAG7tD,EAAE/F,GAAG,KAAK2xD,GAAGtD,MAAgBzqD,EAAEgwD,GAAG7tD,EAAf/F,EAAE8qC,GAAG/kC,EAAE/F,IAAa,MAAgB4D,EAAEgwD,GAAG7tD,EAAf/F,EAAE8qC,GAAG/kC,EAAE,IAAgH,GAAnG,IAAIA,EAAEk2B,KAAK,IAAIr4B,IAAI0tD,IAAG,GAAGvrD,EAAE8iC,UAAU9iC,EAAE8iC,SAAQ,EAAGwS,GAAGt1C,EAAE+iC,gBAAwB,KAAR9oC,EAAEsrC,GAAGvlC,MAAWnC,EAAEgwD,GAAG7tD,EAAE/F,KAAQ,IAAI4D,EAAE,MAAMA,EAAE8tD,GAAG+B,GAAG1tD,EAAE,GAAGuoD,GAAGvoD,EAAE/F,GAAGizD,GAAGltD,EAAEg5C,MAAKn7C,EAAuE,OAArEmC,EAAE8tD,aAAa9tD,EAAE+gB,QAAQuf,UAAUtgC,EAAE+tD,cAAc9zD,EAAE+zD,GAAGhuD,GAAGktD,GAAGltD,EAAEg5C,MAAY,IAAI,CACvR,SAASkV,GAAGluD,EAAE/F,GAAG,IAAI4D,EAAE0tD,GAAEA,IAAG,EAAE,IAAI,OAAOvrD,EAAE/F,EAAE,CAAC,QAAY,KAAJsxD,GAAE1tD,KAAUkuD,KAAK1S,KAAK,CAAC,CAAC,SAAS8U,GAAGnuD,EAAE/F,GAAG,IAAI4D,EAAE0tD,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAOvrD,EAAE/F,EAAE,CAAC,QAAY,KAAJsxD,GAAE1tD,KAAUkuD,KAAK1S,KAAK,CAAC,CAAC,SAAS0M,GAAG/lD,EAAE/F,GAAGk8C,GAAEuV,GAAGD,IAAIA,IAAIxxD,EAAE2xD,IAAI3xD,CAAC,CAAC,SAASyuD,KAAK+C,GAAGC,GAAG3qC,QAAQm1B,GAAEwV,GAAG,CAC/V,SAASgC,GAAG1tD,EAAE/F,GAAG+F,EAAE8tD,aAAa,KAAK9tD,EAAE+tD,cAAc,EAAE,IAAIlwD,EAAEmC,EAAEiuD,cAAiD,IAAlC,IAAIpwD,IAAImC,EAAEiuD,eAAe,EAAE5Y,GAAGx3C,IAAO,OAAO2tD,GAAE,IAAI3tD,EAAE2tD,GAAEjrB,OAAO,OAAO1iC,GAAG,CAAC,IAAIgS,EAAEhS,EAAE,OAAOgS,EAAEqmB,KAAK,KAAK,EAA6B,QAA3BrmB,EAAEA,EAAExV,KAAKw8C,yBAA4B,IAAShnC,GAAGinC,KAAK,MAAM,KAAK,EAAE2I,KAAKvJ,GAAEI,IAAGJ,GAAEG,IAAGuK,KAAK,MAAM,KAAK,EAAEjB,GAAG9vC,GAAG,MAAM,KAAK,EAAE4vC,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGvJ,GAAE0J,IAAG,MAAM,KAAK,GAAG5F,GAAGnqC,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG64C,KAAK7qD,EAAEA,EAAE0iC,MAAM,CAACuiB,GAAE9iD,EAAEwrD,GAAEjN,GAAGv+C,EAAE+gB,QAAQ,MAAMynC,GAAEiD,GAAGG,GAAG3xD,EAAEouD,GAAE,EAAEsD,GAAG,KAAKE,GAAGvD,GAAGvM,GAAG,CAAC,CACxc,SAAS6R,GAAG5tD,EAAE/F,GAAG,OAAE,CAAC,IAAI4D,EAAE2tD,GAAE,IAAuB,GAAnBzR,KAAK+G,GAAG//B,QAAQ6gC,GAAMR,GAAG,CAAC,IAAI,IAAIvxC,EAAE1G,GAAEs3B,cAAc,OAAO5wB,GAAG,CAAC,IAAIzQ,EAAEyQ,EAAEygB,MAAM,OAAOlxB,IAAIA,EAAE+7C,QAAQ,MAAMtrC,EAAEA,EAAE4J,IAAI,CAAC2nC,IAAG,CAAE,CAAuC,GAAtCH,GAAG,EAAEE,GAAED,GAAE/3C,GAAE,KAAKk4C,IAAG,EAAGiK,GAAGvqC,QAAQ,KAAQ,OAAOljB,GAAG,OAAOA,EAAE0iC,OAAO,CAAC8nB,GAAE,EAAEsD,GAAG1xD,EAAEuxD,GAAE,KAAK,KAAK,CAACxrD,EAAE,CAAC,IAAI2yB,EAAE3yB,EAAE4yB,EAAE/0B,EAAE0iC,OAAOxK,EAAEl4B,EAAEi4B,EAAE77B,EAAoD,GAAlDA,EAAEuuD,GAAEzyB,EAAEprB,OAAO,KAAKorB,EAAEuoB,YAAYvoB,EAAEqoB,WAAW,KAAQ,OAAOtoB,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE5mB,KAAK,CAAC,IAAIyL,EAAEmb,EAAE,GAAG,KAAY,EAAPC,EAAE0oB,MAAQ,CAAC,IAAI7iD,EAAEm6B,EAAEuK,UAAU1kC,GAAGm6B,EAAE+kB,YAAYl/C,EAAEk/C,YAAY/kB,EAAE0K,cAAc7kC,EAAE6kC,cAAc1K,EAAEwkB,MAAM3+C,EAAE2+C,QACpfxkB,EAAE+kB,YAAY,KAAK/kB,EAAE0K,cAAc,KAAK,CAAC,IAAIob,EAAE,KAAe,EAAV+D,GAAE7+B,SAAWrQ,EAAEkiB,EAAE,EAAE,CAAC,IAAIkpB,EAAE,GAAGA,EAAE,KAAKprC,EAAEwlB,IAAI,CAAC,IAAIj2B,EAAEyQ,EAAE+vB,cAAc,GAAG,OAAOxgC,EAAE67C,EAAE,OAAO77C,EAAEygC,eAAqB,CAAC,IAAI10B,EAAE0E,EAAEovC,cAAchE,OAAE,IAAS9vC,EAAE+6C,YAAY,IAAK/6C,EAAEg7C,6BAA8BnL,EAAO,CAAC,CAAC,GAAGC,EAAE,CAAC,IAAI/H,EAAErjC,EAAEoqC,YAAY,GAAG,OAAO/G,EAAE,CAAC,IAAIlsB,EAAE,IAAIiK,IAAIjK,EAAEqK,IAAIvX,GAAGjK,EAAEoqC,YAAYjzB,CAAC,MAAMksB,EAAE7hB,IAAIvX,GAAG,GAAG,KAAY,EAAPjK,EAAE+tC,MAAQ,CAA2C,GAA1C/tC,EAAE/F,OAAO,GAAGorB,EAAEprB,OAAO,MAAMorB,EAAEprB,QAAQ,KAAQ,IAAIorB,EAAEG,IAAI,GAAG,OAAOH,EAAEuK,UAAUvK,EAAEG,IAAI,OAAO,CAAC,IAAI1O,EAAE8zB,IAAI,EAAE,GAAG9zB,EAAE0O,IAAI,EAAEwlB,GAAG3lB,EAAEvO,EAAE,CAACuO,EAAEwkB,OAAO,EAAE,MAAMv6C,CAAC,CAAC81B,OAC5f,EAAOC,EAAE97B,EAAE,IAAI+5C,EAAErhB,EAAEy7B,UAA+G,GAArG,OAAOpa,GAAGA,EAAErhB,EAAEy7B,UAAU,IAAItF,GAAGhzB,EAAE,IAAIhE,IAAIkiB,EAAE1zC,IAAIqa,EAAEmb,SAAgB,KAAXA,EAAEke,EAAEt0C,IAAIib,MAAgBmb,EAAE,IAAIhE,IAAIkiB,EAAE1zC,IAAIqa,EAAEmb,KAASA,EAAEwd,IAAIvd,GAAG,CAACD,EAAE5D,IAAI6D,GAAG,IAAIlhB,EAAEw5C,GAAG5hD,KAAK,KAAKkmB,EAAEhY,EAAEob,GAAGpb,EAAEzL,KAAK2F,EAAEA,EAAE,CAACnE,EAAE/F,OAAO,KAAK+F,EAAE6pC,MAAMtgD,EAAE,MAAM+F,CAAC,CAAC0Q,EAAEA,EAAE6vB,MAAM,OAAO,OAAO7vB,GAAGolB,EAAEn/B,OAAO0/B,EAAGN,EAAE17B,OAAO,qBAAqB,wLAAwL,CAAC,IAAIguD,KAAIA,GAAE,GAAGvyB,EAAE8yB,GAAG9yB,EAAEC,GAAGrlB,EACpfkiB,EAAE,EAAE,CAAC,OAAOliB,EAAEwlB,KAAK,KAAK,EAAEvD,EAAEmD,EAAEplB,EAAE/F,OAAO,KAAK1Q,IAAIA,EAAEyW,EAAE6pC,OAAOtgD,EAAkB0hD,GAAGjrC,EAAbs4C,GAAGt4C,EAAEiiB,EAAE14B,IAAW,MAAM+F,EAAE,KAAK,EAAE2yB,EAAEmD,EAAE,IAAIye,EAAE7jC,EAAErW,KAAKm6C,EAAE9jC,EAAEquB,UAAU,GAAG,KAAa,GAARruB,EAAE/F,SAAY,oBAAoB4pC,EAAE+R,0BAA0B,OAAO9R,GAAG,oBAAoBA,EAAE6U,oBAAoB,OAAOC,KAAKA,GAAGhW,IAAIkB,KAAK,CAAC9jC,EAAE/F,OAAO,KAAK1Q,IAAIA,EAAEyW,EAAE6pC,OAAOtgD,EAAkB0hD,GAAGjrC,EAAb04C,GAAG14C,EAAEiiB,EAAE14B,IAAW,MAAM+F,CAAC,EAAE0Q,EAAEA,EAAE6vB,MAAM,OAAO,OAAO7vB,EAAE,CAAC49C,GAAGzwD,EAAE,CAAC,MAAM0wD,GAAIt0D,EAAEs0D,EAAG/C,KAAI3tD,GAAG,OAAOA,IAAI2tD,GAAE3tD,EAAEA,EAAE0iC,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAC7b,SAASktB,KAAK,IAAIztD,EAAEqrD,GAAGtqC,QAAsB,OAAdsqC,GAAGtqC,QAAQ6gC,GAAU,OAAO5hD,EAAE4hD,GAAG5hD,CAAC,CAAC,SAAS6tD,GAAG7tD,EAAE/F,GAAG,IAAI4D,EAAE0tD,GAAEA,IAAG,GAAG,IAAI17C,EAAE49C,KAA2B,IAAtB3K,KAAI9iD,GAAGwoD,KAAIvuD,GAAGyzD,GAAG1tD,EAAE/F,SAAUu0D,KAAK,KAAK,CAAC,MAAMpvD,GAAGwuD,GAAG5tD,EAAEZ,EAAE,CAAgC,GAAtB26C,KAAKwR,GAAE1tD,EAAEwtD,GAAGtqC,QAAQlR,EAAK,OAAO27C,GAAE,MAAM70D,MAAMuJ,EAAE,MAAiB,OAAX4iD,GAAE,KAAK0F,GAAE,EAASH,EAAC,CAAC,SAASmG,KAAK,KAAK,OAAOhD,IAAGiD,GAAGjD,GAAE,CAAC,SAASmC,KAAK,KAAK,OAAOnC,KAAI7T,MAAM8W,GAAGjD,GAAE,CAAC,SAASiD,GAAGzuD,GAAG,IAAI/F,EAAE+xD,GAAGhsD,EAAEsgC,UAAUtgC,EAAEyrD,IAAIzrD,EAAE8/C,cAAc9/C,EAAEsgD,aAAa,OAAOrmD,EAAEq0D,GAAGtuD,GAAGwrD,GAAEvxD,EAAEqxD,GAAGvqC,QAAQ,IAAI,CAChb,SAASutC,GAAGtuD,GAAG,IAAI/F,EAAE+F,EAAE,EAAE,CAAC,IAAInC,EAAE5D,EAAEqmC,UAAqB,GAAXtgC,EAAE/F,EAAEsmC,OAAU,KAAa,KAARtmC,EAAE0Q,OAAY,CAAc,GAAG,QAAhB9M,EAAEiqD,GAAGjqD,EAAE5D,EAAEwxD,KAAqB,YAAJD,GAAE3tD,GAAa,GAAG,MAAPA,EAAE5D,GAAYi8B,KAAK,KAAKr4B,EAAEq4B,KAAK,OAAOr4B,EAAE4iC,eAAe,KAAQ,WAAHgrB,KAAgB,KAAY,EAAP5tD,EAAE4gD,MAAQ,CAAC,IAAI,IAAI5uC,EAAE,EAAEzQ,EAAEvB,EAAEgjC,MAAM,OAAOzhC,GAAGyQ,GAAGzQ,EAAEm7C,MAAMn7C,EAAE+6C,WAAW/6C,EAAEA,EAAE0hC,QAAQjjC,EAAEs8C,WAAWtqC,CAAC,CAAC,OAAO7P,GAAG,KAAa,KAARA,EAAE2K,SAAc,OAAO3K,EAAEs+C,cAAct+C,EAAEs+C,YAAYrkD,EAAEqkD,aAAa,OAAOrkD,EAAEmkD,aAAa,OAAOp+C,EAAEo+C,aAAap+C,EAAEo+C,WAAWC,WAAWpkD,EAAEqkD,aAAat+C,EAAEo+C,WAAWnkD,EAAEmkD,YAAY,EAAEnkD,EAAE0Q,QAAQ,OAC/e3K,EAAEo+C,WAAWp+C,EAAEo+C,WAAWC,WAAWpkD,EAAE+F,EAAEs+C,YAAYrkD,EAAE+F,EAAEo+C,WAAWnkD,GAAG,KAAK,CAAS,GAAG,QAAX4D,EAAE8qD,GAAG1uD,IAAkC,OAAlB4D,EAAE8M,OAAO,UAAK6gD,GAAE3tD,GAAS,OAAOmC,IAAIA,EAAEs+C,YAAYt+C,EAAEo+C,WAAW,KAAKp+C,EAAE2K,OAAO,KAAK,CAAa,GAAG,QAAf1Q,EAAEA,EAAE6mC,SAAyB,YAAJ0qB,GAAEvxD,GAASuxD,GAAEvxD,EAAE+F,CAAC,OAAO,OAAO/F,GAAG,IAAIouD,KAAIA,GAAE,EAAE,CAAC,SAAS2F,GAAGhuD,GAAG,IAAI/F,EAAEg/C,KAA8B,OAAzBE,GAAG,GAAGuV,GAAGjiD,KAAK,KAAKzM,EAAE/F,IAAW,IAAI,CAC1T,SAASy0D,GAAG1uD,EAAE/F,GAAG,GAAGuzD,WAAW,OAAOrB,IAAI,GAAG,KAAO,GAAFZ,IAAM,MAAM50D,MAAMuJ,EAAE,MAAM,IAAIrC,EAAEmC,EAAE8tD,aAAa,GAAG,OAAOjwD,EAAE,OAAO,KAA2C,GAAtCmC,EAAE8tD,aAAa,KAAK9tD,EAAE+tD,cAAc,EAAKlwD,IAAImC,EAAE+gB,QAAQ,MAAMpqB,MAAMuJ,EAAE,MAAMF,EAAEmtD,aAAa,KAAK,IAAIt9C,EAAEhS,EAAE08C,MAAM18C,EAAEs8C,WAAW/6C,EAAEyQ,EAAE8iB,EAAE3yB,EAAEglC,cAAc5lC,EAAEY,EAAEglC,aAAa5lC,EAAEY,EAAEklC,eAAe,EAAEllC,EAAEmlC,YAAY,EAAEnlC,EAAEilC,cAAc7lC,EAAEY,EAAE4iD,kBAAkBxjD,EAAEY,EAAEqlC,gBAAgBjmC,EAAEA,EAAEY,EAAEslC,cAAc,IAAI,IAAI1S,EAAE5yB,EAAE4lC,WAAW7P,EAAE/1B,EAAEotD,gBAAgB,EAAEz6B,GAAG,CAAC,IAAImD,EAAE,GAAGsP,GAAGzS,GAAGhY,EAAE,GAAGmb,EAAE12B,EAAE02B,GAAG,EAAElD,EAAEkD,IAAI,EAAEC,EAAED,IAAI,EAAEnD,IAAIhY,CAAC,CACpV,GADqV,OACjf4xC,IAAI,KAAO,GAAF18C,IAAO08C,GAAGjZ,IAAItzC,IAAIusD,GAAGjqB,OAAOtiC,GAAGA,IAAI8iD,KAAI0I,GAAE1I,GAAE,KAAK0F,GAAE,GAAG,EAAE3qD,EAAE8M,MAAM,OAAO9M,EAAEugD,YAAYvgD,EAAEugD,WAAWC,WAAWxgD,EAAEgS,EAAEhS,EAAEygD,aAAazuC,EAAEhS,EAAEgS,EAAEhS,EAAEygD,YAAe,OAAOzuC,EAAE,CAAwC,GAAvCzQ,EAAEmsD,GAAEA,IAAG,GAAGD,GAAGvqC,QAAQ,KAAK+zB,GAAG3O,GAAa2L,GAAVlf,EAAE8e,MAAc,CAAC,GAAG,mBAAmB9e,EAAEmD,EAAE,CAACl/B,MAAM+7B,EAAE0f,eAAex7C,IAAI87B,EAAE2f,mBAAmBvyC,EAAE,GAAG+1B,GAAGA,EAAEnD,EAAEsF,gBAAgBnC,EAAE0c,aAAa/gC,QAAQiJ,EAAEob,EAAE2c,cAAc3c,EAAE2c,iBAAiB,IAAI/3B,EAAEg0C,WAAW,CAAC54B,EAAEpb,EAAE63B,WAAW7f,EAAEhY,EAAEg4B,aAAa7c,EAAEnb,EAAEi4B,UAAUj4B,EAAEA,EAAEk4B,YAAY,IAAI9c,EAAEkE,SAASnE,EAAEmE,QAAQ,CAAC,MAAMs0B,GAAIx4B,EAAE,KACnf,MAAM/1B,CAAC,CAAC,IAAIpE,EAAE,EAAEigD,GAAG,EAAEnrC,GAAG,EAAEorC,EAAE,EAAE77C,EAAE,EAAE+L,EAAE4mB,EAAEmhB,EAAE,KAAK95C,EAAE,OAAO,CAAC,IAAI,IAAI4tB,EAAK7b,IAAI+pB,GAAG,IAAIpD,GAAG,IAAI3mB,EAAEiuB,WAAW4hB,EAAEjgD,EAAE+2B,GAAG3mB,IAAI8pB,GAAG,IAAInb,GAAG,IAAI3O,EAAEiuB,WAAWvpB,EAAE9U,EAAE+e,GAAG,IAAI3O,EAAEiuB,WAAWr+B,GAAGoQ,EAAEkuB,UAAUnkC,QAAW,QAAQ8xB,EAAE7b,EAAE0tB,aAAkBqa,EAAE/nC,EAAEA,EAAE6b,EAAE,OAAO,CAAC,GAAG7b,IAAI4mB,EAAE,MAAM34B,EAA8C,GAA5C85C,IAAIhe,KAAK+lB,IAAInpB,IAAIkpB,EAAEjgD,GAAGm4C,IAAIje,KAAK71B,IAAI0a,IAAIjK,EAAE9U,GAAM,QAAQisB,EAAE7b,EAAEslC,aAAa,MAAUyC,GAAJ/nC,EAAE+nC,GAAMtV,UAAU,CAACzyB,EAAE6b,CAAC,CAACkO,GAAG,IAAI8lB,IAAI,IAAInrC,EAAE,KAAK,CAAC7Z,MAAMglD,EAAE/kD,IAAI4Z,EAAE,MAAMqlB,EAAE,KAAKA,EAAEA,GAAG,CAACl/B,MAAM,EAAEC,IAAI,EAAE,MAAMi/B,EAAE,KAAKgf,GAAG,CAAC6Z,YAAYh8B,EAAEi8B,eAAe94B,GAAGoQ,IAAG,EAAG0mB,GAAG,KAAKC,IAAG,EAAGb,GAAEp8C,EAAE,OAAOi/C,IAAI,CAAC,MAAMP,GAAI,GAAG,OACvgBtC,GAAE,MAAMt1D,MAAMuJ,EAAE,MAAMypD,GAAGsC,GAAEsC,GAAItC,GAAEA,GAAE5N,UAAU,QAAO,OAAO4N,IAAGY,GAAG,KAAKZ,GAAEp8C,EAAE,OAAO,IAAI+iB,EAAE5yB,EAAE,OAAOisD,IAAG,CAAC,IAAIzkC,EAAEykC,GAAEthD,MAA+B,GAAvB,GAAF6c,GAAMuS,GAAGkyB,GAAEltB,UAAU,IAAS,IAAFvX,EAAM,CAAC,IAAIwsB,EAAEiY,GAAE3rB,UAAU,GAAG,OAAO0T,EAAE,CAAC,IAAIn/B,EAAEm/B,EAAE+J,IAAI,OAAOlpC,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAEkM,QAAQ,KAAK,CAAC,CAAC,OAAS,KAAFyG,GAAQ,KAAK,EAAEkjC,GAAGuB,IAAGA,GAAEthD,QAAQ,EAAE,MAAM,KAAK,EAAE+/C,GAAGuB,IAAGA,GAAEthD,QAAQ,EAAEogD,GAAGkB,GAAE3rB,UAAU2rB,IAAG,MAAM,KAAK,KAAKA,GAAEthD,QAAQ,KAAK,MAAM,KAAK,KAAKshD,GAAEthD,QAAQ,KAAKogD,GAAGkB,GAAE3rB,UAAU2rB,IAAG,MAAM,KAAK,EAAElB,GAAGkB,GAAE3rB,UAAU2rB,IAAG,MAAM,KAAK,EAAM1B,GAAG33B,EAAPmD,EAAEk2B,IAAU,IAAI3X,EAAEve,EAAEuK,UAAUkqB,GAAGz0B,GAAG,OACnfue,GAAGkW,GAAGlW,GAAG2X,GAAEA,GAAE5N,UAAU,CAAC,CAAC,MAAMkQ,GAAI,GAAG,OAAOtC,GAAE,MAAMt1D,MAAMuJ,EAAE,MAAMypD,GAAGsC,GAAEsC,GAAItC,GAAEA,GAAE5N,UAAU,QAAO,OAAO4N,IAAkD,GAA/Cp3C,EAAEkgC,GAAGf,EAAEtC,KAAKlqB,EAAE3S,EAAE+5C,YAAYh8B,EAAE/d,EAAEg6C,eAAkB7a,IAAIxsB,GAAGA,GAAGA,EAAE0Q,eAAeqZ,GAAG/pB,EAAE0Q,cAAcqnB,gBAAgB/3B,GAAG,CAAC,OAAOoL,GAAGkf,GAAGtqB,KAAKwsB,EAAEphB,EAAE/7B,WAAc,KAARge,EAAE+d,EAAE97B,OAAiB+d,EAAEm/B,GAAG,mBAAmBxsB,GAAGA,EAAE8qB,eAAe0B,EAAExsB,EAAE+qB,aAAat0C,KAAKC,IAAI2W,EAAE2S,EAAE/vB,MAAM1B,UAAU8e,GAAGm/B,EAAExsB,EAAE0Q,eAAe9F,WAAW4hB,EAAEvB,aAAa/gC,QAASghC,eAAe79B,EAAEA,EAAE69B,eAAe3c,EAAEvO,EAAEwR,YAAYjjC,OAAOu+C,EAAEr2C,KAAKC,IAAI00B,EAAE/7B,MAAMk/B,GAAGnD,OAAE,IACpfA,EAAE97B,IAAIw9C,EAAEr2C,KAAKC,IAAI00B,EAAE97B,IAAIi/B,IAAIlhB,EAAEk6C,QAAQza,EAAE1hB,IAAImD,EAAEnD,EAAEA,EAAE0hB,EAAEA,EAAEve,GAAGA,EAAEqb,GAAG5pB,EAAE8sB,GAAG3hB,EAAEye,GAAG5pB,EAAEoL,GAAGmD,GAAGpD,IAAI,IAAI9d,EAAE85C,YAAY95C,EAAE29B,aAAazc,EAAEsb,MAAMx8B,EAAE89B,eAAe5c,EAAEl5B,QAAQgY,EAAE+9B,YAAYjgB,EAAE0e,MAAMx8B,EAAEg+B,cAAclgB,EAAE91B,WAAUm3C,EAAEA,EAAEgb,eAAgBC,SAASl5B,EAAEsb,KAAKtb,EAAEl5B,QAAQgY,EAAEq6C,kBAAkB5a,EAAE1hB,GAAG/d,EAAEs6C,SAASnb,GAAGn/B,EAAEk6C,OAAOp8B,EAAE0e,KAAK1e,EAAE91B,UAAUm3C,EAAEob,OAAOz8B,EAAE0e,KAAK1e,EAAE91B,QAAQgY,EAAEs6C,SAASnb,OAAQA,EAAE,GAAG,IAAIn/B,EAAE2S,EAAE3S,EAAEA,EAAE4pB,YAAY,IAAI5pB,EAAEolB,UAAU+Z,EAAE59C,KAAK,CAAC6yD,QAAQp0C,EAAEw6C,KAAKx6C,EAAEy6C,WAAWC,IAAI16C,EAAE26C,YAAmD,IAAvC,oBAAoBhoC,EAAEyiC,OAAOziC,EAAEyiC,QAAYziC,EACrf,EAAEA,EAAEwsB,EAAEj+C,OAAOyxB,KAAI3S,EAAEm/B,EAAExsB,IAAKyhC,QAAQqG,WAAWz6C,EAAEw6C,KAAKx6C,EAAEo0C,QAAQuG,UAAU36C,EAAE06C,GAAG,CAACppB,KAAK2O,GAAGC,GAAGD,GAAG,KAAK90C,EAAE+gB,QAAQljB,EAAEouD,GAAEp8C,EAAE,OAAO,IAAI2X,EAAExnB,EAAE,OAAOisD,IAAG,CAAC,IAAI1X,EAAE0X,GAAEthD,MAAgC,GAAxB,GAAF4pC,GAAMuV,GAAGtiC,EAAEykC,GAAE3rB,UAAU2rB,IAAQ,IAAF1X,EAAM,CAACP,OAAE,EAAO,IAAIQ,EAAEyX,GAAElO,IAAI,GAAG,OAAOvJ,EAAE,CAAC,IAAIC,EAAEwX,GAAEltB,UAAiBktB,GAAE/1B,IAA8B8d,EAAES,EAAE,oBAAoBD,EAAEA,EAAER,GAAGQ,EAAEzzB,QAAQizB,CAAC,CAAC,CAACiY,GAAEA,GAAE5N,UAAU,CAAC,CAAC,MAAMkQ,GAAI,GAAG,OAAOtC,GAAE,MAAMt1D,MAAMuJ,EAAE,MAAMypD,GAAGsC,GAAEsC,GAAItC,GAAEA,GAAE5N,UAAU,QAAO,OAAO4N,IAAGA,GAAE,KAAKtT,KAAK4S,GAAEnsD,CAAC,MAAMY,EAAE+gB,QAAQljB,EAAE,GAAGquD,GAAGA,IAAG,EAAGC,GAAGnsD,EAAEosD,GAAGnyD,OAAO,IAAIgyD,GAAEp8C,EAAE,OAAOo8C,IAAGhyD,EACpfgyD,GAAE5N,WAAW4N,GAAE5N,WAAW,KAAa,EAAR4N,GAAEthD,SAAU4pC,EAAE0X,IAAInrB,QAAQ,KAAKyT,EAAExV,UAAU,MAAMktB,GAAEhyD,EAAqF,GAAlE,KAAjB4V,EAAE7P,EAAEglC,gBAAqBskB,GAAG,MAAM,IAAIz5C,EAAE7P,IAAIysD,GAAGD,MAAMA,GAAG,EAAEC,GAAGzsD,GAAGwsD,GAAG,EAAE3uD,EAAEA,EAAEkhC,UAAauY,IAAI,oBAAoBA,GAAGmY,kBAAkB,IAAInY,GAAGmY,kBAAkBpY,GAAGx5C,OAAE,EAAO,MAAsB,GAAhBA,EAAEkjB,QAAQpW,OAAU,CAAC,MAAM4jD,GAAI,CAAW,GAAVrB,GAAGltD,EAAEg5C,MAAQkQ,GAAG,MAAMA,IAAG,EAAGlpD,EAAEmpD,GAAGA,GAAG,KAAKnpD,EAAE,OAAG,KAAO,EAAFurD,KAAiBlS,KAAL,IAAqB,CACtX,SAASyV,KAAK,KAAK,OAAO7C,IAAG,CAAC,IAAIjsD,EAAEisD,GAAE3rB,UAAUwsB,IAAI,OAAOD,KAAK,KAAa,EAARZ,GAAEthD,OAASq2B,GAAGirB,GAAEY,MAAMC,IAAG,GAAI,KAAKb,GAAE/1B,KAAKi1B,GAAGnrD,EAAEisD,KAAIjrB,GAAGirB,GAAEY,MAAMC,IAAG,IAAK,IAAI7yD,EAAEgyD,GAAEthD,MAAM,KAAO,IAAF1Q,IAAQ2vD,GAAG5pD,EAAEisD,IAAG,KAAO,IAAFhyD,IAAQiyD,KAAKA,IAAG,EAAG9S,GAAG,IAAG,WAAgB,OAALoU,KAAY,IAAI,KAAIvB,GAAEA,GAAE5N,UAAU,CAAC,CAAC,SAASmP,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAIpsD,EAAE,GAAGosD,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUjT,GAAGn5C,EAAE0vD,GAAG,CAAC,OAAM,CAAE,CAAC,SAAS1F,GAAGhqD,EAAE/F,GAAGoyD,GAAGj2D,KAAK6D,EAAE+F,GAAGksD,KAAKA,IAAG,EAAG9S,GAAG,IAAG,WAAgB,OAALoU,KAAY,IAAI,IAAG,CAAC,SAASzD,GAAG/pD,EAAE/F,GAAGqyD,GAAGl2D,KAAK6D,EAAE+F,GAAGksD,KAAKA,IAAG,EAAG9S,GAAG,IAAG,WAAgB,OAALoU,KAAY,IAAI,IAAG,CAChe,SAASkC,KAAK,GAAG,OAAOvD,GAAG,OAAM,EAAG,IAAInsD,EAAEmsD,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAFZ,IAAM,MAAM50D,MAAMuJ,EAAE,MAAM,IAAIjG,EAAEsxD,GAAEA,IAAG,GAAG,IAAI1tD,EAAEyuD,GAAGA,GAAG,GAAG,IAAI,IAAIz8C,EAAE,EAAEA,EAAEhS,EAAE9H,OAAO8Z,GAAG,EAAE,CAAC,IAAIzQ,EAAEvB,EAAEgS,GAAG8iB,EAAE90B,EAAEgS,EAAE,GAAG+iB,EAAExzB,EAAEkZ,QAAyB,GAAjBlZ,EAAEkZ,aAAQ,EAAU,oBAAoBsa,EAAE,IAAIA,GAAG,CAAC,MAAMkD,GAAG,GAAG,OAAOnD,EAAE,MAAMh8B,MAAMuJ,EAAE,MAAMypD,GAAGh3B,EAAEmD,EAAE,CAAC,CAAY,IAAXj4B,EAAEwuD,GAAGA,GAAG,GAAOx8C,EAAE,EAAEA,EAAEhS,EAAE9H,OAAO8Z,GAAG,EAAE,CAACzQ,EAAEvB,EAAEgS,GAAG8iB,EAAE90B,EAAEgS,EAAE,GAAG,IAAI,IAAIkmB,EAAE32B,EAAEuM,OAAOvM,EAAEkZ,QAAQyd,GAAG,CAAC,MAAMD,GAAG,GAAG,OAAOnD,EAAE,MAAMh8B,MAAMuJ,EAAE,MAAMypD,GAAGh3B,EAAEmD,EAAE,CAAC,CAAC,IAAIC,EAAE/1B,EAAE+gB,QAAQu9B,YAAY,OAAOvoB,GAAG/1B,EAAE+1B,EAAEsoB,WAAWtoB,EAAEsoB,WAAW,KAAa,EAARtoB,EAAEprB,QAAUorB,EAAE+K,QACjf,KAAK/K,EAAEgJ,UAAU,MAAMhJ,EAAE/1B,EAAW,OAATurD,GAAEtxD,EAAEo/C,MAAW,CAAE,CAAC,SAASsW,GAAG3vD,EAAE/F,EAAE4D,GAAyB69C,GAAG17C,EAAf/F,EAAE+uD,GAAGhpD,EAAf/F,EAAE2uD,GAAG/qD,EAAE5D,GAAY,IAAWA,EAAEwiD,KAAe,QAAVz8C,EAAEgtD,GAAGhtD,EAAE,MAAc2lC,GAAG3lC,EAAE,EAAE/F,GAAGizD,GAAGltD,EAAE/F,GAAG,CAC5I,SAAS0vD,GAAG3pD,EAAE/F,GAAG,GAAG,IAAI+F,EAAEk2B,IAAIy5B,GAAG3vD,EAAEA,EAAE/F,QAAQ,IAAI,IAAI4D,EAAEmC,EAAEugC,OAAO,OAAO1iC,GAAG,CAAC,GAAG,IAAIA,EAAEq4B,IAAI,CAACy5B,GAAG9xD,EAAEmC,EAAE/F,GAAG,KAAK,CAAM,GAAG,IAAI4D,EAAEq4B,IAAI,CAAC,IAAIrmB,EAAEhS,EAAEkhC,UAAU,GAAG,oBAAoBlhC,EAAExD,KAAKisD,0BAA0B,oBAAoBz2C,EAAEw5C,oBAAoB,OAAOC,KAAKA,GAAGhW,IAAIzjC,IAAI,CAAW,IAAIzQ,EAAEgqD,GAAGvrD,EAAnBmC,EAAE4oD,GAAG3uD,EAAE+F,GAAgB,GAA4B,GAAzB07C,GAAG79C,EAAEuB,GAAGA,EAAEq9C,KAAkB,QAAb5+C,EAAEmvD,GAAGnvD,EAAE,IAAe8nC,GAAG9nC,EAAE,EAAEuB,GAAG8tD,GAAGrvD,EAAEuB,QAAQ,GAAG,oBAAoByQ,EAAEw5C,oBAAoB,OAAOC,KAAKA,GAAGhW,IAAIzjC,IAAI,IAAIA,EAAEw5C,kBAAkBpvD,EAAE+F,EAAE,CAAC,MAAM2yB,GAAG,CAAC,KAAK,CAAC,CAAC90B,EAAEA,EAAE0iC,MAAM,CAAC,CAC3d,SAAS8tB,GAAGruD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE7P,EAAEouD,UAAU,OAAOv+C,GAAGA,EAAEyyB,OAAOroC,GAAGA,EAAEwiD,KAAKz8C,EAAEmlC,aAAanlC,EAAEklC,eAAernC,EAAEilD,KAAI9iD,IAAIwoD,GAAE3qD,KAAKA,IAAI,IAAIwqD,IAAG,IAAIA,KAAM,SAAFG,MAAcA,IAAG,IAAIxP,KAAIgS,GAAG0C,GAAG1tD,EAAE,GAAG6rD,IAAIhuD,GAAGqvD,GAAGltD,EAAE/F,EAAE,CAAC,SAASixD,GAAGlrD,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAE++B,UAAU,OAAOlhC,GAAGA,EAAEykC,OAAOroC,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAE+F,EAAEy+C,OAAexkD,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAKg/C,KAAK,EAAE,GAAG,IAAI0T,KAAKA,GAAGf,IAAuB,KAAnB3xD,EAAEwrC,GAAG,UAAUknB,OAAY1yD,EAAE,WAAW4D,EAAE4+C,KAAe,QAAVz8C,EAAEgtD,GAAGhtD,EAAE/F,MAAc0rC,GAAG3lC,EAAE/F,EAAE4D,GAAGqvD,GAAGltD,EAAEnC,GAAG,CAUpZ,SAAS+xD,GAAG5vD,EAAE/F,EAAE4D,EAAEgS,GAAGzU,KAAK86B,IAAIl2B,EAAE5E,KAAKiT,IAAIxQ,EAAEzC,KAAK0lC,QAAQ1lC,KAAKylC,MAAMzlC,KAAKmlC,OAAOnlC,KAAK2jC,UAAU3jC,KAAKf,KAAKe,KAAKsjD,YAAY,KAAKtjD,KAAK4S,MAAM,EAAE5S,KAAK2iD,IAAI,KAAK3iD,KAAKklD,aAAarmD,EAAEmB,KAAKi/C,aAAaj/C,KAAKqlC,cAAcrlC,KAAK0/C,YAAY1/C,KAAK0kD,cAAc,KAAK1kD,KAAKqjD,KAAK5uC,EAAEzU,KAAKuP,MAAM,EAAEvP,KAAKgjD,WAAWhjD,KAAKkjD,YAAYljD,KAAKijD,WAAW,KAAKjjD,KAAK++C,WAAW/+C,KAAKm/C,MAAM,EAAEn/C,KAAKklC,UAAU,IAAI,CAAC,SAAS8f,GAAGpgD,EAAE/F,EAAE4D,EAAEgS,GAAG,OAAO,IAAI+/C,GAAG5vD,EAAE/F,EAAE4D,EAAEgS,EAAE,CAAC,SAAS61C,GAAG1lD,GAAiB,UAAdA,EAAEA,EAAE7I,aAAuB6I,EAAE6vD,iBAAiB,CAEte,SAAStR,GAAGv+C,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAEsgC,UACuB,OADb,OAAOziC,IAAGA,EAAEuiD,GAAGpgD,EAAEk2B,IAAIj8B,EAAE+F,EAAEqO,IAAIrO,EAAEy+C,OAAQC,YAAY1+C,EAAE0+C,YAAY7gD,EAAExD,KAAK2F,EAAE3F,KAAKwD,EAAEkhC,UAAU/+B,EAAE++B,UAAUlhC,EAAEyiC,UAAUtgC,EAAEA,EAAEsgC,UAAUziC,IAAIA,EAAEyiD,aAAarmD,EAAE4D,EAAExD,KAAK2F,EAAE3F,KAAKwD,EAAE8M,MAAM,EAAE9M,EAAEwgD,WAAW,KAAKxgD,EAAEygD,YAAY,KAAKzgD,EAAEugD,WAAW,MAAMvgD,EAAEs8C,WAAWn6C,EAAEm6C,WAAWt8C,EAAE08C,MAAMv6C,EAAEu6C,MAAM18C,EAAEgjC,MAAM7gC,EAAE6gC,MAAMhjC,EAAEiiD,cAAc9/C,EAAE8/C,cAAcjiD,EAAE4iC,cAAczgC,EAAEygC,cAAc5iC,EAAEi9C,YAAY96C,EAAE86C,YAAY7gD,EAAE+F,EAAEq6C,aAAax8C,EAAEw8C,aAAa,OAAOpgD,EAAE,KAAK,CAACsgD,MAAMtgD,EAAEsgD,MAAMD,aAAargD,EAAEqgD,cAC3ez8C,EAAEijC,QAAQ9gC,EAAE8gC,QAAQjjC,EAAEmQ,MAAMhO,EAAEgO,MAAMnQ,EAAEkgD,IAAI/9C,EAAE+9C,IAAWlgD,CAAC,CACxD,SAAS8gD,GAAG3+C,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,EAAEuzB,GAAG,IAAIC,EAAE,EAAM,GAAJ/iB,EAAE7P,EAAK,oBAAoBA,EAAE0lD,GAAG1lD,KAAK4yB,EAAE,QAAQ,GAAG,kBAAkB5yB,EAAE4yB,EAAE,OAAO5yB,EAAE,OAAOA,GAAG,KAAKq0B,EAAG,OAAOyqB,GAAGjhD,EAAEu6B,SAASh5B,EAAEuzB,EAAE14B,GAAG,KAAKg7B,EAAGrC,EAAE,EAAExzB,GAAG,GAAG,MAAM,KAAKk1B,EAAG1B,EAAE,EAAExzB,GAAG,EAAE,MAAM,KAAKm1B,EAAG,OAAOv0B,EAAEogD,GAAG,GAAGviD,EAAE5D,EAAI,EAAFmF,IAAOs/C,YAAYnqB,EAAGv0B,EAAE3F,KAAKk6B,EAAGv0B,EAAEu6C,MAAM5nB,EAAE3yB,EAAE,KAAK20B,EAAG,OAAO30B,EAAEogD,GAAG,GAAGviD,EAAE5D,EAAEmF,IAAK/E,KAAKs6B,EAAG30B,EAAE0+C,YAAY/pB,EAAG30B,EAAEu6C,MAAM5nB,EAAE3yB,EAAE,KAAK40B,EAAG,OAAO50B,EAAEogD,GAAG,GAAGviD,EAAE5D,EAAEmF,IAAKs/C,YAAY9pB,EAAG50B,EAAEu6C,MAAM5nB,EAAE3yB,EAAE,KAAKk1B,EAAG,OAAOiyB,GAAGtpD,EAAEuB,EAAEuzB,EAAE14B,GAAG,KAAKk7B,EAAG,OAAOn1B,EAAEogD,GAAG,GAAGviD,EAAE5D,EAAEmF,IAAKs/C,YAAYvpB,EAAGn1B,EAAEu6C,MAAM5nB,EAAE3yB,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEs2B,UAAU,KAAK9B,EAAG5B,EAAE,GAAG,MAAM5yB,EAAE,KAAKy0B,EAAG7B,EAAE,EAAE,MAAM5yB,EAAE,KAAK00B,EAAG9B,EAAE,GAAG,MAAM5yB,EAAE,KAAK60B,EAAGjC,EAAE,GAAG,MAAM5yB,EAAE,KAAK80B,EAAGlC,EAAE,GAAG/iB,EAAE,KAAK,MAAM7P,EAAE,KAAK+0B,EAAGnC,EAAE,GAAG,MAAM5yB,EAAE,MAAMrJ,MAAMuJ,EAAE,IAAI,MAAMF,EAAEA,SAASA,EAAE,KAAuD,OAAjD/F,EAAEmmD,GAAGxtB,EAAE/0B,EAAE5D,EAAEmF,IAAKs/C,YAAY1+C,EAAE/F,EAAEI,KAAKwV,EAAE5V,EAAEsgD,MAAM5nB,EAAS14B,CAAC,CAAC,SAAS6kD,GAAG9+C,EAAE/F,EAAE4D,EAAEgS,GAA2B,OAAxB7P,EAAEogD,GAAG,EAAEpgD,EAAE6P,EAAE5V,IAAKsgD,MAAM18C,EAASmC,CAAC,CAAC,SAASmnD,GAAGnnD,EAAE/F,EAAE4D,EAAEgS,GAA6C,OAA1C7P,EAAEogD,GAAG,GAAGpgD,EAAE6P,EAAE5V,IAAKykD,YAAYxpB,EAAGl1B,EAAEu6C,MAAM18C,EAASmC,CAAC,CAAC,SAASw+C,GAAGx+C,EAAE/F,EAAE4D,GAA8B,OAA3BmC,EAAEogD,GAAG,EAAEpgD,EAAE,KAAK/F,IAAKsgD,MAAM18C,EAASmC,CAAC,CACnc,SAAS6+C,GAAG7+C,EAAE/F,EAAE4D,GAA8J,OAA3J5D,EAAEmmD,GAAG,EAAE,OAAOpgD,EAAEo4B,SAASp4B,EAAEo4B,SAAS,GAAGp4B,EAAEqO,IAAIpU,IAAKsgD,MAAM18C,EAAE5D,EAAE8kC,UAAU,CAACgE,cAAc/iC,EAAE+iC,cAAc+sB,gBAAgB,KAAKlR,eAAe5+C,EAAE4+C,gBAAuB3kD,CAAC,CACtL,SAAS81D,GAAG/vD,EAAE/F,EAAE4D,GAAGzC,KAAK86B,IAAIj8B,EAAEmB,KAAK2nC,cAAc/iC,EAAE5E,KAAK0yD,aAAa1yD,KAAKgzD,UAAUhzD,KAAK2lB,QAAQ3lB,KAAK00D,gBAAgB,KAAK10D,KAAK6yD,eAAe,EAAE7yD,KAAKorD,eAAeprD,KAAKoS,QAAQ,KAAKpS,KAAK0nC,QAAQjlC,EAAEzC,KAAK+xD,aAAa,KAAK/xD,KAAKiyD,iBAAiB,EAAEjyD,KAAKwqC,WAAWF,GAAG,GAAGtqC,KAAKgyD,gBAAgB1nB,IAAI,GAAGtqC,KAAKiqC,eAAejqC,KAAK2yD,cAAc3yD,KAAKwnD,iBAAiBxnD,KAAK6pC,aAAa7pC,KAAK+pC,YAAY/pC,KAAK8pC,eAAe9pC,KAAK4pC,aAAa,EAAE5pC,KAAKkqC,cAAcI,GAAG,GAAGtqC,KAAK40D,gCAAgC,IAAI,CAEjf,SAASC,GAAGjwD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAIzQ,EAAEnF,EAAE8mB,QAAQ4R,EAAE8pB,KAAK7pB,EAAE8pB,GAAGt9C,GAAGY,EAAE,GAAGnC,EAAE,CAAqB5D,EAAE,CAAC,GAAGomC,GAA1BxiC,EAAEA,EAAE0+C,mBAA8B1+C,GAAG,IAAIA,EAAEq4B,IAAI,MAAMv/B,MAAMuJ,EAAE,MAAM,IAAI61B,EAAEl4B,EAAE,EAAE,CAAC,OAAOk4B,EAAEG,KAAK,KAAK,EAAEH,EAAEA,EAAEgJ,UAAUvxB,QAAQ,MAAMvT,EAAE,KAAK,EAAE,GAAG28C,GAAG7gB,EAAE17B,MAAM,CAAC07B,EAAEA,EAAEgJ,UAAUoY,0CAA0C,MAAMl9C,CAAC,EAAE87B,EAAEA,EAAEwK,MAAM,OAAO,OAAOxK,GAAG,MAAMp/B,MAAMuJ,EAAE,KAAM,CAAC,GAAG,IAAIrC,EAAEq4B,IAAI,CAAC,IAAIJ,EAAEj4B,EAAExD,KAAK,GAAGu8C,GAAG9gB,GAAG,CAACj4B,EAAEm5C,GAAGn5C,EAAEi4B,EAAEC,GAAG,MAAM/1B,CAAC,CAAC,CAACnC,EAAEk4B,CAAC,MAAMl4B,EAAEu4C,GACrW,OADwW,OAAOn8C,EAAEuT,QAAQvT,EAAEuT,QAAQ3P,EAAE5D,EAAEusD,eAAe3oD,GAAE5D,EAAEqhD,GAAG3oB,EAAEC,IAAK6oB,QAAQ,CAACwN,QAAQjpD,GAAuB,QAApB6P,OAAE,IAASA,EAAE,KAAKA,KAC1e5V,EAAE+jB,SAASnO,GAAG6rC,GAAGt8C,EAAEnF,GAAG0iD,GAAGv9C,EAAEwzB,EAAED,GAAUC,CAAC,CAAC,SAASs9B,GAAGlwD,GAAe,OAAZA,EAAEA,EAAE+gB,SAAc8f,OAAyB7gC,EAAE6gC,MAAM3K,IAAoDl2B,EAAE6gC,MAAM9B,WAAhF,IAA0F,CAAC,SAASoxB,GAAGnwD,EAAE/F,GAAqB,GAAG,QAArB+F,EAAEA,EAAEygC,gBAA2B,OAAOzgC,EAAE0gC,WAAW,CAAC,IAAI7iC,EAAEmC,EAAE6mD,UAAU7mD,EAAE6mD,UAAU,IAAIhpD,GAAGA,EAAE5D,EAAE4D,EAAE5D,CAAC,CAAC,CAAC,SAASm2D,GAAGpwD,EAAE/F,GAAGk2D,GAAGnwD,EAAE/F,IAAI+F,EAAEA,EAAEsgC,YAAY6vB,GAAGnwD,EAAE/F,EAAE,CAC1V,SAASo2D,GAAGrwD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE,MAAMhS,GAAG,MAAMA,EAAEyyD,kBAAkBzyD,EAAEyyD,iBAAiBC,gBAAgB,KAAiK,GAA5J1yD,EAAE,IAAIkyD,GAAG/vD,EAAE/F,EAAE,MAAM4D,IAAG,IAAKA,EAAEilC,SAAS7oC,EAAEmmD,GAAG,EAAE,KAAK,KAAK,IAAInmD,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAG4D,EAAEkjB,QAAQ9mB,EAAEA,EAAE8kC,UAAUlhC,EAAEg9C,GAAG5gD,GAAG+F,EAAEk0C,IAAIr2C,EAAEkjB,QAAQ2yB,GAAG,IAAI1zC,EAAEi6B,SAASj6B,EAAEy+B,WAAWz+B,GAAM6P,EAAE,IAAI7P,EAAE,EAAEA,EAAE6P,EAAE9Z,OAAOiK,IAAI,CAAQ,IAAIZ,GAAXnF,EAAE4V,EAAE7P,IAAW0iD,YAAYtjD,EAAEA,EAAEnF,EAAE0oD,SAAS,MAAM9kD,EAAEmyD,gCAAgCnyD,EAAEmyD,gCAAgC,CAAC/1D,EAAEmF,GAAGvB,EAAEmyD,gCAAgC55D,KAAK6D,EAAEmF,EAAE,CAAChE,KAAKo1D,cAAc3yD,CAAC,CAChS,SAAS4yD,GAAGzwD,GAAG,SAASA,GAAG,IAAIA,EAAEi6B,UAAU,IAAIj6B,EAAEi6B,UAAU,KAAKj6B,EAAEi6B,WAAW,IAAIj6B,EAAEi6B,UAAU,iCAAiCj6B,EAAEk6B,WAAW,CAElU,SAASw2B,GAAG1wD,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAIuzB,EAAE90B,EAAEitD,oBAAoB,GAAGn4B,EAAE,CAAC,IAAIC,EAAED,EAAE69B,cAAc,GAAG,oBAAoBpxD,EAAE,CAAC,IAAI22B,EAAE32B,EAAEA,EAAE,WAAW,IAAIY,EAAEkwD,GAAGt9B,GAAGmD,EAAEl+B,KAAKmI,EAAE,CAAC,CAACiwD,GAAGh2D,EAAE24B,EAAE5yB,EAAEZ,EAAE,KAAK,CAAmD,GAAlDuzB,EAAE90B,EAAEitD,oBAD1K,SAAY9qD,EAAE/F,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAE+F,EAAE,IAAIA,EAAEi6B,SAASj6B,EAAEu/C,gBAAgBv/C,EAAE05B,WAAW,OAAa,IAAIz/B,EAAEggC,WAAWhgC,EAAE02D,aAAa,qBAAwB12D,EAAE,IAAI,IAAI4D,EAAEA,EAAEmC,EAAEg6B,WAAWh6B,EAAE25B,YAAY97B,GAAG,OAAO,IAAIwyD,GAAGrwD,EAAE,EAAE/F,EAAE,CAAC6oC,SAAQ,QAAI,EAAO,CAClC8tB,CAAG/yD,EAAEgS,GAAG+iB,EAAED,EAAE69B,cAAiB,oBAAoBpxD,EAAE,CAAC,IAAI02B,EAAE12B,EAAEA,EAAE,WAAW,IAAIY,EAAEkwD,GAAGt9B,GAAGkD,EAAEj+B,KAAKmI,EAAE,CAAC,CAACmuD,IAAG,WAAW8B,GAAGh2D,EAAE24B,EAAE5yB,EAAEZ,EAAE,GAAE,CAAC,OAAO8wD,GAAGt9B,EAAE,CAGpG,SAASi+B,GAAG7wD,EAAE/F,GAAG,IAAI4D,EAAE,EAAE/C,UAAU/E,aAAQ,IAAS+E,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI21D,GAAGx2D,GAAG,MAAMtD,MAAMuJ,EAAE,MAAM,OATnV,SAAYF,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE,EAAE/U,UAAU/E,aAAQ,IAAS+E,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACw7B,SAASlC,EAAG/lB,IAAI,MAAMwB,EAAE,KAAK,GAAGA,EAAEuoB,SAASp4B,EAAE+iC,cAAc9oC,EAAE2kD,eAAe/gD,EAAE,CASgLizD,CAAG9wD,EAAE/F,EAAE,KAAK4D,EAAE,CA1BxWmuD,GAAG,SAAShsD,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAE5V,EAAEsgD,MAAM,GAAG,OAAOv6C,EAAE,GAAGA,EAAE8/C,gBAAgB7lD,EAAEqmD,cAAchK,GAAEv1B,QAAQy5B,IAAG,MAAQ,IAAG,KAAK38C,EAAEgS,GAAoC,CAAO,OAAN2qC,IAAG,EAAUvgD,EAAEi8B,KAAK,KAAK,EAAEqwB,GAAGtsD,GAAGymD,KAAK,MAAM,KAAK,EAAEhB,GAAGzlD,GAAG,MAAM,KAAK,EAAE28C,GAAG38C,EAAEI,OAAO68C,GAAGj9C,GAAG,MAAM,KAAK,EAAEqlD,GAAGrlD,EAAEA,EAAE8kC,UAAUgE,eAAe,MAAM,KAAK,GAAGlzB,EAAE5V,EAAE6lD,cAAcroD,MAAM,IAAI2H,EAAEnF,EAAEI,KAAKk8B,SAAS4f,GAAEwD,GAAGv6C,EAAE66C,eAAe76C,EAAE66C,cAAcpqC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO5V,EAAEwmC,cAAe,OAAG,KAAK5iC,EAAE5D,EAAE4mC,MAAMsZ,YAAmB2M,GAAG9mD,EAAE/F,EAAE4D,IAAGs4C,GAAEyJ,GAAY,EAAVA,GAAE7+B,SAA8B,QAAnB9mB,EAAE6D,GAAGkC,EAAE/F,EAAE4D,IAC/e5D,EAAE6mC,QAAQ,MAAKqV,GAAEyJ,GAAY,EAAVA,GAAE7+B,SAAW,MAAM,KAAK,GAA0B,GAAvBlR,EAAE,KAAKhS,EAAE5D,EAAEkgD,YAAe,KAAa,GAARn6C,EAAE2K,OAAU,CAAC,GAAGkF,EAAE,OAAO+3C,GAAG5nD,EAAE/F,EAAE4D,GAAG5D,EAAE0Q,OAAO,EAAE,CAA6F,GAA1E,QAAlBvL,EAAEnF,EAAEwmC,iBAAyBrhC,EAAEqoD,UAAU,KAAKroD,EAAEilB,KAAK,KAAKjlB,EAAEg/C,WAAW,MAAMjI,GAAEyJ,GAAEA,GAAE7+B,SAAYlR,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO5V,EAAEsgD,MAAM,EAAEsL,GAAG7lD,EAAE/F,EAAE4D,GAAG,OAAOC,GAAGkC,EAAE/F,EAAE4D,EAAE,CAD7L28C,GAAG,KAAa,MAARx6C,EAAE2K,MACmL,MAAM6vC,IAAG,EAAa,OAAVvgD,EAAEsgD,MAAM,EAAStgD,EAAEi8B,KAAK,KAAK,EAA+I,GAA7IrmB,EAAE5V,EAAEI,KAAK,OAAO2F,IAAIA,EAAEsgC,UAAU,KAAKrmC,EAAEqmC,UAAU,KAAKrmC,EAAE0Q,OAAO,GAAG3K,EAAE/F,EAAEqmD,aAAalhD,EAAEo3C,GAAGv8C,EAAEo8C,GAAEt1B,SAASq5B,GAAGngD,EAAE4D,GAAGuB,EAAEoiD,GAAG,KAAKvnD,EAAE4V,EAAE7P,EAAEZ,EAAEvB,GAAG5D,EAAE0Q,OAAO,EAAK,kBACrevL,GAAG,OAAOA,GAAG,oBAAoBA,EAAE+2B,aAAQ,IAAS/2B,EAAEk3B,SAAS,CAAiD,GAAhDr8B,EAAEi8B,IAAI,EAAEj8B,EAAEwmC,cAAc,KAAKxmC,EAAE6gD,YAAY,KAAQlE,GAAG/mC,GAAG,CAAC,IAAI8iB,GAAE,EAAGukB,GAAGj9C,EAAE,MAAM04B,GAAE,EAAG14B,EAAEwmC,cAAc,OAAOrhC,EAAEmN,YAAO,IAASnN,EAAEmN,MAAMnN,EAAEmN,MAAM,KAAKsuC,GAAG5gD,GAAG,IAAI24B,EAAE/iB,EAAE2tC,yBAAyB,oBAAoB5qB,GAAGwpB,GAAGniD,EAAE4V,EAAE+iB,EAAE5yB,GAAGZ,EAAE+9C,QAAQd,GAAGpiD,EAAE8kC,UAAU3/B,EAAEA,EAAEm9C,gBAAgBtiD,EAAEsjD,GAAGtjD,EAAE4V,EAAE7P,EAAEnC,GAAG5D,EAAEosD,GAAG,KAAKpsD,EAAE4V,GAAE,EAAG8iB,EAAE90B,EAAE,MAAM5D,EAAEi8B,IAAI,EAAEqvB,GAAG,KAAKtrD,EAAEmF,EAAEvB,GAAG5D,EAAEA,EAAE4mC,MAAM,OAAO5mC,EAAE,KAAK,GAAGmF,EAAEnF,EAAEykD,YAAY1+C,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAEsgC,UAAU,KAAKrmC,EAAEqmC,UAAU,KAAKrmC,EAAE0Q,OAAO,GACnf3K,EAAE/F,EAAEqmD,aAAuBlhD,GAAVuzB,EAAEvzB,EAAEq3B,OAAUr3B,EAAEo3B,UAAUv8B,EAAEI,KAAK+E,EAAEuzB,EAAE14B,EAAEi8B,IAOxD,SAAYl2B,GAAG,GAAG,oBAAoBA,EAAE,OAAO0lD,GAAG1lD,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEs2B,YAAgB5B,EAAG,OAAO,GAAG,GAAG10B,IAAI60B,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAPnFk8B,CAAG3xD,GAAGY,EAAEy5C,GAAGr6C,EAAEY,GAAU2yB,GAAG,KAAK,EAAE14B,EAAE2rD,GAAG,KAAK3rD,EAAEmF,EAAEY,EAAEnC,GAAG,MAAMmC,EAAE,KAAK,EAAE/F,EAAEgsD,GAAG,KAAKhsD,EAAEmF,EAAEY,EAAEnC,GAAG,MAAMmC,EAAE,KAAK,GAAG/F,EAAEurD,GAAG,KAAKvrD,EAAEmF,EAAEY,EAAEnC,GAAG,MAAMmC,EAAE,KAAK,GAAG/F,EAAEwrD,GAAG,KAAKxrD,EAAEmF,EAAEq6C,GAAGr6C,EAAE/E,KAAK2F,GAAG6P,EAAEhS,GAAG,MAAMmC,EAAE,MAAMrJ,MAAMuJ,EAAE,IAAId,EAAE,IAAK,CAAC,OAAOnF,EAAE,KAAK,EAAE,OAAO4V,EAAE5V,EAAEI,KAAK+E,EAAEnF,EAAEqmD,aAA2CsF,GAAG5lD,EAAE/F,EAAE4V,EAArCzQ,EAAEnF,EAAEykD,cAAc7uC,EAAEzQ,EAAEq6C,GAAG5pC,EAAEzQ,GAAcvB,GAAG,KAAK,EAAE,OAAOgS,EAAE5V,EAAEI,KAAK+E,EAAEnF,EAAEqmD,aAA2C2F,GAAGjmD,EAAE/F,EAAE4V,EAArCzQ,EAAEnF,EAAEykD,cAAc7uC,EAAEzQ,EAAEq6C,GAAG5pC,EAAEzQ,GAAcvB,GAAG,KAAK,EAAwB,GAAtB0oD,GAAGtsD,GAAG4V,EAAE5V,EAAE6gD,YAAe,OAAO96C,GAAG,OAAO6P,EAAE,MAAMlZ,MAAMuJ,EAAE,MAC3Y,GAA9G2P,EAAE5V,EAAEqmD,aAA+BlhD,EAAE,QAApBA,EAAEnF,EAAEwmC,eAAyBrhC,EAAE6pD,QAAQ,KAAK5N,GAAGr7C,EAAE/F,GAAG2hD,GAAG3hD,EAAE4V,EAAE,KAAKhS,IAAGgS,EAAE5V,EAAEwmC,cAAcwoB,WAAe7pD,EAAEshD,KAAKzmD,EAAE6D,GAAGkC,EAAE/F,EAAE4D,OAAO,CAAuF,IAArE80B,GAAjBvzB,EAAEnF,EAAE8kC,WAAiB+D,WAAQmd,GAAG1K,GAAGt7C,EAAE8kC,UAAUgE,cAAcrJ,YAAYsmB,GAAG/lD,EAAE04B,EAAEutB,IAAG,GAAMvtB,EAAE,CAAqC,GAAG,OAAvC3yB,EAAEZ,EAAE4wD,iCAA2C,IAAI5wD,EAAE,EAAEA,EAAEY,EAAEjK,OAAOqJ,GAAG,GAAEuzB,EAAE3yB,EAAEZ,IAAKyhD,8BAA8B7gD,EAAEZ,EAAE,GAAGuhD,GAAGvqD,KAAKu8B,GAAoB,IAAjB90B,EAAEmhD,GAAG/kD,EAAE,KAAK4V,EAAEhS,GAAO5D,EAAE4mC,MAAMhjC,EAAEA,GAAGA,EAAE8M,OAAe,EAAT9M,EAAE8M,MAAS,KAAK9M,EAAEA,EAAEijC,OAAO,MAAMykB,GAAGvlD,EAAE/F,EAAE4V,EAAEhS,GAAG6iD,KAAKzmD,EAAEA,EAAE4mC,KAAK,CAAC,OAAO5mC,EAAE,KAAK,EAAE,OAAOylD,GAAGzlD,GAAG,OAAO+F,GACnfugD,GAAGtmD,GAAG4V,EAAE5V,EAAEI,KAAK+E,EAAEnF,EAAEqmD,aAAa3tB,EAAE,OAAO3yB,EAAEA,EAAE8/C,cAAc,KAAKltB,EAAExzB,EAAEg5B,SAAS8c,GAAGrlC,EAAEzQ,GAAGwzB,EAAE,KAAK,OAAOD,GAAGuiB,GAAGrlC,EAAE8iB,KAAK14B,EAAE0Q,OAAO,IAAIq7C,GAAGhmD,EAAE/F,GAAGsrD,GAAGvlD,EAAE/F,EAAE24B,EAAE/0B,GAAG5D,EAAE4mC,MAAM,KAAK,EAAE,OAAO,OAAO7gC,GAAGugD,GAAGtmD,GAAG,KAAK,KAAK,GAAG,OAAO6sD,GAAG9mD,EAAE/F,EAAE4D,GAAG,KAAK,EAAE,OAAOyhD,GAAGrlD,EAAEA,EAAE8kC,UAAUgE,eAAelzB,EAAE5V,EAAEqmD,aAAa,OAAOtgD,EAAE/F,EAAE4mC,MAAMke,GAAG9kD,EAAE,KAAK4V,EAAEhS,GAAG0nD,GAAGvlD,EAAE/F,EAAE4V,EAAEhS,GAAG5D,EAAE4mC,MAAM,KAAK,GAAG,OAAOhxB,EAAE5V,EAAEI,KAAK+E,EAAEnF,EAAEqmD,aAA2CkF,GAAGxlD,EAAE/F,EAAE4V,EAArCzQ,EAAEnF,EAAEykD,cAAc7uC,EAAEzQ,EAAEq6C,GAAG5pC,EAAEzQ,GAAcvB,GAAG,KAAK,EAAE,OAAO0nD,GAAGvlD,EAAE/F,EAAEA,EAAEqmD,aAAaziD,GAAG5D,EAAE4mC,MAAM,KAAK,EACtc,KAAK,GAAG,OAAO0kB,GAAGvlD,EAAE/F,EAAEA,EAAEqmD,aAAaloB,SAASv6B,GAAG5D,EAAE4mC,MAAM,KAAK,GAAG7gC,EAAE,CAAC6P,EAAE5V,EAAEI,KAAKk8B,SAASn3B,EAAEnF,EAAEqmD,aAAa1tB,EAAE34B,EAAE6lD,cAAcntB,EAAEvzB,EAAE3H,MAAM,IAAIs+B,EAAE97B,EAAEI,KAAKk8B,SAAiD,GAAxC4f,GAAEwD,GAAG5jB,EAAEkkB,eAAelkB,EAAEkkB,cAActnB,EAAK,OAAOC,EAAE,GAAGmD,EAAEnD,EAAEn7B,MAA0G,KAApGk7B,EAAEqe,GAAGjb,EAAEpD,GAAG,EAAwF,GAArF,oBAAoB9iB,EAAEmhD,sBAAsBnhD,EAAEmhD,sBAAsBj7B,EAAEpD,GAAG,cAAqB,GAAGC,EAAEwF,WAAWh5B,EAAEg5B,WAAWke,GAAEv1B,QAAQ,CAAC9mB,EAAE6D,GAAGkC,EAAE/F,EAAE4D,GAAG,MAAMmC,CAAC,OAAO,IAAc,QAAV+1B,EAAE97B,EAAE4mC,SAAiB9K,EAAEwK,OAAOtmC,GAAG,OAAO87B,GAAG,CAAC,IAAID,EAAEC,EAAEskB,aAAa,GAAG,OAAOvkB,EAAE,CAAClD,EAAEmD,EAAE8K,MAAM,IAAI,IAAIlmB,EACtfmb,EAAEwkB,aAAa,OAAO3/B,GAAG,CAAC,GAAGA,EAAEnN,UAAUqC,GAAG,KAAK8K,EAAE+/B,aAAa/nB,GAAG,CAAC,IAAIoD,EAAEG,OAAMvb,EAAE2gC,IAAI,EAAEz9C,GAAGA,IAAKq4B,IAAI,EAAEwlB,GAAG3lB,EAAEpb,IAAIob,EAAEwkB,OAAO18C,EAAgB,QAAd8c,EAAEob,EAAEuK,aAAqB3lB,EAAE4/B,OAAO18C,GAAGq8C,GAAGnkB,EAAEwK,OAAO1iC,GAAGi4B,EAAEykB,OAAO18C,EAAE,KAAK,CAAC8c,EAAEA,EAAElB,IAAI,CAAC,MAAMmZ,EAAE,KAAKmD,EAAEG,KAAIH,EAAE17B,OAAOJ,EAAEI,KAAK,KAAa07B,EAAE8K,MAAM,GAAG,OAAOjO,EAAEA,EAAE2N,OAAOxK,OAAO,IAAInD,EAAEmD,EAAE,OAAOnD,GAAG,CAAC,GAAGA,IAAI34B,EAAE,CAAC24B,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfmD,EAAEnD,EAAEkO,SAAoB,CAAC/K,EAAEwK,OAAO3N,EAAE2N,OAAO3N,EAAEmD,EAAE,KAAK,CAACnD,EAAEA,EAAE2N,MAAM,CAACxK,EAAEnD,CAAC,CAAC2yB,GAAGvlD,EAAE/F,EAAEmF,EAAEg5B,SAASv6B,GAAG5D,EAAEA,EAAE4mC,KAAK,CAAC,OAAO5mC,EAAE,KAAK,EAAE,OAAOmF,EAAEnF,EAAEI,KAAsBwV,GAAjB8iB,EAAE14B,EAAEqmD,cAAiBloB,SAASgiB,GAAGngD,EAAE4D,GACndgS,EAAEA,EADodzQ,EAAEq7C,GAAGr7C,EACpfuzB,EAAEs+B,wBAA8Bh3D,EAAE0Q,OAAO,EAAE46C,GAAGvlD,EAAE/F,EAAE4V,EAAEhS,GAAG5D,EAAE4mC,MAAM,KAAK,GAAG,OAAgBlO,EAAE8mB,GAAXr6C,EAAEnF,EAAEI,KAAYJ,EAAEqmD,cAA6BmF,GAAGzlD,EAAE/F,EAAEmF,EAAtBuzB,EAAE8mB,GAAGr6C,EAAE/E,KAAKs4B,GAAc9iB,EAAEhS,GAAG,KAAK,GAAG,OAAO8nD,GAAG3lD,EAAE/F,EAAEA,EAAEI,KAAKJ,EAAEqmD,aAAazwC,EAAEhS,GAAG,KAAK,GAAG,OAAOgS,EAAE5V,EAAEI,KAAK+E,EAAEnF,EAAEqmD,aAAalhD,EAAEnF,EAAEykD,cAAc7uC,EAAEzQ,EAAEq6C,GAAG5pC,EAAEzQ,GAAG,OAAOY,IAAIA,EAAEsgC,UAAU,KAAKrmC,EAAEqmC,UAAU,KAAKrmC,EAAE0Q,OAAO,GAAG1Q,EAAEi8B,IAAI,EAAE0gB,GAAG/mC,IAAI7P,GAAE,EAAGk3C,GAAGj9C,IAAI+F,GAAE,EAAGo6C,GAAGngD,EAAE4D,GAAGo/C,GAAGhjD,EAAE4V,EAAEzQ,GAAGm+C,GAAGtjD,EAAE4V,EAAEzQ,EAAEvB,GAAGwoD,GAAG,KAAKpsD,EAAE4V,GAAE,EAAG7P,EAAEnC,GAAG,KAAK,GAAG,OAAO+pD,GAAG5nD,EAAE/F,EAAE4D,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAOgoD,GAAG7lD,EAAE/F,EAAE4D,GAAG,MAAMlH,MAAMuJ,EAAE,IAAIjG,EAAEi8B,KAC/e,EAYAm6B,GAAGl5D,UAAUg/B,OAAO,SAASn2B,GAAGiwD,GAAGjwD,EAAE5E,KAAKo1D,cAAc,KAAK,KAAK,EAAEH,GAAGl5D,UAAU+5D,QAAQ,WAAW,IAAIlxD,EAAE5E,KAAKo1D,cAAcv2D,EAAE+F,EAAE+iC,cAAcktB,GAAG,KAAKjwD,EAAE,MAAK,WAAW/F,EAAEi6C,IAAI,IAAI,GAAE,EAEkJjT,GAAG,SAASjhC,GAAM,KAAKA,EAAEk2B,MAAgBymB,GAAG38C,EAAE,EAAVy8C,MAAe2T,GAAGpwD,EAAE,GAAG,EAAEkhC,GAAG,SAASlhC,GAAM,KAAKA,EAAEk2B,MAAgBymB,GAAG38C,EAAE,SAAVy8C,MAAsB2T,GAAGpwD,EAAE,UAAU,EAC7cmhC,GAAG,SAASnhC,GAAG,GAAG,KAAKA,EAAEk2B,IAAI,CAAC,IAAIj8B,EAAEwiD,KAAK5+C,EAAE6+C,GAAG18C,GAAG28C,GAAG38C,EAAEnC,EAAE5D,GAAGm2D,GAAGpwD,EAAEnC,EAAE,CAAC,EAAEujC,GAAG,SAASphC,EAAE/F,GAAG,OAAOA,GAAG,EAChGykC,GAAG,SAAS1+B,EAAE/F,EAAE4D,GAAG,OAAO5D,GAAG,IAAK,QAAyB,GAAjB+9B,GAAGh4B,EAAEnC,GAAG5D,EAAE4D,EAAE2J,KAAQ,UAAU3J,EAAExD,MAAM,MAAMJ,EAAE,CAAC,IAAI4D,EAAEmC,EAAEnC,EAAE4gC,YAAY5gC,EAAEA,EAAE4gC,WAAsF,IAA3E5gC,EAAEA,EAAEszD,iBAAiB,cAAcC,KAAKC,UAAU,GAAGp3D,GAAG,mBAAuBA,EAAE,EAAEA,EAAE4D,EAAE9H,OAAOkE,IAAI,CAAC,IAAI4V,EAAEhS,EAAE5D,GAAG,GAAG4V,IAAI7P,GAAG6P,EAAEyhD,OAAOtxD,EAAEsxD,KAAK,CAAC,IAAIlyD,EAAE4/B,GAAGnvB,GAAG,IAAIzQ,EAAE,MAAMzI,MAAMuJ,EAAE,KAAKi3B,EAAGtnB,GAAGmoB,GAAGnoB,EAAEzQ,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW05B,GAAG94B,EAAEnC,GAAG,MAAM,IAAK,SAAmB,OAAV5D,EAAE4D,EAAEpG,QAAe8gC,GAAGv4B,IAAInC,EAAEmqD,SAAS/tD,GAAE,GAAI,EAAEklC,GAAG+uB,GAC9Z9uB,GAAG,SAASp/B,EAAE/F,EAAE4D,EAAEgS,EAAEzQ,GAAG,IAAIuzB,EAAE44B,GAAEA,IAAG,EAAE,IAAI,OAAOpS,GAAG,GAAGn5C,EAAEyM,KAAK,KAAKxS,EAAE4D,EAAEgS,EAAEzQ,GAAG,CAAC,QAAY,KAAJmsD,GAAE54B,KAAUo5B,KAAK1S,KAAK,CAAC,EAAEha,GAAG,WAAW,KAAO,GAAFksB,MAhD/H,WAAc,GAAG,OAAOgB,GAAG,CAAC,IAAIvsD,EAAEusD,GAAGA,GAAG,KAAKvsD,EAAE2jB,SAAQ,SAAS3jB,GAAGA,EAAEilC,cAAc,GAAGjlC,EAAEglC,aAAakoB,GAAGltD,EAAEg5C,KAAI,GAAE,CAACK,IAAI,CAgDkBkY,GAAK/D,KAAK,EAAEluB,GAAG,SAASt/B,EAAE/F,GAAG,IAAI4D,EAAE0tD,GAAEA,IAAG,EAAE,IAAI,OAAOvrD,EAAE/F,EAAE,CAAC,QAAY,KAAJsxD,GAAE1tD,KAAUkuD,KAAK1S,KAAK,CAAC,EAAyI,IAAImY,GAAG,CAACC,OAAO,CAAC3yB,GAAGmR,GAAGjR,GAAGC,GAAGC,GAAGsuB,GAAG,CAACzsC,SAAQ,KAAM2wC,GAAG,CAACC,wBAAwBjvB,GAAGkvB,WAAW,EAAExgC,QAAQ,SAASygC,oBAAoB,aACveC,GAAG,CAACF,WAAWF,GAAGE,WAAWxgC,QAAQsgC,GAAGtgC,QAAQygC,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBv+B,EAAG8sB,uBAAuB0R,wBAAwB,SAASzyD,GAAW,OAAO,QAAfA,EAAE4gC,GAAG5gC,IAAmB,KAAKA,EAAE++B,SAAS,EAAE4yB,wBAAwBD,GAAGC,yBAR/I,WAAc,OAAO,IAAI,EASjXe,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAI7b,GAAG2b,GAAGG,OAAOrB,IAAIxa,GAAG0b,EAAE,CAAC,MAAMhzD,IAAG,CAAC,CAACpL,EAAQs/B,mDAAmDs9B,GAAG58D,EAAQw+D,aAAavC,GACnXj8D,EAAQy+D,YAAY,SAASrzD,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEi6B,SAAS,OAAOj6B,EAAE,IAAI/F,EAAE+F,EAAEu8C,gBAAgB,QAAG,IAAStiD,EAAE,CAAC,GAAG,oBAAoB+F,EAAEm2B,OAAO,MAAMx/B,MAAMuJ,EAAE,MAAM,MAAMvJ,MAAMuJ,EAAE,IAAIhJ,OAAOoX,KAAKtO,IAAK,CAAqC,OAA5BA,EAAE,QAAVA,EAAE4gC,GAAG3mC,IAAc,KAAK+F,EAAE++B,SAAkB,EAAEnqC,EAAQ0+D,UAAU,SAAStzD,EAAE/F,GAAG,IAAI4D,EAAE0tD,GAAE,GAAG,KAAO,GAAF1tD,GAAM,OAAOmC,EAAE/F,GAAGsxD,IAAG,EAAE,IAAI,GAAGvrD,EAAE,OAAOm5C,GAAG,GAAGn5C,EAAEyM,KAAK,KAAKxS,GAAG,CAAC,QAAQsxD,GAAE1tD,EAAEw7C,IAAI,CAAC,EAAEzkD,EAAQkuC,QAAQ,SAAS9iC,EAAE/F,EAAE4D,GAAG,IAAI4yD,GAAGx2D,GAAG,MAAMtD,MAAMuJ,EAAE,MAAM,OAAOwwD,GAAG,KAAK1wD,EAAE/F,GAAE,EAAG4D,EAAE,EACrdjJ,EAAQuhC,OAAO,SAASn2B,EAAE/F,EAAE4D,GAAG,IAAI4yD,GAAGx2D,GAAG,MAAMtD,MAAMuJ,EAAE,MAAM,OAAOwwD,GAAG,KAAK1wD,EAAE/F,GAAE,EAAG4D,EAAE,EAAEjJ,EAAQ2+D,uBAAuB,SAASvzD,GAAG,IAAIywD,GAAGzwD,GAAG,MAAMrJ,MAAMuJ,EAAE,KAAK,QAAOF,EAAE8qD,sBAAqBqD,IAAG,WAAWuC,GAAG,KAAK,KAAK1wD,GAAE,GAAG,WAAWA,EAAE8qD,oBAAoB,KAAK9qD,EAAEk0C,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEt/C,EAAQ4+D,wBAAwBtF,GAAGt5D,EAAQ6+D,sBAAsB,SAASzzD,EAAE/F,GAAG,OAAO42D,GAAG7wD,EAAE/F,EAAE,EAAEa,UAAU/E,aAAQ,IAAS+E,UAAU,GAAGA,UAAU,GAAG,KAAK,EACnblG,EAAQ8+D,oCAAoC,SAAS1zD,EAAE/F,EAAE4D,EAAEgS,GAAG,IAAI4gD,GAAG5yD,GAAG,MAAMlH,MAAMuJ,EAAE,MAAM,GAAG,MAAMF,QAAG,IAASA,EAAEu8C,gBAAgB,MAAM5lD,MAAMuJ,EAAE,KAAK,OAAOwwD,GAAG1wD,EAAE/F,EAAE4D,GAAE,EAAGgS,EAAE,EAAEjb,EAAQw8B,QAAQ,uCCtS7L,SAASuiC,IAEP,GAC4C,qBAAnCZ,gCAC4C,oBAA5CA,+BAA+BY,SAcxC,IAEEZ,+BAA+BY,SAASA,EAC1C,CAAE,MAAOrpD,GAGPhL,QAAQC,MAAM+K,EAChB,CACF,CAKEqpD,GACAh/D,EAAOC,QAAU,EAAjBD,mCC1BW+D,EAAQ,MAAiB,IAAIi6B,EAAEj6B,EAAQ,MAASk6B,EAAE,MAA6B,GAAvBh+B,EAAQg/D,SAAS,MAAS,oBAAoB/6D,QAAQA,OAAOu8B,IAAI,CAAC,IAAIW,EAAEl9B,OAAOu8B,IAAIxC,EAAEmD,EAAE,iBAAiBnhC,EAAQg/D,SAAS79B,EAAE,iBAAiB,CAAC,IAAIl6B,EAAE82B,EAAEuB,mDAAmDoxB,kBAAkB1pD,EAAE1E,OAAOC,UAAUwZ,eAAeD,EAAE,CAACrC,KAAI,EAAG0vC,KAAI,EAAG8V,QAAO,EAAGC,UAAS,GACrW,SAAS9f,EAAEn2C,EAAEmC,EAAE81B,GAAG,IAAI77B,EAAE4V,EAAE,CAAC,EAAEzQ,EAAE,KAAKub,EAAE,KAAiF,IAAI1gB,UAAhF,IAAS67B,IAAI12B,EAAE,GAAG02B,QAAG,IAAS91B,EAAEqO,MAAMjP,EAAE,GAAGY,EAAEqO,UAAK,IAASrO,EAAE+9C,MAAMpjC,EAAE3a,EAAE+9C,KAAc/9C,EAAEpE,EAAE/D,KAAKmI,EAAE/F,KAAKyW,EAAEC,eAAe1W,KAAK4V,EAAE5V,GAAG+F,EAAE/F,IAAI,GAAG4D,GAAGA,EAAE67C,aAAa,IAAIz/C,KAAK+F,EAAEnC,EAAE67C,kBAAe,IAAS7pC,EAAE5V,KAAK4V,EAAE5V,GAAG+F,EAAE/F,IAAI,MAAM,CAACq8B,SAAS1D,EAAEv4B,KAAKwD,EAAEwQ,IAAIjP,EAAE2+C,IAAIpjC,EAAEoJ,MAAMlU,EAAEmuC,OAAOniD,EAAEklB,QAAQ,CAACnsB,EAAQm/D,IAAI/f,EAAEp/C,EAAQo/D,KAAKhgB,+BCD1U,IAAIr5B,EAAEjiB,EAAQ,MAAiBkD,EAAE,MAAM8U,EAAE,MAAM9b,EAAQg/D,SAAS,MAAMh/D,EAAQq/D,WAAW,MAAMr/D,EAAQs/D,SAAS,MAAM,IAAIlgB,EAAE,MAAMriB,EAAE,MAAMnK,EAAE,MAAM5yB,EAAQu/D,SAAS,MAAM,IAAItsC,EAAE,MAAMhT,EAAE,MACpM,GAAG,oBAAoBhc,QAAQA,OAAOu8B,IAAI,CAAC,IAAIppB,EAAEnT,OAAOu8B,IAAIx5B,EAAEoQ,EAAE,iBAAiB0E,EAAE1E,EAAE,gBAAgBpX,EAAQg/D,SAAS5nD,EAAE,kBAAkBpX,EAAQq/D,WAAWjoD,EAAE,qBAAqBpX,EAAQs/D,SAASloD,EAAE,kBAAkBgoC,EAAEhoC,EAAE,kBAAkB2lB,EAAE3lB,EAAE,iBAAiBwb,EAAExb,EAAE,qBAAqBpX,EAAQu/D,SAASnoD,EAAE,kBAAkB6b,EAAE7b,EAAE,cAAc6I,EAAE7I,EAAE,aAAa,CAAC,IAAI/L,EAAE,oBAAoBpH,QAAQA,OAAOuqB,SACtR,SAAS2wB,EAAE/zC,GAAG,IAAI,IAAI/F,EAAE,yDAAyD+F,EAAEnC,EAAE,EAAEA,EAAE/C,UAAU/E,OAAO8H,IAAI5D,GAAG,WAAW23B,mBAAmB92B,UAAU+C,IAAI,MAAM,yBAAyBmC,EAAE,WAAW/F,EAAE,gHAAgH,CACpb,IAAI4hD,EAAE,CAACS,UAAU,WAAW,OAAM,CAAE,EAAEO,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEJ,gBAAgB,WAAW,GAAG9pB,EAAE,CAAC,EAAE,SAASopB,EAAE97C,EAAE/F,EAAE4D,GAAGzC,KAAK2oB,MAAM/jB,EAAE5E,KAAKoS,QAAQvT,EAAEmB,KAAK+gD,KAAKzpB,EAAEt3B,KAAK+hD,QAAQt/C,GAAGg+C,CAAC,CACrN,SAASzoB,IAAI,CAAyB,SAASpsB,EAAEhH,EAAE/F,EAAE4D,GAAGzC,KAAK2oB,MAAM/jB,EAAE5E,KAAKoS,QAAQvT,EAAEmB,KAAK+gD,KAAKzpB,EAAEt3B,KAAK+hD,QAAQt/C,GAAGg+C,CAAC,CADqGC,EAAE3kD,UAAU04D,iBAAiB,CAAC,EAAE/T,EAAE3kD,UAAUi9D,SAAS,SAASp0D,EAAE/F,GAAG,GAAG,kBAAkB+F,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMrJ,MAAMo9C,EAAE,KAAK34C,KAAK+hD,QAAQX,gBAAgBphD,KAAK4E,EAAE/F,EAAE,WAAW,EAAE6hD,EAAE3kD,UAAUk9D,YAAY,SAASr0D,GAAG5E,KAAK+hD,QAAQN,mBAAmBzhD,KAAK4E,EAAE,cAAc,EACjeozB,EAAEj8B,UAAU2kD,EAAE3kD,UAAsF,IAAI0tC,EAAE79B,EAAE7P,UAAU,IAAIi8B,EAAEyR,EAAEz9B,YAAYJ,EAAE2T,EAAEkqB,EAAEiX,EAAE3kD,WAAW0tC,EAAEmY,sBAAqB,EAAG,IAAI5J,EAAE,CAACryB,QAAQ,MAAMm1B,EAAEh/C,OAAOC,UAAUwZ,eAAewlC,EAAE,CAAC9nC,KAAI,EAAG0vC,KAAI,EAAG8V,QAAO,EAAGC,UAAS,GAChS,SAASxf,EAAEt0C,EAAE/F,EAAE4D,GAAG,IAAIuB,EAAEyQ,EAAE,CAAC,EAAEimB,EAAE,KAAKC,EAAE,KAAK,GAAG,MAAM97B,EAAE,IAAImF,UAAK,IAASnF,EAAE8jD,MAAMhoB,EAAE97B,EAAE8jD,UAAK,IAAS9jD,EAAEoU,MAAMynB,EAAE,GAAG77B,EAAEoU,KAAKpU,EAAEi8C,EAAEr+C,KAAKoC,EAAEmF,KAAK+2C,EAAExlC,eAAevR,KAAKyQ,EAAEzQ,GAAGnF,EAAEmF,IAAI,IAAIwzB,EAAE93B,UAAU/E,OAAO,EAAE,GAAG,IAAI68B,EAAE/iB,EAAEuoB,SAASv6B,OAAO,GAAG,EAAE+0B,EAAE,CAAC,IAAI,IAAID,EAAEl8B,MAAMm8B,GAAG/2B,EAAE,EAAEA,EAAE+2B,EAAE/2B,IAAI82B,EAAE92B,GAAGf,UAAUe,EAAE,GAAGgU,EAAEuoB,SAASzF,CAAC,CAAC,GAAG3yB,GAAGA,EAAE05C,aAAa,IAAIt6C,KAAKwzB,EAAE5yB,EAAE05C,kBAAe,IAAS7pC,EAAEzQ,KAAKyQ,EAAEzQ,GAAGwzB,EAAExzB,IAAI,MAAM,CAACk3B,SAAS16B,EAAEvB,KAAK2F,EAAEqO,IAAIynB,EAAEioB,IAAIhoB,EAAEhS,MAAMlU,EAAEmuC,OAAO5K,EAAEryB,QAAQ,CAChV,SAAS0zB,EAAEz0C,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEs2B,WAAW16B,CAAC,CAAoG,IAAIy6C,EAAE,OAAO,SAASC,EAAEt2C,EAAE/F,GAAG,MAAM,kBAAkB+F,GAAG,OAAOA,GAAG,MAAMA,EAAEqO,IAA7K,SAAgBrO,GAAG,IAAI/F,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI+F,EAAEc,QAAQ,SAAQ,SAASd,GAAG,OAAO/F,EAAE+F,EAAE,GAAE,CAA+Es0D,CAAO,GAAGt0D,EAAEqO,KAAKpU,EAAEhD,SAAS,GAAG,CAC/W,SAAS+hD,EAAEh5C,EAAE/F,EAAE4D,EAAEuB,EAAEyQ,GAAG,IAAIimB,SAAS91B,EAAK,cAAc81B,GAAG,YAAYA,IAAE91B,EAAE,MAAK,IAAI+1B,GAAE,EAAG,GAAG,OAAO/1B,EAAE+1B,GAAE,OAAQ,OAAOD,GAAG,IAAK,SAAS,IAAK,SAASC,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO/1B,EAAEs2B,UAAU,KAAK16B,EAAE,KAAK8U,EAAEqlB,GAAE,GAAI,GAAGA,EAAE,OAAWlmB,EAAEA,EAANkmB,EAAE/1B,GAASA,EAAE,KAAKZ,EAAE,IAAIk3C,EAAEvgB,EAAE,GAAG32B,EAAE3I,MAAM6D,QAAQuV,IAAIhS,EAAE,GAAG,MAAMmC,IAAInC,EAAEmC,EAAEc,QAAQu1C,EAAE,OAAO,KAAK2C,EAAEnpC,EAAE5V,EAAE4D,EAAE,IAAG,SAASmC,GAAG,OAAOA,CAAC,KAAI,MAAM6P,IAAI4kC,EAAE5kC,KAAKA,EAD/W,SAAW7P,EAAE/F,GAAG,MAAM,CAACq8B,SAAS16B,EAAEvB,KAAK2F,EAAE3F,KAAKgU,IAAIpU,EAAE8jD,IAAI/9C,EAAE+9C,IAAIh6B,MAAM/jB,EAAE+jB,MAAMi6B,OAAOh+C,EAAEg+C,OAAO,CACqRzJ,CAAE1kC,EAAEhS,IAAIgS,EAAExB,KAAK0nB,GAAGA,EAAE1nB,MAAMwB,EAAExB,IAAI,IAAI,GAAGwB,EAAExB,KAAKvN,QAAQu1C,EAAE,OAAO,KAAKr2C,IAAI/F,EAAE7D,KAAKyZ,IAAI,EAAyB,GAAvBkmB,EAAE,EAAE32B,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO3I,MAAM6D,QAAQ0F,GAAG,IAAI,IAAI4yB,EACzf,EAAEA,EAAE5yB,EAAEjK,OAAO68B,IAAI,CAAQ,IAAID,EAAEvzB,EAAEk3C,EAAfxgB,EAAE91B,EAAE4yB,GAAeA,GAAGmD,GAAGijB,EAAEljB,EAAE77B,EAAE4D,EAAE80B,EAAE9iB,EAAE,MAAM,GAAG8iB,EANhE,SAAW3yB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEC,GAAGD,EAAEC,IAAID,EAAE,eAA0CA,EAAE,IAAI,CAMtDE,CAAEF,GAAG,oBAAoB2yB,EAAE,IAAI3yB,EAAE2yB,EAAE96B,KAAKmI,GAAG4yB,EAAE,IAAIkD,EAAE91B,EAAEyZ,QAAQgE,MAA6BsY,GAAGijB,EAA1BljB,EAAEA,EAAEr+B,MAA0BwC,EAAE4D,EAAtB80B,EAAEvzB,EAAEk3C,EAAExgB,EAAElD,KAAkB/iB,QAAQ,GAAG,WAAWimB,EAAE,MAAM77B,EAAE,GAAG+F,EAAErJ,MAAMo9C,EAAE,GAAG,oBAAoB95C,EAAE,qBAAqB/C,OAAOoX,KAAKtO,GAAGzJ,KAAK,MAAM,IAAI0D,IAAI,OAAO87B,CAAC,CAAC,SAAS6pB,EAAE5/C,EAAE/F,EAAE4D,GAAG,GAAG,MAAMmC,EAAE,OAAOA,EAAE,IAAIZ,EAAE,GAAGyQ,EAAE,EAAmD,OAAjDmpC,EAAEh5C,EAAEZ,EAAE,GAAG,IAAG,SAASY,GAAG,OAAO/F,EAAEpC,KAAKgG,EAAEmC,EAAE6P,IAAI,IAAUzQ,CAAC,CAC3Z,SAASo1C,EAAEx0C,GAAG,IAAI,IAAIA,EAAEu0D,QAAQ,CAAC,IAAIt6D,EAAE+F,EAAEw0D,QAAQv6D,EAAEA,IAAI+F,EAAEu0D,QAAQ,EAAEv0D,EAAEw0D,QAAQv6D,EAAEA,EAAEiV,MAAK,SAASjV,GAAG,IAAI+F,EAAEu0D,UAAUt6D,EAAEA,EAAEyY,QAAQ1S,EAAEu0D,QAAQ,EAAEv0D,EAAEw0D,QAAQv6D,EAAE,IAAE,SAASA,GAAG,IAAI+F,EAAEu0D,UAAUv0D,EAAEu0D,QAAQ,EAAEv0D,EAAEw0D,QAAQv6D,EAAE,GAAE,CAAC,GAAG,IAAI+F,EAAEu0D,QAAQ,OAAOv0D,EAAEw0D,QAAQ,MAAMx0D,EAAEw0D,OAAQ,CAAC,IAAIrrD,EAAE,CAAC4X,QAAQ,MAAM,SAASmgC,IAAI,IAAIlhD,EAAEmJ,EAAE4X,QAAQ,GAAG,OAAO/gB,EAAE,MAAMrJ,MAAMo9C,EAAE,MAAM,OAAO/zC,CAAC,CAAC,IAAImhD,EAAE,CAACJ,uBAAuB53C,EAAEqwC,wBAAwB,CAACtV,WAAW,GAAGohB,kBAAkBlS,EAAEqhB,qBAAqB,CAAC1zC,SAAQ,GAAIiG,OAAOrM,GACje/lB,EAAQyjC,SAAS,CAACjkB,IAAIwrC,EAAEj8B,QAAQ,SAAS3jB,EAAE/F,EAAE4D,GAAG+hD,EAAE5/C,GAAE,WAAW/F,EAAE6E,MAAM1D,KAAKN,UAAU,GAAE+C,EAAE,EAAEoO,MAAM,SAASjM,GAAG,IAAI/F,EAAE,EAAuB,OAArB2lD,EAAE5/C,GAAE,WAAW/F,GAAG,IAAUA,CAAC,EAAEy6D,QAAQ,SAAS10D,GAAG,OAAO4/C,EAAE5/C,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAE20D,KAAK,SAAS30D,GAAG,IAAIy0C,EAAEz0C,GAAG,MAAMrJ,MAAMo9C,EAAE,MAAM,OAAO/zC,CAAC,GAAGpL,EAAQsnD,UAAUJ,EAAElnD,EAAQggE,cAAc5tD,EAAEpS,EAAQs/B,mDAAmDitB,EAChXvsD,EAAQigE,aAAa,SAAS70D,EAAE/F,EAAE4D,GAAG,GAAG,OAAOmC,QAAG,IAASA,EAAE,MAAMrJ,MAAMo9C,EAAE,IAAI/zC,IAAI,IAAIZ,EAAEub,EAAE,CAAC,EAAE3a,EAAE+jB,OAAOlU,EAAE7P,EAAEqO,IAAIynB,EAAE91B,EAAE+9C,IAAIhoB,EAAE/1B,EAAEg+C,OAAO,GAAG,MAAM/jD,EAAE,CAAoE,QAAnE,IAASA,EAAE8jD,MAAMjoB,EAAE77B,EAAE8jD,IAAIhoB,EAAEqd,EAAEryB,cAAS,IAAS9mB,EAAEoU,MAAMwB,EAAE,GAAG5V,EAAEoU,KAAQrO,EAAE3F,MAAM2F,EAAE3F,KAAKq/C,aAAa,IAAI9mB,EAAE5yB,EAAE3F,KAAKq/C,aAAa,IAAI/mB,KAAK14B,EAAEi8C,EAAEr+C,KAAKoC,EAAE04B,KAAKwjB,EAAExlC,eAAegiB,KAAKvzB,EAAEuzB,QAAG,IAAS14B,EAAE04B,SAAI,IAASC,EAAEA,EAAED,GAAG14B,EAAE04B,GAAG,CAAC,IAAIA,EAAE73B,UAAU/E,OAAO,EAAE,GAAG,IAAI48B,EAAEvzB,EAAEg5B,SAASv6B,OAAO,GAAG,EAAE80B,EAAE,CAACC,EAAEn8B,MAAMk8B,GAAG,IAAI,IAAI92B,EAAE,EAAEA,EAAE82B,EAAE92B,IAAI+2B,EAAE/2B,GAAGf,UAAUe,EAAE,GAAGuD,EAAEg5B,SAASxF,CAAC,CAAC,MAAM,CAAC0D,SAAS16B,EAAEvB,KAAK2F,EAAE3F,KACxfgU,IAAIwB,EAAEkuC,IAAIjoB,EAAE/R,MAAM3kB,EAAE4+C,OAAOjoB,EAAE,EAAEnhC,EAAQkgE,cAAc,SAAS90D,EAAE/F,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAM+F,EAAE,CAACs2B,SAAS3E,EAAEq/B,sBAAsB/2D,EAAEggD,cAAcj6C,EAAE+0D,eAAe/0D,EAAEg1D,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAAC3+B,SAAS0d,EAAEzd,SAASv2B,GAAUA,EAAEk1D,SAASl1D,CAAC,EAAEpL,EAAQy9B,cAAciiB,EAAE1/C,EAAQugE,cAAc,SAASn1D,GAAG,IAAI/F,EAAEq6C,EAAE7nC,KAAK,KAAKzM,GAAY,OAAT/F,EAAEI,KAAK2F,EAAS/F,CAAC,EAAErF,EAAQwgE,UAAU,WAAW,MAAM,CAACr0C,QAAQ,KAAK,EAAEnsB,EAAQygE,WAAW,SAASr1D,GAAG,MAAM,CAACs2B,SAAS9O,EAAE2O,OAAOn2B,EAAE,EAAEpL,EAAQ0gE,eAAe7gB,EAC3e7/C,EAAQ2gE,KAAK,SAASv1D,GAAG,MAAM,CAACs2B,SAASzhB,EAAE2hB,SAAS,CAAC+9B,SAAS,EAAEC,QAAQx0D,GAAGy2B,MAAM+d,EAAE,EAAE5/C,EAAQ4gE,KAAK,SAASx1D,EAAE/F,GAAG,MAAM,CAACq8B,SAASzO,EAAExtB,KAAK2F,EAAED,aAAQ,IAAS9F,EAAE,KAAKA,EAAE,EAAErF,EAAQ2vD,YAAY,SAASvkD,EAAE/F,GAAG,OAAOinD,IAAIqD,YAAYvkD,EAAE/F,EAAE,EAAErF,EAAQ4vD,WAAW,SAASxkD,EAAE/F,GAAG,OAAOinD,IAAIsD,WAAWxkD,EAAE/F,EAAE,EAAErF,EAAQkwD,cAAc,WAAW,EAAElwD,EAAQsuD,UAAU,SAASljD,EAAE/F,GAAG,OAAOinD,IAAIgC,UAAUljD,EAAE/F,EAAE,EAAErF,EAAQ6vD,oBAAoB,SAASzkD,EAAE/F,EAAE4D,GAAG,OAAOqjD,IAAIuD,oBAAoBzkD,EAAE/F,EAAE4D,EAAE,EAChdjJ,EAAQ8vD,gBAAgB,SAAS1kD,EAAE/F,GAAG,OAAOinD,IAAIwD,gBAAgB1kD,EAAE/F,EAAE,EAAErF,EAAQ+vD,QAAQ,SAAS3kD,EAAE/F,GAAG,OAAOinD,IAAIyD,QAAQ3kD,EAAE/F,EAAE,EAAErF,EAAQgwD,WAAW,SAAS5kD,EAAE/F,EAAE4D,GAAG,OAAOqjD,IAAI0D,WAAW5kD,EAAE/F,EAAE4D,EAAE,EAAEjJ,EAAQiwD,OAAO,SAAS7kD,GAAG,OAAOkhD,IAAI2D,OAAO7kD,EAAE,EAAEpL,EAAQmuD,SAAS,SAAS/iD,GAAG,OAAOkhD,IAAI6B,SAAS/iD,EAAE,EAAEpL,EAAQw8B,QAAQ,sCCnBnTz8B,EAAOC,QAAU,EAAjBD,kCCAAA,EAAOC,QAAU,EAAjBD,sBCDF,IAAIiF,EAASlB,EAAQ,MACjBrB,EAASuC,EAAOvC,OAGpB,SAASo+D,EAAW9sD,EAAKC,GACvB,IAAK,IAAIyF,KAAO1F,EACdC,EAAIyF,GAAO1F,EAAI0F,EAEnB,CASA,SAASqnD,EAAYt8D,EAAK1B,EAAkB3B,GAC1C,OAAOsB,EAAO+B,EAAK1B,EAAkB3B,EACvC,CAVIsB,EAAOG,MAAQH,EAAOC,OAASD,EAAOE,aAAeF,EAAOwI,gBAC9DlL,EAAOC,QAAUgF,GAGjB67D,EAAU77D,EAAQhF,GAClBA,EAAQyC,OAASq+D,GAOnBA,EAAWv+D,UAAYD,OAAOyU,OAAOtU,EAAOF,WAG5Cs+D,EAAUp+D,EAAQq+D,GAElBA,EAAWl+D,KAAO,SAAU4B,EAAK1B,EAAkB3B,GACjD,GAAmB,kBAARqD,EACT,MAAM,IAAIzB,UAAU,iCAEtB,OAAON,EAAO+B,EAAK1B,EAAkB3B,EACvC,EAEA2/D,EAAWp+D,MAAQ,SAAUqD,EAAMiF,EAAMtH,GACvC,GAAoB,kBAATqC,EACT,MAAM,IAAIhD,UAAU,6BAEtB,IAAIuB,EAAM7B,EAAOsD,GAUjB,YATaxC,IAATyH,EACsB,kBAAbtH,EACTY,EAAI0G,KAAKA,EAAMtH,GAEfY,EAAI0G,KAAKA,GAGX1G,EAAI0G,KAAK,GAEJ1G,CACT,EAEAw8D,EAAWn+D,YAAc,SAAUoD,GACjC,GAAoB,kBAATA,EACT,MAAM,IAAIhD,UAAU,6BAEtB,OAAON,EAAOsD,EAChB,EAEA+6D,EAAW71D,gBAAkB,SAAUlF,GACrC,GAAoB,kBAATA,EACT,MAAM,IAAIhD,UAAU,6BAEtB,OAAOiC,EAAOd,WAAW6B,EAC3B,6BCxDa,IAAIg4B,EAAEC,EAAEmD,EAAED,EAAE,GAAG,kBAAkB6/B,aAAa,oBAAoBA,YAAYntB,IAAI,CAAC,IAAI7tB,EAAEg7C,YAAY/gE,EAAQgwC,aAAa,WAAW,OAAOjqB,EAAE6tB,KAAK,CAAC,KAAK,CAAC,IAAI93B,EAAE63B,KAAKyL,EAAEtjC,EAAE83B,MAAM5zC,EAAQgwC,aAAa,WAAW,OAAOl0B,EAAE83B,MAAMwL,CAAC,CAAC,CAC7O,GAAG,qBAAqBtiC,QAAQ,oBAAoBkkD,eAAe,CAAC,IAAIpuC,EAAE,KAAKK,EAAE,KAAK7b,EAAE,WAAW,GAAG,OAAOwb,EAAE,IAAI,IAAIxnB,EAAEpL,EAAQgwC,eAAepd,GAAE,EAAGxnB,GAAGwnB,EAAE,IAAI,CAAC,MAAMvtB,GAAG,MAAMoV,WAAWrD,EAAE,GAAG/R,CAAE,CAAC,EAAE04B,EAAE,SAAS3yB,GAAG,OAAOwnB,EAAEnY,WAAWsjB,EAAE,EAAE3yB,IAAIwnB,EAAExnB,EAAEqP,WAAWrD,EAAE,GAAG,EAAE4mB,EAAE,SAAS5yB,EAAE/F,GAAG4tB,EAAExY,WAAWrP,EAAE/F,EAAE,EAAE87B,EAAE,WAAW3F,aAAavI,EAAE,EAAEjzB,EAAQgjD,qBAAqB,WAAW,OAAM,CAAE,EAAE9hB,EAAElhC,EAAQihE,wBAAwB,WAAW,CAAC,KAAK,CAAC,IAAI51D,EAAEyR,OAAOrC,WAAWnP,EAAEwR,OAAO0e,aAAa,GAAG,qBAAqB9wB,QAAQ,CAAC,IAAIy0C,EAC7friC,OAAOokD,qBAAqB,oBAAoBpkD,OAAOqkD,uBAAuBz2D,QAAQC,MAAM,sJAAsJ,oBAAoBw0C,GAAGz0C,QAAQC,MAAM,oJAAoJ,CAAC,IAAIs8C,GAAE,EAAGnpB,EAAE,KAAKopB,GAAG,EAAE1oB,EAAE,EAAEpsB,EAAE,EAAEpS,EAAQgjD,qBAAqB,WAAW,OAAOhjD,EAAQgwC,gBAChgB59B,CAAC,EAAE8uB,EAAE,WAAW,EAAElhC,EAAQihE,wBAAwB,SAAS71D,GAAG,EAAEA,GAAG,IAAIA,EAAEV,QAAQC,MAAM,mHAAmH6zB,EAAE,EAAEpzB,EAAE/B,KAAK+J,MAAM,IAAIhI,GAAG,CAAC,EAAE,IAAI6kC,EAAE,IAAI+wB,eAAexiB,EAAEvO,EAAEmxB,MAAMnxB,EAAEoxB,MAAMC,UAAU,WAAW,GAAG,OAAOxjC,EAAE,CAAC,IAAI1yB,EAAEpL,EAAQgwC,eAAe59B,EAAEhH,EAAEozB,EAAE,IAAIV,GAAE,EAAG1yB,GAAGozC,EAAE+iB,YAAY,OAAOta,GAAE,EAAGnpB,EAAE,KAAK,CAAC,MAAMz4B,GAAG,MAAMm5C,EAAE+iB,YAAY,MAAMl8D,CAAE,CAAC,MAAM4hD,GAAE,CAAE,EAAElpB,EAAE,SAAS3yB,GAAG0yB,EAAE1yB,EAAE67C,IAAIA,GAAE,EAAGzI,EAAE+iB,YAAY,MAAM,EAAEvjC,EAAE,SAAS5yB,EAAE/F,GAAG6hD,EACtf77C,GAAE,WAAWD,EAAEpL,EAAQgwC,eAAe,GAAE3qC,EAAE,EAAE87B,EAAE,WAAW71B,EAAE47C,GAAGA,GAAG,CAAC,CAAC,CAAC,SAAS5F,EAAEl2C,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAEjK,OAAOiK,EAAE5J,KAAK6D,GAAG+F,EAAE,OAAO,CAAC,IAAI6P,EAAEhS,EAAE,IAAI,EAAEuB,EAAEY,EAAE6P,GAAG,UAAG,IAASzQ,GAAG,EAAE+2C,EAAE/2C,EAAEnF,IAA0B,MAAM+F,EAA7BA,EAAE6P,GAAG5V,EAAE+F,EAAEnC,GAAGuB,EAAEvB,EAAEgS,CAAc,CAAC,CAAC,SAASykC,EAAEt0C,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,CAAC,CACjP,SAASu0C,EAAEv0C,GAAG,IAAI/F,EAAE+F,EAAE,GAAG,QAAG,IAAS/F,EAAE,CAAC,IAAI4D,EAAEmC,EAAEiO,MAAM,GAAGpQ,IAAI5D,EAAE,CAAC+F,EAAE,GAAGnC,EAAEmC,EAAE,IAAI,IAAI6P,EAAE,EAAEzQ,EAAEY,EAAEjK,OAAO8Z,EAAEzQ,GAAG,CAAC,IAAIvD,EAAE,GAAGgU,EAAE,GAAG,EAAEjU,EAAEoE,EAAEnE,GAAGgZ,EAAEhZ,EAAE,EAAE81B,EAAE3xB,EAAE6U,GAAG,QAAG,IAASjZ,GAAG,EAAEu6C,EAAEv6C,EAAEiC,QAAG,IAAS8zB,GAAG,EAAEwkB,EAAExkB,EAAE/1B,IAAIoE,EAAE6P,GAAG8hB,EAAE3xB,EAAE6U,GAAGhX,EAAEgS,EAAEgF,IAAI7U,EAAE6P,GAAGjU,EAAEoE,EAAEnE,GAAGgC,EAAEgS,EAAEhU,OAAQ,WAAG,IAAS81B,GAAG,EAAEwkB,EAAExkB,EAAE9zB,IAA0B,MAAMmC,EAA7BA,EAAE6P,GAAG8hB,EAAE3xB,EAAE6U,GAAGhX,EAAEgS,EAAEgF,CAAc,EAAC,CAAC,OAAO5a,CAAC,CAAC,OAAO,IAAI,CAAC,SAASk8C,EAAEn2C,EAAE/F,GAAG,IAAI4D,EAAEmC,EAAEo2D,UAAUn8D,EAAEm8D,UAAU,OAAO,IAAIv4D,EAAEA,EAAEmC,EAAEsmC,GAAGrsC,EAAEqsC,EAAE,CAAC,IAAImO,EAAE,GAAG4B,EAAE,GAAGC,EAAE,EAAE0C,EAAE,KAAK4G,EAAE,EAAEpL,GAAE,EAAGrrC,GAAE,EAAG+3C,GAAE,EACja,SAASC,EAAEnhD,GAAG,IAAI,IAAI/F,EAAEq6C,EAAE+B,GAAG,OAAOp8C,GAAG,CAAC,GAAG,OAAOA,EAAE+jB,SAASu2B,EAAE8B,OAAQ,MAAGp8C,EAAEo8D,WAAWr2D,GAAgD,MAA9Cu0C,EAAE8B,GAAGp8C,EAAEm8D,UAAUn8D,EAAEq8D,eAAepgB,EAAEzB,EAAEx6C,EAAa,CAACA,EAAEq6C,EAAE+B,EAAE,CAAC,CAAC,SAASyM,EAAE9iD,GAAa,GAAVkhD,GAAE,EAAGC,EAAEnhD,IAAOmJ,EAAE,GAAG,OAAOmrC,EAAEG,GAAGtrC,GAAE,EAAGwpB,EAAE01B,OAAO,CAAC,IAAIpuD,EAAEq6C,EAAE+B,GAAG,OAAOp8C,GAAG24B,EAAEkwB,EAAE7oD,EAAEo8D,UAAUr2D,EAAE,CAAC,CACzP,SAASqoD,EAAEroD,EAAE/F,GAAGkP,GAAE,EAAG+3C,IAAIA,GAAE,EAAGnrB,KAAKye,GAAE,EAAG,IAAI32C,EAAE+hD,EAAE,IAAS,IAALuB,EAAElnD,GAAO++C,EAAE1E,EAAEG,GAAG,OAAOuE,MAAMA,EAAEsd,eAAer8D,IAAI+F,IAAIpL,EAAQgjD,yBAAyB,CAAC,IAAI/nC,EAAEmpC,EAAEh7B,SAAS,GAAG,oBAAoBnO,EAAE,CAACmpC,EAAEh7B,SAAS,KAAK4hC,EAAE5G,EAAEud,cAAc,IAAIn3D,EAAEyQ,EAAEmpC,EAAEsd,gBAAgBr8D,GAAGA,EAAErF,EAAQgwC,eAAe,oBAAoBxlC,EAAE45C,EAAEh7B,SAAS5e,EAAE45C,IAAI1E,EAAEG,IAAIF,EAAEE,GAAG0M,EAAElnD,EAAE,MAAMs6C,EAAEE,GAAGuE,EAAE1E,EAAEG,EAAE,CAAC,GAAG,OAAOuE,EAAE,IAAIn9C,GAAE,MAAO,CAAC,IAAID,EAAE04C,EAAE+B,GAAG,OAAOz6C,GAAGg3B,EAAEkwB,EAAElnD,EAAEy6D,UAAUp8D,GAAG4B,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQm9C,EAAE,KAAK4G,EAAE/hD,EAAE22C,GAAE,CAAE,CAAC,CAAC,IAAIgU,EAAE1yB,EAAElhC,EAAQ6jD,sBAAsB,EACte7jD,EAAQujD,2BAA2B,EAAEvjD,EAAQ2jD,qBAAqB,EAAE3jD,EAAQ0uC,wBAAwB,EAAE1uC,EAAQ4hE,mBAAmB,KAAK5hE,EAAQqxC,8BAA8B,EAAErxC,EAAQ8iD,wBAAwB,SAAS13C,GAAGA,EAAEge,SAAS,IAAI,EAAEppB,EAAQ6hE,2BAA2B,WAAWttD,GAAGqrC,IAAIrrC,GAAE,EAAGwpB,EAAE01B,GAAG,EAAEzzD,EAAQqjD,iCAAiC,WAAW,OAAO2H,CAAC,EAAEhrD,EAAQ8hE,8BAA8B,WAAW,OAAOpiB,EAAEG,EAAE,EACta7/C,EAAQ+hE,cAAc,SAAS32D,GAAG,OAAO4/C,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI3lD,EAAE,EAAE,MAAM,QAAQA,EAAE2lD,EAAE,IAAI/hD,EAAE+hD,EAAEA,EAAE3lD,EAAE,IAAI,OAAO+F,GAAG,CAAC,QAAQ4/C,EAAE/hD,CAAC,CAAC,EAAEjJ,EAAQgiE,wBAAwB,WAAW,EAAEhiE,EAAQkjD,sBAAsB0Q,EAAE5zD,EAAQguC,yBAAyB,SAAS5iC,EAAE/F,GAAG,OAAO+F,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAInC,EAAE+hD,EAAEA,EAAE5/C,EAAE,IAAI,OAAO/F,GAAG,CAAC,QAAQ2lD,EAAE/hD,CAAC,CAAC,EACtWjJ,EAAQyuC,0BAA0B,SAASrjC,EAAE/F,EAAE4D,GAAG,IAAIgS,EAAEjb,EAAQgwC,eAA8F,OAA/E,kBAAkB/mC,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEg5D,QAA6B,EAAEh5D,EAAEgS,EAAEhS,EAAEgS,EAAGhS,EAAEgS,EAAS7P,GAAG,KAAK,EAAE,IAAIZ,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAA2M,OAAjMY,EAAE,CAACsmC,GAAGgQ,IAAIt4B,SAAS/jB,EAAEs8D,cAAcv2D,EAAEq2D,UAAUx4D,EAAEy4D,eAAvDl3D,EAAEvB,EAAEuB,EAAoEg3D,WAAW,GAAGv4D,EAAEgS,GAAG7P,EAAEo2D,UAAUv4D,EAAEq4C,EAAEG,EAAEr2C,GAAG,OAAOs0C,EAAEG,IAAIz0C,IAAIs0C,EAAE+B,KAAK6K,EAAEnrB,IAAImrB,GAAE,EAAGtuB,EAAEkwB,EAAEjlD,EAAEgS,MAAM7P,EAAEo2D,UAAUh3D,EAAE82C,EAAEzB,EAAEz0C,GAAGmJ,GAAGqrC,IAAIrrC,GAAE,EAAGwpB,EAAE01B,KAAYroD,CAAC,EAC3dpL,EAAQkiE,sBAAsB,SAAS92D,GAAG,IAAI/F,EAAE2lD,EAAE,OAAO,WAAW,IAAI/hD,EAAE+hD,EAAEA,EAAE3lD,EAAE,IAAI,OAAO+F,EAAElB,MAAM1D,KAAKN,UAAU,CAAC,QAAQ8kD,EAAE/hD,CAAC,CAAC,CAAC,+BChB9HlJ,EAAOC,QAAU,EAAjBD,6BCCF,IAAIoiE,EAAW,CAIfA,mBAA8B,WAC5B,OAAO94D,KAAKw1C,SAASx8C,SAAS,IAAIkG,OAAO,EAAG,GAC9C,GAGA45D,EAASC,WAAaD,EAASE,qBAG/BF,EAASG,WAAa,SAASC,GAC7B,OAAOA,EAAKp2D,OAAO0H,MAAM,MAAM2L,KAAI,SAASgjD,GAC1C,OAAOA,EAAKr2D,MACd,GACF,EAEAg2D,EAASM,cAAgB,SAASF,GAEhC,OADYA,EAAK1uD,MAAM,QACV2L,KAAI,SAASkjD,EAAMtpD,GAC9B,OAAQA,EAAQ,EAAI,KAAOspD,EAAOA,GAAMv2D,OAAS,MACnD,GACF,EAGAg2D,EAASQ,YAAc,SAASJ,EAAMK,GACpC,OAAOT,EAASG,WAAWC,GAAM5zC,QAAO,SAAS6zC,GAC/C,OAAgC,IAAzBA,EAAKxgE,QAAQ4gE,EACtB,GACF,EAKAT,EAASU,eAAiB,SAASL,GAoBjC,IAnBA,IAAInhE,EAQAyhE,EAAY,CACdC,YANA1hE,EADmC,IAAjCmhE,EAAKxgE,QAAQ,gBACPwgE,EAAK5iD,UAAU,IAAI/L,MAAM,KAEzB2uD,EAAK5iD,UAAU,IAAI/L,MAAM,MAIf,GAClBmvD,UAAW3hE,EAAM,GACjB4hE,SAAU5hE,EAAM,GAAGiF,cACnB2nC,SAAU3lC,SAASjH,EAAM,GAAI,IAC7B6hE,GAAI7hE,EAAM,GACV8hE,KAAM76D,SAASjH,EAAM,GAAI,IAEzBoE,KAAMpE,EAAM,IAGLZ,EAAI,EAAGA,EAAIY,EAAMF,OAAQV,GAAK,EACrC,OAAQY,EAAMZ,IACZ,IAAK,QACHqiE,EAAUM,eAAiB/hE,EAAMZ,EAAI,GACrC,MACF,IAAK,QACHqiE,EAAUO,YAAc/6D,SAASjH,EAAMZ,EAAI,GAAI,IAC/C,MACF,IAAK,UACHqiE,EAAUQ,QAAUjiE,EAAMZ,EAAI,GAC9B,MACF,QACEqiE,EAAUzhE,EAAMZ,IAAMY,EAAMZ,EAAI,GAItC,OAAOqiE,CACT,EAGAX,EAASoB,eAAiB,SAAST,GACjC,IAAIU,EAAM,GACVA,EAAIhiE,KAAKshE,EAAUC,YACnBS,EAAIhiE,KAAKshE,EAAUE,WACnBQ,EAAIhiE,KAAKshE,EAAUG,SAAStkC,eAC5B6kC,EAAIhiE,KAAKshE,EAAU70B,UACnBu1B,EAAIhiE,KAAKshE,EAAUI,IACnBM,EAAIhiE,KAAKshE,EAAUK,MAEnB,IAAI19D,EAAOq9D,EAAUr9D,KAcrB,OAbA+9D,EAAIhiE,KAAK,OACTgiE,EAAIhiE,KAAKiE,GACI,SAATA,GAAmBq9D,EAAUM,gBAC7BN,EAAUO,cACZG,EAAIhiE,KAAK,SACTgiE,EAAIhiE,KAAKshE,EAAUM,gBACnBI,EAAIhiE,KAAK,SACTgiE,EAAIhiE,KAAKshE,EAAUO,cAEjBP,EAAUQ,SAAgD,QAArCR,EAAUG,SAAS38D,gBAC1Ck9D,EAAIhiE,KAAK,WACTgiE,EAAIhiE,KAAKshE,EAAUQ,UAEd,aAAeE,EAAI7hE,KAAK,IACjC,EAIAwgE,EAASsB,gBAAkB,SAASjB,GAClC,OAAOA,EAAKj6D,OAAO,IAAIsL,MAAM,IAC/B,EAIAsuD,EAASuB,YAAc,SAASlB,GAC9B,IAAInhE,EAAQmhE,EAAKj6D,OAAO,GAAGsL,MAAM,KAC7BxL,EAAS,CACXs7D,YAAar7D,SAASjH,EAAM8X,QAAS,KASvC,OANA9X,EAAQA,EAAM,GAAGwS,MAAM,KAEvBxL,EAAOuK,KAAOvR,EAAM,GACpBgH,EAAOu7D,UAAYt7D,SAASjH,EAAM,GAAI,IAEtCgH,EAAOw7D,YAA+B,IAAjBxiE,EAAMF,OAAemH,SAASjH,EAAM,GAAI,IAAM,EAC5DgH,CACT,EAIA85D,EAAS2B,YAAc,SAASC,GAC9B,IAAIC,EAAKD,EAAMJ,YAIf,YAHmCpgE,IAA/BwgE,EAAME,uBACRD,EAAKD,EAAME,sBAEN,YAAcD,EAAK,IAAMD,EAAMnxD,KAAO,IAAMmxD,EAAMH,WAC9B,IAAtBG,EAAMF,YAAoB,IAAME,EAAMF,YAAc,IAAM,MACjE,EAKA1B,EAAS+B,YAAc,SAAS1B,GAC9B,IAAInhE,EAAQmhE,EAAKj6D,OAAO,GAAGsL,MAAM,KACjC,MAAO,CACL69B,GAAIppC,SAASjH,EAAM,GAAI,IACvB8iE,UAAW9iE,EAAM,GAAGW,QAAQ,KAAO,EAAIX,EAAM,GAAGwS,MAAM,KAAK,GAAK,WAChEuwD,IAAK/iE,EAAM,GAEf,EAIA8gE,EAASkC,YAAc,SAASC,GAC9B,MAAO,aAAeA,EAAgB5yB,IAAM4yB,EAAgBC,cACvDD,EAAgBH,WAA2C,aAA9BG,EAAgBH,UACxC,IAAMG,EAAgBH,UACtB,IACN,IAAMG,EAAgBF,IAAM,MAClC,EAKAjC,EAASqC,UAAY,SAAShC,GAI5B,IAHA,IACIiC,EADAp8D,EAAS,CAAC,EAEVhH,EAAQmhE,EAAKj6D,OAAOi6D,EAAKxgE,QAAQ,KAAO,GAAG6R,MAAM,KAC5C9L,EAAI,EAAGA,EAAI1G,EAAMF,OAAQ4G,IAEhCM,GADAo8D,EAAKpjE,EAAM0G,GAAGoE,OAAO0H,MAAM,MACjB,GAAG1H,QAAUs4D,EAAG,GAE5B,OAAOp8D,CACT,EAGA85D,EAASuC,UAAY,SAASX,GAC5B,IAAIvB,EAAO,GACPwB,EAAKD,EAAMJ,YAIf,QAHmCpgE,IAA/BwgE,EAAME,uBACRD,EAAKD,EAAME,sBAETF,EAAMY,YAAcriE,OAAOoX,KAAKqqD,EAAMY,YAAYxjE,OAAQ,CAC5D,IAAI4xB,EAAS,GACbzwB,OAAOoX,KAAKqqD,EAAMY,YAAY51C,SAAQ,SAASqa,GAC7CrW,EAAOvxB,KAAK4nC,EAAQ,IAAM26B,EAAMY,WAAWv7B,GAC7C,IACAo5B,GAAQ,UAAYwB,EAAK,IAAMjxC,EAAOpxB,KAAK,KAAO,MACpD,CACA,OAAO6gE,CACT,EAIAL,EAASyC,YAAc,SAASpC,GAC9B,IAAInhE,EAAQmhE,EAAKj6D,OAAOi6D,EAAKxgE,QAAQ,KAAO,GAAG6R,MAAM,KACrD,MAAO,CACLpO,KAAMpE,EAAM8X,QACZ0rD,UAAWxjE,EAAMM,KAAK,KAE1B,EAEAwgE,EAAS2C,YAAc,SAASf,GAC9B,IAAIgB,EAAQ,GACRf,EAAKD,EAAMJ,YAYf,YAXmCpgE,IAA/BwgE,EAAME,uBACRD,EAAKD,EAAME,sBAETF,EAAMiB,cAAgBjB,EAAMiB,aAAa7jE,QAE3C4iE,EAAMiB,aAAaj2C,SAAQ,SAAS4U,GAClCohC,GAAS,aAAef,EAAK,IAAMrgC,EAAGl+B,MACrCk+B,EAAGkhC,WAAalhC,EAAGkhC,UAAU1jE,OAAS,IAAMwiC,EAAGkhC,UAAY,IACxD,MACN,IAEKE,CACT,EAIA5C,EAAS8C,eAAiB,SAASzC,GACjC,IAAI0C,EAAK1C,EAAKxgE,QAAQ,KAClBX,EAAQ,CACV8jE,KAAM78D,SAASk6D,EAAKj6D,OAAO,EAAG28D,EAAK,GAAI,KAErCE,EAAQ5C,EAAKxgE,QAAQ,IAAKkjE,GAO9B,OANIE,GAAS,GACX/jE,EAAMgkE,UAAY7C,EAAKj6D,OAAO28D,EAAK,EAAGE,EAAQF,EAAK,GACnD7jE,EAAMwB,MAAQ2/D,EAAKj6D,OAAO68D,EAAQ,IAElC/jE,EAAMgkE,UAAY7C,EAAKj6D,OAAO28D,EAAK,GAE9B7jE,CACT,EAIA8gE,EAASmD,OAAS,SAASC,GACzB,IAAIC,EAAMrD,EAASQ,YAAY4C,EAAc,UAAU,GACvD,GAAIC,EACF,OAAOA,EAAIj9D,OAAO,EAEtB,EAEA45D,EAASsD,iBAAmB,SAASjD,GACnC,IAAInhE,EAAQmhE,EAAKj6D,OAAO,IAAIsL,MAAM,KAClC,MAAO,CACL6xD,UAAWrkE,EAAM,GAAGiF,cACpBzD,MAAOxB,EAAM,GAEjB,EAKA8gE,EAASwD,kBAAoB,SAASJ,EAAcK,GAKlD,MAAO,CACLC,KAAM,OACNC,aANU3D,EAASQ,YAAY4C,EAAeK,EAC5C,kBAKkBpmD,IAAI2iD,EAASsD,kBAErC,EAGAtD,EAAS4D,oBAAsB,SAAShzC,EAAQizC,GAC9C,IAAIxC,EAAM,WAAawC,EAAY,OAInC,OAHAjzC,EAAO+yC,aAAa/2C,SAAQ,SAASk3C,GACnCzC,GAAO,iBAAmByC,EAAGP,UAAY,IAAMO,EAAGpjE,MAAQ,MAC5D,IACO2gE,CACT,EAIArB,EAAS+D,iBAAmB,SAASX,EAAcK,GACjD,IAAIb,EAAQ5C,EAASG,WAAWiD,GAWhC,MARoB,CAClBY,kBAFFpB,EAAQA,EAAMx5D,OAAO42D,EAASG,WAAWsD,KAEfj3C,QAAO,SAAS6zC,GACtC,OAAwC,IAAjCA,EAAKxgE,QAAQ,eACtB,IAAG,GAAGuG,OAAO,IACbgyC,SAAUwqB,EAAMp2C,QAAO,SAAS6zC,GAC9B,OAAsC,IAA/BA,EAAKxgE,QAAQ,aACtB,IAAG,GAAGuG,OAAO,IAGjB,EAGA45D,EAASiE,mBAAqB,SAASrzC,GACrC,MAAO,eAAiBA,EAAOozC,iBAAxB,iBACYpzC,EAAOwnB,SAAW,MACvC,EAGA4nB,EAASkE,mBAAqB,SAASd,GASrC,IARA,IAAIe,EAAc,CAChBC,OAAQ,GACRC,iBAAkB,GAClBC,cAAe,GACfC,KAAM,IAGJC,EADQxE,EAASG,WAAWiD,GACd,GAAG1xD,MAAM,KAClBpT,EAAI,EAAGA,EAAIkmE,EAAMxlE,OAAQV,IAAK,CACrC,IAAIujE,EAAK2C,EAAMlmE,GACXmmE,EAAazE,EAASQ,YACtB4C,EAAc,YAAcvB,EAAK,KAAK,GAC1C,GAAI4C,EAAY,CACd,IAAI7C,EAAQ5B,EAASuB,YAAYkD,GAC7BC,EAAQ1E,EAASQ,YACjB4C,EAAc,UAAYvB,EAAK,KAQnC,OANAD,EAAMY,WAAakC,EAAM1lE,OAASghE,EAASqC,UAAUqC,EAAM,IAAM,CAAC,EAClE9C,EAAMiB,aAAe7C,EAASQ,YAC1B4C,EAAc,aAAevB,EAAK,KACnCxkD,IAAI2iD,EAASyC,aAChB0B,EAAYC,OAAO/kE,KAAKuiE,GAEhBA,EAAMnxD,KAAK+rB,eACjB,IAAK,MACL,IAAK,SACH2nC,EAAYG,cAAcjlE,KAAKuiE,EAAMnxD,KAAK+rB,eAKhD,CACF,CAKA,OAJAwjC,EAASQ,YAAY4C,EAAc,aAAax2C,SAAQ,SAASyzC,GAC/D8D,EAAYE,iBAAiBhlE,KAAK2gE,EAAS+B,YAAY1B,GACzD,IAEO8D,CACT,EAIAnE,EAAS2E,oBAAsB,SAASC,EAAMC,GAC5C,IAAIxD,EAAM,GAGVA,GAAO,KAAOuD,EAAO,IACrBvD,GAAOwD,EAAKT,OAAOplE,OAAS,EAAI,IAAM,IACtCqiE,GAAO,sBACPA,GAAOwD,EAAKT,OAAO/mD,KAAI,SAASukD,GAC9B,YAAmCxgE,IAA/BwgE,EAAME,qBACDF,EAAME,qBAERF,EAAMJ,WACf,IAAGhiE,KAAK,KAAO,OAEf6hE,GAAO,uBACPA,GAAO,8BAGPwD,EAAKT,OAAOx3C,SAAQ,SAASg1C,GAC3BP,GAAOrB,EAAS2B,YAAYC,GAC5BP,GAAOrB,EAASuC,UAAUX,GAC1BP,GAAOrB,EAAS2C,YAAYf,EAC9B,IACA,IAAIkD,EAAW,EAef,OAdAD,EAAKT,OAAOx3C,SAAQ,SAASg1C,GACvBA,EAAMkD,SAAWA,IACnBA,EAAWlD,EAAMkD,SAErB,IACIA,EAAW,IACbzD,GAAO,cAAgByD,EAAW,QAEpCzD,GAAO,iBAEPwD,EAAKR,iBAAiBz3C,SAAQ,SAASm4C,GACrC1D,GAAOrB,EAASkC,YAAY6C,EAC9B,IAEO1D,CACT,EAIArB,EAASgF,2BAA6B,SAAS5B,GAC7C,IAcI6B,EAdAC,EAAqB,GACrBf,EAAcnE,EAASkE,mBAAmBd,GAC1C+B,GAAuD,IAA9ChB,EAAYG,cAAczkE,QAAQ,OAC3CulE,GAA6D,IAAjDjB,EAAYG,cAAczkE,QAAQ,UAG9CwlE,EAAQrF,EAASQ,YAAY4C,EAAc,WAC9C/lD,KAAI,SAASgjD,GACZ,OAAOL,EAAS8C,eAAezC,EACjC,IACC7zC,QAAO,SAASttB,GACf,MAA2B,UAApBA,EAAMgkE,SACf,IACIoC,EAAcD,EAAMrmE,OAAS,GAAKqmE,EAAM,GAAGrC,KAG3CuC,EAAQvF,EAASQ,YAAY4C,EAAc,oBAC9C/lD,KAAI,SAASgjD,GACZ,IAAInhE,EAAQmhE,EAAK3uD,MAAM,KAEvB,OADAxS,EAAM8X,QACC9X,EAAMme,KAAI,SAASkjD,GACxB,OAAOp6D,SAASo6D,EAAM,GACxB,GACF,IACIgF,EAAMvmE,OAAS,GAAKumE,EAAM,GAAGvmE,OAAS,GAAKumE,EAAM,GAAG,KAAOD,IAC7DL,EAAgBM,EAAM,GAAG,IAG3BpB,EAAYC,OAAOx3C,SAAQ,SAASg1C,GAClC,GAAiC,QAA7BA,EAAMnxD,KAAK+rB,eAA2BolC,EAAMY,WAAWgD,IAAK,CAC9D,IAAIC,EAAW,CACbzC,KAAMsC,EACNI,iBAAkBv/D,SAASy7D,EAAMY,WAAWgD,IAAK,IACjDG,IAAK,CACH3C,KAAMiC,IAGVC,EAAmB7lE,KAAKomE,GACpBN,KACFM,EAAWpL,KAAKuL,MAAMvL,KAAKC,UAAUmL,KAC5BI,IAAM,CACb7C,KAAMiC,EACNa,UAAWV,EAAY,aAAe,OAExCF,EAAmB7lE,KAAKomE,GAE5B,CACF,IACkC,IAA9BP,EAAmBlmE,QAAgBsmE,GACrCJ,EAAmB7lE,KAAK,CACtB2jE,KAAMsC,IAKV,IAAIS,EAAY/F,EAASQ,YAAY4C,EAAc,MAWnD,OAVI2C,EAAU/mE,SAC4B,IAApC+mE,EAAU,GAAGlmE,QAAQ,WACvBkmE,EAAY5/D,SAAS4/D,EAAU,GAAG3/D,OAAO,GAAI,IACF,IAAlC2/D,EAAU,GAAGlmE,QAAQ,WAC9BkmE,EAAY5/D,SAAS4/D,EAAU,GAAG3/D,OAAO,GAAI,KAE/C8+D,EAAmBt4C,SAAQ,SAASgE,GAClCA,EAAOo1C,WAAaD,CACtB,KAEKb,CACT,EAGAlF,EAASiG,oBAAsB,SAAS7C,GACtC,IAAI8C,EAAiB,CAAC,EAKlBC,EAAanG,EAASQ,YAAY4C,EAAc,WAC/C/lD,KAAI,SAASgjD,GACZ,OAAOL,EAAS8C,eAAezC,EACjC,IACC7zC,QAAO,SAASxrB,GACf,MAAyB,UAAlBA,EAAIkiE,SACb,IAAG,GACHiD,IACFD,EAAeE,MAAQD,EAAWzlE,MAClCwlE,EAAelD,KAAOmD,EAAWnD,MAKnC,IAAIqD,EAAQrG,EAASQ,YAAY4C,EAAc,gBAC/C8C,EAAeI,YAAcD,EAAMrnE,OAAS,EAC5CknE,EAAeK,SAA4B,IAAjBF,EAAMrnE,OAIhC,IAAIwnE,EAAMxG,EAASQ,YAAY4C,EAAc,cAG7C,OAFA8C,EAAeM,IAAMA,EAAIxnE,OAAS,EAE3BknE,CACT,EAIAlG,EAASyG,UAAY,SAASrD,GAC5B,IAAIlkE,EACAwnE,EAAO1G,EAASQ,YAAY4C,EAAc,WAC9C,GAAoB,IAAhBsD,EAAK1nE,OAEP,MAAO,CAACoZ,QADRlZ,EAAQwnE,EAAK,GAAGtgE,OAAO,GAAGsL,MAAM,MACV,GAAIw1B,MAAOhoC,EAAM,IAEzC,IAAIynE,EAAQ3G,EAASQ,YAAY4C,EAAc,WAC9C/lD,KAAI,SAASgjD,GACZ,OAAOL,EAAS8C,eAAezC,EACjC,IACC7zC,QAAO,SAASttB,GACf,MAA2B,SAApBA,EAAMgkE,SACf,IACA,OAAIyD,EAAM3nE,OAAS,EAEV,CAACoZ,QADRlZ,EAAQynE,EAAM,GAAGjmE,MAAMgR,MAAM,MACP,GAAIw1B,MAAOhoC,EAAM,SAFzC,CAIF,EAEA8gE,EAAS4G,wBAA0B,WAEjC,MAAO,uFAIT,EAEA5G,EAAS6G,kBAAoB,SAASC,EAAajC,EAAMvhE,EAAM8U,GAC7D,IAAIipD,EAAMrB,EAAS2E,oBAAoBmC,EAAYlC,KAAMC,GAyBzD,GAtBAxD,GAAOrB,EAASiE,mBACZ6C,EAAYC,YAAYC,sBAG5B3F,GAAOrB,EAAS4D,oBACZkD,EAAYG,cAAcD,qBACjB,UAAT1jE,EAAmB,UAAY,UAEnC+9D,GAAO,SAAWyF,EAAYzD,IAAM,OAEhCyD,EAAY9E,UACdX,GAAO,KAAOyF,EAAY9E,UAAY,OAC7B8E,EAAYI,WAAaJ,EAAYK,YAC9C9F,GAAO,iBACEyF,EAAYI,UACrB7F,GAAO,iBACEyF,EAAYK,YACrB9F,GAAO,iBAEPA,GAAO,iBAGLyF,EAAYI,UAAW,CAEzB,IAAIE,EAAO,QAAUhvD,EAAOm3B,GAAK,IAC7Bu3B,EAAYI,UAAUhgC,MAAMqI,GAAK,OACrC8xB,GAAO,KAAO+F,EAGd/F,GAAO,UAAYyF,EAAYO,uBAAuB,GAAGrE,KACrD,IAAMoE,EACNN,EAAYO,uBAAuB,GAAG1B,MACxCtE,GAAO,UAAYyF,EAAYO,uBAAuB,GAAG1B,IAAI3C,KACzD,IAAMoE,EACV/F,GAAO,oBACHyF,EAAYO,uBAAuB,GAAGrE,KAAO,IAC7C8D,EAAYO,uBAAuB,GAAG1B,IAAI3C,KAC1C,OAER,CAQA,OANA3B,GAAO,UAAYyF,EAAYO,uBAAuB,GAAGrE,KACrD,UAAYhD,EAASC,WAAa,OAClC6G,EAAYI,WAAaJ,EAAYO,uBAAuB,GAAG1B,MACjEtE,GAAO,UAAYyF,EAAYO,uBAAuB,GAAG1B,IAAI3C,KACzD,UAAYhD,EAASC,WAAa,QAEjCoB,CACT,EAGArB,EAASsH,aAAe,SAASlE,EAAcK,GAG7C,IADA,IAAIb,EAAQ5C,EAASG,WAAWiD,GACvB9kE,EAAI,EAAGA,EAAIskE,EAAM5jE,OAAQV,IAChC,OAAQskE,EAAMtkE,IACZ,IAAK,aACL,IAAK,aACL,IAAK,aACL,IAAK,aACH,OAAOskE,EAAMtkE,GAAG8H,OAAO,GAK7B,OAAIq9D,EACKzD,EAASsH,aAAa7D,GAExB,UACT,EAEAzD,EAASuH,QAAU,SAASnE,GAG1B,OAFYpD,EAASG,WAAWiD,GACd,GAAG1xD,MAAM,KACd,GAAGtL,OAAO,EACzB,EAEA45D,EAASwH,WAAa,SAASpE,GAC7B,MAAyC,MAAlCA,EAAa1xD,MAAM,IAAK,GAAG,EACpC,EAGA9T,EAAOC,QAAUmiE,+BCpkBjB,IAAI1/D,EAASqB,EAAAA,MAAAA,OAGTH,EAAalB,EAAOkB,YAAc,SAAUD,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAAS4C,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,EAEb,EA0CA,SAASsb,EAAcle,GAErB,IAAIqsB,EACJ,OAFAvpB,KAAK9C,SAXP,SAA2BghB,GACzB,IAAIklD,EA/BN,SAA4BllD,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAImlD,IAEF,OAAQnlD,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAImlD,EAAS,OACbnlD,GAAO,GAAKA,GAAKpe,cACjBujE,GAAU,EAGlB,CAKaC,CAAmBplD,GAC9B,GAAoB,kBAATklD,IAAsBnnE,EAAOkB,aAAeA,IAAeA,EAAW+gB,IAAO,MAAM,IAAI3iB,MAAM,qBAAuB2iB,GAC/H,OAAOklD,GAAQllD,CACjB,CAOkBqlD,CAAkBrmE,GAE1B8C,KAAK9C,UACX,IAAK,UACH8C,KAAKi0C,KAAOuvB,EACZxjE,KAAKtE,IAAM+nE,EACXl6C,EAAK,EACL,MACF,IAAK,OACHvpB,KAAK0jE,SAAWC,EAChBp6C,EAAK,EACL,MACF,IAAK,SACHvpB,KAAKi0C,KAAO2vB,EACZ5jE,KAAKtE,IAAMmoE,EACXt6C,EAAK,EACL,MACF,QAGE,OAFAvpB,KAAK9B,MAAQ4lE,OACb9jE,KAAKtE,IAAMqoE,GAGf/jE,KAAKgkE,SAAW,EAChBhkE,KAAKikE,UAAY,EACjBjkE,KAAKkkE,SAAWjoE,EAAOE,YAAYotB,EACrC,CAmCA,SAAS46C,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,IAAM,EAAa,EAAWA,GAAQ,IAAM,GAAa,EAAWA,GAAQ,IAAM,GAAa,EACpIA,GAAQ,IAAM,GAAQ,GAAK,CACpC,CA0DA,SAAST,EAAa7lE,GACpB,IAAIwX,EAAItV,KAAKikE,UAAYjkE,KAAKgkE,SAC1BztC,EAtBN,SAA6Bnc,EAAMtc,EAAKwX,GACtC,GAAwB,OAAV,IAATxX,EAAI,IAEP,OADAsc,EAAK4pD,SAAW,EACT,SAET,GAAI5pD,EAAK4pD,SAAW,GAAKlmE,EAAInD,OAAS,EAAG,CACvC,GAAwB,OAAV,IAATmD,EAAI,IAEP,OADAsc,EAAK4pD,SAAW,EACT,SAET,GAAI5pD,EAAK4pD,SAAW,GAAKlmE,EAAInD,OAAS,GACZ,OAAV,IAATmD,EAAI,IAEP,OADAsc,EAAK4pD,SAAW,EACT,QAGb,CACF,CAKUK,CAAoBrkE,KAAMlC,GAClC,YAAUf,IAANw5B,EAAwBA,EACxBv2B,KAAKgkE,UAAYlmE,EAAInD,QACvBmD,EAAIS,KAAKyB,KAAKkkE,SAAU5uD,EAAG,EAAGtV,KAAKgkE,UAC5BhkE,KAAKkkE,SAASroE,SAASmE,KAAK9C,SAAU,EAAG8C,KAAKikE,aAEvDnmE,EAAIS,KAAKyB,KAAKkkE,SAAU5uD,EAAG,EAAGxX,EAAInD,aAClCqF,KAAKgkE,UAAYlmE,EAAInD,QACvB,CA0BA,SAAS6oE,EAAU1lE,EAAK7D,GACtB,IAAK6D,EAAInD,OAASV,GAAK,IAAM,EAAG,CAC9B,IAAIs8B,EAAIz4B,EAAIjC,SAAS,UAAW5B,GAChC,GAAIs8B,EAAG,CACL,IAAI9zB,EAAI8zB,EAAE/7B,WAAW+7B,EAAE57B,OAAS,GAChC,GAAI8H,GAAK,OAAUA,GAAK,MAKtB,OAJAzC,KAAKgkE,SAAW,EAChBhkE,KAAKikE,UAAY,EACjBjkE,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,GACpCqF,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,GAC7B47B,EAAE75B,MAAM,GAAI,EAEvB,CACA,OAAO65B,CACT,CAIA,OAHAv2B,KAAKgkE,SAAW,EAChBhkE,KAAKikE,UAAY,EACjBjkE,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,GAC7BmD,EAAIjC,SAAS,UAAW5B,EAAG6D,EAAInD,OAAS,EACjD,CAIA,SAAS8oE,EAAS3lE,GAChB,IAAIy4B,EAAIz4B,GAAOA,EAAInD,OAASqF,KAAK9B,MAAMJ,GAAO,GAC9C,GAAIkC,KAAKgkE,SAAU,CACjB,IAAItoE,EAAMsE,KAAKikE,UAAYjkE,KAAKgkE,SAChC,OAAOztC,EAAIv2B,KAAKkkE,SAASroE,SAAS,UAAW,EAAGH,EAClD,CACA,OAAO66B,CACT,CAEA,SAASqtC,EAAW9lE,EAAK7D,GACvB,IAAIuG,GAAK1C,EAAInD,OAASV,GAAK,EAC3B,OAAU,IAANuG,EAAgB1C,EAAIjC,SAAS,SAAU5B,IAC3C+F,KAAKgkE,SAAW,EAAIxjE,EACpBR,KAAKikE,UAAY,EACP,IAANzjE,EACFR,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,IAEpCqF,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,GACpCqF,KAAKkkE,SAAS,GAAKpmE,EAAIA,EAAInD,OAAS,IAE/BmD,EAAIjC,SAAS,SAAU5B,EAAG6D,EAAInD,OAAS6F,GAChD,CAEA,SAASqjE,EAAU/lE,GACjB,IAAIy4B,EAAIz4B,GAAOA,EAAInD,OAASqF,KAAK9B,MAAMJ,GAAO,GAC9C,OAAIkC,KAAKgkE,SAAiBztC,EAAIv2B,KAAKkkE,SAASroE,SAAS,SAAU,EAAG,EAAImE,KAAKgkE,UACpEztC,CACT,CAGA,SAASutC,EAAYhmE,GACnB,OAAOA,EAAIjC,SAASmE,KAAK9C,SAC3B,CAEA,SAAS6mE,EAAUjmE,GACjB,OAAOA,GAAOA,EAAInD,OAASqF,KAAK9B,MAAMJ,GAAO,EAC/C,CA1NAtE,EAAQ,EAAgB4hB,EA6BxBA,EAAcrf,UAAUmC,MAAQ,SAAUJ,GACxC,GAAmB,IAAfA,EAAInD,OAAc,MAAO,GAC7B,IAAI47B,EACAt8B,EACJ,GAAI+F,KAAKgkE,SAAU,CAEjB,QAAUjnE,KADVw5B,EAAIv2B,KAAK0jE,SAAS5lE,IACG,MAAO,GAC5B7D,EAAI+F,KAAKgkE,SACThkE,KAAKgkE,SAAW,CAClB,MACE/pE,EAAI,EAEN,OAAIA,EAAI6D,EAAInD,OAAe47B,EAAIA,EAAIv2B,KAAKi0C,KAAKn2C,EAAK7D,GAAK+F,KAAKi0C,KAAKn2C,EAAK7D,GAC/Ds8B,GAAK,EACd,EAEAnb,EAAcrf,UAAUL,IAwGxB,SAAiBoC,GACf,IAAIy4B,EAAIz4B,GAAOA,EAAInD,OAASqF,KAAK9B,MAAMJ,GAAO,GAC9C,OAAIkC,KAAKgkE,SAAiBztC,EAAI,SACvBA,CACT,EAzGAnb,EAAcrf,UAAUk4C,KA0FxB,SAAkBn2C,EAAK7D,GACrB,IAAIqqE,EArEN,SAA6BlqD,EAAMtc,EAAK7D,GACtC,IAAIsH,EAAIzD,EAAInD,OAAS,EACrB,GAAI4G,EAAItH,EAAG,OAAO,EAClB,IAAIsvB,EAAK46C,EAAcrmE,EAAIyD,IAC3B,GAAIgoB,GAAM,EAER,OADIA,EAAK,IAAGnP,EAAK4pD,SAAWz6C,EAAK,GAC1BA,EAET,KAAMhoB,EAAItH,IAAa,IAARsvB,EAAW,OAAO,EAEjC,GADAA,EAAK46C,EAAcrmE,EAAIyD,IACnBgoB,GAAM,EAER,OADIA,EAAK,IAAGnP,EAAK4pD,SAAWz6C,EAAK,GAC1BA,EAET,KAAMhoB,EAAItH,IAAa,IAARsvB,EAAW,OAAO,EAEjC,GADAA,EAAK46C,EAAcrmE,EAAIyD,IACnBgoB,GAAM,EAIR,OAHIA,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAOnP,EAAK4pD,SAAWz6C,EAAK,GAE1CA,EAET,OAAO,CACT,CA8Ccg7C,CAAoBvkE,KAAMlC,EAAK7D,GAC3C,IAAK+F,KAAKgkE,SAAU,OAAOlmE,EAAIjC,SAAS,OAAQ5B,GAChD+F,KAAKikE,UAAYK,EACjB,IAAI5oE,EAAMoC,EAAInD,QAAU2pE,EAAQtkE,KAAKgkE,UAErC,OADAlmE,EAAIS,KAAKyB,KAAKkkE,SAAU,EAAGxoE,GACpBoC,EAAIjC,SAAS,OAAQ5B,EAAGyB,EACjC,EA9FA0f,EAAcrf,UAAU2nE,SAAW,SAAU5lE,GAC3C,GAAIkC,KAAKgkE,UAAYlmE,EAAInD,OAEvB,OADAmD,EAAIS,KAAKyB,KAAKkkE,SAAUlkE,KAAKikE,UAAYjkE,KAAKgkE,SAAU,EAAGhkE,KAAKgkE,UACzDhkE,KAAKkkE,SAASroE,SAASmE,KAAK9C,SAAU,EAAG8C,KAAKikE,WAEvDnmE,EAAIS,KAAKyB,KAAKkkE,SAAUlkE,KAAKikE,UAAYjkE,KAAKgkE,SAAU,EAAGlmE,EAAInD,QAC/DqF,KAAKgkE,UAAYlmE,EAAInD,MACvB,kBC/EA,SAASmzB,EAAQ1hB,GAEf,IACE,IAAK4O,EAAAA,EAAOwpD,aAAc,OAAO,CACnC,CAAE,MAAO5+C,GACP,OAAO,CACT,CACA,IAAIjlB,EAAMqa,EAAAA,EAAOwpD,aAAap4D,GAC9B,OAAI,MAAQzL,GACyB,SAA9BO,OAAOP,GAAKb,aACrB,CA7DAvG,EAAOC,QAoBP,SAAoBoU,EAAId,GACtB,GAAIghB,EAAO,iBACT,OAAOlgB,EAGT,IAAI+C,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAImd,EAAO,oBACT,MAAM,IAAIvyB,MAAMuR,GACPghB,EAAO,oBAChB5pB,QAAQugE,MAAM33D,GAEd5I,QAAQ4M,KAAKhE,GAEf6D,GAAS,CACX,CACA,OAAO/C,EAAGlK,MAAM1D,KAAMN,UACxB,CAGF,gCClCA,WAEE,IAAIglE,EAAUpnE,EAAAA,MAAAA,IACVqnE,EAAiBrnE,EAAAA,MAAAA,eAErB/D,EAAOC,QAAQmrE,eAAiBA,EAChCprE,EAAOC,QAAQorE,eAAiB,EAAhCrrE,MAAAA,eACAA,EAAOC,QAAQqrE,WAAa,EAA5BtrE,MAAAA,WASA,IAAIurE,EAAaxnE,EAAQ,MAA2B,KAChDynE,EAAWznE,EAAQ,OAAuB,KAC1C0nE,EAAc1nE,EAAQ,OAA6B,KACnD2nE,EAAa3nE,EAAQ,OAA2B,KAGpD,OAAQqnE,EAAe9uC,SACrB,IAAK,QACL,IAAK,SACH,IAAKivC,IAAeA,EAAWI,mBAE7B,YADAR,EAAQ,wDAGVA,EAAQ,+BAERnrE,EAAOC,QAAQ2rE,YAAcL,EAE7BA,EAAWM,mBACXN,EAAWO,kBACXP,EAAWQ,mBACXR,EAAWI,qBACXJ,EAAWS,cACX,MACF,IAAK,UACH,IAAKP,IAAgBA,EAAYE,mBAE/B,YADAR,EAAQ,yDAGVA,EAAQ,gCAERnrE,EAAOC,QAAQ2rE,YAAcH,EAE7BA,EAAYI,mBACZJ,EAAYM,mBACZN,EAAYE,qBACZF,EAAYO,cACZ,MACF,IAAK,OACH,IAAKR,IAAaA,EAASG,mBAEzB,YADAR,EAAQ,yDAGVA,EAAQ,6BAERnrE,EAAOC,QAAQ2rE,YAAcJ,EAE7BA,EAASK,mBACTL,EAASG,qBACT,MACF,IAAK,SACH,IAAKD,EAEH,YADAP,EAAQ,wDAGVA,EAAQ,+BAERnrE,EAAOC,QAAQ2rE,YAAcF,EAE7BA,EAAWG,mBACX,MACF,QACEV,EAAQ,wBAEb,CA/ED,+BCFA,IAAIA,EAAUpnE,EAAAA,MAAAA,IACVqnE,EAAiBrnE,EAAAA,MAAAA,eAEjBwnE,EAAa,CACfO,gBAAiB,WACf/uD,OAAOkvD,YAAclvD,OAAOkvD,aAAelvD,OAAOmvD,iBACpD,EAEAF,YAAa,WACW,kBAAXjvD,QAAuBA,OAAOovD,qBAAuB,YAC5DpvD,OAAOovD,kBAAkB3pE,YAC3BD,OAAOsI,eAAekS,OAAOovD,kBAAkB3pE,UAAW,UAAW,CACnEuI,IAAK,WACH,OAAOtE,KAAK2lE,QACd,EACAzgE,IAAK,SAASqyB,GACZ,IAAInd,EAAOpa,KACPA,KAAK2lE,WACP3lE,KAAK8R,oBAAoB,QAAS9R,KAAK2lE,UACvC3lE,KAAK8R,oBAAoB,YAAa9R,KAAK4lE,eAE7C5lE,KAAK4R,iBAAiB,QAAS5R,KAAK2lE,SAAWpuC,GAC/Cv3B,KAAK4R,iBAAiB,YAAa5R,KAAK4lE,aAAe,SAAS5hE,GAG9DA,EAAE+P,OAAOnC,iBAAiB,YAAY,SAASgjC,GAC7C,IAAI/zB,EAAQ,IAAIglD,MAAM,SACtBhlD,EAAMgiB,MAAQ+R,EAAG/R,MACjBhiB,EAAM3S,SAAW,CAAC20B,MAAO+R,EAAG/R,OAC5BhiB,EAAMkK,QAAU,CAAC/mB,EAAE+P,QACnBqG,EAAK0rD,cAAcjlD,EACrB,IACA7c,EAAE+P,OAAO4D,YAAY4Q,QAAQ,SAASsa,GACpC,IAAIhiB,EAAQ,IAAIglD,MAAM,SACtBhlD,EAAMgiB,MAAQA,EACdhiB,EAAM3S,SAAW,CAAC20B,MAAOA,GACzBhiB,EAAMkK,QAAU,CAAC/mB,EAAE+P,QACnB/T,KAAK8lE,cAAcjlD,EACrB,EAAExP,KAAKrR,MACT,EAAEqR,KAAKrR,MACT,GAGN,EAEAslE,iBAAkB,WACM,kBAAXhvD,QACLA,OAAOyvD,oBACP,cAAezvD,OAAOyvD,iBAAiBhqE,YAEzCD,OAAOsI,eAAekS,OAAOyvD,iBAAiBhqE,UAAW,YAAa,CACpEuI,IAAK,WACH,OAAOtE,KAAKgmE,UACd,EACA9gE,IAAK,SAAS6O,GACZ,IAAIqG,EAAOpa,KAEXA,KAAKgmE,WAAajyD,EACd/T,KAAKuN,KACP04D,IAAIC,gBAAgBlmE,KAAKuN,KAGtBwG,GAIL/T,KAAKuN,IAAM04D,IAAIE,gBAAgBpyD,GAG/BA,EAAOnC,iBAAiB,YAAY,WAC9BwI,EAAK7M,KACP04D,IAAIC,gBAAgB9rD,EAAK7M,KAE3B6M,EAAK7M,IAAM04D,IAAIE,gBAAgBpyD,EACjC,IACAA,EAAOnC,iBAAiB,eAAe,WACjCwI,EAAK7M,KACP04D,IAAIC,gBAAgB9rD,EAAK7M,KAE3B6M,EAAK7M,IAAM04D,IAAIE,gBAAgBpyD,EACjC,KAjBE/T,KAAKuN,IAAM,EAkBf,GAIR,EAEA23D,mBAAoB,WAElB5uD,OAAOovD,kBAAoB,SAASU,EAAUC,GAG5C3B,EAAQ,kBACJ0B,GAAYA,EAASE,qBACvBF,EAASG,cAAgBH,EAASE,oBAGpC,IAAI7/B,EAAK,IAAI+/B,wBAAwBJ,EAAUC,GAC3CI,EAAehgC,EAAGigC,SAASr1D,KAAKo1B,GAoEpC,OAnEAA,EAAGigC,SAAW,SAASC,EAAUC,EAAiBC,GAChD,IAAIzsD,EAAOpa,KACPmO,EAAOzO,UAIX,GAAIA,UAAU/E,OAAS,GAAyB,oBAAbgsE,EACjC,OAAOF,EAAaE,EAAUC,GAGhC,IAAIE,EAAkB,SAASC,GAC7B,IAAIC,EAAiB,CAAC,EActB,OAbcD,EAASE,SACf1+C,SAAQ,SAAS2+C,GACvB,IAAIC,EAAgB,CAClBj8B,GAAIg8B,EAAOh8B,GACXk8B,UAAWF,EAAOE,UAClBnoE,KAAMioE,EAAOjoE,MAEfioE,EAAOG,QAAQ9+C,SAAQ,SAASnc,GAC9B+6D,EAAc/6D,GAAQ86D,EAAOI,KAAKl7D,EACpC,IACA46D,EAAeG,EAAcj8B,IAAMi8B,CACrC,IAEOH,CACT,EAGIO,EAAe,SAASC,EAAOC,GACjC,IAAIzuD,EAAM,IAAIutB,IAAIzqC,OAAOoX,KAAKs0D,GAAOxuD,KAAI,SAAS/F,GAChD,MAAM,CAACA,EAAKu0D,EAAMv0D,GACpB,KAKA,OAJAw0D,EAAcA,GAAeD,EAC7B1rE,OAAOoX,KAAKu0D,GAAal/C,SAAQ,SAAStV,GACxC+F,EAAI/F,GAAOw0D,EAAYx0D,EACzB,IACO+F,CACT,EAEA,GAAItZ,UAAU/E,QAAU,EAAG,CAKzB,OAAO8rE,EAAa/iE,MAAM1D,KAAM,CAJF,SAAS+mE,GACrC54D,EAAK,GAAGo5D,EAAaT,EAAgBC,IACvC,EAGIrnE,UAAU,IAChB,CAGA,OAAO,IAAIoP,SAAQ,SAASC,EAASC,GACf,IAAhBb,EAAKxT,QAAoC,kBAAbgsE,EAC9BF,EAAa/iE,MAAM0W,EAAM,CACvB,SAAS2sD,GACPh4D,EAAQw4D,EAAaT,EAAgBC,IACvC,EAAG/3D,IAGLy3D,EAAa/iE,MAAM0W,EAAM,CACvB,SAAS2sD,GACPh4D,EAAQw4D,EAAaT,EAAgBC,GACjCA,EAASE,UACf,EAAGj4D,GAET,IAAG8E,KAAK8yD,EAAiBC,EAC3B,EAEOpgC,CACT,EACAnwB,OAAOovD,kBAAkB3pE,UAAYyqE,wBAAwBzqE,UAGzDyqE,wBAAwBkB,qBAC1B5rE,OAAOsI,eAAekS,OAAOovD,kBAAmB,sBAAuB,CACrEphE,IAAK,WACH,OAAOkiE,wBAAwBkB,mBACjC,IAIJ,CAAC,cAAe,gBAAgBn/C,SAAQ,SAAS7O,GAC/C,IAAIiuD,EAAenB,wBAAwBzqE,UAAU2d,GACrD8sD,wBAAwBzqE,UAAU2d,GAAU,WAC1C,IAAIU,EAAOpa,KACX,GAAIN,UAAU/E,OAAS,GAA2B,IAArB+E,UAAU/E,QACX,kBAAjB+E,UAAU,GAAkB,CACrC,IAAIsW,EAA4B,IAArBtW,UAAU/E,OAAe+E,UAAU,QAAK3C,EACnD,OAAO,IAAI+R,SAAQ,SAASC,EAASC,GACnC24D,EAAajkE,MAAM0W,EAAM,CAACrL,EAASC,EAAQgH,GAC7C,GACF,CACA,OAAO2xD,EAAajkE,MAAM1D,KAAMN,UAClC,CACF,IAGIilE,EAAe3uC,QAAU,IAC3B,CAAC,sBAAuB,uBAAwB,mBAC3CzN,SAAQ,SAAS7O,GAChB,IAAIiuD,EAAenB,wBAAwBzqE,UAAU2d,GACrD8sD,wBAAwBzqE,UAAU2d,GAAU,WAC1C,IAAIvL,EAAOzO,UACP0a,EAAOpa,KACP2nB,EAAU,IAAI7Y,SAAQ,SAASC,EAASC,GAC1C24D,EAAajkE,MAAM0W,EAAM,CAACjM,EAAK,GAAIY,EAASC,GAC9C,IACA,OAAIb,EAAKxT,OAAS,EACTgtB,EAEFA,EAAQ7T,MAAK,WAClB3F,EAAK,GAAGzK,MAAM,KAAM,GACtB,IACA,SAASwL,GACHf,EAAKxT,QAAU,GACjBwT,EAAK,GAAGzK,MAAM,KAAM,CAACwL,GAEzB,GACF,CACF,IAIN,CAAC,sBAAuB,uBAAwB,mBAC3CqZ,SAAQ,SAAS7O,GAChB,IAAIiuD,EAAenB,wBAAwBzqE,UAAU2d,GACrD8sD,wBAAwBzqE,UAAU2d,GAAU,WAG1C,OAFAha,UAAU,GAAK,IAAiB,oBAAXga,EACjBkuD,gBAAkBC,uBAAuBnoE,UAAU,IAChDioE,EAAajkE,MAAM1D,KAAMN,UAClC,CACF,IAGJ,IAAIooE,EACApC,kBAAkB3pE,UAAUgsE,gBAChCrC,kBAAkB3pE,UAAUgsE,gBAAkB,WAC5C,OAAKroE,UAAU,GAMRooE,EAAsBpkE,MAAM1D,KAAMN,YALnCA,UAAU,IACZA,UAAU,GAAGgE,MAAM,MAEdoL,QAAQC,UAGnB,CACF,GAKFxV,EAAOC,QAAU,CACf6rE,gBAAiBP,EAAWO,gBAC5BE,YAAaT,EAAWS,YACxBD,iBAAkBR,EAAWQ,iBAC7BJ,mBAAoBJ,EAAWI,mBAC/BE,iBAAkB9nE,EAAQ,oCC9P5B,IAAIonE,EAAUpnE,EAAAA,MAAAA,IAGd/D,EAAOC,QAAU,WACf,IAAIwuE,EAAuB,SAASvlE,GAClC,GAAiB,kBAANA,GAAkBA,EAAEwlE,WAAaxlE,EAAEylE,SAC5C,OAAOzlE,EAET,IAAI+iC,EAAK,CAAC,EA4CV,OA3CA1pC,OAAOoX,KAAKzQ,GAAG8lB,SAAQ,SAAStV,GAC9B,GAAY,YAARA,GAA6B,aAARA,GAA8B,gBAARA,EAA/C,CAGA,IAAIsjB,EAAuB,kBAAX9zB,EAAEwQ,GAAqBxQ,EAAEwQ,GAAO,CAACk1D,MAAO1lE,EAAEwQ,SAC1ClW,IAAZw5B,EAAE6xC,OAA0C,kBAAZ7xC,EAAE6xC,QACpC7xC,EAAEzzB,IAAMyzB,EAAE9wB,IAAM8wB,EAAE6xC,OAEpB,IAAIC,EAAW,SAASjM,EAAQhwD,GAC9B,OAAIgwD,EACKA,EAAShwD,EAAK21B,OAAO,GAAG5J,cAAgB/rB,EAAK1P,MAAM,GAE3C,aAAT0P,EAAuB,WAAaA,CAC9C,EACA,QAAgBrP,IAAZw5B,EAAE4xC,MAAqB,CACzB3iC,EAAG0iC,SAAW1iC,EAAG0iC,UAAY,GAC7B,IAAI1hC,EAAK,CAAC,EACa,kBAAZjQ,EAAE4xC,OACX3hC,EAAG6hC,EAAS,MAAOp1D,IAAQsjB,EAAE4xC,MAC7B3iC,EAAG0iC,SAASltE,KAAKwrC,IACjBA,EAAK,CAAC,GACH6hC,EAAS,MAAOp1D,IAAQsjB,EAAE4xC,MAC7B3iC,EAAG0iC,SAASltE,KAAKwrC,KAEjBA,EAAG6hC,EAAS,GAAIp1D,IAAQsjB,EAAE4xC,MAC1B3iC,EAAG0iC,SAASltE,KAAKwrC,GAErB,MACgBzpC,IAAZw5B,EAAE6xC,OAA0C,kBAAZ7xC,EAAE6xC,OACpC5iC,EAAGyiC,UAAYziC,EAAGyiC,WAAa,CAAC,EAChCziC,EAAGyiC,UAAUI,EAAS,GAAIp1D,IAAQsjB,EAAE6xC,OAEpC,CAAC,MAAO,OAAO7/C,SAAQ,SAAS+/C,QACfvrE,IAAXw5B,EAAE+xC,KACJ9iC,EAAGyiC,UAAYziC,EAAGyiC,WAAa,CAAC,EAChCziC,EAAGyiC,UAAUI,EAASC,EAAKr1D,IAAQsjB,EAAE+xC,GAEzC,GAlCF,CAoCF,IACI7lE,EAAE8lE,WACJ/iC,EAAG0iC,UAAY1iC,EAAG0iC,UAAY,IAAInjE,OAAOtC,EAAE8lE,WAEtC/iC,CACT,EAEIgjC,EAAmB,SAASn1D,EAAao1D,GAK3C,IAJAp1D,EAAc2iD,KAAKuL,MAAMvL,KAAKC,UAAU5iD,MACrBA,EAAYK,QAC7BL,EAAYK,MAAQs0D,EAAqB30D,EAAYK,QAEnDL,GAA4C,kBAAtBA,EAAYI,MAAoB,CAExD,IAAIi1D,EAAOr1D,EAAYI,MAAMk1D,WAG7B,IAFAD,EAAOA,IAA0B,kBAATA,EAAqBA,EAAO,CAACP,MAAOO,OAE/B,SAAfA,EAAKN,OAAmC,gBAAfM,EAAKN,OACf,SAAfM,EAAKP,OAAmC,gBAAfO,EAAKP,UACtCx0D,UAAUE,aAAa+0D,0BACvBj1D,UAAUE,aAAa+0D,0BAA0BD,qBAC9Ct1D,EAAYI,MAAMk1D,WACN,gBAAfD,EAAKN,OAA0C,gBAAfM,EAAKP,OAEvC,OAAOx0D,UAAUE,aAAag1D,mBAC7B/0D,MAAK,SAASg1D,GAIb,IAAIC,GAHJD,EAAUA,EAAQ3gD,QAAO,SAAS1T,GAChC,MAAkB,eAAXA,EAAE8rD,IACX,KACmByI,MAAK,SAASv0D,GAC/B,OAAkD,IAA3CA,EAAEw0D,MAAMnpE,cAActE,QAAQ,OACvC,KAAOstE,EAAQnuE,QAAUmuE,EAAQA,EAAQnuE,OAAS,GAOlD,OANIouE,IACF11D,EAAYI,MAAMy1D,SAAWR,EAAKN,MAAQ,CAACA,MAAOW,EAAKG,UACb,CAACf,MAAOY,EAAKG,WAEzD71D,EAAYI,MAAQu0D,EAAqB30D,EAAYI,OACrDixD,EAAQ,WAAa1O,KAAKC,UAAU5iD,IAC7Bo1D,EAAKp1D,EACd,IAGJA,EAAYI,MAAQu0D,EAAqB30D,EAAYI,MACvD,CAEA,OADAixD,EAAQ,WAAa1O,KAAKC,UAAU5iD,IAC7Bo1D,EAAKp1D,EACd,EAEI81D,EAAa,SAASnlE,GACxB,MAAO,CACLoI,KAAM,CACJg9D,sBAAuB,kBACvBC,4BAA6B,wBAC7BrlE,EAAEoI,OAASpI,EAAEoI,KACfE,QAAStI,EAAEsI,QACXg9D,WAAYtlE,EAAEulE,eACd1tE,SAAU,WACR,OAAOmE,KAAKoM,MAAQpM,KAAKsM,SAAW,MAAQtM,KAAKsM,OACnD,EAEJ,EAUAqH,UAAUC,aARU,SAASP,EAAam2D,EAAW9kC,GACnD8jC,EAAiBn1D,GAAa,SAAS5Q,GACrCkR,UAAU81D,mBAAmBhnE,EAAG+mE,GAAW,SAASxlE,GAClD0gC,EAAQykC,EAAWnlE,GACrB,GACF,GACF,EAKA,IAAI0lE,EAAuB,SAASr2D,GAClC,OAAO,IAAIvE,SAAQ,SAASC,EAASC,GACnC2E,UAAUC,aAAaP,EAAatE,EAASC,EAC/C,GACF,EAuBA,GArBK2E,UAAUE,eACbF,UAAUE,aAAe,CACvBD,aAAc81D,EACdb,iBAAkB,WAChB,OAAO,IAAI/5D,SAAQ,SAASC,GAC1B,IAAI46D,EAAQ,CAACj2D,MAAO,aAAcD,MAAO,cACzC,OAAOm2D,iBAAiBC,YAAW,SAASf,GAC1C/5D,EAAQ+5D,EAAQ9vD,KAAI,SAAS8wD,GAC3B,MAAO,CAACb,MAAOa,EAAOb,MACd1I,KAAMoJ,EAAMG,EAAOvJ,MACnB2I,SAAUY,EAAO5+B,GACjB6+B,QAAS,GACnB,IACF,GACF,GACF,IAMCp2D,UAAUE,aAAaD,aAIrB,CAIL,IAAIo2D,EAAmBr2D,UAAUE,aAAaD,aAC1CvC,KAAKsC,UAAUE,cACnBF,UAAUE,aAAaD,aAAe,SAASq2D,GAC7C,OAAOzB,EAAiByB,GAAI,SAASxnE,GACnC,OAAOunE,EAAiBvnE,GAAGqR,MAAK,SAASC,GACvC,GAAItR,EAAEiR,QAAUK,EAAOm2D,iBAAiBvvE,QACpC8H,EAAEgR,QAAUM,EAAOo2D,iBAAiBxvE,OAItC,MAHAoZ,EAAO4D,YAAY4Q,SAAQ,SAASsa,GAClCA,EAAMnrB,MACR,IACM,IAAI0yD,aAAa,GAAI,iBAE7B,OAAOr2D,CACT,IAAG,SAAS/P,GACV,OAAO8K,QAAQE,OAAOm6D,EAAWnlE,GACnC,GACF,GACF,CACF,MAzBE2P,UAAUE,aAAaD,aAAe,SAASP,GAC7C,OAAOq2D,EAAqBr2D,EAC9B,EA2BqD,qBAA5CM,UAAUE,aAAajC,mBAChC+B,UAAUE,aAAajC,iBAAmB,WACxC8yD,EAAQ,8CACV,GAEwD,qBAA/C/wD,UAAUE,aAAa/B,sBAChC6B,UAAUE,aAAa/B,oBAAsB,WAC3C4yD,EAAQ,iDACV,EAEJ,+BC3LA,IAAI/I,EAAWr+D,EAAQ,MACnBqnE,EAAiBrnE,EAAAA,MAAAA,eAEjBynE,EAAW,CACbG,mBAAoB,WAClB,GAAI5uD,OAAO+zD,eAAgB,CAGpB/zD,OAAOsxD,kBACVtxD,OAAOsxD,gBAAkB,SAASz5D,GAChC,OAAOA,CACT,GAKGmI,OAAOuxD,wBACVvxD,OAAOuxD,sBAAwB,SAAS15D,GACtC,OAAOA,CACT,GAIF,IAAIm8D,EAAiBxuE,OAAOssB,yBACxBwhD,iBAAiB7tE,UAAW,WAChCD,OAAOsI,eAAewlE,iBAAiB7tE,UAAW,UAAW,CAC3DmJ,IAAK,SAAS7I,GACZiuE,EAAeplE,IAAIzI,KAAKuD,KAAM3D,GAC9B,IAAI2kB,EAAK,IAAI6kD,MAAM,WACnB7kD,EAAGupD,QAAUluE,EACb2D,KAAK8lE,cAAc9kD,EACrB,GAEJ,CAEA1K,OAAOovD,kBAAoB,SAAS53C,GAClC,IAAI1T,EAAOpa,KAEPwqE,EAAexzC,SAASyzC,yBAwC5B,GAvCA,CAAC,mBAAoB,sBAAuB,iBACvCliD,SAAQ,SAAS7O,GAChBU,EAAKV,GAAU8wD,EAAa9wD,GAAQrI,KAAKm5D,EAC3C,IAEJxqE,KAAK0qE,eAAiB,KACtB1qE,KAAK2qE,YAAc,KACnB3qE,KAAK4qE,QAAU,KACf5qE,KAAK6qE,eAAiB,KACtB7qE,KAAK8qE,uBAAyB,KAC9B9qE,KAAK+qE,2BAA6B,KAClC/qE,KAAKgrE,oBAAsB,KAC3BhrE,KAAKirE,cAAgB,KAErBjrE,KAAKkrE,aAAe,GACpBlrE,KAAKmrE,cAAgB,GACrBnrE,KAAKorE,gBAAkB,WACrB,OAAOhxD,EAAK8wD,YACd,EACAlrE,KAAKqrE,iBAAmB,WACtB,OAAOjxD,EAAK+wD,aACd,EAEAnrE,KAAKsrE,iBAAmB,IAAIzD,sBAAsB,CAChD5oE,KAAM,GACN+9D,IAAK,KAEPh9D,KAAKurE,kBAAoB,IAAI1D,sBAAsB,CACjD5oE,KAAM,GACN+9D,IAAK,KAEPh9D,KAAKwrE,eAAiB,SACtBxrE,KAAKyrE,mBAAqB,MAC1BzrE,KAAK0rE,kBAAoB,MAEzB1rE,KAAK2rE,WAAa,CAChBC,aAAc,MACdC,WAAY,IAEV/9C,GAAUA,EAAOw4C,mBACnB,OAAQx4C,EAAOw4C,oBACb,IAAK,MACL,IAAK,QACHtmE,KAAK2rE,WAAWC,aAAe99C,EAAOw4C,mBACtC,MACF,IAAK,OAEH,MAAM,IAAI/pE,UAAU,2CAQ1B,GAFAyD,KAAK8rE,YAAch+C,GAAkC,eAAxBA,EAAOi+C,aAEhCj+C,GAAUA,EAAO+9C,WAAY,CAK/B,IAAIA,EAAa7V,KAAKuL,MAAMvL,KAAKC,UAAUnoC,EAAO+9C,aAClD7rE,KAAK2rE,WAAWE,WAAaA,EAAW1jD,QAAO,SAAS6jD,GACtD,GAAIA,GAAUA,EAAOC,KAAM,CACzB,IAAIA,EAAOD,EAAOC,KAWlB,MAVoB,kBAATA,IACTA,EAAO,CAACA,OAEVA,EAAOA,EAAK9jD,QAAO,SAASgsB,GAC1B,OAAiC,IAAzBA,EAAI34C,QAAQ,WACkB,IAAlC24C,EAAI34C,QAAQ,mBACe,IAA3B24C,EAAI34C,QAAQ,WACc,IAAzB24C,EAAI34C,QAAQ,UACXmpE,EAAe3uC,SAAW,KAClC,IAAG,GAEL,CACA,OAAO,CACT,GACF,CACAh2B,KAAKksE,QAAUp+C,EAIf9tB,KAAKmsE,aAAe,GAKpBnsE,KAAKosE,0BAA4B,EACnC,EAEA91D,OAAOovD,kBAAkB3pE,UAAUswE,wBAA0B,WAC3D,IAAIjyD,EAAOpa,KACPssE,EAAW3Q,EAASM,cAAc7hD,EAAKkxD,iBAAiBtO,KAG5Dh9D,KAAKosE,0BAA0B7jD,SAAQ,SAAS1H,GAE9C,IADWA,EAAMy7C,WAAqD,IAAxCxgE,OAAOoX,KAAK2N,EAAMy7C,WAAW3hE,OAEzD,IAAK,IAAI4G,EAAI,EAAGA,EAAI+qE,EAAS3xE,OAAQ4G,KACyB,IAAxD+qE,EAAS/qE,GAAG/F,QAAQ,iCACtB8wE,EAAS/qE,IAAM,gCAIZ,IADEsf,EAAMy7C,UAAUA,UAAU9gE,QAAQ,yBAE3C8wE,EAASzrD,EAAMy7C,UAAUiQ,cAAgB,IACrC,KAAO1rD,EAAMy7C,UAAUA,UAAY,SAEzCliD,EAAKkxD,iBAAiBtO,IAAMsP,EAASnxE,KAAK,IAC1Cif,EAAK0rD,cAAcjlD,GACS,OAAxBzG,EAAKswD,gBACPtwD,EAAKswD,eAAe7pD,GAEjBA,EAAMy7C,WAAwC,aAA3BliD,EAAKsxD,oBACZtxD,EAAK+xD,aAAaK,OAAM,SAAS/J,GAC9C,OAAOA,EAAYC,aACmB,cAAlCD,EAAYC,YAAYvxD,KAC9B,MAEEiJ,EAAKsxD,kBAAoB,WAG/B,IACA1rE,KAAKosE,0BAA4B,EACnC,EAEA91D,OAAOovD,kBAAkB3pE,UAAU0wE,iBAAmB,WACpD,OAAOzsE,KAAKksE,OACd,EAEA51D,OAAOovD,kBAAkB3pE,UAAU2wE,UAAY,SAAS34D,GAGtD,IAAI44D,EAAe54D,EAAO64D,QAC1B74D,EAAO4D,YAAY4Q,SAAQ,SAASsa,EAAOgqC,GACzC,IAAIC,EAAcH,EAAah1D,YAAYk1D,GAC3ChqC,EAAMjxB,iBAAiB,WAAW,SAASiP,GACzCisD,EAAYvC,QAAU1pD,EAAM0pD,OAC9B,GACF,IACAvqE,KAAKkrE,aAAalwE,KAAK2xE,GACvB3sE,KAAK+sE,6BACP,EAEAz2D,OAAOovD,kBAAkB3pE,UAAUixE,aAAe,SAASj5D,GACzD,IAAI84D,EAAM7sE,KAAKkrE,aAAa1vE,QAAQuY,GAChC84D,GAAO,IACT7sE,KAAKkrE,aAAanqD,OAAO8rD,EAAK,GAC9B7sE,KAAK+sE,8BAET,EAEAz2D,OAAOovD,kBAAkB3pE,UAAUkxE,WAAa,WAC9C,OAAOjtE,KAAKmsE,aAAahkD,QAAO,SAASs6C,GACvC,QAASA,EAAYI,SACvB,IACC7pD,KAAI,SAASypD,GACZ,OAAOA,EAAYI,SACrB,GACF,EAEAvsD,OAAOovD,kBAAkB3pE,UAAUmxE,aAAe,WAChD,OAAOltE,KAAKmsE,aAAahkD,QAAO,SAASs6C,GACvC,QAASA,EAAYK,WACvB,IACC9pD,KAAI,SAASypD,GACZ,OAAOA,EAAYK,WACrB,GACF,EAGAxsD,OAAOovD,kBAAkB3pE,UAAUoxE,uBAC/B,SAASC,EAAmBC,GAC1B,IAAIC,EAAqB,CACvBvN,OAAQ,GACRC,iBAAkB,GAClBC,cAAe,IA2CjB,OAzCAmN,EAAkBrN,OAAOx3C,SAAQ,SAASglD,GACxC,IAAK,IAAItzE,EAAI,EAAGA,EAAIozE,EAAmBtN,OAAOplE,OAAQV,IAAK,CACzD,IAAIuzE,EAASH,EAAmBtN,OAAO9lE,GACvC,GAAIszE,EAAOnhE,KAAKtM,gBAAkB0tE,EAAOphE,KAAKtM,eAC1CytE,EAAOnQ,YAAcoQ,EAAOpQ,UAAW,CAEzCoQ,EAAOnQ,YAAcx6D,KAAKC,IAAIyqE,EAAOlQ,YACjCmQ,EAAOnQ,aAEXiQ,EAAmBvN,OAAO/kE,KAAKwyE,GAG/BA,EAAOhP,aAAegP,EAAOhP,aAAar2C,QAAO,SAASgV,GACxD,IAAK,IAAI57B,EAAI,EAAGA,EAAIgsE,EAAO/O,aAAa7jE,OAAQ4G,IAC9C,GAAIgsE,EAAO/O,aAAaj9D,GAAGtC,OAASk+B,EAAGl+B,MACnCsuE,EAAO/O,aAAaj9D,GAAG88D,YAAclhC,EAAGkhC,UAC1C,OAAO,EAGX,OAAO,CACT,IAGA,KACF,CACF,CACF,IAEA+O,EAAkBpN,iBACbz3C,SAAQ,SAASklD,GAChB,IAAK,IAAIxzE,EAAI,EAAGA,EAAIozE,EAAmBrN,iBAAiBrlE,OACnDV,IAAK,CACR,IAAIyzE,EAAmBL,EAAmBrN,iBAAiB/lE,GAC3D,GAAIwzE,EAAiB7P,MAAQ8P,EAAiB9P,IAAK,CACjD0P,EAAmBtN,iBAAiBhlE,KAAK0yE,GACzC,KACF,CACF,CACF,IAGGJ,CACT,EAGJh3D,OAAOovD,kBAAkB3pE,UAAU4xE,4BAC/B,SAAS3O,EAAKuN,GACZ,IAAInyD,EAAOpa,KACP0iE,EAAc,IAAI2H,eAAejwD,EAAKuxD,YACtCiC,EAAe,IAAIC,gBAAgBnL,GACvCA,EAAYoL,iBAAmB,SAASC,GACtC,IAAIltD,EAAQ,IAAIglD,MAAM,gBACtBhlD,EAAMy7C,UAAY,CAAC0R,OAAQhP,EAAKuN,cAAeA,GAE/C,IAAI0B,EAAOF,EAAIzR,UACX5gE,GAAOuyE,GAAqC,IAA7BnyE,OAAOoX,KAAK+6D,GAAMtzE,OAEjCe,QAGwBqB,IAAtB2lE,EAAYvxD,QACduxD,EAAYvxD,MAAQ,aAQtB0P,EAAMy7C,UAAUA,UACZ,sDAGJ2R,EAAKzR,UAAuC,SAA3BoR,EAAapR,UAAuB,EAAI,EACzD37C,EAAMy7C,UAAUA,UAAYX,EAASoB,eAAekR,IAItD,IAAI3B,EAAW3Q,EAASM,cAAc7hD,EAAKkxD,iBAAiBtO,MAEnD,IADLn8C,EAAMy7C,UAAUA,UAAU9gE,QAAQ,uBAEpC8wE,EAASzrD,EAAMy7C,UAAUiQ,cAAgB,IACrC,KAAO1rD,EAAMy7C,UAAUA,UAAY,OAEvCgQ,EAASzrD,EAAMy7C,UAAUiQ,cAAgB,IACrC,0BAENnyD,EAAKkxD,iBAAiBtO,IAAMsP,EAASnxE,KAAK,IAE1C,IAAI+yE,EAAW9zD,EAAK+xD,aAAaK,OAAM,SAAS/J,GAC9C,OAAOA,EAAYC,aACmB,cAAlCD,EAAYC,YAAYvxD,KAC9B,IAIA,OAAQiJ,EAAKsxD,mBACX,IAAK,MACHtxD,EAAKgyD,0BAA0BpxE,KAAK6lB,GAChCnlB,GAAOwyE,GACT9zD,EAAKgyD,0BAA0BpxE,KAC3B,IAAI6qE,MAAM,iBAEhB,MACF,IAAK,YACHzrD,EAAKiyD,0BACLjyD,EAAK0rD,cAAcjlD,GACS,OAAxBzG,EAAKswD,gBACPtwD,EAAKswD,eAAe7pD,GAElBqtD,IACF9zD,EAAK0rD,cAAc,IAAID,MAAM,iBACD,OAAxBzrD,EAAKswD,gBACPtwD,EAAKswD,eAAe,IAAI7E,MAAM,iBAEhCzrD,EAAKsxD,kBAAoB,YASjC,EACAkC,EAAaO,iBAAmB,WAC9B/zD,EAAKg0D,wBACP,EAEA,IAAIxL,EAAgB,IAAIyL,iBAAiBT,GAUzC,OATAhL,EAAc0L,kBAAoB,WAChCl0D,EAAKg0D,wBACP,EACAxL,EAAcriD,QAAU,WAEtBqiD,EAAczxD,MAAQ,SACtBiJ,EAAKg0D,wBACP,EAEO,CACL1L,YAAaA,EACbkL,aAAcA,EACdhL,cAAeA,EAEnB,EAGJtsD,OAAOovD,kBAAkB3pE,UAAUwyE,YAAc,SAAS9L,EACtD+L,EAAMC,GACR,IAAIliD,EAASvsB,KAAKmtE,uBAAuB1K,EAAY2K,kBACjD3K,EAAY4K,oBACZmB,GAAQ/L,EAAYI,YACtBt2C,EAAOmiD,UAAYjM,EAAYO,uBAC/Bz2C,EAAO2zC,KAAO,CACZ6B,MAAOpG,EAASC,YAEd6G,EAAYkM,uBAAuBh0E,SACrC4xB,EAAO2zC,KAAKvB,KAAO8D,EAAYkM,uBAAuB,GAAGhQ,MAE3D8D,EAAYI,UAAU2L,KAAKjiD,IAEzBkiD,GAAQhM,EAAYK,cAEG,UAArBL,EAAYlC,MACTkC,EAAYkM,wBACjBlM,EAAYkM,uBAAuBpmD,SAAQ,SAASjT,UAC3CA,EAAEgsD,GACX,IAEF/0C,EAAOmiD,UAAYjM,EAAYkM,uBAC/BpiD,EAAO2zC,KAAO,CACZ6B,MAAOU,EAAYV,OAEjBU,EAAYO,uBAAuBroE,SACrC4xB,EAAO2zC,KAAKvB,KAAO8D,EAAYO,uBAAuB,GAAGrE,MAE3D8D,EAAYK,YAAY8L,QAAQriD,GAEpC,EAEAjW,OAAOovD,kBAAkB3pE,UAAU8yE,oBAC/B,SAAS/O,GACP,IACIwM,EACAlN,EAFAhlD,EAAOpa,KAGX,GAAyB,UAArB8/D,EAAY7gE,KAIVe,KAAK8uE,gBAGPxC,EAAW3Q,EAASM,cAAc6D,EAAY9C,KAC9CoC,EAAckN,EAAS35D,QACvB25D,EAAS/jD,SAAQ,SAASw2C,EAAcwN,GACtC,IAAI/L,EAAO7E,EAASkE,mBAAmBd,GACvC3kD,EAAK00D,cAAcvC,GAAea,kBAAoB5M,CACxD,IACAxgE,KAAKmsE,aAAensE,KAAK8uE,qBAClB9uE,KAAK8uE,oBAET,GAAyB,WAArBhP,EAAY7gE,KAAmB,CACxCqtE,EAAW3Q,EAASM,cAAc7hD,EAAKmxD,kBAAkBvO,KACzDoC,EAAckN,EAAS35D,QACvB,IAAIo8D,EAAYpT,EAASQ,YAAYiD,EACjC,cAAczkE,OAAS,EAC3B2xE,EAAS/jD,SAAQ,SAASw2C,EAAcwN,GACtC,IAAI9J,EAAcroD,EAAK+xD,aAAaI,GAChC7J,EAAcD,EAAYC,YAC1BkL,EAAenL,EAAYmL,aAC3BhL,EAAgBH,EAAYG,cAC5BwK,EAAoB3K,EAAY2K,kBAChCC,EAAqB5K,EAAY4K,mBAKrC,KAF0B,MADXtO,EAAa1xD,MAAM,KAAM,GAAG,GACtCA,MAAM,IAAK,GAAG,MAEDo1D,EAAYuM,cAAe,CAC3C,IAAIC,EAAsBtT,EAAS+D,iBAC/BX,EAAcK,GAClB,GAAI2P,EAAW,CACb,IAAIG,EAAQvT,EAASQ,YAAY4C,EAAc,gBAC9C/lD,KAAI,SAASi1D,GACZ,OAAOtS,EAASU,eAAe4R,EACjC,IACC9lD,QAAO,SAAS8lD,GACf,MAA0B,MAAnBA,EAAKzR,SACd,IAII0S,EAAMv0E,QACRizE,EAAauB,oBAAoBD,EAErC,CACA,IAAIE,EAAuBzT,EAASwD,kBAChCJ,EAAcK,GACd2P,IACFK,EAAqB/P,KAAO,UAGzBjlD,EAAK0xD,aAAiC,IAAlBS,IACvBqB,EAAanyE,MAAMinE,EAAauM,EAC5BF,EAAY,cAAgB,cAChCnM,EAAcnnE,MAAM2zE,IAItB,IAAI7iD,EAASnS,EAAK+yD,uBAAuBC,EACrCC,GAIJjzD,EAAKm0D,YAAY9L,EACbl2C,EAAOwzC,OAAOplE,OAAS,GACvB,EACN,CACF,GACF,CAMA,OAJAqF,KAAKsrE,iBAAmB,CACtBrsE,KAAM6gE,EAAY7gE,KAClB+9D,IAAK8C,EAAY9C,KAEX8C,EAAY7gE,MAClB,IAAK,QACHe,KAAKqvE,sBAAsB,oBAC3B,MACF,IAAK,SACHrvE,KAAKqvE,sBAAsB,UAC3B,MACF,QACE,MAAM,IAAI9yE,UAAU,qBAAuBujE,EAAY7gE,KACnD,KAMR,IAAIqwE,EAAc5vE,UAAU/E,OAAS,GACX,oBAAjB+E,UAAU,GACnB,GAAI4vE,EAAa,CACf,IAAIh8D,EAAK5T,UAAU,GACnB4W,OAAOrC,YAAW,WAChBX,IAC+B,QAA3B8G,EAAKsxD,oBACPtxD,EAAKsxD,kBAAoB,aAE3BtxD,EAAKiyD,yBACP,GAAG,EACL,CACA,IAAI/2D,EAAIxG,QAAQC,UAUhB,OATAuG,EAAExB,MAAK,WACAw7D,IAC4B,QAA3Bl1D,EAAKsxD,oBACPtxD,EAAKsxD,kBAAoB,aAG3Bp1D,OAAOrC,WAAWmG,EAAKiyD,wBAAwBh7D,KAAK+I,GAAO,KAE/D,IACO9E,CACT,EAEJgB,OAAOovD,kBAAkB3pE,UAAUwzE,qBAC/B,SAASzP,GACP,IAAI1lD,EAAOpa,KACP+T,EAAS,IAAIyxD,YACbgK,EAAe,GACflD,EAAW3Q,EAASM,cAAc6D,EAAY9C,KAC9CoC,EAAckN,EAAS35D,QACvBo8D,EAAYpT,EAASQ,YAAYiD,EACjC,cAAczkE,OAAS,EAyL3B,OAxLAqF,KAAK8rE,YAAcnQ,EAASQ,YAAYiD,EACpC,mBAAmBzkE,OAAS,EAChC2xE,EAAS/jD,SAAQ,SAASw2C,EAAcwN,GACtC,IACIpM,EADQxE,EAASG,WAAWiD,GACd,GAAGh9D,OAAO,GAAGsL,MAAM,KACjCkzD,EAAOJ,EAAM,GACbsP,EAAwB,MAAbtP,EAAM,GACjBxC,EAAYhC,EAASsH,aAAalE,EAAcK,GAEhDJ,EAAMrD,EAASQ,YAAY4C,EAAc,UAQ7C,GANEC,EADEA,EAAIrkE,OACAqkE,EAAI,GAAGj9D,OAAO,GAEd45D,EAASE,qBAIJ,gBAAT0E,GAAuC,cAAbJ,EAAM,GAApC,CAQA,IAAIsC,EACAC,EACAkL,EACAhL,EACAC,EACAC,EACAE,EACA2L,EACAvB,EAEAvqC,EAGAosC,EACAG,EAWArN,EAbAsL,EAAqB1R,EAASkE,mBAAmBd,GAGhD0Q,IACHR,EAAsBtT,EAAS+D,iBAAiBX,EAC5CK,IACJgQ,EAAuBzT,EAASwD,kBAAkBJ,EAC9CK,IACiBC,KAAO,UAE9BsP,EACIhT,EAASgF,2BAA2B5B,GAKxC,IAAI+C,EAAanG,EAASQ,YAAY4C,EAAc,WAC/C/lD,KAAI,SAASgjD,GACZ,OAAOL,EAAS8C,eAAezC,EACjC,IACC7zC,QAAO,SAASxrB,GACf,MAAyB,UAAlBA,EAAIkiE,SACb,IAAG,GACHiD,IACFC,EAAQD,EAAWzlE,OAGrB,IAAIqzE,EAAa/T,EAASQ,YAAY4C,EAClC,sBAAuBK,GAAazkE,OAAS,EAC7Cu0E,EAAQvT,EAASQ,YAAY4C,EAAc,gBAC1C/lD,KAAI,SAASi1D,GACZ,OAAOtS,EAASU,eAAe4R,EACjC,IACC9lD,QAAO,SAAS8lD,GACf,MAA0B,MAAnBA,EAAKzR,SACd,IACJ,GAAyB,UAArBsD,EAAY7gE,MAAqBwwE,EAkEL,WAArB3P,EAAY7gE,MAAsBwwE,IAE3C/M,GADAD,EAAcroD,EAAK+xD,aAAaI,IACN7J,YAC1BkL,EAAenL,EAAYmL,aAC3BhL,EAAgBH,EAAYG,cAC5BC,EAAYJ,EAAYI,UACxBC,EAAcL,EAAYK,YAC1BE,EAAyBP,EAAYO,uBACrCoK,EAAoB3K,EAAY2K,kBAEhChzD,EAAK+xD,aAAaI,GAAeoC,uBAC7BA,EACJv0D,EAAK+xD,aAAaI,GAAec,mBAC7BA,EACJjzD,EAAK+xD,aAAaI,GAAexK,MAAQA,GAEpCgN,GAAaW,IAAeR,EAAMv0E,QACrCizE,EAAauB,oBAAoBD,GAE9B90D,EAAK0xD,aAAiC,IAAlBS,IACvBqB,EAAanyE,MAAMinE,EAAauM,EAC5B,eACJrM,EAAcnnE,MAAM2zE,IAGtBh1D,EAAKm0D,YAAY9L,EACC,aAAd9E,GAA0C,aAAdA,EACd,aAAdA,GAA0C,aAAdA,IAE5BmF,GACe,aAAdnF,GAA0C,aAAdA,SAMxB8E,EAAYK,aALnBjgC,EAAQigC,EAAYjgC,MACpB2sC,EAAax0E,KAAK,CAAC6nC,EAAOigC,IAC1B/uD,EAAO47D,SAAS9sC,SAnG2B,CAC7C,IAkCM+sC,EAlCFC,EAAaz1D,EAAK0xD,aAAeS,EAAgB,EAAI,CACvD7J,YAAatoD,EAAK+xD,aAAa,GAAGzJ,YAClCkL,aAAcxzD,EAAK+xD,aAAa,GAAGyB,aACnChL,cAAexoD,EAAK+xD,aAAa,GAAGvJ,eAClCxoD,EAAKuzD,4BAA4B3O,EAAKuN,GA4B1C,GA1BImD,GACFG,EAAWjC,aAAauB,oBAAoBD,IAG9C9B,EAAoB0C,eAAeC,gBAAgBxP,IAIjCR,OAASqN,EAAkBrN,OAAO53C,QAChD,SAASo1C,GACP,MAAsB,QAAfA,EAAMnxD,IACf,IAEJ42D,EAAyB,CAAC,CACxBrE,KAAgC,MAAzB,EAAI4N,EAAgB,KAK7B1pC,GAFAigC,EAAc,IAAIgN,eAAeD,EAAWjN,cAAerC,IAEvC19B,MACpB2sC,EAAax0E,KAAK,CAAC6nC,EAAOigC,IAG1B/uD,EAAO47D,SAAS9sC,GAGZzoB,EAAK8wD,aAAavwE,OAAS,GAC3Byf,EAAK8wD,aAAa,GAAGvzD,YAAYhd,QAAU4xE,EAEhC,UAAThM,EACFqP,EAAax1D,EAAK8wD,aAAa,GAAGhB,iBAAiB,GACjC,UAAT3J,IACTqP,EAAax1D,EAAK8wD,aAAa,GAAGf,iBAAiB,IAEjDyF,IACF/M,EAAY,IAAImN,aAAaJ,EACzBC,EAAWjN,gBAInBxoD,EAAK+xD,aAAaI,GAAiB,CACjC7J,YAAamN,EAAWnN,YACxBkL,aAAciC,EAAWjC,aACzBhL,cAAeiN,EAAWjN,cAC1BwK,kBAAmBA,EACnBC,mBAAoBA,EACpBxK,UAAWA,EACXC,YAAaA,EACbvC,KAAMA,EACNvB,IAAKA,EACL+C,MAAOA,EACPiB,uBAAwBA,EACxB2L,uBAAwBA,GAI1Bv0D,EAAKm0D,YAAYn0D,EAAK+xD,aAAaI,IAC/B,EACc,aAAd5O,GAA0C,aAAdA,EAClC,CApHA,MALEvjD,EAAK+xD,aAAaI,GAAiB,CACjCvN,IAAKA,EACLgQ,eAAe,EA8JrB,IAEAhvE,KAAKurE,kBAAoB,CACvBtsE,KAAM6gE,EAAY7gE,KAClB+9D,IAAK8C,EAAY9C,KAEX8C,EAAY7gE,MAClB,IAAK,QACHe,KAAKqvE,sBAAsB,qBAC3B,MACF,IAAK,SACHrvE,KAAKqvE,sBAAsB,UAC3B,MACF,QACE,MAAM,IAAI9yE,UAAU,qBAAuBujE,EAAY7gE,KACnD,KAiCR,OA/BI8U,EAAO4D,YAAYhd,SACrByf,EAAK+wD,cAAcnwE,KAAK+Y,GACxBuC,OAAOrC,YAAW,WAChB,IAAI4M,EAAQ,IAAIglD,MAAM,aACtBhlD,EAAM9M,OAASA,EACfqG,EAAK0rD,cAAcjlD,GACM,OAArBzG,EAAKuwD,aACPr0D,OAAOrC,YAAW,WAChBmG,EAAKuwD,YAAY9pD,EACnB,GAAG,GAGL2uD,EAAajnD,SAAQ,SAAS0nD,GAC5B,IAAIptC,EAAQotC,EAAK,GACb/hE,EAAW+hE,EAAK,GAChBC,EAAa,IAAIrK,MAAM,SAC3BqK,EAAWrtC,MAAQA,EACnBqtC,EAAWhiE,SAAWA,EACtBgiE,EAAWnlD,QAAU,CAAChX,GACtBqG,EAAK0rD,cAAcjlD,GACE,OAAjBzG,EAAKwwD,SACPt0D,OAAOrC,YAAW,WAChBmG,EAAKwwD,QAAQsF,EACf,GAAG,EAEP,GACF,GAAG,IAEDxwE,UAAU/E,OAAS,GAA6B,oBAAjB+E,UAAU,IAC3C4W,OAAOrC,WAAWvU,UAAU,GAAI,GAE3BoP,QAAQC,SACjB,EAEJuH,OAAOovD,kBAAkB3pE,UAAU+b,MAAQ,WACzC9X,KAAKmsE,aAAa5jD,SAAQ,SAASk6C,GAM7BA,EAAYmL,cACdnL,EAAYmL,aAAal2D,OAEvB+qD,EAAYG,eACdH,EAAYG,cAAclrD,OAExB+qD,EAAYI,WACdJ,EAAYI,UAAUnrD,OAEpB+qD,EAAYK,aACdL,EAAYK,YAAYprD,MAE5B,IAEA1X,KAAKqvE,sBAAsB,SAC7B,EAGA/4D,OAAOovD,kBAAkB3pE,UAAUszE,sBAC/B,SAASc,GACPnwE,KAAKwrE,eAAiB2E,EACtB,IAAItvD,EAAQ,IAAIglD,MAAM,wBACtB7lE,KAAK8lE,cAAcjlD,GACiB,OAAhC7gB,KAAK8qE,wBACP9qE,KAAK8qE,uBAAuBjqD,EAEhC,EAGJvK,OAAOovD,kBAAkB3pE,UAAUgxE,4BAC/B,WAEE,IAAIlsD,EAAQ,IAAIglD,MAAM,qBACtB7lE,KAAK8lE,cAAcjlD,GACc,OAA7B7gB,KAAKgrE,qBACPhrE,KAAKgrE,oBAAoBnqD,EAE7B,EAGJvK,OAAOovD,kBAAkB3pE,UAAUqyE,uBAAyB,WAC1D,IACI+B,EACAC,EAAS,CACX,IAAO,EACPllD,OAAQ,EACRmlD,WAAY,EACZC,SAAU,EACVC,UAAW,EACXC,UAAW,EACXC,OAAQ,GAsBV,GApBAzwE,KAAKmsE,aAAa5jD,SAAQ,SAASk6C,GACjC2N,EAAO3N,EAAYmL,aAAaz8D,SAChCi/D,EAAO3N,EAAYG,cAAczxD,QACnC,IAEAi/D,EAAOG,WAAaH,EAAOI,UAE3BL,EAAW,MACPC,EAAOK,OAAS,EAClBN,EAAW,SACFC,EAAOC,WAAa,GAAKD,EAAOE,SAAW,EACpDH,EAAW,aACFC,EAAOM,aAAe,EAC/BP,EAAW,eACFC,EAAOO,IAAM,EACtBR,EAAW,OACFC,EAAOG,UAAY,GAAKH,EAAOI,UAAY,KACpDL,EAAW,aAGTA,IA/BOnwE,KA+BWyrE,mBAAoB,CA/B/BzrE,KAgCJyrE,mBAAqB0E,EAC1B,IAAItvD,EAAQ,IAAIglD,MAAM,4BACtB7lE,KAAK8lE,cAAcjlD,GACqB,OAApC7gB,KAAK+qE,4BACP/qE,KAAK+qE,2BAA2BlqD,EAEpC,CACF,EAEAvK,OAAOovD,kBAAkB3pE,UAAU60E,YAAc,WAC/C,IAIIC,EAJAz2D,EAAOpa,KACX,GAAIA,KAAK8uE,cACP,MAAM,IAAIvzE,MAAM,sDAGO,IAArBmE,UAAU/E,QAAwC,oBAAjB+E,UAAU,GAC7CmxE,EAAenxE,UAAU,GACK,IAArBA,UAAU/E,SACnBk2E,EAAenxE,UAAU,IAG3B,IAAIoxE,EAAS,GACTC,EAAiB,EACjBC,EAAiB,EAOrB,GALIhxE,KAAKkrE,aAAavwE,SACpBo2E,EAAiB/wE,KAAKkrE,aAAa,GAAGhB,iBAAiBvvE,OACvDq2E,EAAiBhxE,KAAKkrE,aAAa,GAAGf,iBAAiBxvE,QAGrDk2E,EAAc,CAEhB,GAAIA,EAAa5I,WAAa4I,EAAa3I,SACzC,MAAM,IAAI3rE,UACN,6DAEmCQ,IAArC8zE,EAAaI,sBACfF,EAAiBF,EAAaI,0BAESl0E,IAArC8zE,EAAaK,sBACfF,EAAiBH,EAAaK,oBAElC,CAkBA,IAjBIlxE,KAAKkrE,aAAavwE,QAEpBqF,KAAKkrE,aAAa,GAAGvzD,YAAY4Q,SAAQ,SAASsa,GAChDiuC,EAAO91E,KAAK,CACVulE,KAAM19B,EAAM09B,KACZ19B,MAAOA,EACPsuC,YAA4B,UAAftuC,EAAM09B,KACfwQ,EAAiB,EAAIC,EAAiB,IAEzB,UAAfnuC,EAAM09B,KACRwQ,IACwB,UAAfluC,EAAM09B,MACfyQ,GAEJ,IAGKD,EAAiB,GAAKC,EAAiB,GACxCD,EAAiB,IACnBD,EAAO91E,KAAK,CACVulE,KAAM,QACN4Q,aAAa,IAEfJ,KAEEC,EAAiB,IACnBF,EAAO91E,KAAK,CACVulE,KAAM,QACN4Q,aAAa,IAEfH,KAIJ,IAAIhU,EAAMrB,EAAS4G,0BACf4J,EAAe,GACnB2E,EAAOvoD,SAAQ,SAAS43C,EAAOoM,GAG7B,IA0BI1J,EACAC,EA3BAjgC,EAAQs9B,EAAMt9B,MACd09B,EAAOJ,EAAMI,KACbvB,EAAMrD,EAASE,qBAEfgU,EAAaz1D,EAAK0xD,aAAeS,EAAgB,EAAI,CACvD7J,YAAayJ,EAAa,GAAGzJ,YAC7BkL,aAAczB,EAAa,GAAGyB,aAC9BhL,cAAeuJ,EAAa,GAAGvJ,eAC7BxoD,EAAKuzD,4BAA4B3O,EAAKuN,GAEtCa,EAAoB4C,aAAaD,gBAAgBxP,GAGrD6M,EAAkBrN,OAASqN,EAAkBrN,OAAO53C,QAChD,SAASo1C,GACP,MAAsB,QAAfA,EAAMnxD,IACf,IACJghE,EAAkBrN,OAAOx3C,SAAQ,SAASg1C,GAGrB,SAAfA,EAAMnxD,WAC0CrP,IAAhDwgE,EAAMY,WAAW,6BACnBZ,EAAMY,WAAW,2BAA6B,IAElD,IAMA,IAAI6E,EAAyB,CAAC,CAC5BrE,KAAgC,MAAzB,EAAI4N,EAAgB,KAEzB1pC,IACFggC,EAAY,IAAImN,aAAantC,EAAOgtC,EAAWjN,gBAG7CzC,EAAMgR,cACRrO,EAAc,IAAIgN,eAAeD,EAAWjN,cAAerC,IAG7D4L,EAAaI,GAAiB,CAC5B7J,YAAamN,EAAWnN,YACxBkL,aAAciC,EAAWjC,aACzBhL,cAAeiN,EAAWjN,cAC1BwK,kBAAmBA,EACnBC,mBAAoB,KACpBxK,UAAWA,EACXC,YAAaA,EACbvC,KAAMA,EACNvB,IAAKA,EACLgE,uBAAwBA,EACxB2L,uBAAwB,KAE5B,IACI3uE,KAAK8rE,cACP9O,GAAO,kBAAoBmP,EAAanzD,KAAI,SAASoT,GACnD,OAAOA,EAAE4yC,GACX,IAAG7jE,KAAK,KAAO,QAEjB21E,EAAOvoD,SAAQ,SAAS43C,EAAOoM,GAC7B,IAAI9J,EAAc0J,EAAaI,GAC/BvP,GAAOrB,EAAS6G,kBAAkBC,EAC9BA,EAAY2K,kBAAmB,QAAShzD,EAAK8wD,aAAa,GAChE,IAEAlrE,KAAK8uE,cAAgB3C,EACrB,IAAIiF,EAAO,IAAIvJ,sBAAsB,CACnC5oE,KAAM,QACN+9D,IAAKA,IAKP,OAHIt9D,UAAU/E,QAAkC,oBAAjB+E,UAAU,IACvC4W,OAAOrC,WAAWvU,UAAU,GAAI,EAAG0xE,GAE9BtiE,QAAQC,QAAQqiE,EACzB,EAEA96D,OAAOovD,kBAAkB3pE,UAAUs1E,aAAe,WAChD,IAAIj3D,EAAOpa,KAEPg9D,EAAMrB,EAAS4G,0BACfviE,KAAK8rE,cACP9O,GAAO,kBAAoBh9D,KAAKmsE,aAAanzD,KAAI,SAASoT,GACxD,OAAOA,EAAE4yC,GACX,IAAG7jE,KAAK,KAAO,QAEjB6E,KAAKmsE,aAAa5jD,SAAQ,SAASk6C,GACjC,GAAIA,EAAYuM,cACdhS,GAAO,+DAEQyF,EAAYzD,IAAM,WAHnC,CAOA,IAAIsO,EAAqBlzD,EAAK+yD,uBAC1B1K,EAAY2K,kBACZ3K,EAAY4K,oBAEhBrQ,GAAOrB,EAAS6G,kBAAkBC,EAAa6K,EAC3C,SAAUlzD,EAAK8wD,aAAa,GAPhC,CAQF,IAEA,IAAIkG,EAAO,IAAIvJ,sBAAsB,CACnC5oE,KAAM,SACN+9D,IAAKA,IAKP,OAHIt9D,UAAU/E,QAAkC,oBAAjB+E,UAAU,IACvC4W,OAAOrC,WAAWvU,UAAU,GAAI,EAAG0xE,GAE9BtiE,QAAQC,QAAQqiE,EACzB,EAEA96D,OAAOovD,kBAAkB3pE,UAAUgsE,gBAAkB,SAASzL,GAC5D,GAAKA,EAIE,CACL,IAAIgV,EAAahV,EAAUiQ,cAC3B,GAAIjQ,EAAU0R,OACZ,IAAK,IAAI/zE,EAAI,EAAGA,EAAI+F,KAAKmsE,aAAaxxE,OAAQV,IAC5C,GAAI+F,KAAKmsE,aAAalyE,GAAG+kE,MAAQ1C,EAAU0R,OAAQ,CACjDsD,EAAar3E,EACb,KACF,CAGJ,IAAIwoE,EAAcziE,KAAKmsE,aAAamF,GACpC,GAAI7O,EAAa,CACf,IAAIwL,EAAOnyE,OAAOoX,KAAKopD,EAAUA,WAAW3hE,OAAS,EACjDghE,EAASU,eAAeC,EAAUA,WAAa,CAAC,EAEpD,GAAsB,QAAlB2R,EAAKxR,WAAqC,IAAdwR,EAAKtR,MAA4B,IAAdsR,EAAKtR,MACtD,OAGF,GAAuB,MAAnBsR,EAAKzR,UACP,OAGgB,oBAAdyR,EAAKhvE,OACPgvE,EAAO,CAAC,GAEVxL,EAAYmL,aAAa2D,mBAAmBtD,GAG5C,IAAI3B,EAAW3Q,EAASM,cAAcj8D,KAAKurE,kBAAkBvO,KAC7DsP,EAASgF,EAAa,KAAOrD,EAAKhvE,KAAOq9D,EAAUA,UAAU32D,OACvD,uBAAyB,OAC/B3F,KAAKurE,kBAAkBvO,IAAMsP,EAASnxE,KAAK,GAC7C,CACF,MArCE6E,KAAKmsE,aAAa5jD,SAAQ,SAASk6C,GACjCA,EAAYmL,aAAa2D,mBAAmB,CAAC,EAC/C,IAuCF,OAHI7xE,UAAU/E,OAAS,GAA6B,oBAAjB+E,UAAU,IAC3C4W,OAAOrC,WAAWvU,UAAU,GAAI,GAE3BoP,QAAQC,SACjB,EAEAuH,OAAOovD,kBAAkB3pE,UAAU2qE,SAAW,WAC5C,IAAI8K,EAAW,GACfxxE,KAAKmsE,aAAa5jD,SAAQ,SAASk6C,GACjC,CAAC,YAAa,cAAe,cAAe,eACxC,iBAAiBl6C,SAAQ,SAAS7O,GAC5B+oD,EAAY/oD,IACd83D,EAASx2E,KAAKynE,EAAY/oD,GAAQgtD,WAEtC,GACN,IACA,IAAIpzD,EAAK5T,UAAU/E,OAAS,GAA6B,oBAAjB+E,UAAU,IAC9CA,UAAU,GACd,OAAO,IAAIoP,SAAQ,SAASC,GAE1B,IAAI0iE,EAAU,IAAIlrC,IAClBz3B,QAAQ4iE,IAAIF,GAAU19D,MAAK,SAAS/Q,GAClCA,EAAIwlB,SAAQ,SAAS0+C,GACnBnrE,OAAOoX,KAAK+zD,GAAQ1+C,SAAQ,SAAS2iB,GACnCumC,EAAQvsE,IAAIgmC,EAAI+7B,EAAO/7B,IACvBumC,EAAQvmC,GAAM+7B,EAAO/7B,EACvB,GACF,IACI53B,GACFgD,OAAOrC,WAAWX,EAAI,EAAGm+D,GAE3B1iE,EAAQ0iE,EACV,GACF,GACF,CACF,GAIFl4E,EAAOC,QAAU,CACf0rE,mBAAoBH,EAASG,mBAC7BE,iBAAkB9nE,EAAQ,8BC1lC5B/D,EAAOC,QAAU,WACf,IAYIwwE,EAAmBr2D,UAAUE,aAAaD,aAC1CvC,KAAKsC,UAAUE,cACnBF,UAAUE,aAAaD,aAAe,SAASnR,GAC7C,OAAOunE,EAAiBvnE,GAAGuR,OAAM,SAAShQ,GACxC,OAAO8K,QAAQE,OAhBF,SAAShL,GACxB,MAAO,CACLoI,KAAM,CAACg9D,sBAAuB,mBAAmBplE,EAAEoI,OAASpI,EAAEoI,KAC9DE,QAAStI,EAAEsI,QACXg9D,WAAYtlE,EAAEslE,WACdztE,SAAU,WACR,OAAOmE,KAAKoM,IACd,EAEJ,CAO0B+8D,CAAWnlE,GACnC,GACF,CACF,+BCrBA,IAAI2gE,EAAiBrnE,EAAAA,MAAAA,eAEjB0nE,EAAc,CAChBO,YAAa,WACW,kBAAXjvD,QAAuBA,OAAOovD,qBAAuB,YAC5DpvD,OAAOovD,kBAAkB3pE,YAC3BD,OAAOsI,eAAekS,OAAOovD,kBAAkB3pE,UAAW,UAAW,CACnEuI,IAAK,WACH,OAAOtE,KAAK2lE,QACd,EACAzgE,IAAK,SAASqyB,GACRv3B,KAAK2lE,WACP3lE,KAAK8R,oBAAoB,QAAS9R,KAAK2lE,UACvC3lE,KAAK8R,oBAAoB,YAAa9R,KAAK4lE,eAE7C5lE,KAAK4R,iBAAiB,QAAS5R,KAAK2lE,SAAWpuC,GAC/Cv3B,KAAK4R,iBAAiB,YAAa5R,KAAK4lE,aAAe,SAAS5hE,GAC9DA,EAAE+P,OAAO4D,YAAY4Q,QAAQ,SAASsa,GACpC,IAAIhiB,EAAQ,IAAIglD,MAAM,SACtBhlD,EAAMgiB,MAAQA,EACdhiB,EAAM3S,SAAW,CAAC20B,MAAOA,GACzBhiB,EAAMkK,QAAU,CAAC/mB,EAAE+P,QACnB/T,KAAK8lE,cAAcjlD,EACrB,EAAExP,KAAKrR,MACT,EAAEqR,KAAKrR,MACT,GAGN,EAEAslE,iBAAkB,WAEM,kBAAXhvD,QACLA,OAAOyvD,oBACP,cAAezvD,OAAOyvD,iBAAiBhqE,YAEzCD,OAAOsI,eAAekS,OAAOyvD,iBAAiBhqE,UAAW,YAAa,CACpEuI,IAAK,WACH,OAAOtE,KAAK2xE,YACd,EACAzsE,IAAK,SAAS6O,GACZ/T,KAAK2xE,aAAe59D,CACtB,GAIR,EAEAmxD,mBAAoB,WAClB,GAAsB,kBAAX5uD,SAAyBA,OAAOovD,mBACvCpvD,OAAOs7D,sBADX,CAKKt7D,OAAOovD,oBACVpvD,OAAOovD,kBAAoB,SAASU,EAAUC,GAC5C,GAAI1B,EAAe3uC,QAAU,IAGvBowC,GAAYA,EAASyF,WAAY,CAEnC,IADA,IAAIgG,EAAgB,GACX53E,EAAI,EAAGA,EAAImsE,EAASyF,WAAWlxE,OAAQV,IAAK,CACnD,IAAI+xE,EAAS5F,EAASyF,WAAW5xE,GACjC,GAAI+xE,EAAOz2D,eAAe,QACxB,IAAK,IAAIhU,EAAI,EAAGA,EAAIyqE,EAAOC,KAAKtxE,OAAQ4G,IAAK,CAC3C,IAAIuwE,EAAY,CACd39B,IAAK63B,EAAOC,KAAK1qE,IAEoB,IAAnCyqE,EAAOC,KAAK1qE,GAAG/F,QAAQ,UACzBs2E,EAAUC,SAAW/F,EAAO+F,SAC5BD,EAAUE,WAAahG,EAAOgG,YAEhCH,EAAc72E,KAAK82E,EACrB,MAEAD,EAAc72E,KAAKorE,EAASyF,WAAW5xE,GAE3C,CACAmsE,EAASyF,WAAagG,CACxB,CAEF,OAAO,IAAID,qBAAqBxL,EAAUC,EAC5C,EACA/vD,OAAOovD,kBAAkB3pE,UAAY61E,qBAAqB71E,UAGtD61E,qBAAqBlK,qBACvB5rE,OAAOsI,eAAekS,OAAOovD,kBAAmB,sBAAuB,CACrEphE,IAAK,WACH,OAAOstE,qBAAqBlK,mBAC9B,IAIJpxD,OAAOuxD,sBAAwBoK,yBAC/B37D,OAAOsxD,gBAAkBsK,oBAI3B,CAAC,sBAAuB,uBAAwB,mBAC3C3pD,SAAQ,SAAS7O,GAChB,IAAIiuD,EAAejC,kBAAkB3pE,UAAU2d,GAC/CgsD,kBAAkB3pE,UAAU2d,GAAU,WAGpC,OAFAha,UAAU,GAAK,IAAiB,oBAAXga,EACjBkuD,gBAAkBC,uBAAuBnoE,UAAU,IAChDioE,EAAajkE,MAAM1D,KAAMN,UAClC,CACF,IAGJ,IAAIooE,EACApC,kBAAkB3pE,UAAUgsE,gBAWhC,GAVArC,kBAAkB3pE,UAAUgsE,gBAAkB,WAC5C,OAAKroE,UAAU,GAMRooE,EAAsBpkE,MAAM1D,KAAMN,YALnCA,UAAU,IACZA,UAAU,GAAGgE,MAAM,MAEdoL,QAAQC,UAGnB,EAEI41D,EAAe3uC,QAAU,GAAI,CAE/B,IASIm8C,EAAiBzM,kBAAkB3pE,UAAU2qE,SACjDhB,kBAAkB3pE,UAAU2qE,SAAW,SAASC,EAAUyL,EAAQC,GAChE,OAAOF,EAAezuE,MAAM1D,KAAM,CAAC2mE,GAAY,OAC5C7yD,MAAK,SAAS0zD,GACb,OAba,SAASA,GAC1B,IAAIxuD,EAAM,IAAIutB,IAKd,OAJAzqC,OAAOoX,KAAKs0D,GAAOj/C,SAAQ,SAAStV,GAClC+F,EAAI9T,IAAI+N,EAAKu0D,EAAMv0D,IACnB+F,EAAI/F,GAAOu0D,EAAMv0D,EACnB,IACO+F,CACT,CAMauuD,CAAaC,EACtB,IACC1zD,KAAKs+D,EAAQC,EAClB,CACF,CAzFA,CA0FF,GAIF94E,EAAOC,QAAU,CACf+rE,YAAaP,EAAYO,YACzBD,iBAAkBN,EAAYM,iBAC9BJ,mBAAoBF,EAAYE,mBAChCE,iBAAkB9nE,EAAQ,oCCtJ5B,IAAIonE,EAAUpnE,EAAAA,MAAAA,IACVqnE,EAAiBrnE,EAAAA,MAAAA,eAGrB/D,EAAOC,QAAU,WACf,IAAI2vE,EAAa,SAASnlE,GACxB,MAAO,CACLoI,KAAM,CACJkmE,cAAe,kBACflJ,sBAAuB,mBACvBplE,EAAEoI,OAASpI,EAAEoI,KACfE,QAAS,CACP,6BAA8B,wFAE9BtI,EAAEsI,UAAYtI,EAAEsI,QAClBg9D,WAAYtlE,EAAEslE,WACdztE,SAAU,WACR,OAAOmE,KAAKoM,MAAQpM,KAAKsM,SAAW,MAAQtM,KAAKsM,OACnD,EAEJ,EAGIimE,EAAgB,SAASl/D,EAAam2D,EAAW9kC,GACnD,IAAI8tC,EAAqB,SAAS/vE,GAChC,GAAiB,kBAANA,GAAkBA,EAAEnF,QAC7B,OAAOmF,EAET,IAAInF,EAAU,GAqCd,OApCAxB,OAAOoX,KAAKzQ,GAAG8lB,SAAQ,SAAStV,GAC9B,GAAY,YAARA,GAA6B,aAARA,GAA8B,gBAARA,EAA/C,CAGA,IAAIsjB,EAAI9zB,EAAEwQ,GAA0B,kBAAXxQ,EAAEwQ,GACvBxQ,EAAEwQ,GAAO,CAACk1D,MAAO1lE,EAAEwQ,IAavB,QAZclW,IAAVw5B,EAAEzzB,UACQ/F,IAAVw5B,EAAE9wB,UAAiC1I,IAAZw5B,EAAE6xC,OAC3B9qE,EAAQtC,KAAKiY,QAEClW,IAAZw5B,EAAE6xC,QACmB,kBAAZ7xC,EAAE6xC,MACX7xC,EAAGzzB,IAAMyzB,EAAE9wB,IAAM8wB,EAAE6xC,MAEnB3lE,EAAEwQ,GAAOsjB,EAAE6xC,aAEN7xC,EAAE6xC,YAEKrrE,IAAZw5B,EAAE4xC,MAAqB,CACzB1lE,EAAE8lE,SAAW9lE,EAAE8lE,UAAY,GAC3B,IAAI/hC,EAAK,CAAC,EACa,kBAAZjQ,EAAE4xC,MACX3hC,EAAGvzB,GAAO,CAACnQ,IAAKyzB,EAAE4xC,MAAO1iE,IAAK8wB,EAAE4xC,OAEhC3hC,EAAGvzB,GAAOsjB,EAAE4xC,MAEd1lE,EAAE8lE,SAASvtE,KAAKwrC,UACTjQ,EAAE4xC,MACJrsE,OAAOoX,KAAKqjB,GAAG57B,eACX8H,EAAEwQ,EAEb,CA5BA,CA6BF,IACI3V,EAAQ3C,SACV8H,EAAEnF,QAAUA,GAEPmF,CACT,EAYA,OAXA4Q,EAAc2iD,KAAKuL,MAAMvL,KAAKC,UAAU5iD,IACpCsxD,EAAe3uC,QAAU,KAC3B0uC,EAAQ,SAAW1O,KAAKC,UAAU5iD,IAC9BA,EAAYK,QACdL,EAAYK,MAAQ8+D,EAAmBn/D,EAAYK,QAEjDL,EAAYI,QACdJ,EAAYI,MAAQ++D,EAAmBn/D,EAAYI,QAErDixD,EAAQ,SAAW1O,KAAKC,UAAU5iD,KAE7BM,UAAU8+D,gBAAgBp/D,EAAam2D,GAAW,SAASxlE,GAChE0gC,EAAQykC,EAAWnlE,GACrB,GACF,EA2BA,GAjBK2P,UAAUE,eACbF,UAAUE,aAAe,CAACD,aARD,SAASP,GAClC,OAAO,IAAIvE,SAAQ,SAASC,EAASC,GACnCujE,EAAcl/D,EAAatE,EAASC,EACtC,GACF,EAKI4C,iBAAkB,WAAa,EAC/BE,oBAAqB,WAAa,IAGtC6B,UAAUE,aAAag1D,iBACnBl1D,UAAUE,aAAag1D,kBAAoB,WACzC,OAAO,IAAI/5D,SAAQ,SAASC,GAK1BA,EAJY,CACV,CAACwxD,KAAM,aAAc2I,SAAU,UAAWD,MAAO,GAAIc,QAAS,IAC9D,CAACxJ,KAAM,aAAc2I,SAAU,UAAWD,MAAO,GAAIc,QAAS,KAGlE,GACF,EAEApF,EAAe3uC,QAAU,GAAI,CAE/B,IAAI08C,EACA/+D,UAAUE,aAAag1D,iBAAiBx3D,KAAKsC,UAAUE,cAC3DF,UAAUE,aAAag1D,iBAAmB,WACxC,OAAO6J,IAAsB5+D,UAAK/W,GAAW,SAASiH,GACpD,GAAe,kBAAXA,EAAEoI,KACJ,MAAO,GAET,MAAMpI,CACR,GACF,CACF,CACA,GAAI2gE,EAAe3uC,QAAU,GAAI,CAC/B,IAAIg0C,EAAmBr2D,UAAUE,aAAaD,aAC1CvC,KAAKsC,UAAUE,cACnBF,UAAUE,aAAaD,aAAe,SAASnR,GAC7C,OAAOunE,EAAiBvnE,GAAGqR,MAAK,SAASC,GAEvC,GAAItR,EAAEiR,QAAUK,EAAOm2D,iBAAiBvvE,QACpC8H,EAAEgR,QAAUM,EAAOo2D,iBAAiBxvE,OAItC,MAHAoZ,EAAO4D,YAAY4Q,SAAQ,SAASsa,GAClCA,EAAMnrB,MACR,IACM,IAAI0yD,aAAa,oCACA,iBAEzB,OAAOr2D,CACT,IAAG,SAAS/P,GACV,OAAO8K,QAAQE,OAAOm6D,EAAWnlE,GACnC,GACF,CACF,CACA2P,UAAUC,aAAe,SAASP,EAAam2D,EAAW9kC,GACxD,GAAIigC,EAAe3uC,QAAU,GAC3B,OAAOu8C,EAAcl/D,EAAam2D,EAAW9kC,GAG/CxgC,QAAQ4M,KAAK,mFAEb6C,UAAUE,aAAaD,aAAaP,GAAaS,KAAK01D,EAAW9kC,EACnE,CACF,yBCxJA,IAAIugC,EAAa,CAQfG,iBAAkB,WAChBzxD,UAAUC,aAAeD,UAAU81D,kBACrC,GAIFlwE,EAAOC,QAAU,CACf4rE,iBAAkBH,EAAWG,yCCb/B,IAAIuN,GAAe,EAGfC,EAAQ,CACV/N,WAAY,SAASgO,GACnB,MAAoB,mBAATA,EACF,IAAIt3E,MAAM,yBAA2Bs3E,EACxC,4BAENF,EAAeE,EACPA,EAAQ,8BACZ,6BACN,EAEAh+D,IAAK,WACH,GAAsB,kBAAXyB,OAAqB,CAC9B,GAAIq8D,EACF,OAEqB,qBAAZzuE,SAAkD,oBAAhBA,QAAQ2Q,KACnD3Q,QAAQ2Q,IAAInR,MAAMQ,QAASxE,UAE/B,CACF,EAUAklE,eAAgB,SAASkO,EAAUC,EAAM9tE,GACvC,IAAIo1B,EAAQy4C,EAASz4C,MAAM04C,GAC3B,OAAO14C,GAASA,EAAM1/B,QAAUsK,GAAOnD,SAASu4B,EAAMp1B,GAAM,GAC9D,EAQA+tE,cAAe,WAEb,IAAI/L,EAAS,CACbA,QAAiB,KACjBA,QAAiB,MAGjB,GAAsB,qBAAX3wD,SAA2BA,OAAO3C,UAE3C,OADAszD,EAAOpxC,QAAU,iBACVoxC,EAIT,GAAItzD,UAAU8+D,gBACZxL,EAAOpxC,QAAU,UACjBoxC,EAAOjxC,QAAUh2B,KAAK4kE,eAAejxD,UAAUs/D,UAC3C,sBAAuB,QAGtB,GAAIt/D,UAAU81D,mBAEnB,GAAInzD,OAAOkwD,wBACTS,EAAOpxC,QAAU,SACjBoxC,EAAOjxC,QAAUh2B,KAAK4kE,eAAejxD,UAAUs/D,UAC7C,2BAA4B,OAIzB,CAYL,IAAIt/D,UAAUs/D,UAAU54C,MAAM,wBAS5B,OAFA4sC,EAAOpxC,QAAU,2EAEVoxC,EARPA,EAAOpxC,QAAU,SACjBoxC,EAAOjxC,QAAUh2B,KAAK4kE,eAAejxD,UAAUs/D,UAC7C,0BAA2B,EAQjC,KAGK,KAAIt/D,UAAUE,eACjBF,UAAUs/D,UAAU54C,MAAM,sBAQ5B,OADA4sC,EAAOpxC,QAAU,2BACVoxC,EAPPA,EAAOpxC,QAAU,OACjBoxC,EAAOjxC,QAAUh2B,KAAK4kE,eAAejxD,UAAUs/D,UAC3C,qBAAsB,EAM5B,CAEA,OAAOhM,CACT,GAIF1tE,EAAOC,QAAU,CACfqb,IAAK+9D,EAAM/9D,IACXgwD,WAAY+N,EAAM/N,WAClBF,eAAgBiO,EAAMI,gBACtBpO,eAAgBgO,EAAMhO,yCChIpBsO,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBr2E,IAAjBs2E,EACH,OAAOA,EAAa75E,QAGrB,IAAID,EAAS25E,EAAyBE,GAAY,CAGjD55E,QAAS,CAAC,GAOX,OAHA85E,EAAoBF,GAAU32E,KAAKlD,EAAOC,QAASD,EAAQA,EAAOC,QAAS25E,GAGpE55E,EAAOC,OACf,CAGA25E,EAAoB1yE,EAAI6yE,ECxBxBH,EAAoB3yE,EAAKjH,IACxB,IAAIg6E,EAASh6E,GAAUA,EAAOoc,WAC7B,IAAOpc,EAAiB,QACxB,IAAM,EAEP,OADA45E,EAAoB1+D,EAAE8+D,EAAQ,CAAE3uE,EAAG2uE,IAC5BA,CAAM,QCNd,IACIC,EADAC,EAAW33E,OAAOiW,eAAkBpV,GAASb,OAAOiW,eAAepV,GAASA,GAASA,EAAa,UAQtGw2E,EAAoB/mD,EAAI,SAAS/vB,EAAOgnD,GAEvC,GADU,EAAPA,IAAUhnD,EAAQ2D,KAAK3D,IAChB,EAAPgnD,EAAU,OAAOhnD,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPgnD,GAAahnD,EAAMsZ,WAAY,OAAOtZ,EAC1C,GAAW,GAAPgnD,GAAoC,oBAAfhnD,EAAMyX,KAAqB,OAAOzX,CAC5D,CACA,IAAIq3E,EAAK53E,OAAOyU,OAAO,MACvB4iE,EAAoB58C,EAAEm9C,GACtB,IAAIC,EAAM,CAAC,EACXH,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI9tD,EAAiB,EAAP09B,GAAYhnD,EAAyB,iBAAXspB,KAAyB6tD,EAAeh4E,QAAQmqB,GAAUA,EAAU8tD,EAAS9tD,GACxH7pB,OAAOyS,oBAAoBoX,GAAS4C,SAAStV,GAAS0gE,EAAI1gE,GAAO,IAAO5W,EAAM4W,KAI/E,OAFA0gE,EAAa,QAAI,IAAM,EACvBR,EAAoB1+D,EAAEi/D,EAAIC,GACnBD,CACR,MCxBAP,EAAoB1+D,EAAI,CAACjb,EAASo6E,KACjC,IAAI,IAAI3gE,KAAO2gE,EACXT,EAAoBU,EAAED,EAAY3gE,KAASkgE,EAAoBU,EAAEr6E,EAASyZ,IAC5EnX,OAAOsI,eAAe5K,EAASyZ,EAAK,CAAE5O,YAAY,EAAMC,IAAKsvE,EAAW3gE,IAE1E,ECNDkgE,EAAoB57C,EAAI,CAAC,EAGzB47C,EAAoBnvE,EAAK8vE,GACjBhlE,QAAQ4iE,IAAI51E,OAAOoX,KAAKigE,EAAoB57C,GAAGnM,QAAO,CAAComD,EAAUv+D,KACvEkgE,EAAoB57C,EAAEtkB,GAAK6gE,EAAStC,GAC7BA,IACL,KCNJ2B,EAAoB1mD,EAAKqnD,GAEjB,aAAeA,EAAf,qBCFRX,EAAoBY,SAAYD,IAEf,ECHjBX,EAAoB37C,EAAI,WACvB,GAA0B,kBAAfw8C,WAAyB,OAAOA,WAC3C,IACC,OAAOh0E,MAAQ,IAAIoO,SAAS,cAAb,EAChB,CAAE,MAAOpK,GACR,GAAsB,kBAAXsS,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB68D,EAAoBU,EAAI,CAACl3E,EAAKs3E,IAAUn4E,OAAOC,UAAUwZ,eAAe9Y,KAAKE,EAAKs3E,SCAlF,IAAIC,EAAa,CAAC,EACdC,EAAoB,QAExBhB,EAAoB5zD,EAAI,CAAC40B,EAAK9xB,EAAMpP,EAAK6gE,KACxC,GAAGI,EAAW//B,GAAQ+/B,EAAW//B,GAAKn5C,KAAKqnB,OAA3C,CACA,IAAI+xD,EAAQC,EACZ,QAAWt3E,IAARkW,EAEF,IADA,IAAIqhE,EAAUt9C,SAASu9C,qBAAqB,UACpCt6E,EAAI,EAAGA,EAAIq6E,EAAQ35E,OAAQV,IAAK,CACvC,IAAIya,EAAI4/D,EAAQr6E,GAChB,GAAGya,EAAE8/D,aAAa,QAAUrgC,GAAOz/B,EAAE8/D,aAAa,iBAAmBL,EAAoBlhE,EAAK,CAAEmhE,EAAS1/D,EAAG,KAAO,CACpH,CAEG0/D,IACHC,GAAa,GACbD,EAASp9C,SAASC,cAAc,WAEzBw9C,QAAU,QACjBL,EAAO7+C,QAAU,IACb49C,EAAoB7sC,IACvB8tC,EAAO17C,aAAa,QAASy6C,EAAoB7sC,IAElD8tC,EAAO17C,aAAa,eAAgBy7C,EAAoBlhE,GAExDmhE,EAAO7mE,IAAM4mC,GAEd+/B,EAAW//B,GAAO,CAAC9xB,GACnB,IAAIqyD,EAAmB,CAACC,EAAM9zD,KAE7BuzD,EAAO7zD,QAAU6zD,EAAOQ,OAAS,KACjC5/C,aAAaO,GACb,IAAIs/C,EAAUX,EAAW//B,GAIzB,UAHO+/B,EAAW//B,GAClBigC,EAAO/wC,YAAc+wC,EAAO/wC,WAAW9E,YAAY61C,GACnDS,GAAWA,EAAQtsD,SAAS3a,GAAQA,EAAGiT,KACpC8zD,EAAM,OAAOA,EAAK9zD,EAAM,EAExB0U,EAAUthB,WAAWygE,EAAiBrjE,KAAK,UAAMtU,EAAW,CAAEkC,KAAM,UAAW2G,OAAQwuE,IAAW,MACtGA,EAAO7zD,QAAUm0D,EAAiBrjE,KAAK,KAAM+iE,EAAO7zD,SACpD6zD,EAAOQ,OAASF,EAAiBrjE,KAAK,KAAM+iE,EAAOQ,QACnDP,GAAcr9C,SAAS7Y,KAAKqgB,YAAY41C,EApCkB,CAoCX,MCvChDjB,EAAoB58C,EAAK/8B,IACH,qBAAXiE,QAA0BA,OAAOq3E,aAC1Ch5E,OAAOsI,eAAe5K,EAASiE,OAAOq3E,YAAa,CAAEz4E,MAAO,WAE7DP,OAAOsI,eAAe5K,EAAS,aAAc,CAAE6C,OAAO,GAAO,ECL9D82E,EAAoB79D,EAAI,UCKxB,IAAIy/D,EAAkB,CACrB,IAAK,GAGN5B,EAAoB57C,EAAEh2B,EAAI,CAACuyE,EAAStC,KAElC,IAAIwD,EAAqB7B,EAAoBU,EAAEkB,EAAiBjB,GAAWiB,EAAgBjB,QAAW/2E,EACtG,GAA0B,IAAvBi4E,EAGF,GAAGA,EACFxD,EAASx2E,KAAKg6E,EAAmB,QAC3B,CAGL,IAAIrtD,EAAU,IAAI7Y,SAAQ,CAACC,EAASC,IAAYgmE,EAAqBD,EAAgBjB,GAAW,CAAC/kE,EAASC,KAC1GwiE,EAASx2E,KAAKg6E,EAAmB,GAAKrtD,GAGtC,IAAIwsB,EAAMg/B,EAAoB79D,EAAI69D,EAAoB1mD,EAAEqnD,GAEpD3vE,EAAQ,IAAI5I,MAgBhB43E,EAAoB5zD,EAAE40B,GAfFtzB,IACnB,GAAGsyD,EAAoBU,EAAEkB,EAAiBjB,KAEf,KAD1BkB,EAAqBD,EAAgBjB,MACRiB,EAAgBjB,QAAW/2E,GACrDi4E,GAAoB,CACtB,IAAIC,EAAYp0D,IAAyB,SAAfA,EAAM5hB,KAAkB,UAAY4hB,EAAM5hB,MAChEi2E,EAAUr0D,GAASA,EAAMjb,QAAUib,EAAMjb,OAAO2H,IACpDpJ,EAAMmI,QAAU,iBAAmBwnE,EAAU,cAAgBmB,EAAY,KAAOC,EAAU,IAC1F/wE,EAAMiI,KAAO,iBACbjI,EAAMlF,KAAOg2E,EACb9wE,EAAMgxE,QAAUD,EAChBF,EAAmB,GAAG7wE,EACvB,CACD,GAEwC,SAAW2vE,EAASA,EAE/D,CACD,EAcF,IAAIsB,EAAuB,CAACC,EAA4Bl2E,KACvD,IAKIi0E,EAAUU,EALVwB,EAAWn2E,EAAK,GAChBo2E,EAAcp2E,EAAK,GACnBq2E,EAAUr2E,EAAK,GAGIlF,EAAI,EAC3B,GAAGq7E,EAASG,MAAMvqC,GAAgC,IAAxB6pC,EAAgB7pC,KAAa,CACtD,IAAIkoC,KAAYmC,EACZpC,EAAoBU,EAAE0B,EAAanC,KACrCD,EAAoB1yE,EAAE2yE,GAAYmC,EAAYnC,IAGhD,GAAGoC,EAAsBA,EAAQrC,EAClC,CAEA,IADGkC,GAA4BA,EAA2Bl2E,GACrDlF,EAAIq7E,EAAS36E,OAAQV,IACzB65E,EAAUwB,EAASr7E,GAChBk5E,EAAoBU,EAAEkB,EAAiBjB,IAAYiB,EAAgBjB,IACrEiB,EAAgBjB,GAAS,KAE1BiB,EAAgBjB,GAAW,CAC5B,EAIG4B,EAAqBt7D,KAAuB,iBAAIA,KAAuB,kBAAK,GAChFs7D,EAAmBntD,QAAQ6sD,EAAqB/jE,KAAK,KAAM,IAC3DqkE,EAAmB16E,KAAOo6E,EAAqB/jE,KAAK,KAAMqkE,EAAmB16E,KAAKqW,KAAKqkE,+BChF3EC,iRAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,IAAAA,EAsBX,KAqKD,MAAMC,EAAoB,WAySV,SAAAC,EAAUx5E,EAAYiQ,GACpC,IAAc,IAAVjQ,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAId,MAAM+Q,EAEpB,CAEgB,SAAAgE,EAAQwlE,EAAWxpE,GACjC,IAAKwpE,EAAM,CAEc,qBAAZ5xE,SAAyBA,QAAQ4M,KAAKxE,GAEjD,IAME,MAAM,IAAI/Q,MAAM+Q,EAEjB,CAAC,MAAOtI,GAAI,CACd,CACH,CASA,SAAS+xE,EAAgB/kC,EAAoBp+B,GAC3C,MAAO,CACLojE,IAAKhlC,EAAS7/B,MACd8B,IAAK+9B,EAAS/9B,IACd45D,IAAKj6D,EAET,CAKM,SAAUqjE,EACdtwD,EACAmF,EACA3Z,EACA8B,GAcA,YAfA,IAAA9B,IAAAA,EAAa,MAGD+kE,EAAA,CACVC,SAA6B,kBAAZxwD,EAAuBA,EAAUA,EAAQwwD,SAC1Dj9D,OAAQ,GACRk9D,KAAM,IACY,kBAAPtrD,EAAkBurD,EAAUvrD,GAAMA,EAAE,CAC/C3Z,QAKA8B,IAAM6X,GAAOA,EAAgB7X,KAAQA,GAjChCpQ,KAAKw1C,SAASx8C,SAAS,IAAIkG,OAAO,EAAG,IAoC9C,CAKgB,SAAAu0E,EAAUC,GAIV,IAJW,SACzBJ,EAAW,IAAG,OACdj9D,EAAS,GAAE,KACXk9D,EAAO,IACOG,EAKd,OAJIr9D,GAAqB,MAAXA,IACZi9D,GAAiC,MAArBj9D,EAAO6oB,OAAO,GAAa7oB,EAAS,IAAMA,GACpDk9D,GAAiB,MAATA,IACVD,GAA+B,MAAnBC,EAAKr0C,OAAO,GAAaq0C,EAAO,IAAMA,GAC7CD,CACT,CAKM,SAAUE,EAAUG,GACxB,IAAIC,EAA4B,CAAC,EAEjC,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAKh7E,QAAQ,KACzBk7E,GAAa,IACfD,EAAWL,KAAOI,EAAKz0E,OAAO20E,GAC9BF,EAAOA,EAAKz0E,OAAO,EAAG20E,IAGxB,IAAIC,EAAcH,EAAKh7E,QAAQ,KAC3Bm7E,GAAe,IACjBF,EAAWv9D,OAASs9D,EAAKz0E,OAAO40E,GAChCH,EAAOA,EAAKz0E,OAAO,EAAG40E,IAGpBH,IACFC,EAAWN,SAAWK,EAEzB,CAED,OAAOC,CACT,CASA,SAASG,EACPC,EACAC,EACAC,EACAp9D,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAErD,EAAS0gB,SAASqgB,YAAY,SAAE2/B,GAAW,GAAUr9D,EACvDs9D,EAAgB3gE,EAAO4gE,QACvBnwB,EAAS4uB,EAAOwB,IAChBpnE,EAA4B,KAE5B6C,EAAQwkE,IASZ,SAASA,IAEP,OADYH,EAAc9lE,OAAS,CAAE07D,IAAK,OAC7BA,GACf,CAEA,SAASwK,IACPtwB,EAAS4uB,EAAOwB,IAChB,IAAIG,EAAYF,IACZ9nD,EAAqB,MAAbgoD,EAAoB,KAAOA,EAAY1kE,EACnDA,EAAQ0kE,EACJvnE,GACFA,EAAS,CAAEg3C,SAAQ/V,SAAUkmC,EAAQlmC,SAAU1hB,SAEnD,CA+CA,SAASioD,EAAUzsD,GAIjB,IAAIqX,EACyB,SAA3B7rB,EAAO06B,SAASwmC,OACZlhE,EAAO06B,SAASwmC,OAChBlhE,EAAO06B,SAASyF,KAElBA,EAAqB,kBAAP3rB,EAAkBA,EAAKwrD,EAAWxrD,GASpD,OALA2rB,EAAOA,EAAK/wC,QAAQ,KAAM,OAC1BmwE,EACE1zC,EACsE,sEAAAsU,GAEjE,IAAIwvB,IAAIxvB,EAAMtU,EACvB,CApFa,MAATvvB,IACFA,EAAQ,EACRqkE,EAAcQ,aAAYvB,EAAM,GAAAe,EAAc9lE,MAAO,CAAA07D,IAAKj6D,IAAS,KAoFrE,IAAIskE,EAAmB,CACrB,UAAInwB,GACF,OAAOA,GAET,YAAI/V,GACF,OAAO6lC,EAAYvgE,EAAQ2gE,IAE7BS,MAAAA,CAAO9pE,GACL,GAAImC,EACF,MAAM,IAAIxU,MAAM,8CAKlB,OAHA+a,EAAO1E,iBAAiBgkE,EAAmByB,GAC3CtnE,EAAWnC,EAEJ,KACL0I,EAAOxE,oBAAoB8jE,EAAmByB,GAC9CtnE,EAAW,IAAI,GAGnB+mE,WAAWhsD,GACFgsD,EAAWxgE,EAAQwU,GAE5BysD,YACAI,cAAAA,CAAe7sD,GAEb,IAAIqpB,EAAMojC,EAAUzsD,GACpB,MAAO,CACLqrD,SAAUhiC,EAAIgiC,SACdj9D,OAAQi7B,EAAIj7B,OACZk9D,KAAMjiC,EAAIiiC,OAGdp7E,KAlGF,SAAc8vB,EAAQ3Z,GACpB41C,EAAS4uB,EAAOiC,KAChB,IAAI5mC,EAAWilC,EAAeiB,EAAQlmC,SAAUlmB,EAAI3Z,GAChD4lE,GAAkBA,EAAiB/lC,EAAUlmB,GAEjDlY,EAAQwkE,IAAa,EACrB,IAAIS,EAAe9B,EAAgB/kC,EAAUp+B,GACzCuhC,EAAM+iC,EAAQJ,WAAW9lC,GAG7B,IACEimC,EAAca,UAAUD,EAAc,GAAI1jC,GAC1C,MAAOhwC,GAKP,GAAIA,aAAiBimE,cAA+B,mBAAfjmE,EAAMiI,KACzC,MAAMjI,EAIRmS,EAAO06B,SAASplB,OAAOuoB,EACxB,CAEG6iC,GAAYjnE,GACdA,EAAS,CAAEg3C,SAAQ/V,SAAUkmC,EAAQlmC,SAAU1hB,MAAO,GAE1D,EAuEE5pB,QArEF,SAAiBolB,EAAQ3Z,GACvB41C,EAAS4uB,EAAOoC,QAChB,IAAI/mC,EAAWilC,EAAeiB,EAAQlmC,SAAUlmB,EAAI3Z,GAChD4lE,GAAkBA,EAAiB/lC,EAAUlmB,GAEjDlY,EAAQwkE,IACR,IAAIS,EAAe9B,EAAgB/kC,EAAUp+B,GACzCuhC,EAAM+iC,EAAQJ,WAAW9lC,GAC7BimC,EAAcQ,aAAaI,EAAc,GAAI1jC,GAEzC6iC,GAAYjnE,GACdA,EAAS,CAAEg3C,SAAQ/V,SAAUkmC,EAAQlmC,SAAU1hB,MAAO,GAE1D,EAyDE0oD,GAAGx3E,GACMy2E,EAAce,GAAGx3E,IAI5B,OAAO02E,CACT,CC7tBA,IAAYe,GAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,IAAAA,EAKX,KAyOiC,IAAIvhD,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAoNI,SAAUwhD,EAGdC,EACAC,EACAC,QAAQ,IAARA,IAAAA,EAAW,KAEX,IAGIlC,EAAWmC,GAFU,kBAAhBF,EAA2B/B,EAAU+B,GAAeA,GAEvBjC,UAAY,IAAKkC,GAEvD,GAAgB,MAAZlC,EACF,OAAO,KAGT,IAAIoC,EAAWC,EAAcL,IAgM/B,SAA2BI,GACzBA,EAASxkD,MAAK,CAACnvB,EAAG/F,IAChB+F,EAAE6zE,QAAU55E,EAAE45E,MACV55E,EAAE45E,MAAQ7zE,EAAE6zE,MAyCpB,SAAwB7zE,EAAa/F,GACnC,IAAI65E,EACF9zE,EAAEjK,SAAWkE,EAAElE,QAAUiK,EAAElI,MAAM,GAAI,GAAG8vE,OAAM,CAAChsE,EAAGvG,IAAMuG,IAAM3B,EAAE5E,KAElE,OAAOy+E,EAKH9zE,EAAEA,EAAEjK,OAAS,GAAKkE,EAAEA,EAAElE,OAAS,GAG/B,CACN,CArDQg+E,CACE/zE,EAAEg0E,WAAW5/D,KAAK2pB,GAASA,EAAKk2C,gBAChCh6E,EAAE+5E,WAAW5/D,KAAK2pB,GAASA,EAAKk2C,kBAG1C,CAxMEC,CAAkBP,GAElB,IAAIQ,EAAU,KACd,IAAK,IAAI9+E,EAAI,EAAc,MAAX8+E,GAAmB9+E,EAAIs+E,EAAS59E,SAAUV,EAAG,CAO3D,IAAI++E,EAAUC,EAAW9C,GACzB4C,EAAUG,EAA0CX,EAASt+E,GAAI++E,EAClE,CAED,OAAOD,CACT,CAyCA,SAASP,EAGPL,EACAI,EACAY,EACAC,QAF2C,IAA3Cb,IAAAA,EAA2C,SAC3C,IAAAY,IAAAA,EAA4C,SAClC,IAAVC,IAAAA,EAAa,IAEb,IAAIC,EAAeA,CACjBC,EACA1mE,EACA2mE,KAEA,IAAI52C,EAAmC,CACrC42C,kBACmBx8E,IAAjBw8E,EAA6BD,EAAM9C,MAAQ,GAAK+C,EAClDC,eAAuC,IAAxBF,EAAME,cACrBX,cAAejmE,EACf0mE,SAGE32C,EAAK42C,aAAaE,WAAW,OAC/B5D,EACElzC,EAAK42C,aAAaE,WAAWL,GAC7B,wBAAwBz2C,EAAK42C,aAA7B,wBACMH,EADN,4GAKFz2C,EAAK42C,aAAe52C,EAAK42C,aAAa78E,MAAM08E,EAAWz+E,SAGzD,IAAI67E,EAAOkD,EAAU,CAACN,EAAYz2C,EAAK42C,eACnCX,EAAaO,EAAYp0E,OAAO49B,GAKhC22C,EAAMt8C,UAAYs8C,EAAMt8C,SAASriC,OAAS,IAC5Ck7E,GAGkB,IAAhByD,EAAM1mE,MACN,4FACuC4jE,EAAI,MAG7CgC,EAAcc,EAAMt8C,SAAUu7C,EAAUK,EAAYpC,KAKpC,MAAd8C,EAAM9C,MAAiB8C,EAAM1mE,QAIjC2lE,EAASv9E,KAAK,CACZw7E,OACAiC,MAAOkB,EAAanD,EAAM8C,EAAM1mE,OAChCgmE,cACA,EAaJ,OAXAT,EAAO5vD,SAAQ,CAAC+wD,EAAO1mE,KAAS,IAAAgnE,EAE9B,GAAmB,KAAfN,EAAM9C,MAA0B,OAAXoD,EAACN,EAAM9C,OAANoD,EAAY3zE,SAAS,KAG7C,IAAK,IAAI4zE,KAAYC,EAAwBR,EAAM9C,MACjD6C,EAAaC,EAAO1mE,EAAOinE,QAH7BR,EAAaC,EAAO1mE,EAKrB,IAGI2lE,CACT,CAgBA,SAASuB,EAAwBtD,GAC/B,IAAIuD,EAAWvD,EAAKnpE,MAAM,KAC1B,GAAwB,IAApB0sE,EAASp/E,OAAc,MAAO,GAElC,IAAK6N,KAAUwxE,GAAQD,EAGnBE,EAAazxE,EAAM6Q,SAAS,KAE5B6gE,EAAW1xE,EAAM9C,QAAQ,MAAO,IAEpC,GAAoB,IAAhBs0E,EAAKr/E,OAGP,OAAOs/E,EAAa,CAACC,EAAU,IAAM,CAACA,GAGxC,IAAIC,EAAeL,EAAwBE,EAAK7+E,KAAK,MAEjD8rE,EAAmB,GAqBvB,OAZAA,EAAOjsE,QACFm/E,EAAanhE,KAAKohE,GACP,KAAZA,EAAiBF,EAAW,CAACA,EAAUE,GAASj/E,KAAK,QAKrD8+E,GACFhT,EAAOjsE,QAAQm/E,GAIVlT,EAAOjuD,KAAK6gE,GACjBrD,EAAKiD,WAAW,MAAqB,KAAbI,EAAkB,IAAMA,GAEpD,CAaA,MAAMQ,EAAU,YACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAWjmE,GAAoB,MAANA,EAE/B,SAASilE,EAAanD,EAAc5jE,GAClC,IAAImnE,EAAWvD,EAAKnpE,MAAM,KACtButE,EAAeb,EAASp/E,OAS5B,OARIo/E,EAAStE,KAAKkF,KAChBC,GAAgBF,GAGd9nE,IACFgoE,GAAgBL,GAGXR,EACJ5xD,QAAQzT,IAAOimE,EAAQjmE,KACvB0W,QACC,CAACqtD,EAAOoC,IACNpC,GACC4B,EAAQ9hD,KAAKsiD,GACVP,EACY,KAAZO,EACAL,EACAC,IACNG,EAEN,CAiBA,SAAS1B,EAIP4B,EACA3E,GAEA,IAAI,WAAEyC,GAAekC,EAEjBC,EAAgB,CAAC,EACjBC,EAAkB,IAClBjC,EAA2D,GAC/D,IAAK,IAAI9+E,EAAI,EAAGA,EAAI2+E,EAAWj+E,SAAUV,EAAG,CAC1C,IAAI0oC,EAAOi2C,EAAW3+E,GAClByB,EAAMzB,IAAM2+E,EAAWj+E,OAAS,EAChCsgF,EACkB,MAApBD,EACI7E,EACAA,EAASz5E,MAAMs+E,EAAgBrgF,SAAW,IAC5C0/B,EAAQ6gD,EACV,CAAE1E,KAAM7zC,EAAK42C,aAAcC,cAAe72C,EAAK62C,cAAe99E,OAC9Du/E,GAGF,IAAK5gD,EAAO,OAAO,KAEnBv+B,OAAO8vB,OAAOmvD,EAAe1gD,EAAM9N,QAEnC,IAAI+sD,EAAQ32C,EAAK22C,MAEjBP,EAAQ/9E,KAAK,CAEXuxB,OAAQwuD,EACR5E,SAAUuD,EAAU,CAACsB,EAAiB3gD,EAAM87C,WAC5CgF,aAAcC,EACZ1B,EAAU,CAACsB,EAAiB3gD,EAAM8gD,gBAEpC7B,UAGyB,MAAvBj/C,EAAM8gD,eACRH,EAAkBtB,EAAU,CAACsB,EAAiB3gD,EAAM8gD,eAEvD,CAED,OAAOpC,CACT,CAiHgB,SAAAmC,EAIdG,EACAlF,GAEuB,kBAAZkF,IACTA,EAAU,CAAE7E,KAAM6E,EAAS7B,eAAe,EAAO99E,KAAK,IAGxD,IAAK4/E,EAASC,GA4ChB,SACE/E,EACAgD,EACA99E,QADa,IAAb89E,IAAAA,GAAgB,QACb,IAAH99E,IAAAA,GAAM,GAEN4U,EACW,MAATkmE,IAAiBA,EAAKn9D,SAAS,MAAQm9D,EAAKn9D,SAAS,MACrD,eAAem9D,EAAf,oCACMA,EAAK9wE,QAAQ,MAAO,MAD1B,qIAGsC8wE,EAAK9wE,QAAQ,MAAO,MAAK,MAGjE,IAAI6mB,EAA8B,GAC9BivD,EACF,IACAhF,EACG9wE,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QACC,qBACA,CAACkgB,EAAW61D,EAAmBxB,KAC7B1tD,EAAOvxB,KAAK,CAAEygF,YAAWxB,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAIzCzD,EAAKn9D,SAAS,MAChBkT,EAAOvxB,KAAK,CAAEygF,UAAW,MACzBD,GACW,MAAThF,GAAyB,OAATA,EACZ,QACA,qBACG96E,EAET8/E,GAAgB,QACE,KAAThF,GAAwB,MAATA,IAQxBgF,GAAgB,iBAKlB,IAAIF,EAAU,IAAII,OAAOF,EAAchC,OAAgBz8E,EAAY,KAEnE,MAAO,CAACu+E,EAAS/uD,EACnB,CAjGkCovD,CAC9BN,EAAQ7E,KACR6E,EAAQ7B,cACR6B,EAAQ3/E,KAGN2+B,EAAQ87C,EAAS97C,MAAMihD,GAC3B,IAAKjhD,EAAO,OAAO,KAEnB,IAAI2gD,EAAkB3gD,EAAM,GACxB8gD,EAAeH,EAAgBt1E,QAAQ,UAAW,MAClDk2E,EAAgBvhD,EAAM39B,MAAM,GAuBhC,MAAO,CACL6vB,OAvBmBgvD,EAAenwD,QAClC,CAACgvC,EAAImc,EAA6B3jE,KAAS,IAApC,UAAE6oE,EAAS,WAAExB,GAAY1D,EAG9B,GAAkB,MAAdkF,EAAmB,CACrB,IAAII,EAAaD,EAAchpE,IAAU,GACzCuoE,EAAeH,EACZt+E,MAAM,EAAGs+E,EAAgBrgF,OAASkhF,EAAWlhF,QAC7C+K,QAAQ,UAAW,KACvB,CAED,MAAMrJ,EAAQu/E,EAAchpE,GAM5B,OAJEwnD,EAAKqhB,GADHxB,IAAe59E,OACCU,GAECV,GAAS,IAAIqJ,QAAQ,OAAQ,KAE3C00D,CAAI,GAEb,CAAC,GAKD+b,SAAU6E,EACVG,eACAE,UAEJ,CA2DA,SAASpC,EAAW58E,GAClB,IACE,OAAOA,EACJgR,MAAM,KACN2L,KAAKS,GAAMqiE,mBAAmBriE,GAAG/T,QAAQ,MAAO,SAChDvK,KAAK,KACR,MAAOgJ,GAQP,OAPAmM,GACE,EACA,iBAAiBjU,EAAjB,oHAEe8H,EAAK,MAGf9H,CACR,CACH,CAKgB,SAAAi8E,EACdnC,EACAkC,GAEA,GAAiB,MAAbA,EAAkB,OAAOlC,EAE7B,IAAKA,EAASr2E,cAAc25E,WAAWpB,EAASv4E,eAC9C,OAAO,KAKT,IAAIi8E,EAAa1D,EAASh/D,SAAS,KAC/Bg/D,EAAS19E,OAAS,EAClB09E,EAAS19E,OACTqhF,EAAW7F,EAASp0C,OAAOg6C,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGF7F,EAASz5E,MAAMq/E,IAAe,GACvC,CA2CA,SAASE,EACP1iC,EACA2iC,EACAv8D,EACA62D,GAEA,MACE,qBAAqBj9B,EAArB,2CACQ2iC,EAAK,YAAalmB,KAAKC,UAC7BugB,GAFF,yCAIQ72D,EAJR,2HAOJ,CAyBM,SAAUw8D,EAEdpD,GACA,OAAOA,EAAQ5wD,QACb,CAACkS,EAAOznB,IACI,IAAVA,GAAgBynB,EAAMi/C,MAAM9C,MAAQn8C,EAAMi/C,MAAM9C,KAAK77E,OAAS,GAEpE,CAIgB,SAAAyhF,EAEdrD,EAAcsD,GACd,IAAIC,EAAcH,EAA2BpD,GAK7C,OAAIsD,EACKC,EAAYtjE,KAAI,CAACqhB,EAAOwyC,IAC7BA,IAAQkM,EAAQp+E,OAAS,EAAI0/B,EAAM87C,SAAW97C,EAAM8gD,eAIjDmB,EAAYtjE,KAAKqhB,GAAUA,EAAM8gD,cAC1C,CAKM,SAAUoB,EACdC,EACAC,EACAC,EACAC,GAEA,IAAI7xD,OAFU,IAAd6xD,IAAAA,GAAiB,GAGI,kBAAVH,EACT1xD,EAAKurD,EAAUmG,IAEf1xD,EAAEorD,EAAQ,GAAAsG,GAEV3G,GACG/qD,EAAGqrD,WAAarrD,EAAGqrD,SAASlwE,SAAS,KACtCg2E,EAAoB,IAAK,WAAY,SAAUnxD,IAEjD+qD,GACG/qD,EAAGqrD,WAAarrD,EAAGqrD,SAASlwE,SAAS,KACtCg2E,EAAoB,IAAK,WAAY,OAAQnxD,IAE/C+qD,GACG/qD,EAAG5R,SAAW4R,EAAG5R,OAAOjT,SAAS,KAClCg2E,EAAoB,IAAK,SAAU,OAAQnxD,KAI/C,IAGI1uB,EAHAwgF,EAAwB,KAAVJ,GAAgC,KAAhB1xD,EAAGqrD,SACjC0G,EAAaD,EAAc,IAAM9xD,EAAGqrD,SAaxC,GAAkB,MAAd0G,EACFzgF,EAAOsgF,MACF,CACL,IAAII,EAAqBL,EAAe9hF,OAAS,EAMjD,IAAKgiF,GAAkBE,EAAWpD,WAAW,MAAO,CAClD,IAAIsD,EAAaF,EAAWxvE,MAAM,KAElC,KAAyB,OAAlB0vE,EAAW,IAChBA,EAAWpqE,QACXmqE,GAAsB,EAGxBhyD,EAAGqrD,SAAW4G,EAAW5hF,KAAK,IAC/B,CAEDiB,EAAO0gF,GAAsB,EAAIL,EAAeK,GAAsB,GACvE,CAED,IAAItG,WAzKsB1rD,EAAQkyD,QAAY,IAAZA,IAAAA,EAAe,KACjD,IACE7G,SAAU0G,EAAU,OACpB3jE,EAAS,GAAE,KACXk9D,EAAO,IACS,kBAAPtrD,EAAkBurD,EAAUvrD,GAAMA,EAEzCqrD,EAAW0G,EACXA,EAAWpD,WAAW,KACpBoD,EAWR,SAAyBtD,EAAsByD,GAC7C,IAAIjD,EAAWiD,EAAat3E,QAAQ,OAAQ,IAAI2H,MAAM,KAYtD,OAXuBksE,EAAalsE,MAAM,KAEzBkb,SAASsyD,IACR,OAAZA,EAEEd,EAASp/E,OAAS,GAAGo/E,EAASlnE,MACb,MAAZgoE,GACTd,EAAS/+E,KAAK6/E,EACf,IAGId,EAASp/E,OAAS,EAAIo/E,EAAS5+E,KAAK,KAAO,GACpD,CAxBQ8hF,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACL7G,WACAj9D,OAAQgkE,EAAgBhkE,GACxBk9D,KAAM+G,EAAc/G,GAExB,CAuJagH,CAAYtyD,EAAI1uB,GAGvBihF,EACFR,GAA6B,MAAfA,GAAsBA,EAAWxjE,SAAS,KAEtDikE,GACDV,GAA8B,MAAfC,IAAuBH,EAAiBrjE,SAAS,KAQnE,OANGm9D,EAAKL,SAAS98D,SAAS,OACvBgkE,IAA4BC,IAE7B9G,EAAKL,UAAY,KAGZK,CACT,OAiBakD,EAAa6D,GACxBA,EAAMpiF,KAAK,KAAKuK,QAAQ,SAAU,KAKvB01E,EAAqBjF,GAChCA,EAASzwE,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAKlCw3E,EAAmBhkE,GAC7BA,GAAqB,MAAXA,EAEPA,EAAOugE,WAAW,KAClBvgE,EACA,IAAMA,EAHN,GAQOikE,EAAiB/G,GAC3BA,GAAiB,MAATA,EAAoBA,EAAKqD,WAAW,KAAOrD,EAAO,IAAMA,EAAzC,GA+BgB76E,MAyRpC,SAAUiiF,EAAqBr5E,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMs5E,QACe,kBAArBt5E,EAAMu5E,YACa,mBAAnBv5E,EAAMw5E,UACb,SAAUx5E,CAEd,CC75BA,MAAMy5E,EAAgD,CACpD,OACA,MACA,QACA,UAMIC,GAJuB,IAAInnD,IAC/BknD,GAG2C,CAC3C,SACGA,IAEuB,IAAIlnD,IAAgBmnD,GAEpB,IAAInnD,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MAmnElBj5B,OAAO,gPCptFtC,MAAMqgF,EACXC,EAAAA,cAAoD,MAK/C,MAAMC,EAAyBD,EAAAA,cAEpC,MA8CK,MAAME,EAAoBF,EAAAA,cAC/B,MAYK,MAAMG,EAAkBH,EAAAA,cAC7B,YAaWI,EAAeJ,EAAAA,cAAwC,CAClEK,OAAQ,KACRrF,QAAS,GACTsF,aAAa,IAOR,MAAMC,EAAoBP,EAAAA,cAAyB,MCnFnD,SAASQ,IACd,OAA4C,MAArCR,EAAAA,WAAiBG,EAC1B,CAYO,SAASM,IAQd,OANED,KADFE,GAAU,GAOHV,EAAAA,WAAiBG,GAAiBltC,QAC3C,CAkDA,SAAS0tC,EACPprE,GAEeyqE,EAAAA,WAAiBE,GAAmBU,QAKjDZ,EAAAA,gBAAsBzqE,EAE1B,CAQO,SAASsrE,IACd,IAAI,YAAEP,GAAgBN,EAAAA,WAAiBI,GAGvC,OAAOE,EAo3BT,WACE,IAAI,OAAEQ,GAAWC,GAAqBC,GAAeC,mBACjD9zC,EAAK+zC,GAAkBC,GAAoBF,mBAE3CG,EAAYpB,EAAAA,QAAa,GAsB7B,OArBAW,GAA0B,KACxBS,EAAUx5D,SAAU,CAAI,IAGOo4D,EAAAA,aAC/B,SAACjzD,EAAiBnR,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvCwlE,EAAUx5D,UAEG,kBAAPmF,EACT+zD,EAAOO,SAASt0D,GAEhB+zD,EAAOO,SAASt0D,EAAEorD,EAAA,CAAImJ,YAAan0C,GAAOvxB,IAE9C,GACA,CAACklE,EAAQ3zC,GAIb,CA/4BuBo0C,GAGvB,WAEIf,KADFE,GAAU,GAOV,IAAIc,EAAoBxB,EAAAA,WAAiBD,IACrC,SAAEzF,EAAQ,OAAEmH,EAAM,UAAE7rE,GAAcoqE,EAAAA,WAAiBE,IACnD,QAAElF,GAAYgF,EAAAA,WAAiBI,IAC7BhI,SAAUuG,GAAqB8B,IAEjCiB,EAAqBzpB,KAAKC,UAC5BypB,EAAoB3G,EAASyG,EAAOnD,uBAGlC8C,EAAYpB,EAAAA,QAAa,GAqD7B,OApDAW,GAA0B,KACxBS,EAAUx5D,SAAU,CAAI,IAGOo4D,EAAAA,aAC/B,SAACjzD,EAAiBnR,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,IAKvCwlE,EAAUx5D,QAAS,OAExB,GAAkB,kBAAPmF,EAET,YADAnX,EAAUqkE,GAAGltD,GAIf,IAAI0rD,EAAO+F,EACTzxD,EACAkrC,KAAKuL,MAAMke,GACX/C,EACqB,SAArB/iE,EAAQgmE,UASe,MAArBJ,GAA0C,MAAblH,IAC/B7B,EAAKL,SACe,MAAlBK,EAAKL,SACDkC,EACAqB,EAAU,CAACrB,EAAU7B,EAAKL,aAG/Bx8D,EAAQjU,QAAUiO,EAAUjO,QAAUiO,EAAU3Y,MACjDw7E,EACA78D,EAAQxI,MACRwI,EAEJ,GACA,CACE0+D,EACA1kE,EACA8rE,EACA/C,EACA6C,GAKN,CA1E6CK,EAC7C,CA2HO,SAASC,EACd/0D,EAAMg1D,GAEA,IADN,SAAEH,QAA8C,IAAAG,EAAG,CAAC,EAACA,GAEjD,OAAEN,GAAWzB,EAAAA,WAAiBE,IAC9B,QAAElF,GAAYgF,EAAAA,WAAiBI,IAC7BhI,SAAUuG,GAAqB8B,IACjCiB,EAAqBzpB,KAAKC,UAC5BypB,EAAoB3G,EAASyG,EAAOnD,uBAGtC,OAAO0B,EAAAA,SACL,IACExB,EACEzxD,EACAkrC,KAAKuL,MAAMke,GACX/C,EACa,SAAbiD,IAEJ,CAAC70D,EAAI20D,EAAoB/C,EAAkBiD,GAE/C,CAkBO,SAASI,GACd5H,EACAC,EACA4H,EACAR,GAGEjB,KADFE,GAAU,GAOV,IAAI,UAAE9qE,GAAcoqE,EAAAA,WAAiBE,IAC/BlF,QAASkH,GAAkBlC,EAAAA,WAAiBI,GAC9C+B,EAAaD,EAAcA,EAActlF,OAAS,GAClDwlF,EAAeD,EAAaA,EAAW3zD,OAAS,CAAC,EAEjD6zD,GADiBF,GAAaA,EAAW/J,SACpB+J,EAAaA,EAAW/E,aAAe,KAC9C+E,GAAcA,EAAW5G,MAqC3C,IAEItoC,EAFAqvC,EAAsB7B,IAG1B,GAAIpG,EAAa,KAAAkI,EACf,IAAIC,EACqB,kBAAhBnI,EAA2B/B,EAAU+B,GAAeA,EAGpC,MAAvBgI,IAC4B,OADFE,EACxBC,EAAkBpK,eAAQ,EAA1BmK,EAA4B7G,WAAW2G,KAF3C3B,GAAU,GASVztC,EAAWuvC,CACb,MACEvvC,EAAWqvC,EAGb,IAAIlK,EAAWnlC,EAASmlC,UAAY,IAEhC8E,EAAoB9E,EACxB,GAA2B,MAAvBiK,EAA4B,CAe9B,IAAII,EAAiBJ,EAAmB16E,QAAQ,MAAO,IAAI2H,MAAM,KAEjE4tE,EAAoB,IADL9E,EAASzwE,QAAQ,MAAO,IAAI2H,MAAM,KACd3Q,MAAM8jF,EAAe7lF,QAAQQ,KAAK,IACvE,CAEA,IAAI49E,EAAUb,EAAYC,EAAQ,CAAEhC,SAAU8E,IAmB9C,IAAIwF,EAAkBC,GACpB3H,GACEA,EAAQ//D,KAAKqhB,GACXv+B,OAAO8vB,OAAO,CAAC,EAAGyO,EAAO,CACvB9N,OAAQzwB,OAAO8vB,OAAO,CAAC,EAAGu0D,EAAc9lD,EAAM9N,QAC9C4pD,SAAUuD,EAAU,CAClB0G,EAEAzsE,EAAUgkE,eACNhkE,EAAUgkE,eAAet9C,EAAM87C,UAAUA,SACzC97C,EAAM87C,WAEZgF,aACyB,MAAvB9gD,EAAM8gD,aACFiF,EACA1G,EAAU,CACR0G,EAEAzsE,EAAUgkE,eACNhkE,EAAUgkE,eAAet9C,EAAM8gD,cAAchF,SAC7C97C,EAAM8gD,mBAIxB8E,EACAD,EACAR,GAMF,OAAIpH,GAAeqI,EAEf1C,EAAAA,cAACG,EAAgBrkB,SAAQ,CACvBx9D,MAAO,CACL20C,SAAQklC,EAAA,CACNC,SAAU,IACVj9D,OAAQ,GACRk9D,KAAM,GACNjlE,MAAO,KACP8B,IAAK,WACF+9B,GAEL2vC,eAAgBhL,EAAewB,MAGhCsJ,GAKAA,CACT,CAEA,SAASG,KACP,IAAIz8E,EAybC,WAAkC,IAAA08E,EACvC,IAAI18E,EAAQ45E,EAAAA,WAAiBO,GACzBntE,EAAQ2vE,GAAmB5B,GAAoB6B,eAC/CC,EAAU/B,GAAkBC,GAAoB6B,eAIpD,QAAchkF,IAAVoH,EACF,OAAOA,EAIT,OAAO,OAAP08E,EAAO1vE,EAAMxF,aAAN,EAAAk1E,EAAeG,EACxB,CAtccC,GACR30E,EAAUkxE,EAAqBr5E,GAC5BA,EAAMs5E,OAAU,IAAAt5E,EAAMu5E,WACzBv5E,aAAiB5I,MACjB4I,EAAMmI,QACN0pD,KAAKC,UAAU9xD,GACfkI,EAAQlI,aAAiB5I,MAAQ4I,EAAMkI,MAAQ,KAC/C60E,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUC,gBAAiBH,GAsBtD,OACEnD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIl8C,MAAO,CAAEy/C,UAAW,WAAah1E,GACpCD,EAAQ0xE,EAAAA,cAAA,OAAKl8C,MAAOs/C,GAAY90E,GAAe,KAvBtC,KA2BhB,CAEA,MAAMk1E,GAAsBxD,EAAAA,cAAC6C,GAAqB,MAgB3C,MAAMY,WAA4BzD,EAAAA,UAIvC/xE,WAAAA,CAAY2c,GACV1c,MAAM0c,GACN3oB,KAAKmR,MAAQ,CACX6/B,SAAUroB,EAAMqoB,SAChBywC,aAAc94D,EAAM84D,aACpBt9E,MAAOwkB,EAAMxkB,MAEjB,CAEA,+BAAO+mD,CAAyB/mD,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAOi+C,CACLz5B,EACAxX,GAUA,OACEA,EAAM6/B,WAAaroB,EAAMqoB,UACD,SAAvB7/B,EAAMswE,cAAkD,SAAvB94D,EAAM84D,aAEjC,CACLt9E,MAAOwkB,EAAMxkB,MACb6sC,SAAUroB,EAAMqoB,SAChBywC,aAAc94D,EAAM84D,cAQjB,CACLt9E,WAAuBpH,IAAhB4rB,EAAMxkB,MAAsBwkB,EAAMxkB,MAAQgN,EAAMhN,MACvD6sC,SAAU7/B,EAAM6/B,SAChBywC,aAAc94D,EAAM84D,cAAgBtwE,EAAMswE,aAE9C,CAEAxzB,iBAAAA,CAAkB9pD,EAAYu9E,GAC5Bx9E,QAAQC,MACN,wDACAA,EACAu9E,EAEJ,CAEA3mD,MAAAA,GACE,YAA4Bh+B,IAArBiD,KAAKmR,MAAMhN,MAChB45E,EAAAA,cAACI,EAAatkB,SAAQ,CAACx9D,MAAO2D,KAAK2oB,MAAMg5D,cACvC5D,EAAAA,cAACO,EAAkBzkB,SAAQ,CACzBx9D,MAAO2D,KAAKmR,MAAMhN,MAClB64B,SAAUh9B,KAAK2oB,MAAM6zC,aAIzBx8D,KAAK2oB,MAAMqU,QAEf,EASF,SAAS4kD,GAAarL,GAAwD,IAAvD,aAAEoL,EAAY,MAAEtnD,EAAK,SAAE2C,GAA8Bu5C,EACtEgJ,EAAoBxB,EAAAA,WAAiBD,GAazC,OAREyB,GACAA,EAAkBZ,QAClBY,EAAkBsC,gBACjBxnD,EAAMi/C,MAAMwI,cAAgBznD,EAAMi/C,MAAMyI,iBAEzCxC,EAAkBsC,cAAcG,2BAA6B3nD,EAAMi/C,MAAMpuC,IAIzE6yC,EAAAA,cAACI,EAAatkB,SAAQ,CAACx9D,MAAOslF,GAC3B3kD,EAGP,CAEO,SAAS0jD,GACd3H,EACAkH,EACAD,EACAR,GAC2B,IAAAyC,EAC3B,QAJ2B,IAA3BhC,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,WACX,IAApCR,IAAAA,EAAuC,MAExB,MAAXzG,EAAiB,KAAAmJ,EACnB,GAAmB,OAAnBA,EAAIlC,KAAAkC,EAAiBv2E,OAKnB,OAAO,KAFPotE,EAAUiH,EAAgBjH,OAI9B,CAEA,IAAI0H,EAAkB1H,EAGlBptE,EAAS,OAAHs2E,EAAGjC,QAAA,EAAAiC,EAAiBt2E,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIw2E,EAAa1B,EAAgB2B,WAC9B3hF,GAAMA,EAAE64E,MAAMpuC,KAAM,MAAAv/B,OAAA,EAAAA,EAASlL,EAAE64E,MAAMpuC,OAGtCi3C,GAAc,GADhB1D,GAAU,GAMVgC,EAAkBA,EAAgB/jF,MAChC,EACAmG,KAAKC,IAAI29E,EAAgB9lF,OAAQwnF,EAAa,GAElD,CAIA,IAAIE,GAAiB,EACjBC,GAAiB,EACrB,GAAItC,GAAmBR,GAAUA,EAAO+C,oBACtC,IAAK,IAAItoF,EAAI,EAAGA,EAAIwmF,EAAgB9lF,OAAQV,IAAK,CAC/C,IAAIogC,EAAQomD,EAAgBxmF,GAM5B,IAJIogC,EAAMi/C,MAAMkJ,iBAAmBnoD,EAAMi/C,MAAMmJ,0BAC7CH,EAAgBroF,GAGdogC,EAAMi/C,MAAMpuC,GAAI,CAClB,IAAI,WAAEw3C,EAAU,OAAE/2E,GAAWq0E,EACzB2C,EACFtoD,EAAMi/C,MAAMsJ,aACmB7lF,IAA/B2lF,EAAWroD,EAAMi/C,MAAMpuC,OACrBv/B,QAAqC5O,IAA3B4O,EAAO0uB,EAAMi/C,MAAMpuC,KACjC,GAAI7Q,EAAMi/C,MAAMnf,MAAQwoB,EAAkB,CAIxCN,GAAiB,EAEf5B,EADE6B,GAAiB,EACD7B,EAAgB/jF,MAAM,EAAG4lF,EAAgB,GAEzC,CAAC7B,EAAgB,IAErC,KACF,CACF,CACF,CAGF,OAAOA,EAAgBoC,aAAY,CAACzE,EAAQ/jD,EAAOznB,KAEjD,IAAIzO,EACA2+E,GAA8B,EAC9BhB,EAAuC,KACvCW,EAAiD,KA0VzD,IAAqBxvE,EAzVb+sE,IACF77E,EAAQwH,GAAU0uB,EAAMi/C,MAAMpuC,GAAKv/B,EAAO0uB,EAAMi/C,MAAMpuC,SAAMnuC,EAC5D+kF,EAAeznD,EAAMi/C,MAAMwI,cAAgBP,GAEvCc,IACEC,EAAgB,GAAe,IAAV1vE,GAoVZK,EAlVT,kBACA,GAkVI8vE,GAAc9vE,KAC1B8vE,GAAc9vE,IAAO,GAhVf6vE,GAA8B,EAC9BL,EAAyB,MAChBH,IAAkB1vE,IAC3BkwE,GAA8B,EAC9BL,EAAyBpoD,EAAMi/C,MAAMmJ,wBAA0B,QAKrE,IAAI1J,EAAUkH,EAAcl7E,OAAO07E,EAAgB/jF,MAAM,EAAGkW,EAAQ,IAChEowE,EAAcA,KAChB,IAAIhmD,EAkBJ,OAhBEA,EADE74B,EACS29E,EACFgB,EACEL,EACFpoD,EAAMi/C,MAAMx4B,UAOVi9B,EAAAA,cAAC1jD,EAAMi/C,MAAMx4B,UAAS,MACxBzmB,EAAMi/C,MAAMzrB,QACVxzB,EAAMi/C,MAAMzrB,QAEZuwB,EAGXL,EAAAA,cAAC6D,GAAa,CACZvnD,MAAOA,EACPsnD,aAAc,CACZvD,SACArF,UACAsF,YAAgC,MAAnB2B,GAEfhjD,SAAUA,GACV,EAMN,OAAOgjD,IACJ3lD,EAAMi/C,MAAMyI,eAAiB1nD,EAAMi/C,MAAMwI,cAA0B,IAAVlvE,GAC1DmrE,EAAAA,cAACyD,GAAmB,CAClBxwC,SAAUgvC,EAAgBhvC,SAC1BywC,aAAczB,EAAgByB,aAC9BjlB,UAAWslB,EACX39E,MAAOA,EACP64B,SAAUgmD,IACVrB,aAAc,CAAEvD,OAAQ,KAAMrF,UAASsF,aAAa,KAGtD2E,GACD,GACA,KACL,CAAC,IAEIjE,GAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,IAAc,IAMdG,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,IAAmB,IAmBxB,SAASJ,GAAqBmE,GAC5B,IAAIC,EAAMnF,EAAAA,WAAiBD,GAE3B,OADUoF,GAAVzE,GAAU,GACHyE,CACT,CAEA,SAASpC,GAAmBmC,GAC1B,IAAI9xE,EAAQ4sE,EAAAA,WAAiBC,GAE7B,OADU7sE,GAAVstE,GAAU,GACHttE,CACT,CASA,SAAS8tE,GAAkBgE,GACzB,IAAI3J,EARN,SAAyB2J,GACvB,IAAI3J,EAAQyE,EAAAA,WAAiBI,GAE7B,OADU7E,GAAVmF,GAAU,GACHnF,CACT,CAIc6J,GACRC,EAAY9J,EAAMP,QAAQO,EAAMP,QAAQp+E,OAAS,GAKrD,OAHEyoF,EAAU9J,MAAMpuC,IADlBuzC,GAAU,GAIH2E,EAAU9J,MAAMpuC,EACzB,CA4NA,MAAM63C,GAAyC,CAAC,ECj/BpBhF,EAAsB,gBAyS3C,SAASsF,GAAMC,GACpB7E,GAAU,EAKZ,CAqBO,SAAS8E,GAAMC,GAQqB,IAPzCnL,SAAUoL,EAAe,IAAG,SAC5BzmD,EAAW,KACXgU,SAAU0yC,EAAY,eACtB/C,EAAiBhL,EAAewB,IAAG,UACnCxjE,EACAgrE,OAAQgF,GAAa,EAAK,OAC1BnE,GACYgE,EAETjF,KADHE,GAAU,GAQV,IAAIpG,EAAWoL,EAAa/9E,QAAQ,OAAQ,KACxCk+E,EAAoB7F,EAAAA,SACtB,KAAM,CACJ1F,WACA1kE,YACAgrE,OAAQgF,EACRnE,OAAMtJ,EAAA,CACJmG,sBAAsB,GACnBmD,MAGP,CAACnH,EAAUmH,EAAQ7rE,EAAWgwE,IAGJ,kBAAjBD,IACTA,EAAerN,EAAUqN,IAG3B,IAAI,SACFvN,EAAW,IAAG,OACdj9D,EAAS,GAAE,KACXk9D,EAAO,GAAE,MACTjlE,EAAQ,KAAI,IACZ8B,EAAM,WACJywE,EAEAG,EAAkB9F,EAAAA,SAAc,KAClC,IAAI+F,EAAmBxL,EAAcnC,EAAUkC,GAE/C,OAAwB,MAApByL,EACK,KAGF,CACL9yC,SAAU,CACRmlC,SAAU2N,EACV5qE,SACAk9D,OACAjlE,QACA8B,OAEF0tE,iBACD,GACA,CAACtI,EAAUlC,EAAUj9D,EAAQk9D,EAAMjlE,EAAO8B,EAAK0tE,IASlD,OAAuB,MAAnBkD,EACK,KAIP9F,EAAAA,cAACE,EAAkBpkB,SAAQ,CAACx9D,MAAOunF,GACjC7F,EAAAA,cAACG,EAAgBrkB,SAAQ,CAAC78B,SAAUA,EAAU3gC,MAAOwnF,IAG3D,CAaO,SAASE,GAAMC,GAGqB,IAHpB,SACrBhnD,EAAQ,SACRgU,GACYgzC,EACZ,ODpKOjE,GCoKUkE,GAAyBjnD,GAAWgU,EACvD,CAuC4B,IAAIliC,SAAQ,SAEPivE,EAAAA,UAkH1B,SAASkG,GACdjnD,EACAo8C,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAIjB,EAAwB,GA6D5B,OA3DA4F,EAAAA,SAAex1D,QAAQyU,GAAU,CAAC6wB,EAASj7C,KACzC,IAAKmrE,EAAAA,eAAqBlwB,GAGxB,OAGF,IAAIq2B,EAAW,IAAI9K,EAAYxmE,GAE/B,GAAIi7C,EAAQ5uD,OAAS8+E,EAAAA,SAMnB,YAJA5F,EAAOn9E,KAAK0I,MACVy0E,EACA8L,GAAyBp2B,EAAQllC,MAAMqU,SAAUknD,IAMnDr2B,EAAQ5uD,OAASokF,IADnB5E,GAAU,GAQP5wB,EAAQllC,MAAM/V,OAAUi7C,EAAQllC,MAAMqU,UADzCyhD,GAAU,GAKV,IAAInF,EAAqB,CACvBpuC,GAAI2iB,EAAQllC,MAAMuiB,IAAMg5C,EAAS/oF,KAAK,KACtCq+E,cAAe3rB,EAAQllC,MAAM6wD,cAC7B3rB,QAASA,EAAQllC,MAAMklC,QACvB/M,UAAW+M,EAAQllC,MAAMm4B,UACzBluC,MAAOi7C,EAAQllC,MAAM/V,MACrB4jE,KAAM3oB,EAAQllC,MAAM6tD,KACpBoM,OAAQ/0B,EAAQllC,MAAMi6D,OACtB77B,OAAQ8G,EAAQllC,MAAMo+B,OACtB+6B,aAAcj0B,EAAQllC,MAAMm5D,aAC5BC,cAAel0B,EAAQllC,MAAMo5D,cAC7BoC,iBACiC,MAA/Bt2B,EAAQllC,MAAMo5D,eACgB,MAA9Bl0B,EAAQllC,MAAMm5D,aAChBsC,iBAAkBv2B,EAAQllC,MAAMy7D,iBAChCC,OAAQx2B,EAAQllC,MAAM07D,OACtBlqB,KAAMtM,EAAQllC,MAAMwxC,MAGlBtM,EAAQllC,MAAMqU,WAChBs8C,EAAMt8C,SAAWinD,GACfp2B,EAAQllC,MAAMqU,SACdknD,IAIJ/L,EAAOn9E,KAAKs+E,EAAM,IAGbnB,CACT,+WC/fgD,IAAIzhD,IAAI,CACtD,oCACA,sBACA,+ICgBF,IACEpgB,OAAOguE,qBAHT,GAIC,CAAC,MAAOtgF,IACP,CA0IiE,IAAIuiC,IAkCvE,MACMg+C,GAAsBxG,EAAsB,gBAE5ByG,EAAmB,UAEvBzG,EAAY,MAmVxB,SAAU0G,GAAaC,GAKR,IALS,SAC5BrM,EAAQ,SACRr7C,EAAQ,OACRwiD,EAAM,OACNlpE,GACmBouE,EACfC,EAAa5G,EAAAA,SPlZH,IACdpkE,EOkZ0B,MAAtBgrE,EAAWh/D,UACbg/D,EAAWh/D,cPnZb,KAAAhM,EOmZ4C,CAAErD,SAAQ0gE,UAAU,MPnZhEr9D,EAAiC,CAAC,GAoB3Bi9D,GAlBP,SACEtgE,EACA2gE,GAEA,IAAI,SAAEd,EAAQ,OAAEj9D,EAAM,KAAEk9D,GAAS9/D,EAAO06B,SACxC,OAAOilC,EACL,GACA,CAAEE,WAAUj9D,SAAQk9D,QAEnBa,EAAc9lE,OAAS8lE,EAAc9lE,MAAM6kE,KAAQ,KACnDiB,EAAc9lE,OAAS8lE,EAAc9lE,MAAM8B,KAAQ,UAExD,IAEA,SAA2BqD,EAAgBwU,GACzC,MAAqB,kBAAPA,EAAkBA,EAAKwrD,EAAWxrD,EAClD,GAKE,KACAnR,KO8XF,IAAIu9D,EAAUyN,EAAWh/D,SACpBxU,EAAOyzE,GAAgB7G,EAAAA,SAAe,CACzCh3B,OAAQmwB,EAAQnwB,OAChB/V,SAAUkmC,EAAQlmC,YAEhB,mBAAE6zC,GAAuBrF,GAAU,CAAC,EACpCxmB,EAAW+kB,EAAAA,aACZ5N,IACC0U,GAAsBN,GAClBA,IAAoB,IAAMK,EAAazU,KACvCyU,EAAazU,EAAS,GAE5B,CAACyU,EAAcC,IAKjB,OAFA9G,EAAAA,iBAAsB,IAAM7G,EAAQQ,OAAO1e,IAAW,CAACke,EAASle,IAG9D+kB,EAAAA,cAACwF,GAAM,CACLlL,SAAUA,EACVr7C,SAAUA,EACVgU,SAAU7/B,EAAM6/B,SAChB2vC,eAAgBxvE,EAAM41C,OACtBpzC,UAAWujE,EACXsI,OAAQA,GAGd,CAqHA,MAAMsF,GACc,qBAAXxuE,QACoB,qBAApBA,OAAO0gB,UAC2B,qBAAlC1gB,OAAO0gB,SAASC,cAEnB8tD,GAAqB,gCAKdC,GAAOjH,EAAAA,YAClB,SAAoBkH,EAalBtiC,GAAG,IAKCuiC,GAjBJ,QACEr4B,EAAO,SACP8yB,EAAQ,eACRwF,EAAc,QACdz/E,EAAO,MACPyL,EAAK,OACLvL,EAAM,GACNklB,EAAE,mBACFs6D,EAAkB,wBAClBC,GAEDJ,EADIjL,EAAIsL,GAAAL,EAAAM,KAIL,SAAElN,GAAa0F,EAAAA,WAAiByH,GAIhCC,GAAa,EAEjB,GAAkB,kBAAP36D,GAAmBi6D,GAAmBxsD,KAAKzN,KAEpDo6D,EAAep6D,EAGXg6D,IACF,IACE,IAAIY,EAAa,IAAIzf,IAAI3vD,OAAO06B,SAASyF,MACrCkvC,EAAY76D,EAAG2uD,WAAW,MAC1B,IAAIxT,IAAIyf,EAAWjpB,SAAW3xC,GAC9B,IAAIm7C,IAAIn7C,GACR0rD,EAAO8B,EAAcqN,EAAUxP,SAAUkC,GAEzCsN,EAAUnO,SAAWkO,EAAWlO,QAAkB,MAARhB,EAE5C1rD,EAAK0rD,EAAOmP,EAAUzsE,OAASysE,EAAUvP,KAEzCqP,GAAa,EAEf,MAAOzhF,IAOR,CAKL,IAAIyyC,EHt5BD,SACL3rB,EAAM86D,GAEE,IADR,SAAEjG,QAA8C,IAAAiG,EAAG,CAAC,EAACA,EAGnDrH,KADFE,GAAU,GAOV,IAAI,SAAEpG,EAAQ,UAAE1kE,GAAcoqE,EAAAA,WAAiBE,IAC3C,KAAE7H,EAAI,SAAED,EAAQ,OAAEj9D,GAAW2mE,EAAgB/0D,EAAI,CAAE60D,aAEnDkG,EAAiB1P,EAWrB,MALiB,MAAbkC,IACFwN,EACe,MAAb1P,EAAmBkC,EAAWqB,EAAU,CAACrB,EAAUlC,KAGhDxiE,EAAUmjE,WAAW,CAAEX,SAAU0P,EAAgB3sE,SAAQk9D,QAClE,CG43Be0P,CAAQh7D,EAAI,CAAE60D,aAErBoG,EA0YF,SACJj7D,EAAM86D,GAeA,IAdN,OACEhgF,EACAF,QAASsgF,EAAW,MACpB70E,EAAK,mBACLi0E,EAAkB,SAClBzF,EAAQ,wBACR0F,cAQE,CAAC,EAACO,EAEFxG,EAAWR,IACX5tC,EAAWwtC,IACXhI,EAAOqJ,EAAgB/0D,EAAI,CAAE60D,aAEjC,OAAO5B,EAAAA,aACJl9D,IACC,GD90CU,SACdA,EACAjb,GAEA,OACmB,IAAjBib,EAAM2tB,UACJ5oC,GAAqB,UAAXA,KAVhB,SAAyBib,GACvB,SAAUA,EAAMwtB,SAAWxtB,EAAMutB,QAAUvtB,EAAMqtB,SAAWrtB,EAAMstB,SACpE,CASK83C,CAAgBplE,EAErB,CCq0CUqlE,CAAuBrlE,EAAOjb,GAAS,CACzCib,EAAMyrB,iBAIN,IAAI5mC,OACc3I,IAAhBipF,EACIA,EACA1P,EAAWtlC,KAAcslC,EAAWE,GAE1C4I,EAASt0D,EAAI,CACXplB,UACAyL,QACAi0E,qBACAzF,WACA0F,2BAEH,IAEH,CACEr0C,EACAouC,EACA5I,EACAwP,EACA70E,EACAvL,EACAklB,EACAs6D,EACAzF,EACA0F,GAGN,CAlc0Bc,CAAoBr7D,EAAI,CAC5CplB,UACAyL,QACAvL,SACAw/E,qBACAzF,WACA0F,4BAWF,OAEEtH,EAAAA,cAAA,IAAA7H,GAAA,GACM8D,EAAI,CACRvjC,KAAMyuC,GAAgBzuC,EACtBoW,QAAS44B,GAAcN,EAAiBt4B,EAd5C,SACEhsC,GAEIgsC,GAASA,EAAQhsC,GAChBA,EAAMsrB,kBACT45C,EAAgBllE,EAEpB,EAQI8hC,IAAKA,EACL/8C,OAAQA,IAGd,IAsUF,IAAKm5E,GAQAG,IARL,SAAKH,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,+CACD,EAND,CAAKA,KAAAA,GAMJ,KAED,SAAKG,GACHA,EAAA,wBACAA,EAAA,0BACAA,EAAA,2CACD,CAJD,CAAKA,KAAAA,GAIJ,mzGC5tCD,MA+SA,GA/SqB3I,IAA4C,IAA3C,aAAE6P,EAAY,OAAEC,EAAM,YAAEC,GAAa/P,EACvD,MAAMgQ,GAAW98B,EAAAA,EAAAA,QAAO,MAClB+8B,GAAW/8B,EAAAA,EAAAA,QAAO,MAClBg9B,GAAWh9B,EAAAA,EAAAA,QAAO,MAClBi9B,GAAWj9B,EAAAA,EAAAA,QAAO,MAClBk9B,GAAWl9B,EAAAA,EAAAA,QAAO,MAClBm9B,GAAWn9B,EAAAA,EAAAA,QAAO,MAClBo9B,GAAWp9B,EAAAA,EAAAA,QAAO,MAClBq9B,GAAWr9B,EAAAA,EAAAA,QAAO,MAClBs9B,GAAWt9B,EAAAA,EAAAA,QAAO,MAClBu9B,GAAWv9B,EAAAA,EAAAA,QAAO,MAClBw9B,GAAWx9B,EAAAA,EAAAA,QAAO,MAClBy9B,GAAWz9B,EAAAA,EAAAA,QAAO,MAClB09B,GAAW19B,EAAAA,EAAAA,QAAO,MAClB29B,GAAW39B,EAAAA,EAAAA,QAAO,MAClB49B,GAAW59B,EAAAA,EAAAA,QAAO,MAClB69B,GAAW79B,EAAAA,EAAAA,QAAO,MAClB89B,GAAW99B,EAAAA,EAAAA,QAAO,MAClB+9B,GAAW/9B,EAAAA,EAAAA,QAAO,MAClBg+B,GAAWh+B,EAAAA,EAAAA,QAAO,MAElBi+B,GAAWj+B,EAAAA,EAAAA,QAAO,MAClBk+B,GAAWl+B,EAAAA,EAAAA,QAAO,MAClBm+B,GAAWn+B,EAAAA,EAAAA,QAAO,MAClBo+B,GAAWp+B,EAAAA,EAAAA,QAAO,MAClBq+B,GAAWr+B,EAAAA,EAAAA,QAAO,MAClBs+B,GAAWt+B,EAAAA,EAAAA,QAAO,MAClBu+B,GAAWv+B,EAAAA,EAAAA,QAAO,MAClBw+B,GAAWx+B,EAAAA,EAAAA,QAAO,MAClBy+B,GAAWz+B,EAAAA,EAAAA,QAAO,MAClB0+B,GAAW1+B,EAAAA,EAAAA,QAAO,MAClB2+B,GAAW3+B,EAAAA,EAAAA,QAAO,MAClB4+B,GAAW5+B,EAAAA,EAAAA,QAAO,MAClB6+B,GAAW7+B,EAAAA,EAAAA,QAAO,MAClB8+B,GAAW9+B,EAAAA,EAAAA,QAAO,MAClB++B,GAAW/+B,EAAAA,EAAAA,QAAO,MAClBg/B,GAAWh/B,EAAAA,EAAAA,QAAO,MAClBi/B,GAAWj/B,EAAAA,EAAAA,QAAO,MAClBk/B,GAAWl/B,EAAAA,EAAAA,QAAO,MAClBm/B,GAAWn/B,EAAAA,EAAAA,QAAO,MAClBo/B,GAAWp/B,EAAAA,EAAAA,QAAO,MAClBq/B,GAAWr/B,EAAAA,EAAAA,QAAO,MAClBs/B,GAAWt/B,EAAAA,EAAAA,QAAO,MAClBu/B,GAAWv/B,EAAAA,EAAAA,QAAO,MAClBw/B,GAAWx/B,EAAAA,EAAAA,QAAO,MAClBy/B,GAAWz/B,EAAAA,EAAAA,QAAO,MAElB0/B,GAAgB1/B,EAAAA,EAAAA,QAAO,MACvB2/B,GAAgB3/B,EAAAA,EAAAA,QAAO,MACvB4/B,GAAgB5/B,EAAAA,EAAAA,QAAO,MACvB6/B,GAAgB7/B,EAAAA,EAAAA,QAAO,MACvB8/B,GAAgB9/B,EAAAA,EAAAA,QAAO,MACvB+/B,IAAgB//B,EAAAA,EAAAA,QAAO,MACvBggC,IAAgBhgC,EAAAA,EAAAA,QAAO,MACvBigC,IAAgBjgC,EAAAA,EAAAA,QAAO,MACvBkgC,IAAgBlgC,EAAAA,EAAAA,QAAO,MACvBmgC,IAAgBngC,EAAAA,EAAAA,QAAO,MACvBogC,IAAgBpgC,EAAAA,EAAAA,QAAO,MACvBqgC,IAAgBrgC,EAAAA,EAAAA,QAAO,MACvBsgC,IAAgBtgC,EAAAA,EAAAA,QAAO,MACvBugC,IAAgBvgC,EAAAA,EAAAA,QAAO,MACvBwgC,IAAgBxgC,EAAAA,EAAAA,QAAO,MACvBygC,IAAgBzgC,EAAAA,EAAAA,QAAO,MAEvB0gC,IAAgB1gC,EAAAA,EAAAA,QAAO,MACvB2gC,IAAgB3gC,EAAAA,EAAAA,QAAO,MACvB4gC,IAAgB5gC,EAAAA,EAAAA,QAAO,MACvB6gC,IAAgB7gC,EAAAA,EAAAA,QAAO,MACvB8gC,IAAgB9gC,EAAAA,EAAAA,QAAO,MACvB+gC,IAAgB/gC,EAAAA,EAAAA,QAAO,MACvBghC,IAAgBhhC,EAAAA,EAAAA,QAAO,MACvBihC,IAAgBjhC,EAAAA,EAAAA,QAAO,MACvBkhC,IAAgBlhC,EAAAA,EAAAA,QAAO,MACvBmhC,IAAgBnhC,EAAAA,EAAAA,QAAO,MACvBohC,IAAgBphC,EAAAA,EAAAA,QAAO,MACvBqhC,IAAgBrhC,EAAAA,EAAAA,QAAO,MACvBshC,IAAgBthC,EAAAA,EAAAA,QAAO,MACvBuhC,IAAgBvhC,EAAAA,EAAAA,QAAO,MAEvBwhC,IAAiBxhC,EAAAA,EAAAA,QAAO,MACxByhC,IAAiBzhC,EAAAA,EAAAA,QAAO,MACxB0hC,IAAiB1hC,EAAAA,EAAAA,QAAO,MACxB2hC,IAAiB3hC,EAAAA,EAAAA,QAAO,MACxB4hC,IAAiB5hC,EAAAA,EAAAA,QAAO,MACxB6hC,IAAiB7hC,EAAAA,EAAAA,QAAO,MACxB8hC,IAAiB9hC,EAAAA,EAAAA,QAAO,MACxB+hC,IAAiB/hC,EAAAA,EAAAA,QAAO,MACxBgiC,IAAiBhiC,EAAAA,EAAAA,QAAO,MACxBiiC,IAAiBjiC,EAAAA,EAAAA,QAAO,MACxBkiC,IAAkBliC,EAAAA,EAAAA,QAAO,MACzBmiC,IAAkBniC,EAAAA,EAAAA,QAAO,MACzBoiC,IAAkBpiC,EAAAA,EAAAA,QAAO,MACzBqiC,IAAkBriC,EAAAA,EAAAA,QAAO,MACzBsiC,IAAkBtiC,EAAAA,EAAAA,QAAO,MACzBuiC,IAAkBviC,EAAAA,EAAAA,QAAO,OAExBwiC,GAAcC,KAAmBvkC,EAAAA,EAAAA,UAAS4+B,IACjDz+B,EAAAA,EAAAA,YAAU,KACN,MAAMqkC,EAAa,CACf,SAAY5F,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,SAAYC,EACZ,cAAiBC,EACjB,cAAiBC,EACjB,cAAiBC,EACjB,cAAiBC,EACjB,cAAiBC,EACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,cAAiBC,GACjB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,eAAkBC,GAClB,gBAAmBC,GACnB,gBAAmBC,GACnB,gBAAmBC,GACnB,gBAAmBC,GACnB,gBAAmBC,GACnB,gBAAmBC,IAEvBC,GAAatmE,QAAQymE,UAAY,MACjC,MAAMC,EAAUF,EAAW/F,EAAakG,OACxCJ,GAAgBG,GAChBA,EAAQ1mE,QAAQymE,UAAS,cAAArnF,OAAiBqhF,EAAamG,OAAQ,GAChE,CAACnG,EAAc6F,KAElB,MAAMO,GAAYxoF,IACFA,EAAE4B,OACV6mF,SACH34E,MAAK,KACFwyE,GAAa,IAEhBtyE,OAAO04E,IACJxoF,QAAQ2Q,IAAI63E,EAAc,GAC5B,EAGN,OACIC,EAAAA,GAAAA,MAAA,OAAKhqC,IAAK0jC,EAAQxkD,MAAOukD,EAAavkD,MAAOuqD,UAAU,qBAAoBpvD,SAAA,EACvE4vD,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4jC,EAAU6F,UAAU,MAAM7+E,IAAKw/E,GAAOC,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6jC,EAAU4F,UAAU,MAAM7+E,IAAK0/E,GAAOD,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8jC,EAAU2F,UAAU,MAAM7+E,IAAK2/E,GAAOF,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+jC,EAAU0F,UAAU,MAAM7+E,IAAK4/E,GAAOH,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKgkC,EAAUyF,UAAU,MAAM7+E,IAAK6/E,GAAOJ,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKikC,EAAUwF,UAAU,MAAM7+E,IAAK8/E,GAAOL,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKkkC,EAAUuF,UAAU,MAAM7+E,IAAK+/E,GAAON,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmkC,EAAUsF,UAAU,MAAM7+E,IAAKggF,GAAOP,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKokC,EAAUqF,UAAU,MAAM7+E,IAAKigF,GAAOR,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqkC,EAAUoF,UAAU,MAAM7+E,IAAKkgF,GAAQT,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKskC,EAAUmF,UAAU,MAAM7+E,IAAKmgF,GAAQV,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKukC,EAAUkF,UAAU,MAAM7+E,IAAKogF,GAAQX,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKwkC,EAAUiF,UAAU,MAAM7+E,IAAKqgF,GAAQZ,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKykC,EAAUgF,UAAU,MAAM7+E,IAAKsgF,GAAQb,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK0kC,EAAU+E,UAAU,MAAM7+E,IAAKugF,GAAQd,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK2kC,EAAU8E,UAAU,MAAM7+E,IAAKwgF,GAAQf,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4kC,EAAU6E,UAAU,MAAM7+E,IAAKygF,GAAQhB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6kC,EAAU4E,UAAU,MAAM7+E,y8ZAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8kC,EAAU2E,UAAU,MAAM7+E,IAAK0gF,GAAQjB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+kC,EAAU0E,UAAU,MAAM7+E,IAAK2gF,GAAOlB,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKglC,EAAUyE,UAAU,MAAM7+E,IAAK4gF,GAAOnB,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKilC,EAAUwE,UAAU,MAAM7+E,6zZAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKklC,EAAUuE,UAAU,MAAM7+E,qjYAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmlC,EAAUsE,UAAU,MAAM7+E,i1XAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKolC,EAAUqE,UAAU,MAAM7+E,imXAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqlC,EAAUoE,UAAU,MAAM7+E,69YAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKslC,EAAUmE,UAAU,MAAM7+E,igZAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKulC,EAAUkE,UAAU,MAAM7+E,6sYAAYy/E,IAAI,MAClGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKwlC,EAAUiE,UAAU,MAAM7+E,ilYAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKylC,EAAUgE,UAAU,MAAM7+E,ykWAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK0lC,EAAU+D,UAAU,MAAM7+E,i+VAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK2lC,EAAU8D,UAAU,MAAM7+E,qkZAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4lC,EAAU6D,UAAU,MAAM7+E,i3YAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6lC,EAAU4D,UAAU,MAAM7+E,6sZAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8lC,EAAU2D,UAAU,MAAM7+E,IAAK6gF,GAAQpB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+lC,EAAU0D,UAAU,MAAM7+E,IAAK8gF,GAAQrB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKgmC,EAAUyD,UAAU,MAAM7+E,IAAK+gF,GAAQtB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKimC,EAAUwD,UAAU,MAAM7+E,IAAKghF,GAAQvB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKkmC,EAAUuD,UAAU,MAAM7+E,IAAKihF,GAAQxB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmmC,EAAUsD,UAAU,MAAM7+E,IAAKkhF,GAAQzB,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKomC,EAAUqD,UAAU,MAAM7+E,IAAKmhF,GAAQ1B,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqmC,EAAUoD,UAAU,MAAM7+E,i8ZAAay/E,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKsmC,EAAUmD,UAAU,MAAM7+E,IAAKohF,GAAQ3B,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKumC,EAAUkD,UAAU,MAAM7+E,IAAKqhF,GAAQ5B,IAAI,MACnGJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKwmC,EAAeiD,UAAU,MAAM7+E,IAAKshF,GAAe7B,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKymC,EAAegD,UAAU,MAAM7+E,IAAKuhF,GAAe9B,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK0mC,EAAe+C,UAAU,MAAM7+E,IAAKwhF,GAAe/B,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK2mC,EAAe8C,UAAU,MAAM7+E,IAAKyhF,GAAehC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4mC,EAAe6C,UAAU,MAAM7+E,IAAK0hF,GAAejC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6mC,GAAe4C,UAAU,MAAM7+E,IAAK2hF,GAAelC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8mC,GAAe2C,UAAU,MAAM7+E,IAAK4hF,GAAenC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+mC,GAAe0C,UAAU,MAAM7+E,y+ZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKgnC,GAAeyC,UAAU,MAAM7+E,IAAK6hF,GAAepC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKinC,GAAewC,UAAU,MAAM7+E,IAAK8hF,GAAerC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKknC,GAAeuC,UAAU,MAAM7+E,IAAK+hF,GAAetC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmnC,GAAesC,UAAU,MAAM7+E,IAAKgiF,GAAevC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKonC,GAAeqC,UAAU,MAAM7+E,qzXAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqnC,GAAeoC,UAAU,MAAM7+E,6mXAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKsnC,GAAemC,UAAU,MAAM7+E,yhWAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKunC,GAAekC,UAAU,MAAM7+E,6pWAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKwnC,GAAeiC,UAAU,MAAM7+E,q/VAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKynC,GAAegC,UAAU,MAAM7+E,qvVAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK0nC,GAAe+B,UAAU,MAAM7+E,6mWAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK2nC,GAAe8B,UAAU,MAAM7+E,6yWAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4nC,GAAe6B,UAAU,MAAM7+E,6zXAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6nC,GAAe4B,UAAU,MAAM7+E,qrZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8nC,GAAe2B,UAAU,MAAM7+E,y7ZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+nC,GAAe0B,UAAU,MAAM7+E,IAAKiiF,GAAexC,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKgoC,GAAeyB,UAAU,MAAM7+E,qwZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKioC,GAAewB,UAAU,MAAM7+E,i+ZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKkoC,GAAeuB,UAAU,MAAM7+E,itZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmoC,GAAesB,UAAU,MAAM7+E,i1YAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKooC,GAAeqB,UAAU,MAAM7+E,6iaAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqoC,GAAeoB,UAAU,MAAM7+E,q1ZAAoBy/E,IAAI,MAC/GJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKsoC,GAAgBmB,UAAU,MAAM7+E,IAAKkiF,GAAgBzC,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKuoC,GAAgBkB,UAAU,MAAM7+E,IAAKmiF,GAAgB1C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKwoC,GAAgBiB,UAAU,MAAM7+E,IAAKoiF,GAAgB3C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKyoC,GAAgBgB,UAAU,MAAM7+E,IAAKqiF,GAAgB5C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK0oC,GAAgBe,UAAU,MAAM7+E,IAAKsiF,GAAgB7C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK2oC,GAAgBc,UAAU,MAAM7+E,IAAKuiF,GAAgB9C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK4oC,GAAgBa,UAAU,MAAM7+E,IAAKwiF,GAAgB/C,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK6oC,GAAgBY,UAAU,MAAM7+E,IAAKyiF,GAAgBhD,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK8oC,GAAgBW,UAAU,MAAM7+E,IAAK0iF,GAAgBjD,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAK+oC,GAAgBU,UAAU,MAAM7+E,IAAK2iF,GAAgBlD,IAAI,MACjHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKgpC,GAAiBS,UAAU,MAAM7+E,IAAK4iF,GAAiBnD,IAAI,MACnHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKipC,GAAiBQ,UAAU,MAAM7+E,IAAK6iF,GAAiBpD,IAAI,MACnHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKkpC,GAAiBO,UAAU,MAAM7+E,IAAK8iF,GAAiBrD,IAAI,MACnHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKmpC,GAAiBM,UAAU,MAAM7+E,IAAK+iF,GAAiBtD,IAAI,MACnHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKopC,GAAiBK,UAAU,MAAM7+E,IAAKgjF,GAAiBvD,IAAI,MACnHJ,EAAAA,GAAAA,KAAA,OAAKC,OAAS7oF,GAAMwoF,GAASxoF,GAAI8oF,UAAU,QAAQnqC,IAAKqpC,GAAiBI,UAAU,MAAM7+E,IAAKijF,GAAiBxD,IAAI,OACjH,ECzYRyD,GAAkBn/C,GACd,GAANvsC,OAHe,GAGLusC,EAAqB,IAAG,KAEzB7iB,GAAQA,CAACpyB,EAAOq0F,KACzB,IAAIC,EAAa9tF,KAAKgG,IAAI,GAAI6nF,GAAa,GAC3C,OAAO7tF,KAAK4rB,MAAMpyB,EAAQs0F,GAAcA,CAAU,EAEhDC,GAAgB,CAClB,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEEC,GAAgB,CAClB,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEEC,GAAqB,CACvB,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBAEEC,GAAqB,CACvB,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBAGSC,GAAqBC,GAC1BA,IAAU,OAASA,GAAS,MACrB,iBAEFA,GAAS,OAASA,GAAU,MAC1B,iBAEFA,GAAS,OAASA,GAAU,MAC1B,iBAEFA,GAAS,OAASA,GAAU,MAC1B,iBAEFA,GAAS,OAASA,GAAU,OAC1B,iBAEFA,GAAS,QAAUA,GAAU,OAC3B,iBAEFA,GAAS,QAAUA,GAAS,OAC1B,iBAEFA,GAAS,QAAUA,GAAS,OAC1B,iBAEFA,GAAS,QAAUA,IAAU,OAC3B,iBAEFA,IAAU,QAAUA,IAAU,OAC5B,iBAEFA,IAAU,QAAUA,IAAU,OAC5B,kBAEFA,IAAU,QAAUA,IAAU,OAC5B,kBAEFA,IAAU,QAAUA,IAAU,MAC5B,kBAEFA,IAAU,OAASA,IAAU,MAC3B,kBAEFA,IAAU,OAASA,IAAU,MAC3B,kBAEFA,IAAU,OAASA,IAAU,MAC3B,uBADN,EAwBHC,GAAOA,CAAC3E,EAAQ4E,KAElB,IAAIC,EAAU,EACVC,EAAqB,EACrBC,EAAa,GACjB,IAAK,IAAIhF,KAASuE,GAAc,CAC5B,IAAI5rF,EAAMksF,EACNC,EAAU,KACVnsF,EAAMksF,EAAaE,EACJ,SAAX9E,EACA8E,GAAsB,EAGtBA,GAAsB,GAG9BC,EAAWt2F,KAAK,CACZsxF,MAAOA,EACPzqD,MAAO,CACHoyB,KAAMw8B,GAAexrF,IAEzBsnF,OAAQA,IAEZ6E,GACJ,CACA,OAAOE,CAAU,EAEfC,GAAYA,CAAChF,EAAQiF,KACvB,IAAIF,EAAa,GACjB,IAAK,IAAIhF,KAASwE,GACdQ,EAAWt2F,KAAK,CACZsxF,MAAOA,EACPzqD,MAAO,CACHoyB,KAAMw8B,GAAee,IAEzBjF,OAAQA,IAGhB,OAAO+E,CAAU,EAEfG,GAAYA,CAACN,EAAY5E,KAC3B,IAAI6E,EAAU,EACVC,EAAqB,EACrBC,EAAa,GACjB,IAAK,IAAIhF,KAASyE,GAAmB,CACjC,IAAI9rF,EAAMksF,EACNC,EAAU,IACVnsF,EAAMksF,EAAaE,EACJ,SAAX9E,EACA8E,GAAsB,EAGtBA,GAAsB,GAG9BC,EAAWt2F,KAAK,CACZsxF,MAAOA,EACPzqD,MAAO,CACHoyB,KAAMw8B,GAAexrF,IAEzBsnF,OAAQA,IAEZ6E,GACJ,CACA,OAAOE,CAAU,EAEfI,GAAeA,CAACC,EAAWR,EAAYK,EAAQJ,KACjD,MAAMQ,EAAqBR,EAAQO,EAC7BE,EAAeL,EAASL,EACxBW,EAAaD,EAAe,EAC9BV,EAActuF,KAAKoK,IAAI4kF,GAAgBD,EAEvCT,EAAcU,EAAeD,EACjC,OAAOnB,GAAeqB,EAAU,EAyBvBC,GAASA,CAACZ,EAAYK,KAC/B,MACMQ,EAAgBR,EAASL,EAEzBG,EA3BYW,EAACN,EAAWR,EAAYK,KAC1C,MAAMU,EAAkBtB,GAAcj2F,OACtC,IAAIy2F,EAAU,EACVe,EAAmB,EACnBC,EAAa,GACjB,MAAMC,EAAcb,EAASL,EAAc,EAAI,OAAS,QACxD,KAAOC,EAAUO,GAAW,CACpBQ,IAAqBD,IACrBC,EAAmB,GAEvB,MAAMG,EAAY,CACdhG,MAAOsE,GAAcuB,GACrBtwD,MAAO,CACHoyB,KAAMy9B,GAAaC,EAAWR,EAAYK,EAAQJ,IAEtD7E,OAAQ8F,GAEZD,EAAWp3F,KAAKs3F,GAChBH,IACAf,GACJ,CACA,OAAOgB,CAAU,EAMEH,CADIpvF,KAAKoK,IAAIwhB,GAAOujE,EAAgB,IAF9B,KAGwBb,EAAYK,GAC7D,OAAOF,CAAU,EC7GrB,GAzJY/a,IAAsB,IAArB,YAAE+P,GAAa/P,EACxB,MAAO6P,EAAcmM,IAAmB5qC,EAAAA,EAAAA,UACpC,CACI2kC,MAAO,gBACPzqD,MAAO,CACHoyB,KAAM,MAEVs4B,OAAQ,WAGT+E,EAAYkB,IAAiB7qC,EAAAA,EAAAA,UAAS,KACtC8qC,EAAYC,IAAiB/qC,EAAAA,EAAAA,UAAS,IACtCgrC,EAAQC,IAAajrC,EAAAA,EAAAA,WAAS,IAC9BkrC,EAAoBC,IAAyBnrC,EAAAA,EAAAA,UAAS,GACvDorC,GAAetpC,EAAAA,EAAAA,QAAO,MACtB48B,GAAS58B,EAAAA,EAAAA,QAAO,MAgBhBupC,EAAUA,CAACC,EAAa1G,KAC1BqG,GAAU,GACVF,EAAcO,GACdT,GAAc7d,GACHA,EAAK5vE,ODwGCmuF,EAAC/B,EAAYK,EAAQjF,KAE1C,IAAI+E,EAAa,GACjB,MAAM6B,EAAoB3B,EAASL,EAAc,EAAE,OAAO,QACpDiC,EAAkC,SAApBD,EAA8B,IAAM,GACxD,GAAIA,IAAoB5G,EAGpB+E,GADAA,GADAA,EAAaA,EAAWvsF,OAAO0sF,GAAUN,EAAY5E,KAC7BxnF,OAAOgtF,GAAOZ,EAAaiC,EAAY5B,KACvCzsF,OAAOwsF,GAAUhF,EAAQiF,QAEjD,CACA,MAAM6B,EAAyB,SAAX9G,EAAqB,IAAM,GACzC+G,EAAwB,SAAX/G,EAAkB,QAAQ,OAI7C+E,GADAA,GADAA,GADAA,EAAaA,EAAWvsF,OAAO0sF,GAAUN,EAAY5E,KAC7BxnF,OAAOmsF,GAAK3E,EAAQ4E,EAAaiC,KACjCruF,OAAOgtF,GAAOZ,EAAaiC,EAAaC,EAAY7B,KACpDzsF,OAAOwsF,GAAU+B,EAAW9B,GACxD,CACA,OAAOF,CAAU,EC1HU4B,CAAUT,EAAYQ,EAAa1G,KACxD,EAGAgH,EAAuBC,IAEzB,IADA,IAAIC,EAAcD,EACX3wF,KAAKoK,IAAIwmF,EAAcD,GAAkB,IAC5CC,EAAmC,IAArB5wF,KAAKw1C,OAAO,EAAG,IAEjC,OAAOo7C,CAAW,EAkGtB,OAtEA3rC,EAAAA,EAAAA,YAAU,KAEN,MAAM4rC,EAAwB7yE,IA3BV8yE,KAOpB,MAAMC,EAC8B,IAA7BvN,EAAO1gE,QAAQkuE,YADhBD,EAE+B,GAA9BvN,EAAO1gE,QAAQmuE,aAEhBC,EAPN,SAASC,EAAcnmC,GACnB,OAAOA,EAAWA,EAAQomC,WAAaD,EAAcnmC,EAAQqmC,cAAiB,CAClF,CAMOF,CAAc3N,EAAO1gE,SAAWiuE,EADjCG,EAVN,SAASI,EAAatmC,GAClB,OAAOA,EAAWA,EAAQumC,UAAYD,EAAatmC,EAAQqmC,cAAiB,CAChF,CAUOC,CAAa9N,EAAO1gE,SAAWrP,OAAO+9E,QAAUT,EAEjDU,EAAkB,CACpBzvF,EAAI8uF,EAAa9uF,EAAIkvF,EACrBjvF,IAAK6uF,EAAa7uF,EAAIivF,IAEpBQ,EAAU1xF,KAAK2xF,MAAMF,EAAgBzvF,EAAGyvF,EAAgBxvF,GAC9D,IAAI+lD,EAAKhoD,KAAK4xF,GAEd3B,EADcyB,GAAW,IAAM1pC,GACH,EAMxB6pC,CAAe,CACX7vF,EAAGgc,EAAM+sB,QACT9oC,EAAG+b,EAAMgtB,SACX,EAIN,OAFAv3B,OAAO1E,iBAAiB,YAAa8hF,GAE9B,KACHp9E,OAAOxE,oBAAoB,YAAa4hF,EAAsB,CACjE,GACF,KAEH5rC,EAAAA,EAAAA,YAAU,KACN,GAAI6qC,EAAO,CACP,IAAIgC,EAAgBC,gBAAgBxO,GACpCuO,EAAqB,MAAiC,SAA5BA,EAAsB,OAC5C3D,IAAmB6B,GACnB7B,GAAkB6B,GACtBN,EAAgBoC,EACpB,IACD,CAAChC,EAAQE,KACZ/qC,EAAAA,EAAAA,YAAU,KAEN,MAkBM+sC,EAAQC,aAAY,KAClBnC,EAnBaoC,MAEjB,GADelyF,KAAKw1C,SACP,KAAO,CAEhB,MAAM28C,EAAczB,EAAoBd,GACxCO,EAAQgC,EAAa5O,EAAamG,OACtC,CAQI,EAMAwI,GAGAvC,GAAc7d,GACNA,EAAKh6E,QACL43F,EAAgB5d,EAAK,IACdA,EAAKj4E,MAAM,KAGlBk2F,GAAU,GACHje,IAGnB,GACD,IACH,MAAO,IAAMsgB,cAAcJ,EAAM,GAClC,CAAClC,EAAQvM,EAAamG,OAAQkG,KAEjC3qC,EAAAA,EAAAA,YAAU,KAEN,MAAMktC,EAAczB,EAAoBd,GACxCO,EAAQgC,EAAa5O,EAAamG,OAAO,GAC1C,KAGCK,EAAAA,GAAAA,KAAA,OAAKR,UAAU,gBAAgBv/B,QAAU7oD,GA/HpBA,KACrB,GAAI2uF,EAAQ,CAER,MAAMuC,EAAOnC,EAAaptE,QAAQwvE,wBAClC,IAAIC,EAAWpxF,EAAE8pC,QAAUonD,EAAKjhC,KAChC,MAAMohC,EAAWtC,EAAaptE,QAAQ2vE,YAChCrC,EAAcxkE,GAAM2mE,EAAWC,EAAW,KAChD,GAAIxyF,KAAKoK,IAAIgmF,EAAcR,GAAc,GACrC,OAEJ,MAAMlG,EAASnG,EAAamG,OAC5ByG,EAAQC,EAAa1G,EACzB,GAmH+CgJ,CAAgBvxF,GAAI2+C,IAAKowC,EAAa/1D,UACjF4vD,EAAAA,GAAAA,KAAC4I,GAAY,CACTpP,aAAcA,EACdC,OAAQA,EACRC,YAAaA,KAEf,wQCzHd,GA7B4BmP,KACxB,MAAOC,EAAcC,IAAmBhuC,EAAAA,EAAAA,UAAS,EAC7C,GAAO,GAAO,GAAO,GAAO,GAAO,IAevC,OAbAG,EAAAA,EAAAA,YAAU,KACN,MAAM+sC,EAAQC,aAAY,KACtBa,GAAgBhhB,IACZ,IAAI/4E,EAAS,GACb,IAAK,IAAIuV,KAASwjE,EAAM,CACpB,MAAMihB,EAAe/yF,KAAKw1C,SAAW,IAAQlnC,EAAQA,EACrDvV,EAAOZ,KAAK46F,EAChB,CACA,OAAOh6F,CAAM,GACf,GACH,KACH,MAAO,IAAMq5F,cAAcJ,EAAM,GAClC,KAEClI,EAAAA,GAAAA,MAAAkJ,GAAAA,SAAA,CAAA74D,SAAA,EACI4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAChIJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAChIJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAChIJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAChIJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAChIJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,wCAAArnF,QAA8D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,OACjI,8ECCX,GA1B2B+I,KACvB,MAAOL,EAAcC,IAAmBhuC,EAAAA,EAAAA,UAAS,EAC7C,GAAO,GAAM,IAejB,OAbAG,EAAAA,EAAAA,YAAU,KACN,MAAM+sC,EAAQC,aAAY,KACtBa,GAAgBhhB,IACZ,IAAI/4E,EAAS,GACb,IAAK,IAAIuV,KAASwjE,EAAM,CACpB,MAAMihB,EAAe/yF,KAAKw1C,SAAW,IAAQlnC,EAAQA,EACrDvV,EAAOZ,KAAK46F,EAChB,CACA,OAAOh6F,CAAM,GACf,GACH,KACH,MAAO,IAAMq5F,cAAcJ,EAAM,GAClC,KAEClI,EAAAA,GAAAA,MAAAkJ,GAAAA,SAAA,CAAA74D,SAAA,EACI4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,uCAAArnF,QAA6D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAC/HJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,uCAAArnF,QAA6D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,MAC/HJ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,uCAAArnF,QAA6D,IAApB2wF,EAAa,GAAc,SAAW,YAAcnoF,IAAKuoF,GAAW9I,IAAI,OAChI,ECOX,GAtBmBzW,IAAoB,IAAnB,YAAC+P,GAAY/P,EAC7B,OACIoW,EAAAA,GAAAA,MAAA,OAAKP,UAAU,uBAAsBpvD,SAAA,EACjC4vD,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,MAAM7+E,IAAKyoF,GAAKlJ,UAAU,QAAQE,IAAI,oBAC1EJ,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,SAAS7+E,ivMAAau/E,UAAU,QAAQE,IAAI,wBAChFJ,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,SAAS7+E,q5FAAau/E,UAAU,QAAQE,IAAI,wBAChFJ,EAAAA,GAAAA,KAAA,OAAKR,UAAU,uBAAsBpvD,UACjC4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,eAAcpvD,UACzB4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,aAGvBQ,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,kBAAkB7+E,IAAK0oF,GAAgBjJ,IAAI,wBAAyBF,UAAU,WAClHF,EAAAA,GAAAA,KAAC6I,GAAmB,KAEpB7I,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,iBAAiB7+E,IAAK2oF,GAAelJ,IAAI,wBAAyBF,UAAU,WAChHF,EAAAA,GAAAA,KAACuJ,GAAmB,KACpBvJ,EAAAA,GAAAA,KAAA,OAAKC,OAAQvG,EAAa8F,UAAU,SAAS7+E,ikSAAay/E,IAAI,eAAgBF,UAAU,YAEtF,ECFd,GArBcsJ,KACV,MACOC,EAAcC,IAAmB3uC,EAAAA,EAAAA,UAAS,IAC1C4uC,EAAeC,IAAoB7uC,EAAAA,EAAAA,UAAS,GAC7C2+B,EAAcA,KAChBgQ,GAAiB3hB,GACNA,EAAO,IAElB6hB,EAAkBH,EAPH,GAO8B,IAAI,EAErD,OACI1J,EAAAA,GAAAA,MAAA,OAAKP,UAAS,mBAAArnF,OAVC,KAUoBsxF,EAA8B,SAAW,WAAYr5D,SAAA,EACpF4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,eAAArnF,OAXH,KAWoBsxF,EAA8B,SAAW,WAAYr5D,UAChF4vD,EAAAA,GAAAA,KAAA,OAAK/qD,MAAO,CAACyP,MAAOilD,EAAgB,KAAMnK,UAAU,gBAExDQ,EAAAA,GAAAA,KAAC6J,GAAU,CAACnQ,YAAaA,KACzBsG,EAAAA,GAAAA,KAAC8J,GAAG,CAACpQ,YAAaA,MAChB,ECVd,GATwB/P,IAAoB,IAAnB,KAACnqE,EAAI,MAAEkgF,GAAM/V,EACpC,OACEoW,EAAAA,GAAAA,MAAA,OAAKP,UAAU,6BAA4BpvD,SAAA,EACvC4vD,EAAAA,GAAAA,KAAA,OAAKr/E,IAAK++E,EAAOU,IAAG,GAAAjoF,OAAKqH,EAAI,YAC7BwgF,EAAAA,GAAAA,KAAA,OAAKR,UAAU,aAAYpvD,SAAG5wB,MAC5B,qPC4IV,GAxHauqF,KAELhK,EAAAA,GAAAA,MAAA,OAAKP,UAAU,iBAAgBpvD,SAAA,EAC3B2vD,EAAAA,GAAAA,MAAA,MAAA3vD,SAAA,CAAI,oBAAgB4vD,EAAAA,GAAAA,KAAA,SAAM,+BAC1BD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,gBAAepvD,SAAA,EAC1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,iBAAgBpvD,UAC3B2vD,EAAAA,GAAAA,MAAA,KAAA3vD,SAAA,CAAG,wEACiE4vD,EAAAA,GAAAA,KAAA,SAAK,0BAAsBA,EAAAA,GAAAA,KAAA,QAAMR,UAAU,aAAYpvD,SAAC,UAAY,4BAG5I4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,kBAAiBpvD,UAC5B4vD,EAAAA,GAAAA,KAAA,OAAKr/E,IAAKqpF,GAAY5J,IAAI,sCAGlCL,EAAAA,GAAAA,MAAA,MAAIP,UAAU,gBAAepvD,SAAA,CAAC,eAE1B4vD,EAAAA,GAAAA,KAAA,KAAGn2C,KAAMogD,GAAQzK,UAAU,cAAe0K,IAAI,aAAalxF,OAAO,SAAQo3B,SAAC,oBAE/E2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,4BAA2BpvD,SAAA,EACtC4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,YAAWpvD,UACtB4vD,EAAAA,GAAAA,KAAA,OAAKr/E,8qRAAiBy/E,IAAI,uBAE9BL,EAAAA,GAAAA,MAAA,OAAKP,UAAU,aAAYpvD,SAAA,EACvB4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,eAAcpvD,SAAC,gBAG9B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,yCAG1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,iBAG1B2vD,EAAAA,GAAAA,MAAA,KAAA3vD,SAAA,CAAG,4ZAEC4vD,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,SAAM,4TAEZA,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,SAAM,4HAKxBD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,gBAAepvD,SAAA,EAC1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,YAAWpvD,UACtB4vD,EAAAA,GAAAA,KAAA,OAAKr/E,i/IAAmBy/E,IAAI,2BAEhCL,EAAAA,GAAAA,MAAA,OAAKP,UAAU,aAAYpvD,SAAA,EACvB4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,eAAcpvD,SAAC,oBAG9B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,qCAG1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,iBAG1B2vD,EAAAA,GAAAA,MAAA,KAAA3vD,SAAA,CAAG,6KAEC4vD,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,SAAM,2YAEZA,EAAAA,GAAAA,KAAA,UAAMA,EAAAA,GAAAA,KAAA,SAAM,6UAKxBD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,gBAAepvD,SAAA,EAC1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,YAAWpvD,UACtB4vD,EAAAA,GAAAA,KAAA,OAAKr/E,IAAKwpF,GAAqB/J,IAAI,kCAEvCL,EAAAA,GAAAA,MAAA,OAAKP,UAAU,aAAYpvD,SAAA,EACvB4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,eAAcpvD,SAAC,2BAG9B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,iEAG1B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,WAAUpvD,SAAC,iBAG1B4vD,EAAAA,GAAAA,KAAA,KAAA5vD,SAAG,sNAKX4vD,EAAAA,GAAAA,KAAA,MAAIR,UAAU,gBAAepvD,SAAC,gBAC9B2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,mBAAkBpvD,SAAA,EAC7B4vD,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,aAAakgF,mkJACnCM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,MAAMkgF,+/MAC5BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,MAAMkgF,usMAC5BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,MAAMkgF,u9JAC5BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,OAAOkgF,uiMAC7BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,OAAOkgF,2yMAC7BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,sBAAsBkgF,+3MAC5CM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,SAASkgF,mtKAC/BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,SAASkgF,mqJAC/BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,QAAQkgF,2sNAC9BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,MAAMkgF,u/JAC5BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,UAAUkgF,mtHAChCM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,YAAYkgF,u7LAClCM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,UAAUkgF,mqJAChCM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,QAAQkgF,2gIAC9BM,EAAAA,GAAAA,KAACoK,GAAe,CAAC5qF,KAAK,YAAYkgF,0sSAEtCK,EAAAA,GAAAA,MAAA,OAAKP,UAAU,oBAAmBpvD,SAAA,EAC9B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,aAAYpvD,SAAC,8EAG5B2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,iBAAgBpvD,SAAA,EAC3B4vD,EAAAA,GAAAA,KAAA,KAAGn2C,KAAK,oDAAoD21C,UAAU,kBAAkB0K,IAAI,aAAalxF,OAAO,SAAQo3B,UACpH4vD,EAAAA,GAAAA,KAAA,OAAKr/E,i1FAAey/E,IAAI,qBAE5BJ,EAAAA,GAAAA,KAAA,KAAGn2C,KAAK,+BAA+B21C,UAAU,kBAAiBpvD,UAC9D4vD,EAAAA,GAAAA,KAAA,OAAKr/E,ymHAAWy/E,IAAI,mBAIhCJ,EAAAA,GAAAA,KAAA,OAAKr/E,IAAK0pF,GAAQ7K,UAAU,QAAQY,IAAI,iBC/GpD,GA3BYkK,KACV,MAAOC,EAAWC,IAAgBzvC,EAAAA,EAAAA,WAAS,GAY3C,OAVAG,EAAAA,EAAAA,YAAU,KACRxxC,OAAO1E,iBAAiB,UAAU,SAAU5N,GACtCsS,OAAO+9E,SAAW,EACpB+C,GAAa,GAEbA,GAAa,EAEjB,GAAE,GACD,KAGDxK,EAAAA,GAAAA,KAAA,OAAKR,UAAS,iBAAArnF,OAAmBoyF,GAAYn6D,UAC3C2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,aAAYpvD,SAAA,EACzB4vD,EAAAA,GAAAA,KAAC5H,GAAI,CAACoH,UAAU,QAAQthE,GAAI,CAAEqrD,SAAU,KAAMn5C,SAAC,gBAG/C2vD,EAAAA,GAAAA,MAAC3H,GAAI,CAACoH,UAAU,oBAAoBthE,GAAI,CAAEqrD,SAAU,kBAAmBn5C,SAAA,CAAC,WACpE4vD,EAAAA,GAAAA,KAAA,QAAMR,UAAU,cAAapvD,SAAC,+BAGhC,ECVV,GAZaq6D,KAET1K,EAAAA,GAAAA,MAAA,OAAA3vD,SAAA,EACE4vD,EAAAA,GAAAA,KAACsK,GAAG,KACJvK,EAAAA,GAAAA,MAAA,OAAKP,UAAU,iBAAgBpvD,SAAA,EAC7B4vD,EAAAA,GAAAA,KAACwJ,GAAK,KACNxJ,EAAAA,GAAAA,KAAC+J,GAAI,UCmBb,GA5BqBW,KACjB,MAAOzmF,EAAO0mF,IAAY5vC,EAAAA,EAAAA,UAAS,IAC5B6vC,EAAQC,IAAa9vC,EAAAA,EAAAA,WAAS,GAiBrC,OAhBAG,EAAAA,EAAAA,YAAU,KACN,IAAI5c,EAWJ,OAVAA,EAAK4pD,aAAY,IAAMyC,GAClBG,IACG,GAAIF,EAIA,OAHIE,EAAW,KACXD,GAAU,GAEPC,EAAW,CACtB,KAEL,GACI,KACHzC,cAAc/pD,EAAG,CACpB,GACF,KAEC0hD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,iBAAArnF,OAAmByyF,GAASx6D,UACtC4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,sBAAwBpvD,UAClC4vD,EAAAA,GAAAA,KAAA,OAAK/qD,MAAO,CAAEyP,MAAOzgC,EAAQ,KAAOu7E,UAAU,gBAEhD,ECyDd,GAhFsB7V,IAAmH,IAAlH,kBAAEohB,EAAiB,KAAEC,EAAI,cAAEC,EAAa,iBAAEC,EAAgB,cAAEC,EAAa,eAAEC,EAAc,gBAAEC,GAAiB1hB,EAC/H,MAAO2hB,EAAaC,IAAkBxwC,EAAAA,EAAAA,UAAS,KACxCywC,EAAeC,IAAoB1wC,EAAAA,EAAAA,UAAS,UAMnDG,EAAAA,EAAAA,YAAU,MAGgB,IAAlB+vC,IAA6C,IAAlBO,EAC3BnkF,YAAW,KACPokF,GAAiB,EAAM,GACxB,KAGHA,EAAiBR,EACrB,GACD,CAACA,IAEJ,MAAOS,EAAeC,IAAoB5wC,EAAAA,EAAAA,WAAS,GAC7C6wC,EAAsB,CACxBvkC,KAAM,MACNhyC,UAAW,eACX0e,QAAS,OAEN83D,EAAcC,IAAmB/wC,EAAAA,EAAAA,UAAS6wC,GAgCjD,OA/BA1wC,EAAAA,EAAAA,YAAU,KACFiwC,GACAW,EAAgB,CACZzkC,KAAM,MACNhyC,UAAW,eACX0e,QAAS,SAEb43D,EAAiB,SAGjBA,GAAkB5jB,IACd,GAAa,SAATA,EAAiB,CACjB,MAAMt8B,EAAiC,KAAvBx1C,KAAKw1C,SAAW,IAC1BsgD,EAAqC,KAAvB91F,KAAKw1C,SAAW,IAUpC,OATAqgD,EAAgB,CACZzkC,KAAM5b,EAAS,KACfp2B,UAAU,UAADld,OAAY4zF,EAAU,QAC/B7vD,WAAY,OAEhB70B,YAAW,KACPykF,EAAgBF,GAChBD,EAAiB,QAAQ,GAC1B,KACI,gBACX,CAEI,MAAO,OACX,GAER,GACD,CAACR,KAEApL,EAAAA,GAAAA,MAAA,OACIP,UAAU,iBACVv/B,QAASA,KA3DU+rC,EAAChB,EAAMO,KAC9BA,EAAeR,EAAkBC,GAAQ,UAAY,IACrD3jF,YAAW,IAAMkkF,EAAe,KAAK,IAAK,EAyDrBS,CAAmBhB,EAAMO,EAAe,EAAGn7D,SAAA,EAE5D4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAS,QAAArnF,OACFmzF,EAAW,sBAAAnzF,OACjB+yF,EAAmB,UAAY,GAAE,uBAAA/yF,OACjCqzF,EAAgB,GAAK,mBAAkB,sBAAArzF,OACvCgzF,EAAgB,aAAe,GAAE,sBAAAhzF,OACjCkzF,EAAkB,eAAiB,GAAE,sBAAAlzF,OACrCizF,EAAiB,cAAgB,IACtCh7D,SACI46D,EAAKl7F,MAAM,GAAI,MAEpBkwF,EAAAA,GAAAA,KAAA,OAAK/qD,MAAO42D,EAAcrM,UAAS,iBAAArnF,OAAmBuzF,GAAiB/qF,qhFAAcu/E,UAAU,WAC/FF,EAAAA,GAAAA,KAAA,OAAKR,UAAS,mBAAArnF,OAAqBkzF,GAAmB1qF,qgEAAgBu/E,UAAU,YAC9E,EC/ER+L,GAAiB,CACnB,MAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5B,MAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5B,gBAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACpC,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACrC,OAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7B,SAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/B,OAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7B,WAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjC,QAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9B,QAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAE5BC,GAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvD,IAAIC,GAAgB,CAChB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,IAET,MAAMC,GAAiB,CAAC,IAAK,UAAM,IAAK,IAAK,UAAM,IAAK,UAAM,IAAK,IAAK,UAAM,IAAK,WAC7EC,GAAgB,CAAC,IAAK,UAAM,IAAK,IAAK,UAAM,IAAK,UAAM,IAAK,IAAK,UAAM,IAAK,WAE3E,SAASC,GAAUv9F,EAAKw9F,GAC3B,MAAMC,EAAcL,GAAcI,GAC5BE,EAAqB19F,EAAM,GACjC,IAAI29F,GAAe39F,EAAM09F,GAAsB,GAC3CE,EAAiBF,EAAqBD,EAEtCv2F,KAAKoK,IAAIosF,GAAsBD,EAAc,KAAOv2F,KAAKoK,IAAIssF,IAC7DD,IACAC,EAAiBF,GAAsBD,EAAc,KAE/Cv2F,KAAKoK,IAAKosF,EAAqB,GAAMD,GAAgBv2F,KAAKoK,IAAIssF,KACpED,IACAC,EAAkBF,EAAqB,GAAMD,GAEjD,IAAII,EAAc,GAClB,GAAID,EAAiB,EACjB,IAAK,IAAIt/F,EAAI,EAAGA,GAAKs/F,EAAgBt/F,IACjCu/F,GAAe,cAGlB,GAAID,EAAiB,EACtB,IAAK,IAAIt/F,EAAI,EAAGA,EAAIs/F,EAAgBt/F,IAChCu/F,GAAe,SAGvB,OAAOL,EAAWK,EAAcF,CACpC,CAEO,SAASG,GAAU7B,GACtB,MAAM8B,EAAS9B,EAAKl7F,OAAO,GACrBy8F,EAAWvB,EAAKl7F,MAAM,EAAG,GACzB88F,EAAc5B,EAAKl7F,MAAM,GAAI,GAC7Bi9F,GAAUH,EAAYn/D,MAAM,YAAO,IAAI1/B,OACvCi/F,GAASJ,EAAYn/D,MAAM,YAAO,IAAI1/B,OAC5C,OAAOo+F,GAAcI,GAAYQ,EAASC,EAAkB,GAATF,CACvD,CAEA,SAASG,GAAeC,EAAcC,EAAaC,GAC/C,OAAkB,IAAdA,EACQF,EAAe,GAAKC,EAC5B,EAAID,EAAeE,EAGXF,EAAe,EAAI,EAC3BC,EAAc,EAAID,EAAeE,CAEzC,CAEO,SAASC,GAAcC,EAAMj7F,GAA6C,IAAvCk7F,EAAMz6F,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,EAAGjE,EAAKiE,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,KAAMhE,EAAGgE,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,KACtE,MAAM06F,IAAY1+F,EAElBD,EAA2Bg+F,GAAR,OAAVh+F,EAA4By+F,EAAkBz+F,GAEvDC,EAAe,OAARA,EAAgB+9F,GAAUS,GAAQ,GAAKT,GAAU/9F,GACxD,MAAMs+F,EAAYt+F,EAAMD,EAAQ,GAAK,EAErC,IAAI09F,EAAWe,EAAKx9F,MAAM,EAAG,GAC7B,IAAI29F,EAAgB,EACpB,KAAOlB,IAAaL,GAAgBuB,IAChCA,EAAgBR,GAAeQ,EAAevB,GAAgBn+F,OAAQq/F,GAE1E,MAAMM,EAAgBzB,GAAe55F,GAMrC,IALA,IAAIs7F,GAAc,EACdC,EAA+B,IAAdR,EAAkBP,GAAUS,GAAQT,GAAUS,GAAS,IACxEO,EAAmC,IAAdT,EAAkB,EAAIM,EAAc3/F,OAAS,EAClE+/F,EAAa,GAEVF,IAAmB9+F,GAAK,CAI3B,GAHI8+F,IAAmB/+F,IACnB8+F,GAAc,GAEdA,IACAG,EAAW1/F,KAAKk+F,GAAUsB,EAAgB1B,GAAgBuB,KAEtDF,GAAoB,GAAVA,GAAa,CACvB,IAAIQ,EAAgBH,EAChBI,EAA2BH,EAC3BI,EAAsBR,EAC1B,IAAK,IAAIpgG,EAAI,EAAGA,EAAIkgG,EAAS,EAAGlgG,IAC5B0gG,EAA8B,IAAdX,EACZW,EAAgBL,EAAcM,GAC9BD,EAAgBL,EAAcM,GAClCA,EAA2Bf,GAAee,EAA0BN,EAAc3/F,OAAQq/F,GAC1Fa,EAAsBhB,GAAegB,EAAqB/B,GAAgBn+F,OAAQq/F,GAEtFU,EAAW1/F,KAAKk+F,GAAUyB,EAAe7B,GAAgB+B,IAC7D,CAEJL,EAA+B,IAAdR,EACbQ,EAAiBF,EAAcG,GAC/BD,EAAiBF,EAAcG,GACnCA,EAAqBZ,GAAeY,EAAoBH,EAAc3/F,OAAQq/F,GAC9EK,EAAgBR,GAAeQ,EAAevB,GAAgBn+F,OAAQq/F,EAC1E,CAEA,OADII,GAAaM,EAAW1/F,KAAKk+F,GAAUx9F,EAAKo9F,GAAgBuB,KACzDK,CACX,CAmBO,SAASI,GAAyBlD,EAAMmD,GAC3C,GAAInD,EAAM,CACN,MAAM8B,EAAS9B,EAAKl7F,OAAO,GACrBs+F,EAAcpD,EAAKl7F,MAAM,GAAI,GACnC,OAAKk7F,EAAK3xF,SAAS,WAA4B,WAAlB80F,EAClB9B,GAAcD,GAAex9F,QAAQw/F,IAAgBtB,EAEtD9B,EAAK3xF,SAAS,WAA4B,WAAlB80F,EACvB/B,GAAeC,GAAcz9F,QAAQw/F,IAAgBtB,EAGrD9B,CAEf,CAEI,OAAO,IAEf,CAEA,SAASqD,GAAgBP,GAIrB,IAHA,IAAIQ,EAAgBR,EAAW73F,KAAK+J,MAAM/J,KAAKw1C,SAASqiD,EAAW//F,SAC/DwgG,EAAat4F,KAAK+J,MAAmB,EAAb/J,KAAKw1C,SAAyB,GACtD+iD,EAAaF,EAAcx+F,MAAM,GAAI,GAAKy+F,EACtC1B,GAAU2B,GAAc3B,GAAU,aACrCA,GAAU2B,GAAc3B,GAAU,OACnCyB,EAAgBR,EAAW73F,KAAK+J,MAAM/J,KAAKw1C,SAASqiD,EAAW//F,SAC/DwgG,EAAat4F,KAAK+J,MAAmB,EAAb/J,KAAKw1C,SAAyB,GACtD+iD,EAAaF,EAAcx+F,MAAM,GAAI,GAAKy+F,EAE9C,OAAOC,CACX,CAEA,SAASC,GAAcX,EAAYY,EAASnB,GACpCA,EAAS,EACTA,IAEKA,EAAS,GACdA,IAEJ,IAAIT,EAAS4B,EAAQ5+F,OAAO,GAC5B,MAAM6+F,EAAkBD,EAAQ5+F,MAAM,GAAI,GAC1C,IAAI8+F,EAAqBd,EAAW1hF,KAAK4+E,GAC9BA,EAAKl7F,MAAM,GAAI,KAE1B,IACI++F,EADWD,EAAmBhgG,QAAQ+/F,GAChBpB,EAS1B,OARIsB,EAAWf,EAAW//F,OAAS,GAC/B++F,IACA+B,GAAY,GAEPA,EAAW,IAChB/B,IACA+B,GAAY,GAETD,EAAmBC,GAAY/B,CAC1C,CC9LA,MA8GA,GA9GkBnjB,IAAiF,IAAhF,SAAEmlB,EAAQ,YAAEC,EAAW,UAAEC,EAAS,QAAEC,EAAO,SAAEC,EAAQ,kBAAEnE,GAAmBphB,EACzF,MAAMwlB,EAAsB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACpDC,EAAeC,IAAoBt0C,EAAAA,EAAAA,UAAS,CAAC,IAC7Cu0C,EAAiBC,IAAsBx0C,EAAAA,EAAAA,UAAS,CAAC,GAElDy0C,GAAsBjzC,EAAAA,EAAAA,cAAauyC,IACrC,IAAI9/F,EAAS,GACTygG,EAAmB,EACvB,IAAK,IAAIC,KAAiBP,EAAqB,CAC3C,MAAMQ,EAAalhG,MAAMe,KAAKkgG,GAAe,GAC7C,IAAIE,EAAe16F,SAASzG,MAAMe,KAAKkgG,GAAe,IAClD1pF,EAAQ8oF,EAASlgG,QAAQ+gG,GACzBE,EAAc,GAElB,IAAK,IAAIxiG,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAE1B,MAAMyiG,EAAWD,EAAY//F,OAAO,GAAG,GACnCggG,GACqC,MAAjCrhG,MAAMe,KAAKsgG,EAAS9E,MAAM,IACS,UAAhCv8F,MAAMe,KAAKsgG,EAAS9E,MAAM,KAC7B4E,GAA8B,GAItCC,EAAYzhG,KAAK,CACb48F,KAAM8D,EAAS9oF,GAAS4pF,EACxBtxD,GAAImxD,IAERA,IACAzpF,EAAUA,EAAQ,EAAM8oF,EAAS/gG,OAAS,EAAM,EAAIiY,EAAQ,CAChE,CAEAhX,EAAOZ,KAAKyhG,EAChB,CAEA,OADA7gG,EAASA,EAAO,GAAGod,KAAI,CAAC4M,EAAG+2E,IAAa/gG,EAAOod,KAAI4jF,GAAOA,EAAID,MACjD,GACd,IACH,IAAIE,EAAcT,EAAoBV,GAEtC,MAAMoB,EAAsBA,CAAClF,EAAMiF,KAG/B,IAAKjF,EAAM,OACX,IAAImF,EAAS,GACb,IAAK,IAAI9iG,EAAI,EAAGA,EAAI4iG,EAAYliG,OAAQV,IAEpC,IADA,IAAIgD,EAAS4/F,EAAY5iG,GAChBsH,EAAI,EAAGA,EAAItE,EAAOtC,OAAQ4G,IAC3Bk4F,GAAUx8F,EAAOsE,GAAGq2F,QAAU6B,GAAU7B,IACxCmF,EAAO/hG,KAAKiC,EAAOsE,IAI/B,OAAOw7F,EAAOl6F,KAAK+J,MAAM/J,KAAKw1C,SAAW0kD,EAAOpiG,QAAQ,EAmB5D,OAhBAmtD,EAAAA,EAAAA,YAAU,KACF8zC,IAAcI,EAAcpE,KAC5BuE,EAAmBH,GAGnBG,EAAmBW,EAAoBlB,EAAWiB,IAEtDZ,EAAiBa,EAAoBjB,EAASgB,GAAa,GAC5D,CAACjB,EAAWC,KAGf/zC,EAAAA,EAAAA,YAAU,KACF6zC,IAAgBO,EAAgBtE,MAChCuE,EAAmB,CAAC,EACxB,GACD,CAACR,KAEA/O,EAAAA,GAAAA,KAAA,OAAKR,UAAU,sBAAqBpvD,SAC/B6/D,EAAY7jF,KAAI,CAAC6jF,EAAa5iG,KAEvB2yF,EAAAA,GAAAA,KAAA,OACIR,UAAU,MAEVvqD,MAAO,CACHyP,MAAgB,IAAMr3C,IAAK,MAAnB,KAA4B,IAAO,IAC3Cs3C,OAA8B,GAArB,GAAM,EAAI,GAAMt3C,GAAS,KACpC+iC,SAED6/D,EAAY7jF,KAAI,CAAC4+E,EAAM39F,KAEhB2yF,EAAAA,GAAAA,KAAA,OACIR,UAAU,MAAKpvD,UAGf4vD,EAAAA,GAAAA,KAACoQ,GAAa,CACVrF,kBAAmBA,EACnBC,KAAMA,EAAKA,KACXE,iBAAkB6D,IAAgB/D,EAAKA,KACvCC,cAAe8D,IAAgBG,EAC/B/D,cAAeH,EAAK1sD,KAAO8wD,EAAc9wD,GACzC+sD,gBAAiBL,EAAK1sD,KAAOgxD,EAAgBhxD,GAC7C8sD,eAAgBJ,EAAKA,OAASkE,KAT7BlE,EAAK1sD,OAVjBjxC,MA6Bf,wEC5Gd,MAAMgjG,GAAc3/F,EAAQ,MAmBrB,SAAS4/F,GAAgBC,EAASC,GAMrCzpF,UAAUE,aAAaD,aAAa,CAAEF,OAAO,IACxCI,MAAK,SAAUC,GAEZ,IAAIspF,EADJD,GAAkB,GAElBxpF,KAAa,CAAEH,OAAO,EAAOC,OAAO,IAAQ,CAACxE,EAAK6E,KAC9C,MAAMupF,EAAcL,GAAYpvE,KAAK,CAAE7W,WAAY,MACnD,IAAI9H,EAkBA,OAdAmuF,EAAY,IAAIvnF,MAChBunF,EAAUxmF,UAAU9C,GAEpBspF,EAAU7tF,GAAG,QAAQ,SAAUyI,GAC3B,MAAMslF,EAAMznF,KAAAA,MAAuBmC,GAC7B2Z,EAAQ0rE,EAAYC,GAE1B,GAAe,OAAV3rE,GAAoBA,EAAQ,KAAO,CACpC,MAAMgmE,EAzClC,SAAqBhmE,GAEjB,IAAIwa,EAYJ,OAXAtwC,OAAO0hG,QAAQC,MAAYl1E,SAAQguD,IAA4B,IAA1BqhB,EAAM8F,GAAcnnB,EACjD3jE,EAAQ,EACZ,IAAK,MAAMqc,KAAQyuE,EAGV9rE,EAFmB,KAAJ3C,GAEU2C,EADN,IAAJ3C,IAEhBmd,EAAcwrD,EAAOhlF,GAEzBA,GACJ,IAEGw5B,CACX,CA0ByCuxD,CAAY/rE,GACZ,OAATgmE,GACAuF,EAAQvF,EAEhB,CACJ,IACOyF,EAjBPn5F,QAAQ2Q,IAAI3F,EAkBhB,GAER,IACC8E,OAAM,SAAU9E,GACbkuF,GAAkB,GAClBQ,MAAM,iBACV,GACR,iIC1BA,GA/BsBrnB,IAAyB,IAAxB,eAAEsnB,GAAgBtnB,EAIrC,MAAOunB,EAAYC,IAAiBp2C,EAAAA,EAAAA,WAAS,IACtCq2C,EAAaC,IAAkBt2C,EAAAA,EAAAA,WAAS,GAmB/C,OAjBA1zC,YAAW,MACgB,IAAnB4pF,EACKG,GACDD,GAAc,GAIlBA,GAAc,GAElBE,GAAe,EAAM,GACtB,MAEHn2C,EAAAA,EAAAA,YAAU,KACDk2C,GACDD,GAAeF,EACnB,GACD,CAACA,KAEAjR,EAAAA,GAAAA,KAAA,OAAKR,UAAS,yBAAArnF,OAA2B+4F,GAAa9gE,UAClD4vD,EAAAA,GAAAA,KAAA,OAAKr/E,IAAK2wF,GAAkBlR,IAAI,0BAC9B,ECyHd,GAnJoBzW,IAA0C,IAAzC,SAACvd,EAAQ,QAAEr/C,EAAO,eAAEwkF,GAAe5nB,EAEpD,MAAM6nB,EAAc,GAGdC,EAAeD,IACfE,GAAe70C,EAAAA,EAAAA,QAAO,MACtB80C,GAAkB90C,EAAAA,EAAAA,QAAO,MACzB+0C,GAAiB/0C,EAAAA,EAAAA,QAAO,OACvBg1C,EAAcC,IAAmB/2C,EAAAA,EAAAA,WAAS,IAC1Cg3C,EAAUC,IAAej3C,EAAAA,EAAAA,UAAS,MAClCk3C,EAAYC,IAAiBn3C,EAAAA,EAAAA,UAAS,MACtCo3C,EAAUC,IAAgBr3C,EAAAA,EAAAA,UAAShuC,EAAQ,IAC5CslF,GAAcx1C,EAAAA,EAAAA,QAAO,OAKpBqtC,EAAKoI,IAAWv3C,EAAAA,EAAAA,UAAS,GAC1Bw3C,GAAS11C,EAAAA,EAAAA,QAAOqtC,IAKf7xF,EAAKm6F,IAAWz3C,EAAAA,EAAAA,UAAS02C,GAC1BgB,GAAS51C,EAAAA,EAAAA,QAAOxkD,GAChBq6F,EAASngG,IACXkgG,EAAO15E,QAAUxmB,EACjBigG,EAAQjgG,EAAK,GAEVogG,EAAUC,IAAgB73C,EAAAA,EAAAA,WAAS,GACpC83C,GAAch2C,EAAAA,EAAAA,QAAO81C,GACrBG,EAAcvgG,IAChBsgG,EAAY95E,QAAUxmB,EACtBqgG,EAAargG,EAAK,EAGhBwgG,EAAwB16F,IAC1B,MAAM26F,EAAepB,EAAe74E,QAAQk6E,UACtCC,IAAoBj9F,KAAK4rB,MAAMxpB,EAAMm5F,GAAeA,EAAeC,GAAgBD,EACnF2B,EAAYpmF,EAAQmmF,GA1BV3gG,MA2BV4gG,IAAcH,IAChBpB,EAAe74E,QAAQk6E,UAAYE,EA5BvB5gG,EA6BA4gG,EA5BhBd,EAAYt5E,QAAUxmB,EACtB6/F,EAAa7/F,GA4BTy/F,EAAYJ,EAAe74E,QAAQ2vE,aACvC,EAGE0K,GAAc72C,EAAAA,EAAAA,cAAanlD,IAC7B,GAAKy7F,EAAY95E,QAAjB,CACA,IAAIs6E,EAAUj8F,EAAEiqC,MAAQkxD,EAAOx5E,QAC3Bs6E,GAAY,IACZA,EAAW,IAENA,KAAa7B,GAAezkF,EAAQhf,OAAS,GAAK0jG,KACvD4B,IAAY7B,GAAezkF,EAAQhf,OAAS,GAAK0jG,IAErDiB,EAAOW,GACPN,EAAqBN,EAAO15E,SAC5B3hB,EAAEuoC,kBACFvoC,EAAEsoC,gBAX8B,CAWd,GACnB,IAEG4zD,GAAc/2C,EAAAA,EAAAA,cAAanlD,IAE7B,GADA07F,GAAY,GACK,IAAb17F,EAAEwqC,OAAc,OACpB,MAAM2xD,EAAY5B,EAAgB54E,QAAQwvE,wBACpCiL,EAAa9B,EAAa34E,QAAQwvE,wBA/C7Bh2F,QAgDJghG,EAAUr7F,EAAId,EAAEiqC,MAAQmyD,EAAWt7F,EAAIu5F,EA/C9Cc,EAAOx5E,QAAUxmB,EACjB+/F,EAAQ//F,GA+CR6E,EAAEuoC,kBACFvoC,EAAEsoC,gBAAgB,GACnB,IAMG+zD,GAAYl3C,EAAAA,EAAAA,cAAanlD,IAC3B07F,GAAY,GACZhB,GAAgB,GANAz5F,KAChBq6F,EAAOz8F,KAAK4rB,MAAMxpB,EAAMm5F,GAAeA,EAAY,EAMnDkC,CAAWjB,EAAO15E,SACds5E,EAAYt5E,SACZqzC,EAASimC,EAAYt5E,SAEzB3hB,EAAEuoC,kBACFvoC,EAAEsoC,iBACF6xD,GAAgB,GACjB,IAwBH,OAtBAr2C,EAAAA,EAAAA,YAAU,KACFy3C,GACAvoE,SAASplB,iBAAiB,YAAaouF,GACvChpE,SAASplB,iBAAiB,UAAWyuF,KAGrCrpE,SAASllB,oBAAoB,YAAakuF,GAC1ChpE,SAASllB,oBAAoB,UAAWuuF,GAC5C,GACD,CAACd,KAEJz3C,EAAAA,EAAAA,YAAU,KACN7zC,YAAW,KACP2qF,EAAYJ,EAAe74E,QAAQ2vE,YAAY,GAChD,KACHsJ,EAAYJ,EAAe74E,QAAQ2vE,YAAY,GAChD,CAACkJ,KAEJ12C,EAAAA,EAAAA,YAAU,KACNg3C,EAAcR,EAAa34E,QAAQ2vE,YAAY,GAChD,CAACgJ,KAGA1R,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,CAAA74D,UACA4vD,EAAAA,GAAAA,KAAA,OACI/qD,MAAS,CAAEyP,MAAOqtD,EAAW,MAC7Bh8C,IAAK47C,EACLnS,UAAU,mBACVmU,aAAcA,IAAM7B,GAAgB,GACpC8B,aAAcA,KACLjB,GAAUb,GAAgB,EAAM,EACvC1hE,UAEF2vD,EAAAA,GAAAA,MAAA,OACI9qD,MAAS,CAAEyP,MAAOutD,EAAa,MAC/BzS,UAAS,sBAAArnF,OAAwB05F,EAAe,SAAU,IAAKzhE,SAAA,EAE/D4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,2BACfQ,EAAAA,GAAAA,KAAA,OAAKR,UAAU,8BACfQ,EAAAA,GAAAA,KAAA,OAAKR,UAAS,gBAAArnF,OAAkB05F,EAAe,SAAU,OACzD7R,EAAAA,GAAAA,KAAA,OAAKR,UAAS,mBAAArnF,OAAqB05F,EAAe,SAAU,OAC5D7R,EAAAA,GAAAA,KAAA,OACI/qD,MAAO,CAAEsyB,IAAKlvD,EAAM,MACpBmnF,UAAU,sBACV8T,YAAaA,EACbv9C,IAAK27C,EAAathE,SAEhBrjB,EAAQX,KAAIynF,IACV7T,EAAAA,GAAAA,KAAA,OAAoBR,UAAU,gBAAepvD,SAAGyjE,GAArCA,QAGnB7T,EAAAA,GAAAA,KAAA,OAAKjqC,IAAK67C,EAAgBpS,UAAU,kBAAiBpvD,SAAE+hE,UAG5D,ECxFX,GAzDuBxoB,IAAqD,IAApD,UAAEmqB,EAAS,cAAEC,EAAa,iBAAEC,GAAkBrqB,EAClE,MAQOsqB,EAAgBC,IAAqBn5C,EAAAA,EAAAA,UAAS,CAC7C,CAACwyC,OAAQ,EAAG1c,QAAQ,GACpB,CAAC0c,OAAQ,EAAG1c,QAAQ,GACpB,CAAC0c,OAAQ,EAAG1c,QAAQ,GACpB,CAAC0c,OAAQ,EAAG1c,QAAQ,GACpB,CAAC0c,OAAQ,EAAG1c,QAAQ,GACpB,CAAC0c,OAAQ,EAAG1c,QAAQ,KAmB5B,OACIkP,EAAAA,GAAAA,MAAA,QAAMP,UAAU,8BAA6BpvD,SAAA,EACzC4vD,EAAAA,GAAAA,KAAA,QAAMR,UAAU,eAAcpvD,SAAE0jE,EAnChB,CACpB,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,SACL,EAAK,YA6B2DA,GAAa,MACzE/T,EAAAA,GAAAA,MAAA,OAAKP,UAAU,4BAA2BpvD,SAAA,EACtC4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,QAAOpvD,SAAC,qBACvB4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,oBAAmBpvD,SAC7B6jE,EAAe7nF,KAAKynF,IAEjB7T,EAAAA,GAAAA,KAAA,OAEIR,UAAS,UAAArnF,OAAY07F,EAAOhjB,QAC5B5wB,QAASA,IA3BXstC,KAClB,IAAI4G,EAAe/qC,KAAKuL,MAAMvL,KAAKC,UAAU4qC,IACzCG,EAAiB,GACrB,IAAK,IAAIP,KAAUM,EACXN,EAAOtG,SAAWA,IAClBsG,EAAOhjB,QAAUgjB,EAAOhjB,SAEN,IAAlBgjB,EAAOhjB,QACPujB,EAAehmG,KAAKylG,EAAOtG,QAG/B6G,EAAermG,SACfimG,EAAiBI,GACjBF,EAAkBC,GACtB,EAamCE,CAAaR,EAAOtG,QAAQn9D,SAE1CyjE,EAAOtG,QAJHsG,EAAOtG,iBAUzB,ECwCf,GAzF2B5jB,IAAqH,IAApH,QAAE2qB,EAAO,aAAEC,EAAY,mBAAEC,EAAkB,QAAEC,EAAO,cAAEV,EAAa,iBAAEC,EAAgB,UAAEF,EAAS,WAAEY,GAAY/qB,EAEtI,MAAMgrB,GAAe93C,EAAAA,EAAAA,QAAO,OACrB+3C,EAAoBC,IAAyB95C,EAAAA,EAAAA,UAAS,IAE7DzmD,OAAOnF,UAAU2lG,UAAY,SAAU9uF,EAAO+uF,GAC1C,OAAO3hG,KAAKoZ,UAAU,EAAGxG,GAAS+uF,EAAc3hG,KAAKoZ,UAAUxG,EAAQ+uF,EAAYhnG,OACvF,EACA,MAeMwjG,EAAiBA,KACnB,MAAMyD,EAASR,EAAmBz7E,QAAQ2vE,YACpC7vD,EAAQ87D,EAAa57E,QAAQ2vE,YACnCmM,GACOG,EAASn8D,GAASm8D,EAAU,EAAK,IACvC,EAeL,OAZA95C,EAAAA,EAAAA,YAAU,KACF64C,GAAiBD,IACZC,EAAc16F,SAASy6F,IACxBW,IAER,GACD,CAACV,KAEJ74C,EAAAA,EAAAA,YAAU,KACNq2C,GAAgB,GACjB,KAGCxR,EAAAA,GAAAA,MAAA,OACIP,UAAU,sBACVzpC,IAAK4+C,EACL1/D,MAAO,CACHoyB,KAAMutC,EAAqB,KAC7BxkE,SAAA,EAEF4vD,EAAAA,GAAAA,KAACiV,GAAW,CACR7oC,SArCc4+B,IAClBA,GACAsJ,GAAShH,IACL,GAAIA,EAAM,OAAOA,EAAKwH,UAAU,EAAG9J,EAAK,GAEhD,EAiCQj+E,QAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxCwkF,eAAgBA,KAEpBvR,EAAAA,GAAAA,KAACiV,GAAW,CACR7oC,SAjDc8oC,IAClBA,GACAZ,GAAShH,IACL,GAAIA,EAAM,OAAOA,EAAKwH,UAAU,EAAGI,EAAW,GAEtD,EA6CQnoF,QAAS,CAAC,SAAK,SAAK,UACpBwkF,eAAgBA,KAEpBvR,EAAAA,GAAAA,KAAA,OAAK/qD,MAAO,CAAEyP,MAAO,WACrBs7C,EAAAA,GAAAA,KAACiV,GAAW,CACR7oC,SAAUmoC,EACVxnF,QACI,CAAC,QAAS,QAAS,iBAAkB,gBAAiB,SAClD,WAAY,SAAU,aAAc,UAAW,WACvDwkF,eAAgBA,KAEpBvR,EAAAA,GAAAA,KAAA,OAAK/qD,MAAO,CAAEyP,MAAO,WACrBq7C,EAAAA,GAAAA,MAAA,OAAKP,UAAU,iBAAgBpvD,SAAA,CAAC,UAG5B4vD,EAAAA,GAAAA,KAACmV,GAAc,CACXrB,UAAWA,EACXC,cAAeA,EACfC,iBAAkBA,IACpB,gBAEFhU,EAAAA,GAAAA,KAAA,OAAKR,UAAU,OAAOvqD,MAAO,CAAEmgE,YAAa,OAASz0F,w2HACrDo/E,EAAAA,GAAAA,MAAA,QAAMP,UAAU,OAAMpvD,SAAA,CAAEskE,EAAaA,EAAW1F,UAAUl/F,MAAM,GAAI,GAAK,GAAG,UAAa,UAEzFkwF,EAAAA,GAAAA,KAAA,OAAKR,UAAU,OAAO7+E,giIACtBq/E,EAAAA,GAAAA,KAAA,QAAMR,UAAU,OAAMpvD,SAAEskE,EAAaA,EAAWzF,QAAQn/F,MAAM,GAAI,GAAK,UAEzE,ECgDd,GA5HeulG,KAEX,MAAO/H,EAAMgH,IAAWv5C,EAAAA,EAAAA,UAAS,aAC1Bu6C,EAAWf,IAAgBx5C,EAAAA,EAAAA,UAAS,UACpCw6C,EAAcC,IAAmBz6C,EAAAA,EAAAA,UAAS,OAC1CiwC,EAAMuF,IAAWx1C,EAAAA,EAAAA,UAAS,OAC1Bk2C,EAAgBT,IAAqBz1C,EAAAA,EAAAA,WAAS,IAC9C25C,EAAYe,IAAiB16C,EAAAA,EAAAA,UAAS,OACtC26C,EAAaC,IAAkB56C,EAAAA,EAAAA,UAAS,IACxC+4C,EAAW8B,IAAgB76C,EAAAA,EAAAA,UAAS,OACpCg5C,EAAeC,IAAoBj5C,EAAAA,EAAAA,UAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAE7Dy5C,GAAqB33C,EAAAA,EAAAA,QAAO,MAQ5B43C,EAAU,WAAuB,IAAtBzF,EAASl8F,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,KACrByiG,IACAI,EAAe,GACfF,EP+JL,SAA6B3H,EAAYwH,GAA2C,IAAhC5G,EAAO57F,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,KAAMy6F,EAAMz6F,UAAA/E,OAAA,QAAAoC,IAAA2C,UAAA,GAAAA,UAAA,GAAG,KAC3E47F,IACDA,EAAUL,GAAgBP,IAE9B,IAAI+H,EAAexH,GAAgBP,GAC9BP,IACDA,EAASt3F,KAAK+J,MAAmB,EAAb/J,KAAKw1C,SAAyB,IAItD,IAAIqqD,GAAoB,EACxB,MAA6B,IAAtBA,GACHA,GAAoB,EAChBpH,IAAYmH,IAMZhJ,GAAU4B,GAAcX,EAAYY,GAAUnB,IAAWV,GAAU,OACnEA,GAAU4B,GAAcX,EAAYY,EAASnB,IAAWV,GAAU,eAElEiJ,GAAoB,EACpBpH,EAAUL,GAAgBP,KAG1BjB,GAAU4B,GAAcX,EAAY+H,GAAetI,IAAWV,GAAU,OACxEA,GAAU4B,GAAcX,EAAY+H,EAActI,IAAWV,GAAU,eAEvEiJ,GAAoB,EACpBD,EAAexH,GAAgBP,MAhB/BgI,GAAoB,EACpBD,EAAexH,GAAgBP,IAsBvC,MAAMiI,EAAU1I,GAAcS,EAAW,GAAIwH,EAAW/H,EAAQmB,EAASmH,GACzE,IAAK,IAAIxoG,EAAI,EAAGA,EAAI0oG,EAAQhoG,OAAQV,IAChC,GAAI0oG,EAAQ1oG,KAAOwoG,EAAa,CAC5BE,EAAQhoG,OAASV,EAAI,EACrB,KACJ,CAEJ,MAAO,CACH,QAAW0oG,EACX,UAAarH,EACb,QAAWmH,EAEnB,CO/MgBG,CAAoBT,EAAaU,cAAeX,EAAWtG,EAVrDkH,MACd,MAAM3I,EAASwG,EAAc99F,KAAK+J,MAAM/J,KAAKw1C,SAAWsoD,EAAchmG,SAEtE,OADA6nG,EAAarI,GACNA,CAAM,EAOiE2I,KAGlF,EAEMnL,EAAqBC,IACnB0J,EAAWqB,QAAQL,KAAiB1K,IACpC2K,GAAgB5tB,GAAkBA,EAAO,IACpC2sB,EAAWqB,QAAQhoG,OAAS,IAAO2nG,GACpCjB,EAAQC,EAAWzF,SAE3B,EAwBJ,OArBA/zC,EAAAA,EAAAA,YAAU,KACF8vC,GACAD,EAAkBC,EACtB,GACD,CAACA,KAEJ9vC,EAAAA,EAAAA,YAAU,KACNo1C,GAAgBC,EAASC,EAAkB,GAC5C,KAGHt1C,EAAAA,EAAAA,YAAU,KACN,MACMq6C,EPyDP,SAA8BY,GACjC,IAAK,MAAMnL,KAAQmL,EACf,GAAInL,EAAK3xF,SAAS,UACd,MAAO,CACH,cAAiB88F,EACjB,aAAgB9J,GAChB,cAAiB,UAI7B,MAAO,CACH,cAAiB8J,EACjB,aAAgB/J,GAChB,cAAiB,SAEzB,COxE6BgK,CADF/I,GAAcC,EAAMgI,IAEvCE,EAAgBD,EAAa,GAC9B,CAACjI,EAAMgI,KAEVp6C,EAAAA,EAAAA,YAAU,KACNu5C,GAAS,GACV,CAACc,KAGAxV,EAAAA,GAAAA,MAAA,OAAKP,UAAU,iBAAgBpvD,SAAA,EAC3B2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,gBAAepvD,SAAA,CACzBskE,GACG1U,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,CAAA74D,UACI2vD,EAAAA,GAAAA,MAAA,OAAA3vD,SAAA,CAAK,QACKskE,EAAW1F,UAAU,OAAK0F,EAAWzF,QAAQ,OAAKyF,EAAWnH,QACnEvN,EAAAA,GAAAA,KAAA,SACC52B,KAAKC,UAAUqrC,SAGtB1U,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,IAEL7/B,KAAKC,UAAUksC,IAChBvV,EAAAA,GAAAA,KAAA,SAAM,SACCsN,GACPtN,EAAAA,GAAAA,KAAA,SAAM,aACK0V,MAEf3V,EAAAA,GAAAA,MAAA,OAAKP,UAAU,wBAAwBzpC,IAAKy+C,EAAmBpkE,SAAA,EAC3D4vD,EAAAA,GAAAA,KAACqW,GAAa,CAACpF,eAAgBA,KAC/BlR,EAAAA,GAAAA,MAAA,OAAKP,UAAU,mBAAkBpvD,SAAA,EAC7B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,eAAe7+E,IAAK21F,GAAapW,UAAU,QAAQE,IAAI,0BACtEJ,EAAAA,GAAAA,KAAA,OAAKR,UAAU,2BAA0BpvD,SACpCmlE,GAAgBb,GACb1U,EAAAA,GAAAA,KAACuW,GAAS,CACNzH,SAAUyG,EAAaiB,aACvBzH,YAAab,GAAyBlD,EAAMuK,EAAapH,eACzDc,QAASyF,EAAWzF,QACpBD,UAAW0F,EAAW1F,UACtBE,SAAUwF,EAAWqB,QAAQL,GAC7B3K,kBAAmBA,KAGvB/K,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,UAGZjJ,EAAAA,GAAAA,KAACyW,GAAkB,CACfnC,QAASA,EACTC,aAAcA,EACdT,UAAWA,EACXU,mBAAoBA,EACpBC,QAASA,EACTV,cAAeA,EACfC,iBAAkBA,EAClBU,WAAYA,KAGhB1U,EAAAA,GAAAA,KAAA,OAAKR,UAAU,qBAAoBpvD,SAC9BskE,EAAaA,EAAWqB,QAAQ3pF,KAAI,CAAC3c,EAAOpC,KAErC2yF,EAAAA,GAAAA,KAAA,OAAaR,UAAS,2BAAArnF,OAA6B9K,IAAMqoG,EAAc,SAAW,IAAKtlE,SAClF3gC,GADKpC,MAMd2yF,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,WAGV,ECtGd,GA9B2ByN,KAEvB,MAAOhyD,EAAOiyD,IAAY57C,EAAAA,EAAAA,UAASrxC,OAAOktF,YACpCC,EAAmBA,KACrBF,EAASjtF,OAAOktF,WAAW,EAM/B,OAJA17C,EAAAA,EAAAA,YAAU,KACNxxC,OAAO1E,iBAAiB,SAAU6xF,GAC3B,IAAMntF,OAAOxE,oBAAoB,SAAU2xF,KACnD,KAEC7W,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,CAAA74D,SACKsU,EAAQ,KACLs7C,EAAAA,GAAAA,KAAAiJ,GAAAA,SAAA,KAEAjJ,EAAAA,GAAAA,KAAA,OAAKR,UAAU,uBAAsBpvD,UACjC2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,oBAAmBpvD,SAAA,EAC9B4vD,EAAAA,GAAAA,KAAA,OAAKR,UAAU,OAAMpvD,SAAC,iEAGtB2vD,EAAAA,GAAAA,MAAA,OAAKP,UAAU,OAAMpvD,SAAA,CAChBsU,EAAM,sCAKxB,ECZX,GAXe2wD,KAEPtV,EAAAA,GAAAA,MAAA,OAAA3vD,SAAA,EACI4vD,EAAAA,GAAAA,KAACsK,GAAG,KACJtK,EAAAA,GAAAA,KAAC8W,GAAa,KACd9W,EAAAA,GAAAA,KAAC0W,GAAkB,KACnB1W,EAAAA,GAAAA,KAAC0K,GAAY,OCPV,SAASqM,KACtB,OACE/W,EAAAA,GAAAA,KAACnI,GAAa,CAAAznD,UACZ2vD,EAAAA,GAAAA,MAAC5I,GAAM,CAAA/mD,SAAA,EACL4vD,EAAAA,GAAAA,KAACvJ,GAAK,CAAC7M,KAAK,IAAI3oB,SAAS++B,EAAAA,GAAAA,KAACyK,GAAI,OAC9BzK,EAAAA,GAAAA,KAACvJ,GAAK,CAAC7M,KAAK,iBAAiB3oB,SAAS++B,EAAAA,GAAAA,KAACqV,GAAM,UAIrD,CCbA,MAYA,GAZwB2B,IAClBA,GAAeA,aAAuBx1F,UACxC,8BAAqB0F,MAAKyiE,IAAkD,IAAjD,OAAEstB,EAAM,OAAEC,EAAM,OAAEC,EAAM,OAAEC,EAAM,QAAEC,GAAS1tB,EACpEstB,EAAOD,GACPE,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAQL,EAAY,GAExB,ECJFpf,EAAAA,QACEoI,EAAAA,GAAAA,KAAC7O,EAAAA,WAAgB,CAAA/gD,UACf4vD,EAAAA,GAAAA,KAAC7I,GAAM,MAET/sD,SAASktE,eAAe,SAM1BC","sources":["components/constants.js","../node_modules/base64-js/index.js","../node_modules/buffer-from/index.js","../node_modules/buffer/index.js","../node_modules/events/events.js","../node_modules/getusermedia/getusermedia.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/microphone-stream/dist/microphone-stream.js","../node_modules/microphone-stream/node_modules/readable-stream/errors-browser.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/microphone-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/microphone-stream/node_modules/readable-stream/readable-browser.js","../node_modules/object-assign/index.js","../node_modules/pitchfinder/lib/detectors/acf2plus.js","../node_modules/pitchfinder/lib/detectors/amdf.js","../node_modules/pitchfinder/lib/detectors/dynamic_wavelet.js","../node_modules/pitchfinder/lib/detectors/macleod.js","../node_modules/pitchfinder/lib/detectors/yin.js","../node_modules/pitchfinder/lib/index.js","../node_modules/pitchfinder/lib/tools/frequencies.js","../node_modules/process/browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/safe-buffer/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/sdp/sdp.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/util-deprecate/browser.js","../node_modules/webrtc-adapter/src/js/adapter_core.js","../node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js","../node_modules/webrtc-adapter/src/js/chrome/getusermedia.js","../node_modules/webrtc-adapter/src/js/edge/edge_shim.js","../node_modules/webrtc-adapter/src/js/edge/getusermedia.js","../node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js","../node_modules/webrtc-adapter/src/js/firefox/getusermedia.js","../node_modules/webrtc-adapter/src/js/safari/safari_shim.js","../node_modules/webrtc-adapter/src/js/utils.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","components/imagesPlayer.js","components/imageQueueLogic.js","components/sam.js","components/frontBuildingsLights.js","components/backBuildingsLight.js","components/background.js","components/frame.js","components/individualSkill.js","components/body.js","components/nav.js","pages/Home.js","components/guitarComponents/loadingCover.js","components/guitarComponents/fretboardNote.js","components/helpers.js","components/guitarComponents/fretboard.js","components/guitarComponents/pitchFinder.js","components/guitarComponents/micDisclosure.js","components/fancySelect.js","components/guitarComponents/degreeSelector.js","components/guitarComponents/selectorsComponent.js","components/guitarComponents/scalePractice.js","components/guitarComponents/smallScreenOverlay.js","pages/Guitar.js","routes.js","reportWebVitals.js","index.js"],"sourcesContent":["const freqToNote = {\n \"C\": [16.35, 32.70, 65.41, 130.81, 261.63, 523.25, 1046.50, 2093.00, 4186.01],\n \"C♯\": [17.32, 34.65, 69.30, 138.59, 277.18, 554.37, 1108.73, 2217.46, 4434.92],\n \"D\": [18.35, 36.71, 73.42, 146.83, 293.66, 587.33, 1174.66, 2349.32, 4698.64],\n \"D♯\": [19.45, 38.89, 77.78, 155.56, 311.13, 622.25, 1244.51, 2489.02, 4978.03],\n \"E\": [20.60, 41.20, 82.41, 164.81, 329.63, 659.26, 1318.51, 2637.02],\n \"F\": [21.83, 43.65, 87.31, 174.61, 349.23, 698.46, 1396.91, 2793.83],\n \"F♯\": [23.12, 46.25, 92.50, 185.00, 369.99, 739.99, 1479.98, 2959.96],\n \"G\": [24.50, 49.00, 98.00, 196.00, 392.00, 783.99, 1567.98, 3135.96],\n \"G♯\": [25.96, 51.91, 103.83, 207.65, 415.30, 830.61, 1661.22, 3322.44],\n \"A\": [27.50, 55.00, 110.00, 220.00, 440.00, 880.00, 1760.00, 3520.00],\n \"A♯\": [29.14, 58.27, 116.54, 233.08, 466.16, 932.33, 1864.66, 3729.31],\n \"B\": [30.87, 61.74, 123.47, 246.94, 493.88, 987.77, 1975.53, 3951.07]\n}\n\nmodule.exports = freqToNote","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n typeof Buffer !== 'undefined' &&\n typeof Buffer.alloc === 'function' &&\n typeof Buffer.allocUnsafe === 'function' &&\n typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n byteOffset >>>= 0\n\n var maxLength = obj.byteLength - byteOffset\n\n if (maxLength < 0) {\n throw new RangeError(\"'offset' is out of bounds\")\n }\n\n if (length === undefined) {\n length = maxLength\n } else {\n length >>>= 0\n\n if (length > maxLength) {\n throw new RangeError(\"'length' is out of bounds\")\n }\n }\n\n return isModern\n ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n return isModern\n ? Buffer.from(string, encoding)\n : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return isModern\n ? Buffer.from(value)\n : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// getUserMedia helper by @HenrikJoreteg used for navigator.getUserMedia shim\nvar adapter = require('webrtc-adapter');\n\nmodule.exports = function (constraints, cb) {\n var error;\n var haveOpts = arguments.length === 2;\n var defaultOpts = {video: true, audio: true};\n\n var denied = 'PermissionDeniedError';\n var altDenied = 'PERMISSION_DENIED';\n var notSatisfied = 'ConstraintNotSatisfiedError';\n\n // make constraints optional\n if (!haveOpts) {\n cb = constraints;\n constraints = defaultOpts;\n }\n\n // treat lack of browser support like an error\n if (typeof navigator === 'undefined' || !navigator.getUserMedia) {\n // throw proper error per spec\n error = new Error('MediaStreamError');\n error.name = 'NotSupportedError';\n\n // keep all callbacks async\n return setTimeout(function () {\n cb(error);\n }, 0);\n }\n\n // normalize error handling when no media types are requested\n if (!constraints.audio && !constraints.video) {\n error = new Error('MediaStreamError');\n error.name = 'NoMediaRequestedError';\n\n // keep all callbacks async\n return setTimeout(function () {\n cb(error);\n }, 0);\n }\n\n navigator.mediaDevices.getUserMedia(constraints)\n .then(function (stream) {\n cb(null, stream);\n }).catch(function (err) {\n var error;\n // coerce into an error object since FF gives us a string\n // there are only two valid names according to the spec\n // we coerce all non-denied to \"constraint not satisfied\".\n if (typeof err === 'string') {\n error = new Error('MediaStreamError');\n if (err === denied || err === altDenied) {\n error.name = denied;\n } else {\n error.name = notSatisfied;\n }\n } else {\n // if we get an error object make sure '.name' property is set\n // according to spec: http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermediaerror-and-navigatorusermediaerrorcallback\n error = err;\n if (!error.name) {\n // this is likely chrome which\n // sets a property called \"ERROR_DENIED\" on the error object\n // if so we make sure to set a name\n if (error[denied]) {\n err.name = denied;\n } else {\n err.name = notSatisfied;\n }\n }\n }\n\n cb(error);\n });\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar readable_stream_1 = require(\"readable-stream\");\n// some versions of the buffer browser lib don't support Buffer.from (such as the one included by the\n// current version of express-browserify)\nvar buffer_from_1 = __importDefault(require(\"buffer-from\"));\n/**\n * Turns a MediaStream object (from getUserMedia) into a Node.js Readable stream\n * and optionally converts the audio to Buffers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia\n */\nvar MicrophoneStream = /** @class */ (function (_super) {\n __extends(MicrophoneStream, _super);\n /**\n * Turns a MediaStream object (from getUserMedia) into a Node.js Readable stream\n * and optionally converts the audio to Buffers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia\n *\n * @param {Object} [opts] options\n * @param {MediaStream} [opts.stream] https://developer.mozilla.org/en-US/docs/Web/API/MediaStream - for iOS compatibility, it is recommended that you create the MicrophoneStream instance in response to the tap - before you have a MediaStream, and then later call setStream() with the MediaStream.\n * @param {Boolean} [opts.objectMode=false] Puts the stream into ObjectMode where it emits AudioBuffers instead of Buffers - see https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer\n * @param {Number|null} [opts.bufferSize=null] https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createScriptProcessor\n * @param {AudioContext} [opts.context] - AudioContext - will be automatically created if not passed in\n * @constructor\n */\n function MicrophoneStream(opts) {\n if (opts === void 0) { opts = { objectMode: false }; }\n var _this = _super.call(this, { objectMode: opts.objectMode }) || this;\n _this.audioInput = null;\n _this.recording = true;\n var stream = opts.stream, objectMode = opts.objectMode, bufferSize = opts.bufferSize, context = opts.context;\n _this.objectMode = objectMode;\n // \"It is recommended for authors to not specify this buffer size and allow the implementation\n // to pick a good buffer size to balance between latency and audio quality.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createScriptProcessor\n // however, webkitAudioContext (safari) requires it to be set'\n // Possible values: null, 256, 512, 1024, 2048, 4096, 8192, 16384\n _this.bufferSize =\n bufferSize || typeof window.AudioContext === \"undefined\" ? 4096 : null;\n // @ts-expect-error Property 'webkitAudioContext' does not exist on type 'Window & typeof globalThis'\n var AudioContext = window.AudioContext || window.webkitAudioContext;\n _this.context = context || new AudioContext();\n // We can only emit one channel's worth of audio, so only one input.\n // (Who has multiple microphones anyways?)\n var inputChannels = 1;\n // We shouldn't need any output channels (going back to the browser),\n // but chrome is buggy and won't give us any audio without one.\n var outputChannels = 1;\n _this.recorder = _this.context.createScriptProcessor(bufferSize, inputChannels, outputChannels);\n // Other half of workaround for chrome bugs.\n _this.recorder.connect(_this.context.destination);\n if (stream) {\n _this.setStream(stream);\n }\n setTimeout(function () {\n _this.emit(\"format\", {\n channels: 1,\n bitDepth: 32,\n sampleRate: _this.context.sampleRate,\n signed: true,\n float: true,\n });\n }, 0);\n return _this;\n }\n /**\n * Sets the MediaStream.\n *\n * This was separated from the constructor to enable better compatibility with Safari on iOS 11.\n *\n * Typically the stream is only available asynchronously, but the context must be created or\n * resumed directly in response to a user's tap on iOS.\n *\n * @param {MediaStream} stream https://developer.mozilla.org/en-US/docs/Web/API/MediaStream\n * @type {function(MediaStream): void}\n */\n MicrophoneStream.prototype.setStream = function (stream) {\n var _this = this;\n this.stream = stream;\n this.audioInput = this.context.createMediaStreamSource(stream);\n this.audioInput.connect(this.recorder);\n /**\n * Convert and emit the raw audio data\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode/onaudioprocess\n * @param {AudioProcessingEvent} e https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent\n */\n var recorderProcess = function (e) {\n // onaudioprocess can be called at least once after we've stopped\n if (_this.recording) {\n _this.push(_this.objectMode\n ? e.inputBuffer\n : buffer_from_1.default(e.inputBuffer.getChannelData(0).buffer));\n }\n };\n this.recorder.onaudioprocess = recorderProcess;\n };\n /**\n * Temporarily stop emitting new data. Audio data recieved from the microphone\n * after this will be dropped.\n *\n * Note: the underlying Stream interface has a .pause() API that causes new data\n * to bebuffered rather than dropped.\n */\n MicrophoneStream.prototype.pauseRecording = function () {\n this.recording = false;\n };\n /**\n * Resume emitting new audio data after pauseRecording() was called.\n */\n MicrophoneStream.prototype.playRecording = function () {\n this.recording = true;\n };\n /**\n * Stops the recording.\n *\n * Note: Some versions of Firefox leave the recording icon in place after recording has stopped.\n */\n MicrophoneStream.prototype.stop = function () {\n if (this.context.state === \"closed\") {\n return;\n }\n try {\n this.stream.getTracks()[0].stop();\n }\n catch (ex) {\n // This fails in some older versions of chrome. Nothing we can do about it.\n }\n this.recorder.disconnect();\n if (this.audioInput) {\n this.audioInput.disconnect();\n }\n try {\n this.context.close(); // returns a promise;\n }\n catch (ex) {\n // this can also fail in older versions of chrome\n }\n this.recording = false;\n this.push(null);\n this.emit(\"close\");\n };\n /**\n * no-op, (flow-control doesn't really work on live audio)\n */\n MicrophoneStream.prototype._read = function ( /* bytes */) {\n // no-op, (flow-control doesn't really work on live audio)\n };\n /**\n * Converts a Buffer back into the raw Float32Array format that browsers use.\n * Note: this is just a new DataView for the same underlying buffer -\n * the actual audio data is not copied or changed here.\n *\n * @memberof MicrophoneStream\n * @param {Buffer} chunk node-style buffer of audio data from a 'data' event or read() call\n * @return {Float32Array} raw 32-bit float data view of audio data\n */\n MicrophoneStream.toRaw = function (chunk) {\n return new Float32Array(chunk.buffer);\n };\n return MicrophoneStream;\n}(readable_stream_1.Readable));\nexports.default = MicrophoneStream;\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\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 });\nvar DEFAULT_PARAMS = {\n sampleRate: 44100,\n};\nfunction ACF2PLUS(params) {\n if (params === void 0) { params = DEFAULT_PARAMS; }\n var config = __assign(__assign({}, DEFAULT_PARAMS), params);\n var sampleRate = config.sampleRate;\n // Implements the ACF2+ algorithm\n return function ACF2PLUSDetector(float32AudioBuffer) {\n var maxShift = float32AudioBuffer.length;\n var rms = 0;\n var i, j, u, tmp;\n for (i = 0; i < maxShift; i++) {\n tmp = float32AudioBuffer[i];\n rms += tmp * tmp;\n }\n rms = Math.sqrt(rms / maxShift);\n if (rms < 0.01)\n // not enough signal\n return -1;\n /* Trimming cuts the edges of the signal so that it starts and ends near zero.\n This is used to neutralize an inherent instability of the ACF version I use.*/\n var aux1 = 0;\n var aux2 = maxShift - 1;\n var thres = 0.2;\n for (i = 0; i < maxShift / 2; i++)\n if (Math.abs(float32AudioBuffer[i]) < thres) {\n aux1 = i;\n break;\n }\n for (i = 1; i < maxShift / 2; i++)\n if (Math.abs(float32AudioBuffer[maxShift - i]) < thres) {\n aux2 = maxShift - i;\n break;\n }\n var frames = float32AudioBuffer.slice(aux1, aux2);\n var framesLength = frames.length;\n var calcSub = new Array(framesLength).fill(0);\n for (i = 0; i < framesLength; i++)\n for (j = 0; j < framesLength - i; j++)\n calcSub[i] = calcSub[i] + frames[j] * frames[j + i];\n u = 0;\n while (calcSub[u] > calcSub[u + 1])\n u++;\n var maxval = -1, maxpos = -1;\n for (i = u; i < framesLength; i++) {\n if (calcSub[i] > maxval) {\n maxval = calcSub[i];\n maxpos = i;\n }\n }\n var T0 = maxpos;\n /* Interpolation is parabolic interpolation. It helps with precision.\n We suppose that a parabola pass through the three points that comprise the peak.\n 'a' and 'b' are the unknowns from the linear equation system\n and b/(2a) is the \"error\" in the abscissa.\n y1,y2,y3 are the ordinates.*/\n var y1 = calcSub[T0 - 1], y2 = calcSub[T0], y3 = calcSub[T0 + 1];\n var a = (y1 + y3 - 2 * y2) / 2;\n var b = (y3 - y1) / 2;\n if (a)\n T0 = T0 - b / (2 * a);\n return sampleRate / T0;\n };\n}\nexports.ACF2PLUS = ACF2PLUS;\n","\"use strict\";\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 });\nvar DEFAULT_AMDF_PARAMS = {\n sampleRate: 44100,\n minFrequency: 82,\n maxFrequency: 1000,\n ratio: 5,\n sensitivity: 0.1,\n};\nfunction AMDF(params) {\n if (params === void 0) { params = {}; }\n var config = __assign(__assign({}, DEFAULT_AMDF_PARAMS), params);\n var sampleRate = config.sampleRate;\n var minFrequency = config.minFrequency;\n var maxFrequency = config.maxFrequency;\n var sensitivity = config.sensitivity;\n var ratio = config.ratio;\n var amd = [];\n /* Round in such a way that both exact minPeriod as\n exact maxPeriod lie inside the rounded span minPeriod-maxPeriod,\n thus ensuring that minFrequency and maxFrequency can be found\n even in edge cases */\n var maxPeriod = Math.ceil(sampleRate / minFrequency);\n var minPeriod = Math.floor(sampleRate / maxFrequency);\n return function AMDFDetector(float32AudioBuffer) {\n var maxShift = float32AudioBuffer.length;\n var t = 0;\n var minval = Infinity;\n var maxval = -Infinity;\n var frames1, frames2, calcSub, i, j, u, aux1, aux2;\n // Find the average magnitude difference for each possible period offset.\n for (i = 0; i < maxShift; i++) {\n if (minPeriod <= i && i <= maxPeriod) {\n for (aux1 = 0, aux2 = i, t = 0, frames1 = [], frames2 = []; aux1 < maxShift - i; t++, aux2++, aux1++) {\n frames1[t] = float32AudioBuffer[aux1];\n frames2[t] = float32AudioBuffer[aux2];\n }\n // Take the difference between these frames.\n var frameLength = frames1.length;\n calcSub = [];\n for (u = 0; u < frameLength; u++) {\n calcSub[u] = frames1[u] - frames2[u];\n }\n // Sum the differences.\n var summation = 0;\n for (u = 0; u < frameLength; u++) {\n summation += Math.abs(calcSub[u]);\n }\n amd[i] = summation;\n }\n }\n for (j = minPeriod; j < maxPeriod; j++) {\n if (amd[j] < minval)\n minval = amd[j];\n if (amd[j] > maxval)\n maxval = amd[j];\n }\n var cutoff = Math.round(sensitivity * (maxval - minval) + minval);\n for (j = minPeriod; j <= maxPeriod && amd[j] > cutoff; j++)\n ;\n var searchLength = minPeriod / 2;\n minval = amd[j];\n var minpos = j;\n for (i = j - 1; i < j + searchLength && i <= maxPeriod; i++) {\n if (amd[i] < minval) {\n minval = amd[i];\n minpos = i;\n }\n }\n if (Math.round(amd[minpos] * ratio) < maxval) {\n return sampleRate / minpos;\n }\n else {\n return null;\n }\n };\n}\nexports.AMDF = AMDF;\n","\"use strict\";\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 });\nvar MAX_FLWT_LEVELS = 6;\nvar MAX_F = 3000;\nvar DIFFERENCE_LEVELS_N = 3;\nvar MAXIMA_THRESHOLD_RATIO = 0.75;\nvar DEFAULT_DYNAMIC_WAVELET_CONFIG = {\n sampleRate: 44100,\n};\nfunction DynamicWavelet(params) {\n if (params === void 0) { params = {}; }\n var config = __assign(__assign({}, DEFAULT_DYNAMIC_WAVELET_CONFIG), params);\n var sampleRate = config.sampleRate;\n return function DynamicWaveletDetector(float32AudioBuffer) {\n var mins = [];\n var maxs = [];\n var bufferLength = float32AudioBuffer.length;\n var freq = null;\n var theDC = 0;\n var minValue = 0;\n var maxValue = 0;\n // Compute max amplitude, amplitude threshold, and the DC.\n for (var i = 0; i < bufferLength; i++) {\n var sample = float32AudioBuffer[i];\n theDC = theDC + sample;\n maxValue = Math.max(maxValue, sample);\n minValue = Math.min(minValue, sample);\n }\n theDC /= bufferLength;\n minValue -= theDC;\n maxValue -= theDC;\n var amplitudeMax = maxValue > -1 * minValue ? maxValue : -1 * minValue;\n var amplitudeThreshold = amplitudeMax * MAXIMA_THRESHOLD_RATIO;\n // levels, start without downsampling...\n var curLevel = 0;\n var curModeDistance = -1;\n var curSamNb = float32AudioBuffer.length;\n var delta, nbMaxs, nbMins;\n // Search:\n while (true) {\n delta = ~~(sampleRate / (Math.pow(2, curLevel) * MAX_F));\n if (curSamNb < 2)\n break;\n var dv = void 0;\n var previousDV = -1000;\n var lastMinIndex = -1000000;\n var lastMaxIndex = -1000000;\n var findMax = false;\n var findMin = false;\n nbMins = 0;\n nbMaxs = 0;\n for (var i = 2; i < curSamNb; i++) {\n var si = float32AudioBuffer[i] - theDC;\n var si1 = float32AudioBuffer[i - 1] - theDC;\n if (si1 <= 0 && si > 0)\n findMax = true;\n if (si1 >= 0 && si < 0)\n findMin = true;\n // min or max ?\n dv = si - si1;\n if (previousDV > -1000) {\n if (findMin && previousDV < 0 && dv >= 0) {\n // minimum\n if (Math.abs(si) >= amplitudeThreshold) {\n if (i > lastMinIndex + delta) {\n mins[nbMins++] = i;\n lastMinIndex = i;\n findMin = false;\n }\n }\n }\n if (findMax && previousDV > 0 && dv <= 0) {\n // maximum\n if (Math.abs(si) >= amplitudeThreshold) {\n if (i > lastMaxIndex + delta) {\n maxs[nbMaxs++] = i;\n lastMaxIndex = i;\n findMax = false;\n }\n }\n }\n }\n previousDV = dv;\n }\n if (nbMins === 0 && nbMaxs === 0) {\n // No best distance found!\n break;\n }\n var d = void 0;\n var distances = [];\n for (var i = 0; i < curSamNb; i++) {\n distances[i] = 0;\n }\n for (var i = 0; i < nbMins; i++) {\n for (var j = 1; j < DIFFERENCE_LEVELS_N; j++) {\n if (i + j < nbMins) {\n d = Math.abs(mins[i] - mins[i + j]);\n distances[d] += 1;\n }\n }\n }\n var bestDistance = -1;\n var bestValue = -1;\n for (var i = 0; i < curSamNb; i++) {\n var summed = 0;\n for (var j = -1 * delta; j <= delta; j++) {\n if (i + j >= 0 && i + j < curSamNb) {\n summed += distances[i + j];\n }\n }\n if (summed === bestValue) {\n if (i === 2 * bestDistance) {\n bestDistance = i;\n }\n }\n else if (summed > bestValue) {\n bestValue = summed;\n bestDistance = i;\n }\n }\n // averaging\n var distAvg = 0;\n var nbDists = 0;\n for (var j = -delta; j <= delta; j++) {\n if (bestDistance + j >= 0 && bestDistance + j < bufferLength) {\n var nbDist = distances[bestDistance + j];\n if (nbDist > 0) {\n nbDists += nbDist;\n distAvg += (bestDistance + j) * nbDist;\n }\n }\n }\n // This is our mode distance.\n distAvg /= nbDists;\n // Continue the levels?\n if (curModeDistance > -1) {\n if (Math.abs(distAvg * 2 - curModeDistance) <= 2 * delta) {\n // two consecutive similar mode distances : ok !\n freq = sampleRate / (Math.pow(2, curLevel - 1) * curModeDistance);\n break;\n }\n }\n // not similar, continue next level;\n curModeDistance = distAvg;\n curLevel++;\n if (curLevel >= MAX_FLWT_LEVELS || curSamNb < 2) {\n break;\n }\n //do not modify original audio buffer, make a copy buffer, if\n //downsampling is needed (only once).\n var newFloat32AudioBuffer = float32AudioBuffer.subarray(0);\n if (curSamNb === distances.length) {\n newFloat32AudioBuffer = new Float32Array(curSamNb / 2);\n }\n for (var i = 0; i < curSamNb / 2; i++) {\n newFloat32AudioBuffer[i] =\n (float32AudioBuffer[2 * i] + float32AudioBuffer[2 * i + 1]) / 2;\n }\n float32AudioBuffer = newFloat32AudioBuffer;\n curSamNb /= 2;\n }\n return freq;\n };\n}\nexports.DynamicWavelet = DynamicWavelet;\n","\"use strict\";\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 });\nvar DEFAULT_MACLEOD_PARAMS = {\n bufferSize: 1024,\n cutoff: 0.97,\n sampleRate: 44100,\n};\nfunction Macleod(params) {\n if (params === void 0) { params = {}; }\n var config = __assign(__assign({}, DEFAULT_MACLEOD_PARAMS), params);\n var bufferSize = config.bufferSize, cutoff = config.cutoff, sampleRate = config.sampleRate;\n /**\n * For performance reasons, peaks below this cutoff are not even considered.\n */\n var SMALL_CUTOFF = 0.5;\n /**\n * Pitch annotations below this threshold are considered invalid, they are\n * ignored.\n */\n var LOWER_PITCH_CUTOFF = 80;\n /**\n * Contains a normalized square difference function value for each delay\n * (tau).\n */\n var nsdf = new Float32Array(bufferSize);\n /**\n * Contains a sum of squares of the Buffer, for improving performance\n * (avoids redoing math in the normalized square difference function)\n */\n var squaredBufferSum = new Float32Array(bufferSize);\n /**\n * The x and y coordinate of the top of the curve (nsdf).\n */\n var turningPointX;\n var turningPointY;\n /**\n * A list with minimum and maximum values of the nsdf curve.\n */\n var maxPositions = [];\n /**\n * A list of estimates of the period of the signal (in samples).\n */\n var periodEstimates = [];\n /**\n * A list of estimates of the amplitudes corresponding with the period\n * estimates.\n */\n var ampEstimates = [];\n /**\n * Implements the normalized square difference function. See section 4 (and\n * the explanation before) in the MPM article. This calculation can be\n * optimized by using an FFT. The results should remain the same.\n */\n function normalizedSquareDifference(float32AudioBuffer) {\n var acf;\n var divisorM;\n squaredBufferSum[0] = float32AudioBuffer[0] * float32AudioBuffer[0];\n for (var i = 1; i < float32AudioBuffer.length; i += 1) {\n squaredBufferSum[i] =\n float32AudioBuffer[i] * float32AudioBuffer[i] + squaredBufferSum[i - 1];\n }\n for (var tau = 0; tau < float32AudioBuffer.length; tau++) {\n acf = 0;\n divisorM =\n squaredBufferSum[float32AudioBuffer.length - 1 - tau] +\n squaredBufferSum[float32AudioBuffer.length - 1] -\n squaredBufferSum[tau];\n for (var i = 0; i < float32AudioBuffer.length - tau; i++) {\n acf += float32AudioBuffer[i] * float32AudioBuffer[i + tau];\n }\n nsdf[tau] = (2 * acf) / divisorM;\n }\n }\n /**\n * Finds the x value corresponding with the peak of a parabola.\n * Interpolates between three consecutive points centered on tau.\n */\n function parabolicInterpolation(tau) {\n var nsdfa = nsdf[tau - 1], nsdfb = nsdf[tau], nsdfc = nsdf[tau + 1], bValue = tau, bottom = nsdfc + nsdfa - 2 * nsdfb;\n if (bottom === 0) {\n turningPointX = bValue;\n turningPointY = nsdfb;\n }\n else {\n var delta = nsdfa - nsdfc;\n turningPointX = bValue + delta / (2 * bottom);\n turningPointY = nsdfb - (delta * delta) / (8 * bottom);\n }\n }\n // Finds the highest value between each pair of positive zero crossings.\n function peakPicking() {\n var pos = 0;\n var curMaxPos = 0;\n // find the first negative zero crossing.\n while (pos < (nsdf.length - 1) / 3 && nsdf[pos] > 0) {\n pos++;\n }\n // loop over all the values below zero.\n while (pos < nsdf.length - 1 && nsdf[pos] <= 0) {\n pos++;\n }\n // can happen if output[0] is NAN\n if (pos == 0) {\n pos = 1;\n }\n while (pos < nsdf.length - 1) {\n if (nsdf[pos] > nsdf[pos - 1] && nsdf[pos] >= nsdf[pos + 1]) {\n if (curMaxPos == 0) {\n // the first max (between zero crossings)\n curMaxPos = pos;\n }\n else if (nsdf[pos] > nsdf[curMaxPos]) {\n // a higher max (between the zero crossings)\n curMaxPos = pos;\n }\n }\n pos++;\n // a negative zero crossing\n if (pos < nsdf.length - 1 && nsdf[pos] <= 0) {\n // if there was a maximum add it to the list of maxima\n if (curMaxPos > 0) {\n maxPositions.push(curMaxPos);\n curMaxPos = 0; // clear the maximum position, so we start\n // looking for a new ones\n }\n while (pos < nsdf.length - 1 && nsdf[pos] <= 0) {\n pos++; // loop over all the values below zero\n }\n }\n }\n if (curMaxPos > 0) {\n maxPositions.push(curMaxPos);\n }\n }\n return function Macleod(float32AudioBuffer) {\n // 0. Clear old results.\n var pitch;\n maxPositions = [];\n periodEstimates = [];\n ampEstimates = [];\n // 1. Calculute the normalized square difference for each Tau value.\n normalizedSquareDifference(float32AudioBuffer);\n // 2. Peak picking time: time to pick some peaks.\n peakPicking();\n var highestAmplitude = -Infinity;\n for (var i = 0; i < maxPositions.length; i++) {\n var tau = maxPositions[i];\n // make sure every annotation has a probability attached\n highestAmplitude = Math.max(highestAmplitude, nsdf[tau]);\n if (nsdf[tau] > SMALL_CUTOFF) {\n // calculates turningPointX and Y\n parabolicInterpolation(tau);\n // store the turning points\n ampEstimates.push(turningPointY);\n periodEstimates.push(turningPointX);\n // remember the highest amplitude\n highestAmplitude = Math.max(highestAmplitude, turningPointY);\n }\n }\n if (periodEstimates.length) {\n // use the overall maximum to calculate a cutoff.\n // The cutoff value is based on the highest value and a relative\n // threshold.\n var actualCutoff = cutoff * highestAmplitude;\n var periodIndex = 0;\n for (var i = 0; i < ampEstimates.length; i++) {\n if (ampEstimates[i] >= actualCutoff) {\n periodIndex = i;\n break;\n }\n }\n var period = periodEstimates[periodIndex], pitchEstimate = sampleRate / period;\n if (pitchEstimate > LOWER_PITCH_CUTOFF) {\n pitch = pitchEstimate;\n }\n else {\n pitch = -1;\n }\n }\n else {\n // no pitch detected.\n pitch = -1;\n }\n return {\n probability: highestAmplitude,\n freq: pitch,\n };\n };\n}\nexports.Macleod = Macleod;\n","\"use strict\";\n/*\n Copyright (C) 2003-2009 Paul Brossier \n This file is part of aubio.\n aubio is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n aubio is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n You should have received a copy of the GNU General Public License\n along with aubio. If not, see .\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 });\nvar DEFAULT_YIN_PARAMS = {\n threshold: 0.1,\n sampleRate: 44100,\n probabilityThreshold: 0.1,\n};\nfunction YIN(params) {\n if (params === void 0) { params = {}; }\n var config = __assign(__assign({}, DEFAULT_YIN_PARAMS), params);\n var threshold = config.threshold, sampleRate = config.sampleRate, probabilityThreshold = config.probabilityThreshold;\n return function YINDetector(float32AudioBuffer) {\n // Set buffer size to the highest power of two below the provided buffer's length.\n var bufferSize;\n for (bufferSize = 1; bufferSize < float32AudioBuffer.length; bufferSize *= 2)\n ;\n bufferSize /= 2;\n // Set up the yinBuffer as described in step one of the YIN paper.\n var yinBufferLength = bufferSize / 2;\n var yinBuffer = new Float32Array(yinBufferLength);\n var probability = 0, tau;\n // Compute the difference function as described in step 2 of the YIN paper.\n for (var t = 0; t < yinBufferLength; t++) {\n yinBuffer[t] = 0;\n }\n for (var t = 1; t < yinBufferLength; t++) {\n for (var i = 0; i < yinBufferLength; i++) {\n var delta = float32AudioBuffer[i] - float32AudioBuffer[i + t];\n yinBuffer[t] += delta * delta;\n }\n }\n // Compute the cumulative mean normalized difference as described in step 3 of the paper.\n yinBuffer[0] = 1;\n yinBuffer[1] = 1;\n var runningSum = 0;\n for (var t = 1; t < yinBufferLength; t++) {\n runningSum += yinBuffer[t];\n yinBuffer[t] *= t / runningSum;\n }\n // Compute the absolute threshold as described in step 4 of the paper.\n // Since the first two positions in the array are 1,\n // we can start at the third position.\n for (tau = 2; tau < yinBufferLength; tau++) {\n if (yinBuffer[tau] < threshold) {\n while (tau + 1 < yinBufferLength && yinBuffer[tau + 1] < yinBuffer[tau]) {\n tau++;\n }\n // found tau, exit loop and return\n // store the probability\n // From the YIN paper: The threshold determines the list of\n // candidates admitted to the set, and can be interpreted as the\n // proportion of aperiodic power tolerated\n // within a periodic signal.\n //\n // Since we want the periodicity and and not aperiodicity:\n // periodicity = 1 - aperiodicity\n probability = 1 - yinBuffer[tau];\n break;\n }\n }\n // if no pitch found, return null.\n if (tau === yinBufferLength || yinBuffer[tau] >= threshold) {\n return null;\n }\n // If probability too low, return -1.\n if (probability < probabilityThreshold) {\n return null;\n }\n /**\n * Implements step 5 of the AUBIO_YIN paper. It refines the estimated tau\n * value using parabolic interpolation. This is needed to detect higher\n * frequencies more precisely. See http://fizyka.umk.pl/nrbook/c10-2.pdf and\n * for more background\n * http://fedc.wiwi.hu-berlin.de/xplore/tutorials/xegbohtmlnode62.html\n */\n var betterTau, x0, x2;\n if (tau < 1) {\n x0 = tau;\n }\n else {\n x0 = tau - 1;\n }\n if (tau + 1 < yinBufferLength) {\n x2 = tau + 1;\n }\n else {\n x2 = tau;\n }\n if (x0 === tau) {\n if (yinBuffer[tau] <= yinBuffer[x2]) {\n betterTau = tau;\n }\n else {\n betterTau = x2;\n }\n }\n else if (x2 === tau) {\n if (yinBuffer[tau] <= yinBuffer[x0]) {\n betterTau = tau;\n }\n else {\n betterTau = x0;\n }\n }\n else {\n var s0 = yinBuffer[x0];\n var s1 = yinBuffer[tau];\n var s2 = yinBuffer[x2];\n // fixed AUBIO implementation, thanks to Karl Helgason:\n // (2.0f * s1 - s2 - s0) was incorrectly multiplied with -1\n betterTau = tau + (s2 - s0) / (2 * (2 * s1 - s2 - s0));\n }\n return sampleRate / betterTau;\n };\n}\nexports.YIN = YIN;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar yin_1 = require(\"./detectors/yin\");\nexports.YIN = yin_1.YIN;\nvar amdf_1 = require(\"./detectors/amdf\");\nexports.AMDF = amdf_1.AMDF;\nvar acf2plus_1 = require(\"./detectors/acf2plus\");\nexports.ACF2PLUS = acf2plus_1.ACF2PLUS;\nvar dynamic_wavelet_1 = require(\"./detectors/dynamic_wavelet\");\nexports.DynamicWavelet = dynamic_wavelet_1.DynamicWavelet;\nvar macleod_1 = require(\"./detectors/macleod\");\nexports.Macleod = macleod_1.Macleod;\nvar frequencies_1 = require(\"./tools/frequencies\");\nexports.frequencies = frequencies_1.frequencies;\nexports.default = {\n YIN: yin_1.YIN,\n AMDF: amdf_1.AMDF,\n ACF2PLUS: acf2plus_1.ACF2PLUS,\n DynamicWavelet: dynamic_wavelet_1.DynamicWavelet,\n Macleod: macleod_1.Macleod,\n frequencies: frequencies_1.frequencies,\n};\n","\"use strict\";\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.DEFAULT_FREQUENCIES_PARAMS = {\n tempo: 120,\n quantization: 4,\n sampleRate: 44100,\n};\nfunction pitchConsensus(detectors, chunk) {\n var pitches = detectors\n .map(function (fn) { return fn(chunk); })\n .filter(function (value) { return value !== null; })\n .sort(function (a, b) { return a - b; });\n // In the case of one pitch, return it.\n if (pitches.length === 1) {\n return pitches[0];\n // In the case of two pitches, return the geometric mean if they\n // are close to each other, and the lower pitch otherwise.\n }\n else if (pitches.length === 2) {\n var first = pitches[0], second = pitches[1];\n return first * 2 > second ? Math.sqrt(first * second) : first;\n // In the case of three or more pitches, filter away the extremes\n // if they are very extreme, then take the geometric mean.\n }\n else {\n var first = pitches[0];\n var second = pitches[1];\n var secondToLast = pitches[pitches.length - 2];\n var last = pitches[pitches.length - 1];\n var filtered1 = first * 2 > second ? pitches : pitches.slice(1);\n var filtered2 = secondToLast * 2 > last ? filtered1 : filtered1.slice(0, -1);\n return Math.pow(filtered2.reduce(function (t, p) { return t * p; }, 1), 1 / filtered2.length);\n }\n}\nfunction frequencies(detector, float32AudioBuffer, options) {\n if (options === void 0) { options = {}; }\n var config = __assign(__assign({}, exports.DEFAULT_FREQUENCIES_PARAMS), options);\n var tempo = config.tempo, quantization = config.quantization, sampleRate = config.sampleRate;\n var bufferLength = float32AudioBuffer.length;\n var chunkSize = Math.round((sampleRate * 60) / (quantization * tempo));\n var getPitch;\n if (Array.isArray(detector)) {\n getPitch = pitchConsensus.bind(null, detector);\n }\n else {\n getPitch = detector;\n }\n var pitches = [];\n for (var i = 0, max = bufferLength - chunkSize; i <= max; i += chunkSize) {\n var chunk = float32AudioBuffer.slice(i, i + chunkSize);\n var pitch = getPitch(chunk);\n pitches.push(pitch);\n }\n return pitches;\n}\nexports.frequencies = frequencies;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/** @license React v0.20.2\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';var f,g,h,k;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}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.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(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=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&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag\n candidate[parts[i]] = parts[i + 1];\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress); // was: relAddr\n sdp.push('rport');\n sdp.push(candidate.relatedPort); // was: relPort\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n}\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n // was: channels\n parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n params.push(param + '=' + codec.parameters[param]);\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n}\n\nSDPUtils.parseFingerprint = function(line) {\n var parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1]\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role.\n // Note2: 'algorithm' is not case sensitive except in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint)\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n var maxptime = 0;\n caps.codecs.forEach(function(codec) {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n sdp += 'a=rtcp-mux\\r\\n';\n\n caps.headerExtensions.forEach(function(extension) {\n sdp += SDPUtils.writeExtmap(extension);\n });\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.split(' ');\n parts.shift();\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n rtx: {\n ssrc: secondarySsrc\n }\n };\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: secondarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(5), 10);\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n var rtcpParameters = {};\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n var parts;\n var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'msid';\n });\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\nSDPUtils.writeSessionBoilerplate = function() {\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.direction) {\n sdp += 'a=' + transceiver.direction + '\\r\\n';\n } else if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n // spec.\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n\n // for Chrome.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\n// Expose public methods.\nmodule.exports = SDPUtils;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n\n'use strict';\n\n// Shimming starts here.\n(function() {\n // Utils.\n var logging = require('./utils').log;\n var browserDetails = require('./utils').browserDetails;\n // Export to the adapter global object visible in the browser.\n module.exports.browserDetails = browserDetails;\n module.exports.extractVersion = require('./utils').extractVersion;\n module.exports.disableLog = require('./utils').disableLog;\n\n // Uncomment the line below if you want logging to occur, including logging\n // for the switch statement below. Can also be turned on in the browser via\n // adapter.disableLog(false), but then logging from the switch statement below\n // will not appear.\n // require('./utils').disableLog(false);\n\n // Browser shims.\n var chromeShim = require('./chrome/chrome_shim') || null;\n var edgeShim = require('./edge/edge_shim') || null;\n var firefoxShim = require('./firefox/firefox_shim') || null;\n var safariShim = require('./safari/safari_shim') || null;\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'opera': // fallthrough as it uses chrome shims\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection) {\n logging('Chrome shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = chromeShim;\n\n chromeShim.shimGetUserMedia();\n chromeShim.shimMediaStream();\n chromeShim.shimSourceObject();\n chromeShim.shimPeerConnection();\n chromeShim.shimOnTrack();\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection) {\n logging('Firefox shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = firefoxShim;\n\n firefoxShim.shimGetUserMedia();\n firefoxShim.shimSourceObject();\n firefoxShim.shimPeerConnection();\n firefoxShim.shimOnTrack();\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection) {\n logging('MS edge shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia();\n edgeShim.shimPeerConnection();\n break;\n case 'safari':\n if (!safariShim) {\n logging('Safari shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = safariShim;\n\n safariShim.shimGetUserMedia();\n break;\n default:\n logging('Unsupported browser!');\n }\n})();\n","\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\nvar browserDetails = require('../utils.js').browserDetails;\n\nvar chromeShim = {\n shimMediaStream: function() {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n },\n\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', function(te) {\n var event = new Event('track');\n event.track = te.track;\n event.receiver = {track: te.track};\n event.streams = [e.stream];\n self.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this._srcObject;\n },\n set: function(stream) {\n var self = this;\n // Use _srcObject as a private property for this shim\n this._srcObject = stream;\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n\n if (!stream) {\n this.src = '';\n return;\n }\n this.src = URL.createObjectURL(stream);\n // We need to recreate the blob url when a track is added or\n // removed. Doing it manually since we want to avoid a recursion.\n stream.addEventListener('addtrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n stream.addEventListener('removetrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n // Translate iceTransportPolicy to iceTransports,\n // see https://code.google.com/p/webrtc/issues/detail?id=4869\n logging('PeerConnection');\n if (pcConfig && pcConfig.iceTransportPolicy) {\n pcConfig.iceTransports = pcConfig.iceTransportPolicy;\n }\n\n var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints);\n var origGetStats = pc.getStats.bind(pc);\n pc.getStats = function(selector, successCallback, errorCallback) {\n var self = this;\n var args = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats(selector, successCallback);\n }\n\n var fixChromeStats_ = function(response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function(report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: report.type\n };\n report.names().forEach(function(name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats, legacyStats) {\n var map = new Map(Object.keys(stats).map(function(key) {\n return[key, stats[key]];\n }));\n legacyStats = legacyStats || stats;\n Object.keys(legacyStats).forEach(function(key) {\n map[key] = legacyStats[key];\n });\n return map;\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function(response) {\n args[1](makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n arguments[0]]);\n }\n\n // promise-support\n return new Promise(function(resolve, reject) {\n if (args.length === 1 && typeof selector === 'object') {\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n } else {\n // Preserve legacy chrome stats only on legacy access of stats obj\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response),\n response.result()));\n }, reject]);\n }\n }).then(successCallback, errorCallback);\n };\n\n return pc;\n };\n window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (webkitRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return webkitRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n ['createOffer', 'createAnswer'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var self = this;\n if (arguments.length < 1 || (arguments.length === 1 &&\n typeof arguments[0] === 'object')) {\n var opts = arguments.length === 1 ? arguments[0] : undefined;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [resolve, reject, opts]);\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // add promise support -- natively available in Chrome 51\n if (browserDetails.version < 51) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n var self = this;\n var promise = new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [args[0], resolve, reject]);\n });\n if (args.length < 2) {\n return promise;\n }\n return promise.then(function() {\n args[1].apply(null, []);\n },\n function(err) {\n if (args.length >= 3) {\n args[2].apply(null, [err]);\n }\n });\n };\n });\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // support for addIceCandidate(null or undefined)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n }\n};\n\n\n// Expose public methods.\nmodule.exports = {\n shimMediaStream: chromeShim.shimMediaStream,\n shimOnTrack: chromeShim.shimOnTrack,\n shimSourceObject: chromeShim.shimSourceObject,\n shimPeerConnection: chromeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia')\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\n\n// Expose public methods.\nmodule.exports = function() {\n var constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n var cc = {};\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n var oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function(mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n var shimConstraints_ = function(constraints, func) {\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && constraints.audio) {\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile, where it defaults to \"user\".\n var face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode)) {\n delete constraints.video.facingMode;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n // Look for \"back\" in label, or use last cam (typically back cam).\n return navigator.mediaDevices.enumerateDevices()\n .then(function(devices) {\n devices = devices.filter(function(d) {\n return d.kind === 'videoinput';\n });\n var back = devices.find(function(d) {\n return d.label.toLowerCase().indexOf('back') !== -1;\n }) || (devices.length && devices[devices.length - 1]);\n if (back) {\n constraints.video.deviceId = face.exact ? {exact: back.deviceId} :\n {ideal: back.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n var shimError_ = function(e) {\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n ConstraintNotSatisfiedError: 'OverconstrainedError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraintName,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, function(c) {\n navigator.webkitGetUserMedia(c, onSuccess, function(e) {\n onError(shimError_(e));\n });\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {\n getUserMedia: getUserMediaPromise_,\n enumerateDevices: function() {\n return new Promise(function(resolve) {\n var kinds = {audio: 'audioinput', video: 'videoinput'};\n return MediaStreamTrack.getSources(function(devices) {\n resolve(devices.map(function(device) {\n return {label: device.label,\n kind: kinds[device.kind],\n deviceId: device.id,\n groupId: ''};\n }));\n });\n });\n }\n };\n }\n\n // A shim for getUserMedia method on the mediaDevices object.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n return getUserMediaPromise_(constraints);\n };\n } else {\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, function(c) {\n return origGetUserMedia(c).then(function(stream) {\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(function(track) {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n return stream;\n }, function(e) {\n return Promise.reject(shimError_(e));\n });\n });\n };\n }\n\n // Dummy devicechange event methods.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (typeof navigator.mediaDevices.addEventListener === 'undefined') {\n navigator.mediaDevices.addEventListener = function() {\n logging('Dummy mediaDevices.addEventListener called.');\n };\n }\n if (typeof navigator.mediaDevices.removeEventListener === 'undefined') {\n navigator.mediaDevices.removeEventListener = function() {\n logging('Dummy mediaDevices.removeEventListener called.');\n };\n }\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\nvar browserDetails = require('../utils').browserDetails;\n\nvar edgeShim = {\n shimPeerConnection: function() {\n if (window.RTCIceGatherer) {\n // ORTC defines an RTCIceCandidate object but no constructor.\n // Not implemented in Edge.\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function(args) {\n return args;\n };\n }\n // ORTC does not have a session description object but\n // other browsers (i.e. Chrome) that will support both PC and ORTC\n // in the future might have this defined already.\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function(args) {\n return args;\n };\n }\n // this adds an additional event listener to MediaStrackTrack that signals\n // when a tracks enabled property was changed.\n var origMSTEnabled = Object.getOwnPropertyDescriptor(\n MediaStreamTrack.prototype, 'enabled');\n Object.defineProperty(MediaStreamTrack.prototype, 'enabled', {\n set: function(value) {\n origMSTEnabled.set.call(this, value);\n var ev = new Event('enabled');\n ev.enabled = value;\n this.dispatchEvent(ev);\n }\n });\n }\n\n window.RTCPeerConnection = function(config) {\n var self = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n self[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.onicecandidate = null;\n this.onaddstream = null;\n this.ontrack = null;\n this.onremovestream = null;\n this.onsignalingstatechange = null;\n this.oniceconnectionstatechange = null;\n this.onnegotiationneeded = null;\n this.ondatachannel = null;\n\n this.localStreams = [];\n this.remoteStreams = [];\n this.getLocalStreams = function() {\n return self.localStreams;\n };\n this.getRemoteStreams = function() {\n return self.remoteStreams;\n };\n\n this.localDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.remoteDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.iceGatheringState = 'new';\n\n this.iceOptions = {\n gatherPolicy: 'all',\n iceServers: []\n };\n if (config && config.iceTransportPolicy) {\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n this.iceOptions.gatherPolicy = config.iceTransportPolicy;\n break;\n case 'none':\n // FIXME: remove once implementation and spec have added this.\n throw new TypeError('iceTransportPolicy \"none\" not supported');\n default:\n // don't set iceTransportPolicy.\n break;\n }\n }\n this.usingBundle = config && config.bundlePolicy === 'max-bundle';\n\n if (config && config.iceServers) {\n // Edge does not like\n // 1) stun:\n // 2) turn: that does not have all of turn:host:port?transport=udp\n // 3) turn: with ipv6 addresses\n var iceServers = JSON.parse(JSON.stringify(config.iceServers));\n this.iceOptions.iceServers = iceServers.filter(function(server) {\n if (server && server.urls) {\n var urls = server.urls;\n if (typeof urls === 'string') {\n urls = [urls];\n }\n urls = urls.filter(function(url) {\n return (url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1 &&\n url.indexOf('turn:[') === -1) ||\n (url.indexOf('stun:') === 0 &&\n browserDetails.version >= 14393);\n })[0];\n return !!urls;\n }\n return false;\n });\n }\n this._config = config;\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n // since the iceGatherer is currently created in createOffer but we\n // must not emit candidates until after setLocalDescription we buffer\n // them in this array.\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype._emitBufferedCandidates = function() {\n var self = this;\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n // FIXME: need to apply ice candidates in a way which is async but\n // in-order\n this._localIceCandidatesBuffer.forEach(function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n if (end) {\n for (var j = 1; j < sections.length; j++) {\n if (sections[j].indexOf('\\r\\na=end-of-candidates\\r\\n') === -1) {\n sections[j] += 'a=end-of-candidates\\r\\n';\n }\n }\n } else if (event.candidate.candidate.indexOf('typ endOfCandidates')\n === -1) {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n }\n self.localDescription.sdp = sections.join('');\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (!event.candidate && self.iceGatheringState !== 'complete') {\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n if (complete) {\n self.iceGatheringState = 'complete';\n }\n }\n });\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype.getConfiguration = function() {\n return this._config;\n };\n\n window.RTCPeerConnection.prototype.addStream = function(stream) {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n var clonedStream = stream.clone();\n stream.getTracks().forEach(function(track, idx) {\n var clonedTrack = clonedStream.getTracks()[idx];\n track.addEventListener('enabled', function(event) {\n clonedTrack.enabled = event.enabled;\n });\n });\n this.localStreams.push(clonedStream);\n this._maybeFireNegotiationNeeded();\n };\n\n window.RTCPeerConnection.prototype.removeStream = function(stream) {\n var idx = this.localStreams.indexOf(stream);\n if (idx > -1) {\n this.localStreams.splice(idx, 1);\n this._maybeFireNegotiationNeeded();\n }\n };\n\n window.RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n window.RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n // Determines the intersection of local and remote capabilities.\n window.RTCPeerConnection.prototype._getCommonCapabilities =\n function(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate) {\n // number of channels is the highest common number of channels\n rCodec.numChannels = Math.min(lCodec.numChannels,\n rCodec.numChannels);\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // determine common feedback mechanisms\n rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function(fb) {\n for (var j = 0; j < lCodec.rtcpFeedback.length; j++) {\n if (lCodec.rtcpFeedback[j].type === fb.type &&\n lCodec.rtcpFeedback[j].parameter === fb.parameter) {\n return true;\n }\n }\n return false;\n });\n // FIXME: also need to determine .parameters\n // see https://github.com/openpeer/ortc/issues/569\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions\n .forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n };\n\n // Create ICE gatherer, ICE transport and DTLS transport.\n window.RTCPeerConnection.prototype._createIceAndDtlsTransports =\n function(mid, sdpMLineIndex) {\n var self = this;\n var iceGatherer = new RTCIceGatherer(self.iceOptions);\n var iceTransport = new RTCIceTransport(iceGatherer);\n iceGatherer.onlocalcandidate = function(evt) {\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n var end = !cand || Object.keys(cand).length === 0;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === undefined) {\n iceGatherer.state = 'completed';\n }\n\n // Emit a candidate with type endOfCandidates to make the samples\n // work. Edge requires addIceCandidate with this empty candidate\n // to start checking. The real solution is to signal\n // end-of-candidates to the other side when getting the null\n // candidate but some apps (like the samples) don't do that.\n event.candidate.candidate =\n 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates';\n } else {\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = iceTransport.component === 'RTCP' ? 2 : 1;\n event.candidate.candidate = SDPUtils.writeCandidate(cand);\n }\n\n // update local description.\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n if (event.candidate.candidate.indexOf('typ endOfCandidates')\n === -1) {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n } else {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=end-of-candidates\\r\\n';\n }\n self.localDescription.sdp = sections.join('');\n\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n // Emit candidate if localDescription is set.\n // Also emits null candidate when all gatherers are complete.\n switch (self.iceGatheringState) {\n case 'new':\n self._localIceCandidatesBuffer.push(event);\n if (end && complete) {\n self._localIceCandidatesBuffer.push(\n new Event('icecandidate'));\n }\n break;\n case 'gathering':\n self._emitBufferedCandidates();\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (complete) {\n self.dispatchEvent(new Event('icecandidate'));\n if (self.onicecandidate !== null) {\n self.onicecandidate(new Event('icecandidate'));\n }\n self.iceGatheringState = 'complete';\n }\n break;\n case 'complete':\n // should not happen... currently!\n break;\n default: // no-op.\n break;\n }\n };\n iceTransport.onicestatechange = function() {\n self._updateConnectionState();\n };\n\n var dtlsTransport = new RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n self._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n dtlsTransport.state = 'failed';\n self._updateConnectionState();\n };\n\n return {\n iceGatherer: iceGatherer,\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n window.RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = this._getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver) {\n // remove RTX field in Edge 14942\n if (transceiver.kind === 'video'\n && transceiver.recvEncodingParameters) {\n transceiver.recvEncodingParameters.forEach(function(p) {\n delete p.rtx;\n });\n }\n params.encodings = transceiver.recvEncodingParameters;\n params.rtcp = {\n cname: transceiver.cname\n };\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n window.RTCPeerConnection.prototype.setLocalDescription =\n function(description) {\n var self = this;\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // FIXME: What was the purpose of this empty if statement?\n // if (!this._pendingOffer) {\n // } else {\n if (this._pendingOffer) {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n self._pendingOffer[sdpMLineIndex].localCapabilities = caps;\n });\n this.transceivers = this._pendingOffer;\n delete this._pendingOffer;\n }\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(self.remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = self.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n\n var rejected = mediaSection.split('\\n', 1)[0]\n .split(' ', 2)[1] === '0';\n\n if (!rejected && !transceiver.isDatachannel) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n // ice-lite only includes host candidates in the SDP so we can\n // use setRemoteCandidates (which implies an\n // RTCIceCandidateComplete)\n if (cands.length) {\n iceTransport.setRemoteCandidates(cands);\n }\n }\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n\n if (!self.usingBundle || sdpMLineIndex === 0) {\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n dtlsTransport.start(remoteDtlsParameters);\n }\n\n // Calculate intersection of capabilities.\n var params = self._getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n self._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n this.localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-local-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n\n // If a success callback was provided, emit ICE candidates after it\n // has been executed. Otherwise, emit callback after the Promise is\n // resolved.\n var hasCallback = arguments.length > 1 &&\n typeof arguments[1] === 'function';\n if (hasCallback) {\n var cb = arguments[1];\n window.setTimeout(function() {\n cb();\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n self._emitBufferedCandidates();\n }, 0);\n }\n var p = Promise.resolve();\n p.then(function() {\n if (!hasCallback) {\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n // Usually candidates will be emitted earlier.\n window.setTimeout(self._emitBufferedCandidates.bind(self), 500);\n }\n });\n return p;\n };\n\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function(description) {\n var self = this;\n var stream = new MediaStream();\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n this.usingBundle = SDPUtils.matchPrefix(sessionpart,\n 'a=group:BUNDLE ').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].substr(2).split(' ');\n var kind = mline[0];\n var rejected = mline[1] === '0';\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:');\n if (mid.length) {\n mid = mid[0].substr(6);\n } else {\n mid = SDPUtils.generateIdentifier();\n }\n\n // Reject datachannels which are not implemented yet.\n if (kind === 'application' && mline[2] === 'DTLS/SCTP') {\n self.transceivers[sdpMLineIndex] = {\n mid: mid,\n isDatachannel: true\n };\n return;\n }\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpSender;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n cname = remoteSsrc.value;\n }\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates', sessionpart).length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n if (description.type === 'offer' && !rejected) {\n var transports = self.usingBundle && sdpMLineIndex > 0 ? {\n iceGatherer: self.transceivers[0].iceGatherer,\n iceTransport: self.transceivers[0].iceTransport,\n dtlsTransport: self.transceivers[0].dtlsTransport\n } : self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n if (isComplete) {\n transports.iceTransport.setRemoteCandidates(cands);\n }\n\n localCapabilities = RTCRtpReceiver.getCapabilities(kind);\n\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n\n sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n // FIXME: not correct when there are multiple streams but that is\n // not currently supported in this shim.\n stream.addTrack(track);\n\n // FIXME: look at direction.\n if (self.localStreams.length > 0 &&\n self.localStreams[0].getTracks().length >= sdpMLineIndex) {\n var localTrack;\n if (kind === 'audio') {\n localTrack = self.localStreams[0].getAudioTracks()[0];\n } else if (kind === 'video') {\n localTrack = self.localStreams[0].getVideoTracks()[0];\n }\n if (localTrack) {\n rtpSender = new RTCRtpSender(localTrack,\n transports.dtlsTransport);\n }\n }\n\n self.transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: remoteCapabilities,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n cname: cname,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: recvEncodingParameters\n };\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n self._transceive(self.transceivers[sdpMLineIndex],\n false,\n direction === 'sendrecv' || direction === 'sendonly');\n } else if (description.type === 'answer' && !rejected) {\n transceiver = self.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpSender = transceiver.rtpSender;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n self.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n self.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n self.transceivers[sdpMLineIndex].cname = cname;\n\n if ((isIceLite || isComplete) && cands.length) {\n iceTransport.setRemoteCandidates(cands);\n }\n if (!self.usingBundle || sdpMLineIndex === 0) {\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n dtlsTransport.start(remoteDtlsParameters);\n }\n\n self._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n stream.addTrack(track);\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n this.remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-remote-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n if (stream.getTracks().length) {\n self.remoteStreams.push(stream);\n window.setTimeout(function() {\n var event = new Event('addstream');\n event.stream = stream;\n self.dispatchEvent(event);\n if (self.onaddstream !== null) {\n window.setTimeout(function() {\n self.onaddstream(event);\n }, 0);\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.streams = [stream];\n self.dispatchEvent(event);\n if (self.ontrack !== null) {\n window.setTimeout(function() {\n self.ontrack(trackEvent);\n }, 0);\n }\n });\n }, 0);\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n window.RTCPeerConnection.prototype._updateSignalingState =\n function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this.dispatchEvent(event);\n if (this.onsignalingstatechange !== null) {\n this.onsignalingstatechange(event);\n }\n };\n\n // Determine whether to fire the negotiationneeded event.\n window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded =\n function() {\n // Fire away (for now).\n var event = new Event('negotiationneeded');\n this.dispatchEvent(event);\n if (this.onnegotiationneeded !== null) {\n this.onnegotiationneeded(event);\n }\n };\n\n // Update the connection state.\n window.RTCPeerConnection.prototype._updateConnectionState = function() {\n var self = this;\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0 || states.checking > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0 || states.completed > 0) {\n newState = 'connected';\n }\n\n if (newState !== self.iceConnectionState) {\n self.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this.dispatchEvent(event);\n if (this.oniceconnectionstatechange !== null) {\n this.oniceconnectionstatechange(event);\n }\n }\n };\n\n window.RTCPeerConnection.prototype.createOffer = function() {\n var self = this;\n if (this._pendingOffer) {\n throw new Error('createOffer called while there is a pending offer.');\n }\n var offerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n offerOptions = arguments[0];\n } else if (arguments.length === 3) {\n offerOptions = arguments[2];\n }\n\n var tracks = [];\n var numAudioTracks = 0;\n var numVideoTracks = 0;\n // Default to sendrecv.\n if (this.localStreams.length) {\n numAudioTracks = this.localStreams[0].getAudioTracks().length;\n numVideoTracks = this.localStreams[0].getVideoTracks().length;\n }\n // Determine number of audio and video tracks we need to send/recv.\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n if (this.localStreams.length) {\n // Push local streams.\n this.localStreams[0].getTracks().forEach(function(track) {\n tracks.push({\n kind: track.kind,\n track: track,\n wantReceive: track.kind === 'audio' ?\n numAudioTracks > 0 : numVideoTracks > 0\n });\n if (track.kind === 'audio') {\n numAudioTracks--;\n } else if (track.kind === 'video') {\n numVideoTracks--;\n }\n });\n }\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n tracks.push({\n kind: 'audio',\n wantReceive: true\n });\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n tracks.push({\n kind: 'video',\n wantReceive: true\n });\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n var transceivers = [];\n tracks.forEach(function(mline, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = mline.track;\n var kind = mline.kind;\n var mid = SDPUtils.generateIdentifier();\n\n var transports = self.usingBundle && sdpMLineIndex > 0 ? {\n iceGatherer: transceivers[0].iceGatherer,\n iceTransport: transceivers[0].iceTransport,\n dtlsTransport: transceivers[0].dtlsTransport\n } : self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n var localCapabilities = RTCRtpSender.getCapabilities(kind);\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n localCapabilities.codecs.forEach(function(codec) {\n // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552\n // by adding level-asymmetry-allowed=1\n if (codec.name === 'H264' &&\n codec.parameters['level-asymmetry-allowed'] === undefined) {\n codec.parameters['level-asymmetry-allowed'] = '1';\n }\n });\n\n var rtpSender;\n var rtpReceiver;\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n rtpSender = new RTCRtpSender(track, transports.dtlsTransport);\n }\n\n if (mline.wantReceive) {\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n }\n\n transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: null,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: null\n };\n });\n if (this.usingBundle) {\n sdp += 'a=group:BUNDLE ' + transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n tracks.forEach(function(mline, sdpMLineIndex) {\n var transceiver = transceivers[sdpMLineIndex];\n sdp += SDPUtils.writeMediaSection(transceiver,\n transceiver.localCapabilities, 'offer', self.localStreams[0]);\n });\n\n this._pendingOffer = transceivers;\n var desc = new RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.createAnswer = function() {\n var self = this;\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n if (this.usingBundle) {\n sdp += 'a=group:BUNDLE ' + this.transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.isDatachannel) {\n sdp += 'm=application 0 DTLS/SCTP 5000\\r\\n' +\n 'c=IN IP4 0.0.0.0\\r\\n' +\n 'a=mid:' + transceiver.mid + '\\r\\n';\n return;\n }\n // Calculate intersection of capabilities.\n var commonCapabilities = self._getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n sdp += SDPUtils.writeMediaSection(transceiver, commonCapabilities,\n 'answer', self.localStreams[0]);\n });\n\n var desc = new RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n if (!candidate) {\n this.transceivers.forEach(function(transceiver) {\n transceiver.iceTransport.addRemoteCandidate({});\n });\n } else {\n var mLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < this.transceivers.length; i++) {\n if (this.transceivers[i].mid === candidate.sdpMid) {\n mLineIndex = i;\n break;\n }\n }\n }\n var transceiver = this.transceivers[mLineIndex];\n if (transceiver) {\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) {\n return;\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component !== '1') {\n return;\n }\n // A dirty hack to make samples work.\n if (cand.type === 'endOfCandidates') {\n cand = {};\n }\n transceiver.iceTransport.addRemoteCandidate(cand);\n\n // update the remoteDescription.\n var sections = SDPUtils.splitSections(this.remoteDescription.sdp);\n sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim()\n : 'a=end-of-candidates') + '\\r\\n';\n this.remoteDescription.sdp = sections.join('');\n }\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.getStats = function() {\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n var cb = arguments.length > 1 && typeof arguments[1] === 'function' &&\n arguments[1];\n return new Promise(function(resolve) {\n // shim getStats with maplike support\n var results = new Map();\n Promise.all(promises).then(function(res) {\n res.forEach(function(result) {\n Object.keys(result).forEach(function(id) {\n results.set(id, result[id]);\n results[id] = result[id];\n });\n });\n if (cb) {\n window.setTimeout(cb, 0, results);\n }\n resolve(results);\n });\n });\n };\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimPeerConnection: edgeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia')\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar browserDetails = require('../utils').browserDetails;\n\nvar firefoxShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n // Firefox has supported mozSrcObject since FF22, unprefixed in 42.\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this.mozSrcObject;\n },\n set: function(stream) {\n this.mozSrcObject = stream;\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n if (typeof window !== 'object' || !(window.RTCPeerConnection ||\n window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n // The RTCPeerConnection object.\n if (!window.RTCPeerConnection) {\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n if (browserDetails.version < 38) {\n // .urls is not supported in FF < 38.\n // create RTCIceServers with a single url.\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n if (server.hasOwnProperty('urls')) {\n for (var j = 0; j < server.urls.length; j++) {\n var newServer = {\n url: server.urls[j]\n };\n if (server.urls[j].indexOf('turn') === 0) {\n newServer.username = server.username;\n newServer.credential = server.credential;\n }\n newIceServers.push(newServer);\n }\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n }\n return new mozRTCPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (mozRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return mozRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n }\n\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // support for addIceCandidate(null or undefined)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n\n if (browserDetails.version < 48) {\n // shim getStats with maplike support\n var makeMapStats = function(stats) {\n var map = new Map();\n Object.keys(stats).forEach(function(key) {\n map.set(key, stats[key]);\n map[key] = stats[key];\n });\n return map;\n };\n\n var nativeGetStats = RTCPeerConnection.prototype.getStats;\n RTCPeerConnection.prototype.getStats = function(selector, onSucc, onErr) {\n return nativeGetStats.apply(this, [selector || null])\n .then(function(stats) {\n return makeMapStats(stats);\n })\n .then(onSucc, onErr);\n };\n }\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: firefoxShim.shimOnTrack,\n shimSourceObject: firefoxShim.shimSourceObject,\n shimPeerConnection: firefoxShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia')\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {\n SecurityError: 'NotAllowedError',\n PermissionDeniedError: 'NotAllowedError'\n }[e.name] || e.name,\n message: {\n 'The operation is insecure.': 'The request is not allowed by the ' +\n 'user agent or the platform in the current context.'\n }[e.message] || e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, function(e) {\n onError(shimError_(e));\n });\n };\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n getUserMedia_(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n if (browserDetails.version < 49) {\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).then(function(stream) {\n // Work around https://bugzil.la/802326\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(function(track) {\n track.stop();\n });\n throw new DOMException('The object can not be found here.',\n 'NotFoundError');\n }\n return stream;\n }, function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n }\n navigator.getUserMedia = function(constraints, onSuccess, onError) {\n if (browserDetails.version < 44) {\n return getUserMedia_(constraints, onSuccess, onError);\n }\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n console.warn('navigator.getUserMedia has been replaced by ' +\n 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar safariShim = {\n // TODO: DrAlex, should be here, double check against LayoutTests\n // shimOnTrack: function() { },\n\n // TODO: once the back-end for the mac port is done, add.\n // TODO: check for webkitGTK+\n // shimPeerConnection: function() { },\n\n shimGetUserMedia: function() {\n navigator.getUserMedia = navigator.webkitGetUserMedia;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimGetUserMedia: safariShim.shimGetUserMedia\n // TODO\n // shimOnTrack: safariShim.shimOnTrack,\n // shimPeerConnection: safariShim.shimPeerConnection\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logDisabled_ = true;\n\n// Utility methods.\nvar utils = {\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n },\n\n /**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion: function(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n },\n\n /**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\n detectBrowser: function() {\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n // Firefox.\n if (navigator.mozGetUserMedia) {\n result.browser = 'firefox';\n result.version = this.extractVersion(navigator.userAgent,\n /Firefox\\/([0-9]+)\\./, 1);\n\n // all webkit-based browsers\n } else if (navigator.webkitGetUserMedia) {\n // Chrome, Chromium, Webview, Opera, all use the chrome shim for now\n if (window.webkitRTCPeerConnection) {\n result.browser = 'chrome';\n result.version = this.extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/([0-9]+)\\./, 2);\n\n // Safari or unknown webkit-based\n // for the time being Safari has support for MediaStreams but not webRTC\n } else {\n // Safari UA substrings of interest for reference:\n // - webkit version: AppleWebKit/602.1.25 (also used in Op,Cr)\n // - safari UI version: Version/9.0.3 (unique to Safari)\n // - safari UI webkit version: Safari/601.4.4 (also used in Op,Cr)\n //\n // if the webkit version and safari UI webkit versions are equals,\n // ... this is a stable version.\n //\n // only the internal webkit version is important today to know if\n // media streams are supported\n //\n if (navigator.userAgent.match(/Version\\/(\\d+).(\\d+)/)) {\n result.browser = 'safari';\n result.version = this.extractVersion(navigator.userAgent,\n /AppleWebKit\\/([0-9]+)\\./, 1);\n\n // unknown webkit-based browser\n } else {\n result.browser = 'Unsupported webkit-based browser ' +\n 'with GUM support but no WebRTC support.';\n return result;\n }\n }\n\n // Edge.\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n result.browser = 'edge';\n result.version = this.extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n\n // Default fallthrough: not supported.\n } else {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n }\n};\n\n// Export.\nmodule.exports = {\n log: utils.log,\n disableLog: utils.disableLog,\n browserDetails: utils.detectBrowser(),\n extractVersion: utils.extractVersion\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"cc63ae69\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"root:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkroot\"] = self[\"webpackChunkroot\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) return true;\n // Explicitly opting-in to running on hydration\n if (m.route.loader.hydrate === true) return false;\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a