{"version":3,"file":"static/js/4543.14fd216b.js","mappings":"2GAEA,IAAIA,EAAMC,EAAQ,OACdC,EAAQ,CACR,UAAW,qFACX,mBAAoB,oDACpB,+BAAgC,gBAChC,MAAO,wBACP,YAAa,wBACb,WAAY,8BACZ,sBAAuB,4GACvB,QAAS,mBACT,UAAW,gBACX,gBAAiB,gBACjB,cAAe,sDACf,yBAA0B,sBAC1B,oBAAqB,kBACrB,oBAAqB,kBACrB,sBAAuB,oBACvB,iBAAkB,eAClB,uBAAwB,qBACxB,uBAAwB,qBACxB,sBAAuB,oBACvB,sBAAuB,oBACvB,sBAAuB,oBACvB,qBAAsB,mBACtB,sBAAuB,oBACvB,qBAAsB,mBACtB,qBAAsB,mBACtB,sBAAuB,oBACvB,qBAAsB,mBACtB,sBAAuB,oBACvB,iBAAkB,mCAClB,aAAc,uCACd,aAAc,+NACd,qCAAsC,4LACtC,yCAA0C,aAC1C,mBAAoB,qIACpB,iBAAkB,wHAClB,qBAAsB,6BACtB,sBAAuB,4FACvB,0BAA2B,YAC3B,qCAAsC,gEACtC,kDAAmD,mCACnD,6CAA8C,+QAC9C,yDAA0D,2BAC1D,wBAAyB,oKACzB,uBAAwB,mKACxB,iEAAkE,qBAClE,kCAAmC,8FACnCC,EAAG,oIACH,MAAO,YACP,mBAAoB,uQACpB,oBAAqB,gIACrB,0BAA2B,mDAG/B,IAAI,IAAIC,KAAYF,EAAO,CACvB,IAAIG,EAAeD,EAASE,QAAQ,KAAK,MACpCA,QAAQ,KAAM,2BACdA,QAAQ,KAAM,oBACnBN,EAAIO,aAAaF,EAAcH,EAAME,GACzC,C,wBC5DAI,EAAOC,QAAU,EAAjBD,M,wBCAAA,EAAOC,QAAU,EAAjBD,M,wBCAAA,EAAOC,QAAU,EAAjBD,M,wBCAAA,EAAOC,QAAU,EAAjBD,M,wBCAAA,EAAOC,QAAU,EAAjBD,I,wBCAA,IAAIE,EAAWT,EAAQ,OACnBU,EAAcV,EAAAA,OAAAA,YACdW,EAAiBX,EAAAA,OAAAA,eAErBO,EAAOC,QAAUE,EAAYC,EAAe,aAAc,CACtDC,QAASH,EAASG,QAClBC,EAAG,CACCC,QAAS,MACTC,YAAa,CACT,qCACFC,KAAK,MAEXC,EAAG,CACCH,QAAS,MACTC,YAAa,CACT,qCACFC,KAAK,MAEXE,EAAG,CACCJ,QAAS,MACTC,YAAa,CACT,qCACFC,KAAK,MAEXG,GAAI,CACAL,QAAS,SACTC,YAAa,CACT,4EACFC,KAAK,MAEXI,GAAI,CACAN,QAAS,SACTC,YAAa,CACT,4EACFC,KAAK,MAGXK,QAASZ,EAASY,QAClBC,OAAQb,EAASa,OACjBC,QAASd,EAASc,QAClBC,OAAQf,EAASe,OAEjBC,KAAMhB,EAASgB,KACfC,UAAWjB,EAASiB,UACpBC,KAAMlB,EAASkB,KACfC,MAAOnB,EAASmB,MAChBC,OAAQpB,EAASoB,OACjBC,QAASrB,EAASqB,QAClBC,MAAOtB,EAASsB,MAChBC,OAAQvB,EAASuB,OACjBC,QAASxB,EAASwB,QAClBC,YAAazB,EAASyB,YACtBC,UAAW1B,EAAS0B,UACpBC,YAAa3B,EAAS2B,YACtBC,UAAW5B,EAAS4B,UACpBC,WAAY7B,EAAS6B,WACrBC,UAAW9B,EAAS8B,UACpBC,eAAgB/B,EAAS+B,eACzBC,UAAWhC,EAASgC,UACpBC,UAAWjC,EAASiC,UACpBC,eAAgBlC,EAASkC,eACzBC,WAAYnC,EAASmC,WACrBC,SAAUpC,EAASoC,SACnBC,cAAerC,EAASqC,cACxBC,UAAWtC,EAASsC,UACpBC,WAAYvC,EAASuC,WACrBC,cAAexC,EAASwC,gBAaxB,OAAQ,Y,wBC/EZ,IAAIlD,EAAMC,EAAQ,OACdkD,EAAOlD,EAAQ,OAenB,SAASmD,EAAYC,EAAKC,GACtB,IACIC,EADkBD,EAAME,gBACCD,OACzBE,EAAOH,EAAMI,WAAWC,MAExBC,EAAO,CAEPC,MAAO,KAGPC,KAAM,SAGNC,WAAW,EAKXC,MAAO,EAAEC,IAAUA,MAGvBZ,EAAIa,IAAM,CAAC,EACXlE,EAAImE,WAAWd,EAAIa,IAAKN,GACxBT,EAAKiB,WAAWf,EAAIa,KACpBb,EAAIa,IAAIG,QAAUZ,EAAKa,EAAIf,EAAOzC,EAAE,GAAK2C,EAAKc,EAC9ClB,EAAIa,IAAIM,IAAM,WACV,MAAO,IAAO,EAAInB,EAAIoB,OAAO,GAAKpB,EAAIoB,OAAO,IAAMhB,EAAKc,GAAKhB,EAAOzC,EAAE,GAAKyC,EAAOzC,EAAE,GACxF,EAEAuC,EAAIqB,IAAM,CAAC,EACX1E,EAAImE,WAAWd,EAAIqB,IAAKd,GACxBT,EAAKiB,WAAWf,EAAIqB,KACpBrB,EAAIqB,IAAIL,QAAUZ,EAAKkB,GAAK,EAAIpB,EAAOrC,EAAE,IAAMuC,EAAKmB,EACpDvB,EAAIqB,IAAIF,IAAM,WACV,MAAO,IAAO,EAAInB,EAAIoB,OAAO,GAAKpB,EAAIoB,OAAO,IAAMhB,EAAKmB,GAAKrB,EAAOrC,EAAE,GAAKqC,EAAOrC,EAAE,GACxF,CACJ,CAjDAV,EAAOC,QAAU,SAAiB6C,GAI9B,IAHA,IACIuB,EADkBvB,EAAME,gBACDsB,YAEnBC,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAC5B3B,EAAYyB,EAAKE,GAAIzB,GAGzBA,EAAMI,WAAWuB,WACZC,UAAU,eAAiB5B,EAAM6B,IACjCC,QACT,C,wBCdA,IAAIpF,EAAMC,EAAQ,OACdkD,EAAOlD,EAAQ,OACfoF,EAA+BpF,EAAQ,OACvCqF,EAAiCrF,EAAQ,OACzCsF,EAAatF,EAAQ,OAUzB,SAASuF,EAAyBC,EAAOC,EAAQC,EAAaC,GAC1D,SAASC,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOJ,EAAOC,EAAQH,EAAYO,EAAMC,EACvD,CAEA,SAASC,EAAeC,GACpB,IAAIC,EAASD,EAAW,OAGpBE,EAAS,CAAEC,YAAa,CAAC,GAG7B,OAFAD,EAAOC,YAAYF,GAAUP,EAAYO,GAElC/C,EAAK6C,eAAeN,EAAQS,EAAQN,EAAQI,EAAUA,EAAU,GAC3E,CAGcJ,EAAO,aAGrBP,EAA+BG,EAAOC,EAAQE,EAAKlC,WAAYmC,GAE/DG,EAAe,KACfA,EAAe,KACfA,EAAe,KAGfhG,EAAIqG,UAAUZ,EAAOC,EAAQ,CAAC,IAAK,IAAK,MAGxCA,EAAOY,KAAO,IACdZ,EAAOa,KAAO,IACdb,EAAOc,KAAO,IAEdX,EAAO,WACPA,EAAO,WACPA,EAAO,UACPA,EAAO,UAEJH,EAAOpD,YACNoD,EAAOe,MAAQ,QACff,EAAOgB,MAAQ,QAGfb,EAAO,MAAO,IACdA,EAAO,MAAO,IAGd7F,EAAIqG,UAAUZ,EAAOC,EAAQ,CAAC,KAAM,QAE5C,CAzDAlF,EAAOC,QAAU,SAAwBkG,EAAeC,EAAgBhB,GACpEP,EAA6BsB,EAAeC,EAAgB,CACxDC,KAAM,cACNC,mBAAoBtB,EACpB9B,WAAYkC,EAAKlC,YAEzB,C,wBCZA,IAAIqD,EAAU9G,EAAAA,OAAAA,QACV+G,EAAU/G,EAAQ,OAClBgH,EAAY,CAAC,IAAK,IAAK,KAE3BzG,EAAOC,QAAU,SAAc6C,GAK3B,IAJA,IAAIE,EAAkBF,EAAME,gBACxB0D,EAAY5D,EAAM4D,UAClBrC,EAAOrB,EAAgBsB,YAEnBC,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAAK,CAIjC,IAHA,IAAI1B,EAAMwB,EAAKE,GACXoC,GAAwB,EAEpBC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACvB,IAAInB,EAAWgB,EAAUG,GACrBC,EAAMhE,EAAI4C,GAEVqB,EADK9D,EAAgByC,EAAW,QACfsB,WAAWF,GAEhC,GAAGC,EAAc,GAAKA,EAAc,EAAG,CACnCH,GAAwB,EACxB,KACJ,CACJ,CAEGA,EACC7D,EAAMI,WAAWuB,WACZuC,OAAO,eAAiBlE,EAAM6B,GAAK,gBAAkBJ,EAAI,MACzDK,UAEL/B,EAAIoB,OAASuC,EAAQ1D,EAAMmE,OAAOC,aAAc,CAC5ClE,EAAgBmE,MAAMC,IAAIvE,EAAIvC,GAAKoG,EAAU,GAC7C1D,EAAgBqE,MAAMD,IAAIvE,EAAInC,GAAKgG,EAAU,GAC7C1D,EAAgBsE,MAAMF,IAAIvE,EAAIlC,GAAK+F,EAAU,KAGjDH,EAAQzD,EAAMyE,SAAU1E,EAAK0B,EAAGzB,EAAM6B,GAAI9B,EAAIa,IAAKb,EAAIqB,KAE/D,CACJ,C,wBCvCA,IAAIsD,EAAW/H,EAAQ,OACnBD,EAAMC,EAAQ,OAElBO,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,gBAENqB,OAAQ,CACJC,SAAU,CACN7E,MAAO,CAACwB,YAAa7E,EAAQ,UAIrCmI,iBAAkBnI,EAAQ,OAC1BoI,eAAgBpI,EAAQ,OACxBqI,gBAMJ,SAAqBC,EAAUC,GAC3B,IAAIC,EAAOT,EAASU,iBAAiBC,KACrC,IAAIF,EAAM,OAKV,IAHA,IAAIG,EAAYH,EAAKG,UAEjBC,EAAOC,OAAOD,KAAKN,GACfxD,EAAI,EAAGA,EAAI8D,EAAK7D,OAAQD,IAAK,CACjC,IAAIgE,EAAIF,EAAK9D,GACV6D,EAAUI,KAAKD,KAAOR,EAASQ,GAAGjE,aAAe,IAAIE,SACpDhF,EAAIiJ,WAAWT,EAAUU,iBAAkBT,GAC3CzI,EAAIiJ,WAAWT,EAAUW,UAAUR,KAAMI,GAEjD,CACJ,EAlBIK,QAASnJ,EAAQ,OACjBoJ,KAAMpJ,EAAQ,O,oBCHlBO,EAAOC,QAAU,CAEb,CACI6I,KAAM,GACNC,QAAS,GAGb,CACID,KAAM,oBACNC,QAAS,IAGb,CACID,KAAM,wBACNC,QAAS,KAGb,CACID,KAAM,2CACNC,QAAS,MAGb,CACID,KAAM,0DACNC,QAAS,KAGb,CACID,KAAM,oDACNC,QAAS,GAGb,CACID,KAAM,qCACNC,QAAS,EACTC,UAAU,GAGd,CACIF,KAAM,gBACNC,QAAS,EACTC,UAAU,G,wBCxDlB,IAAIC,EAAaxJ,EAAQ,OACrByJ,EAAYzJ,EAAQ,OACpB0J,EAAqB1J,EAAQ,OAC7BW,EAAiBX,EAAAA,OAAAA,eACjB2J,EAAoB3J,EAAQ,OAEhC,SAAS4J,EAAwBC,GAC7B,MAAO,CACH,6DAA+DA,EAC/D,qCAAuCA,EAAO,qBAAuBA,EACrE,gDACA,+BAAiCA,EAAO,8BACxC,uBAAyBA,EAAO,iCAChC,gBAAkBA,EAAO,KACzB,iCACA,8DACA,gEACA,0DACF7I,KAAK,IACX,CAEA,SAAS8I,EAA2BD,EAAME,EAAOC,GAC7C,MAAO,CACH,WAAYH,EAAM,oDAClB,QAAUA,EAAO,yCACjB,6CACA,OAAQG,EAAO,KAAMD,EAAO,IAAMA,EAAO,KAAMC,EAAQ,KACvD,QAAUH,EAAO,mDAAqDA,EAAO,QAC7E,0CACA,SAAWA,EAAO,4CAA8CA,EAAO,SACzE7I,KAAK,IACX,CAEAT,EAAOC,QAAUG,EAAe,aAAc,CAC1CC,QAAS,CACLE,QAAS,UACTgF,MAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,yDACFC,KAAK,MAGXS,KAAM,CACFX,QAAS,SACTmJ,SAAU,iBACVlJ,YAAa,CACT,iDACA,sDACA,qDACA,2DACA,8BACFC,KAAK,MAEXU,UAAW,CACPZ,QAAS,QACTgF,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,8CACA,mCACFC,KAAK,MAEXW,KAAM8H,EAAU,CACZQ,SAAU,iBACVC,cAAe,YACfnJ,YAAa,mCAEjBa,MAAO,CACHd,QAAS,SACTqJ,IAAK,EACLrE,KAAM,KACNmE,SAAU,iBACVlJ,YAAa,CACT,mEACA,sDACA,iEACFC,KAAK,MAEXa,OAAQ,CACJf,QAAS,SACTqJ,IAAK,EACLrE,KAAM,KACNmE,SAAU,iBACVlJ,YAAa,CACT,oEACA,yDACFC,KAAK,MAEXc,QAAS,CACLhB,QAAS,SACTqJ,IAAK,EACLC,IAAK,EACLtE,KAAM,EACNmE,SAAU,YACVlJ,YAAa,sDAEjBgB,MAAO,CACHjB,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,SAAU,SAC3BvE,KAAM,SACNmE,SAAU,YACVlJ,YAAa,CACT,8DACA,uDACA,6DACA,qDACFC,KAAK,MAEXgB,OAAQ,CACJlB,QAAS,aACTuJ,OAAQ,CAAC,MAAO,SAAU,UAC1BvE,KAAM,SACNmE,SAAU,YACVlJ,YAAa,CACT,4DACA,8DACA,oBACFC,KAAK,MAEXiB,QAAS,CACLnB,QAAS,QACTgF,KAAM,gBACNmE,SAAU,YACVlJ,YAAa,gDAEjBmB,YAAa,CACTpB,QAAS,QACTgF,KAAM,gBACNmE,SAAU,YACVlJ,YAAa,CACT,iEACFC,KAAK,MAEXmB,UAAW,CACPrB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,8CACA,6BACFC,KAAK,MAEXoB,YAAa,CACTtB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,iDACA,0BACFC,KAAK,MAGXqB,UAAW,CACPvB,QAAS,UACTgF,MAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,mEACA,qDACA,8DACFC,KAAK,MAEXsB,WAAY,CACRxB,QAAS,QACTmJ,SAAU,YACVlJ,YAAa,2CAEjBwB,UAAW,CACPzB,QAAS,UACTqJ,IAAK,EACLC,IAAKZ,EAAWzE,OAChBe,KAAM,EACNmE,SAAU,YACVlJ,YAAa,6CAEjByB,eAAgB,CACZ1B,QAAS,UACTqJ,IAAK,EACLC,IAAKZ,EAAWzE,OAChBe,KAAM,EACNmE,SAAU,YACVlJ,YAAa,+CAEjB0B,UAAW,CACP3B,QAAS,WACTwJ,MAAO,CAAC,MAAO,SACfC,OAAQ,CAAC,QACTzE,KAAM,MACNmE,SAAU,YACVlJ,YAAa,4CAEjB2B,UAAW,CACP5B,QAAS,SACTqJ,IAAK,GACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,4EACA,qEACFC,KAAK,MAEX2B,eAAgB,CACZ7B,QAAS,SACTqJ,IAAK,GACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,8EACA,qEACFC,KAAK,MAEX4B,WAAY,CACR9B,QAAS,SACTqJ,IAAK,GACLF,SAAU,iBACVlJ,YAAa,oDAEjB8B,SAAU,CACN/B,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,sEACA,kEACA,kEACA,kEACA,0CACFC,KAAK,MAEX8B,cAAe,CACXhC,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,wEACA,kEACA,kEACA,kEACA,0CACFC,KAAK,MAEXG,GAAI,CACAL,QAAS,MACTmJ,SAAU,iBACVlJ,YAAa,CACT+I,EAA2B,IAAK,OAAQ,UAC1C9I,KAAK,MAEXI,GAAI,CACAN,QAAS,MACTmJ,SAAU,iBACVlJ,YAAa,CACT+I,EAA2B,IAAK,MAAO,WACzC9I,KAAK,MAEXwF,MAAO,CACH1F,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CACJ,QACAX,EAAmBc,QAAQ3J,EAAE4J,YAEjCR,SAAU,OACVlJ,YAAa,CACT,gDACA,mCACA4I,EAAkBe,mBAAmB,IAAK,OAAQ,SAClDd,EAAwB,MAC1B5I,KAAK,MAEXyF,MAAO,CACH3F,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CACJ,QACAX,EAAmBc,QAAQvJ,EAAEwJ,YAEjCR,SAAU,OACVlJ,YAAa,CACT,gDACA,mCACA4I,EAAkBe,mBAAmB,IAAK,SAAU,OACpDd,EAAwB,MAC1B5I,KAAK,MAGXqF,KAAM,CACFvF,QAAS,aACTuJ,OAAQ,CACJ,QACAX,EAAmBc,QAAQ3J,EAAE4J,YAEjCR,SAAU,OACVlJ,YAAa,CACT,2CACA4I,EAAkBe,mBAAmB,IAAK,OAAQ,UACpD1J,KAAK,MAEXH,EAAG,CACCC,QAAS,MACTmJ,SAAU,iBACVlJ,YAAa,CACT,oCACA,sDACA,6BACA,2DACA,4DACA,6CACA,0DACA,2DACA,6CACFC,KAAK,MAEXK,QAAS,CACLP,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,OAAQ,SAAU,SACnCvE,KAAM,OACNmE,SAAU,iBACVlJ,YAAa,CACT,iDACA,6DACA,gCACA,yDACA,0DACA,sDACA,iBACA,sDACA,uDACA,gEACA,oCACFC,KAAK,MAEXM,OAAQ,CACJR,QAAS,SACTgF,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,+DACA,4DACFC,KAAK,MAEXsF,KAAM,CACFxF,QAAS,aACTuJ,OAAQ,CACJ,QACAX,EAAmBc,QAAQvJ,EAAEwJ,YAEjCR,SAAU,OACVlJ,YAAa,CACT,2CACA4I,EAAkBe,mBAAmB,IAAK,SAAU,QACtD1J,KAAK,MAEXC,EAAG,CACCH,QAAS,MACTmJ,SAAU,iBACVlJ,YAAa,CACT,oCACA,sDACA,6BACA,2DACA,4DACA,6CACA,0DACA,2DACA,6CACFC,KAAK,MAEXO,QAAS,CACLT,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,MAAO,SAAU,UAClCvE,KAAM,OACNmE,SAAU,iBACVlJ,YAAa,CACT,+CACA,4DACA,iCACA,yDACA,sDACA,oDACA,iBACA,sDACA,uDACA,gEACA,oCACFC,KAAK,MAEXQ,OAAQ,CACJV,QAAS,SACTgF,KAAM,EACNmE,SAAU,iBACVlJ,YAAa,CACT,2DACA,sDACFC,KAAK,MAEX2J,YAAa,CACT7J,QAAS,aACTuJ,OAAQ,EAAC,EAAO,QAAS,SACzBvE,MAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,uDACA,iEACA,gEACA,iEACA,+DACA,8DACA,gEACA,wBACA,oEACA,mEACA,kEACA,+DACFC,KAAK,MAEX4J,OAAQ,CACJ9J,QAAS,MACTmJ,SAAU,YACVlJ,YAAa,CACT,oEACA,uDACFC,KAAK,MAEX6J,OAAQ,CACJ/J,QAAS,MACTmJ,SAAU,YACVlJ,YAAa,CACT,oEACA,uDACFC,KAAK,MAEX+B,UAAW,CACPjC,QAAS,SACTmJ,SAAU,YACVlJ,YAAa,CACT,0DACA,oDACFC,KAAK,MAEXgC,WAAY,CACRf,QAAS,CACLnB,QAAS,QACTmJ,SAAU,YACVlJ,YAAa,CACT,gDACA,0DACA,mCACFC,KAAK,MAEXkB,YAAa,CACTpB,QAAS,QACTmJ,SAAU,YACVlJ,YAAa,CACT,4CACA,yDACA,uCACFC,KAAK,MAEXW,KAAM8H,EAAU,CACZQ,SAAU,YACVlJ,YAAa,CACT,kCACA,kDACA,6CACFC,KAAK,OAEXiJ,SAAU,aAEdhH,cAAe,CACXnC,QAAS,UACTmJ,SAAU,YACVlJ,YAAa,CACT,iEACA,mEACA,mEACA,6DACA,oEACA,+CACFC,KAAK,MAEXiJ,SAAU,OAEVa,YAAa,CACTC,IAAK,CACDjK,QAAS,SACTmJ,SAAU,OACVlJ,YAAa,CACT,uDACFC,KAAK,Q,wBC9enB,IAAIjB,EAAMC,EAAQ,OACdkD,EAAOlD,EAAQ,OAEfoJ,EAAOpJ,EAAAA,OAAAA,KAYX,SAASgL,EAAaC,GAClB,IAAIxH,EAAawH,EAAG9E,YAMpBpG,EAAImL,cAAczH,EAAWoB,aAAasG,SAAQ,SAAS/H,GACvD,IAAIgI,EAAKlI,EAAKmI,UAAUJ,EAAI7H,EAAIiD,MAC5BiF,EAAKpI,EAAKmI,UAAUJ,EAAI7H,EAAIkD,MAC5BiF,EAAWrI,EAAKsI,WAAWpI,EAAIiD,MAC/BoF,EAAWvI,EAAKsI,WAAWpI,EAAIkD,MAEnClD,EAAIsI,UAAY,CAAC,EACD,UAAbH,GAAsBI,EAAkBvI,EAAKgI,GAChC,UAAbK,GAAsBE,EAAkBvI,EAAKkI,EACpD,GACJ,CAEA,SAASK,EAAkBvI,EAAKjC,GAC5B,IAeIyK,EAfAC,EAAO1K,EAAG2K,IACVC,EAASF,EAAKG,OAAO,GACrB5E,EAAMhE,EAAI2I,GACVE,EAAO7I,EAAI,IAAM2I,GACjBhB,EAAM3H,EAAI2I,EAAS,OACnBG,EAAO9I,EAAI,IAAM2I,EAAS,OAC1BI,EAAU/I,EAAI,IAAM2I,EAAS,WAC7BK,EAAWhJ,EAAI,IAAM2I,EAAS,YAC9BM,EAAQ,CAACxL,EAAG,EAAGI,GAAI,GAAG8K,GAAU3I,EAAI2I,EAAS,SAC7CO,EAAW,EAAIlJ,EAAIV,UAAYU,EAAIR,YAAc,EACjD2J,EAAWD,EAAWD,EACtBG,EAAYF,EAAWD,EACvBI,EAAgB,EAAIrJ,EAAIT,eAAiBS,EAAIR,YAAc,EAC3D8J,EAAgBD,EAAgBJ,EAChCM,EAAiBF,EAAgBJ,EAGrC,GAAGH,IAASnB,EAAK,CAEb,IAAI6B,EAAmB1J,EAAK2J,aAAa1L,EAAI,CAACA,EAAG2L,IAAI1F,IAAO,CACxD2F,SAAUR,EACVS,UAAWR,IAGXS,EAAc/J,EAAK2J,aAAa1L,EAAI,CAACA,EAAG2L,IAAIb,IAAQ,CACpDc,SAAUG,KAAK9C,IAAI+B,EAASO,GAC5BM,UAAWE,KAAK9C,IAAIgC,EAAUO,KAElCf,EAAW,CACPzB,IAAK,CAACyC,EAAiBzC,IAAI,GAAI8C,EAAY9C,IAAI,IAC/CC,IAAK,CAACwC,EAAiBxC,IAAI,GAAI6C,EAAY7C,IAAI,IAEvD,MACIsC,EAAgBT,EAAOS,EAAgBT,EAAOS,EAC9CC,EAAiBV,EAAOU,EAAiBV,EAAOU,EAChDf,EAAW1I,EAAK2J,aAAa1L,EAAI,CAACA,EAAG2L,IAAI1F,IAAO,CAC5C2F,SAAUG,KAAK9C,IAAI+B,EAASI,EAAUG,GACtCM,UAAWE,KAAK9C,IAAIgC,EAAUI,EAAWG,KAIjDvJ,EAAIsI,UAAUG,GAAQD,CAC1B,CAvEArL,EAAOC,QAAU,SAAuByK,GACpC,IAAIxH,EAAawH,EAAG9E,YAGpB,GAFqBpG,EAAImL,cAAczH,EAAWoB,aAEhCE,QAAUkG,EAAGkC,UAAUpI,OACrC,OAAOhF,EAAIqN,YAAY,CAAChE,EAAM4B,GAAeC,EAErD,C,wBCbA,IAAIlL,EAAMC,EAAQ,OACd+H,EAAW/H,EAAQ,OACnBqN,EAAcrN,EAAAA,OAAAA,YAuElB,SAASsN,EAAcrC,EAAIsC,GACvB,IAMIzI,EAAGqC,EAAGqG,EAAMC,EAAUC,EAAQtC,EAAIE,EANlCzG,EAAcoG,EAAG9E,YAAYtB,YAC7B8I,EAAQ,GACRC,EAAS,GACTC,EAAiB,GACjBC,GAAYP,GAAa,IAAIxI,OAIjC,IAAID,EAAI,EAAGA,EAAID,EAAYE,OAAQD,IAI/B,GAFA2I,GADAD,EAAO3I,EAAYC,IACH6F,YAEH,CACT,IAAIxD,EAAI,EAAGA,EAAI2G,EAAU3G,IAKrB,GAHAiE,GADAsC,EAASH,EAAUpG,IACPO,MACZ4D,EAAKoC,EAAO9F,MAETwD,EAAGU,MAAQ0B,EAAKnH,MACfiF,EAAGQ,MAAQ0B,EAAKlH,MAChB8E,EAAG2C,IAAIL,EAAO7M,KAAOmN,EAAYR,EAAKS,QAAS7C,IAC/CE,EAAGyC,IAAIL,EAAOzM,KAAO+M,EAAYR,EAAKU,QAAS5C,GACjD,EAIKkC,EAAK5M,QACY,UAAb6M,EAAmCG,EACpBC,EAELF,GAENQ,KAAKrJ,GAChB,KACJ,CAGDqC,IAAM2G,GAGFN,EAAK5M,SAAwB,UAAb6M,GAAsBG,EAAOO,KAAKrJ,EAE7D,CAGJ,MAAO,CAACsJ,GAAIT,EAAOU,IAAKT,EAAQU,YAAaT,EACjD,CAGA,SAASG,EAAYO,EAAGpN,GACpB,MAAmB,QAAZA,EAAG0C,KAAiB1C,EAAGqN,IAAID,GAAKpN,EAAG4M,IAAIQ,EAClD,CAzHAhO,EAAOC,QAAU,CACbiO,eAcJ,SAAwBxD,EAAIsC,GACxB,IAAImB,EAAOpB,EAAcrC,EAAIsC,GAC7B,OAAOmB,EAAKN,GAAGrJ,OAAS,GAAK2J,EAAKJ,YAAYvJ,OAAS,CAC3D,EAhBI4J,QA4BJ,SAAiB1D,EAAIsC,GACjB,IAKIzI,EAAG8J,EALHC,EAAavB,EAAcrC,EAAIsC,GAC/BI,EAAQkB,EAAWT,GACnBR,EAASiB,EAAWR,IAAIS,OAAOD,EAAWP,aAC1CS,EAAS,CAAC,EACVC,EAAiB/D,EAAG9E,YAAYtB,YAGpC,IAAK8I,EAAM5I,SAAU6I,EAAO7I,OAAS,OAErC,IAAID,EAAI,EAAGA,EAAI6I,EAAM5I,OAAQD,KACzB8J,EAAcvB,EAAYpC,EAAGgE,OAAQ,cAAeD,EAAerB,EAAM7I,MAC7DoK,WAAW,WAAW,GAClCnP,EAAImE,WAAW6K,EAAQH,EAAYO,gBAGvC,IAAIrK,EAAI,EAAGA,EAAI8I,EAAO7I,OAAQD,KAC1B8J,EAAcvB,EAAYpC,EAAGgE,OAAQ,cAAeD,EAAepB,EAAO9I,MAC9DoK,WAAW,WAAW,GAClCnP,EAAImE,WAAW6K,EAAQH,EAAYO,gBAGvC,OAAOpH,EAASqH,KAAK,SAAUnE,EAAI,CAAC,EAAG8D,EAC3C,E,wBCzDA,IAAIhP,EAAMC,EAAQ,OACdqP,EAAQrP,EAAQ,MAGpBO,EAAOC,QAAU,SAAwCgF,EAAOC,EAAQhC,EAAYmC,GAChFA,EAAO,WACP,IAAI0J,EAAU1J,EAAO,WAEjB2J,EAAc3J,EAAO,eACrB4J,EAAgBH,EAAMvN,QAAQyN,GAElC3J,EAAO,aAEP,IAAI6J,EAAc7J,EAAO,eACrB8J,EAAY9J,EAAO,aAYvB,GAVAA,EAAO,OAAQ8J,EAAY,IAAMjM,EAAWkM,WAAWC,YACvDhK,EAAO,aACP7F,EAAI8P,WAAWjK,EAAQ,OAAQnC,EAAW9B,MAE1CiE,EAAO,SACPA,EAAO,SAECA,EAAO,WACTA,EAAO,UAEV8J,EAAW,CACV,IACInN,EACAG,EAFAD,EAAYmD,EAAO,cAIU,IAA9BnD,EAAUqN,QAAQ,SACjBvN,EAAYqD,EAAO,aACnBlD,EAAYkD,EAAO,eAGY,IAAhCnD,EAAUqN,QAAQ,WACjBlK,EAAO,iBAAkBrD,GACzBqD,EAAO,iBAAkBlD,IAE7BkD,EAAO,aAAc4J,EAAgB/J,EAAOvD,YAAcmN,EAAMU,aAChEnK,EAAO,aAAsD,GAAtC4J,GAAiBC,GAAgB,IACxD7J,EAAO,YACPA,EAAO,gBACX,CAEA,IAAIoK,EAAYpK,EAAO,aACnBqK,EAAmBxM,EAAWT,YAAc,CAAC,EAEjD,GAAGgN,EAAW,CACV,IAAIE,EAAUtK,EAAO,qBAAsBqK,EAAiBhO,UACvDoN,EAAMvN,QAAQwN,GAAWD,EAAMc,IAAIb,GAAWD,EAAMU,cAGrDK,EAAcxK,EAAO,yBAA0BqK,EAAiB/N,aAChEmN,EAAMgB,SAASH,IAGnBnQ,EAAI8P,WAAWjK,EAAQ,kBAAmB,CACtC0K,OAAQL,EAAiBtO,KAAK2O,OAC9B9M,KAAMyM,EAAiBtO,KAAK6B,KAC5B+M,MAAON,EAAiBtO,KAAK4O,OAASH,GAE9C,CAEAxK,EAAO,kBAAmBoK,EAC9B,C,wBClEA,IAAIQ,EAAYxQ,EAAQ,OACpByQ,EAAazQ,EAAQ,OAezBO,EAAOC,QAAU,SAAuByK,EAAI9J,EAAIuP,EAASC,GACrDxP,EAAKA,GAAM,CAAC,EAEZ,IAAIyP,EAAqB,QAAZF,GAAmC,WAAZvP,EAAG0C,KACnCgN,EAAuB,WAAZH,GAAsC,QAAZvP,EAAG0C,KAE5C,GAAK+M,GAASC,EAoBd,IAlBA,IAEIzN,EACA0N,EAHAjM,EAAcoG,EAAG9E,YAAYtB,YAC7BmB,EAAW7E,EAAG2K,IAAIE,OAAO,GAiBrBlH,EAAI,EAAGA,EAAID,EAAYE,OAAQD,IACnC1B,EAAMyB,EAAYC,GAClBgM,EAAa,eAAiBhM,EAAI,KAE/B1B,EAAI4C,EAAW,SAAW7E,EAAG2K,KAAK3C,EAAQnD,GAC1C5C,EAAI,IAAM4C,EAAW,SAAW7E,EAAG2K,KAAK3C,EAAQ,IAAMnD,GAlB7D,SAASmD,EAAQtD,GACb,IAAIkL,EAAa3N,EAAIyC,GACjBmL,EAAS,KAEHA,EAAPJ,EAAgBH,EAAWM,EAAY5P,EAAG4C,OAC/BmJ,KAAK+D,IAAI,GAAIF,GAGvBP,EAAUQ,KAASA,EAAS,MAEhCL,EAAQG,EAAajL,EAAMmL,EAC/B,CASJ,C,wBCjDA,IAAIjR,EAAMC,EAAQ,OACdkD,EAAOlD,EAAQ,OACfoF,EAA+BpF,EAAQ,OAEvCqF,EAAiCrF,EAAQ,OACzCsF,EAAatF,EAAQ,OAUzB,SAASuF,EAAyBC,EAAOC,EAAQhC,GAC7C,SAASmC,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOJ,EAAOC,EAAQH,EAAYO,EAAMC,EACvD,CAEA,IAAIlF,EAAUgF,EAAO,WACjBsL,EAActL,EAAO,eAEzB,GAAKhF,GAAWsQ,EAAhB,CAEA7L,EAA+BG,EAAOC,EAAQhC,EAAYmC,GAS1D,IAPA,IAAI8J,EAAYjK,EAAOpD,UAGnB2E,EAAY,CAAC,IAAK,KAClBmK,EAAe,EAAE,IAAK,IACtBjL,EAAS,CAACC,YAAa1C,GAEnBqB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACvB,IAAIkB,EAAWgB,EAAUlC,GAGrBsM,EAAQlO,EAAKmO,UAAU7L,EAAOC,EAAQS,EAAQF,EAAU,GAAI,SAEhE,GAAa,UAAVoL,EACUlO,EAAKmI,UAAUnF,EAAQkL,GAC7BE,YAAYnD,KAAK1I,EAAO8L,QAM/B,GAFArO,EAAK6C,eAAeN,EAAQS,EAAQN,EAAQwL,EAAOpL,EAAU,IAE1D0J,EAAW,CACV,IAAI8B,EAAe,IAAMxL,EAErByL,EAASvO,EAAKmO,UAAU7L,EAAOC,EAAQS,EAAQsL,EAAc,QACzD,CAAC,QAAS,UAKJ,UAAXC,GAAsBA,IAAWL,IAChCK,EAAShM,EAAO+L,GAAgB,SAIpC,IAAIE,EAAoB,UAAXD,EAAsBN,EAAarM,GAAK,GACrD5B,EAAK6C,eAAeN,EAAQS,EAAQN,EAAQ6L,EAAQD,EAAcE,EACtE,CAGA9L,EAAOI,EAAW,UAGlBJ,EAAOI,EAAW,QACtB,CAUA,GAPAjG,EAAIqG,UAAUZ,EAAOC,EAAQ,CAAC,IAAK,MAGhCiK,GACC3P,EAAIqG,UAAUZ,EAAOC,EAAQ,CAAC,KAAM,OAGrCyL,EAAa,CACZ,IAAIS,EAAS/L,EAAO,UAChBgM,EAAShM,EAAO,UAIpBH,EAAOwI,aAAsB4D,IAAXF,EACdlM,EAAO5E,EACPqC,EAAK4O,cAAcH,EAAQzL,EAAQT,EAAOY,MAC9CZ,EAAOyI,aAAsB2D,IAAXD,EACdnM,EAAOxE,EACPiC,EAAK4O,cAAcF,EAAQ1L,EAAQT,EAAOa,KAClD,CAtEoC,CAuExC,CAtFA/F,EAAOC,QAAU,SAA8B8H,EAAUC,GACrDnD,EAA6BkD,EAAUC,EAAW,CAC9C3B,KAAM,cACNC,mBAAoBtB,GAE5B,C,wBCbA,IAAIwM,EAAK/R,EAAQ,OAEb+H,EAAW/H,EAAQ,OACnBgS,EAAQhS,EAAQ,OAChBD,EAAMC,EAAQ,OACdiS,EAAelS,EAAIkS,aACnB/O,EAAOlD,EAAQ,OACfqP,EAAQrP,EAAQ,MAChBkS,EAAUlS,EAAQ,MAClBmS,EAAKnS,EAAQ,OACboS,EAAepS,EAAQ,OACvBqS,EAAYrS,EAAQ,OACpBsS,EAActS,EAAQ,OACtBqN,EAAcrN,EAAAA,OAAAA,YAEduS,EAAgBvS,EAAQ,OAuC5B,SAASwS,EAAQvH,EAAIwH,GACjB,IACIC,EADazH,EAAG9E,YACKtB,YAAY4N,IAAU,CAAC,EAC5CrH,EAAKlI,EAAKmI,UAAUJ,EAAIyH,EAAQrM,MAChCiF,EAAKpI,EAAKmI,UAAUJ,EAAIyH,EAAQpM,MAEjC8E,GAAIA,EAAGuH,WACPrH,GAAIA,EAAGqH,WAEV7L,EAAQmE,EAAIyH,EAASD,GAAO,EAAOrH,EAAIE,EAC3C,CAOA,SAASsH,EAAcC,EAAKC,EAAK9M,EAAU+M,EAAIL,GAC3C,IAAIM,EAAQN,EAAQ1M,GAChBoL,EAAQsB,EAAQ1M,EAAW,OAC3BiN,GAAsC,IAA3BjN,EAAS8J,QAAQ,KAC5BoD,EAAyC,WAA3BhQ,EAAKsI,WAAW4F,GAC9B+B,EAAQF,EAAWF,EAAGpO,EAAIoO,EAAGzO,EACjC,OAAGuO,EACIK,EAIQF,GAASC,GAAYH,EAAMA,GAAOD,EAAIO,QAEtCP,EAAIQ,IAAIR,EAAIS,IAAIN,GAASF,GAG7BE,GAASC,GAAYH,EAAMA,GAAOK,CAEjD,CAaA,SAASrM,EAAQmE,EAAIyH,EAASD,EAAOc,EAAWnI,EAAIE,GAChD,IAIIkI,EAAWC,EAJXhQ,EAAawH,EAAG9E,YAChB4M,EAAK9H,EAAG9E,YAAYzC,MACpBgQ,EAAQzI,EAAG0I,SAASD,MAIrBH,GACCC,EAAY,cAAgBD,EAC5BE,EAAeF,EAAY,iBAE3BC,EAAY,aACZC,EAAe,eAGnB,IAAI7E,EAAcvB,EAAYpC,EAAGgE,OAAQwE,EAAcf,GACnDkB,EAAahF,EAAYgF,WACzB1E,EAAaN,EAAYM,WACzBC,EAAeP,EAAYO,aAG/B1L,EAAWuB,WACNC,UAAU,IAAMuO,EAAY,gBAAkBf,EAAQ,MACtDtN,SAEL,IAAI0O,EAAY,OAASpQ,EAAWqQ,KAAO,OAASrB,EAIpD,GAAIC,EAAQqB,SAA8B,IAApBrB,EAAQ9R,QAA9B,CAOA,IAAIoT,EAAW,CAACnT,EAAG,CAAC,EAAGI,EAAG,CAAC,GACvBS,GAAagR,EAAQhR,WAAa,EAMlCuS,EAAWxQ,EAAWuB,WAAWkP,OAAO,KACvCC,QAAQX,GAAW,GACnB3N,KAAK,aAAcuO,OAAO3B,IAC1B4B,MAAM,UAAW3B,EAAQ5Q,SAG1BwS,EAAeL,EAASC,OAAO,KAC9BC,QAAQ,qBAAqB,GAE9BI,EAAmBb,EAAMhB,EAAQrQ,UAAY,iBAAmB,sBAChEmS,EAAa9B,EAAQzP,eAAiByQ,EAAMe,gBAAkBF,EAe9DG,EAAoBJ,EAAaJ,OAAO,KACvCG,MAAM,iBAAkBG,EAAa,MAAQ,MAC7CpF,KAAKiD,EAAW,WAChBjE,GAAG,SAAS,WACTnD,EAAG0J,WAAY,EACf1J,EAAG2J,KAAK,yBAA0BC,EAAc9C,EAAG+C,OACvD,IAEDpC,EAAQ3P,WACP2R,EACCtG,GAAG,aAAa,WACb,IAAI2G,EAAerC,EAAQ1P,WACvBgS,EAAYD,EAAapT,KACzBsT,EAAOC,KAAKC,wBACZC,EAAUnK,EAAGkK,wBAEjBhD,EAAGkD,UAAU,CACTC,GAAIL,EAAKM,KAAOH,EAAQG,KACxBC,GAAIP,EAAKQ,MAAQL,EAAQG,KACzBtU,GAAIgU,EAAKS,IAAMT,EAAKU,QAAU,EAAIP,EAAQM,IAC1CjU,KAAMiR,EAAQ3P,UACdwN,MAAOwE,EAAa9S,QACpBsN,YAAawF,EAAa7S,YAC1B0T,WAAYZ,EAAU1E,OACtBuF,SAAUb,EAAUxR,KACpBsS,UAAWd,EAAUzE,OACtB,CACCwF,UAAWtS,EAAWuS,YAAYC,OAClCC,eAAgBzS,EAAW0S,OAAOF,OAClChL,GAAIA,GAEZ,IACCmD,GAAG,YAAY,WACZ+D,EAAGiE,YAAY3S,EAAWuS,YAAYC,OAC1C,IAGJ,IAAI7T,EAAcsQ,EAAQtQ,YACtBD,EAAYuQ,EAAQvQ,UACpBkU,EAAajU,EAAcD,EAE3BmU,EAAY5B,EAAkBR,OAAO,QACpCrO,KAAK,QAAS,MACdwO,MAAM,eAAgBjS,EAAc,MACpCgN,KAAKC,EAAMkH,OAAQ7D,EAAQxQ,aAC3BkN,KAAKC,EAAMmH,KAAM9D,EAAQzQ,SAE1BwU,EAAoB/D,EAAQ9Q,OAAS8Q,EAAQ7Q,OAE7C6U,EAAcjT,EAAWkT,UACxB1R,UAAU,IAAM4O,GAChB+C,KAAKH,EAAoB,CAAC,GAAK,IAEpCC,EAAYG,QAAQ3C,OAAO,YACtBC,QAAQ,WAAW,GACnBtO,KAAK,KAAMgO,GACbK,OAAO,QACVwC,EAAYI,OAAO3R,SAEnB,IAAIxD,EAAO+Q,EAAQ/Q,KAEfF,EAAOgC,EAAWsT,MAClBhX,EAAIiX,eAAetE,EAAQjR,KAAMgC,EAAWsT,OAC5CrE,EAAQjR,KAERwV,EAAUvC,EAAkBR,OAAO,QAClCC,QAAQ,mBAAmB,GAC3B1S,KAAKA,GA2ePiS,EAAMe,eACLwC,EAAQ7H,KAAKgD,EAAa8E,aAAc,CAACC,SAAUzC,EAAmBzJ,GAAIA,IACrEmE,KAAKgI,GACLhJ,GAAG,QAAQ,SAASiJ,GACjB3E,EAAQjR,KAAO4V,EAEfnC,KAAK9F,KAAKgI,GAEVlI,EAAW,OAAQmI,GAEhBjM,GAAMA,EAAGtH,WACR8P,EAAWxI,EAAGkM,MAAQ,cAAc,GAErChM,GAAMA,EAAGxH,WACR8P,EAAWtI,EAAGgM,MAAQ,cAAc,GAGxCvP,EAASqH,KAAK,eAAgBnE,EAAIkE,IACtC,IACD8H,EAAQ7H,KAAKgI,EArmBpB,MAFIrF,EAAG9M,UAAU,IAAM4O,GAAW1O,SAyBlC,SAAS0P,EAAc0C,GACnB,IAAIC,EAAY,CACZ/E,MAAOA,EACP7C,WAAY8C,EAAQqB,OACpB0D,eAAgB/E,EAChBoC,MAAOyC,GAKX,OAHGhE,IACCiE,EAAUjE,UAAYA,GAEnBiE,CACX,CAuEA,SAASJ,EAAWM,GAUhB,OATAA,EAAEtI,KAAK8C,EAAQvQ,KAAMA,GACpBkE,KAAK,CACF,cAAe,CACX0P,KAAM,QACNE,MAAO,OACT/C,EAAQ3Q,QAAU,WAGxBqQ,EAAauF,gBAAgBD,EAAGzM,EAAI2M,GAC7BF,CACX,CAEA,SAASE,IAEL,IAAIC,EAAUZ,EAAQhS,UAAU,KACV,IAAnB4S,EAAQrU,QAAgBqU,EAAQpW,SAAWwV,EAAQxV,QAClCiT,EAAkBoD,OAAO,IAAK,gBAAgBjS,KAAK,CAC/D,mBAAoBgS,EAAQhS,KAAK,cACjC,mBAAoBgS,EAAQhS,KAAK,gBAEpCwO,MAAM,CAAC0D,OAAQ,YAEN9B,OAAO+B,YAAY1B,EAAUL,QAG3C,IAAIgC,EAAevD,EAAkBnN,OAAO,+BACxC2Q,GAAcD,EAAaE,QAC3BC,EAAYlG,EAAQ+C,MACfiD,EAAaD,EAAehB,GAAShB,QAC1CoC,EAAYD,EAAUxW,MACtB0W,EAAaF,EAAUvW,OACvB0W,EAAW7F,EAAQ9Q,OAASyW,EAC5BG,EAAY9F,EAAQ7Q,QAAUyW,EAC9BG,EAAavL,KAAKwL,MAAMH,EAAW,EAAIlC,GACvCsC,EAAczL,KAAKwL,MAAMF,EAAY,EAAInC,GAE7C,SAASuC,EAAcC,EAAGC,GAMtB,MALc,SAAXA,IACeA,EAAXD,EAAI,EAAI,EAAY,OACfA,EAAI,EAAI,EAAY,QACd,UAEX,CACHE,OAAQ,EACRC,OAAQ,EACRzD,KAAM,GACNI,QAAS,GACTF,OAAQ,GACRC,IAAK,IACPoD,EACN,CAKA,IAHA,IAAI5R,GAAwB,EACxB+R,EAAU,CAAC,IAAK,KAEZnU,EAAI,EAAGA,EAAImU,EAAQlU,OAAQD,IAAK,CACpC,IAaIoU,EACAC,EACAC,EACAC,EACAC,GAjBAtT,GAAWiT,EAAQnU,GACnBsM,GAAQsB,EAAQ1M,GAAW,QAAUA,GACrCuT,GAAU7G,EAAQ,IAAM1M,GAAW,OACnC7E,GAAK,CAACN,EAAGuK,EAAInK,EAAGqK,GAAItF,IACpBwT,IAAY9X,GAA0B,MAAbsE,GAAmB,GAAK,KAAOkH,KAAKuM,GAAK,IAElEC,GAAmBjB,EAAavL,KAAKyM,IAAIH,IACzCI,GAAoBjB,EAAczL,KAAK2M,IAAIL,IAE3CM,GAAU5M,KAAK6M,IAAIL,IAAoBxM,KAAK6M,IAAIH,IAChDd,GAASpG,EAAQ1M,GAAW,UAC5BgU,GAAetH,EAAQ1M,GAAW,UAAyB,MAAbA,GAAmB,GAAK,GACtEiU,GAAQjG,EAAShO,IAMjBkU,GAAYhX,EAAKsI,WAAW4F,IAOhC,GAAGjQ,IAAqB,WAAd+Y,GAAyB,CAE/B,IAAI7S,GAAclG,GAAGmG,WAAWoL,EAAQ1M,MACrCqB,GAAc,GAAKA,GAAc,KAC7BkS,KAAYnI,KACX/J,GAAclG,GAAGmG,WAAWoL,EAAQ,IAAM1M,MACzB,GAAKqB,GAAc,KAChCH,GAAwB,GAG5BA,GAAwB,GAGhCgS,EAAS/X,GAAGiD,QAAUjD,GAAGmS,IAAIZ,EAAQ1M,KACrCqT,EAAoB,EACxB,KAAO,CACH,IAAIc,GAAkC,WAAdD,GACR,MAAblU,IACCoT,EAAgB1G,EAAQ1M,IACxBkT,EAASiB,GACLhZ,GAAGiD,QAAUjD,GAAGiS,QAAUgG,EAC1BF,EAASnG,EAAG1O,EAAI0O,EAAGzO,EAAI8U,IAE3BA,EAAgB,EAAI1G,EAAQ1M,IAC5BkT,EAASiB,GACLhZ,GAAGiD,QAAUjD,GAAGiS,QAAUgG,EAC1BF,EAASnG,EAAGrO,EAAIqO,EAAGpO,EAAIyU,GAE/BC,EAAoB3G,EAAQrQ,UAAY,GAAM+W,CAClD,CAIA,GAAG1G,EAAQrQ,UAAW,CAClB4X,GAAMG,KAAOlB,EAEb,IAAImB,GAAc3H,EAAQ,IAAM1M,IAMhC,GAHAsT,GAAYI,GAAmBd,EAAc,GAAKlG,EAAQrR,SACtDuY,GAAoBhB,EAAc,GAAKlG,EAAQnR,SAEhDgY,KAAYnI,GAAO,CAKlB,IAAIkJ,GAAcpX,EAAKsI,WAAW+N,IACf,WAAhBe,IACiB,MAAbtU,KACCqU,GAAc,EAAIA,IAEtBJ,GAAMM,KAAOpZ,GAAGiD,QAAUjD,GAAGiS,QAAUiH,IACjB,UAAhBC,GACU,MAAbtU,IACCqU,GAAc,EAAIA,GAClBJ,GAAMM,KAAOxH,EAAGrO,EAAIqO,EAAGpO,EAAI0V,IAE3BJ,GAAMM,KAAOxH,EAAG1O,EAAI0O,EAAGzO,EAAI+V,GAI/BJ,GAAMM,KAAOpZ,GAAGiD,QAAUjD,GAAGmS,IAAI+G,IAIrClB,EAAeG,EACnB,MACIW,GAAMM,KAAOrB,EAASmB,GAEtBlB,EAAeG,GAAYe,GAG/BJ,GAAMxY,KAAOwY,GAAMM,KAAOjB,GAI1B,IAAIkB,GAAQ/W,EAAyB,MAAbuC,GAAoB,QAAU,UAItD,GAHa,UAAVoL,KACC6I,GAAMG,KAAOra,EAAI0a,UAAUR,GAAMG,KAAM,EAAGI,GAAQ,IAEvC,UAAZjB,GAAqB,CACpB,IAAImB,IAAaxN,KAAK9C,IAAI6P,GAAMM,KAAO,EAAGN,GAAMxY,MAC5CkZ,GAAazN,KAAK/C,IAAI8P,GAAMM,KAAO,EAAGN,GAAMxY,MAAQ+Y,GACrDE,GAAY,GACXT,GAAMM,MAAQG,GACdT,GAAMxY,MAAQiZ,IACRC,GAAa,IACnBV,GAAMM,MAAQI,GACdV,GAAMxY,MAAQkZ,GAEtB,CAEAV,GAAMM,MAAQP,GACdC,GAAMG,MAAQJ,EAClB,MAIIb,EADAG,GAAYQ,GAAUlB,EAAcS,EAAmBP,IAEvDmB,GAAMxY,KAAOyX,EAASI,GAG1BW,GAAMxY,MAAQuY,GACdV,IAAaU,GACbb,GAAgBa,GAGhBtH,EAAQ,IAAM1M,GAAW,WAAc8T,GAAU,EAAKX,EACtDzG,EAAQ,IAAM1M,GAAW,YAAe8T,GAAU,EAAKX,EAGvDzG,EAAQ,IAAM1M,GAAW,QAAU8T,GACnCpH,EAAQ,IAAM1M,GAAW,SAAWsT,EACxC,CAEA,GAAGpS,EACCwN,EAAkBvP,aADtB,CAKA,IAAIyV,GAAS,EACTC,GAAS,EASb,GAPqB,SAAlBnI,EAAQ3Q,QACP6Y,IAAUrC,EAAWF,IAAgC,WAAlB3F,EAAQ3Q,MAAqB,GAAM,IAEpD,QAAnB2Q,EAAQ1Q,SACP6Y,IAAUrC,EAAYF,IAAkC,WAAnB5F,EAAQ1Q,OAAsB,GAAM,IAG1EkW,EACCD,EAAa1Q,OAAO,OAAO1B,KAAK,CAC5BhF,EAAGwV,EAAauE,GAAS,EACzB3Z,EAAGoV,EAAawE,KAEnBzL,KAAK8C,EAAQ4I,WAAYrE,EAAoB5C,EAAY,KAAM5I,OAC7D,CACH,IAAI8P,GAAQ1E,EAAawE,GAASzC,EAAU1C,IACxCsF,GAAQ3E,EAAauE,GAASxC,EAAU7C,KAE5C0B,EAAQ7H,KAAKgD,EAAa6I,aAAcD,GAAOD,IAC1C3L,KAAK8C,EAAQ4I,WAAYrE,EAAoB5C,EAAY,KAAM5I,EACxE,CAEAyL,EAAYnP,OAAO,QAAQ6H,KAAK8C,EAAQgJ,QAAS7E,EAAYA,EACzDkC,EAAUC,GAEdlC,EAAUlH,KAAK8C,EAAQgJ,QAAS9Y,EAAc,EAAGA,EAAc,EAC3DqW,EAAarW,EAAauW,EAAcvW,GAE5CsS,EAAkBtF,KAAK8C,EAAQiJ,aAC3BjO,KAAKwL,MAAM1E,EAASnT,EAAEY,KAAOgX,EAAa,GAC1CvL,KAAKwL,MAAM1E,EAAS/S,EAAEQ,KAAOkX,EAAc,IAQ/CrE,EAAazO,KAAK,CAACuV,UAAW,UAAY1Z,EAAY,IAClCsS,EAASnT,EAAEY,KAAO,IAAMuS,EAAS/S,EAAEQ,KAAO,MAQ9D,IAuJQ4Z,GAvJJC,GAAY,SAASC,EAAIC,GACzBvH,EACKhP,UAAU,uBACVE,SAEL,IAAIsW,EAAQzH,EAASnT,EAAEuZ,KACnBsB,EAAQ1H,EAAS/S,EAAEmZ,KACnBuB,EAAQ3H,EAASnT,EAAE0Z,KAAOgB,EAC1BK,EAAQ5H,EAAS/S,EAAEsZ,KAAOiB,EAC1BK,EAAQ7H,EAASnT,EAAEY,KAAO8Z,EAC1BO,EAAQ9H,EAAS/S,EAAEQ,KAAO+Z,EAI1BJ,EAAYrb,EAAIgc,iBAAiBra,EAAWma,EAAOC,GACnDE,EAAiBjc,EAAIkc,iBAAiBb,GACtCc,EAAkBnc,EAAIoc,kBAAkBf,GAGxCxZ,GAAS0U,EAAUzQ,KAAK,SACxBhE,GAAUyU,EAAUzQ,KAAK,UACzBuW,EAAQP,EAAQ,GAAMja,EACtBya,EAASD,EAAQxa,EACjB0a,EAAOR,EAAQ,GAAMja,EACrB0a,EAAUD,EAAOza,EACjB2a,EAAQ,CACR,CAACJ,EAAOE,EAAMF,EAAOG,GACrB,CAACH,EAAOG,EAASF,EAAQE,GACzB,CAACF,EAAQE,EAASF,EAAQC,GAC1B,CAACD,EAAQC,EAAMF,EAAOE,IACxBG,IAAIP,GAMN,IAAGM,EAAME,QAAO,SAASC,EAAG9b,GACxB,OAAO8b,IACD5c,EAAI6c,kBAAkBnB,EAAOC,EAAOD,EAAQ,IAAKC,EAAQ,IACnD7a,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACpC,IAAG,GAJH,CASA2b,EAAMrR,SAAQ,SAAStK,GACnB,IAAIgc,EAAI9c,EAAI6c,kBAAkBjB,EAAOC,EAAOH,EAAOC,EACvC7a,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC7Bgc,IACClB,EAAQkB,EAAEhc,EACV+a,EAAQiB,EAAE5b,EAElB,IAEA,IAAI6b,EAAcpK,EAAQ9P,WACtBma,EAAarK,EAAQpQ,WACrB0a,EAAYtK,EAAQjQ,UAEpBwa,EAAahJ,EAASC,OAAO,KAC5BG,MAAM,CAACvS,QAASuN,EAAMvN,QAAQib,KAC9B5I,QAAQ,sBAAsB,GAE/B+I,EAAQD,EAAW/I,OAAO,QACzBrO,KAAK,IAAK,IAAM8V,EAAQ,IAAMC,EAAQ,IAAMH,EAAQ,IAAMC,GAC1DrH,MAAM,eAAgByI,EAAc,MACpC1N,KAAKC,EAAMkH,OAAQlH,EAAMc,IAAI4M,IAMlC,GAJAxK,EAAc2K,EAAOF,EAAWtK,GAI7BgB,EAAMyJ,oBAAsBD,EAAMjH,OAAOmH,aAAe7J,EAAW,CAClE,IAAI8J,EAAiB5B,EACjB6B,EAAiB5B,EACrB,GAAGhJ,EAAQ7P,SAAU,CACjB,IAAIwX,EAAcnN,KAAKqQ,KAAKrQ,KAAK+D,IAAIwK,EAAQE,EAAO,GAAKzO,KAAK+D,IAAIyK,EAAQE,EAAO,IACjFyB,GAAkB3K,EAAQ7P,UAAY8Y,EAAQF,GAASpB,EACvDiD,GAAkB5K,EAAQ7P,UAAY+Y,EAAQF,GAASrB,CAC3D,CACA,IAYImD,EAAOC,EAZPC,EAAYT,EAAW/I,OAAO,QAC7BC,QAAQ,oBAAoB,GAC5BA,QAAQ,WAAW,GACnBA,QAAQ,eAAe,GACvBtO,KAAK,CACF0I,EAAG,sBAAwBoN,EAAQ0B,GAAkB,KAAOzB,EAAQ0B,GACpElC,UAAWnJ,EAAaoL,EAAgBC,KAE3CjJ,MAAM,eAAiByI,EAAc,EAAK,MAC1C1N,KAAKC,EAAMkH,OAAQ,iBACnBnH,KAAKC,EAAMmH,KAAM,iBAMtBlE,EAAYqL,KAAK,CACbC,QAASF,EAAUzH,OACnBhL,GAAIA,EACJ4S,OAAQ,WACJ,IAAIzW,EAAM8K,EAAQ4L,aAAapJ,GAE/B8I,EAAQpW,EAAIvG,EACZ4c,EAAQrW,EAAInG,EACTmK,GAAMA,EAAGtH,WACR8P,EAAWxI,EAAGkM,MAAQ,cAAc,GAErChM,GAAMA,EAAGxH,WACR8P,EAAWtI,EAAGgM,MAAQ,cAAc,EAE5C,EACAyG,OAAQ,SAASxC,EAAIC,GACjB,IAAIwC,EAAShC,EAAewB,EAAOC,GAC/BQ,EAAUD,EAAO,GAAKzC,EACtB2C,EAAUF,EAAO,GAAKxC,EAC1B9G,EAAkBtF,KAAK8C,EAAQiJ,aAAc8C,EAASC,GAEtDhP,EAAW,IACP0D,EAAcxH,EAAImQ,EAAI,IAAKxI,EAAIL,IACnCxD,EAAW,IACP0D,EAActH,EAAIkQ,EAAI,IAAKzI,EAAIL,IAKhCA,EAAQlM,QAAUkM,EAAQrM,MACzB6I,EAAW,KAAM0D,EAAcxH,EAAImQ,EAAI,KAAMxI,EAAIL,IAGlDA,EAAQjM,QAAUiM,EAAQpM,MACzB4I,EAAW,KAAM0D,EAActH,EAAIkQ,EAAI,KAAMzI,EAAIL,IAGrDuK,EAAWpX,KAAK,YAAaoM,EAAasJ,EAAIC,IAC9ClH,EAAazO,KAAK,CACduV,UAAW,UAAY1Z,EAAY,IAC5Buc,EAAU,IAAMC,EAAU,KAEzC,EACAC,OAAQ,WACJpW,EAASqH,KAAK,eAAgBnE,EAAIkE,KAClC,IAAIiP,EAAWC,SAASC,cAAc,uBACnCF,GAAUA,EAASG,OAAOH,EAASI,YAC1C,GAER,CArGA,CAsGJ,EAKA,GAHG9L,EAAQrQ,WAAWiZ,GAAU,EAAG,GAGhC/G,EAKCjC,EAAYqL,KAAK,CACbC,QAASlJ,EAAkBuB,OAC3BhL,GAAIA,EACJ4S,OAAQ,WACJxC,GAAoB/G,EAAazO,KAAK,YAC1C,EACAkY,OAAQ,SAASxC,EAAIC,GACjB,IAAIiD,EAAM,UACV,GAAG/L,EAAQrQ,UAIJqQ,EAAQlM,QAAUkM,EAAQrM,KACzB6I,EAAW,KAAM0D,EAAcxH,EAAImQ,EAAI,KAAMxI,EAAIL,IAEjDxD,EAAW,KAAMwD,EAAQvR,GAAKoa,GAG/B7I,EAAQjM,QAAUiM,EAAQpM,KACzB4I,EAAW,KAAM0D,EAActH,EAAIkQ,EAAI,KAAMzI,EAAGzO,EAAGoO,IAEnDxD,EAAW,KAAMwD,EAAQtR,GAAKoa,GAGlCF,GAAUC,EAAIC,OACX,IAAIjI,EAkCJ,OAjCH,IAAImL,EAASC,EACb,GAAGvT,EAGCsT,EAAU9L,EAAcxH,EAAImQ,EAAI,IAAKxI,EAAIL,OACtC,CACH,IAAIkM,EAAgBlM,EAAQmM,OAAS9L,EAAGzO,EACpC8X,EAAQ1J,EAAQ7R,GAAK6R,EAAQoM,QAAUpM,EAAQpR,QAAUyR,EAAGzO,EAAIsa,EAAgB,EAEpFF,EAAUpM,EAAYvQ,MAAMqa,EAAQb,EAAKxI,EAAGzO,EACxCsa,EAAe,EAAG,EAAGlM,EAAQrR,QACrC,CAEA,GAAGiK,EAGCqT,EAAU/L,EAActH,EAAIkQ,EAAI,IAAKzI,EAAIL,OACtC,CACH,IAAIqM,EAAiBrM,EAAQsM,OAASjM,EAAGpO,EACrC4X,EAAU7J,EAAQzR,GAAKyR,EAAQuM,QAAUvM,EAAQlR,QAAUuR,EAAGpO,EAAIoa,EAAiB,EAEvFJ,EAAUrM,EAAYvQ,MAAMwa,EAAUf,EAAKzI,EAAGpO,EAC1Coa,EAAgB,EAAG,EAAGrM,EAAQnR,QACtC,CACA2N,EAAW,IAAKwP,GAChBxP,EAAW,IAAKyP,GACZvT,GAAOE,IACPmT,EAAMnM,EAAY4M,UACd9T,EAAK,GAAMsT,EACXpT,EAAK,GAAMqT,EACXjM,EAAQrR,QAASqR,EAAQnR,SAGxB,CAEb+S,EAAazO,KAAK,CACduV,UAAWnJ,EAAasJ,EAAIC,GAAMH,KAGtChJ,EAAUqC,EAAmB+J,EACjC,EACAU,QAAS,SAASC,EAAG7H,GACd7E,EAAQzP,eACPgI,EAAG2J,KAAK,yBAA0BC,EAAc0C,GAExD,EACA4G,OAAQ,WACJ9L,EAAUqC,GACV3M,EAASqH,KAAK,eAAgBnE,EAAIkE,KAClC,IAAIiP,EAAWC,SAASC,cAAc,uBACnCF,GAAUA,EAASG,OAAOH,EAASI,YAC1C,GA3RR,CA8RJ,CAsBJ,CAltBAje,EAAOC,QAAU,CACb4I,KAQJ,SAAc6B,GACV,IAAIxH,EAAawH,EAAG9E,YAEpB1C,EAAWuB,WAAWC,UAAU,eAAeE,SAE/C,IAAI,IAAIL,EAAI,EAAGA,EAAIrB,EAAWoB,YAAYE,OAAQD,IAC3CrB,EAAWoB,YAAYC,GAAGlE,SACzB4R,EAAQvH,EAAInG,GAIpB,OAAOkN,EAAMqN,iBAAiBpU,EAClC,EAnBIuH,QAASA,EACT1L,QAASA,E,wBC7Bb,IAAIiL,EAAK/R,EAAQ,OAEbqP,EAAQrP,EAAQ,MAEhBwJ,EAAaxJ,EAAQ,OAErBD,EAAMC,EAAQ,OACdsf,EAAWvf,EAAIuf,SACfC,EAAYxf,EAAIwf,UAChBtN,EAAelS,EAAIkS,aAsBvB1R,EAAOC,QAAU,SAAuBgf,EAAKC,EAAM/M,GAC/C,IAUIgN,EAAOC,EAAKC,EAAUC,EAVtBC,EAAKN,EAAIvJ,OACT8J,EAAYvW,EAAWkJ,EAAQnQ,WAAa,GAC5Cyd,EAAiBxW,EAAWkJ,EAAQlQ,gBAAkB,GACtDyd,GAASvN,EAAQ9P,YAAc,IAAM8P,EAAQhQ,WAAa,GAC1Dwd,GAAcxN,EAAQ9P,YAAc,IAAM8P,EAAQ/P,gBAAkB,GACpEwd,EAAUV,EAAK3P,QAAQ,UAAY,EACnCsQ,EAAQX,EAAK3P,QAAQ,QAAU,EAC/BuQ,EAAUN,EAAUzW,QAAU2W,EAAQvN,EAAQ7P,SAC9Cyd,EAAeN,EAAe1W,QAAU4W,EAAaxN,EAAQ5P,cAIjE,GAAmB,SAAhBgd,EAAGS,SAAqB,CACvBb,EAAQ,CAAC7e,GAAI2e,EAAI3Z,KAAK,MAAO5E,GAAIue,EAAI3Z,KAAK,OAC1C8Z,EAAM,CAAC9e,GAAI2e,EAAI3Z,KAAK,MAAO5E,GAAIue,EAAI3Z,KAAK,OAExC,IAAI0V,EAAKmE,EAAM7e,EAAI8e,EAAI9e,EACnB2a,EAAKkE,EAAMze,EAAI0e,EAAI1e,EAIvB,GADA4e,GADAD,EAAW1S,KAAKsT,MAAMhF,EAAID,IACNrO,KAAKuM,GACtB4G,GAAWC,GACPD,EAAUC,EAAepT,KAAKqQ,KAAKhC,EAAKA,EAAKC,EAAKA,GAEjD,YADAiF,IAKR,GAAGJ,EAAS,CACR,GAAGA,EAAUA,EAAU9E,EAAKA,EAAKC,EAAKA,EAElC,YADAiF,IAGJ,IAAIC,EAAWL,EAAUnT,KAAKyM,IAAIiG,GAC9Be,EAAWN,EAAUnT,KAAK2M,IAAI+F,GAElCD,EAAI9e,GAAK6f,EACTf,EAAI1e,GAAK0f,EACTnB,EAAI3Z,KAAK,CAAC+a,GAAIjB,EAAI9e,EAAGggB,GAAIlB,EAAI1e,GACjC,CAEA,GAAGqf,EAAc,CACb,GAAGA,EAAeA,EAAe/E,EAAKA,EAAKC,EAAKA,EAE5C,YADAiF,IAGJ,IAAIK,EAAgBR,EAAepT,KAAKyM,IAAIiG,GACxCmB,EAAgBT,EAAepT,KAAK2M,IAAI+F,GAE5CF,EAAM7e,GAAKigB,EACXpB,EAAMze,GAAK8f,EACXvB,EAAI3Z,KAAK,CAAC2P,GAAIkK,EAAM7e,EAAGmgB,GAAItB,EAAMze,GACrC,CACJ,MAAO,GAAmB,SAAhB6e,EAAGS,SAAqB,CAC9B,IAAIU,EAAUnB,EAAGoB,iBAKbC,EAAY,GAEhB,GAAGF,EAAUZ,EAAUC,EAEnB,YADAG,IAKJ,IAAIW,EAAStB,EAAGuB,iBAAiB,GAC7BC,EAASxB,EAAGuB,iBAAiB,IAEjCzB,EAAW1S,KAAKsT,MAAMY,EAAOngB,EAAIqgB,EAAOrgB,EAAGmgB,EAAOvgB,EAAIygB,EAAOzgB,GAC7D6e,EAAQI,EAAGuB,iBAAiBnU,KAAK/C,IAAImW,EAAcW,IAEnDE,EAAY,OAASb,EAAe,MAEpC,IAAIiB,EAAOzB,EAAGuB,iBAAiBJ,GAC3BO,EAAO1B,EAAGuB,iBAAiBJ,EAAU,IAEzCpB,EAAS3S,KAAKsT,MAAMe,EAAKtgB,EAAIugB,EAAKvgB,EAAGsgB,EAAK1gB,EAAI2gB,EAAK3gB,GACnD8e,EAAMG,EAAGuB,iBAAiBnU,KAAK9C,IAAI,EAAG6W,EAAUZ,IAGhDc,GAAcF,GADGE,EAAYb,EAAeD,EAAUA,GAChB,MAAQY,EAAU,KAExDzB,EAAInL,MAAM,mBAAoB8M,EAClC,CAEA,SAASV,IAAajB,EAAInL,MAAM,mBAAoB,YAAc,CAElE,SAASoN,EAASC,EAAgB7E,EAAG8E,EAAKC,GAClCF,EAAerY,OAChBqY,EAAenY,WAAUoY,EAAM,GAElC5P,EAAGxK,OAAOuY,EAAG1C,YAAYlJ,OAAO,QAC3BrO,KAAK,CACFgc,MAAOrC,EAAI3Z,KAAK,SAChB0I,EAAGmT,EAAerY,KAClB+R,UACInJ,EAAa4K,EAAEhc,EAAGgc,EAAE5b,GACpBse,EAAgB,IAANoC,EAAYzU,KAAKuM,IAC3B6F,EAASsC,KAEhBvN,MAAM,CACHmC,KAAMnH,EAAMc,IAAIuC,EAAQpQ,YACxB,eAAgB,IAE5B,CAEG6d,GAASsB,EAASzB,EAAgBN,EAAOE,EAAUM,GACnDE,GAAOqB,EAAS1B,EAAWJ,EAAKE,EAAQI,EAC/C,C,wBC9IA,IAAI6B,EAAa9hB,EAAQ,OACrB+hB,EAAc/hB,EAAQ,OAE1BO,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,cAENuB,iBAAkBnI,EAAQ,OAC1BgiB,qBAAsBhiB,EAAQ,OAC9BqI,gBAAiBrI,EAAQ,MAARA,CAAoD,eAErEiiB,cAAejiB,EAAQ,OACvBoJ,KAAM0Y,EAAW1Y,KACjBoJ,QAASsP,EAAWtP,QACpB1L,QAASgb,EAAWhb,QAEpB2H,eAAgBsT,EAAYtT,eAC5BE,QAASoT,EAAYpT,QAErBuT,cAAeliB,EAAQ,O,sBCjB3BQ,EAAQ2hB,SAAW,CACf,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGJ3hB,EAAQuP,YAAc,OAEtBvP,EAAQ4hB,UAAY,OAEpB5hB,EAAQ6hB,WAAa,OAErB7hB,EAAQ8hB,WAAa,UAMrB9hB,EAAQ+hB,cAAgB,IAAoB,E,uBC3B5C,IAAIC,EAAYxiB,EAAQ,OACpBwQ,EAAYxQ,EAAQ,OACpByiB,EAAeziB,EAAAA,OAAAA,aAEfuQ,EAAQhQ,EAAOC,QAAU,CAAC,EAE1BkiB,EAAa1iB,EAAQ,OACzBuQ,EAAM4R,SAAWO,EAAWP,SAC5B,IAAIpS,EAAcQ,EAAMR,YAAc2S,EAAW3S,YACjDQ,EAAM6R,UAAYM,EAAWN,UAC7B,IAAIC,EAAa9R,EAAM8R,WAAaK,EAAWL,WA+G/C,SAASM,EAASC,GACd,GAAGpS,EAAUoS,IAAuB,kBAARA,EAAkB,OAAOA,EAErD,IAAIC,EAAUD,EAAIE,OAClB,GAA4B,QAAzBD,EAAQE,OAAO,EAAG,GAAc,OAAOH,EAE1C,IAAII,EAAQH,EAAQG,MAAM,0BAC1B,IAAIA,EAAO,OAAOJ,EAElB,IAAIK,EAAQD,EAAM,GAAGF,OAAOI,MAAM,eAC9BC,EAA6B,MAAtBN,EAAQ7W,OAAO,IAA+B,IAAjBiX,EAAMle,OAC9C,IAAIoe,GAAyB,IAAjBF,EAAMle,OAAc,OAAO6d,EAEvC,IAAI,IAAI9d,EAAI,EAAGA,EAAIme,EAAMle,OAAQD,IAAK,CAClC,IAAIme,EAAMne,GAAGC,OAAQ,OAAO6d,EAG5B,GAFAK,EAAMne,GAAKse,OAAOH,EAAMne,MAEnBme,EAAMne,IAAM,GAGb,OAAO8d,EAGX,GAAS,IAAN9d,EAGIme,EAAMne,GAAK,IAAGme,EAAMne,GAAK,QACzB,GAAGme,EAAMne,IAAM,EAGlB,OAAO8d,CAEf,CAEA,IAAIS,EAASnW,KAAKwL,MAAiB,IAAXuK,EAAM,IAAY,KACtC/V,KAAKwL,MAAiB,IAAXuK,EAAM,IAAY,KAC7B/V,KAAKwL,MAAiB,IAAXuK,EAAM,IAErB,OAAGE,EAAa,QAAUE,EAAS,KAAOJ,EAAM,GAAK,IAC9C,OAASI,EAAS,GAC7B,CAjJA9S,EAAM+S,QAAU,SAASC,GACrB,IAAIC,EAAID,EAAGE,QACX,MAAO,OAASvW,KAAKwL,MAAM8K,EAAEE,GAAK,KAC9BxW,KAAKwL,MAAM8K,EAAEG,GAAK,KAAOzW,KAAKwL,MAAM8K,EAAEI,GAAK,GACnD,EAEArT,EAAMJ,IAAM,SAAS0T,GAAQ,OAAOtT,EAAM+S,QAAQd,EAAUqB,GAAQ,EAEpEtT,EAAMzO,QAAU,SAAS+hB,GAAQ,OAAOA,EAAOrB,EAAUqB,GAAMC,WAAa,CAAG,EAE/EvT,EAAMwT,WAAa,SAASF,EAAMG,GAC9B,IAAIR,EAAIhB,EAAUqB,GAAMJ,QACxB,MAAO,QAAUvW,KAAKwL,MAAM8K,EAAEE,GAAK,KAC/BxW,KAAKwL,MAAM8K,EAAEG,GAAK,KAAOzW,KAAKwL,MAAM8K,EAAEI,GAAK,KAAOI,EAAK,GAC/D,EAKAzT,EAAM0T,QAAU,SAASC,EAAOC,GAC5B,IAAIC,EAAK5B,EAAU0B,GAAOT,QAC1B,GAAY,IAATW,EAAGzH,EAAS,OAAO6F,EAAU0B,GAAOG,cAEvC,IAAIC,EAAK9B,EAAU2B,GAAQ9B,GAAYoB,QACnCc,EAAkB,IAATD,EAAG3H,EAAU2H,EAAK,CAC3BZ,EAAG,KAAO,EAAIY,EAAG3H,GAAK2H,EAAGZ,EAAIY,EAAG3H,EAChCgH,EAAG,KAAO,EAAIW,EAAG3H,GAAK2H,EAAGX,EAAIW,EAAG3H,EAChCiH,EAAG,KAAO,EAAIU,EAAG3H,GAAK2H,EAAGV,EAAIU,EAAG3H,GAEhC6H,EAAS,CACTd,EAAGa,EAAOb,GAAK,EAAIU,EAAGzH,GAAKyH,EAAGV,EAAIU,EAAGzH,EACrCgH,EAAGY,EAAOZ,GAAK,EAAIS,EAAGzH,GAAKyH,EAAGT,EAAIS,EAAGzH,EACrCiH,EAAGW,EAAOX,GAAK,EAAIQ,EAAGzH,GAAKyH,EAAGR,EAAIQ,EAAGzH,GAEzC,OAAO6F,EAAUgC,GAAQH,aAC7B,EAUA9T,EAAMF,SAAW,SAASwT,EAAMY,EAAaC,GACzC,IAAInB,EAAKf,EAAUqB,GAQnB,OANqB,IAAlBN,EAAGO,aAAkBP,EAAKf,EAAUjS,EAAM0T,QAAQJ,EAAMxB,MAE5CkB,EAAGoB,SACbF,EAAclB,EAAGqB,QAAQH,GAAepC,EACxCqC,EAAanB,EAAGsB,OAAOH,GAAc3U,GAE1BtF,UACpB,EAEA8F,EAAMgG,OAAS,SAASmB,EAAG8L,GACvB,IAAID,EAAKf,EAAUgB,GACnB9L,EAAErD,MAAM,CAACkC,OAAQhG,EAAM+S,QAAQC,GAAK,iBAAkBA,EAAGO,YAC7D,EAEAvT,EAAMiG,KAAO,SAASkB,EAAG8L,GACrB,IAAID,EAAKf,EAAUgB,GACnB9L,EAAErD,MAAM,CACJmC,KAAMjG,EAAM+S,QAAQC,GACpB,eAAgBA,EAAGO,YAE3B,EAIAvT,EAAMuU,MAAQ,SAAS/O,GACnB,GAAIA,GAAkC,kBAAdA,EAAxB,CAEA,IACIjR,EAAGqC,EAAG4d,EAAKnC,EADXha,EAAOC,OAAOD,KAAKmN,GAGvB,IAAIjR,EAAI,EAAGA,EAAI8D,EAAK7D,OAAQD,IAIxB,GAFA8d,EAAM7M,EADNgP,EAAMnc,EAAK9D,IAGuB,UAA/BigB,EAAIhC,OAAOgC,EAAIhgB,OAAS,GAGvB,GAAGigB,MAAMC,QAAQrC,GACb,IAAIzb,EAAI,EAAGA,EAAIyb,EAAI7d,OAAQoC,IAAKyb,EAAIzb,GAAKwb,EAASC,EAAIzb,SACnD4O,EAAUgP,GAAOpC,EAASC,QAC9B,GAAmC,eAAhCmC,EAAIhC,OAAOgC,EAAIhgB,OAAS,KAAwBigB,MAAMC,QAAQrC,GAGpE,IAAIzb,EAAI,EAAGA,EAAIyb,EAAI7d,OAAQoC,IACpB6d,MAAMC,QAAQrC,EAAIzb,MAAKyb,EAAIzb,GAAG,GAAKwb,EAASC,EAAIzb,GAAG,UAEvD,GAAG6d,MAAMC,QAAQrC,GAAM,CAG1B,IAAIsC,EAAMtC,EAAI,GACd,IAAIoC,MAAMC,QAAQC,IAAQA,GAAsB,kBAARA,EACpC,IAAI/d,EAAI,EAAGA,EAAIyb,EAAI7d,OAAQoC,IAAKoJ,EAAMuU,MAAMlC,EAAIzb,GAExD,MAAUyb,GAAsB,kBAARA,IAAqBH,EAAaG,IAAMrS,EAAMuU,MAAMlC,EA5B1B,CA8B1D,C,wBCvHA,IAAIuC,EAAYnlB,EAAQ,OACpByJ,EAAYzJ,EAAQ,OACpBkE,EAAalE,EAAAA,OAAAA,WACbU,EAAcV,EAAAA,OAAAA,YAGlBO,EAAOC,QAAUE,EAAY,CACzB0kB,YAAa,CACTtkB,QAAS,aACTuJ,OAAQ,CAAC,IAAK,KACdvE,KAAM,IACN/E,YAAa,yCAEjBskB,cAAe,CACXvkB,QAAS,aACTuJ,OAAQ,CAAC,WAAY,UACrBvE,KAAM,SACN/E,YAAa,CACT,gDACA,qDACA,qDACA,qCACFC,KAAK,MAEXskB,UAAW,CACPxkB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACN/E,YAAa,CACT,sCACA,oEACFC,KAAK,MAEXukB,QAAS,CACLzkB,QAAS,aACTuJ,OAAQ,CAAC,WAAY,UACrBvE,KAAM,WACN/E,YAAa,CACT,6CACA,sDACA,oDACA,+BACFC,KAAK,MAEXwkB,IAAK,CACD1kB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACN/E,YAAa,CACT,mCACA,kDACA,yDACA,yBACFC,KAAK,MAEXH,EAAG,CACCC,QAAS,SACTC,YAAa,CACT,kFACA,yEACA,iCACA,4EACA,iCACA,uDACA,kDACFC,KAAK,MAEXqF,KAAM,CACFvF,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CAAC,YAAa,SACtBJ,SAAU,cACVlJ,YAAa,CACT,oCACA,oDACA,0DACFC,KAAK,MAEXK,QAAS,CACLP,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,SAAU,SAC3BtJ,YAAa,CACT,oDACA,6DACA,+BACA,mDACA,uCACFC,KAAK,MAEXykB,KAAM,CACF3kB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACN/E,YAAa,6DAEjBE,EAAG,CACCH,QAAS,SACTC,YAAa,CACT,kFACA,wEACA,kCACA,4EACA,+BACA,uDACA,kDACFC,KAAK,MAEXsF,KAAM,CACFxF,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CAAC,YAAa,SACtBJ,SAAU,cACVlJ,YAAa,CACT,oCACA,qDACA,2DACFC,KAAK,MAEXO,QAAS,CACLT,QAAS,aACTuJ,OAAQ,CAAC,MAAO,SAAU,UAC1BtJ,YAAa,CACT,iDACA,4DACA,gCACA,qDACA,uCACFC,KAAK,MAEX0kB,KAAM,CACF5kB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACN/E,YAAa,6DAGjB4kB,aAAcR,EAAUS,UACxBC,aAAcV,EAAUW,UAGxB5jB,YAAaijB,EAAUS,UACvBxjB,YAAa,CACTtB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACN/E,YAAa,CACT,kEACFC,KAAK,MAEXiB,QAAS,CACLnB,QAAS,QACTgF,KAAM,gBACN/E,YAAa,kCAGjBglB,SAAUZ,EAAUa,MAAMD,SAC1BE,OAAQd,EAAUc,OAClBC,MAAOf,EAAUe,MACjBC,MAAOhB,EAAUgB,MACjBC,SAAUjB,EAAUiB,SACpBC,SAAUlB,EAAUkB,SACpBC,MAAOpiB,EAAW,CAAC,EAAGihB,EAAUmB,MAAO,CAACxgB,KAAM,KAC9CygB,kBAAmBriB,EAAW,CAAC,EAAGihB,EAAUoB,kBAAmB,CAC3DxlB,YAAa,CACT,2GACA,kEACA,kDACFC,KAAK,OAKXwlB,kBAAmB,CACf1lB,QAAS,aACTuJ,OAAQ,CACJ,UAAW,SACX,cAAe,aACf,eAAgB,cAChB,gBAAiB,eACjB,iBAAkB,iBAEtBvE,KAAM,UACN/E,YAAa,CACT,gEACA,6DACA,6CACFC,KAAK,MAGXylB,QAAStB,EAAUsB,QACnBC,UAAWvB,EAAUuB,UACrBC,UAAWxB,EAAUwB,UACrBC,cAAezB,EAAUyB,cACzBC,eAAgB1B,EAAU0B,eAC1BC,WAAY3B,EAAU2B,WACtBC,SAAUtd,EAAU,CAChB1I,YAAa,yCAEjBimB,UAAW7B,EAAU6B,UACrBC,WAAY9B,EAAU8B,WACtBC,gBAAiB/B,EAAU+B,gBAC3BC,WAAYhC,EAAUgC,WACtBC,eAAgBjC,EAAUiC,eAC1BC,WAAYlC,EAAUkC,WACtBC,eAAgBnC,EAAUmC,eAC1BC,kBAAmBpC,EAAUoC,kBAC7BC,eAAgBrC,EAAUqC,eAC1BC,YAAatC,EAAUsC,YACvBC,aAAcvC,EAAUuC,aACxBC,MAAO,CACHlmB,KAAM,CACFX,QAAS,SACTC,YAAa,CACT,mCACA,8DACA,+DACA,sCACFC,KAAK,MAEXW,KAAM8H,EAAU,CACZ1I,YAAa,CACT,oCACA,4CACA,gDACFC,KAAK,OAEX4mB,KAAM,CACF9mB,QAAS,aACTuJ,OAAQ,CAAC,QAAS,MAAO,UACzBtJ,YAAa,CACT,+CACA,iCACA,mDACA,iDACA,gDACA,gDACFC,KAAK,OAIf8J,YAAa,CACT6c,MAAO,CACH7mB,QAAS,SACTC,YAAa,CACT,mDACA,+DACA,yCACFC,KAAK,MAEX6mB,UAAWpe,EAAU,CACjB1I,YAAa,qDAEjB+mB,UAAW,CACPhnB,QAAS,aACTuJ,OAAQ,CAAC,QAAS,MAAO,UACzBvE,KAAM,MACN/E,YAAa,sDAGtB,YAAa,Y,oBCnQhBR,EAAOC,QAAU,CACbunB,GAAI,CACAC,SAAU,WACVC,KAAM,OACNC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,eAAgB,iBAChBC,QAAS,UACTC,UAAW,YACXC,MAAO,QACPC,cAAe,kB,wBCbvB,IAAI5oB,EAAMC,EAAQ,OACd4oB,EAAW5oB,EAAQ,OAEnB6oB,EAA0B7oB,EAAQ,OAClC8oB,EAAyB9oB,EAAQ,MACjC+oB,EAA0B/oB,EAAQ,OAClCgpB,EAA6BhpB,EAAQ,OAErCsF,EAAatF,EAAQ,OAEzBO,EAAOC,QAAU,SAA0ByoB,EAAaC,EAAcja,GAClE,IAAIka,EAAcP,EAASQ,aAAaF,EAAc,YAClDG,EAAaJ,EAAYjB,UAAY,CAAC,EAE1C,SAASpiB,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOyjB,EAAYF,EAAa7jB,EAAYO,EAAMC,EACjE,CAEA,IAAIwjB,EAASra,EAAOqa,QAAU,CAAC5kB,EAAG,EAAGkf,EAAG,EAAGvf,EAAG,EAAGqf,EAAG,GAChDpf,EAAI2K,EAAOrN,MAAQ0nB,EAAOjlB,EAAIilB,EAAO5F,EACrC/e,EAAIsK,EAAOpN,OAASynB,EAAO5kB,EAAI4kB,EAAO1F,EAGtC2F,EAA6B,MADf3jB,EAAO,eAGrByf,EAAgBzf,EAAO,iBAC3BA,EAAO,YAAgC,aAAlByf,EACjB,IAAMkE,EAAajlB,EAAIK,GACvB,IAGJ,IAAI4gB,EAAU3f,EAAO,WACrBA,EAAO,MAAoB,aAAZ2f,EACX,EACAgE,EAAa5kB,EAAIL,GAGrB,IAMIklB,EAAUC,EAAUC,EAHpBC,EAAoB,UAHb/jB,EAAO,QAIdgkB,EAAoB,UAHbhkB,EAAO,QAMdikB,EAAiB,OAElBN,GACCG,EAAiB,SACjBG,EAAiBD,EAAW,OAAS,QACrCJ,EAAWI,EAAW,KAAO,EAC7BH,EAAW,KAEXC,EAAiBC,EAAW,SAAW,MACvCE,EAAiB,SACjBL,EAAW,GACXC,EAAWE,EAAW,KAAO,GAGjC5pB,EAAI6F,OAAOyjB,EAAYF,EAAa,CAChCtoB,EAAG,CACCC,QAAS,SACTqJ,IAAKyf,GAAY,EAAI,EACrBxf,IAAKwf,EAAW,EAAI,EACpB9jB,KAAM0jB,IAEX,KAEHzpB,EAAI6F,OAAOyjB,EAAYF,EAAa,CAChCloB,EAAG,CACCH,QAAS,SACTqJ,IAAKwf,GAAY,EAAI,EACrBvf,IAAKuf,EAAW,EAAI,EACpB7jB,KAAM2jB,IAEX,KAEH7jB,EAAO,UAAWikB,GAClBjkB,EAAO,QACPA,EAAO,UAAW8jB,GAClB9jB,EAAO,QACP7F,EAAIqG,UAAUijB,EAAYF,EAAa,CAAC,IAAK,MAE7CvjB,EAAO,gBACPA,EAAO,gBACPA,EAAO,eACPA,EAAO,eACPA,EAAO,WAEP,IAAI4gB,EAAoBzmB,EAAI6F,OAAOyjB,EAAYF,EAAa,CACxD3C,kBAAmB,CACf1lB,QAAS,aACTgF,KAAM,UACNuE,OAAQkf,EAAa,CACjB,UAAW,SACX,cAAe,aACf,iBAAkB,iBAClB,CACA,UAAW,SACX,eAAgB,cAChB,gBAAiB,kBAG1B,qBAEH3jB,EAAO,qBAA8D,IAAzC4gB,EAAkB1W,QAAQ,UAAmB,mBAAqB,iBAE9F+Y,EAAwBQ,EAAYF,EAAavjB,EAAQ,UAEzD,IAAIjE,EAAOsN,EAAOtN,KACdgE,EAAO,CACPmkB,kBAAkB,EAClBC,YAAY,EACZpoB,KAAMA,IAEkC,IAAzC6kB,EAAkB1W,QAAQ,YACzBnK,EAAK2J,QAAU,SAEnB0Z,EAA2BK,EAAYF,EAAavjB,EAAQ,SAAUD,GACtEojB,EAAwBM,EAAYF,EAAavjB,EAAQ,SAAUD,GACnEmjB,EAAuBO,EAAYF,EAAavjB,EAAQ,SAAUD,GAElEC,EAAO,aAAcqJ,EAAOU,WAAWqY,UAEvC,IAAIgC,EAAWb,EAAYtC,eAAiBsC,EAAYpC,SAAWplB,EAC/DsoB,EAAgBlqB,EAAImE,WAAW,CAAC,EAAG8lB,EAAU,CAC7CzZ,MAAO5O,EAAK4O,MACZ/M,KAAMzD,EAAImqB,QAAQF,EAASxmB,QAE/BzD,EAAI8P,WAAWjK,EAAQ,aAAcqkB,GACrCrkB,EAAO,aAAc2jB,EAAa,MAAQ,QAC9C,C,uBClIA,IAAIxX,EAAK/R,EAAQ,OACbwiB,EAAYxiB,EAAQ,OAEpBgS,EAAQhS,EAAQ,OAChB+H,EAAW/H,EAAQ,OACnBkD,EAAOlD,EAAQ,OACfsS,EAActS,EAAQ,OACtBD,EAAMC,EAAQ,OACdiS,EAAelS,EAAIkS,aACnB/N,EAAalE,EAAAA,OAAAA,WACbqS,EAAYrS,EAAQ,OACpBkS,EAAUlS,EAAQ,MAClBqP,EAAQrP,EAAQ,MAChBmqB,EAASnqB,EAAQ,OACjBoS,EAAepS,EAAQ,OACvBoqB,EAAYpqB,EAAAA,OAAAA,UAEZqqB,EAAqBrqB,EAAQ,OAC7BsqB,EAA6BtqB,EAAQ,OACrCuqB,EAAkBvqB,EAAQ,OAE1BwqB,EAAqBxqB,EAAQ,OAC7ByqB,EAAeD,EAAmBC,aAClCC,EAAUF,EAAmBE,QAC7BC,EAAUH,EAAmBG,QAE7B5C,EAAK/nB,EAAAA,OAAAA,GAi+BTO,EAAOC,QAAU,CACb4I,KAh+BJ,SAAc6B,GACV,IAEI2f,EAFa3f,EAAG9E,YAEOnB,WACtBC,UAAU,KAAO8iB,EAAGC,UACpBpR,KA+BT,SAA0B3L,GACtB,IAKItF,EAEAklB,EAEAC,EAEAC,EAXAtnB,EAAawH,EAAG9E,YAChB6kB,EAAW/f,EAAG+f,SACdC,EAAM,GAWV,SAASC,EAASvlB,GACd,OAAOzB,EAAWyB,EAAM,CAIpBwlB,WAAY,KAEZC,MAAO,CAAC7a,MAAO,KAAM3O,MAAO,KAAMypB,KAAM,MAKxCC,QAAS,CAAC5L,MAAO,KAAMC,IAAK,KAAMnc,KAAM,MAIxC+nB,YAAa,KAGbC,cAAe,KAEfC,QAAS,MAEjB,CAEA,SAASC,IACoB,oBAAfX,EAAMY,KACZZ,EAAMY,KAAK1gB,EAAI6f,EAAOnlB,IAEtBA,EAAK6lB,cAAgBX,EAAKe,aACtBxB,EAAUS,EAAKgB,YACfhB,EAAKgB,WACTlmB,EAAK8lB,QAAU,CAACZ,EAAKE,EAAM5gB,KAAM0gB,EAAKE,EAAM3gB,MAEpD,CAEA,IAAI,IAAItF,EAAI,EAAGA,EAAIkmB,EAASjmB,OAAQD,IAAK,CACrC,IAAIgnB,EAAKd,EAASlmB,GAElB,IADAgmB,EAAQgB,EAAG,GAAGhB,OACJiB,QAAV,CACA,IAAIC,EAAalB,EAAMiB,QAAQ/D,SAE/B,IAAqB,IAAlB8C,EAAMlqB,SAAoBorB,EAIzB,IAHA,IAAIC,EAAqBjH,MAAMC,QAAQ+G,GACnCE,EAASD,EAAqBD,EAAa,CAACA,GAExC7kB,EAAI,EAAGA,EAAI+kB,EAAOnnB,OAAQoC,IAAK,CAEnC,IAAIglB,GADJpB,EAAQmB,EAAO/kB,IACM4O,WACrB8U,EAAOsB,EAAWrB,EAAMqB,GAAYrB,IAEzBD,EAAKuB,aACZzmB,EAAOulB,EAASL,EAAK7C,WAChBlc,IAAM,KAAOgf,EAAMuB,KAAOJ,GAAsBE,EAAW,IAAMA,EAAW,IACjFxmB,EAAK2mB,YAAcxB,EAAMrY,MACzB9M,EAAK4mB,aAAeJ,EAAWA,EAAW,IAAM,IAAM,YACtDxmB,EAAKoR,MAAQ+T,EAAM/T,MACnB2U,IACAT,EAAI9c,KAAKxI,GAEjB,CArBuB,CAuB/B,CAEA,IAAI,IAAImD,KAAKrF,EAAW+oB,WAGpB,IAFA3B,EAAOpnB,EAAWqF,IAEVsjB,UAAW,CACf,IAAIK,EAAchpB,EAAW+oB,WAAW1jB,IAExCnD,EAAOulB,EAASL,EAAK7C,WAChBlc,IAAM,KAAOhD,EAClBnD,EAAK4mB,YAAczjB,EAAI,aACvBnD,EAAKoR,MAAQtT,EAAWsT,MAExBgU,EAAQ,CAAC5gB,IAAK,OAAQC,IAAK,QACL,YAAnBqiB,EAAY,KACX3B,EAAQ2B,EAAY,GACpB1B,EAAMY,KAAOb,EAAMiB,QAAQ/D,SAAS2D,MAGxCD,IACAT,EAAI9c,KAAKxI,EACb,CAGJ,OAAOslB,CACX,CApIcyB,CAAiBzhB,IAAK,SAAStF,GAAQ,OAAOA,EAAKmG,GAAK,IAElE8e,EAAU/T,QAAQ3C,OAAO,KACpBrO,KAAK,SAAS,SAASF,GAAQ,OAAOA,EAAKmG,GAAK,IAChDqI,QAAQ4T,EAAGC,UAAU,GAE1B4C,EAAU+B,MAAK,SAAShnB,GACpB,IAAIge,EAAI5R,EAAGxK,OAAO2N,MAElBnV,EAAI6sB,aAAajJ,EAAG,OAAQoE,EAAGE,MAC/BloB,EAAI6sB,aAAajJ,EAAG,IAAKoE,EAAGI,SAC5BpoB,EAAI6sB,aAAajJ,EAAG,IAAKoE,EAAGM,SAC5BtoB,EAAI6sB,aAAajJ,EAAG,IAAKoE,EAAGO,QAAQ,SAAS5Q,GAAKA,EAAEvD,QAAQ4T,EAAGW,OAAO,EAAO,IAC7E3oB,EAAI6sB,aAAajJ,EAAG,IAAKoE,EAAGQ,gBAAgB,SAAS7Q,GAAKA,EAAExD,OAAO,KAAKC,QAAQ4T,EAAGS,SAAS,EAAO,IACnGzoB,EAAI6sB,aAAajJ,EAAG,OAAQoE,EAAGU,WAE/B,IAAIoE,EAsHZ,SAAsBlJ,EAAGhe,EAAMsF,GAC3B,IAAIse,EAAkC,MAArB5jB,EAAKyf,YAClBI,EAAM7f,EAAK6f,IACXD,EAAU5f,EAAK4f,QACfD,EAAY3f,EAAK2f,UACjBD,EAAgB1f,EAAK0f,cACrBQ,EAAelgB,EAAKkgB,aACpBzjB,EAAcuD,EAAKvD,YACnBH,EAAU0D,EAAK1D,QACfZ,EAAUsE,EAAKtE,QACfE,EAAUoE,EAAKpE,QACfkkB,EAAO9f,EAAK8f,KACZC,EAAO/f,EAAK+f,KACZoH,EAAQnnB,EAAK9E,EACbksB,EAAQxD,EAAa5jB,EAAK1E,EAAI,EAAI0E,EAAK1E,EAEvC0oB,EAAyB,UAAdhkB,EAAKW,KAChBsjB,EAAyB,UAAdjkB,EAAKU,KAEhB5C,EAAawH,EAAG9E,YAChB4M,EAAKtP,EAAWC,MAEhBspB,EAAYrnB,EAAKwlB,WACjB8B,EAAOtnB,EAAKylB,MACZzD,EAAQhiB,EAAKgiB,MACbuF,EAAYvF,EAAMC,KAElBuF,EAASxnB,EAAK8lB,SACd1Z,EAAGqb,QAA6B,oBAAdJ,EAA2BA,EAAYC,EAAK1c,OAAOjN,UAErE+pB,EAAqC,oBAAfJ,EAAK1c,MAC3B0c,EAAK1c,MACL,WAAa,OAAO0c,EAAK1c,KAAO,EAChC+c,EAAoC,oBAAdN,EACtBA,EACA,WAAa,OAAOA,CAAW,EAE/BO,EAAW5nB,EAAK2lB,QAChBkC,EAsrBR,SAAoBviB,EAAItF,EAAMwnB,GAC1B,IAGI9oB,EACAS,EAJAyoB,EAAW5nB,EAAK2lB,QAChBmC,EAAa,GACbC,EAAa,GAIbC,EAAKJ,EAAS5N,IAAM4N,EAAS/pB,KAAO,IACpCoqB,EAAKL,EAAS/pB,KACdqqB,EAAO,MAAQV,EAAO,GAAK,KAAQA,EAAO,GAC1CW,EAAO,MAAQX,EAAO,GAAK,KAAQA,EAAO,GAE9C,IAAIroB,EAAI,EAAGA,EAAI,MACXT,EAAIkpB,EAAS7N,MAAQ5a,EAAI8oB,IACtBA,EAAK,EAAKvpB,GAAKspB,EAAOtpB,GAAKspB,IAFd7oB,IAGbT,EAAIwpB,GAAOxpB,EAAIypB,GAAKL,EAAWtf,KAAK9J,GAG3C,GAAGsB,EAAK6lB,cACJkC,EAAa,CAAC,QACX,GAA8B,oBAApB/nB,EAAKwlB,WAA2B,CAC7C,IAAI4C,EAAepoB,EAAK4lB,YAExB,GAAGwC,EAGC,IAFAJ,EAAKI,EAAapO,IAAMoO,EAAavqB,KAAO,IAC5CoqB,EAAKG,EAAavqB,KACdsB,EAAI,EAAGA,EAAI,MACXT,EAAI0pB,EAAarO,MAAQ5a,EAAI8oB,IAC1BA,EAAK,EAAKvpB,GAAKspB,EAAOtpB,GAAKspB,IAFd7oB,IAGbT,EAAI8oB,EAAO,IAAM9oB,EAAI8oB,EAAO,IAAIO,EAAWvf,KAAK9J,QAGvDqpB,EAAaD,EAAWhR,KAAI,SAAS5D,GACjC,OAAOA,EAAI0U,EAAS/pB,KAAO,CAC/B,KACW2K,KAAKuf,EAAWA,EAAW3oB,OAAS,GAAKwoB,EAAS/pB,KAErE,MAAUmC,EAAKwlB,YAAyC,kBAApBxlB,EAAKwlB,aAGrCuC,EAAa,CAAC,IAGfH,EAAS/pB,KAAO,IACfiqB,EAAWO,UACXN,EAAWM,WAGf,MAAO,CAACf,KAAMQ,EAAYjX,KAAMkX,EACpC,CAvuBoBO,CAAWhjB,EAAItF,EAAMwnB,GACjCO,EAAaF,EAAUhX,KACvBiX,EAAaD,EAAUP,KAQvBiB,EAAUhhB,KAAKwL,MAAM4M,GAA+B,aAAlBD,EAAgCkE,EAAaxW,EAAGzO,EAAIyO,EAAGpO,EAAK,IAC9FwpB,EAAYD,GAAW3E,EAAaxW,EAAGzO,EAAIyO,EAAGpO,GAC9CypB,EAAQlhB,KAAKwL,MAAM8M,GAAmB,aAAZD,EAA0BgE,EAAaxW,EAAGpO,EAAIoO,EAAGzO,EAAK,IAChF+pB,EAAUD,GAAS7E,EAAaxW,EAAGpO,EAAIoO,EAAGzO,GAE1CgqB,GAAO1E,EAAW7W,EAAGzO,EAAI2G,EAAG9E,YAAYvE,MACxC2sB,GAAO5E,EAAW5W,EAAGpO,EAAIsG,EAAG9E,YAAYtE,OAIxC2sB,GAAMthB,KAAKwL,MAAM6Q,EACjBuD,EAAQwB,GAAO7I,EACfsH,EAAQwB,GAAO7I,GAGf+I,GAAS,CAAC1V,OAAQ,GAAKtD,MAAO,GAAGpU,IAAY,EAC7CqtB,GAAS,CAAChZ,IAAK,EAAGsD,OAAQ,IAAKzX,IAAY,EAG3CotB,GAAQpF,EACRuD,EAAQ2B,GAASN,EACjBpB,EAAQ2B,GAASP,EAGjBS,GAAQrF,EACRwD,EAAQ2B,GAASL,EACjBvB,EAAQ2B,GAASJ,EAEjBQ,GAAM3hB,KAAKwL,MAAM6Q,EACjBgF,IAAQ,EAAIK,IACZN,GAAOM,IAIXjpB,EAAKmpB,SAAWT,EAChB1oB,EAAKopB,WAAaZ,EAClBxoB,EAAKqpB,OAASL,GACdhpB,EAAKspB,OAASL,GAGd,IAAIztB,GAAKwE,EAAKupB,MAurBlB,SAA0BjkB,EAAItF,EAAMwnB,GAChC,IAAI1pB,EAAawH,EAAG9E,YAEhBojB,EAAkC,MAArB5jB,EAAKyf,YAElB+J,EAAW,CACXtrB,KAAM,SACNE,MAAOopB,EACPpH,SAAUpgB,EAAKogB,SACfE,OAAQtgB,EAAKsgB,OACbC,MAAOvgB,EAAKugB,MACZC,MAAOxgB,EAAKwgB,MACZC,SAAUzgB,EAAKygB,SACfC,SAAU1gB,EAAK0gB,SACfC,MAAO3gB,EAAK2gB,MACZG,QAAS9gB,EAAK8gB,QACdC,UAAW/gB,EAAK+gB,UAChBC,UAAWhhB,EAAKghB,UAChBE,eAAgBlhB,EAAKkhB,eACrBC,WAAYnhB,EAAKmhB,WACjBN,kBAAmB7gB,EAAK6gB,kBACxBD,kBAAmB5gB,EAAK4gB,kBACxBK,cAAejhB,EAAKihB,cACpBG,SAAUphB,EAAKohB,SACfC,UAAWrhB,EAAKqhB,UAChBC,WAAYthB,EAAKshB,WACjBO,eAAgB7hB,EAAK6hB,eACrBC,YAAa9hB,EAAK8hB,YAClBF,kBAAmB5hB,EAAK4hB,kBACxBG,aAAc/hB,EAAK+hB,aACnBN,eAAgBzhB,EAAKyhB,eACrBD,WAAYxhB,EAAKwhB,WACjBG,eAAgB3hB,EAAK2hB,eACrBD,WAAY1hB,EAAK0hB,WACjBM,MAAOhiB,EAAKgiB,MACZyH,UAAU,EACVtW,OAAQ,OACR8O,KAAM2B,EAAa,QAAU,SAC7B8F,SAAU,GAGVtjB,EAASwd,EAAa,IAAM,IAE5B+F,EAAY,CACZzrB,KAAM,SACNiI,IAAKC,EAASpG,EAAKmG,KAGnByjB,EAAc,CACdxjB,OAAQA,EACRpK,KAAM8B,EAAW9B,KACjBmoB,iBAA6B,MAAX/d,EAClByjB,SAAS,EACTC,WAAW,EACXC,iBAAiB,EACjBC,eAAe,EACfC,SAAUnsB,EAAWmsB,UAGzB,SAAShqB,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOupB,EAAUG,EAAW/E,EAAiB1kB,EAAMC,EAClE,CAKA,OAHAukB,EAAmB8E,EAAUG,EAAW1pB,EAAQ2pB,EAAa9rB,GAC7D6mB,EAA2B6E,EAAUG,EAAW1pB,EAAQ2pB,GAEjDD,CACX,CA1vB0BO,CAAiB5kB,EAAItF,EAAMwnB,GAIjDhsB,GAAGkuB,SAAWlB,GAAa5E,EACvBuD,EAAQrH,EAAO1S,EAAGzO,EAClByoB,EAAQrH,EAAO3S,EAAGpO,GAGtB,IAAImrB,IAAwD,IAA1C,CAAC,MAAO,UAAUhgB,QAAQod,GAEzC3D,GAAcuG,KACb3uB,GAAGwmB,MAAMC,KAAOsF,EAChB/rB,GAAG4uB,OAASjD,EAAQrH,EAAO1S,EAAGzO,EAC9BnD,GAAG6uB,OAASpB,IAAwB,QAAfjH,EAAMC,KAAiByG,EAAU3I,EAAO3S,EAAGpO,EAAI+gB,EAAO3S,EAAGpO,IAG9E4kB,GAAeuG,KACf3uB,GAAGwmB,MAAMC,KAAOsF,EAChB/rB,GAAG6uB,OAASjD,EAAQrH,EAAO3S,EAAGpO,EAC9BxD,GAAG4uB,OAASnB,GAAQnJ,EAAO1S,EAAGzO,GAGlC,GAAG2oB,EAAK1c,OAA2B,SAAlB5K,EAAKogB,SAAqB,CACvC5kB,GAAG4kB,SAAW,SACd5kB,GAAG+kB,MAAQqH,EAAS7N,MACpB,IAAIyG,GAAQoH,EAAS/pB,KAEjBysB,GAAYlwB,EAAI0a,UAAU2T,EAAQ,GAAI,EAAG,IAAM,EAC/C8B,IAAY/C,EAAO,GAAKA,EAAO,MAAQxnB,EAAKsgB,QAAUgK,IAAa9J,IACvE,GAAG+J,GAAW,EAAG,CACb,IAAIC,GAAQjjB,KAAK+D,IAAI,GAAI/D,KAAKkjB,MAAMljB,KAAKmjB,IAAIH,IAAYhjB,KAAKojB,OAC9DnK,IAASgK,GAAQpwB,EAAIwwB,QAAQL,GAAWC,GAAO,CAAC,EAAG,EAAG,MAIlDjjB,KAAK6M,IAAIwT,EAAS7N,OAAS6N,EAAS/pB,KAAO,MAAQ,EAAI,OACvDrC,GAAG+kB,MAAQ,EAEnB,CACA/kB,GAAGglB,MAAQA,EACf,CAIAhlB,GAAGmC,OAASimB,EAAa,CACrBqF,GAAQlJ,EAAO3S,EAAGpO,EAClBiqB,GAAQP,EAAU3I,EAAO3S,EAAGpO,GAC5B,CACAiqB,GAAQnJ,EAAO1S,EAAGzO,EAClBsqB,GAAQP,EAAU5I,EAAO1S,EAAGzO,GAGhCnD,GAAGwR,WAEHgR,EAAE9d,KAAK,YAAaoM,EAAa/E,KAAKwL,MAAM3F,EAAG1O,GAAI6I,KAAKwL,MAAM3F,EAAGrO,KAEjE,IAOI8rB,GAPAC,GAAY9M,EAAEpc,OAAO,IAAMwgB,EAAGQ,gBAC7B1iB,KAAK,YAAaoM,GAAc/E,KAAKwL,MAAM3F,EAAG1O,IAAK6I,KAAKwL,MAAM3F,EAAGrO,KAElE8hB,GAAoBrlB,GAAGqlB,kBACvBkK,GAAgBvvB,GAAGwmB,MAAMhmB,KAAK6B,KAE9BmtB,GAAUhN,EAAEpc,OAAO,IAAMwgB,EAAGO,QAE5BsI,GAAc,EACdC,GAAa,EAEjB,SAASC,GAAUC,EAAYC,GAC3B,IAAIC,EAAgB,CAChBC,cAAe/vB,GACfgwB,SAAUxrB,EAAK4mB,YAAc,QAC7B6E,WAAYzrB,EAAK2mB,YACjBvV,MAAOpR,EAAKoR,MACZsa,YAAa5tB,EAAWkM,WAAWqY,SACnCsJ,eAAgB3N,EAAEpc,OAAO,IAAMwgB,EAAGS,UAOlC+I,EAAsC,MAAzBR,EAAW/kB,OAAO,GAC/B+kB,EAAWhO,OAAO,GAClB,IAAMgO,EACVpN,EAAE1e,UAAU,IAAMssB,EAAa,KAAOA,EAAa,eAAepsB,SAElEglB,EAAO/gB,KAAK6B,EAAI8lB,EAAY7sB,EAAW+sB,EAAeD,GAAa,CAAC,GACxE,CAEA,SAASQ,KAUD,IAAI3wB,EAAGI,GAHNsoB,GAAcuG,KACbvG,IAAeuG,MAIA,QAAd5C,IACCrsB,EAAI4kB,EAAO1S,EAAG1O,EAAIiqB,GAAOxB,EACzB7rB,EAAIykB,EAAO3S,EAAGrO,EAAI6pB,IAAQ,EAAIK,GAAQP,GAAW,EAAoB,IAAhBqC,IAGxC,WAAdxD,IACCrsB,EAAI4kB,EAAO1S,EAAG1O,EAAIiqB,GAAOxB,EACzB7rB,EAAIykB,EAAO3S,EAAGrO,EAAI6pB,IAAQ,EAAIK,IAAS,EAAoB,IAAhB8B,IAG9B,UAAdxD,IACCjsB,EAAIykB,EAAO3S,EAAGrO,EAAI6pB,GAAOxB,EAAQ,EAAoB,IAAhB2D,GACrC7vB,EAAI4kB,EAAO1S,EAAG1O,EAAIiqB,GAAOM,IAG7BkC,GAAU3vB,GAAG2K,IAAM,QAAS,CACxBxG,WAAY,CAACzE,EAAGA,EAAGI,EAAGA,EAAG,cAAesoB,EAAa,QAAU,YAG3E,CAEA,SAASkI,KACL,GACKlI,IAAeuG,KACdvG,GAAcuG,GAClB,CACE,IAEIjvB,EAAGI,EAFHmG,EAAMjG,GAAGkuB,UAAY,EACrBqC,EAAMvwB,GAAGiD,QAAUjD,GAAGiS,QAAU,EAGpC,GAAiB,UAAd8Z,EACCjsB,EAAIywB,EACJ7wB,EAAIkS,EAAG1O,EAAIiqB,GAAOlnB,EAAM,GAAKspB,IACzBvvB,GAAG0lB,eAAiB,EAAI,SAiB5B,GAdAhmB,EAAI6wB,EAEa,WAAdxE,IACCjsB,EAAI8R,EAAGrO,EAAI6pB,GAAOnnB,EAAM,KACqB,IAAzCof,GAAkB1W,QAAQ,UACtB3O,GAAG4lB,SAASvjB,KACZ,IAES,YAAbrC,GAAGmlB,OACC3gB,EAAK8gB,SACL,IAIK,QAAdyG,EAAqB,CACpB,IAAIyE,EAAShK,EAAMlmB,KAAKyhB,MAAM,QAAQne,OACtC9D,EAAI8R,EAAGrO,EAAI6pB,GAAOnnB,EAAM,GAAK8mB,EAAUzD,EAAeiG,GAAgBiB,CAC1E,CAGJb,IAAWvH,EAIP,IACA,KACApoB,GAAG2K,IAAM,QAAS,CAClB8lB,MAAO,CACHC,UAAW9f,EAAGxK,OAAO0D,GAAIhG,UAAU,KAAO9D,GAAG2K,IAAM,QACnD8b,KAAMsF,EACN4E,UAAWvI,EAAa,EAAIxW,EAAGrO,EAC/BqtB,WAAYxI,EAAaxW,EAAG1O,EAAI,EAChC2tB,SAAUzI,EAAa9lB,EAAW7B,MAAQ6B,EAAW5B,QAEzDyD,WAAY,CAACzE,EAAGA,EAAGI,EAAGA,EAAG,cAAe,UACxCma,UAAW,CAAC6W,OAAQ1I,GAAc,GAAK,EAAG2I,OAAQ,IAE1D,CACJ,CAEA,SAASC,KACL,IACM5I,IAAeuG,IAChBvG,GAAcuG,GACjB,CAEE,IAWIsC,EAXAC,EAAa1O,EAAEpc,OAAO,IAAMwgB,EAAGS,SAC/B8J,EAAYD,EAAW9qB,OAAO,QAC9BgrB,EAAa,EAAE1M,EAAe,EAAGA,EAAe,GAChD2M,EAAcH,EACb9qB,OAAO,KAAOpG,GAAG2K,IAAM,oBACvBmK,OACDwc,EAAW,KAqBf,GApBGH,EAAUrc,SACTwc,EAAWC,SAASJ,EAAUrc,OAAO5B,MAAMwB,SAAU,IAAM4U,GAI5D+H,GACCJ,EAAKlgB,EAAQ+C,KAAKud,GAClB3B,GAAauB,EAAGxwB,OAChBgvB,GAAcwB,EAAGvwB,QACA4wB,IAGbF,EAAW,KAAO3B,GAAc6B,GAAY,IAE1CH,EAAUrc,SAAWqc,EAAUne,QAAQ4T,EAAGY,iBAChDyJ,EAAKlgB,EAAQ+C,KAAKqd,EAAUrc,QAC5B4a,GAAauB,EAAGxwB,MAChBgvB,GAAcwB,EAAGvwB,QAGlB0nB,GACC,GAAGqH,GAAa,CAKZ,GAFAA,IAAe,EAEE,QAAd1D,EACC/rB,GAAGmC,OAAO,IAAMstB,GAAc7d,EAAGpO,EACjC4tB,EAAW,KAAO,MACf,CACHpxB,GAAGmC,OAAO,IAAMstB,GAAc7d,EAAGpO,EACjC,IAAIgtB,EAASvf,EAAaugB,UAAUL,GACpCC,EAAW,KAAO,EAAIZ,GAAUc,CACpC,CAEAJ,EAAWxsB,KAAK,YAAaoM,EAAasgB,EAAW,GAAIA,EAAW,KACpEpxB,GAAGwR,UACP,OAEGke,KACkB,UAAd3D,IACC/rB,GAAGmC,OAAO,KAAOutB,GAAaH,GAAgB,GAAK3d,EAAGzO,GAG1D+tB,EAAWxsB,KAAK,YAAaoM,EAAasgB,EAAW,GAAIA,EAAW,KACpEpxB,GAAGwR,WAGf,CAEAgR,EAAE1e,UAAU,IAAM8iB,EAAGI,QAAU,KAAOJ,EAAGM,SACpCxiB,KAAK,YAAa0jB,EACftX,EAAa,EAAG/E,KAAKwL,MAAM3F,EAAGpO,GAAK,EAAIxD,GAAGmC,OAAO,MACjD2O,EAAa/E,KAAKwL,MAAM3F,EAAGzO,EAAInD,GAAGmC,OAAO,IAAK,IAGtDqtB,GAAQ9qB,KAAK,YAAa0jB,EACtBtX,EAAa,EAAG/E,KAAKwL,OAAO3F,EAAGrO,IAC/BuN,EAAa/E,KAAKwL,OAAO3F,EAAG1O,GAAI,IAGpC,IAAIuuB,EAAQjP,EAAEpc,OAAO,IAAMwgB,EAAGI,SACzBljB,UAAU,QAAU8iB,EAAGG,QACvBriB,KAAK,QAAS,IACd+Q,KAAK8W,GACVkF,EAAM/b,QAAQ3C,OAAO,QAChBC,QAAQ4T,EAAGG,QAAQ,GACnBriB,KAAK,QAAS,IACnB+sB,EAAM9b,OAAO3R,SAEb,IAAI0tB,EAAU1F,EACT1Q,IAAItb,GAAG2xB,KACPrW,IAAIvP,KAAKwL,OACTqa,MAAK,SAASpW,EAAGiH,GAAK,OAAOjH,EAAIiH,CAAG,IAEzCgP,EAAMjG,MAAK,SAASpe,EAAGzJ,GACnB,IAAI5D,EAAI,CACG,IAAN4D,EAAWqoB,EAAO,IAAMO,EAAW5oB,GAAK4oB,EAAW5oB,EAAI,IAAM,EAC7DA,IAAM4oB,EAAW3oB,OAAS,EAAKooB,EAAO,IAAMO,EAAW5oB,GAAK4oB,EAAW5oB,EAAI,IAAM,GAErF2X,IAAItb,GAAG2xB,KACPrW,IAAIvP,KAAKwL,OAIP6Q,IACCroB,EAAE,GAAKnB,EAAI0a,UAAUvZ,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,GAAK,EAAG2xB,EAAQ,GAAIA,EAAQ,KAO5E,IAAIG,EAASjhB,EAAGxK,OAAO2N,MACtBrP,KAAK0jB,EAAa,IAAM,IAAKiF,IAC7B3oB,KAAK0jB,EAAa,IAAM,IAAKxX,EAAG5H,IAAIjJ,IACpC2E,KAAK0jB,EAAa,QAAU,SAAUrc,KAAK9C,IAAI8jB,EAAS,IACxDroB,KAAK0jB,EAAa,SAAW,QAASrc,KAAK9C,IAAI2H,EAAG3H,IAAIlJ,GAAK6Q,EAAG5H,IAAIjJ,GAAI,IAEvE,GAAGyE,EAAK6lB,cACJtZ,EAAQ+gB,SAASD,EAAQ/nB,EAAItF,EAAKmG,IAAKyd,EAAa,WAAa,qBAAsB5jB,EAAK6lB,cAAe,YACxG,CAGH,IAAI0H,EAAc5F,EAAa/e,GAAGlO,QAAQ,KAAM,IAChD2yB,EAAOntB,KAAK,OAAQ2c,EAAU0Q,GAAaC,cAC/C,CACJ,IAEA,IAAIC,EAAQzP,EAAEpc,OAAO,IAAMwgB,EAAGM,SACzBpjB,UAAU,QAAU8iB,EAAGK,QACvBxR,KAAKqW,EAAK1c,OAAS0c,EAAKrrB,MAAQ6rB,EAAa,IAClD2F,EAAMvc,QAAQ3C,OAAO,QAChBC,QAAQ4T,EAAGK,QAAQ,GACxBgL,EAAMtc,OAAO3R,SACbiuB,EAAMzG,MAAK,SAASpe,GAChB,IAAIoO,EAAI6R,GACJ5K,EAAK1W,KAAKwL,MAAMvX,GAAG2xB,IAAIvkB,IAAO0e,EAAKrrB,MAAQ,EAAK,EAEpDmQ,EAAGxK,OAAO2N,MACLrP,KAAK,IAAK,KACN0jB,EAAa5M,EAAI,IAAMiH,EAAIA,EAAI,IAAMjH,IACrC4M,EAAa,IAAM,KACpB2E,GAEH9e,KAAK8C,EAAQmhB,eAAgBpG,EAAKrrB,MAAOyrB,EAAa9e,GAAI0e,EAAK5B,KACxE,IAGAsF,GAAQ1rB,UAAU,KAAO9D,GAAG2K,IAAM,aAAa3G,SAE/C,IAAIkH,EAAQmiB,GAAMN,GACbrI,GAAgB,GAAK,GAAoB,YAAflgB,EAAK2gB,MAAsB,EAAI,GAE1DgN,EAAOpwB,EAAKqwB,UAAUpyB,IACtBqyB,EAAWtwB,EAAKuwB,aAAatyB,IAAI,GASrC,OAPA+B,EAAKwwB,UAAUzoB,EAAI9J,GAAI,CACnBmyB,KAAmB,WAAbnyB,GAAGmlB,MAAqBpjB,EAAKywB,SAASxyB,GAAImyB,GAAQA,EACxDM,MAAOjD,GACPtnB,KAAMnG,EAAK2wB,aAAa1yB,GAAIkL,EAAOmnB,GACnCM,QAAS5wB,EAAK6wB,gBAAgB5yB,MAG3B+B,EAAK8wB,WAAW/oB,EAAI9J,GAAI,CAC3BmyB,KAAMA,EACNM,MAAOjD,GACPmD,QAAS5wB,EAAK+wB,qBAAqB9yB,IACnC+yB,SAAUhxB,EAAKixB,aAAahzB,GAAIkL,IAExC,CAMA,SAAS+nB,KACL,IAAIhC,EACAiC,EAAiBnG,EAAUrI,EAAe,GACF,IAAzCW,GAAkB1W,QAAQ,YACzBsiB,EAAKlgB,EAAQ+C,KAAK0b,GAAQ1a,QAC1Boe,GAAkB9K,EAAa6I,EAAGxwB,MAAQwwB,EAAGvwB,QAGjD2uB,GAAUC,GAAUlpB,OAAO,QAE3B,IAAIspB,EAAa,EAEbyD,EAAkB/K,GAA4B,QAAd2D,EAChCqH,GAAuBhL,GAA4B,UAAd2D,EAErCsH,EAAQ,EAEZ,GAAGhE,GAAQva,SAAWua,GAAQrc,QAAQ4T,EAAGY,eAAgB,CACrD,IAAI8L,EAEAjC,EAAc/B,GAAUlpB,OAAO,KAAOpG,GAAG2K,IAAM,oBAAoBmK,OACpEuc,IACEjJ,GAAcuG,KACbvG,IAAeuG,KAGjBe,GADAuB,EAAKlgB,EAAQ+C,KAAKud,IACF5wB,MAChB6yB,EAAerC,EAAGvwB,SAOlBgvB,GADAuB,EAAKlgB,EAAQ+C,KAAKwb,GAAUxa,SACZR,MAAQ1C,EAAG1O,GAAKklB,EAAaiF,GAAMK,IACnD4F,EAAerC,EAAGzc,OAAS5C,EAAGrO,GAAK6kB,EAAasF,GAAML,IAGjDjF,GAA4B,QAAd2D,IAEfmH,GAAkBjC,EAAGvwB,OACrB2yB,EAAQpC,EAAGvwB,SAIhB0yB,IACC/D,GAAQ3qB,KAAK,YAAaoM,EAAa4e,EAAa,EAAIH,GAAgB,EAAG,IAE3EG,GAAc,GAGlBwD,EAAiBnnB,KAAK9C,IAAIiqB,EACtB9K,EAAasH,EAAa4D,EAElC,CAEA,IAAIC,EAGA,GAHkBnL,EAClB9D,EACAC,GACI2O,EAAiBjyB,EAAcyjB,EAAe,EAElD8O,EAAqB,GACrBpL,GAAc5B,EAAMlmB,MAAoB,WAAZF,GAAwBwrB,GAAS,IAG7D2H,GAFAC,EAAqBD,EAAiB,EAGtCF,GAASG,GAEblxB,EAAWmxB,oBAAsBD,EACjClxB,EAAWoxB,sBAAwBL,EAEnC,IAAIM,EAAS1yB,EAAcyjB,EAGvBkP,GAAMxL,EAAaiF,GAAMK,IAAOiG,EAAS,GAAKvL,EAAa9D,EAAO,GAClEuP,GAAMzL,EAAasF,GAAML,KAAQjF,EAAa6E,EAAQ1I,EAAO8O,EAAQG,GAEzEhR,EAAEpc,OAAO,IAAMwgB,EAAGE,MACjBpiB,KAAK,IAAKkvB,GACVlvB,KAAK,IAAKmvB,GACVnvB,KAAK0jB,EAAa,QAAU,SAAUrc,KAAK9C,IAAIsqB,EAAiBC,EAAoB,IACpF9uB,KAAK0jB,EAAa,SAAW,QAASrc,KAAK9C,IAAIgkB,EAAQ0G,EAAQ,IAC/D1lB,KAAKC,EAAMmH,KAAMvU,GACjBmN,KAAKC,EAAMkH,OAAQ5Q,EAAKzD,aACxBmS,MAAM,eAAgBjS,GAEvB,IAAI6yB,EAAQV,EAAsBrnB,KAAK9C,IAAIymB,EAAa,GAAI,GAAK,EAEjElN,EAAE1e,UAAU,IAAM8iB,EAAGU,WACpB5iB,KAAK,KAAM0jB,EAAaiF,GAAMK,GAAMpJ,GAAQwP,GAC5CpvB,KAAK,KAAM0jB,EAAasF,GAAMnJ,EAAO0I,EAAQI,KAAQ8F,EAAkB1D,GAAc,IACrF/qB,KAAK0jB,EAAa,QAAU,SAAUrc,KAAK9C,IAAI8jB,EAAS,IACxDroB,KAAK0jB,EAAa,SAAW,QAASrc,KAAK9C,IAAIgkB,GAAS7E,EACrD,EAAI7D,EAAOkL,GACX,EAAInL,EAAOwP,GACZ,IACF7lB,KAAKC,EAAMkH,OAAQ5Q,EAAKggB,cACxBtR,MAAM,CACHmC,KAAM,OACN,eAAgBqP,IAGpB,IAAIjL,EAAW2O,EAAakF,GAASiG,EAAiB,EAClD7Z,EAAW0O,EAAa,GAAK,EAAImF,IAAUgG,EAAiBF,EAShE,GARA5Z,EAASgP,EAAW7W,EAAG1O,EAAIuW,GAAUA,EACrCC,EAAS8O,EAAW5W,EAAGrO,EAAImW,GAAUA,EAErC8I,EAAE9d,KAAK,YAAaoM,EAChB2I,EACAC,KAGA0O,IACAnnB,GACIogB,EAAUvgB,GAAS6hB,aAClBtB,EAAU0S,OAAOzxB,EAAW0xB,cAAelzB,IAEjD,CAGC,IAAImzB,EAAazE,GAAQ1rB,UAAU,QAC/BowB,EAAWD,EAAW,GAAGrwB,OAEzBuwB,EAAS3R,EAAEpc,OAAO,IAAMwgB,EAAGE,MAAMhS,OACjCsf,EAAMrjB,EAAQ+C,KAAKqgB,GACnBE,EAAMtjB,EAAQ4L,aAAa6F,GAE3B8R,GAAU,EAEdL,EAAWzI,MAAK,SAASpe,EAAGzJ,GACxB,IAAI4wB,EAAQ,EACRC,EAAON,EAAW,EACtB,GAAGvwB,IAAM4wB,GAAS5wB,IAAM6wB,EAAM,CAC1B,IAEIC,EAFAC,EAAM3jB,EAAQ+C,KAAKC,MACnB4gB,EAAM5jB,EAAQ4L,aAAa5I,MAG/B,GAAGpQ,IAAM6wB,EAAM,CACX,IAAII,EAASF,EAAIpgB,MAAQqgB,EAAIj1B,GAG7B+0B,EAFaL,EAAI9f,MAAQ+f,EAAI30B,EAAIguB,GAAMzsB,EAAcqzB,GAAU3I,EAE7CiJ,GACN,IAAGH,EAAS,EAC5B,MAAO,GAAG9wB,IAAM4wB,EAAO,CACnB,IAAIM,EAAQH,EAAItgB,KAAOugB,EAAIj1B,GAG3B+0B,EAFYL,EAAIhgB,KAAOigB,EAAI30B,EAAIguB,GAAMzsB,EAAcqzB,GAElCO,GACL,IAAGJ,EAAS,EAC5B,CAEGA,IACIP,EAAW,EACVngB,KAAK+gB,aAAa,YACd,aAAeL,EAAS,OACxB1gB,KAAKghB,aAAa,cAGtBhhB,KAAK+gB,aAAa,aAAc,UAG5C,CACJ,GACJ,CAGA,IAAIE,GAAa,CAAC,EACdC,GAAQ1L,EAAQrpB,GAChBg1B,GAAQ1L,EAAQtpB,GAChBi1B,GAAQ5L,EAAQnpB,GAChBg1B,GAAQ5L,EAAQppB,GAEhBi1B,GAAiB9B,EAAiBxG,EACnC3E,GACgB,WAAZhE,GACC4Q,GAAWl1B,EAAI8rB,EACfoJ,GAAWzxB,EAAI0pB,EAAQkI,GACvBH,GAAWvS,EAAIwK,EAAQmI,KAEvBJ,GAAWzxB,EAAIyxB,GAAWvS,EAAI,EAC9BuS,GAAWM,GAAK1J,EAAQvH,EAAM8Q,GAC9BH,GAAWO,GAAK3J,EAAQvH,EAAM+Q,IAGb,WAAlBlR,GACC8Q,GAAWt1B,EAAIisB,EACfqJ,GAAW9xB,EAAIqwB,EAAiB0B,GAChCD,GAAWzS,EAAIgR,EAAiB2B,KAEhCF,GAAW9xB,EAAImyB,GAAiBJ,GAChCD,GAAWzS,EAAI8S,GAAiBH,GAChCF,GAAWQ,GAAK7J,EAAQxH,EAAY8Q,GACpCD,GAAWS,GAAK9J,EAAQxH,EAAY+Q,MAGzB,WAAZ9Q,GACC4Q,GAAWt1B,EAAIisB,EACfqJ,GAAW9xB,EAAI+pB,EAAQgI,GACvBD,GAAWzS,EAAI0K,EAAQiI,KAEvBF,GAAW9xB,EAAI8xB,GAAWzS,EAAI,EAC9ByS,GAAWQ,GAAK7J,EAAQtH,EAAM4Q,GAC9BD,GAAWS,GAAK9J,EAAQtH,EAAM6Q,IAGb,WAAlBhR,GACC8Q,GAAWl1B,EAAI,EAAI8rB,EACnBoJ,GAAWzxB,EAAIgwB,EAAiB4B,GAChCH,GAAWvS,EAAI8Q,EAAiB6B,KAEhCJ,GAAWzxB,EAAI8xB,GAAiBF,GAChCH,GAAWvS,EAAI4S,GAAiBD,GAChCJ,GAAWM,GAAK1J,EAAQzH,EAAYgR,GACpCH,GAAWO,GAAK3J,EAAQzH,EAAYiR,KAG5C,IAAIM,GAAQlxB,EAAK1E,EAAI,GAAM,IAAM,IAC7B61B,GAAQnxB,EAAK9E,EAAI,GAAM,IAAM,IAEjCoK,EAAG9E,YAAY4wB,gBAAgBpxB,EAAKmG,KAAO,CAAC,EAC5C,IAAIkrB,GAA0B,CAC1BtT,EAAIjgB,EAAW7B,MAAQmzB,EAAKna,EAC5BvW,EAAG0wB,EAAKoB,GAAWzS,EACnBE,EAAIngB,EAAW5B,OAASmzB,EAAKna,EAC7BnW,EAAGswB,EAAKmB,GAAWvS,GAGpBgG,GAAYD,EACX3X,EAAMilB,WAAWhsB,EAAItF,EAAKmG,IAAKqqB,IACzBvM,EACN3e,EAAG9E,YAAY4wB,gBAAgBpxB,EAAKmG,KAAK+qB,IAASG,GAAwBH,IACpElN,GAGHJ,EAFHte,EAAG9E,YAAY4wB,gBAAgBpxB,EAAKmG,KAAKgrB,IAASE,GAAwBF,IAKtE7rB,EAAG9E,YAAY4wB,gBAAgBpxB,EAAKmG,KAAK+qB,IAASG,GAAwBH,GAGtF,CAEA,OAAO92B,EAAIqN,YAAY,CACnB4E,EAAMqN,iBACNmS,GACAW,GACAV,GACAzf,EAAMqN,iBACN+U,IACDnpB,EACP,CAnyBmBisB,CAAavT,EAAGhe,EAAMsF,GAC9B4hB,GAAQA,EAAKsK,OAAOlsB,EAAGmsB,WAAa,IAAIjpB,KAAK0e,GAE7C5hB,EAAG0I,SAASD,MAAM2jB,kBAkyB7B,SAAsB1T,EAAGhe,EAAMsF,GAC3B,IAGIqsB,EAAIC,EAAIC,EAHRjO,EAAkC,MAArB5jB,EAAKyf,YAClB3hB,EAAawH,EAAG9E,YAChB4M,EAAKtP,EAAWC,MAGpB4O,EAAYqL,KAAK,CACbC,QAAS+F,EAAE1N,OACXhL,GAAIA,EACJ4S,OAAQ,WACJyZ,EAAK3T,EAAE9d,KAAK,aACZwM,EAAUsR,EACd,EACA5F,OAAQ,SAASxC,EAAIC,GACjBmI,EAAE9d,KAAK,YAAayxB,EAAKrlB,EAAasJ,EAAIC,IAE1C+b,EAAKjlB,EAAYvQ,OACZwnB,EAAa5jB,EAAKqpB,OAASrpB,EAAKspB,QAAW1T,EAAKxI,EAAGzO,EACpDilB,EAAa5jB,EAAKopB,WAAappB,EAAKmpB,SACpC,EAAG,EAAGnpB,EAAKtE,SACfm2B,EAAKllB,EAAYvQ,OACZwnB,EAAa5jB,EAAKspB,OAAU,EAAItpB,EAAKqpB,QAAYxT,EAAKzI,EAAGpO,EAC1D4kB,EAAa5jB,EAAKmpB,SAAWnpB,EAAKopB,WAClC,EAAG,EAAGppB,EAAKpE,SAEf,IAAIkd,EAAMnM,EAAY4M,UAAUqY,EAAIC,EAAI7xB,EAAKtE,QAASsE,EAAKpE,SAC3D8Q,EAAUsR,EAAGlF,EACjB,EACAN,OAAQ,WAGJ,GAFA9L,EAAUsR,QAEA9R,IAAP0lB,QAA2B1lB,IAAP2lB,EAAkB,CACrC,IAAIzoB,EAAS,CAAC,EACdA,EAAOpJ,EAAK4mB,YAAc,KAAOgL,EACjCxoB,EAAOpJ,EAAK4mB,YAAc,KAAOiL,OACT3lB,IAArBlM,EAAK2mB,YACJvkB,EAASqH,KAAK,cAAenE,EAAI8D,EAAQpJ,EAAK2mB,aAE9CvkB,EAASqH,KAAK,eAAgBnE,EAAI8D,EAE1C,CACJ,GAER,CA50BYmI,CAAayM,EAAGhe,EAAMsF,EAE9B,IAEA2f,EAAU9T,OACL6V,MAAK,SAAShnB,GAAQqM,EAAMilB,WAAWhsB,EAAItF,EAAKmG,IAAM,IACtD3G,SAELylB,EAAU6M,OACd,E,wBC9DA,IAAI13B,EAAMC,EAAQ,OAGlBO,EAAOC,QAAU,SAAqBuV,GAClC,OAAOhW,EAAI23B,cAAc3hB,EAAUiS,SACvC,C,wBCLAznB,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,WAENtB,WAAYtF,EAAQ,OACpB23B,eAAgB33B,EAAQ,OAExBoJ,KAAMpJ,EAAAA,MAAAA,KACN43B,YAAa53B,EAAQ,O,uBCRzB,IAAI63B,EAAgB73B,EAAQ,OACxB83B,EAAe93B,EAAAA,OAAAA,QACf+3B,EAAiB/3B,EAAQ,OAEzBg4B,EAAWh4B,EAAAA,OAAAA,OACXi4B,EAAaF,EAAeC,GAEhC,SAASE,EAAKxgB,GACV,MAAO,IAAMA,EAAI,GACrB,CA6CAnX,EAAOC,QAAU,SAAyB23B,EAASxyB,GAC/CwyB,EAAUA,GAAW,GAGrB,IAQIC,EAAWC,EARXC,GAFJ3yB,EAAOA,GAAQ,CAAC,GAEG2yB,SAAW,IAC1BC,EAAmB,oBAAqB5yB,EAAQA,EAAK4yB,gBAAkBC,QAAQL,GAC/EM,EAAW,YAAa9yB,EAAQA,EAAK8yB,QAAsB,gBAAZN,EAC/CO,EAAiB,kBAAmB/yB,EAAQA,EAAK+yB,cAA4B,MAAZJ,EACjEK,EAAgD,kBAAxBhzB,EAAKgzB,eAA8BX,EAASryB,EAAKgzB,gBAAkB,KAC3FC,EAAmBjzB,EAAKizB,kBAAoB,GAC5CC,EAAcV,EAAWA,EAAU,IAAO,GAI3C,cAAexyB,GACdyyB,EAAYzyB,EAAKyyB,UACjBC,EAAgB1yB,EAAKyyB,WAGrBC,EAAgB,MAAQH,EAAKW,GAD7BT,EAAY,CAACl3B,EAAG,IAAKsiB,EAAG,SAAS8U,KAIrC,IAAIQ,EAAaP,EACb,0BAA4BF,EAAgB,gCAC5C,GAEAU,EAAOT,EAAU,OACjBnuB,EAAMmuB,EAAU,MAChBluB,EAAMkuB,EAAU,MAChB5G,EAAM4G,EAAU,MAChBU,EAAWd,EAAKW,EAAcE,GAC9BE,EAAUf,EAAKW,EAAc1uB,GAC7B+uB,EAAUhB,EAAKW,EAAczuB,GAC7B+uB,EAAaF,EAAU,QAAUC,EACjCE,EAAmB,CAAC,EACxBA,EAAiBjvB,GAAOivB,EAAiBhvB,QAAOyH,EAChD,IAAIwnB,EAAqB,CAAC,EAC1BA,EAAmBN,IAAQ,EAE3B,IAAIO,EAAQ,CAAC,EAkJb,MAhJiB,UAAdlB,IACCkB,EAAM/oB,MAAQ,CACVzP,QAAS,QACTy4B,SAAS,EACTtvB,SAAU2uB,GAAoB,QAC9B73B,YAAa,CACT,WAAYo3B,EAAS,SACrB,qCACA,2DACA,iEACAgB,EAAY,WACdn4B,KAAK,MAGR2E,EAAK6zB,OACJF,EAAM/oB,MAAMipB,MAAO,IAI3BF,EAAMP,GAAQ,CACVj4B,QAAS,UACTgF,MAAM,EACNmE,SAAU,OACVwvB,aAAcL,EACdr4B,YAAa,CACT,yDACA,wCAA0Cs3B,EAAgB,yBAC1Dc,EAAaL,EACb,2BAA4BK,EAAY,wBAC1Cn4B,KAAK,MAGXs4B,EAAMnvB,GAAO,CACTrJ,QAAS,SACTgF,KAAM,KACNmE,SAAU2uB,GAAoB,OAC9Ba,aAAcJ,EACdt4B,YAAa,CACT,4CAA8C+3B,EAC9C,sCAAuCT,EACvC,cAAea,EAAS,wBAC1Bl4B,KAAK,MAGXs4B,EAAMlvB,GAAO,CACTtJ,QAAS,SACTgF,KAAM,KACNmE,SAAU2uB,GAAoB,OAC9Ba,aAAcJ,EACdt4B,YAAa,CACT,4CAA8C+3B,EAC9C,sCAAuCT,EACvC,cAAeY,EAAS,wBAC1Bj4B,KAAK,MAGXs4B,EAAM5H,GAAO,CACT5wB,QAAS,SACTgF,KAAM,KACNmE,SAAU,OACVwvB,aAAcL,EACdr4B,YAAa,CACT,oDAAqDk4B,EACrD,SAAUC,EAAS,mCAAqCJ,EACxD,sCAAuCT,EAAgB,IACvD,qBAAsBW,EAAU,eAClCh4B,KAAK,MAGXs4B,EAAMzN,WAAa,CACf/qB,QAAS,aACTmJ,SAAU,OACVnE,KAAM6yB,EACNc,aAAc,CAACC,gBAAgB,GAC/B34B,YAAa,CACT,uBAAyB+3B,EACzB,6CACA,0CACA,mDACA,2DACA,oCACA,gDACA,0DACA,MAAOK,EAAa,IACpB,2DACA,0BAA4BlB,EAAa,KAC3Cj3B,KAAK,MAGXs4B,EAAMI,eAAiB,CACnB54B,QAAS,UAETgF,MAA6B,IAAvBH,EAAKg0B,cACX1vB,SAAU,OACVwvB,aAAc,CAAC5N,gBAAYha,GAC3B9Q,YAAa,CACT,kFACA,+BAAgCm3B,EAAKW,EAAc,cAAgB,IAAMC,EACzE,+EACA,+EACA,wCACF93B,KAAK,MAGXs4B,EAAM1N,aAAe,CACjB9qB,QAAS,UACTgF,MAAM,EACNmE,SAAU,OACVlJ,YAAa,CACT,sCAAwC+3B,EACxC,WAAYG,EAAS,oCACrB,mBAAoBC,EAAS,uCAC/Bl4B,KAAK,MAGPy3B,IACAa,EAAMlN,UAAY,CACdtrB,QAAS,UACTgF,KAAM4yB,EACNzuB,SAAU,OACVlJ,YAAa,CACT,oEAAsE+3B,GACxE93B,KAAK,MAGXs4B,EAAMtR,SAAW6P,GAGjBlyB,EAAKi0B,cACLN,EAAMO,UAAY,CACd/4B,QAAS,YACTg5B,MAAOhC,EAAa,aACpBhyB,KAAM,KACNmE,SAAU,OACVlJ,YAAa,CACT,2CACA,0FACA,oEACA,gDACA,yEACFC,KAAK,OAIRs4B,CACX,C,wBChPA,IAAI9oB,EAAYxQ,EAAQ,OAEpBD,EAAMC,EAAQ,OACd+5B,EAAc/5B,EAAAA,OAAAA,YAElBO,EAAOC,QAAU,SAAcyK,EAAI6f,EAAOnlB,GACtC,IAsDQq0B,EAtDJv2B,EAAawH,EAAG9E,YAChBmtB,EAAO3tB,EAAK2tB,KACZ7f,EAAe9N,EAAK8N,aAEpBsC,EAAYtC,EACZ1T,EAAIk6B,eAAenP,EAAOrX,GAAcymB,MACxCpP,EAEAqP,EAAQJ,EAAYhkB,GACpBgjB,GAAsB,IAAfoB,EAAMpB,KACb5uB,EAAMgwB,EAAMhwB,IACZC,EAAM+vB,EAAM/vB,IACZsnB,EAAMyI,EAAMzI,IAEZ0I,EAAS,WAAa,OAAOr6B,EAAIs6B,QAAQntB,KAAK/C,IAAK,KAAMmpB,EAAO,EAChEgH,EAAS,WAAa,OAAOv6B,EAAIs6B,QAAQntB,KAAK9C,IAAK,KAAMkpB,EAAO,QAEzDzhB,IAAR1H,EACCA,EAAMiwB,IACArB,IAEF5uB,EADD4L,EAAUwkB,UAAY/pB,EAAUrG,GACzB+C,KAAK/C,IAAIA,EAAKiwB,KAEdA,UAIHvoB,IAARzH,EACCA,EAAMkwB,IACAvB,IAEF3uB,EADD2L,EAAUwkB,UAAY/pB,EAAUpG,GACzB8C,KAAK9C,IAAIA,EAAKkwB,KAEdA,KAIXvB,QAAgBlnB,IAAR6f,IACJtnB,EAAMsnB,EAAMA,EAAMvnB,EACjBA,EAAMunB,GAAOtnB,EAAMsnB,GACbtnB,EAAMsnB,EAAMA,EAAMvnB,IACxBC,EAAMsnB,GAAOA,EAAMvnB,KAIxBA,IAAQC,IACPD,GAAO,GACPC,GAAO,IAGX+vB,EAAMK,MAAM,MAAOrwB,GACnBgwB,EAAMK,MAAM,MAAOpwB,GAEhB+vB,EAAMT,kBAEaM,EAAf7vB,EAAMC,EAAM,EAAS3G,EAAWooB,WAAW4O,UACtCtwB,GAAO,EAAS1G,EAAWooB,WAAW6O,WACnCj3B,EAAWooB,WAAW8O,gBACjCR,EAAMK,MAAM,aAAcR,GAElC,C,wBClEA,IAAIj6B,EAAMC,EAAQ,OACd46B,EAAgB56B,EAAAA,OAAAA,cAChB+5B,EAAc/5B,EAAAA,OAAAA,YAElBO,EAAOC,QAAU,SAA4Bq6B,EAAUp3B,GACnD,SAASpD,EAAQwqB,EAAM/hB,GACnB,IAAI8Z,EAAMiI,EAAK,IAAM/hB,QACV+I,IAAR+Q,IACCiI,EAAK/hB,GAAK8Z,EAElB,CAEA,SAASkY,EAAiBC,EAAWhQ,GACjC,IAAIF,EAAOE,EAAMhV,UACbhW,EAAIk6B,eAAec,EAAWhQ,EAAMhV,WAAWmkB,MAC/Ca,EAEJ,GAAGlQ,EACC,GAAGA,EAAKgP,UAEJhP,EAAK0P,SAAW92B,EAAWonB,EAAKgP,eAC7B,CACH,IAAIM,EAAQJ,EAAYlP,GACpBmQ,EAASb,EAAMpB,MAEhBiC,QAAwBnpB,IAAdsoB,EAAMhwB,MACf9J,EAAQwqB,EAAME,EAAM5gB,MAErB6wB,QAAwBnpB,IAAdsoB,EAAM/vB,MACf/J,EAAQwqB,EAAME,EAAM3gB,KAErB+vB,EAAMT,gBACLr5B,EAAQwqB,EAAM,aAEtB,CAER,CAEA,IAAI,IAAI/lB,EAAI,EAAGA,EAAI+1B,EAAS91B,OAAQD,IAAK,CACrC,IAAIgmB,EAAQ+P,EAAS/1B,GACjBonB,EAASpB,EAAMiB,QAAQ/D,SAE3B,GAAGkE,EACC,GAAGlH,MAAMC,QAAQiH,GACb,IAAI,IAAI/kB,EAAI,EAAGA,EAAI+kB,EAAOnnB,OAAQoC,IAC9B2zB,EAAiBhQ,EAAOoB,EAAO/kB,SAGnC2zB,EAAiBhQ,EAAOoB,GAI7B0O,EAAc9P,EAAO,gBACpBgQ,EAAiBhQ,EAAO,CACpB/U,UAAW,cACX5L,IAAK,OACLC,IAAK,QAGjB,CAEA,IAAI,IAAItB,KAAKrF,EAAW+oB,WACpBsO,EAAiBr3B,EAAWqF,GAAI,CAACqB,IAAK,OAAQC,IAAK,QAE3D,C,wBChEA,IAAIoG,EAAYxQ,EAAQ,OAEpBD,EAAMC,EAAQ,OACd43B,EAAc53B,EAAQ,OACtBi7B,EAAmBj7B,EAAQ,OAE3Bk7B,EAAel7B,EAAAA,OAAAA,QACfm7B,EAAUn7B,EAAAA,OAAAA,QAEd,SAASo7B,EAAQC,EAAYC,GACzB,IAAI7nB,EAAe6nB,EAAOC,MAAM,EAAGD,EAAOv2B,OAAS,GACnD,OAAOu2B,EACHv7B,EAAIk6B,eAAeoB,EAAY5nB,GAAcymB,OAAS,CAAC,EACvDmB,CACR,CAaA96B,EAAOC,QAAU,SAASg7B,EAAmBC,EAAcC,EAAezsB,EAAQrJ,EAAQD,GACtF,IAAI21B,EAAS31B,EAAK21B,OACdhD,EAAU3yB,EAAK2yB,QACfqD,EAAU,YAAaD,EACvBzS,EAAcmS,EAAQK,EAAcH,GACpCpS,EAAekS,EAAQM,EAAeJ,GACtCM,EAAWR,EAAQM,EAAcG,WAAa,CAAC,EAAGP,IAAW,CAAC,EAI9DQ,EAAS,WAGT,cAFOL,EAAa5B,iBACb6B,EAAc7B,UACd2B,EAAmBC,EAAcC,EAAezsB,EAAQrJ,EAAQD,EAC3E,EAEA,GAAGg2B,EAAS,CACR,IAAII,EAAY9sB,EAAOud,YAAc,CAAC,EAClCwP,EAAUp2B,EAAO01B,EAAS,aAE9B,GAAGU,EAAS,CACR,IAAIC,EACAd,EAAQO,EAAe,YACvB37B,EAAIk6B,eAAeyB,EAAe,qBAAqBxB,OACtD,UAEDgC,EAAQH,EAAUC,GAmBtB,YAjBGE,GACCA,EAAM,GAAG/tB,KAAK2tB,GAEXI,EAAM,KAAOD,IACZC,EAAM,IAAK,EACXn8B,EAAIo8B,KAAK,CACL,sBAAuBH,EAAS,UAChC,gDACFh7B,KAAK,QAOX+6B,EAAUC,GAAW,CAACC,EAAiBP,EAAe,CAACI,IAG/D,CACJ,CAEA,IAAIM,EAAQnT,EAAYqP,EAAU,OAC9B+D,EAAQpT,EAAYqP,EAAU,OAC9BgE,EAAc9rB,EAAU4rB,IAAU5rB,EAAU6rB,IAAWD,EAAQC,EACxDz2B,EAAO01B,EAAShD,EAAU,QAASgE,GAG1C12B,EAAO01B,EAAShD,EAAU,QAE1B1yB,EAAO01B,EAAShD,EAAU,OAC1B1yB,EAAO01B,EAAShD,EAAU,QAK9B,IAEIiE,EAWI7D,EAbJ8D,EAAQvT,EAAY4C,WACpB4Q,EAAcb,EAAS/P,iBAEdha,IAAV2qB,IAAqBD,GAAsBrB,EAAasB,SACxC3qB,IAAhB4qB,IAA2BF,GAAsBrB,EAAauB,IACjE72B,EAAO01B,EAAS,iBAAkBiB,GAElC32B,EAAO01B,EAAS,cAChB11B,EAAO01B,EAAS,gBAEF,iBAAXA,KAIIA,GAAUK,IAASjD,EAAgBd,EAAY3O,IAElCrjB,EAAO01B,EAAS,YAAa5C,KAEtC4C,GAAUM,IAAU1S,EAAa2S,UAAYD,GAChDX,EAAiBhS,EAAaC,EAAcja,IAGxD,C,wBChHA,IAAI8C,EAAK/R,EAAQ,OACbwiB,EAAYxiB,EAAQ,OACpBwQ,EAAYxQ,EAAQ,OAEpBD,EAAMC,EAAQ,OACdqP,EAAQrP,EAAQ,MAEhBk7B,EAAel7B,EAAAA,OAAAA,QA+BnB,IAAI08B,EAAgB,CAAC,YAAa,iBAAkB,aAAc,eAAgB,YAC9EC,EAAc,CAAC,MAAO,MAAO,MAAO,QAiBxC,SAAS5C,EAAYlP,GACjB,IAGIyN,EACAxzB,EAAGgE,EAJHkzB,EAAUnR,EAAK0P,SACfqC,EAAQZ,GAAoBnR,EAC5BI,EAAM,CAAC,EAIX,IAAInmB,EAAI,EAAGA,EAAI43B,EAAc33B,OAAQD,IAEjCmmB,EADAniB,EAAI4zB,EAAc53B,IACT83B,EAAM9zB,GAGnB,GAAGkzB,EAEC,IADA1D,EAAU,IACNxzB,EAAI,EAAGA,EAAI63B,EAAY53B,OAAQD,IAE/BmmB,EADAniB,EAAI6zB,EAAY73B,IACP83B,EAAM,IAAM9zB,OAEtB,CACH,IAAI+zB,EACJ,IAAI/3B,EAAI,EAAGA,EAAI63B,EAAY53B,OAAQD,MAE/B+3B,EAAK,KADL/zB,EAAI6zB,EAAY73B,OAEP83B,IAITC,EAAK,IAAM/zB,KACF8zB,KAJL3R,EAAIniB,GAAK8zB,EAAMC,IAQvBvE,EAAUuE,EAAG7wB,OAAO,EACxB,CAOA,OALAif,EAAIuP,MAAQ,SAAS1xB,EAAG+P,GACpB,IAAIgkB,GAAiC,IAA5BF,EAAY7sB,QAAQhH,GAAYwvB,EAAUxvB,EAAIA,EACvD8zB,EAAMC,GAAMD,EAAM,IAAMC,GAAMhkB,CAClC,EAEOoS,CACX,CAeA,SAAS6R,EAAajS,GAalB,IAZA,IAAIsP,EAAQJ,EAAYlP,GACpBkS,EAAO5C,EAAMhwB,IACb6yB,EAAO7C,EAAM/vB,IAEb4vB,EAAMG,EAAMvO,aACZxB,EAAU+P,EAAMtO,YAChBsO,EAAMtO,WAENoR,EAAIjD,EAAIj1B,OACRzB,EAAS,IAAI0hB,MAAMiY,GACnBl5B,EAAQ,IAAIihB,MAAMiY,GAEdn4B,EAAI,EAAGA,EAAIm4B,EAAGn4B,IAAK,CACvB,IAAIo4B,EAAKlD,EAAIl1B,GACbxB,EAAOwB,GAAKi4B,EAAOG,EAAG,IAAMF,EAAOD,GACnCh5B,EAAMe,GAAKo4B,EAAG,EAClB,CAEA,MAAO,CAAC55B,OAAQA,EAAQS,MAAOA,EACnC,CAEA,SAASqmB,EAAU4P,GAIf,IAHA,IAAIiD,EAAIjD,EAAIj1B,OACRo4B,EAAS,IAAInY,MAAMiY,GAEfn4B,EAAIm4B,EAAI,EAAG91B,EAAI,EAAGrC,GAAK,EAAGA,IAAKqC,IAAK,CACxC,IAAI+1B,EAAKlD,EAAIl1B,GACbq4B,EAAOh2B,GAAK,CAAC,EAAI+1B,EAAG,GAAIA,EAAG,GAC/B,CACA,OAAOC,CACX,CAeA,SAASC,EAAmBC,EAAO13B,GAC/BA,EAAOA,GAAQ,CAAC,EAOhB,IALA,IAAIrC,EAAS+5B,EAAM/5B,OACfS,EAAQs5B,EAAMt5B,MACdk5B,EAAIl5B,EAAMgB,OACVu4B,EAAS,IAAItY,MAAMiY,GAEfn4B,EAAI,EAAGA,EAAIm4B,EAAGn4B,IAAK,CACvB,IAAIqe,EAAOX,EAAUze,EAAMe,IAAI2e,QAC/B6Z,EAAOx4B,GAAK,CAACqe,EAAKO,EAAGP,EAAKQ,EAAGR,EAAKS,EAAGT,EAAKxG,EAC9C,CAEA,IAOI4gB,EAPAC,EAAWzrB,EAAGkO,MAAMwd,SACnBn6B,OAAOA,GACPS,MAAMu5B,GACNI,OAAM,GAEPC,EAAiBh4B,EAAKg4B,eACtBC,EAAcj4B,EAAKi4B,YA2BvB,OAvBIL,EADDI,GAAkBC,EACPJ,EACJG,EACI,SAAS9kB,GACf,OAAOglB,EAAgBL,EAAS3kB,GACpC,EACM+kB,EACI,SAAS/kB,GACf,OAAGrI,EAAUqI,GAAW2kB,EAAS3kB,GACzB2J,EAAU3J,GAAGilB,UAAkBjlB,EAC3BxJ,EAAMU,WACtB,EAEU,SAAS8I,GACf,OAAGrI,EAAUqI,GAAWglB,EAAgBL,EAAS3kB,IACzC2J,EAAU3J,GAAGilB,UAAkBjlB,EAC3BxJ,EAAMU,WACtB,GAIIzM,OAASk6B,EAASl6B,OAC1Bi6B,EAAQx5B,MAAQ,WAAa,OAAOA,CAAO,EAEpCw5B,CACX,CAMA,SAASM,EAAgBE,GACrB,IAAIC,EAAW,CACXta,EAAGqa,EAAW,GACdpa,EAAGoa,EAAW,GACdna,EAAGma,EAAW,GACdphB,EAAGohB,EAAW,IAGlB,OAAOvb,EAAUwb,GAAU3Z,aAC/B,CAEA9jB,EAAOC,QAAU,CACbo6B,cAtNJ,SAAuB9P,EAAOrX,EAAcwqB,GACxC,IAAIloB,EAAYtC,EACZ1T,EAAIk6B,eAAenP,EAAOrX,GAAcymB,OAAS,CAAC,EAClDpP,EAEAva,EAAQwF,EAAUkoB,GAAY,SAC/B1tB,GAASA,EAAM2tB,cAAa3tB,EAAQA,EAAM2tB,aAE7C,IAAIC,GAAuB,EAC3B,GAAGp+B,EAAIq+B,oBAAoB7tB,GACvB,IAAI,IAAIzL,EAAI,EAAGA,EAAIyL,EAAMxL,OAAQD,IAC7B,GAAG0L,EAAUD,EAAMzL,IAAK,CACpBq5B,GAAuB,EACvB,KACJ,CAIR,OACIp+B,EAAI23B,cAAc3hB,KACdooB,IACwB,IAAxBpoB,EAAUqW,WACT5b,EAAUuF,EAAUgnB,OAASvsB,EAAUuF,EAAUinB,OAClD9B,EAAanlB,EAAU8V,aACvB9rB,EAAI23B,cAAc3hB,EAAUiS,UAGxC,EA4LI+R,YAAaA,EACb+C,aAAcA,EACd1S,UAAWA,EACXgT,mBAAoBA,EACpBiB,4BArBJ,SAAqCvT,EAAOnlB,GACxC,OAAOy3B,EAAmBN,EAAahS,GAAQnlB,EACnD,E,wBCjNA,IAAI24B,EAASt+B,EAAQ,OACjBu+B,EAAUv+B,EAAQ,OAEtBO,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,aAENtB,WAAYtF,EAAQ,MACpBmI,iBAAkBnI,EAAQ,OAE1BgiB,qBAAsBhiB,EAAQ,OAC9BoI,eAAgBpI,EAAQ,OACxBw+B,mBAAoBx+B,EAAQ,OAE5B2rB,KAAM3rB,EAAQ,OAIds+B,OAAQA,EAAOA,OACfG,aAAcH,EAAOG,aACrBC,SAAUJ,EAAOpE,IACjBgB,aAAcoD,EAAOR,QAErBlD,cAAe2D,EAAQ3D,cACvBb,YAAawE,EAAQxE,YACrB+C,aAAcyB,EAAQzB,aACtB1S,UAAWmU,EAAQnU,UACnBgT,mBAAoBmB,EAAQnB,mBAC5BiB,4BAA6BE,EAAQF,4B,wBC5BzC,IAAIn6B,EAAalE,EAAAA,OAAAA,WAEb2+B,EAAkB3+B,EAAQ,MAC1Bs+B,EAASt+B,EAAAA,OAAAA,OAET4+B,EAAM,sEAEVr+B,EAAOC,QAAU,CACbyJ,SAAU,OAEV4hB,WAAY,CACR5hB,SAAU,OAEVywB,WAAY,CACR55B,QAAS,aACTgF,KAAMw4B,EAAOO,KACb50B,SAAU,OACVlJ,YAAa,CACT,8DACA69B,GACF59B,KAAK,MAEX25B,gBAAiB,CACb75B,QAAS,aACTgF,KAAMw4B,EAAOQ,MACb70B,SAAU,OACVlJ,YAAa,CACT,8DACA69B,GACF59B,KAAK,MAEXy5B,UAAW,CACP35B,QAAS,aACTgF,KAAMw4B,EAAOS,KACb90B,SAAU,OACVlJ,YAAa,CACT,yCACA69B,GACF59B,KAAK,OAIf64B,UAAW31B,EAAW,CAIlB86B,eAAe,EACf/0B,SAAU,OACVlJ,YAAa,CACT,IACFC,KAAK,MACR29B,EAAgB,GAAI,CACnBvG,UAAW,qCACXwB,aAAa,EACblB,eAAe,K,wBCtDvB,IAAI34B,EAAMC,EAAQ,OACd4oB,EAAW5oB,EAAQ,OAEnB2+B,EAAkB3+B,EAAQ,OAC1Bw7B,EAAqBx7B,EAAQ,OAEjCO,EAAOC,QAAU,SAA8B8H,EAAUC,GACrD,SAAS3C,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAO0C,EAAUC,EAAWo2B,EAAiB94B,EAAMC,EAClE,CAEAF,EAAO,yBACPA,EAAO,8BACPA,EAAO,wBAEP,IACIq5B,EAAWC,EADXnD,EAAYxzB,EAAUikB,WAG1B,SAAS2S,EAASt5B,EAAMC,GACpB,OAAO/F,EAAI6F,OAAOq5B,EAAWC,EAAYP,EAAgB9E,UAAWh0B,EAAMC,EAC9E,CAEA,IAAI,IAAIgD,KAAKizB,EAAW,CACpB,IAAIG,EAAQH,EAAUjzB,GAEtB,GAAGozB,EAAM,GACL+C,EAAY32B,EAASQ,IAAM,CAAC,GAC5Bo2B,EAAatW,EAASQ,aAAa7gB,EAAWO,EAAG,cACtCwO,MAAQxO,EACnB0yB,EAAmByD,EAAWC,EAAY32B,EAAW42B,EAAU,CAAC7D,OAAQ,GAAIhD,QAAS,UAClF,CAEH,IAAI,IAAIxzB,EAAI,EAAGA,EAAIo3B,EAAM,GAAGn3B,OAAQD,IAChCo3B,EAAM,GAAGp3B,YAENyD,EAAUikB,WAAW1jB,EAChC,CACJ,CACJ,C,wBCtCA,IAAI0Z,EAAYxiB,EAAQ,OAEpBs+B,EAAS,CACTc,MAAO,CACH,CAAC,EAAG,cAAe,CAAC,EAAG,qBAG3BC,OAAQ,CACJ,CAAC,EAAG,gBAAiB,CAAC,KAAO,kBAC7B,CAAC,IAAM,kBAAmB,CAAC,KAAO,mBAClC,CAAC,GAAK,mBAAoB,CAAC,KAAO,oBAClC,CAAC,IAAM,oBAAqB,CAAC,KAAO,oBACpC,CAAC,EAAG,qBAGRC,OAAQ,CACJ,CAAC,EAAG,gBAAiB,CAAC,KAAO,iBAC7B,CAAC,IAAM,kBAAmB,CAAC,KAAO,kBAClC,CAAC,GAAK,oBAAqB,CAAC,KAAO,oBACnC,CAAC,IAAM,oBAAqB,CAAC,KAAO,oBACpC,CAAC,EAAG,qBAGRC,OAAQ,CACJ,CAAC,EAAG,iBAAkB,CAAC,KAAO,iBAC9B,CAAC,IAAM,kBAAmB,CAAC,KAAO,kBAClC,CAAC,GAAK,mBAAoB,CAAC,KAAO,mBAClC,CAAC,IAAM,oBAAqB,CAAC,KAAO,oBACpC,CAAC,EAAG,qBAGRC,QAAS,CACL,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAK7BT,KAAM,CACF,CAAC,EAAG,iBAAkB,CAAC,IAAM,oBAC7B,CAAC,GAAK,oBAAqB,CAAC,GAAK,oBACjC,CAAC,GAAK,mBAAoB,CAAC,EAAG,mBAIlCF,KAAM,CACF,CAAC,EAAG,oBAAqB,CAAC,GAAK,oBAC/B,CAAC,GAAK,oBAAqB,CAAC,EAAG,mBAInCC,MAAO,CACH,CAAC,EAAG,iBAAkB,CAAC,IAAM,kBAC7B,CAAC,GAAK,mBAAoB,CAAC,GAAK,mBAChC,CAAC,GAAK,oBAAqB,CAAC,EAAG,qBAGnCW,OAAQ,CACJ,CAAC,EAAG,gBAAiB,CAAC,GAAK,mBAC3B,CAAC,GAAK,oBAAqB,CAAC,GAAK,oBACjC,CAAC,GAAK,oBAAqB,CAAC,GAAK,oBACjC,CAAC,GAAK,oBAAqB,CAAC,GAAK,oBACjC,CAAC,GAAK,oBAAqB,CAAC,GAAK,oBACjC,CAAC,EAAG,iBAGRC,QAAS,CACL,CAAC,EAAG,iBAAkB,CAAC,KAAO,gBAC9B,CAAC,IAAM,iBAAkB,CAAC,KAAO,kBACjC,CAAC,GAAK,mBAAoB,CAAC,KAAO,kBAClC,CAAC,IAAM,kBAAmB,CAAC,KAAO,kBAClC,CAAC,EAAG,iBAGRC,SAAU,CACN,CAAC,EAAG,kBAAmB,CAAC,IAAM,mBAC9B,CAAC,GAAK,mBAAoB,CAAC,IAAM,mBACjC,CAAC,EAAG,mBAGRC,IAAK,CACD,CAAC,EAAG,gBAAiB,CAAC,KAAO,iBAC7B,CAAC,KAAO,kBAAmB,CAAC,KAAO,kBACnC,CAAC,KAAO,gBAAiB,CAAC,EAAG,iBAGjCC,IAAK,CACD,CAAC,EAAG,cAAe,CAAC,GAAK,gBACzB,CAAC,GAAK,kBAAmB,CAAC,EAAG,qBAGjCC,UAAW,CACP,CAAC,EAAG,cAAe,CAAC,GAAK,gBACzB,CAAC,GAAK,kBAAmB,CAAC,GAAK,oBAC/B,CAAC,EAAG,qBAGRC,MAAO,CACH,CAAC,EAAG,gBAAiB,CAAC,GAAK,kBAC3B,CAAC,GAAK,kBAAmB,CAAC,GAAK,mBAC/B,CAAC,GAAK,kBAAmB,CAAC,EAAG,qBAGjCC,SAAU,CACN,CAAC,EAAG,cAAe,CAAC,IAAM,iBAC1B,CAAC,GAAK,kBAAmB,CAAC,GAAK,iBAC/B,CAAC,GAAK,kBAAmB,CAAC,EAAG,qBAGjCC,QAAS,CACL,CAAC,EAAG,WAAY,CAAC,mBAAqB,WACtC,CAAC,mBAAqB,WAAY,CAAC,mBAAqB,WACxD,CAAC,mBAAqB,WAAY,CAAC,kBAAoB,WACvD,CAAC,kBAAoB,WAAY,CAAC,kBAAoB,WACtD,CAAC,kBAAoB,WAAY,CAAC,kBAAoB,WACtD,CAAC,kBAAoB,WAAY,CAAC,kBAAoB,WACtD,CAAC,kBAAoB,WAAY,CAAC,kBAAoB,WACtD,CAAC,kBAAoB,WAAY,CAAC,kBAAoB,WACtD,CAAC,EAAG,YAGRC,QAAS,CACL,CAAC,EAAU,gBAAiB,CAAC,QAAU,iBACvC,CAAC,QAAU,iBAAkB,CAAC,QAAU,kBACxC,CAAC,QAAU,kBAAmB,CAAC,QAAU,kBACzC,CAAC,QAAU,kBAAmB,CAAC,QAAU,oBACzC,CAAC,QAAU,oBAAqB,CAAC,QAAU,oBAC3C,CAAC,QAAU,oBAAqB,CAAC,QAAU,oBAC3C,CAAC,QAAU,oBAAqB,CAAC,QAAU,oBAC3C,CAAC,QAAU,oBAAqB,CAAC,QAAU,mBAC3C,CAAC,QAAU,mBAAoB,CAAC,EAAU,qBAI9CzB,EAAeH,EAAOS,KAyB1B,SAASoB,EAAkBnG,GACvB,IAAIoG,EAAa,EAEjB,IAAIpb,MAAMC,QAAQ+U,IAAQA,EAAIj1B,OAAS,EAAG,OAAO,EAEjD,IAAIi1B,EAAI,KAAOA,EAAIA,EAAIj1B,OAAS,GAAI,OAAO,EAE3C,GAAkB,KAAdi1B,EAAI,GAAG,IAAwC,KAA3BA,EAAIA,EAAIj1B,OAAS,GAAG,GAAU,OAAO,EAE7D,IAAI,IAAID,EAAI,EAAGA,EAAIk1B,EAAIj1B,OAAQD,IAAK,CAChC,IAAIo4B,EAAKlD,EAAIl1B,GAEb,GAAiB,IAAdo4B,EAAGn4B,SAAiBm4B,EAAG,GAAKkD,IAAe5d,EAAU0a,EAAG,IAAIY,UAC3D,OAAO,EAGXsC,GAAclD,EAAG,EACrB,CAEA,OAAO,CACX,CAOA38B,EAAOC,QAAU,CACb89B,OAAQA,EACRG,aAAcA,EAEdvE,IAtDJ,SAAkBF,EAAKl0B,GAEnB,GADIA,IAAMA,EAAO24B,IACbzE,EAAK,OAAOl0B,EAEhB,SAASu6B,IACL,IACIrG,EAAMsE,EAAOtE,IAAQsG,KAAKC,MAAMvG,EACpC,CAAE,MAAMwG,GACJxG,EAAMl0B,CACV,CACJ,CAQA,MANkB,kBAARk0B,IACNqG,IAEkB,kBAARrG,GAAkBqG,KAG5BF,EAAkBnG,GACfA,EAD4Bl0B,CAEvC,EAmCIg4B,QAVJ,SAAsB9D,GAClB,YAAmBnoB,IAAhBysB,EAAOtE,IACEmG,EAAkBnG,EAClC,E,oBClLAz5B,EAAOC,QAAU,SAAeqY,EAAG4nB,EAAIC,EAAIC,EAAI7nB,GAC3C,IAAI8nB,GAAQ/nB,EAAI6nB,IAAOC,EAAKD,GACxBG,EAAOD,EAAOH,GAAME,EAAKD,GACzBI,GAAMF,EAAOC,GAAQ,EAGzB,MAAc,SAAX/nB,GAAgC,WAAXA,EAA4B8nB,EACtC,WAAX9nB,GAAkC,WAAXA,EAA4BgoB,EACxC,UAAXhoB,GAAiC,QAAXA,EAAyB+nB,EAG/CD,EAAQ,EAAI,EAAKE,EAAWF,EAC5BC,EAAQ,EAAI,EAAKC,EAAWD,EACxBC,CACX,C,wBCnBA,IAAI/gC,EAAMC,EAAQ,OAMd+gC,EAAY,CACZ,CAAC,YAAa,WAAY,aAC1B,CAAC,WAAY,OAAQ,YACrB,CAAC,YAAa,WAAY,cAG9BxgC,EAAOC,QAAU,SAAmBK,EAAGI,EAAGI,EAASE,GAW/C,OAVuBV,EAAR,SAAZQ,EAAwB,EACP,WAAZA,EAA0B,EACd,UAAZA,EAAyB,EACxBtB,EAAI0a,UAAUvN,KAAKkjB,MAAU,EAAJvvB,GAAQ,EAAG,GAEpBI,EAAV,WAAZM,EAA0B,EACT,WAAZA,EAA0B,EACd,QAAZA,EAAuB,EACtBxB,EAAI0a,UAAUvN,KAAKkjB,MAAU,EAAJnvB,GAAQ,EAAG,GAEtC8/B,EAAU9/B,GAAGJ,EACxB,C,qBCxBAL,EAAQwgC,WAAa,SAASC,GAC1B,MACiB,UAAbA,GACa,WAAbA,CAER,EAEAzgC,EAAQ0gC,SAAW,SAASD,GACxB,MACiB,mBAAbA,GACa,iBAAbA,GACa,aAAbA,GACa,aAAbA,GACa,eAAbA,CAER,EAEAzgC,EAAQ2gC,SAAW,SAASF,GACxB,MACiB,aAAbA,GACa,iBAAbA,CAER,EAEAzgC,EAAQ4gC,SAAW,SAASH,GACxB,MACiB,WAAbA,GACa,aAAbA,GACa,aAAbA,GACa,eAAbA,CAER,EAEAzgC,EAAQ6gC,SAAW,SAASJ,GACxB,MACiB,UAAbA,GACa,mBAAbA,GACa,iBAAbA,CAER,EAEAzgC,EAAQ8gC,mBAAqB,SAASL,GAClC,OACIzgC,EAAQ6gC,SAASJ,IACjBzgC,EAAQ4gC,SAASH,EAEzB,C,wBC9CA,IAAIM,EAAcvhC,EAAQ,OACtBwhC,EAAWxhC,EAAQ,OACnByhC,EAAkBzhC,EAAQ,OAE1B0hC,EAAgB1hC,EAAAA,OAAAA,cAChB2hC,EAAY3hC,EAAQ,OAEpBsS,EAAc/R,EAAOC,QAAU,CAAC,EAEpC8R,EAAYvQ,MAAQ/B,EAAQ,OAC5BsS,EAAY4M,UAAYlf,EAAQ,OAEhC,IAAI4hC,EAAU5hC,EAAQ,MAkPtB,SAAS6hC,IACL,IAAIC,EAAQzjB,SAAS0jB,cAAc,OAEnCD,EAAMtuB,UAAY,YAClB,IAAIwuB,EAASF,EAAMztB,MAWnB,OAVA2tB,EAAO3S,SAAW,QAClB2S,EAAOzsB,KAAO,EACdysB,EAAOvsB,MAAQ,EACfusB,EAAOtsB,IAAM,EACbssB,EAAOrsB,OAAS,EAChBqsB,EAAOC,OAAS,UAChBD,EAAO3f,WAAa,OAEpBhE,SAAS6jB,KAAKlqB,YAAY8pB,GAEnBA,CACX,CAIA,SAASK,EAAc3B,GACnB,OAAOe,EACHf,EAAE4B,eAAiB5B,EAAE4B,eAAe,GAAK5B,EACzCniB,SAAS6jB,KAEjB,CA1QA5vB,EAAYsvB,QAAUA,EAAQS,QAC9B/vB,EAAYgwB,WAAaV,EAAQW,IAwDjCjwB,EAAYqL,KAAO,SAAcjL,GAC7B,IAKI8vB,EACAC,EACAC,EACA3qB,EACA4qB,EACAprB,EACAqrB,EACAC,EAZA53B,EAAKyH,EAAQzH,GACb63B,EAAY,EACZC,EAAmB93B,EAAG0I,SAASovB,iBAC/BnlB,EAAUlL,EAAQkL,QAWlB3S,EAAG+3B,iBAAgB/3B,EAAG+3B,eAAiB,GAE3CplB,EAAQvJ,MAAM4uB,cAAgB,MAE9BrlB,EAAQslB,YAAcC,EAElB1B,GAGG7jB,EAAQwlB,eACPxlB,EAAQylB,oBAAoB,aAAczlB,EAAQwlB,eAEtDxlB,EAAQwlB,cAAgBD,EACxBvlB,EAAQ0lB,iBAAiB,aAAcH,EAAS,CAACI,SAAS,KAN1D3lB,EAAQ4lB,aAAeL,EAe3B,IAAIM,EAAU/wB,EAAQ+wB,SANtB,SAAkBloB,EAAIC,EAAIkoB,GAGtB,OAFGx2B,KAAK6M,IAAIwB,GAAMmoB,IAASnoB,EAAK,GAC7BrO,KAAK6M,IAAIyB,GAAMkoB,IAASloB,EAAK,GACzB,CAACD,EAAIC,EAChB,EAIA,SAAS2nB,EAAQ3C,GAGbv1B,EAAG04B,UAAW,EACd14B,EAAG0J,WAAY,EACf,IAAIud,EAASiQ,EAAc3B,GAC3BgC,EAAStQ,EAAO,GAChBuQ,EAASvQ,EAAO,GAChB0Q,EAAgBpC,EAAEoD,OAClBrsB,EAAeipB,EACfqC,EAA2B,IAAdrC,EAAEqD,SAAiBrD,EAAEsD,QAGV,qBAAdtD,EAAEuD,SAAgD,qBAAdvD,EAAEwD,UAC5CxD,EAAEuD,QAAUvB,EACZhC,EAAEwD,QAAUvB,IAGhBC,GAAoB,IAAIuB,MAAQC,WACVj5B,EAAG+3B,eAAiBD,EAEtCD,GAAa,GAGbA,EAAY,EACZ73B,EAAG+3B,eAAiBN,GAGrBhwB,EAAQmL,QAAQnL,EAAQmL,OAAO2iB,EAAGgC,EAAQC,GAE1CjB,IAAaqB,GACZF,EAAYd,KACFxtB,MAAM0D,OAASosB,OAAOC,iBAAiBxmB,GAAS7F,OACnDypB,IAEPmB,EAAYtkB,SACZtG,EAASosB,OAAOC,iBAAiB/lB,SAASgmB,iBAAiBtsB,OAC3DsG,SAASgmB,gBAAgBhwB,MAAM0D,OAASosB,OAAOC,iBAAiBxmB,GAAS7F,QAG7EsG,SAASilB,iBAAiB,UAAWgB,GACrCjmB,SAASilB,iBAAiB,WAAYgB,IAEd,IAArB5xB,EAAQuuB,WACPT,EAAE+D,iBACFlmB,SAASilB,iBAAiB,YAAakB,GACvCnmB,SAASilB,iBAAiB,YAAakB,EAAQ,CAACjB,SAAS,IAIjE,CAEA,SAASiB,EAAOhE,GACZA,EAAE+D,iBAEF,IAAIrS,EAASiQ,EAAc3B,GACvBkD,EAAUhxB,EAAQgxB,SAAW/B,EAAU8C,QACvCC,EAAOjB,EAAQvR,EAAO,GAAKsQ,EAAQtQ,EAAO,GAAKuQ,EAAQiB,GACvDnoB,EAAKmpB,EAAK,GACVlpB,EAAKkpB,EAAK,IAEXnpB,GAAMC,KACLvQ,EAAG04B,UAAW,EACdrxB,EAAYsvB,QAAQ32B,EAAIu1B,IAGzBv1B,EAAG04B,UAAYjxB,EAAQqL,SAAW8kB,IACjC53B,EAAG05B,UAAY,CACX/mB,QAASA,EACTrC,GAAIA,EACJC,GAAIA,GAER9I,EAAQqL,OAAOxC,EAAIC,GAI3B,CAEA,SAAS8oB,EAAO9D,GAmBZ,UAlBOv1B,EAAG05B,WAEc,IAArBjyB,EAAQuuB,WACPT,EAAE+D,iBACFlmB,SAASglB,oBAAoB,YAAamB,GAC1CnmB,SAASglB,oBAAoB,YAAamB,IAG9CnmB,SAASglB,oBAAoB,UAAWiB,GACxCjmB,SAASglB,oBAAoB,WAAYiB,GAEtC9C,EACCE,EAAciB,GACR5qB,IACN4qB,EAAU0B,gBAAgBhwB,MAAM0D,OAASA,EACzCA,EAAS,MAGT9M,EAAG0J,UAAP,CAYA,GARA1J,EAAG0J,WAAY,GAIX,IAAIsvB,MAAQC,UAAYj5B,EAAG+3B,eAAiBD,IAC5CD,EAAY51B,KAAK9C,IAAI04B,EAAY,EAAG,IAGrC73B,EAAG04B,SACCjxB,EAAQyL,QAAQzL,EAAQyL,cAQ3B,GANGzL,EAAQyM,SAASzM,EAAQyM,QAAQ2jB,EAAWvrB,IAM3CsrB,EAAY,CACZ,IAAI+B,EAEJ,IACIA,EAAK,IAAIC,WAAW,QAASrE,EACjC,CAAE,MAAMsE,GACJ,IAAI5S,EAASiQ,EAAc3B,IAC3BoE,EAAKvmB,SAAS0mB,YAAY,gBACvBC,eAAe,QACdxE,EAAEyE,QAASzE,EAAE0E,WACb1E,EAAE2E,KAAM3E,EAAE4E,OACV5E,EAAE6E,QAAS7E,EAAE8E,QACbpT,EAAO,GAAIA,EAAO,GAClBsO,EAAEsD,QAAStD,EAAE+E,OAAQ/E,EAAEgF,SAAUhF,EAAEiF,QACnCjF,EAAEkF,OAAQlF,EAAEmF,cACpB,CAEA/C,EAAcgD,cAAchB,EAChC,CAGJ35B,EAAG0J,WAAY,EACf1J,EAAG04B,UAAW,CAxCd,MAFI14B,EAAG04B,UAAW,CA4CtB,CACJ,EAoBArxB,EAAYuvB,UAAYA,C,uBChRxB,IAAIgE,EAAS7lC,EAAQ,OACjB8lC,EAAW9lC,EAAQ,OACnB+lC,EAAc/lC,EAAAA,OAAAA,YAEdgmC,EAAiBhmC,EAAQ,OAEzB4hC,EAAUrhC,EAAOC,QAAU,CAAC,EAEhCohC,EAAQS,QAAU,SAASp3B,EAAIg7B,EAAKC,IAChCj7B,EAAK86B,EAAY96B,IAGX9E,aACF2/B,EAASK,MAAMl7B,EAAG9E,YAAY2N,KAAOkyB,EAAeI,SAGxDxE,EAAQW,IAAIt3B,EAAIg7B,EAAKC,EACzB,EAIAtE,EAAQW,IAAM,SAAat3B,EAAIg7B,GAC3B,IAAIxiC,EAAawH,EAAG9E,YAChBkgC,EAAep7B,EAAGq7B,WAElBL,IAAKA,EAAM,CAAC,GACbA,EAAIrC,SAAW34B,EAAG04B,WACuC,IAAzDkC,EAAOU,eAAet7B,EAAI,qBAAsBg7B,KAInDxiC,EAAWuS,YAAY/Q,UAAU,KAAKE,SACtC1B,EAAWuS,YAAY/Q,UAAU,QAAQE,SACzC1B,EAAWuS,YAAY/Q,UAAU,UAAUE,SAC3C8F,EAAGq7B,gBAAaz0B,EAEbo0B,EAAIrC,QAAUyC,GACbp7B,EAAG2J,KAAK,iBAAkB,CACtBE,MAAOmxB,EACPO,OAAQH,IAGpB,C,qBC1CA7lC,EAAQ,EAAO,CACXM,QAAS,SAKTuJ,OAAQ,CAAC,QAAS,MAAO,OAAQ,WAAY,UAAW,eACxDvE,KAAM,QACNmE,SAAU,QACVlJ,YAAa,CACT,0DACA,oEACA,wDACFC,KAAK,MAGXR,EAAQ,EAAU,CACdimC,MAAO,CACH3lC,QAAS,aACTuJ,OAAQ,CAAC,GAAI,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAC5CvE,KAAM,GACNyzB,SAAS,EACTtvB,SAAU,QACVlJ,YAAa,CACT,sCACA,wDACFC,KAAK,MAEX0lC,SAAU,CACN5lC,QAAS,aACTuJ,OAAQ,CAAC,UAAW,WACpBvE,KAAM,UACNmE,SAAU,QACVlJ,YAAa,CACT,mDACA,6CACFC,KAAK,MAEXiB,QAAS,CACLnB,QAAS,QACTy4B,SAAS,EACTtvB,SAAU,QACVlJ,YAAa,CACT,yEACA,wEACA,oDACFC,KAAK,MAEX2lC,QAAS,CACL7lC,QAAS,QACTy4B,SAAS,EACTtvB,SAAU,QACVlJ,YAAa,CACT,yEACA,wEACA,4CACA,4CACFC,KAAK,MAEX4lC,UAAW,CACP9lC,QAAS,SACTmJ,SAAU,QACVE,IAAK,EACLC,IAAK,EACLrJ,YAAa,CACT,mDACA,kDACA,6BACFC,KAAK,MAEXwC,KAAM,CACF1C,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNyzB,SAAS,EACTtvB,SAAU,QACVlJ,YAAa,CACT,+DACA,mEACFC,KAAK,MAEX6lC,SAAU,CACN/lC,QAAS,SACTqJ,IAAK,EACLC,IAAK,EACLtE,KAAM,GACNyzB,SAAS,EACTtvB,SAAU,QACVlJ,YAAa,CACT,yCACA,sEACA,gEACA,qEACFC,KAAK,MAEXiJ,SAAU,QACVlJ,YAAa,CACT,uCACFC,KAAK,K,uBClGX,IAAI+Q,EAAK/R,EAAQ,OACbD,EAAMC,EAAQ,OACd8mC,EAAe/mC,EAAI+mC,aACnBt2B,EAAYxQ,EAAQ,OACpBwiB,EAAYxiB,EAAQ,OAEpB+H,EAAW/H,EAAQ,OACnBqP,EAAQrP,EAAQ,MAChB+mC,EAAa/mC,EAAQ,OACrBiS,EAAelS,EAAIkS,aACnBG,EAAepS,EAAQ,OAEvBgnC,EAAkBhnC,EAAQ,OAE1ByqB,EADYzqB,EAAQ,OACKyqB,aACzBwc,EAAcjnC,EAAAA,OAAAA,YAEdknC,EAAWlnC,EAAQ,OACnBmnC,EAAmBnnC,EAAQ,OAC3BonC,EAAwBpnC,EAAAA,OAAAA,sBAExBqnC,EAAU9mC,EAAOC,QAAU,CAAC,EA4JhC,SAAS8mC,EAAaC,EAAKzc,EAAO7f,GAC9B,IAAIu8B,EAAgB1c,EAAM2c,YACtBC,EAAeF,GAAiBH,EAAQM,eAAeH,EAAcf,MAAO,EAAG,IACnF,GAAGiB,EAAc,CACb,IAAIE,EAAiBP,EAAQM,eAAeH,EAAcvlC,QAAS,EAAG,MAClE4lC,EAAiBR,EAAQM,eAAeH,EAAcb,QAAS,EAAG,MAClEmB,EAAmBN,EAAcZ,UACjCmB,EAAcV,EAAQM,eAAeH,EAAchkC,KAAM,EAAG,GAC5DwkC,EAAkBX,EAAQM,eAAeH,EAAcX,SAAU,EAAG,IACpEoB,EAAYnd,EAAMuB,IACtBgb,EAAQa,QAAQX,EAAK,QAASt8B,EAAIg9B,EAC9BP,EAAcK,EAAaC,OAC3Bn2B,EAAW21B,EAAcd,SACzBkB,EAAgBC,EAAgBC,EAExC,MAAUhd,EAAMqd,WACZZ,EAAIn4B,KAAKC,EAAMmH,KAAMsU,EAAMqd,UAEnC,CAxKAd,EAAQ1lC,KAAO,SAAS+V,EAAGpH,EAAQ9M,EAAM+M,GAElCxQ,EAAI23B,cAAcpnB,KACjBC,EAAQD,EAAOC,MACf/M,EAAO8M,EAAO9M,KACd8M,EAASA,EAAOA,QAEjBA,GAAQoH,EAAErD,MAAM,cAAe/D,GAC/B9M,EAAO,GAAGkU,EAAErD,MAAM,YAAa7Q,EAAO,MACtC+M,GAAOmH,EAAEtI,KAAKC,EAAMmH,KAAMjG,EACjC,EAQA82B,EAAQe,YAAc,SAAS1wB,EAAG7W,EAAGI,GAAKyW,EAAE7R,KAAK,IAAKhF,GAAGgF,KAAK,IAAK5E,EAAI,EACvEomC,EAAQgB,QAAU,SAAS3wB,EAAGpT,EAAGK,GAAK+S,EAAE7R,KAAK,QAASvB,GAAGuB,KAAK,SAAUlB,EAAI,EAC5E0iC,EAAQnsB,QAAU,SAASxD,EAAG7W,EAAGI,EAAGqD,EAAGK,GACnC+S,EAAEtI,KAAKi4B,EAAQe,YAAavnC,EAAGI,GAAGmO,KAAKi4B,EAAQgB,QAAS/jC,EAAGK,EAC/D,EAaA0iC,EAAQiB,eAAiB,SAAS/5B,EAAGg5B,EAAKn8B,EAAIE,GAC1C,IAAIzK,EAAIuK,EAAG0nB,IAAIvkB,EAAE1N,GACbI,EAAIqK,EAAGwnB,IAAIvkB,EAAEtN,GAEjB,SAAGuP,EAAU3P,IAAM2P,EAAUvP,IAAMsmC,EAAItxB,UAER,SAAxBsxB,EAAItxB,OAAOsK,SACVgnB,EAAI1hC,KAAK,IAAKhF,GAAGgF,KAAK,IAAK5E,GAE3BsmC,EAAI1hC,KAAK,YAAaoM,EAAapR,EAAGI,KAMvC,EACX,EAEAomC,EAAQkB,gBAAkB,SAAS7wB,EAAGtM,EAAIE,GACtCoM,EAAEiV,MAAK,SAASpe,GACZ,IAAIg5B,EAAMx1B,EAAGxK,OAAO2N,MACpBmyB,EAAQiB,eAAe/5B,EAAGg5B,EAAKn8B,EAAIE,EACvC,GACJ,EAEA+7B,EAAQmB,sBAAwB,SAASj6B,EAAGg5B,EAAKn8B,EAAIE,EAAIm9B,EAAWC,GAChEnB,EAAI1hC,KACA,UACCuF,EAAGu9B,gBAAgBp6B,EAAGk6B,IAAcn9B,EAAGq9B,gBAAgBp6B,EAAGm6B,GAAc,KAAO,OAExF,EAEArB,EAAQuB,uBAAyB,SAASC,EAAa3C,GACnD,GAAIA,EAAQ4C,oBAAZ,CAEA,IAAI19B,EAAK86B,EAAQx+B,MACb4D,EAAK46B,EAAQt+B,MAEjBihC,EAAYlc,MAAK,SAASpe,GACtB,IAAIuc,EAAQvc,EAAE,GAAGuc,MACb2d,EAAY3d,EAAM2d,UAClBC,EAAY5d,EAAM4d,UAClBvoC,EAAW4H,EAASozB,QAAQrQ,EAAO,YAAc,WAAa,oBAElE+d,EAAY5jC,UAAU9E,GAAUwsB,MAAK,SAASpe,GAC1C84B,EAAQmB,sBAAsBj6B,EAAGwD,EAAGxK,OAAO2N,MAAO9J,EAAIE,EAAIm9B,EAAWC,EACzE,GACJ,GAduC,CAe3C,EAEArB,EAAQ0B,WAAa,SAAS99B,EAAI+9B,EAAWljC,GAIzC,OAAIkjC,GAAcx4B,EAAUw4B,GAGzB/9B,EAAG0I,SAASs1B,WAAmBD,EAE/BA,EAAY,EAAU,EAClB97B,KAAKwL,MAAMswB,GAN6BljC,GAAQ,CAO3D,EAEAuhC,EAAQ6B,gBAAkB,SAAS36B,EAAGmJ,EAAGyxB,EAAIC,EAAIC,GAC7C3xB,EAAErD,MAAM,OAAQ,QAChB,IAAI4Y,KAAU1e,GAAK,IAAI,IAAM,CAAC,GAAGuc,OAAS,CAAC,GAAGmC,MAAQ,CAAC,EACnDqc,EAAMH,GAAMlc,EAAKrrB,OAAS,EAC1BypB,EAAOge,GAAMpc,EAAK5B,MAAQ,GAE9Bhc,EAAMkH,OAAOmB,EAAG0xB,GAAMnc,EAAK1c,OAC3B82B,EAAQkC,SAAS7xB,EAAG2T,EAAMie,EAC9B,EAEAjC,EAAQhU,eAAiB,SAAS3b,EAAGyxB,EAAIC,EAAIC,GACzC3xB,EAAErD,MAAM,OAAQ,QACfsY,MAAK,SAASpe,GACX,IAAI0e,KAAU1e,GAAK,IAAI,IAAM,CAAC,GAAGuc,OAAS,CAAC,GAAGmC,MAAQ,CAAC,EACnDqc,EAAMH,GAAMlc,EAAKrrB,OAAS,EAC1BypB,EAAOge,GAAMpc,EAAK5B,MAAQ,GAE9BtZ,EAAGxK,OAAO2N,MACL9F,KAAKC,EAAMkH,OAAQ6yB,GAAMnc,EAAK1c,OAC9BnB,KAAKi4B,EAAQkC,SAAUle,EAAMie,EACtC,GACJ,EAEAjC,EAAQkC,SAAW,SAAS7xB,EAAG2T,EAAM2d,GACjCA,GAAaA,GAAa,EAE1B3d,EAAOgc,EAAQmC,UAAUne,EAAM2d,GAE/BtxB,EAAErD,MAAM,CACJ,mBAAoBgX,EACpB,eAAgB2d,EAAY,MAEpC,EAEA3B,EAAQmC,UAAY,SAASne,EAAM2d,GAC/BA,GAAaA,GAAa,EAC1B,IAAIS,EAAMv8B,KAAK9C,IAAI4+B,EAAW,GAa9B,MAXY,UAAT3d,EAAkBA,EAAO,GACX,QAATA,EAAgBA,EAAOoe,EAAM,MAAQA,EAAM,KAClC,SAATpe,EAAiBA,EAAQ,EAAIoe,EAAO,MAAS,EAAIA,EAAO,KAC/C,aAATpe,EAAqBA,EAAQ,EAAIoe,EAAO,MAAS,EAAIA,EAAO,KACnD,YAATpe,EACJA,EAAQ,EAAIoe,EAAO,MAAQA,EAAM,MAAQA,EAAM,MAAQA,EAAM,KAC9C,gBAATpe,IACNA,EAAQ,EAAIoe,EAAO,MAAS,EAAIA,EAAO,MAAQA,EAAM,MAAS,EAAIA,EAAO,MAItEpe,CACX,EAuBAgc,EAAQqC,gBAAkB,SAASnC,EAAKt8B,GACpC,IAAIgL,EAAOlE,EAAGxK,OAAOggC,EAAItxB,QAGzBqxB,EAAaC,IAFFtxB,EAAKW,OACG,IAAM,IAAI,IAAM,CAAC,GAAGkU,OAAS,CAAC,EACxB7f,EAC7B,EAEAo8B,EAAQsC,eAAiB,SAASjyB,EAAGzM,GACjCyM,EAAErD,MAAM,eAAgB,GACvBsY,MAAK,SAASpe,GACX,IAAIk4B,EAAQ10B,EAAGxK,OAAO2N,MAGnB3G,EAAE,GAAGuc,OACJwc,EAAab,EAAOl4B,EAAE,GAAGuc,MAAO7f,EAExC,GACJ,EAEA,IAAI2+B,EAAa5pC,EAAQ,OAEzBqnC,EAAQwC,YAAc,GACtBxC,EAAQyC,YAAc,GACtBzC,EAAQ0C,eAAiB,GACzB1C,EAAQ2C,gBAAkB,CAAC,EAC3B3C,EAAQ4C,YAAc,CAAC,EACvB5C,EAAQ6C,aAAe,CAAC,EACxB7C,EAAQ8C,WAAa,GAErBthC,OAAOD,KAAKghC,GAAYz+B,SAAQ,SAASrC,GACrC,IAAIshC,EAASR,EAAW9gC,GACpBuhC,EAAID,EAAOC,EACfhD,EAAQ8C,WAAWh8B,KACfk8B,EACAj2B,OAAOi2B,GACPvhC,EAEAuhC,EAAI,IACJj2B,OAAOi2B,EAAI,KACXvhC,EAAI,SAERu+B,EAAQwC,YAAYQ,GAAKvhC,EACzBu+B,EAAQyC,YAAYO,GAAKD,EAAOE,EAChCjD,EAAQ0C,eAAeM,GAAKD,EAAO9gC,SAAW,EAE3C8gC,EAAOG,WACNlD,EAAQ2C,gBAAgBK,IAAK,GAE9BD,EAAOI,MACNnD,EAAQ4C,YAAYI,IAAK,EAEzBhD,EAAQ8C,WAAWh8B,KACfk8B,EAAI,IACJj2B,OAAOi2B,EAAI,KACXvhC,EAAI,OAEJuhC,EAAI,IACJj2B,OAAOi2B,EAAI,KACXvhC,EAAI,aAGTshC,EAAOK,SACNpD,EAAQ6C,aAAaG,IAAK,EAElC,IAEA,IAAIK,EAAYrD,EAAQwC,YAAY9kC,OAyBpC,SAAS4lC,EAAcC,EAAclnB,EAAGhf,EAAGgT,GACvC,IAAI/T,EAAOinC,EAAe,IAC1B,OAAOvD,EAAQyC,YAAYnmC,GAAM+f,EAAGhf,EAAGgT,IAAMkzB,GAAgB,IAzBnD,8BAyBmE,GACjF,CAxBAvD,EAAQuD,aAAe,SAAS/xB,GAC5B,GAAGrI,EAAUqI,GACTA,GAAKA,OACF,GAAgB,kBAANA,EAAgB,CAC7B,IAAIgyB,EAAQ,EACThyB,EAAE/I,QAAQ,SAAW,IACpB+6B,EAAQ,IACRhyB,EAAIA,EAAExY,QAAQ,QAAS,KAExBwY,EAAE/I,QAAQ,QAAU,IACnB+6B,GAAS,IACThyB,EAAIA,EAAExY,QAAQ,OAAQ,MAE1BwY,EAAIwuB,EAAQwC,YAAY/5B,QAAQ+I,KACxB,IAAKA,GAAKgyB,EACtB,CAEA,OAAQhyB,EAAI,KAAO6xB,GAAa7xB,GAAK,IACjC,EAAI3L,KAAKkjB,MAAMljB,KAAK9C,IAAIyO,EAAG,GACnC,EAOA,IAAIiyB,EAAe,CAACt1B,GAAI,EAAGoL,GAAI,EAAGI,GAAI,EAAGH,GAAI,GACzCkqB,EAAe,CAACv1B,GAAI,EAAGoL,GAAI,EAAGI,GAAI,EAAGH,GAAI,GACzCmqB,EAAgBlE,EAAa,MAC7BmE,EAAe,CACfC,OAAQ,CAACj1B,KAAM,kBACfk1B,eAAgB,CAACl1B,KAAM,iBAAkBm1B,UAAU,GACnDC,WAAY,CAACp1B,KAAM,iBAAkBqjB,MAAOwR,GAC5CQ,mBAAoB,CAACr1B,KAAM,iBAAkBqjB,MAAOwR,EAAcM,UAAU,GAC5En4B,SAAU,CAACgD,KAAM,iBAAkBqjB,MAAOyR,GAC1CQ,iBAAkB,CAACt1B,KAAM,iBAAkBqjB,MAAOyR,EAAcK,UAAU,IAiB9E/D,EAAQpU,SAAW,SAASsU,EAAKt8B,EAAIugC,EAAY3nC,EAAMgoB,EAAY4f,GAI/D,IAHA,IAAIjmB,EAAMqG,EAAW9mB,OACjB2mC,EAAOT,EAAapnC,GACpB8nC,EAAa,IAAI3mB,MAAMQ,GACnB1gB,EAAI,EAAGA,EAAI0gB,EAAK1gB,IACjB4mC,EAAKN,SACJO,EAAWnmB,EAAM,EAAI1gB,GAAK,CAACkmC,EAAuC,KAAxB,EAAInf,EAAW/mB,GAAG,KAAY+mB,EAAW/mB,GAAG,IAEtF6mC,EAAW7mC,GAAK,CAACkmC,EAAiC,IAAnBnf,EAAW/mB,GAAG,IAAW+mB,EAAW/mB,GAAG,IAI9E,IAAIrB,EAAawH,EAAG9E,YAChBylC,EAAS,IAAMnoC,EAAWqQ,KAAO,IAAM03B,EAEvCvY,EAAWxvB,EAAWooC,MAAMtkC,OAAO,cAClCtC,UAAU,IAAM2mC,GAChBh1B,KAAK,CAAC/S,EAAO8nC,EAAW3qC,KAAK,MAAOjB,EAAI+rC,UAE7C7Y,EAASnc,OAAO3R,SAEhB8tB,EAASpc,QACJ3C,OAAOw3B,EAAKz1B,MACZ0W,MAAK,WACF,IAAI7M,EAAK/N,EAAGxK,OAAO2N,MAChBw2B,EAAKpS,OAAOxZ,EAAGja,KAAK6lC,EAAKpS,OAE5BxZ,EAAGja,KAAK,KAAM+lC,GAEd,IAAIG,EAAQjsB,EAAG7a,UAAU,QACpB2R,KAAK+0B,GACVI,EAAMj1B,OAAO3R,SACb4mC,EAAMl1B,QAAQ3C,OAAO,QAErB63B,EAAMpf,MAAK,SAASpe,GAChB,IAAIgV,EAAKf,EAAUjU,EAAE,IACrBwD,EAAGxK,OAAO2N,MAAMrP,KAAK,CACjBqsB,OAAQ3jB,EAAE,GAAK,IACf,aAAcc,EAAMiU,QAAQC,GAC5B,eAAgBA,EAAGO,YAE3B,GACJ,IAEJyjB,EAAIlzB,MAAMo3B,EAAMO,EAAWJ,EAAQ3gC,IAC9BoJ,MAAMo3B,EAAO,WAAY,MAE9BlE,EAAIpzB,QAAQ,mBAAmB,EACnC,EAmBAkzB,EAAQa,QAAU,SAASX,EAAK0E,EAAUhhC,EAAIg9B,EAAWxB,EAAOjjC,EAAMqjC,EAAUqF,EAAKxF,EAAUzkC,EAAS0kC,EAASC,GAC7G,IAAIuF,EAAwB,WAAbF,EAEZC,IACiB,YAAbxF,GACCzkC,EAAUiqC,EACVvF,EAAUt3B,EAAMgB,SAASpO,KAEzBA,OAAU4P,EACV80B,EAAUuF,IAIlB,IAEItqC,EAAOC,EAOPwH,EAAMyc,EAAWsmB,EACjBC,EALoBxrC,EAAGyU,EAAIE,EAAI82B,EAAItrB,EALnCvd,EAAawH,EAAG9E,YAChBylC,EAAS,IAAMnoC,EAAWqQ,KAAO,IAAMm0B,EAUvCsE,EAAe,CAAC,EAEhBC,EAAMhqB,EAAUmkB,GAChB8F,EAAQp9B,EAAMiU,QAAQkpB,GAEtB1qC,EAAU8kC,EADA4F,EAAI1oB,WAGlB,OAAO2iB,GACH,IAAK,IACD7kC,EAAQ4B,EAAO0J,KAAKqQ,KAAK,GACzB1b,EAAS2B,EAAO0J,KAAKqQ,KAAK,GAK1B8uB,EAAa,OACbE,EAAe,CACXh+B,EANJlF,EAAO,KAAQzH,EAAQ,EAAK,IAAOC,EAAS,EAAK,IAAOD,EAAQ,EAAK,KAAQC,EAAS,EAC/E,MAAQA,EAAS,IAAMD,EADvB,MAEOA,EAAQ,EAAI,EAAK,IAAOC,EAAS,EAAI,EAAK,IAAOD,EAAQ,EAAK,KAAQC,EAAS,EAKzFC,QAASA,EACTyU,OAAQk2B,EACR,gBANJ3mB,EAAY+gB,EAAWrjC,GAMS,MAEhC,MACJ,IAAK,KACD5B,EAAQ4B,EAAO0J,KAAKqQ,KAAK,GACzB1b,EAAS2B,EAAO0J,KAAKqQ,KAAK,GAK1B8uB,EAAa,OACbE,EAAe,CACXh+B,EANJlF,EAAO,IAAOzH,EAAQ,EAAI,EAAK,KAAQC,EAAS,EAAK,IAAOD,EAAQ,EAAK,IAAOC,EAAS,EAClF,QAAUD,EAAQ,IAAMC,EACxB,KAAQD,EAAQ,EAAK,IAAOC,EAAS,EAAI,EAAK,IAAOD,EAAQ,EAAK,IAAOC,EAAS,EAKrFC,QAASA,EACTyU,OAAQk2B,EACR,gBANJ3mB,EAAY+gB,EAAWrjC,GAMS,MAEhC,MACJ,IAAK,IACD5B,EAAQ4B,EAAO0J,KAAKqQ,KAAK,GACzB1b,EAAS2B,EAAO0J,KAAKqQ,KAAK,GAC1BlU,EAAO,KAAQzH,EAAQ,EAAK,IAAOC,EAAS,EAAK,IAAOD,EAAQ,EAAK,KAAQC,EAAS,EAC/E,MAAQA,EAAS,IAAMD,EADvB,MAEOA,EAAQ,EAAI,EAAK,IAAOC,EAAS,EAAI,EAAK,IAAOD,EAAQ,EAAK,KAAQC,EAAS,EACtF,IAAOD,EAAQ,EAAI,EAAK,KAAQC,EAAS,EAAK,IAAOD,EAAQ,EAAK,IAAOC,EAAS,EAClF,QAAUD,EAAQ,IAAMC,EACxB,KAAQD,EAAQ,EAAK,IAAOC,EAAS,EAAI,EAAK,IAAOD,EAAQ,EAAK,IAAOC,EAAS,EACzFikB,EAAYtiB,EAAOA,EAAO0J,KAAKqQ,KAAK,EAAMspB,GAC1CwF,EAAa,OACbE,EAAe,CACXh+B,EAAGlF,EACHvH,QAASA,EACTyU,OAAQk2B,EACR,eAAgB3mB,EAAY,MAEhC,MACJ,IAAK,IAGDumB,EAAa,OAGbA,EAAa,OACbE,EAAe,CACXh+B,EAJJlF,EAAO,KAHPzH,EAAQ4B,GAGc,EAAK,MAAS5B,EAAQ,EAAK,KAFjDC,EAAS2B,GAOL1B,QAASA,EACTyU,OAAQk2B,EACR,gBANJ3mB,EAAY+gB,EAAWrjC,GAMS,MAEhC,MACJ,IAAK,IAGD6oC,EAAa,OAGbA,EAAa,OACbE,EAAe,CACXh+B,EAJJlF,EAAO,OAFPxH,EAAS2B,GAEgB,EAAK,KAH9B5B,EAAQ4B,GAGoC,IAAO3B,EAAS,EAKxDC,QAASA,EACTyU,OAAQk2B,EACR,gBANJ3mB,EAAY+gB,EAAWrjC,GAMS,MAEhC,MACJ,IAAK,IAGD6oC,EAAa,OACbhjC,EAAO,KAHPzH,EAAQ4B,GAGc,EAAK,MAAS5B,EAAQ,EAAK,KAFjDC,EAAS2B,GAGF,MAAS3B,EAAS,EAAK,IAAMD,EAAQ,IAAOC,EAAS,EAC5DikB,EAAYtiB,EAAOA,EAAO0J,KAAKqQ,KAAK,EAAMspB,GAC1CwF,EAAa,OACbE,EAAe,CACXh+B,EAAGlF,EACHvH,QAASA,EACTyU,OAAQk2B,EACR,eAAgB3mB,EAAY,MAEhC,MACJ,IAAK,IACDlkB,EAAQ4B,EACR3B,EAAS2B,EACNqjC,EAAW35B,KAAKuM,GAAK,EACpB2yB,EAASl/B,KAAKqQ,KAAKspB,EAAWrjC,EAAOA,EAAO0J,KAAKuM,KA7GrC5Y,EA+GMgmC,EA/GHvxB,EA+GapI,KAAKuM,GAAK,EA/GnBjE,EA+GsB,EA/GlB82B,EA+GuB9oC,EAAO,EA/G1Bwd,EA+G6Bxd,EAAO0J,KAAKqQ,KAAK,GAAzE6uB,EA9GDE,GAAMtrB,EAAKsrB,IAAOzrC,EAAIyU,IAAOE,EAAKF,IAgHrC+2B,EAAa,SACbE,EAAe,CACXG,GAAI9qC,EAAQ,EACZ+qC,GAAI9qC,EAAS,EACb6hB,EAAG0oB,EACHtqC,QAASA,EACT0U,KAAMi2B,GAKlB,IAAIG,EAAM,CACNnG,GAAS,OACTxkC,GAAW,OACX0kC,GAAW,OACXnjC,EACAqjC,GACF7lC,KAAK,KAEHknC,EAAUzkC,EAAWooC,MAAMtkC,OAAO,aACjCtC,UAAU,IAAM2mC,GAChBh1B,KAAK,CAACg2B,GAAM7sC,EAAI+rC,UAErB5D,EAAQpxB,OAAO3R,SAEf+iC,EAAQrxB,QACH3C,OAAO,WACPyY,MAAK,WACF,IAAI7M,EAAK/N,EAAGxK,OAAO2N,MAWnB,GATA4K,EAAGja,KAAK,CACJX,GAAI0mC,EACJhqC,MAAOA,EAAQ,KACfC,OAAQA,EAAS,KACjBgrC,aAAc,iBAEdC,iBAAkBX,EAAW,aAAe,KAG7ClqC,EAAS,CACR,IAAI8qC,EAAMvqB,EAAUvgB,GAChB+qC,EAAQ39B,EAAMiU,QAAQypB,GACtBE,EAAUF,EAAIjpB,WAEdopB,EAAQptB,EAAG7a,UAAU,QAAQ2R,KAAK,CAAC,IACvCs2B,EAAMp2B,OAAO3R,SACb+nC,EAAMr2B,QACD3C,OAAO,QACPrO,KAAK,CACFjE,MAAOA,EAAQ,KACfC,OAAQA,EAAS,KACjB2U,KAAMw2B,EACN,eAAgBC,GAE5B,CAEA,IAAIE,EAAWrtB,EAAG7a,UAAUonC,GAAYz1B,KAAK,CAAC,IAC9Cu2B,EAASr2B,OAAO3R,SAChBgoC,EAASt2B,QACJ3C,OAAOm4B,GACPxmC,KAAK0mC,EACd,IAEJhF,EAAIlzB,MAAM,OAAQ23B,EAAWJ,EAAQ3gC,IAChCoJ,MAAM,eAAgB,MAE3BkzB,EAAIpzB,QAAQ,kBAAkB,EAClC,EASAkzB,EAAQ+F,cAAgB,SAASniC,GAC7B,IAAIxH,EAAawH,EAAG9E,YAECpG,EAAI6sB,aAAanpB,EAAWooC,MAAO,IAAK,aAC9C5mC,UAAU,iCAAiCE,SAE1D4M,EAAGxK,OAAO0D,GAAIhG,UAAU,oBAAoBkP,QAAQ,mBAAmB,EAC3E,EAEAkzB,EAAQgG,aAAe,SAASpiC,GAC5B,IAAIxH,EAAawH,EAAG9E,YAEApG,EAAI6sB,aAAanpB,EAAWooC,MAAO,IAAK,YAC9C5mC,UAAU,WAAWE,SAEnC4M,EAAGxK,OAAO0D,GAAIhG,UAAU,mBAAmBkP,QAAQ,kBAAkB,EACzE,EAEAkzB,EAAQM,eAAiB,SAAS2F,EAAIxoC,EAAGgB,GACrC,OAAGwnC,GAAMvtC,EAAIq+B,oBAAoBkP,GACtBxoC,EAAIwoC,EAAGvoC,OAASuoC,EAAGxoC,GAAKgB,EAE5BwnC,CACX,EAEAjG,EAAQkG,WAAa,SAAS71B,EAAGoT,EAAO7f,EAAIuiC,GACxC,GAAI91B,EAAElU,OAAN,CAEA,IAAIiqC,EAAMpG,EAAQqG,kBAAkB5iB,GAEpCpT,EAAEiV,MAAK,SAASpe,GACZ84B,EAAQsG,iBAAiBp/B,EAAGwD,EAAGxK,OAAO2N,MAAO4V,EAAO2iB,EAAKxiC,EAAIuiC,EACjE,GANoB,CAOxB,EAEAnG,EAAQsG,iBAAmB,SAASp/B,EAAGg5B,EAAKzc,EAAO2iB,EAAKxiC,EAAIuiC,GACxD,IAAII,EAAS9iB,EAAM8iB,OACfC,EAAaD,EAAO3gB,KASxB,GAPGugB,GAAMA,EAAG1oC,GAAK,QAAa+M,IAARtD,EAAEzJ,IAAiByJ,EAAEzJ,EAAI0oC,EAAG1oC,GAElDyiC,EAAIlzB,MAAM,UACNo5B,EAAIK,kBAAoBL,EAAIK,kBAAkBv/B,QAChCsD,IAATtD,EAAEw/B,GAAmBH,EAAO9rC,QAAUyM,EAAEw/B,IAG9CN,EAAIO,OAAQ,CACX,IAAItqB,EAIAA,EADQ,YAATnV,EAAE0/B,IAAoC,YAAhBL,EAAOpqC,KACxB,EAEAiqC,EAAIO,OAAOz/B,EAAE0/B,IAIrB1/B,EAAE2/B,IAAMxqB,EAEL+pB,EAAIU,iBACHzqB,EAAInV,EAAE2/B,IAAMT,EAAIU,eAAe5/B,IAInC,IAAI1N,EAAIwmC,EAAQuD,aAAar8B,EAAE6/B,IAAMR,EAAOS,SAAW,EAIvD9/B,EAAE+/B,GAAKztC,EAAI,KAAO,IAElB,IAAI0tC,EAAQC,GAAejgC,EAAGuc,GAC1BjoB,EAAW4rC,EAAkBlgC,EAAGuc,GAEpCyc,EAAI1hC,KAAK,IAAK8kC,EAAc9pC,EAAG6iB,EAAG6qB,EAAO1rC,GAC7C,CAEA,IACImqB,EAAW0hB,EAAW1F,EADtB2F,GAAmB,EAIvB,GAAGpgC,EAAEqgC,GACD5F,EAAY6E,EAAWgB,aACvBH,EAAYb,EAAWiB,aACvB9hB,EAAY4gB,EAAOkB,iBAChB,CACH,IAAIC,GAAmBlB,GAAc,CAAC,GAAGjsC,MAEzConC,GACIz6B,EAAEygC,IAAM,GACRD,EAAkB,IAEjBxgC,EAAEuc,OAASvc,EAAEuc,MAAM8iB,OAAO3gB,MAAQ,CAAC,GAAGrrB,MAAQ,GAAK,GACpD,GAAK,EAEM8sC,EAAZ,QAASngC,EAAeA,EAAE0gC,KAAOxB,EAAIyB,UAAU3gC,EAAE4gC,KAE5CpvC,EAAIq+B,oBAAoByP,EAAWt9B,OAAoBlB,EAAMU,YACpD89B,EAAWt9B,MAEzBxQ,EAAIq+B,oBAAoBwP,EAAOr9B,SAC9Byc,EAAY3d,EAAMU,YAClB4+B,GAAmB,GAInB3hB,EADD,OAAQze,EACKA,EAAE29B,IAAMuB,EAAI2B,YAAY7gC,EAAE8gC,IAE1BzB,EAAOr9B,OAASq9B,EAAO0B,QAAU,gBAG9C7B,EAAI8B,kBACHviB,EAAYygB,EAAI8B,gBAAgBhhC,GAExC,CAEA,GAAGA,EAAE+/B,GAGD/G,EAAIn4B,KAAKC,EAAMkH,OAAQyW,GAClB3Y,MAAM,CACH,gBAAiB20B,GAAa,GAAK,KACnCxyB,KAAM,aAEX,CACH+wB,EAAIlzB,MAAM,gBAAiB9F,EAAEihC,QAAU,EAAIxG,GAAa,MAExD,IAAIyG,EAAiB7B,EAAO3a,SAExByc,EAAenhC,EAAEohC,IAClBD,EAAcf,GAAmB,EAC/Be,EAAeD,GAAkBA,EAAe5rC,KAIlD9D,EAAIq+B,oBAAoBsR,KACvBA,EAAeA,EAAa,GACxBzE,EAAayE,KAAeA,EAAe,IAGnD,IAAIlI,EAAgBoG,EAAO1F,QACvBR,EAAeF,GAAiBH,EAAQM,eAAeH,EAAcf,MAAOl4B,EAAEzJ,EAAG,IAErF,GAAG4qC,GAAiC,SAAjBA,EAAyB,CACxC,IAAIE,EAAgBrhC,EAAEshC,IACnBD,EAAejB,GAAmB,EAChCiB,EAAgBH,EAAel/B,MAEpC,IAAIi7B,EAAa1gB,EAAMuB,IACpBsiB,IAAkBnD,GAAc,IAAMj9B,EAAEzJ,GAE3CuiC,EAAQpU,SAASsU,EAAKt8B,EAAIugC,EAAYkE,EAClC,CAAC,CAAC,EAAGE,GAAgB,CAAC,EAAG5iB,IAAa,OAC9C,MAAO,GAAG0a,EAAc,CACpB,IAAIoI,GAAkB,EAClBnJ,EAAUa,EAAcb,SACxBA,GAAW6G,GAAMA,EAAGj9B,QACpBo2B,EAAU6G,EAAGj9B,MACbu/B,GAAkB,GAEtB,IAAIjI,EAAiBR,EAAQM,eAAehB,EAASp4B,EAAEzJ,EAAI0oC,GAAMA,EAAGj9B,OAAU,MAE1Eq3B,EAAiBP,EAAQM,eAAeH,EAAcvlC,QAASsM,EAAEzJ,EAAG,MACpEgjC,EAAmBN,EAAcZ,UACjCmB,EAAcV,EAAQM,eAAeH,EAAchkC,KAAM+K,EAAEzJ,EAAG,GAC9DkjC,EAAkBX,EAAQM,eAAeH,EAAcX,SAAUt4B,EAAEzJ,EAAG,IAC1EgrC,EAAkBA,GAAmBvhC,EAAE29B,KACnCnsC,EAAIq+B,oBAAoBoJ,EAAcf,QACtC1mC,EAAIq+B,oBAAoBoJ,EAAcvlC,UACtClC,EAAIq+B,oBAAoBoJ,EAAcb,UACtC5mC,EAAIq+B,oBAAoBoJ,EAAchkC,OACtCzD,EAAIq+B,oBAAoBoJ,EAAcX,UAE1C,IAAIoB,EAAYnd,EAAMuB,IACnByjB,IAAiB7H,GAAa,IAAM15B,EAAEzJ,GAEzCuiC,EAAQa,QACJX,EAAK,QAASt8B,EAAIg9B,EAClBP,EAAcK,EAAaC,EAC3Bz5B,EAAE29B,IAAK1E,EAAcd,SACrBkB,EAAgBC,EAAgBC,EAExC,MACI/nC,EAAIq+B,oBAAoBpR,GAAa3d,EAAMmH,KAAK+wB,EAAKva,EAAUze,EAAEzJ,IAAMuK,EAAMmH,KAAK+wB,EAAKva,GAGxFgc,GACC35B,EAAMkH,OAAOgxB,EAAKmH,EAE1B,CACJ,EAEArH,EAAQqG,kBAAoB,SAAS5iB,GACjC,IAAIG,EAAM,CAAC,EACP2iB,EAAS9iB,EAAM8iB,OAiBnB,OAbA3iB,EAAImkB,YAAc/H,EAAQ0I,cAAcnC,EAAQ,IAChD3iB,EAAIikB,UAAY7H,EAAQ0I,cAAcnC,EAAQ,QAE3C7lC,EAASozB,QAAQrQ,EAAO,aACvBG,EAAI+iB,OAAS9G,EAAS8I,SAASllB,GAC3Bqc,EAAiBrc,GACjB,WAAa,OAAQ8iB,EAAOpqC,MAAQ,GAAK,CAAG,GAGjDsnB,EAAMmlB,gBACLlwC,EAAImE,WAAW+mB,EAAKoc,EAAQ6I,0BAA0BplB,IAGnDG,CACX,EAEAoc,EAAQ6I,0BAA4B,SAASplB,GACzC,IAAIG,EAAM,CAAC,EAEPklB,EAAgBrlB,EAAMslB,UAAY,CAAC,EACnCC,EAAkBvlB,EAAMwlB,YAAc,CAAC,EAEvC1C,EAAS9iB,EAAM8iB,QAAU,CAAC,EAC1B2C,EAAiBJ,EAAcvC,QAAU,CAAC,EAC1C4C,EAAmBH,EAAgBzC,QAAU,CAAC,EAE9CG,EAAKH,EAAO9rC,QACZ2uC,EAAMF,EAAezuC,QACrB4uC,EAAOF,EAAiB1uC,QACxB6uC,OAAuB9+B,IAAR4+B,EACfG,OAAyB/+B,IAAT6+B,GAEjB3wC,EAAIq+B,oBAAoB2P,IAAO4C,GAAgBC,KAC9C3lB,EAAI6iB,kBAAoB,SAASv/B,GAC7B,IAAI5K,OAAgBkO,IAATtD,EAAEw/B,GAAmBH,EAAO9rC,QAAUyM,EAAEw/B,GAEnD,OAAGx/B,EAAE6hC,SACMO,EAAeF,EAAM9sC,EAErBitC,EAAgBF,EAAOzJ,EAActjC,CAEpD,GAGJ,IAAI0rC,EAAKzB,EAAOr9B,MACZsgC,EAAMN,EAAehgC,MACrBugC,EAAON,EAAiBjgC,OAEzBsgC,GAAOC,KACN7lB,EAAIskB,gBAAkB,SAAShhC,GAC3B,IAAI5K,EAAO4K,EAAE29B,KAAOmD,EAEpB,OAAG9gC,EAAE6hC,SACMS,GAAOltC,EAEPmtC,GAAQntC,CAEvB,GAGJ,IAAIsqC,EAAKL,EAAOpqC,KACZutC,EAAMR,EAAe/sC,KACrBwtC,EAAOR,EAAiBhtC,KACxBytC,OAAuBp/B,IAARk/B,EACfG,OAAyBr/B,IAATm/B,EAcpB,OAZGjpC,EAASozB,QAAQrQ,EAAO,aAAemmB,GAAgBC,KACtDjmB,EAAIkjB,eAAiB,SAAS5/B,GAC1B,IAAI5K,EAAO4K,EAAE2/B,KAAOD,EAAK,EAEzB,OAAG1/B,EAAE6hC,SACMa,EAAeF,EAAM,EAAIptC,EAEzButC,EAAgBF,EAAO,EAAIrtC,CAE1C,GAGGsnB,CACX,EAEAoc,EAAQ8J,yBAA2B,SAASrmB,GACxC,IAAIG,EAAM,CAAC,EAEPklB,EAAgBrlB,EAAMslB,UAAY,CAAC,EACnCC,EAAkBvlB,EAAMwlB,YAAc,CAAC,EAEvCc,EAAWtmB,EAAMumB,UAAY,CAAC,EAC9BC,EAAmBnB,EAAckB,UAAY,CAAC,EAC9CE,EAAqBlB,EAAgBgB,UAAY,CAAC,EAElD9tB,EAAK6tB,EAAS7gC,MACdihC,EAAMF,EAAiB/gC,MACvBkhC,EAAMF,EAAmBhhC,MAa7B,OAXA0a,EAAIymB,oBAAsB,SAASnjC,GAC/B,IAAI5K,EAAO4K,EAAEgV,IAAMA,EAEnB,OAAGhV,EAAE6hC,SACMoB,GAAO7tC,EAEX8tC,IACSD,EAAM7tC,EAAO0L,EAAM0U,WAAWpgB,EAAMsjC,GAExD,EAEOhc,CACX,EAEAoc,EAAQsK,mBAAqB,SAASj6B,EAAGoT,GACrC,GAAIpT,EAAElU,QAAWsnB,EAAMmlB,eAAvB,CAEA,IAAIxC,EAAMpG,EAAQ6I,0BAA0BplB,GACxC8iB,EAAS9iB,EAAM8iB,QAAU,CAAC,EAC1BgE,EAAM,GAEPnE,EAAIK,mBACH8D,EAAIzjC,MAAK,SAASq/B,EAAIj/B,GAClBi/B,EAAGn5B,MAAM,UAAWo5B,EAAIK,kBAAkBv/B,GAC9C,IAGDk/B,EAAI8B,iBACHqC,EAAIzjC,MAAK,SAASq/B,EAAIj/B,GAClBc,EAAMmH,KAAKg3B,EAAIC,EAAI8B,gBAAgBhhC,GACvC,IAGDk/B,EAAIU,gBACHyD,EAAIzjC,MAAK,SAASq/B,EAAIj/B,GAClB,IAAI6/B,EAAK7/B,EAAE6/B,IAAMR,EAAOS,QAAU,EAC9BwD,EAAOpE,EAAIU,eAAe5/B,GAE9Bi/B,EAAG3nC,KAAK,IAAK8kC,EAActD,EAAQuD,aAAawD,GAAKyD,EAAMrD,GAAejgC,EAAGuc,GAAQ2jB,EAAkBlgC,EAAGuc,KAG1Gvc,EAAEsjC,KAAOA,CACb,IAGDD,EAAI7sC,QACH2S,EAAEiV,MAAK,SAASpe,GAEZ,IADA,IAAIi/B,EAAKz7B,EAAGxK,OAAO2N,MACXpQ,EAAI,EAAGA,EAAI8sC,EAAI7sC,OAAQD,IAC3B8sC,EAAI9sC,GAAG0oC,EAAIj/B,EAEnB,GApCyC,CAsCjD,EAEA84B,EAAQ0I,cAAgB,SAASnC,EAAQtS,GACrC,IAAIzQ,EAAOyQ,EAASv7B,EAAIk6B,eAAe2T,EAAQtS,GAAQpB,MAAQ0T,EAE/D,GAAG/iB,EAAM,CACL,IAAIkT,EAAalT,EAAKta,MACtB,IAAIsa,EAAKgB,YAAchB,EAAK0P,WAAax6B,EAAIq+B,oBAAoBL,GAC7D,OAAOgJ,EAAW1I,4BAA4BxT,EAEtD,CACA,OAAO9qB,EAAI+rC,QACf,EAEA,IAAIgG,EAAiB,CACjBpyB,MAAO,EAAGC,KAAM,EAAG3G,OAAQ,EAAGrD,OAAQ,EAAGD,KAAM,GAGnD,SAASq8B,EAAkBr6B,EAAGs6B,EAAcn8B,EAAUo8B,EAAcC,GAChE,IAAIC,EAAQpgC,EAAGxK,OAAOmQ,EAAEzB,OAAOmH,YAE3BvE,GAAqC,IAAjCm5B,EAAaliC,QAAQ,OACzB,OACoC,IAApCkiC,EAAaliC,QAAQ,UAAmB,SAAW,SACnDnL,GAAsC,IAAlCqtC,EAAaliC,QAAQ,QACzB,OACmC,IAAnCkiC,EAAaliC,QAAQ,SAAkB,QAAU,SAKjD4T,EAAIuuB,EAAeA,EAAe,GAAM,EAAI,EAE5CG,GAAYhgC,EAAaugB,UAAUjb,GAAK,GAAK+S,EAAe,EAC5DlP,EAAKu2B,EAAentC,GAAK+e,EACzBlI,EAAgB,IAAX3F,EAAkBi8B,EAAej5B,GAAK6K,GAC1CouB,EAAej5B,GAAK,GAAKu5B,EAAWv8B,EAAW,EAGpD6B,EAAE7R,KAAK,cAAelB,GAClButC,GACAC,EAAMtsC,KAAK,YAAaoM,EAAasJ,EAAIC,GAEjD,CAEA,SAAS62B,EAAmB9jC,EAAGuc,GAC3B,IAAIjV,EAAWtH,EAAE+jC,IAAMxnB,EAAMumB,SAAS7tC,KACtC,OAAQgN,EAAUqF,IAAaA,EAAW,EAAKA,EAAW,CAC9D,CAGAwxB,EAAQkL,eAAiB,SAAS76B,EAAGoT,EAAO7f,GACxC,GAAIyM,EAAElU,OAAN,CAEA,IAAIkuC,EACJ,GAAG5mB,EAAMmlB,eAAgB,CACrB,IAAIxC,EAAMpG,EAAQ8J,yBAAyBrmB,GAC3C4mB,EAAsBjE,EAAIiE,mBAC9B,CAEA,IAAIc,EAAe1nB,EAAM0nB,aACrB/uC,EAAawH,EAAG9E,YAEpBuR,EAAEiV,MAAK,SAASpe,GACZ,IAAIsO,EAAI9K,EAAGxK,OAAO2N,MAEdzT,EAAO+wC,EACPzyC,EAAI0yC,cAAclkC,EAAGuc,EAAO,MAAO,gBACnC/qB,EAAI0yC,cAAclkC,EAAGuc,EAAO,KAAM,QAEtC,GAAIrpB,GAAiB,IAATA,EAAZ,CAKA,GAAG+wC,EAAc,CACb,IAAIE,EAAK5nB,EAAMiB,QAAQ4mB,aACnBC,EAASF,EAAKA,EAAGnkC,EAAGuc,EAAOrnB,GAAc,CAAC,EAC1CovC,EAAc,CAAC,EACnBzL,EAAsByL,EAAa/nB,EAAOvc,EAAEzJ,GAC5C,IAAIguC,EAAOhoB,EAAM/T,OAAS,CAAC,EAC3BtV,EAAO1B,EAAIgzC,mBAAmBtxC,EAAMmxC,EAAQnvC,EAAWuvC,UAAWH,EAAatkC,EAAGukC,EACtF,CAEA,IAAI1rC,EAAMmH,EAAE0kC,IAAMnoB,EAAMooB,aACpBr9B,EAAWw8B,EAAmB9jC,EAAGuc,GACjChV,EAAY47B,EACZA,EAAoBnjC,GACnBA,EAAEgV,IAAMuH,EAAMumB,SAAS9gC,MAE5BsM,EAAEzN,KAAKi4B,EAAQ1lC,KACP4M,EAAE4kC,IAAMroB,EAAMumB,SAAS/gC,OACvBuF,EACAC,GACHrU,KAAKA,GACL2N,KAAKgD,EAAauF,gBAAiB1M,GACnCmE,KAAK2iC,EAAmB3qC,EAAKyO,EAAUtH,EAAE2/B,IAvB9C,MAFIrxB,EAAE1X,QA0BV,GA7CoB,CA8CxB,EAEAkiC,EAAQ+L,kBAAoB,SAAS17B,EAAGoT,GACpC,GAAIpT,EAAElU,QAAWsnB,EAAMmlB,eAAvB,CAEA,IAAIxC,EAAMpG,EAAQ8J,yBAAyBrmB,GAE3CpT,EAAEiV,MAAK,SAASpe,GACZ,IAAI8kC,EAAKthC,EAAGxK,OAAO2N,MACfqO,EAAKkqB,EAAIiE,oBAAoBnjC,GAC7B0kC,EAAK1kC,EAAE0kC,IAAMnoB,EAAMooB,aACnBr9B,EAAWw8B,EAAmB9jC,EAAGuc,GAErCzb,EAAMmH,KAAK68B,EAAI9vB,GACf,IAAI2uB,EAAkBnqC,EAASozB,QAAQrQ,EAAO,YAC9CinB,EAAkBsB,EAAIJ,EAAIp9B,EAAUtH,EAAEsjC,MAAQtjC,EAAE2/B,IAAKgE,EACzD,GAb6C,CAcjD,EAIA,IAqCIoB,EAAYC,EAEhB,SAASC,EAAShG,EAAIiG,EAAKC,GAGvB,OAFGA,IAAalG,EAAKmG,EAAanG,IAE3BiG,EAAMG,EAAOpG,EAAG,IAAMqG,EAAOrG,EAAG,GAC3C,CAEA,SAASqG,EAAOh3B,GACZ,IAAIhE,EAAI9G,EAAG2G,MAAMmE,EAAG,GAEpB,OADAy2B,EAAaz6B,EACNA,CACX,CAEA,SAAS+6B,EAAO/2B,GACZ,IAAIhE,EAAI9G,EAAG2G,MAAMmE,EAAG,GAEpB,OADA02B,EAAa16B,EACNA,CACX,CAEA,SAASi7B,EAAYC,EAAQC,EAAQC,EAAQC,GACzC,IAAIC,EAAMJ,EAAO,GAAKC,EAAO,GACzBI,EAAML,EAAO,GAAKC,EAAO,GACzBK,EAAMJ,EAAO,GAAKD,EAAO,GACzBM,EAAML,EAAO,GAAKD,EAAO,GACzBO,EAAMrnC,KAAK+D,IAAIkjC,EAAMA,EAAMC,EAAMA,EAAKI,KACtCC,EAAMvnC,KAAK+D,IAAIojC,EAAMA,EAAMC,EAAMA,EAAKE,KACtCE,GAAQD,EAAMA,EAAMN,EAAMI,EAAMA,EAAMF,GAAOH,EAC7CS,GAAQF,EAAMA,EAAML,EAAMG,EAAMA,EAAMD,GAAOJ,EAC7CU,EAAS,EAAIH,GAAOF,EAAME,GAC1BI,EAAS,EAAIN,GAAOA,EAAME,GAC9B,MAAO,CACH,CACIZ,EAAOG,EAAO,IAAMY,GAAUF,EAAOE,IACrChB,EAAOI,EAAO,IAAMY,GAAUD,EAAOC,KACtC,CACCf,EAAOG,EAAO,IAAMa,GAAUH,EAAOG,IACrCjB,EAAOI,EAAO,IAAMa,GAAUF,EAAOE,KAGjD,CA5EAxN,EAAQyN,WAAa,SAASC,EAAKb,GAC/B,GAAGa,EAAIhwC,OAAS,EAAK,MAAO,IAAMgwC,EAAI/zC,KAAK,KAC3C,IAEI8D,EAFAuE,EAAO,IAAM0rC,EAAI,GACjBC,EAAW,GAEf,IAAIlwC,EAAI,EAAGA,EAAIiwC,EAAIhwC,OAAS,EAAGD,IAC3BkwC,EAAS7mC,KAAK2lC,EAAYiB,EAAIjwC,EAAI,GAAIiwC,EAAIjwC,GAAIiwC,EAAIjwC,EAAI,GAAIovC,IAG9D,IADA7qC,GAAQ,IAAM2rC,EAAS,GAAG,GAAK,IAAMD,EAAI,GACrCjwC,EAAI,EAAGA,EAAIiwC,EAAIhwC,OAAS,EAAGD,IAC3BuE,GAAQ,IAAM2rC,EAASlwC,EAAI,GAAG,GAAK,IAAMkwC,EAASlwC,EAAI,GAAG,GAAK,IAAMiwC,EAAIjwC,GAG5E,OADAuE,GAAQ,IAAM2rC,EAASD,EAAIhwC,OAAS,GAAG,GAAK,IAAMgwC,EAAIA,EAAIhwC,OAAS,EAEvE,EAEAsiC,EAAQ4N,aAAe,SAASF,EAAKb,GACjC,GAAGa,EAAIhwC,OAAS,EAAK,MAAO,IAAMgwC,EAAI/zC,KAAK,KAAO,IAClD,IAGI8D,EAHAuE,EAAO,IAAM0rC,EAAI,GACjBG,EAAQH,EAAIhwC,OAAS,EACrBiwC,EAAW,CAAClB,EAAYiB,EAAIG,GAAQH,EAAI,GAAIA,EAAI,GAAIb,IAExD,IAAIpvC,EAAI,EAAGA,EAAIowC,EAAOpwC,IAClBkwC,EAAS7mC,KAAK2lC,EAAYiB,EAAIjwC,EAAI,GAAIiwC,EAAIjwC,GAAIiwC,EAAIjwC,EAAI,GAAIovC,IAM9D,IAJAc,EAAS7mC,KACL2lC,EAAYiB,EAAIG,EAAQ,GAAIH,EAAIG,GAAQH,EAAI,GAAIb,IAGhDpvC,EAAI,EAAGA,GAAKowC,EAAOpwC,IACnBuE,GAAQ,IAAM2rC,EAASlwC,EAAI,GAAG,GAAK,IAAMkwC,EAASlwC,GAAG,GAAK,IAAMiwC,EAAIjwC,GAGxE,OADAuE,GAAQ,IAAM2rC,EAASE,GAAO,GAAK,IAAMF,EAAS,GAAG,GAAK,IAAMD,EAAI,GAAK,GAE7E,EA8CA,IAAII,EAAW,CACXC,GAAI,SAASC,EAAIC,EAAI5B,GACjB,MAAO,IACHG,EAAOyB,EAAG,IAAM,IAChB9B,EAAS8B,EAAI,EAAG5B,EACxB,EACA6B,GAAI,SAASF,EAAIC,EAAI5B,GACjB,MAAO,IACHE,EAAO0B,EAAG,IAAM,IAChB9B,EAAS8B,EAAI,EAAG5B,EACxB,EACA8B,IAAK,SAASH,EAAIC,EAAI5B,GAClB,MAAO,IACHG,GAAQwB,EAAG,GAAKC,EAAG,IAAM,GAAK,IAC9B1B,EAAO0B,EAAG,IAAM,IAChB9B,EAAS8B,EAAI,EAAG5B,EACxB,EACA+B,IAAK,SAASJ,EAAIC,EAAI5B,GAClB,MAAO,IACHE,GAAQyB,EAAG,GAAKC,EAAG,IAAM,GAAK,IAC9BzB,EAAOyB,EAAG,IAAM,IAChB9B,EAAS8B,EAAI,EAAG5B,EACxB,GAEAgC,EAAa,SAASL,EAAIC,EAAI5B,GAC9B,MAAO,IACHF,EAAS8B,EAAI,EAAG5B,GAAe,IAC/BF,EAAS8B,EAAI,EAAG5B,EACxB,EAaA,SAASC,EAAanG,EAAI9tB,GACtB,IAAIpW,EAAUkkC,EAAGlkC,QACbwhB,EAAQ0iB,EAAG1iB,MACXvc,EAAIi/B,EAAGj/B,EACPzJ,EAAI0oC,EAAG1oC,EAEX,GAAGwE,GAAWwhB,GACVA,EAAM8iB,QACN9iB,EAAM8iB,OAAOW,MAAQ,MAAQ,GAC7BzjB,EAAMmC,MACe,WAArBnC,EAAMmC,KAAKwZ,MACb,CACE,IAAIkP,EAAe51C,EAAIq+B,oBAAoB90B,GACvCqW,EAAM6tB,EAENh4B,EAAKkK,EAAQA,EAAM,GAAK4zB,GAAc,EACtCtyB,EAAKtB,EAAQA,EAAM,GAAK6zB,GAAc,EAEtC3yB,EAAKjB,EAAI,GACTkB,EAAKlB,EAAI,GAETpE,EAAKqF,EAAKpL,EACVgG,EAAKqF,EAAKG,EAEVtc,EAAIwI,KAAKsT,MAAMhF,EAAID,GAEnBqI,EAAI+xB,EAAersC,EAAQxE,GAAKwE,EAEpC,GAAS,SAANsa,EAAc,CACb,IAAIgyB,EAAOj2B,EAAI7a,EACG,YAAfgmB,EAAMjnB,MAAoB+xC,IAE7B,IAAIC,EAAYl2B,EAAIiuB,OAChBkI,EAAkBD,EAAUxH,OAC7BtuC,EAAIq+B,oBAAoB0X,KAAkBA,EAAkBA,EAAgBF,IAE/E,IAAIG,EAAgBF,EAAUryC,KAC3BzD,EAAIq+B,oBAAoB2X,KAAgBA,EAAgBA,EAAcH,IAEzEhyB,EAAIiyB,EAAYxO,EAAQ0C,eAAe1C,EAAQuD,aAAakL,IAAoBC,EAAgB,EAChGnyB,GAAKyjB,EAAQoH,kBAAkBlgC,EAAEqnC,GAAO9qB,IAAU,CACtD,CAEA,IAAIjqB,EAAI+f,EAAKgD,EAAI1W,KAAKyM,IAAIjV,GACtBzD,EAAI4f,EAAK+C,EAAI1W,KAAK2M,IAAInV,IAGpB7D,GAAK+f,GAAM/f,GAAK2U,GAAQ3U,GAAK+f,GAAM/f,GAAK2U,KACxCvU,GAAK4f,GAAM5f,GAAK+f,GAAQ/f,GAAK4f,GAAM5f,GAAK+f,KAE1CwsB,EAAK,CAAC3sC,EAAGI,GAEjB,CAEA,OAAOusC,CACX,CAnEAnG,EAAQ2O,MAAQ,SAASvP,GACrB,IAAIwP,EAAUd,EAAS1O,IAAUiP,EACjC,OAAO,SAASX,GAGZ,IAFA,IAAI1rC,EAAO,IAAMwqC,EAAOkB,EAAI,GAAG,IAAM,IAAMnB,EAAOmB,EAAI,GAAG,IACrDvvB,EAAMuvB,EAAIhwC,OACND,EAAI,EAAGA,EAAI0gB,EAAK1gB,IACpBuE,GAAQ4sC,EAAQlB,EAAIjwC,EAAI,GAAIiwC,EAAIjwC,GAAIA,IAAM0gB,EAAM,GAEpD,OAAOnc,CACX,CACJ,EA2DAg+B,EAAQsM,aAAeA,EAIvBtM,EAAQ6O,WAAa,WACjB,IAAIC,EAASp2C,EAAIq2C,iBAAiBrkC,EAAGxK,OAAO,QAAS,MAAO,oBAAoB,SAASmQ,GACrFA,EAAE7R,KAAKmhC,EAAgBqP,UAClBhiC,MAAM,CACHgb,SAAU,WACV9Z,KAAM,WACNG,IAAK,WACL9T,MAAO,SACPC,OAAQ,SACR,UAAW,KAEvB,IAKIy0C,EAAUv2C,EAAI6sB,aAAaupB,EAAQ,OAAQ,sBAAsB,SAASz+B,GAC1EA,EAAE7R,KAAK,IAAK,eACPwO,MAAM,CACH,eAAgB,EAChBmC,KAAM,SAElB,IAEA6wB,EAAQ8O,OAASA,EACjB9O,EAAQiP,QAAUA,CACtB,EAwBAjP,EAAQkP,YAAc,CAAC,EACvB,IAAIC,EAAmB,EA+GvB,SAASC,EAASxgC,GACd,IAAIygC,EAAYzgC,EAAKigB,aAAa,oBAClC,GAAiB,OAAdwgB,EACH,OAAOA,EACHzgC,EAAKigB,aAAa,aAClBjgB,EAAKigB,aAAa,eAClBjgB,EAAKigB,aAAa,QAC1B,CAkBA,SAAS8V,EAAW2K,EAAS1rC,GACzB,IAAI0rC,EAAS,OAAO,KAEpB,IAAIxe,EAAUltB,EAAG0I,SACbijC,EAAUze,EAAQ0e,cAAgB,GAAM1e,EAAQ2e,UAAY,GAChE,OAAOF,EACH,QAAWA,EAAU,IAAMD,EAAU,KACrC,QAAUA,EAAU,GAC5B,CA7IAtP,EAAQpyB,KAAO,SAASgB,EAAM8gC,EAAUC,GAUpC,IAAI/rB,EAiDAgsB,EAAUd,EAhDd,GAFIa,IAAMA,EAAOP,EAASxgC,IAEvB+gC,GAEC,GADA/rB,EAAMoc,EAAQkP,YAAYS,GAClB,OAAOj3C,EAAImE,WAAW,CAAC,EAAG+mB,QAC/B,GAA8B,IAA3BhV,EAAKihC,WAAWnyC,OAAc,CAOpC,IAAIoyC,EAAYlhC,EAAKihC,WAAW,GAGhC,GADAF,EAAOP,EAASU,GACP,CACL,IAAIt2C,GAAKs2C,EAAUjhB,aAAa,MAAQ,EACpCj1B,GAAKk2C,EAAUjhB,aAAa,MAAQ,EACpC9a,EAAY+7B,EAAUjhB,aAAa,aAEvC,IAAI9a,EAAW,CAGX,IAAIg8B,EAAU/P,EAAQpyB,KAAKkiC,GAAW,EAAOH,GAS7C,OARGn2C,IACCu2C,EAAQ7hC,MAAQ1U,EAChBu2C,EAAQ3hC,OAAS5U,GAElBI,IACCm2C,EAAQ1hC,KAAOzU,EACfm2C,EAAQzhC,QAAU1U,GAEfm2C,CACX,CAcA,GAHAJ,GAAQ,IAAMn2C,EAAI,IAAMI,EAAI,IAAMma,EAElC6P,EAAMoc,EAAQkP,YAAYS,GAClB,OAAOj3C,EAAImE,WAAW,CAAC,EAAG+mB,EACtC,CACJ,CAEG8rB,EACCE,EAAWhhC,GAEXkgC,EAAS9O,EAAQ8O,OAAOlgC,OAGxBghC,EAAWhhC,EAAKohC,WAAU,GAC1BlB,EAAOn+B,YAAYi/B,IAIvBllC,EAAGxK,OAAO0vC,GACLpxC,KAAK,YAAa,MAClBuJ,KAAKgD,EAAa6I,aAAc,EAAG,GAExC,IAAIq8B,EAAWL,EAAS9hC,wBACpBoiC,EAAUlQ,EAAQiP,QACjBrgC,OACAd,wBAED4hC,GAAUZ,EAAOqB,YAAYP,GAEjC,IAAI7kB,EAAK,CACLvwB,OAAQy1C,EAASz1C,OACjBD,MAAO01C,EAAS11C,MAChB2T,KAAM+hC,EAAS/hC,KAAOgiC,EAAQhiC,KAC9BG,IAAK4hC,EAAS5hC,IAAM6hC,EAAQ7hC,IAC5BD,MAAO6hC,EAAS7hC,MAAQ8hC,EAAQhiC,KAChCI,OAAQ2hC,EAAS3hC,OAAS4hC,EAAQ7hC,KAetC,OATG8gC,GAhGc,MAiGbnP,EAAQkP,YAAc,CAAC,EACvBC,EAAmB,GAIpBQ,IAAM3P,EAAQkP,YAAYS,GAAQ5kB,GACrCokB,IAEOz2C,EAAImE,WAAW,CAAC,EAAGkuB,EAC9B,EAyBAiV,EAAQvsB,WAAa,SAASpD,EAAGi/B,EAAS1rC,GACtCyM,EAAE7R,KAAK,YAAammC,EAAW2K,EAAS1rC,GAC5C,EAYAo8B,EAAQvpB,aAAe,SAASF,GAG5B,IAII65B,GAFY75B,EADHA,EAAQ/X,KAAO,OAAS,gBACL,cAAgB,IAEtBxF,QAJjB,2DAI6B,SAAS2iB,EAAOsyB,EAAIoC,GACtD,MAAO,CAACpC,EAAIoC,GAAI12C,KAAK,IACzB,IACCkiB,MAAM,KAEP,MAAO,CACHriB,GAAI42C,EAAU,IAAM,EACpBx2C,GAAIw2C,EAAU,IAAM,EAE5B,EAEApQ,EAAQlsB,aAAe,SAASyC,EAAS/c,EAAGI,GACxC,IACI02C,EAAS/5B,EAAQ/X,KAAO,OAAS,eACjC+xC,EAASh6B,EAAQ/X,KAAO,OAAS,eACjCuV,EAAYwC,EAAQ+5B,GAAQ,cAAgB,GAWhD,OATA92C,EAAIA,GAAK,EACTI,EAAIA,GAAK,EAETma,EAAYA,EAAU/a,QARb,yBAQyB,IAAIyiB,OAEtC1H,GADAA,GAAanJ,EAAapR,EAAGI,IACP6hB,OAEtBlF,EAAQg6B,GAAQ,YAAax8B,GAEtBA,CACX,EAEAisB,EAAQ3I,SAAW,SAAS9gB,GACxB,IAII65B,GAFY75B,EADHA,EAAQ/X,KAAO,OAAS,gBACL,cAAgB,IAEtBxF,QAJjB,kDAI6B,SAAS2iB,EAAOsyB,EAAIoC,GACtD,MAAO,CAACpC,EAAIoC,GAAI12C,KAAK,IACzB,IACCkiB,MAAM,KAEP,MAAO,CACHriB,GAAI42C,EAAU,IAAM,EACpBx2C,GAAIw2C,EAAU,IAAM,EAE5B,EAEApQ,EAAQ10B,SAAW,SAASiL,EAAS/c,EAAGI,GACpC,IACI02C,EAAS/5B,EAAQ/X,KAAO,OAAS,eACjC+xC,EAASh6B,EAAQ/X,KAAO,OAAS,eACjCuV,EAAYwC,EAAQ+5B,GAAQ,cAAgB,GAWhD,OATA92C,EAAIA,GAAK,EACTI,EAAIA,GAAK,EAETma,EAAYA,EAAU/a,QARb,qBAQyB,IAAIyiB,OAEtC1H,GADAA,GAAa,SAAWva,EAAI,IAAMI,EAAI,KAChB6hB,OAEtBlF,EAAQg6B,GAAQ,YAAax8B,GAEtBA,CACX,EAEA,IAAIy8B,EAAW,UAEfxQ,EAAQyQ,mBAAqB,SAASjmB,EAAWkmB,EAAQC,GAIrD,GAHAD,EAASA,GAAU,EACnBC,EAASA,GAAU,EAEfnmB,EAAJ,CAGA,IAAI5R,EAAoB,IAAX83B,GAA2B,IAAXC,EACzB,GACA,SAAWD,EAAS,IAAMC,EAAS,IAEvCnmB,EAAUlF,MAAK,WACX,IAAIjoB,GAAKwQ,KAAKghB,aAAa,cAAgB,IAAI71B,QAAQw3C,EAAU,IAEjEnzC,GADAA,GAAKub,GACC6C,OACN5N,KAAK+gB,aAAa,YAAavxB,EACnC,GAZqB,CAazB,EAEA,IAAIuzC,EAAiC,yBAmCrC,SAASxJ,EAAkBlgC,EAAGuc,GAC1B,IAAIjoB,EAQJ,OANG0L,IAAG1L,EAAW0L,EAAE2pC,SAEHrmC,IAAbhP,IACCA,EAAWioB,EAAM8iB,QAAS9iB,EAAM8iB,OAAO/qC,UAAgB,GAGvDioB,EAAMqtB,MAASrtB,EAAMstB,IAKlBv1C,GAHKA,CAIhB,CAhDAwkC,EAAQgR,mBAAqB,SAASxmB,EAAWkmB,EAAQC,GACjDnmB,GAEJA,EAAUlF,MAAK,WACX,IAAI2rB,EACAx4B,EAAK/N,EAAGxK,OAAO2N,MACfzT,EAAOqe,EAAGvY,OAAO,QAErB,GAAI9F,EAAKwU,OAAT,CAEA,IAAIpV,EAAI03C,WAAW92C,EAAKoE,KAAK,MAAQ,GACjC5E,EAAIs3C,WAAW92C,EAAKoE,KAAK,MAAQ,GAEjC2yC,GAAqB14B,EAAGja,KAAK,cAAgB,IAAImd,MAAMi1B,GAGvDK,EADU,IAAXP,GAA2B,IAAXC,EACF,GAEA,CACT/lC,EAAapR,EAAGI,GAChB,SAAW82C,EAAS,IAAMC,EAAS,IACnC/lC,GAAcpR,GAAII,IAIvBu3C,GACCF,EAAWnqC,KAAKqqC,GAGpB14B,EAAGja,KAAK,YAAayyC,EAAWt3C,KAAK,IArBd,CAsB3B,GACJ,EAmBAqmC,EAAQoH,kBAAoBA,EAE5B,IAaIgK,EACAC,EACAC,EACAC,EACAC,EACAC,EAlBAt4B,EAAQtT,KAAKsT,MACb7G,EAAMzM,KAAKyM,IACXE,GAAM3M,KAAK2M,IAEf,SAASoY,GAAOvtB,EAAGq0C,GACf,IAAIl4C,EAAIk4C,EAAG,GACP93C,EAAI83C,EAAG,GACX,MAAO,CACHl4C,EAAI8Y,EAAIjV,GAAKzD,EAAI4Y,GAAInV,GACrB7D,EAAIgZ,GAAInV,GAAKzD,EAAI0Y,EAAIjV,GAE7B,CASA,SAAS8pC,GAAejgC,EAAGuc,GACvB,IASIjqB,EAAGI,EATHstC,EAAQhgC,EAAEyqC,QAEDnnC,IAAV08B,KACCA,EAAQzjB,EAAM8iB,OAAOW,SACRxuC,EAAIq+B,oBAAoBmQ,KACjCA,EAAQ,IAKhB,IAAIxjC,EAAM+f,EAAM8iB,OAAOqL,SACvB,GAAW,aAARluC,GAA8B,UAARA,EAAiB,CACtC,GAAG+f,EAAMqtB,KAAM,CACX,IAAIt7B,EAAIiO,EAAMqtB,KAAKpxC,QAAQwH,EAAE2qC,QAC7Br4C,EAAIgc,EAAE,GACN5b,EAAI4b,EAAE,EACV,KAAO,CACH,IAAIzR,EAAK0f,EAAMstB,IACX9sC,EAAKwf,EAAMquB,IACf,IAAG/tC,IAAME,EAKL,OAAO,GAJPzK,EAAIuK,EAAG0nB,IAAIvkB,EAAE1N,GACbI,EAAIqK,EAAGwnB,IAAIvkB,EAAEtN,EAKrB,CAEA,GAAG6pB,EAAMqtB,KAAM,CACX,IAuBIzzC,EAvBA00C,EAAM7qC,EAAE2qC,OAAO,GACfG,EAAM9qC,EAAE2qC,OAAO,GAEfI,EAAQxuB,EAAMqtB,KAAKpxC,QAAQ,CAC3BqyC,EACAC,EAAM,OAGNE,EAAOzuB,EAAMqtB,KAAKpxC,QAAQ,CAC1BqyC,EAAM,KACNC,IAGAG,EAAIh5B,EACJ+4B,EAAK,GAAKt4C,EACVs4C,EAAK,GAAK14C,GAGVgY,EAAI2H,EACJ84B,EAAM,GAAKr4C,EACXq4C,EAAM,GAAKz4C,GAIf,GAAW,UAARkK,EACCrG,EAAI6pC,EAAQ,IAAMrhC,KAAKuM,QAKpB,GAAW,aAAR1O,EAAoB,CAC1B,IAAI0uC,EAAOL,EAAM,IAAMlsC,KAAKuM,GACxBigC,EAAOL,EAAM,IAAMnsC,KAAKuM,GACxBkgC,EAAOlB,EAAc,IAAMvrC,KAAKuM,GAChCmgC,EAAOlB,EAAc,IAAMxrC,KAAKuM,GAEhCogC,EAAOF,EAAOF,EAEdK,EAASngC,EAAIigC,GAAQ//B,GAAIggC,GACzBjkB,EAAS/b,GAAI+/B,GAAQjgC,EAAI+/B,GAAQ//B,EAAIigC,GAAQ//B,GAAI6/B,GAAQ//B,EAAIkgC,GAEjEn1C,GAAK8b,EACDs5B,EACAlkB,GACA1oB,KAAKuM,GAETg/B,EAAcW,EACdV,EAAcW,CAClB,CAEA,IAAIU,EAAI9nB,GAAOunB,EAAG,CAAC7/B,EAAIjV,GAAI,IACvBs1C,EAAI/nB,GAAOpZ,EAAG,CAACgB,GAAInV,GAAI,IAE3B6pC,EAAQ/tB,EACJu5B,EAAE,GAAKC,EAAE,GACTD,EAAE,GAAKC,EAAE,IACT9sC,KAAKuM,GAAK,IAEH,aAAR1O,GACC+tC,IAAqBhuB,EAAMuB,KAC3B9d,EAAEzJ,IAAM+zC,EAAY,IAEpBtK,EAAQ,KAEhB,CAEA,GAAW,aAARxjC,IAAuB+f,EAAMqtB,KAC5B,GACIW,IAAqBhuB,EAAMuB,KAC3B9d,EAAEzJ,IAAM+zC,EAAY,GACpBroC,EAAU3P,IACV2P,EAAUvP,GACZ,CACE,IAAIg5C,EAAKp5C,EAAI83C,EACTuB,EAAKj5C,EAAI23C,EAETnS,EAAQ3b,EAAMmC,MAAOnC,EAAMmC,KAAKwZ,OAAc,GAE9C0T,EAAgB1T,EAAMlL,MAAMkL,EAAM1hC,OAAS,GAC1B,MAAlBo1C,IAAuBD,EAAK,GACV,MAAlBC,IAAuBF,EAAK,GAE/B1L,GAAS/tB,EAAM05B,EAAID,GAAM/sC,KAAKuM,GAAK,IAAM,EAC7C,MACI80B,EAAQ,IAGpB,CAOA,OALAoK,EAAY93C,EACZ+3C,EAAY33C,EACZ43C,EAAYtqC,EAAEzJ,EACdg0C,EAAmBhuB,EAAMuB,IAElBkiB,CACX,CAEAlH,EAAQmH,eAAiBA,E,wBClsDzB,IAwsBI4L,EAAYC,EACZC,EAAWC,EAzsBXC,EAAex6C,EAAQ,OACvB0Y,EAAQ1Y,EAAAA,OAAAA,MAWRy6C,EAAY,QACZC,EAAQxtC,KAAKqQ,KAAK,GAClBo9B,EAAQztC,KAAKqQ,KAAK,GAClB9D,EAAKvM,KAAKuM,GACVE,EAAMzM,KAAKyM,IACXE,EAAM3M,KAAK2M,IAmrBf,SAAS+gC,EAAUrM,GACf,OAAiB,OAAVA,CACX,CAKA,SAASxsC,EAAMwsC,EAAO1rC,EAAUwG,GAC5B,KAAKklC,GAASA,EAAQ,MAAQ,KAAO1rC,EAAU,OAAOwG,EAEtD,GACIixC,IAAc/L,GACdgM,IAAiB13C,GACjBu3C,IAAe/wC,EACjB,OAAOgxC,EAMT,SAASpoB,EAAOvtB,EAAGq0C,GACf,IAAI8B,EAAOlhC,EAAIjV,GACXo2C,EAAOjhC,EAAInV,GAEX7D,EAAIk4C,EAAG,GACP93C,EAAI83C,EAAG,IAAMl2C,GAAY,GAC7B,MAAO,CACHhC,EAAIg6C,EAAO55C,EAAI65C,EACfj6C,EAAIi6C,EAAO75C,EAAI45C,EAEvB,CAdAP,EAAY/L,EACZgM,EAAe13C,EACfu3C,EAAa/wC,EAqBb,IAPA,IAAI3E,EAAI6pC,EAAQ,IAAM90B,EAElB5Y,EAAI,EACJI,EAAI,EACJ85C,EAAMP,EAAanxC,GACnBujC,EAAM,GAEF9nC,EAAI,EAAGA,EAAIi2C,EAAIh2C,OAAQD,IAAK,CAChC,IAAIk2C,EAAOD,EAAIj2C,GACXkf,EAAKg3B,EAAK,GAEV1lC,EAAKzU,EACLyrC,EAAKrrC,EAET,GAAU,MAAP+iB,GAAqB,MAAPA,EACbnjB,GAAKm6C,EAAK,GACV/5C,GAAK+5C,EAAK,QACP,GAAU,MAAPh3B,GAAqB,MAAPA,EACpBnjB,IAAMm6C,EAAK,GACX/5C,IAAM+5C,EAAK,QACR,GAAU,MAAPh3B,EACNnjB,GAAKm6C,EAAK,QACP,GAAU,MAAPh3B,EACNnjB,IAAMm6C,EAAK,QACR,GAAU,MAAPh3B,EACN/iB,GAAK+5C,EAAK,QACP,GAAU,MAAPh3B,EACN/iB,IAAM+5C,EAAK,QACR,GAAU,MAAPh3B,EAAY,CAClBnjB,GAAKm6C,EAAK,GACV/5C,GAAK+5C,EAAK,GAEV,IAAIC,EAAIhpB,EAAOvtB,EAAG,EAAEs2C,EAAK,IAAKA,EAAK,KACnCA,EAAK,GAAKC,EAAE,GACZD,EAAK,GAAKC,EAAE,GACZD,EAAK,IAAMA,EAAK,GAAKzM,CACzB,CAGU,MAAPvqB,GAAqB,MAAPA,IAAYA,EAAK,KACxB,MAAPA,GAAqB,MAAPA,IAAYA,EAAK,KAExB,MAAPA,GAAqB,MAAPA,IACbnjB,GAAKyU,EACLrU,GAAKqrC,GAGT,IAAI0N,EAAI/nB,EAAOvtB,EAAG,CAAC7D,EAAGI,IAEZ,MAAP+iB,GAAqB,MAAPA,IAAYA,EAAK,KAIvB,MAAPA,GAAqB,MAAPA,GACP,MAAPA,GAAqB,MAAPA,IAEdg3B,EAAK,GAAKhB,EAAE,GACZgB,EAAK,GAAKhB,EAAE,IAEhBgB,EAAK,GAAKh3B,EAEV4oB,GAAOoO,EAAK,GAAKA,EAAKzf,MAAM,GAAGv6B,KAAK,IACxC,CAIA,OAFAq5C,EAAczN,EAEPA,CACX,CApxBArsC,EAAOC,QAAU,CACb06C,OAAQ,CACJ7Q,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GACdw3B,EAAS,IAAMC,EAAK,MAAQA,EAAK,IAAMA,EAAK,aAAeA,EAAK,IAAMA,EAAK,IAAMA,EAAK,UAAYA,EAAK,MAC3G,OAAOt4C,EAAWd,EAAMwsC,EAAO1rC,EAAUq4C,GAAUA,CACvD,GAEJE,OAAQ,CACJ/Q,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMs4C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EAAK,IAC3F,GAEJE,QAAS,CACLhR,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIa,EAAK5iC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMy4C,EAAK,QAAUA,EAAK,KAAOA,EAAK,SAAWA,EAAK,IACxF,GAEJC,MAAO,CACHlR,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIe,EAAK9iC,EAAU,GAAJgL,EAAS,GACpB+3B,EAAM/iC,EAAU,IAAJgL,EAAS,GACzB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM44C,EAAM,IAAMD,EAAK,IAAMA,EAAK,IAAMC,EAAM,KAAOD,EAC/E,IAAMA,EAAK,KAAOC,EAAM,KAAOD,EAAK,KAAOA,EAAK,KAAOC,EACvD,IAAMD,EAAK,KAAOA,EAAK,IAAMC,EAAM,IAC3C,GAEJ56C,EAAG,CACCwpC,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAU,GAAJgL,EAAUg3B,EAAO,GAC5BiB,EAAK,IAAMD,EAAK,IAAMA,EACtBE,EAAK,IAAMF,EAAK,KAAOA,EACvBG,EAAK,KAAOH,EAAK,KAAOA,EACxBI,EAAK,KAAOJ,EAAK,IAAMA,EAC3B,OAAO35C,EAAMwsC,EAAO1rC,EAAU,MAAQ64C,EAAKC,EAAKC,EAAKC,EAAKD,EAAKC,EAAKC,EAAKD,EAAKC,EAAKH,EAAKG,EAAKH,EAAK,IACtG,GAEJ,cAAe,CACXtR,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIsB,EAAKrjC,EAAU,EAAJgL,EAAQi3B,EAAO,GAG9B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,KAAOk5C,EAAK,IAFjCrjC,EAAMgL,EAAI,EAAG,GAE+B,IAAMq4B,EAAK,OADvDrjC,EAAMgL,EAAG,GAC4D,IAClF,GAEJ,gBAAiB,CACb2mB,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIsB,EAAKrjC,EAAU,EAAJgL,EAAQi3B,EAAO,GAG9B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,KAAOk5C,EAAK,KAFjCrjC,EAAMgL,EAAI,EAAG,GAEgC,IAAMq4B,EAAK,MADxDrjC,EAAMgL,EAAG,GAC4D,IAClF,GAEJ,gBAAiB,CACb2mB,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIsB,EAAKrjC,EAAU,EAAJgL,EAAQi3B,EAAO,GAG9B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,IAFrB6V,EAAMgL,EAAI,EAAG,GAEmB,KAAOq4B,EAAK,IAAMA,EAAK,KADvDrjC,EAAMgL,EAAG,GAC0D,MAChF,GAEJ,iBAAkB,CACd2mB,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIsB,EAAKrjC,EAAU,EAAJgL,EAAQi3B,EAAO,GAG9B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,KAFrB6V,EAAMgL,EAAI,EAAG,GAEoB,KAAOq4B,EAAK,IAAMA,EAAK,IADxDrjC,EAAMgL,EAAG,GAC0D,MAChF,GAEJ,cAAe,CACX2mB,EAAG,EACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIuB,EAAKtjC,EAAU,GAAJgL,EAAS,GACpBu4B,EAAKvjC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAOo5C,EAAK,KAAOD,EAAK,IAAMA,EAAK,IAAMC,EAAK,IAChF,GAEJ,cAAe,CACX5R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIuB,EAAKtjC,EAAU,GAAJgL,EAAS,GACpBu4B,EAAKvjC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMm5C,EAAK,KAAOC,EAAK,IAAMD,EAAK,KAAOC,EAAK,IAChF,GAEJ,cAAe,CACX5R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIuB,EAAKtjC,EAAU,GAAJgL,EAAS,GACpBu4B,EAAKvjC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMo5C,EAAK,IAAMD,EAAK,KAAOA,EAAK,KAAOC,EAAK,IAChF,GAEJ,cAAe,CACX5R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIuB,EAAKtjC,EAAU,GAAJgL,EAAS,GACpBu4B,EAAKvjC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAOm5C,EAAK,IAAMC,EAAK,KAAOD,EAAK,IAAMC,EAAK,IAChF,GAEJC,SAAU,CACN7R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIjlC,EAAKkD,EAAU,KAAJgL,EAAW,GACtB9C,EAAKlI,EAAU,KAAJgL,EAAW,GACtB4oB,EAAK5zB,GAAOgL,EAAG,GACf1C,EAAKtI,GAAW,KAALgL,EAAY,GAE3B,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM2S,EAAK,IAAMwL,EAAK,IAAMJ,EAAK,IADtDlI,EAAU,KAAJgL,EAAW,GACgD,KAAO9C,EAC7E,KAAOpL,EAAK,IAAMwL,EAAK,MAAQsrB,EAAK,IAC5C,GAEJ6P,QAAS,CACL9R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAInO,EAAK5zB,EAAMgL,EAAG,GACd1C,EAAKtI,EAAMgL,EAAI,EAAG,GAClB7iB,EAAI6X,EAAMgL,EAAIi3B,EAAQ,EAAG,GAC7B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,IAAMhC,EAAI,KAAOmgB,EAAK,IAAMA,EAAK,MAAQsrB,EACnE,KAAOzrC,EAAI,IAAMmgB,EAAK,KAAOA,EAAK,OAASsrB,EAAK,IACxD,GAEJ8P,SAAU,CACN/R,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAInlC,EAAKoD,EAAMgL,EAAG,GACdlO,EAAKkD,EAAMgL,EAAI,EAAG,GAClBziB,EAAIyX,EAAMgL,EAAIi3B,EAAQ,EAAG,GAC7B,OAAO54C,EAAMwsC,EAAO1rC,EAAU,KAAO2S,EAAK,IAAMvU,EAAI,IAAMuU,EAAK,IAAMF,EACjE,MAAQE,EAAK,KAAOvU,EAAI,KAAOuU,EAAK,KAAOF,EAAK,MACxD,GAEJ+mC,QAAS,CACLhS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI99B,EAAIjE,EAAU,KAAJgL,EAAW,GACrBE,EAAIlL,EAAU,KAAJgL,EAAW,GACzB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAO+gB,EAAI,KAAOjH,EAAI,IAAMiH,EAAI,IAAMjH,EAAI,KAAOiH,EAAI,IAAMA,EACrF,IAAMA,EAAI,IAAMjH,EAAI,KAAOiH,EAAI,KAAOjH,EAAI,IAAMiH,EAAI,KAAOA,EAAI,IACvE,GAEJ04B,KAAM,CACFjS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAS,IAAJz3B,EACLlO,EAAKkD,EAAW,KAALyiC,EAAY,GACvBv6B,EAAKlI,EAAW,KAALyiC,EAAY,GACvBoB,EAAK7jC,EAAW,KAALyiC,EAAY,GACvBqB,EAAK9jC,EAAW,KAALyiC,EAAY,GACvB7O,EAAK5zB,GAAOyiC,EAAI,GAChBn6B,EAAKtI,GAAY,KAANyiC,EAAa,GACxBsB,EAAK/jC,EAAW,KAALyiC,EAAY,GACvBuB,EAAKhkC,EAAW,KAALyiC,EAAY,GAE3B,OAAOp5C,EAAMwsC,EAAO1rC,EAAU,IAAM2S,EAAK,IAAMwL,EAAK,IAAMJ,EAAK,IAAM27B,EAAK,IAAME,EAC5E,IAAMD,EAAK,IAAME,EAAK,MAFjBhkC,EAAW,KAALyiC,EAAY,GAEY,KAAOqB,EAAK,IAAME,EACrD,KAAOH,EAAK,IAAME,EAAK,KAAO77B,EAAK,IAAMI,EAAK,KAAOxL,EACrD,MAAQ82B,EAAK,IACrB,GAEJqQ,SAAU,CACNtS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIx5C,EAAIyX,EAAU,IAAJgL,EAAU,GACpBlO,EAAKkD,EAAU,IAAJgL,EAAU,GACrB9C,EAAKlI,EAAU,IAAJgL,EAAU,GACzB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAO+d,EAAK,OAASpL,EAAK,KAAOvU,EAAI,IAAM2f,EACrE,IAAMpL,EAAK,KAAOvU,EAAI,IAAMuU,EAAK,IAAMvU,EAAI,IAAM2f,EACjD,KAAOpL,EAAK,IAAMvU,EAAI,IAAMuU,EAAK,IAAMvU,EAAI,KAAO2f,EAClD,KAAOpL,EAAK,IAAMvU,EAAI,KAAOuU,EAAK,KAAOvU,EAAI,KAAO2f,EAAK,IACjE,GAEJ,mBAAoB,CAChBypB,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAMgL,EAAIi3B,EAAQ,GAAK,GAC3B35B,EAAKtI,EAAU,GAAJgL,EAAS,GACpB7C,EAAKnI,EAAU,IAAJgL,EAAS,GACpB83B,EAAK9iC,EAAU,EAAJgL,EAAO,GAClBk5B,EAAQ,KAAOpB,EAAK,IAAMA,EAAK,UACnC,OAAOz5C,EAAMwsC,EAAO1rC,EAAU,KAAOhC,EAAI,IAAMmgB,EAAK47B,EAAQ/7C,EAAI,IAAMmgB,EAClE47B,EAAQ,MAAQ/7B,EAAK+7B,EAAQ,IAAM/7C,EAAI,IAAMmgB,EAAK,IAC1D,GAEJ,qBAAsB,CAClBqpB,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAMgL,EAAIi3B,EAAQ,GAAK,GAC3B35B,EAAKtI,EAAU,GAAJgL,EAAS,GACpB7C,EAAKnI,EAAU,IAAJgL,EAAS,GACpB83B,EAAK9iC,EAAU,EAAJgL,EAAO,GAClBk5B,EAAQ,KAAOpB,EAAK,IAAMA,EAAK,UACnC,OAAOz5C,EAAMwsC,EAAO1rC,EAAU,IAAMhC,EAAI,KAAOmgB,EAAK47B,EAAQ,IAAM/7C,EAAI,KAAOmgB,EACzE47B,EAAQ,KAAO/7B,EAAK+7B,EAAQ/7C,EAAI,KAAOmgB,EAAK,IACpD,GAEJ,cAAe,CACXqpB,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIoC,EAAKnkC,EAAU,IAAJgL,EAAS,GACpB83B,EAAK9iC,EAAU,EAAJgL,EAAO,GAClBk5B,EAAQ,KAAOpB,EAAK,IAAMA,EAAK,UACnC,OAAOz5C,EAAMwsC,EAAO1rC,EAAU,KAAOg6C,EAAK,KAAOA,EAAKD,EAAQ,IAAMC,EAAK,IAAMA,EAC3ED,EAAQC,EAAK,IAAMA,EAAKD,EAAQC,EAAK,KAAOA,EAC5CD,EAAQ,IAAMC,EAAK,KAAOA,EAAK,IACvC,GAEJ,eAAgB,CACZxS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIoC,EAAKnkC,EAAU,IAAJgL,EAAS,GACpB83B,EAAK9iC,EAAU,IAAJgL,EAAS,GACpBk5B,EAAQ,KAAOpB,EAAK,IAAMA,EAAK,UACnC,OAAOz5C,EAAMwsC,EAAO1rC,EAAU,KAAOg6C,EAAK,KAAOD,EAAQ,KAAOC,EAC5DD,EAAQC,EAAK,KAAOD,EAAQ,MAAQC,EACpCD,EAAQ,IAAMC,EAFY,MAGlC,GAEJ,eAAgB,CACZxS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAU,GAAJgL,EAAS,GACnBziB,EAAIyX,EAAU,IAAJgL,EAAS,GACvB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQ5B,EAAI,IAAMJ,EAAI,SAAWI,EAAI,KAAOJ,EAAI,MAClF,GAEJ,eAAgB,CACZwpC,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAU,IAAJgL,EAAS,GACnBziB,EAAIyX,EAAU,GAAJgL,EAAS,GACvB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQ5B,EAAI,IAAMJ,EAAI,SAAWI,EAAI,KAAOJ,EAAI,MAClF,GAEJi8C,UAAW,CACPzS,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMs4C,EAAK,IAAMA,EAAK,KAAOA,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IACvG,EACA3Q,OAAO,GAEXuS,OAAQ,CACJ1S,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMs4C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EAAK,KAAOA,EAAK,IACvG,EACA3Q,OAAO,GAEX,eAAgB,CACZH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQs4C,EAAK,KAAOA,EAAK,IAAMA,EAAK,OAASA,EACvE,IAAMA,EAAK,MAAQA,EAAK,IAAMA,EAAK,aAAeA,EAClD,IAAMA,EAAK,IAAMA,EAAK,UAAYA,EAAK,MAC/C,EACA5Q,UAAU,EACVC,OAAO,GAEX,WAAY,CACRH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GACd83B,EAAK9iC,EAAMgL,EAAIg3B,EAAO,GAC1B,OAAO34C,EAAMwsC,EAAO1rC,EAAU,IAAM24C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EACnE,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EACzC,IAAML,EAAK,MAAQA,EAAK,IAAMA,EAAK,aAAeA,EAClD,IAAMA,EAAK,IAAMA,EAAK,UAAYA,EAAK,MAC/C,EACA5Q,UAAU,EACVC,OAAO,GAEX,eAAgB,CACZH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQs4C,EAAK,KAAOA,EAAK,IAAMA,EAAK,OAASA,EACvE,IAAMA,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EAAK,IACjE,EACA5Q,UAAU,EACVC,OAAO,GAEX,WAAY,CACRH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIU,EAAKziC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMs4C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EACnE,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EACzC,IAAMA,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EAAK,IACjE,EACA5Q,UAAU,EACVC,OAAO,GAEX,gBAAiB,CACbH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIa,EAAK5iC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMy4C,EAAK,QAAUA,EAAK,KAAOA,EAAK,SAAWA,EAAjD,QACjBA,EAAK,IAAMA,EAAK,KAAOA,EAAK,MAAQA,EACrD,EACA/Q,UAAU,EACVC,OAAO,GAEX,YAAa,CACTH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIa,EAAK5iC,EAAU,IAAJgL,EAAS,GACpBu4B,EAAKvjC,EAAU,IAAJgL,EAAU,GACzB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMy4C,EAAK,QAAUA,EAAK,KAAOA,EAAK,SAAWA,EAAjD,MACnBW,EAAK,KAAOA,EAAK,IAAMA,EAAK,IAAMA,EACzC,KAAOA,EAAK,IAAMA,EAAK,IAAMA,EAAK,KAAOA,EACjD,EACA1R,UAAU,EACVC,OAAO,GAEX,aAAc,CACVH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIe,EAAK9iC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQ24C,EAAK,KAAOA,EAAK,IAAMA,EAAK,OAASA,EAC/E,EACAjR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,SAAU,CACNJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM64C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EACnE,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EACjD,EACAnR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZuS,SAAU,CACN3S,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIe,EAAK9iC,EAAU,IAAJgL,EAAS,GACpBy3B,EAAKziC,EAAU,IAAJgL,EAAU,GACzB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQ24C,EAAK,KAAOA,EAAK,IAAMA,EAAK,OAASA,EACvE,IAAML,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EACzC,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EACjD,EACA5Q,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZuM,KAAM,CACF3M,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIuB,EAAKtjC,EAAMgL,EAAI,EAAG,GAClBu4B,EAAKvjC,EAAMgL,EAAG,GAElB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAMm5C,EAAK,IAAMC,EAAK,KAAOA,EACvD,KAAOD,EAAKC,GAAM,KAAOA,EAAK,IAAMA,EACpC,IAAMA,EAAK,IAAMD,EAAK,KAAOC,EAC7B,KAAOA,EAAK,KAAOD,EAAKC,GAAM,IAAMA,EAC5C,EACA1R,UAAU,EACVE,QAAQ,GAEZ,OAAQ,CACJJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAU,IAAJgL,EAAS,GACnB4oB,EAAK5zB,EAAU,IAAJgL,EAAS,GACpB1C,EAAKtI,EAAU,GAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAOhC,EAAI,IAAMmgB,EAAK,QAAUngB,EAAI,IAAMmgB,EAAK,WAAasrB,EAAK,OACnG,EACA/B,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,SAAU,CACNJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAI55C,EAAI6X,EAAU,IAAJgL,EAAS,GACnB4oB,EAAK5zB,EAAU,IAAJgL,EAAS,GACpB1C,EAAKtI,EAAU,GAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAOhC,EAAI,KAAOmgB,EAAK,QAAUngB,EAAI,KAAOmgB,EAAK,UAAYsrB,EAAK,OACpG,EACA/B,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,SAAU,CACNJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIx5C,EAAIyX,EAAU,IAAJgL,EAAS,GACnBpO,EAAKoD,EAAU,IAAJgL,EAAS,GACpBlO,EAAKkD,EAAU,GAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM2S,EAAK,IAAMvU,EAAI,QAAUuU,EAAK,KAAOvU,EAAI,SAAWqU,EAAK,SACjG,EACAi1B,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,UAAW,CACPJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIx5C,EAAIyX,EAAU,IAAJgL,EAAS,GACnBpO,EAAKoD,EAAU,IAAJgL,EAAS,GACpBlO,EAAKkD,EAAU,GAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAO2S,EAAK,IAAMvU,EAAI,SAAWuU,EAAK,KAAOvU,EAAI,QAAUqU,EAAK,SAClG,EACAi1B,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,UAAW,CACPJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIe,EAAK9iC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM24C,EAAK,OAASA,EACtD,EACAjR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,UAAW,CACPJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIe,EAAK9iC,EAAU,IAAJgL,EAAS,GACxB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,MAAQ24C,EAAK,KAAOA,EACtD,EACAjR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,UAAW,CACPJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM64C,EAAK,KAAOA,EAAK,KAAOA,EAAK,IAAMA,EAC3E,EACAnR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,UAAW,CACPJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,IAAM64C,EAAK,IAAMA,EAAK,KAAOA,EAAK,KAAOA,EAC3E,EACAnR,UAAU,EACVC,OAAO,EACPC,QAAQ,GAEZ,WAAY,CACRJ,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAElB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,SAAW64C,EAAK,IADrChjC,EAAU,EAAJgL,EAAO,GACmC,IAAMg4B,EAAK,IACxE,EACApyC,QAAS,EACTkhC,OAAO,GAEX,aAAc,CACVH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAElB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,SAAW64C,EAAK,KADrChjC,EAAU,EAAJgL,EAAO,GACoC,IAAMg4B,EAAK,IACzE,EACAlR,OAAO,GAEX,aAAc,CACVH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAU,EAAJgL,EAAO,GAClBu5B,EAAKvkC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,QAAU64C,EAAK,KAAOuB,EAAK,IAAMA,EAAK,IACxE,EACAzS,OAAO,GAEX,cAAe,CACXH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAU,EAAJgL,EAAO,GAClBu5B,EAAKvkC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,SAAW64C,EAAK,KAAOuB,EAAK,IAAMA,EAAK,IACzE,EACAzS,OAAO,GAEX,eAAgB,CACZH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAElB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAO64C,EAAK,MAAQA,EAAK,SAAWA,EAAK,IAD9DhjC,EAAU,EAAJgL,EAAO,GAC4D,IAAMg4B,EAAK,IACjG,EACApyC,QAAS,EACTihC,UAAU,EACVC,OAAO,GAEX,iBAAkB,CACdH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAMgL,EAAG,GAElB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,KAAO64C,EAAK,MAAQA,EAAK,SAAWA,EAAK,KAD9DhjC,EAAU,EAAJgL,EAAO,GAC6D,IAAMg4B,EAAK,IAClG,EACAnR,UAAU,EACVC,OAAO,GAEX,iBAAkB,CACdH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAU,EAAJgL,EAAO,GAClBu5B,EAAKvkC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,OAASo6C,EAAK,IAAMA,EAAK,QAAUvB,EAAK,KAAOuB,EAAK,IAAMA,EAAK,IACjG,EACA1S,UAAU,EACVC,OAAO,GAEX,kBAAmB,CACfH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIiB,EAAKhjC,EAAU,EAAJgL,EAAO,GAClBu5B,EAAKvkC,EAAMgL,EAAG,GAClB,OAAO3hB,EAAMwsC,EAAO1rC,EAAU,OAASo6C,EAAK,IAAMA,EAAK,SAAWvB,EAAK,KAAOuB,EAAK,IAAMA,EAAK,IAClG,EACA1S,UAAU,EACVC,OAAO,GAEXttB,MAAO,CACHmtB,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIyC,EAAYzjC,EAAK,IACjB5Y,EAAI,EAAI6iB,EAAI/J,EAAIujC,GAChBj8C,EAAI,EAAIyiB,EAAI7J,EAAIqjC,GAEpB,OAAOn7C,EAAMwsC,EAAO1rC,EAChB,SACOhC,EAAI,IAAMI,EACjB,IAAMJ,EAAI,IAAMI,EAChB,IAER,EACAqI,QAAS,GACTkhC,OAAO,GAEX,aAAc,CACVH,EAAG,GACHC,EAAG,SAAS5mB,EAAG6qB,EAAO1rC,GAClB,GAAG+3C,EAAUrM,GAAQ,OAAOkM,EAE5B,IAAIyC,EAAYzjC,EAAK,EACjB5Y,EAAI,EAAI6iB,EAAI/J,EAAIujC,GAChBj8C,EAAI,EAAIyiB,EAAI7J,EAAIqjC,GAEpB,OAAOn7C,EAAMwsC,EAAO1rC,EAChB,SACOhC,EAAI,IAAMI,EACjB,KAAO,EAAIyiB,EAAI,IAAM,EAAIA,EAAI,UAAY7iB,EAAI,IAAMI,EACnD,IAER,EACAqI,QAAS,GACTkhC,OAAO,G,oBC/rBfjqC,EAAOC,QAAU,CACbI,QAAS,CACLE,QAAS,UACTmJ,SAAU,OACVlJ,YAAa,CACT,gEACFC,KAAK,MAEX6C,KAAM,CACF/C,QAAS,aACTuJ,OAAQ,CAAC,UAAW,WAAY,OAAQ,QACxCJ,SAAU,OACVlJ,YAAa,CACT,uDAEA,0DACA,gCAEA,8DACA,mDAEA,6DACA,mBAEA,6DACFC,KAAK,MAEXm8C,UAAW,CACPr8C,QAAS,UACTmJ,SAAU,OACVlJ,YAAa,CACT,gEACA,oBACA,kEACFC,KAAK,MAEXo8C,MAAO,CACHt8C,QAAS,aACTmJ,SAAU,OACVlJ,YAAa,CACT,4DACA,uDACFC,KAAK,MAEXq8C,WAAY,CACRv8C,QAAS,aACTmJ,SAAU,OACVlJ,YAAa,CACT,kEACA,yDACA,uDACFC,KAAK,MAEXs8C,MAAO,CACHx8C,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACNmE,SAAU,OACVlJ,YAAa,CACT,0CACA,kDACA,mEACA,mBACFC,KAAK,MAEXu8C,WAAY,CACRz8C,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACNmE,SAAU,OACVlJ,YAAa,CACT,0CACA,kDACA,mEACA,wBACA,0DACFC,KAAK,MAEXw8C,SAAU,CACN18C,QAAS,UACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,SAEdwzC,cAAe,CACX38C,QAAS,UACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,SAEdyzC,YAAa,CACT58C,QAAS,UACTmJ,SAAU,QAEd0zC,YAAa,CACT78C,QAAS,UACTmJ,SAAU,SAEdsG,MAAO,CACHzP,QAAS,QACTmJ,SAAU,QACVlJ,YAAa,2CAEjBukB,UAAW,CACPxkB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,QACVlJ,YAAa,iDAEjBa,MAAO,CACHd,QAAS,SACTqJ,IAAK,EACLF,SAAU,OACVlJ,YAAa,CACT,uDACA,sBACFC,KAAK,MAEXiJ,SAAU,OAEVa,YAAa,CACThJ,QAAS,CACLhB,QAAS,SACTmJ,SAAU,QACVlJ,YAAa,CACT,YACA,kEACFC,KAAK,O,wBCjInB,IAAIwP,EAAYxQ,EAAQ,OAEpB+H,EAAW/H,EAAQ,OACnBkD,EAAOlD,EAAQ,OACfD,EAAMC,EAAQ,OAEd49C,EAAmB59C,EAAQ,OAkB/B,SAAS69C,EAAYC,EAAWhzB,EAAOjhB,EAAMk0C,GACzC,IAAIp4C,EAAOmlB,EAAM,SAAWizB,IAAU,CAAC,EAEnCzqB,EAAO,GAEX,GAHiB3tB,EAAK/E,UAAqD,IAA1C,CAAC,SAAU,OAAOkP,QAAQjG,EAAKhG,MAGhE,CAIA,IAFA,IAAIm6C,EAAeJ,EAAiBj4C,GAE5Bb,EAAI,EAAGA,EAAIg5C,EAAU/4C,OAAQD,IAAK,CACtC,IAAIm5C,EAASH,EAAUh5C,GAEnBo5C,EAAMD,EAAOn5C,EAGjB,QAAW+M,IAARqsC,EAAmBA,EAAMp5C,OAWvB,GAAW,OAARo5C,EAAc,SAEtB,IAAIC,EAAYF,EAAOF,GAEvB,GAAIvtC,EAAU3G,EAAKu0C,IAAID,IAAvB,CAEA,IAAIE,EAASL,EAAaG,EAAWD,GACrC,GAAG1tC,EAAU6tC,EAAO,KAAO7tC,EAAU6tC,EAAO,IAAK,CAC7C,IAAIC,EAAOL,EAAOF,EAAQ,KAAOI,EAAYE,EAAO,GAChDE,EAAMN,EAAOF,EAAQ,KAAOI,EAAYE,EAAO,GACnD/qB,EAAKnlB,KAAKmwC,EAAMC,EACpB,CAP4C,CAQhD,CAEA,IAAI1yC,EAAOhC,EAAKiC,IACZ0yC,EAAe1zB,EAAMpf,UAAUG,GAC/BD,EAAW1I,EAAK2J,aAChBhD,EACAypB,EACAvzB,EAAImE,WAAW,CAACu6C,OAAQD,EAAa74C,KAAK84C,QAAS,CAACC,QAAQ,KAEhEF,EAAar0C,IAAMq0C,EAAar0C,IAAI2E,OAAOlD,EAASzB,KACpDq0C,EAAap0C,IAAMo0C,EAAap0C,IAAI0E,OAAOlD,EAASxB,IA3C/B,CA4CzB,CAjEA7J,EAAOC,QAAU,SAAcyK,GAG3B,IAFA,IAAI+f,EAAW/f,EAAG+f,SAEVlmB,EAAI,EAAGA,EAAIkmB,EAASjmB,OAAQD,IAAK,CACrC,IAAIg5C,EAAY9yB,EAASlmB,GACrBgmB,EAAQgzB,EAAU,GAAGhzB,MAEzB,IAAqB,IAAlBA,EAAMlqB,SAAoBmH,EAASozB,QAAQrQ,EAAO,eAAgB,CACjE,IAAI1f,EAAKlI,EAAKmI,UAAUJ,EAAI6f,EAAMpjB,OAC9B4D,EAAKpI,EAAKmI,UAAUJ,EAAI6f,EAAMljB,OAClCi2C,EAAYC,EAAWhzB,EAAO1f,EAAI,KAClCyyC,EAAYC,EAAWhzB,EAAOxf,EAAI,IACtC,CACJ,CACJ,C,oBCiDA,SAASqzC,EAAsB96C,EAAMy5C,GACjC,MAAY,YAATz5C,EACQ,SAAS+6C,GACZ,OAAO1xC,KAAK6M,IAAI6kC,EAAStB,EAAQ,IACrC,EAEQ,aAATz5C,EACQ,WACH,OAAOqJ,KAAK6M,IAAIujC,EACpB,EAEQ,SAATz5C,EACQ,SAAS+6C,GACZ,OAAO1xC,KAAKqQ,KAAKrQ,KAAK6M,IAAI6kC,GAC9B,OAHJ,CAKJ,CAvEAr+C,EAAOC,QAAU,SAA0BmF,GACvC,IAAI9B,EAAO8B,EAAK9B,KACZs5C,EAAYx3C,EAAKw3C,UAErB,GAAY,SAATt5C,EAAiB,CAChB,IAAIu5C,EAAQz3C,EAAKy3C,OAAS,GAE1B,GAAGD,EACC,OAAO,SAAsByB,EAAQnsC,GACjC,IAAImQ,GAAQw6B,EAAM3qC,GAClB,MAAO,CAACmQ,EAAKA,EACjB,EAEA,IAAIy6B,EAAa13C,EAAK03C,YAAc,GACpC,OAAO,SAAsBuB,EAAQnsC,GACjC,IAAImQ,GAAOw6B,EAAM3qC,GACbosC,GAAYxB,EAAW5qC,GAI3B,OAAIqsC,MAAMl8B,IAASk8B,MAAMD,GAGlB,CAACE,IAAKA,KAFF,CAACF,GAAY,EAAGj8B,GAAO,EAGtC,CAER,CACI,IAAIo8B,EAAoBL,EAAsB96C,EAAM8B,EAAK23C,OACrD2B,EAAyBN,EAAsB96C,EAAM8B,EAAK43C,YAE9D,OAAGJ,QAAiCtrC,IAApBlM,EAAK43C,WACV,SAAsBqB,GACzB,IAAIh8B,EAAMo8B,EAAkBJ,GAC5B,MAAO,CAACh8B,EAAKA,EACjB,EAEO,SAAsBg8B,GACzB,MAAO,CACHK,EAAuBL,GACvBI,EAAkBJ,GAE1B,CAGZ,C,wBC5DA,IAAIpuC,EAAYxQ,EAAQ,OAEpB+H,EAAW/H,EAAQ,OACnBD,EAAMC,EAAQ,OACd4oB,EAAW5oB,EAAQ,OAEnBsF,EAAatF,EAAQ,OAGzBO,EAAOC,QAAU,SAAS0+C,EAASC,EAAUC,EAAcz5C,GACvD,IAAI05C,EAAU,SAAW15C,EAAKkE,KAC1Bqf,EAAeN,EAASQ,aAAa+1B,EAAUE,GAC/Cp2B,EAAci2B,EAAQG,IAAY,CAAC,EAEvC,SAASz5C,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOqjB,EAAaC,EAAc5jB,EAAYO,EAAMC,EACnE,CAUA,IAAe,IAFDF,EAAO,eALKiM,IAAtBoX,EAAYm0B,YACUvrC,IAAtBoX,EAAYq0B,OACS,SAArBr0B,EAAYplB,MAKhB,CAEA,IAAIA,EAAO+B,EAAO,OAAQ,UAAWqjB,EAAc,OAAS,WACxDk0B,GAAY,EAEJ,SAATt5C,IACCs5C,EAAYv3C,EAAO,eACH,SAAT/B,EAAkB,aAAe,gBAAiBolB,KAGjD,SAATplB,GACC+B,EAAO,SACPA,EAAO,YACHu3C,IACAv3C,EAAO,cACPA,EAAO,mBAEI,YAAT/B,GAA+B,aAATA,IAC5B+B,EAAO,SACHu3C,GAAWv3C,EAAO,eAG1B,IAAI05C,EAAW,QAAU35C,EAAK45C,QAAU,QACxC,GAAG55C,EAAK45C,SACaJ,EAAS,SAAWx5C,EAAK45C,UACxB,CAAC,GAAG3+C,SAClBgF,EAAO05C,IAAYr2B,EAAY1Y,OACZC,EAAUyY,EAAY3D,YACtB9U,EAAUyY,EAAYrnB,SAG7C+D,EAAK45C,SAAYr2B,EAAao2B,KAC9B15C,EAAO,QAASw5C,GAChBx5C,EAAO,aACPA,EAAO,QAASmC,EAASozB,QAAQgkB,EAAU,QAAU,EAAI,GAlCjC,CAoChC,C,wBC9DA,IAAIp/C,EAAMC,EAAQ,OACdU,EAAcV,EAAAA,OAAAA,YAEdsF,EAAatF,EAAQ,OAErBw/C,EAAU,CACVC,QAAS1/C,EAAImE,WAAW,CAAC,EAAGoB,GAC5Bo6C,QAAS3/C,EAAImE,WAAW,CAAC,EAAGoB,WAEzBk6C,EAAQC,QAAQ9B,mBAChB6B,EAAQE,QAAQ/B,mBAChB6B,EAAQE,QAAQhC,YAEvB,IAAIiC,EAAW,CACXF,QAAS1/C,EAAImE,WAAW,CAAC,EAAGoB,GAC5Bo6C,QAAS3/C,EAAImE,WAAW,CAAC,EAAGoB,GAC5Bs6C,QAAS7/C,EAAImE,WAAW,CAAC,EAAGoB,WAEzBq6C,EAASF,QAAQ/B,mBACjBiC,EAASD,QAAQhC,mBACjBiC,EAASC,QAAQlC,mBACjBiC,EAASC,QAAQjC,YAExBp9C,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,YAENqB,OAAQ,CACJ43C,OAAQ,CACJC,QAASN,EACTO,IAAKP,EACLQ,UAAWR,EACXS,UAAWv/C,EAAYi/C,EAAU,OAAQ,UACzCO,UAAWx/C,EAAY8+C,EAAS,OAAQ,YAIhD7nB,eAAgB33B,EAAQ,OAExB2rB,KAAM3rB,EAAQ,OACd49C,iBAAkB59C,EAAQ,OAE1BmgD,KAAMngD,EAAQ,OACdqU,MAAOrU,EAAQ,OACfogD,UAGJ,SAAmBC,EAAWv1B,EAAOw1B,IAC7Bx1B,EAAM40B,SAAW,CAAC,GAAG9+C,UACrB0/C,EAAWC,KAAOF,EAAUG,GAAKH,EAAUp/C,EACvC6pB,EAAM40B,QAAQvC,YAAWmD,EAAWG,QAAUJ,EAAUp/C,EAAIo/C,EAAUK,MAE1E51B,EAAM20B,SAAW,CAAC,GAAG7+C,UACrB0/C,EAAWK,KAAON,EAAUO,GAAKP,EAAUx/C,EACvCiqB,EAAM20B,QAAQtC,YAAWmD,EAAWO,QAAUR,EAAUx/C,EAAIw/C,EAAUS,IAElF,E,wBCxDA,IAAI/uC,EAAK/R,EAAQ,OACbwQ,EAAYxQ,EAAQ,OAEpBkS,EAAUlS,EAAQ,MAClBknC,EAAWlnC,EAAQ,OAEvBO,EAAOC,QAAU,SAAcyK,EAAI40C,EAAQkB,EAAUC,GACjD,IAEI51C,EAAK21C,EAASr5C,MACd4D,EAAKy1C,EAASn5C,MAEdq5C,EAAeD,GAAkBA,EAAeE,SAAW,EAC3DC,EAAWl2C,EAAG0I,SAASs1B,WAE3B4W,EAAOlzB,MAAK,SAASpe,GACjB,IAQI6yC,EARAt2B,EAAQvc,EAAE,GAAGuc,MAKbu2B,EAAOv2B,EAAM20B,SAAW,CAAC,EACzB6B,EAAOx2B,EAAM40B,SAAW,CAAC,EAI1B50B,EAAMy2B,MACLH,EAAU,SAAS7yC,GAAI,OAAOA,EAAErJ,EAAG,GAGvC,IAAIs8C,EACAta,EAASua,WAAW32B,IACpBA,EAAM8iB,OAAO8T,aAAe,EAG5BJ,EAAK1gD,SAAYygD,EAAKzgD,UAAS2N,EAAI,IAEvC,IAAIozC,EAAY5vC,EAAGxK,OAAO2N,MAAMjQ,UAAU,cACrC2R,KAAKrI,EAAG6yC,GAIb,GAFAO,EAAU7qC,OAAO3R,SAEboJ,EAAExJ,OAAN,CAEIs8C,EAAKzgD,SAAS+gD,EAAU18C,UAAU,eAAeE,SACjDm8C,EAAK1gD,SAAS+gD,EAAU18C,UAAU,eAAeE,SAErDw8C,EAAUttC,MAAM,UAAW,GAE3B,IAAIwC,EAAQ8qC,EAAU9qC,QAAQ3C,OAAO,KAChCC,QAAQ,YAAY,GAEtB8sC,GACCpqC,EAAMxC,MAAM,UAAW,GAAGutC,aACrBV,SAASF,EAAeE,UACxB7sC,MAAM,UAAW,GAG1BnC,EAAQ4I,WAAW6mC,EAAWZ,EAASc,YAAa52C,GAEpD02C,EAAUh1B,MAAK,SAASpe,GACpB,IAAIuzC,EAAW/vC,EAAGxK,OAAO2N,MACrB6sC,EAmEhB,SAAqBxzC,EAAGnD,EAAIE,GACxB,IAAI2f,EAAM,CACNpqB,EAAGuK,EAAG0nB,IAAIvkB,EAAE1N,GACZI,EAAGqK,EAAGwnB,IAAIvkB,EAAEtN,SAIJ4Q,IAATtD,EAAEiyC,KACDv1B,EAAIu1B,GAAKl1C,EAAGwnB,IAAIvkB,EAAEiyC,IAClBv1B,EAAIy1B,GAAKp1C,EAAGwnB,IAAIvkB,EAAEmyC,IAIdlwC,EAAUya,EAAIy1B,MACdz1B,EAAI+2B,MAAO,EACX/2B,EAAIy1B,GAAKp1C,EAAGwnB,IAAIvkB,EAAEmyC,IAAI,UAIlB7uC,IAATtD,EAAEqyC,KACD31B,EAAI21B,GAAKx1C,EAAG0nB,IAAIvkB,EAAEqyC,IAClB31B,EAAI61B,GAAK11C,EAAG0nB,IAAIvkB,EAAEuyC,IAEdtwC,EAAUya,EAAI61B,MACd71B,EAAIg3B,MAAO,EACXh3B,EAAI61B,GAAK11C,EAAG0nB,IAAIvkB,EAAEuyC,IAAI,KAI9B,OAAO71B,CACX,CAjGyBi3B,CAAY3zC,EAAGnD,EAAIE,GAEhC,IAAGk2C,GAAWjzC,EAAE4zC,IAAhB,CAEA,IAAI94C,EAEA+4C,EAASN,EAASv6C,OAAO,eAC7B,GAAG+5C,EAAK1gD,SAAW4P,EAAUuxC,EAAOlhD,IAC5B2P,EAAUuxC,EAAOvB,KACjBhwC,EAAUuxC,EAAOrB,IAAK,CAC1B,IAAI2B,EAAKf,EAAK1/C,MAEdyH,EAAO,KAAO04C,EAAOlhD,EAAIwhD,GAAM,IAC3BN,EAAOvB,GAAK,IAAO,EAAI6B,EACvB,KAAOA,EAAK,MAAQN,EAAOrB,GAG3BqB,EAAOC,OAAM34C,GAAQ,KAAOg5C,EAAK,MAAS,EAAIA,IAEzCD,EAAO5+C,OAGZ4+C,EAASN,EAAS5tC,OAAO,QACpBG,MAAM,gBAAiB8sC,EAAW,OAAS,sBAC3ChtC,QAAQ,UAAU,GACjB8sC,IACNmB,EAASA,EACJR,aACIV,SAASF,EAAeE,UACxBoB,KAAKtB,EAAeuB,SAGjCH,EAAOv8C,KAAK,IAAKwD,EACrB,MAAO+4C,EAAOj9C,SAEd,IAAIq9C,EAASV,EAASv6C,OAAO,eAC7B,GAAG85C,EAAKzgD,SAAW4P,EAAUuxC,EAAO9gD,IAC5BuP,EAAUuxC,EAAOnB,KACjBpwC,EAAUuxC,EAAOjB,IAAK,CAC1B,IAAI2B,GAAMpB,EAAK3D,YAAc4D,EAAOD,GAAMz/C,MAE1CyH,EAAO,IAAM04C,EAAOnB,GAAK,KACpBmB,EAAO9gD,EAAIwhD,GAAM,IAAO,EAAIA,EAC7B,OAASA,EAAK,IAAMV,EAAOjB,GAE3BiB,EAAOE,OAAM54C,GAAQ,OAASo5C,EAAK,IAAO,EAAIA,IAEzCD,EAAOh/C,OAGZg/C,EAASV,EAAS5tC,OAAO,QACpBG,MAAM,gBAAiB8sC,EAAW,OAAS,sBAC3ChtC,QAAQ,UAAU,GACjB8sC,IACNuB,EAASA,EACJZ,aACIV,SAASF,EAAeE,UACxBoB,KAAKtB,EAAeuB,SAGjCC,EAAO38C,KAAK,IAAKwD,EACrB,MAAOm5C,EAAOr9C,QA3Da,CA4D/B,GAlFoB,CAmFxB,GACJ,C,wBC9HA,IAAI4M,EAAK/R,EAAQ,OAEbqP,EAAQrP,EAAQ,MAGpBO,EAAOC,QAAU,SAAeq/C,GAC5BA,EAAOlzB,MAAK,SAASpe,GACjB,IAAIuc,EAAQvc,EAAE,GAAGuc,MACbw2B,EAAOx2B,EAAM40B,SAAW,CAAC,EACzB2B,EAAOv2B,EAAM20B,SAAW,CAAC,EAEzB/nC,EAAI3F,EAAGxK,OAAO2N,MAElBwC,EAAEzS,UAAU,eACPoP,MAAM,eAAgBitC,EAAKh8B,UAAY,MACvClW,KAAKC,EAAMkH,OAAQ+qC,EAAK/wC,OAE1B8wC,EAAK3D,cAAa2D,EAAOC,GAE5B5pC,EAAEzS,UAAU,eACPoP,MAAM,eAAgBgtC,EAAK/7B,UAAY,MACvClW,KAAKC,EAAMkH,OAAQ8qC,EAAK9wC,MACjC,GACJ,C,wBCvBA,IAAI9G,EAAYzJ,EAAQ,OACpB0iD,EAAkB1iD,EAAAA,OAAAA,WAClBkE,EAAalE,EAAAA,OAAAA,WAEjBO,EAAOC,QAAU,CACbwC,WAAY,CACRf,QAASiC,EAAW,CAAC,EAAGw+C,EAAgBzgD,QAAS,CAC7Cs3B,SAAS,EACTx4B,YAAa,iEAEjBmB,YAAagC,EAAW,CAAC,EAAGw+C,EAAgBxgD,YAAa,CACrDq3B,SAAS,EACTx4B,YAAa,8DAEjBY,KAAM8H,EAAU,CACZ8vB,SAAS,EACTtvB,SAAU,OACVlJ,YAAa,wCAEjBgB,MAAOmC,EAAW,CAAC,EAAGw+C,EAAgB3gD,MAAO,CAACw3B,SAAS,IACvDopB,WAAYz+C,EAAW,CAAC,EAAGw+C,EAAgBC,WAAY,CAACppB,SAAS,IACjEtvB,SAAU,Q,wBCrBlB,IAAIlK,EAAMC,EAAQ,OACd+H,EAAW/H,EAAQ,OAuCvB,SAAS4iD,EAAMC,EAAW/2B,EAAIg3B,EAAQpQ,GAClCA,EAAKA,GAAM3yC,EAAI+rC,SAEZ9mB,MAAMC,QAAQ49B,KACb/2B,EAAG,GAAGg3B,GAAUpQ,EAAGmQ,GAE3B,CA3CAtiD,EAAOC,QAAU,SAAcyK,GAC3B,IAAI+f,EAAW/f,EAAG+f,SACdvnB,EAAawH,EAAG9E,YAEpB,SAAS48C,EAAoBj4B,GACzB,OAAO,SAASlI,GACZ,OAAO7iB,EAAIijD,gBAAgB,CAACC,UAAWrgC,GAAM,CAACmJ,QAASjB,EAAMiB,SAAUtoB,EAC3E,CACJ,CAEA,IAAI,IAAIqB,EAAI,EAAGA,EAAIkmB,EAASjmB,OAAQD,IAAK,CACrC,IAAIgnB,EAAKd,EAASlmB,GACdgmB,EAAQgB,EAAG,GAAGhB,MAKlB,IAAG/iB,EAASozB,QAAQrQ,EAAO,YAA3B,CAEA,IAAIo4B,EAASn7C,EAASozB,QAAQrQ,EAAO,SAAW83B,EAAQ7iD,EAAIojD,UAE5DD,EAAOp4B,EAAMm4B,UAAWn3B,EAAI,KAAMi3B,EAAoBj4B,IAEnDA,EAAMs4B,eAAeF,EAAOp4B,EAAMs4B,cAAet3B,EAAI,MAEpDhB,EAAM9nB,aAEVkgD,EAAOp4B,EAAM9nB,WAAWf,QAAS6pB,EAAI,OACrCo3B,EAAOp4B,EAAM9nB,WAAWd,YAAa4pB,EAAI,OACzCo3B,EAAOp4B,EAAM9nB,WAAWrB,KAAK6B,KAAMsoB,EAAI,OACvCo3B,EAAOp4B,EAAM9nB,WAAWrB,KAAK4O,MAAOub,EAAI,OACxCo3B,EAAOp4B,EAAM9nB,WAAWrB,KAAK2O,OAAQwb,EAAI,OACzCo3B,EAAOp4B,EAAM9nB,WAAW2/C,WAAY72B,EAAI,OACxCo3B,EAAOp4B,EAAM9nB,WAAWjB,MAAO+pB,EAAI,OAhBa,CAiBpD,CACJ,C,wBCtCA,IAAI/jB,EAAW/H,EAAQ,OACnBqjD,EAAQrjD,EAAAA,OAAAA,MAEZO,EAAOC,QAAU,SAAeyK,EAAIg7B,EAAKC,GACrC,IAAIod,EAAkBv7C,EAASw7C,mBAAmB,cAAe,UAA3Cx7C,CAAsDkD,EAAIA,EAAGq7B,YAUnF,SAASkd,IAAcv4C,EAAG2J,KAAK,eAAgB,CAAC4xB,OAAQv7B,EAAGq7B,WAAYxxB,MAAOmxB,GAAO,MANtEp0B,IAAZq0B,GAGCmd,EAAMp4C,EAAIg7B,EAAKC,GAAS,GAKzBj7B,EAAGq7B,YAAcL,GAAOA,EAAIrC,SACxB0f,GAAmBA,EAAgBnsB,KAClCmsB,EAAgBnsB,KAAKqsB,GAClBA,IAGJvd,EAAIwd,0BAA0Bxd,EAAIwd,2BAE7C,C,oBCxBAljD,EAAOC,QAAU,CAEbkjD,OAAQ,GAKRC,eAAgB,EAEhBC,aAAc,EAEdC,cAAe,GACfC,UAAW,oBAGXC,aAAc,GAGd3d,QAAS,S,wBClBb,IAAIrmC,EAAMC,EAAQ,OACdsF,EAAatF,EAAQ,OACrBgkD,EAA2BhkD,EAAQ,OAEvCO,EAAOC,QAAU,SAAwB0+C,EAASC,EAAUC,EAAcnwC,GAKtE,IAAItJ,EAAO5F,EAAImE,WAAW,CAAC,EAAG+K,EAAOjM,YAClCm8C,EAASiE,gBAAez9C,EAAKg9C,YAAc,GAE9CqB,EAAyB9E,EAASC,GAPlC,SAAgBt5C,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOs5C,EAASC,EAAU75C,EAAYO,EAAMC,EAC3D,GAKoDH,EACxD,C,wBCbA,IAAI5F,EAAMC,EAAQ,OAIlBQ,EAAQyjD,WAAa,SAASn5B,GAC1B,OAAOA,EAAMob,SAAYpb,EAAMpjB,MAAQojB,EAAMljB,OAAUkjB,EAAMo5B,GACjE,EAIA1jD,EAAQ2jD,kBAAoB,SAASr5B,EAAO5iB,GACxC,GAAkB,UAAf4iB,EAAMjnB,KAAkB,CAGvB,IAFA,IAAIugD,EAAQt5B,EAAMs5B,OAAS,GACvBC,EAAQv5B,EAAMu5B,OAAS,GACnBv/C,EAAI,EAAGA,EAAIs/C,EAAMr/C,OAAQD,IAC7B,IAAI,IAAIqC,EAAI,EAAGA,EAAIk9C,EAAMt/C,OAAQoC,IAC7B,IAA8C,IAA3Ce,EAAS4H,QAAQs0C,EAAMt/C,GAAKu/C,EAAMl9C,IACjC,OAAO,EAInB,OAAO,CACX,CAEA,OAAwD,IAAjDe,EAAS4H,QAAQtP,EAAQyjD,WAAWn5B,GAC/C,EAGAtqB,EAAQ8jD,KAAO,SAASp8C,EAAU2Q,GAE9B,IADA,IAAIoS,EAAM,IAAIjG,MAAM9c,EAASnD,QACrBD,EAAI,EAAGA,EAAIoD,EAASnD,OAAQD,IAChCmmB,EAAInmB,GAAK+T,EAEb,OAAOoS,CACX,EAEAzqB,EAAQ+jD,IAAM,SAASC,EAAS3rC,GAE5B,IADA,IAAIoS,EAAM,IAAIjG,MAAMw/B,EAAQz/C,QACpBD,EAAI,EAAGA,EAAI0/C,EAAQz/C,OAAQD,IAC/BmmB,EAAInmB,GAAK0/C,EAAQ1/C,GAAGy/C,IAAI1rC,GAE5B,OAAOoS,CACX,EAEAzqB,EAAQikD,oBAAsB,SAASC,EAAMnpC,EAAIC,EAAImpC,GACjD,MAAY,YAATD,EAA2BC,GAAOnkD,EAAQokD,WAAWrpC,EAAIC,GAClC,MAAnBkpC,EAAK14C,OAAO,GAAauP,EAAKC,CACzC,EAEAhb,EAAQqkD,WAAa,SAAS/4B,EAAIg5B,EAAQC,GAEtC,IAAuB,IAApBA,EAAUtyC,MACNsyC,EAAUtyC,OAAS,GAAKsyC,EAAUtyC,MAAQqZ,EAAG/mB,OAC5CggD,EAAUC,SAAW,EAClBD,EAAUtyC,OAAQ,OAMzB,IAAI,IAAI3N,EAAI,EAAGA,EAAIgnB,EAAG/mB,OAAQD,IAAK,CAC/B,IAAImgD,EAAcH,EAAOh5B,EAAGhnB,IACzBmgD,GAAeF,EAAUC,WACxBD,EAAUtyC,MAAQ3N,EAClBigD,EAAUC,SAAWC,EAE7B,CAEJ,OAAOF,CACX,EAUAvkD,EAAQ0kD,MAAQ,SAASxkB,EAAIC,EAAIwkB,GAC7B,OAAQzkB,EAAKC,EAAK,GAAY,IAAPD,EAAYykB,EAAUnhD,GACjD,EAEAxD,EAAQokD,WAAa,SAASrpC,EAAIC,GAC9B,OAAO,SAAS4pC,GACZ,IAAIvkD,EAAI0a,EAAG6pC,GACPnkD,EAAIua,EAAG4pC,GACX,OAAOl4C,KAAKqQ,KAAK1c,EAAIA,EAAII,EAAIA,EACjC,CACJ,EAiBAT,EAAQqU,cAAgB,SAAS24B,EAAI1iB,EAAOgB,GAExC,IAAIu5B,EAAc,UAAW7X,EAAKA,EAAG/6B,MAAQ+6B,EAAG6X,YAE5Cp6B,EAAM,CACNrU,KAAMkU,EAAM/W,OACZ8mB,SAAU/P,EACVw6B,YAAax6B,EAAMrY,MACnB4yC,YAAaA,GAGjB,GAAGv6B,EAAMy6B,eAAgB,CACrB,IAAIC,EAAe16B,EAAMy6B,eAAeF,GAEb,IAAxBG,EAAazgD,OACZkmB,EAAIw6B,WAAaD,EAAa,GAE9Bv6B,EAAIu6B,aAAeA,CAE3B,MACIv6B,EAAIw6B,WAAaJ,EAmBrB,OAhBGv6B,EAAMiB,QAAQvU,UACbyT,EAAMH,EAAMiB,QAAQvU,UAAUyT,EAAKuiB,EAAI1iB,EAAOgB,EAAIu5B,IAE/C,SAAU7X,EAAIviB,EAAIpqB,EAAI2sC,EAAGkY,KACpB,MAAOlY,IAAIviB,EAAIpqB,EAAI2sC,EAAG3sC,GAE3B,SAAU2sC,EAAIviB,EAAIhqB,EAAIusC,EAAGmY,KACpB,MAAOnY,IAAIviB,EAAIhqB,EAAIusC,EAAGvsC,GAE3BusC,EAAGpiC,KAAI6f,EAAIvjB,MAAQ8lC,EAAGpiC,IACtBoiC,EAAGliC,KAAI2f,EAAIrjB,MAAQ4lC,EAAGliC,SACLuG,IAAjB27B,EAAGoY,YAAyB36B,EAAI/pB,EAAIssC,EAAGoY,YAG9CplD,EAAQ4mC,sBAAsBnc,EAAKH,EAAOu6B,GAEnCp6B,CACX,EASAzqB,EAAQ4mC,sBAAwB,SAAS2d,EAAWj6B,EAAOu6B,GACvD,IAAIQ,EAAa/6B,EAAMg7B,YAEvB,GAAID,EAIJ,IAAI,IAAI/gD,EAAI,EAAGA,EAAI+gD,EAAW9gD,OAAQD,IAAK,CACvC,IAAIihD,EAAOF,EAAW/gD,GAClBigB,EAAMihC,EAAYD,GAEtB,QAAsBl0C,IAAnBkzC,EAAUhgC,GAAoB,CAC7B,IACIkhC,EAAWC,EADLnmD,EAAIk6B,eAAenP,EAAOi7B,GAAM7rB,MACTmrB,QAEjBxzC,IAAbo0C,IAAwBlB,EAAUhgC,GAAOkhC,EAChD,CACJ,CACJ,EAYAzlD,EAAQ2lD,4BAA8B,SAASpB,EAAWj6B,EAAOs7B,GAC7D,IAAIP,EAAa/6B,EAAMg7B,YAEvB,GAAID,EAIJ,IAAI,IAAI/gD,EAAI,EAAGA,EAAI+gD,EAAW9gD,OAAQD,IAAK,CACvC,IAAIihD,EAAOF,EAAW/gD,GAClBigB,EAAMihC,EAAYD,GAEtB,QAAsBl0C,IAAnBkzC,EAAUhgC,GAAoB,CAI7B,IAHA,IAAInC,EAAM7iB,EAAIk6B,eAAenP,EAAOi7B,GAAM7rB,MACtCmsB,EAAS,IAAIrhC,MAAMohC,EAAarhD,QAE5BoC,EAAI,EAAGA,EAAIi/C,EAAarhD,OAAQoC,IACpCk/C,EAAOl/C,GAAK++C,EAAatjC,EAAKwjC,EAAaj/C,IAE/C49C,EAAUhgC,GAAOshC,CACrB,CACJ,CACJ,EAEA,IAAIC,EAAc,CACd/E,IAAK,KACLgF,UAAW,WACX3T,OAAQ,QACRvoC,OAAQ,QACR,gBAAiB,QACjBm8C,QAAS,UAGb,SAASR,EAAYD,GACjB,OAAOO,EAAYP,IAASA,CAChC,CAEA,SAASG,EAAatjC,EAAKyiC,GACvB,OAAGrgC,MAAMC,QAAQogC,GACVrgC,MAAMC,QAAQrC,IAAQoC,MAAMC,QAAQrC,EAAIyiC,EAAY,KAC5CziC,EAAIyiC,EAAY,IAAIA,EAAY,SAD3C,EAIOziC,EAAIyiC,EAEnB,CAEA,IAAIoB,EAAc,CACd5lD,GAAG,EACHI,GAAG,GAGHylD,EAAmB,CACnB,aAAa,EACb,aAAa,GAGjBlmD,EAAQmmD,eAAiB,SAASC,GAC9B,MAAwB,kBAAdA,KACDF,EAAiBE,EAC9B,EAEApmD,EAAQqmD,UAAY,SAASD,GACzB,MAAwB,kBAAdA,KACDH,EAAYG,EACzB,C,wBCzPA,IAAI70C,EAAK/R,EAAQ,OACbwQ,EAAYxQ,EAAQ,OACpBwiB,EAAYxiB,EAAQ,OAEpBD,EAAMC,EAAQ,OACdiS,EAAelS,EAAIkS,aACnBsN,EAAYxf,EAAIwf,UAChBsmB,EAAS7lC,EAAQ,OACjBoS,EAAepS,EAAQ,OACvB8mD,EAAiB9mD,EAAQ,OACzBkS,EAAUlS,EAAQ,MAClBqP,EAAQrP,EAAQ,MAChBsS,EAActS,EAAQ,OACtBkD,EAAOlD,EAAQ,OACf+H,EAAW/H,EAAQ,OAEnBu+B,EAAUv+B,EAAQ,OAClB2hC,EAAY3hC,EAAQ,OAEpB+mD,EAAuB/mD,EAAQ,OAC/BgnD,EAAahnD,EAAQ,OAIrB0jD,EAAS/hB,EAAU+hB,OACnBuD,EAAa/5C,KAAKuM,GAAKiqC,EAAS,IAGhCwD,EAAU,EAAIh6C,KAAK2M,IAAIotC,GAIvBE,EAAUj6C,KAAKyM,IAAIstC,GACnBG,EAAUl6C,KAAK2M,IAAIotC,GAGnBtD,EAAiBhiB,EAAUgiB,eAC3BC,EAAejiB,EAAUiiB,aAEzByD,EAAsB,CACtBC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,aAAa,GAGbC,EAAyB,CACzB5H,SAAS,EACTI,WAAW,EACXyH,OAAO,GA6yBX,SAASC,EAAar5C,GAClB,MAAO,CAACA,EAAEuc,MAAMrY,MAAOlE,EAAEkE,MAAOlE,EAAE+G,GAAI/G,EAAE+9B,GAAI/9B,EAAE3H,KAAM2H,EAAE1I,KAAM0I,EAAEnD,GAAKmD,EAAEnD,GAAGU,IAAM,GAAIyC,EAAEjD,GAAKiD,EAAEjD,GAAGQ,IAAM,IAAI9K,KAAK,IACjH,CApxBAR,EAAQ6iD,MAAQ,SAAep4C,EAAIg7B,EAAKC,EAAS2hB,GAC7C58C,EAAKlL,EAAIgmC,YAAY96B,GAGrB,IAAI68C,EAAc7hB,EAAIrC,OACtB7jC,EAAI+lC,SACA76B,EAAG9E,YAAY2N,KAAO6tB,EAAUyE,QAChCzE,EAAUoiB,cACV,YAsKR,SAAgB94C,EAAIg7B,EAAKC,EAAS2hB,EAAcC,GACxC5hB,IAASA,EAAU,MAIvB,IAAIh+B,EAAW8c,MAAMC,QAAQihB,GAAWA,EAAU,CAACA,GAE/CziC,EAAawH,EAAG9E,YAChB4hD,EAAQtkD,EAAWukD,QAAU,GAC7BjH,EAAWgH,EAAM7hB,GACjB+hB,EAAexkD,EAAWykD,KAAK,aAGnC,GAAGnH,EAAU,CACT,IAAIoH,EAAoBpH,EAASqH,SAAS3rC,KAAI,SAAS4rC,GACnD,OAAOA,EAAGnjD,EACd,IAEAgD,EAAWA,EAAS4G,OAAOq5C,EAC/B,CAOA,IALA,IAAI3iC,EAAMtd,EAASnD,OACfujD,EAAU,IAAItjC,MAAMQ,GACpB+iC,EAAU,IAAIvjC,MAAMQ,GACpBgjC,GAAkB,EAEd1jD,EAAI,EAAGA,EAAI0gB,EAAK1gB,IAAK,CACzB,IAAI2jD,EAAOvgD,EAASpD,GAEpB,GAAGijD,EAAMU,GAELD,GAAkB,EAClBF,EAAQxjD,GAAKijD,EAAMU,GAAM/gD,MACzB6gD,EAAQzjD,GAAKijD,EAAMU,GAAM7gD,UACtB,KAAGnE,EAAWglD,KAAShlD,EAAWglD,GAAMC,SAO3C,YADA3oD,EAAIo8B,KAAK,yBAA2BssB,GAJpC,IAAIC,EAAWjlD,EAAWglD,GAAMC,SAChCJ,EAAQxjD,GAAK4jD,EAAShhD,MACtB6gD,EAAQzjD,GAAK4jD,EAAS9gD,KAI1B,CACJ,CAEA,IAAIg/C,EAAY3gB,EAAI2gB,WAAanjD,EAAWmjD,UAEzCA,IAAc4B,IAAiB5B,EAAY,WAE9C,IAA2E,IAAxE,CAAC,IAAK,IAAK,UAAW,YAAa,aAAa92C,QAAQ82C,KAAsB37C,EAAG+f,UAC5E/f,EAAGqT,cAAc,aAAerT,EAAG0J,UACvC,OAAOrC,EAAYgwB,WAAWr3B,EAAIg7B,GAGtC,IAAI0iB,EAAgBllD,EAAWklD,eACT,IAAnBA,IAAsBA,EAAgB3kD,KAEzC,IAAI4kD,EAAgBnlD,EAAWmlD,eACT,IAAnBA,IAAsBA,EAAgB5kD,KAGzC,IAUI6kD,EAAWC,EAEXC,EAASC,EAAUl9B,EAAIhB,EAAOvX,EAAW01C,EAAUC,EACnDC,EAAMC,GAAMrE,GAAWsE,GAbvB97C,GAAY,GAMZ+7C,GAAa,GAUbC,GAAc,CACdC,WAAY,KACZC,WAAY,MAKZC,IAAwB,EAK5B,GAAG1kC,MAAMC,QAAQghB,GAGb,IADA2gB,EAAY,QACRmC,EAAU,EAAGA,EAAU9iB,EAAIlhC,OAAQgkD,KACnCj9B,EAAK7gB,EAAG+f,SAASib,EAAI8iB,GAASzD,aAAe,MAEzCx6B,EAAQgB,EAAG,GAAGhB,MACe,SAA1BgB,EAAG,GAAGhB,MAAMm4B,YACXqG,GAAWn7C,KAAK2d,GACS,MAAtBhB,EAAM1F,cACLskC,IAAwB,SAKrC,CACH,IAAIV,EAAW,EAAGA,EAAW/9C,EAAG+f,SAASjmB,OAAQikD,IAC7Cl9B,EAAK7gB,EAAG+f,SAASg+B,GAEM,UADvBl+B,EAAQgB,EAAG,GAAGhB,OACLm4B,WAAwB1kB,EAAQ4lB,kBAAkBr5B,EAAO5iB,KAC9DohD,GAAWn7C,KAAK2d,GACS,MAAtBhB,EAAM1F,cACLskC,IAAwB,IAQpC,IACIC,GAAKC,GAET,IAH0B9B,EAIL6B,GAAd,QAAS1jB,EAAWA,EAAI0jB,IAChBrB,EAAQ,GAAGl1C,QAAU,EAEfw2C,GAAd,QAAS3jB,EAAWA,EAAI2jB,IAChBrB,EAAQ,GAAGn1C,QAAU,MAC7B,CAIH,IAA4D,IAAzDyyB,EAAOU,eAAet7B,EAAI,qBAAsBg7B,GAC/C,OAGJ,IAAI4jB,GAAM/B,EAAY3yC,wBAEtBw0C,GAAM1jB,EAAIlC,QAAU8lB,GAAIt0C,KACxBq0C,GAAM3jB,EAAIjC,QAAU6lB,GAAIn0C,IAExBjS,EAAWqmD,sBAAsB7+C,GACjC,IAAI8+C,GAAoBhqD,EAAIiqD,iBAAiBvmD,EAAWwmD,cAAhClqD,CAA+C4pD,GAAKC,IAO5E,GALAD,GAAMI,GAAkB,GACxBH,GAAMG,GAAkB,GAIrBJ,GAAM,GAAKA,GAAMrB,EAAQ,GAAGl1C,SAAWw2C,GAAM,GAAKA,GAAMrB,EAAQ,GAAGn1C,QAClE,OAAOd,EAAYgwB,WAAWr3B,EAAIg7B,EAE1C,CAWA,GATAA,EAAIikB,SAAWP,GAAMrB,EAAQ,GAAGlkD,QAChC6hC,EAAIkkB,SAAWP,GAAMrB,EAAQ,GAAGnkD,QAEdykD,EAAf,SAAU5iB,EAAiB1H,EAAQ+lB,KAAKp8C,EAAU+9B,EAAIkjB,MACxC5qB,EAAQgmB,IAAI+D,EAASqB,IAEpBb,EAAf,SAAU7iB,EAAiB1H,EAAQ+lB,KAAKp8C,EAAU+9B,EAAImjB,MACxC7qB,EAAQgmB,IAAIgE,EAASqB,KAElCp5C,EAAUq4C,EAAU,MAAQr4C,EAAUs4C,EAAU,IAEhD,OADA/oD,EAAIo8B,KAAK,kBAAmB8J,EAAKh7B,GAC1BqH,EAAYgwB,WAAWr3B,EAAIg7B,EAE1C,CAIA,IAAI+e,GAAWhhD,IAKf,SAASomD,GAAgBC,EAAYC,GACjC,IAAItB,EAAW,EAAGA,EAAWM,GAAWvkD,OAAQikD,IAI5C,IAHAl9B,EAAKw9B,GAAWN,KAGLl9B,EAAG,IAAOA,EAAG,GAAGhB,QAIN,KAFrBA,EAAQgB,EAAG,GAAGhB,OAELlqB,SAAsC,IAAlBkqB,EAAM1X,UAI6B,IAA7D,CAAC,SAAU,iBAAiBtD,QAAQgb,EAAMiB,QAAQnlB,MAArD,CAyEA,GAvEkB,UAAfkkB,EAAMjnB,KAIL0P,EAAYrL,EADZ+gD,EAAW,IAGX11C,EAAYgrB,EAAQ0lB,WAAWn5B,GAC/Bm+B,EAAW/gD,EAAS4H,QAAQyD,IAIhC21C,EAAQtC,EACLroB,EAAQooB,eAAeuC,KACtBA,EAAQA,EAAMl9C,OAAO,IAIzB+4C,GAAY,CAERj5B,GAAIA,EACJhB,MAAOA,EACP1f,GAAIk9C,EAAQW,GACZ39C,GAAIi9C,EAAQU,GAMZsB,iBAAkB5B,EAClB6B,iBAAkB5B,EAGlBn2C,OAAO,EACPuyC,SAAU93C,KAAK/C,IAAI66C,GAAU2D,GAK7B8B,cAAezmD,IAIf0mD,YAAQ74C,EACR84C,YAAQ94C,EAGRtB,MAAOlB,EAAMU,YACbnJ,KAAMkkB,EAAMlkB,KACZ0O,QAAIzD,EACJ2D,QAAI3D,EACJy6B,QAAIz6B,EACJmP,QAAInP,EACJ+4C,eAAW/4C,EACXg5C,eAAWh5C,EACX+zC,eAAW/zC,EACXpQ,UAAMoQ,GAIPpO,EAAW8P,KACVwxC,GAAU7e,QAAUziC,EAAW8P,GAAWm1C,UAG3CjlD,EAAWqnD,cAAgBrnD,EAAWqnD,aAAahgC,EAAMuB,OACxD04B,GAAU1hD,MAAQI,EAAWqnD,aAAahgC,EAAMuB,MAGpDg9B,GAA0B97C,GAAUxI,OAIvB,UAAVmkD,EAAmB,CAClB,IAAIr3B,EAAYoU,EAAI+iB,GACjB,gBAAiBn3B,GAChBkzB,GAAUtyC,MAAQof,EAAUwzB,YAC5B6D,EAAQ,YAERA,EAAQ,GACL,SAAUr3B,IACTs3B,EAAOt3B,EAAUs3B,KACjBD,EAAQ,KAET,SAAUr3B,IACTu3B,GAAOv3B,EAAUu3B,KACjBF,EAAQA,EAAQ,UAAY,KAGxC,WAAyBr3C,IAAfw4C,QAA2Cx4C,IAAfy4C,GAClCnB,EAAOkB,EACPjB,GAAOkB,IAEPnB,EAAON,EAAUI,GACjBG,GAAON,EAAUG,IAIrB,GAAqB,IAAlBN,EACC,GAAG79B,EAAMiB,SAAWjB,EAAMiB,QAAQg/B,YAAa,CAC3C,IAAIC,EAAYlgC,EAAMiB,QAAQg/B,YAAYhG,GAAWoE,EAAMC,GAAMF,EAAO,CACpE+B,aAAa,EACbC,WAAYznD,EAAWuS,cAG3B,GAAGg1C,EAEC,IADA,IAAIG,EACIC,EAAc,EAAGA,EAAcJ,EAAUjmD,OAAQqmD,IACrDD,EAAWH,EAAUI,GAClB56C,EAAU26C,EAAS71C,KAAO9E,EAAU26C,EAAS7e,KAC5C/+B,GAAUY,KAAKk9C,EAAWF,EAAUvE,GAIpD,MACI7mD,EAAIswB,IAAI,oCAAqCvF,GAcrD,GAPiB,YAAd87B,GAA2Br5C,GAAUxI,OAASskD,KAC7C97C,GAAU+9C,OAAO,EAAGjC,IACpBrE,GAAWz3C,GAAU,GAAGy3C,UAKzBiD,GAAmC,IAAlBW,GACQ,IAArBr7C,GAAUxI,OAAc,CACvBggD,GAAUC,SAAW4D,EACrB7D,GAAUtyC,OAAQ,EAClB,IAAI84C,EAAgBzgC,EAAMiB,QAAQg/B,YAAYhG,GAAWoE,EAAMC,GAAM,UAAW,CAC5E8B,WAAYznD,EAAWuS,cAS3B,GAPGu1C,IACCA,EAAgBA,EAAcC,QAAO,SAASC,GAG1C,OAAOA,EAAMhB,eAAiB7B,CAClC,KAED2C,GAAiBA,EAAcxmD,OAAQ,CACtC,IAAI2mD,EACAC,EAAiBJ,EAAcC,QAAO,SAASC,GAC/C,OAAOA,EAAMrgD,GAAGwgD,YAAqC,iBAAvBH,EAAMrgD,GAAGygD,SAC3C,IACA,GAAGF,EAAe5mD,OAAQ,CACtB,IAAI+mD,EAAaH,EAAe,GAC7Bn7C,EAAUs7C,EAAWx2C,KAAO9E,EAAUs7C,EAAWxf,MAChDof,EAAWK,GAAeD,KACtBvC,GAAYE,YAAeF,GAAYE,WAAWgB,cAAgBiB,EAASjB,iBAC3ElB,GAAYE,WAAaiC,GAGrC,CAEA,IAAIM,EAAiBT,EAAcC,QAAO,SAASC,GAC/C,OAAOA,EAAMngD,GAAGsgD,YAAqC,iBAAvBH,EAAMngD,GAAGugD,SAC3C,IACA,GAAGG,EAAejnD,OAAQ,CACtB,IAAIknD,EAAaD,EAAe,GAC7Bx7C,EAAUy7C,EAAW32C,KAAO9E,EAAUy7C,EAAW3f,MAChDof,EAAWK,GAAeE,KACtB1C,GAAYC,YAAeD,GAAYC,WAAWiB,cAAgBiB,EAASjB,iBAC3ElB,GAAYC,WAAakC,GAGrC,CACJ,CACJ,CA3KuE,CA8KnF,CAIA,SAASQ,GAAmBC,EAAYvD,EAAewD,GAKnD,IAJA,IAEIC,EAFAC,EAAc,KACdC,EAAcvoD,IAGVc,EAAI,EAAGA,EAAIqnD,EAAWpnD,OAAQD,IAClCunD,EAAoBF,EAAWrnD,GAAG2lD,cAC/B2B,GAAwB,IAANtnD,IAASunD,GAAqBroD,KAEhDqoD,GAAqBE,GAAeF,GAAqBzD,IACxD0D,EAAcH,EAAWrnD,GACzBynD,EAAcF,GAGtB,OAAOC,CACX,CAEA,SAASP,GAAeN,GACpB,OAAIA,EACG,CACHrgD,GAAIqgD,EAAMrgD,GACVE,GAAImgD,EAAMngD,GACVzK,OAAoBgR,IAAjB45C,EAAMf,OAAuBe,EAAMf,QAAUe,EAAMn2C,GAAKm2C,EAAMj2C,IAAM,EACvEvU,OAAoB4Q,IAAjB45C,EAAMd,OAAuBc,EAAMd,QAAUc,EAAMnf,GAAKmf,EAAMzqC,IAAM,EACvEgkC,SAAUyG,EAAMzG,SAChByF,cAAegB,EAAMhB,cACrBnF,YAAamG,EAAM3gC,MAAMrY,MACzBlC,MAAOk7C,EAAMl7C,MACb80C,YAAaoG,EAAMh5C,OAVL,IAYtB,CAhCA23C,KAkCA,IAAIoC,GAAgB,CAChB/oD,WAAYA,EACZsS,UAAWtS,EAAWuS,YACtBlB,MAAOmxB,GAEPwmB,GAAiBxhD,EAAGyhD,aACpBC,GAAiB,CACjBlD,WAAYF,GAAYE,WACxBD,WAAYD,GAAYC,YAE5Bv+C,EAAGyhD,aAAeC,GAElB,IAAIC,GAAgB,WAChBr/C,GAAUwlB,MAAK,SAAS85B,EAAIC,GAAM,OAAOD,EAAG7H,SAAW8H,EAAG9H,QAAU,IAGpEz3C,GAo+CR,SAA0BA,EAAWq5C,GAOjC,IANA,IAAI5gD,EAAW4gD,EAAU56C,OAAO,GAE5B0pB,EAAQ,GACRq3B,EAAS,GACTp3B,EAAO,GAEH7wB,EAAI,EAAGA,EAAIyI,EAAUxI,OAAQD,IAAK,CACtC,IAAIyJ,EAAIhB,EAAUzI,GAGdiD,EAASozB,QAAQ5sB,EAAEuc,MAAO,aAC1B/iB,EAASozB,QAAQ5sB,EAAEuc,MAAO,cAE1B6K,EAAKxnB,KAAKI,GACJA,EAAEuc,MAAM9kB,EAAW,UACzB+mD,EAAO5+C,KAAKI,GAEZmnB,EAAMvnB,KAAKI,EAEnB,CAEA,OAAOmnB,EAAM5mB,OAAOi+C,GAAQj+C,OAAO6mB,EACvC,CA3/CoBq3B,CAAiBz/C,GAAWq5C,EAC5C,EACAgG,KAEA,IAAI5mD,GAAW4gD,EAAU56C,OAAO,GAC5BogD,IAA+B,MAAbpmD,IAAiC,MAAbA,KAAqBuH,GAAU,IAAMm6C,EAAuBn6C,GAAU,GAAGud,MAAMjnB,MAGzH,GAAGokD,GAAmC,IAAlBW,GACQ,IAArBr7C,GAAUxI,OAAc,CACvB,IAGIkoD,GAAYf,GAHI3+C,GAAUi+C,QAAO,SAASC,GAC1C,OAAOA,EAAMngD,GAAGsgD,UACpB,IACkDhD,EAAewD,IACjE7C,GAAYC,WAAauC,GAAekB,IAExC,IAGIC,GAAYhB,GAHI3+C,GAAUi+C,QAAO,SAASC,GAC1C,OAAOA,EAAMrgD,GAAGwgD,UACpB,IACkDhD,EAAewD,IACjE7C,GAAYE,WAAasC,GAAemB,GAC5C,CAIJ,GAAwB,IAArB3/C,GAAUxI,OAAc,CACvB,IAAIooD,GAAS76C,EAAYgwB,WAAWr3B,EAAIg7B,GAMxC,OALGgiB,GAA6C,OAA3BsB,GAAYC,YAAoD,OAA3BD,GAAYE,YAC/D2D,EAAcX,KACbY,EAAiBpiD,EAAIs+C,GAAaiD,IAGnCW,EACX,CAEGlF,GACImF,EAAcX,KACbY,EAAiBpiD,EAAIs+C,GAAaiD,IAI1C,GACIjuB,EAAQsoB,UAAUqC,IACM,IAAxB37C,GAAU,GAAGxI,QACe,UAA5BwI,GAAU,GAAGud,MAAMjnB,KACrB,CAEE,IAAIypD,GAAe//C,GAAU,GASzBggD,IANAhgD,GADD85C,EAAoBiG,GAAaxiC,MAAMjnB,MAC1B0J,GAAUi+C,QAAO,SAASj9C,GAClC,OAAOA,EAAEuc,MAAMrY,QAAU66C,GAAaxiC,MAAMrY,KAChD,IAEY,CAAC66C,KAEOvoD,OAMxBqlD,GAJWoD,EAAS,IAAKF,GAAc7pD,GAC5B+pD,EAAS,IAAKF,GAAc7pD,IAKvC,IAsBIqF,GAtBA2kD,GAAc,GACdC,GAAO,CAAC,EACRxoD,GAAK,EACL4S,GAAS,SAAS61C,GAClB,IAAI5oC,EAAMsiC,EAAoBsG,EAAM7iC,MAAMjnB,MAAQ+jD,EAAa+F,GAASA,EAAM7iC,MAAMrY,MACpF,GAAIi7C,GAAK3oC,GAIF,CACH,IAAI6oC,EAAQF,GAAK3oC,GAAO,EACpB8oC,EAAQJ,GAAYG,GACrBA,EAAQ,GACP1gD,KAAK6M,IAAI4zC,EAAM3I,UACf93C,KAAK6M,IAAI8zC,EAAM7I,YAGfyI,GAAYG,GAASD,EAE7B,MAbIzoD,KACAwoD,GAAK3oC,GAAO7f,GACZuoD,GAAYt/C,KAAKw/C,EAYzB,EAIA,IAAI7kD,GAAI,EAAGA,GAAIykD,GAASzkD,KACpBgP,GAAOvK,GAAUzE,KAGrB,IAAIA,GAAIyE,GAAUxI,OAAS,EAAG+D,GAAIykD,GAAU,EAAGzkD,KAC3CgP,GAAOvK,GAAUzE,KAErByE,GAAYkgD,GACZb,IACJ,CAGA,IAAIvmB,GAAep7B,EAAGq7B,WAClBwnB,GAAe,GAEfC,GAAOC,EAAa/iD,GACpBgjD,GAAQC,EAAcjjD,GAI1B,IAAI89C,EAAU,EAAGA,EAAUx7C,GAAUxI,OAAQgkD,IAAW,CACpD,IAAIvb,GAAKjgC,GAAUw7C,GACfvxC,GAAY+mB,EAAQ1pB,cAAc24B,GAAIA,GAAG1iB,MAAO0iB,GAAG1hB,IAEvD,IAAwB,IAArB0hB,GAAG4V,cAAyB,CAC3B,IAAI+K,IAAK,EACN3gB,GAAG1hB,GAAG0hB,GAAG/6B,QAAU+6B,GAAG1hB,GAAG0hB,GAAG/6B,OAAO07C,KAClCA,GAAK3gB,GAAG1hB,GAAG0hB,GAAG/6B,OAAO07C,IAEzB3gB,GAAG4V,cAAgB+K,IAAM3gB,GAAG1iB,MAAMs4B,gBAAiB,CACvD,CAEA,GAAG5V,GAAGpiC,IAAMoiC,GAAGliC,GAAI,CACf,IAAI8iD,GAAM5gB,GAAGl4B,GAAKk4B,GAAGpiC,GAAGhH,QACpBiqD,GAAM7gB,GAAGh4B,GAAKg4B,GAAGpiC,GAAGhH,QACpBkqD,GAAM9gB,GAAGlB,GAAKkB,GAAGliC,GAAGlH,QACpBmqD,GAAM/gB,GAAGxsB,GAAKwsB,GAAGliC,GAAGlH,QAEpBkR,GAAKpI,KAAK/C,IAAIikD,GAAKC,IACnB74C,GAAKtI,KAAK9C,IAAIgkD,GAAKC,IACnB/hB,GAAKp/B,KAAK/C,IAAImkD,GAAKC,IACnBvtC,GAAK9T,KAAK9C,IAAIkkD,GAAKC,IAEvB/2C,GAAUg3C,KAAO,CACbl5C,GAAIA,GAAK24C,GACTz4C,GAAIA,GAAKy4C,GACT3hB,GAAIA,GAAKyhB,GACT/sC,GAAIA,GAAK+sC,GAEjB,CAEAvgB,GAAGh2B,UAAY,CAACA,IAChBs2C,GAAa3/C,KAAKqJ,GACtB,CAEAvM,EAAGq7B,WAAawnB,GAEhB,IAAIW,GACe,MAAd7H,IAAsB0C,GAAWvkD,OAAS,GAAKwI,GAAUxI,OAAS,IACpD,YAAd6hD,GAA2B8C,IAAyBn8C,GAAUxI,OAAS,EAGxEuK,GAAUD,EAAM4U,QAChBxgB,EAAWirD,cAAgBr/C,EAAMgT,WACjC5e,EAAW0xB,eAGXnlB,GAAY2+C,EAAgBphD,GAAW,CACvCtC,GAAIA,EACJ27C,UAAWA,EACX6H,aAAcA,GACdn/C,QAASA,GACTyG,UAAWtS,EAAWuS,YACtBE,eAAgBzS,EAAW0S,OAAOF,OAClC24C,gBAAiBnrD,EAAWT,WAC5B2lD,cAAellD,EAAWklD,gBAE1BkG,GAAc7+C,GAAU6+C,YAExBtwB,EAAQooB,eAAeC,MA2rB/B,SAA4BiI,EAAaJ,EAAchrD,EAAYqrD,GAC/D,IAmGIC,EAAiBC,EAAYC,EAAenqD,EAAGqC,EAAG+nD,EAAKC,EAnGvDC,EAAQX,EAAe,KAAO,KAC9BY,EAAaZ,EAAe,KAAO,KACnCa,EAAW,EACXC,EAAS,EACTC,EAAUX,EAAYrrD,OAGtBisD,EAAc,IAAIzqC,MAAMwqC,GACxB1mD,EAAI,EAGJ4mD,EAAgBZ,EAAuBa,KACvCC,EAAgBd,EAAuBe,KACvCC,EAAgBhB,EAAuBiB,KACvCC,EAAgBlB,EAAuBmB,KAEvCC,EAAK,SAASrvD,GAAK,OAAOA,EAAI4C,EAAW0sD,UAAY,EACrDC,EAAK,SAASnvD,GAAK,OAAOA,EAAIwC,EAAW4sD,UAAY,EAoFzD,SAASC,EAAeC,GACpB,IAAIC,EAAQD,EAAI,GACZE,EAAQF,EAAIA,EAAIxrD,OAAS,GAY7B,GATAiqD,EAAawB,EAAME,KAAOF,EAAMppD,IAAMopD,EAAMG,GAAKH,EAAMhtD,KAGvDyrD,EAAgBwB,EAAMrpD,IAAMqpD,EAAME,GAAKF,EAAMjtD,KAAOgtD,EAAMI,KAMvD5B,EAAa,IAAM,CAClB,IAAI7nD,EAAIopD,EAAIxrD,OAAS,EAAGoC,GAAK,EAAGA,IAAKopD,EAAIppD,GAAGwpD,IAAM3B,EAClDD,GAAkB,CACtB,CACA,KAAGE,EAAgB,KAAnB,CACA,GAAGD,GAAc,IAAM,CAEnB,IAAI7nD,EAAIopD,EAAIxrD,OAAS,EAAGoC,GAAK,EAAGA,IAAKopD,EAAIppD,GAAGwpD,IAAM1B,EAClDF,GAAkB,CACtB,CACA,GAAIA,EAAJ,CAKA,IAAI8B,EAAc,EAClB,IAAI/rD,EAAI,EAAGA,EAAIyrD,EAAIxrD,OAAQD,KACvBoqD,EAAMqB,EAAIzrD,IACHsC,IAAM8nD,EAAIyB,GAAKzB,EAAI1rD,KAAOgtD,EAAMI,MAAMC,IAIjD,IAAI/rD,EAAIyrD,EAAIxrD,OAAS,EAAGD,GAAK,KACtB+rD,GAAe,GADU/rD,KAE5BoqD,EAAMqB,EAAIzrD,IAIHsC,IAAMopD,EAAMI,KAAO,IACtB1B,EAAI4B,KAAM,EACVD,KAGR,IAAI/rD,EAAI,EAAGA,EAAIyrD,EAAIxrD,UACZ8rD,GAAe,GADK/rD,IAMvB,IAJAoqD,EAAMqB,EAAIzrD,IAIHsC,IAAMopD,EAAME,KAAO,EAMtB,IALAxB,EAAI4B,KAAM,EACVD,IAGA5B,EAA2B,EAAXC,EAAI1rD,KAChB2D,EAAIopD,EAAIxrD,OAAS,EAAGoC,GAAK,EAAGA,IAAKopD,EAAIppD,GAAGwpD,IAAM1B,EAI1D,IAAInqD,EAAIyrD,EAAIxrD,OAAS,EAAGD,GAAK,KACtB+rD,GAAe,GADU/rD,KAE5BoqD,EAAMqB,EAAIzrD,IACHsC,IAAM8nD,EAAIyB,GAAKzB,EAAI1rD,KAAOgtD,EAAMI,OACnC1B,EAAI4B,KAAM,EACVD,IA5CmB,CANI,CAqDnC,CAzJAhC,EAAYliC,MAAK,SAASpe,GACtB,IAAIpN,EAAKoN,EAAE6gD,GACP2B,EAAUxiD,EAAE8gD,GACZ2B,EAA6B,MAArB7vD,EAAG2K,IAAIE,OAAO,GACtBilD,EAAM9vD,EAAG4C,MAEJ,IAAN+E,GAAWmoD,GAASA,EAAI,GAAKA,EAAI,KAAQD,IACxCzB,GAAU,GAEd,IAAImB,EAAO,EACPE,EAAQI,EAAQvtD,EAAW7B,MAAQ6B,EAAW5B,OAElD,GAA4B,MAAzB4B,EAAWmjD,WAA8C,MAAzBnjD,EAAWmjD,UAAmB,CAE7D,IAGIsK,EACAC,EAJAC,EAAUC,EAAqB9iD,EAAGkgD,GAClC31C,EAASvK,EAAEuK,OACXw4C,EAAsB,QAAXx4C,GAAoB,EAAI,EAGvC,GAAc,WAAXA,EAGCq4C,GADAD,EAAW3iD,EAAEgjD,UAAYP,EAAQZ,EAAGgB,EAAQnwD,EAAIsN,EAAEijD,GAAK,GAAKtB,EAAG3hD,EAAEkjD,GAAK,EAAIljD,EAAEmjD,SAAW,MAChEV,EAAQZ,EAAG7hD,EAAEijD,IAAMtB,EAAG3hD,EAAEkjD,UAG/C,GAAGT,EAECG,GADAD,EAAW3iD,EAAEgjD,SAAWnB,EAAGzM,EAAiByN,EAAQnwD,GAAKmvD,EAAG7hD,EAAEijD,GAAK,EAAI7N,IACjDyM,EAAG7hD,EAAEijD,QACxB,CACH,IAAIhvB,EAAS0tB,EAAGoB,EAAW3N,EAAiByN,EAAQvwD,GAChD8wD,EAAOnvB,EAAS0tB,EAAGoB,EAAW/iD,EAAEkjD,IACpCP,EAAW3iD,EAAEgjD,SAAWrkD,KAAK/C,IAAIq4B,EAAQmvB,GACzCR,EAAW5iD,EAAEgjD,SAAWrkD,KAAK9C,IAAIo4B,EAAQmvB,EAC7C,CAGDX,OACsBn/C,IAAlBi+C,QAAiDj+C,IAAlBm+C,GAA+B9iD,KAAK/C,IAAIgnD,EAAUnB,GAAiB9iD,KAAK9C,IAAI8mD,EAAUpB,GAAiB,IAEjH,SAAjBiB,EAAQnpC,MACP8oC,EAAOK,EAAQa,kBACfhB,EAAOntD,EAAW7B,OAElBgvD,EAAOG,EAAQa,wBAIF//C,IAAlB69C,QAAiD79C,IAAlB+9C,GAA+B1iD,KAAK/C,IAAIgnD,EAAUvB,GAAiB1iD,KAAK9C,IAAI8mD,EAAUxB,GAAiB,IAEjH,QAAjBqB,EAAQnpC,MACP8oC,EAAOK,EAAQa,kBACfhB,EAAOntD,EAAW5B,QAElB+uD,EAAOG,EAAQa,kBAI/B,CAEAnC,EAAY3mD,KAAO,CAAC,CAChB+oD,MAAOtjD,EACP6iB,WAAY7iB,EAAEuc,MAAMrY,MACpBk+C,GAAI,EACJvpD,IAAKmH,EAAEnH,IACP0qD,OAAQvjD,EAAEujD,OACVtuD,KAAM+K,EAAEijD,IAAMR,EAAQ9J,EAAU,GAAK,EACrCwJ,KAAMA,EACNE,KAAMA,GAEd,IAEAnB,EAAY18B,MAAK,SAASpW,EAAGiH,GACzB,OAAQjH,EAAE,GAAGm1C,OAASluC,EAAE,GAAGkuC,QAKtBvC,GAAU3rC,EAAE,GAAGwN,WAAazU,EAAE,GAAGyU,WAC1C,IA+EA,MAAO29B,GAAmBO,GAAYE,GAAS,CAS3C,IANAF,IAIAP,GAAkB,EAClBjqD,EAAI,EACEA,EAAI2qD,EAAY1qD,OAAS,GAAG,CAE9B,IAAIgtD,EAAKtC,EAAY3qD,GACjBktD,EAAKvC,EAAY3qD,EAAI,GAIrBuwC,EAAK0c,EAAGA,EAAGhtD,OAAS,GACpBuwC,EAAK0c,EAAG,GAIZ,IAHAhD,EAAa3Z,EAAGjuC,IAAMiuC,EAAGsb,GAAKtb,EAAG7xC,KAAO8xC,EAAGluC,IAAMkuC,EAAGqb,GAAKrb,EAAG9xC,MAG5C,KAAS6xC,EAAGqb,OAASpb,EAAGob,MAAUrb,EAAGub,OAAStb,EAAGsb,KAAO,CAEpE,IAAIzpD,EAAI6qD,EAAGjtD,OAAS,EAAGoC,GAAK,EAAGA,IAAK6qD,EAAG7qD,GAAGwpD,IAAM3B,EAQhD,IALA+C,EAAG5jD,KAAK8jD,MAAMF,EAAIC,GAClBvC,EAAYnE,OAAOxmD,EAAI,EAAG,GAG1BqqD,EAAQ,EACJhoD,EAAI4qD,EAAGhtD,OAAS,EAAGoC,GAAK,EAAGA,IAAKgoD,GAAS4C,EAAG5qD,GAAGwpD,GAEnD,IADA1B,EAAgBE,EAAQ4C,EAAGhtD,OACvBoC,EAAI4qD,EAAGhtD,OAAS,EAAGoC,GAAK,EAAGA,IAAK4qD,EAAG5qD,GAAGwpD,IAAM1B,EAChDF,GAAkB,CACtB,MAAOjqD,GACX,CAGA2qD,EAAYtkD,QAAQmlD,EACxB,CAGA,IAAIxrD,EAAI2qD,EAAY1qD,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACzC,IAAIyrD,EAAMd,EAAY3qD,GACtB,IAAIqC,EAAIopD,EAAIxrD,OAAS,EAAGoC,GAAK,EAAGA,IAAK,CACjC,IAAIqmC,EAAK+iB,EAAIppD,GACT+qD,EAAU1kB,EAAGqkB,MACjBK,EAAQhgC,OAASsb,EAAGmjB,GACpBuB,EAAQpB,IAAMtjB,EAAGsjB,GACrB,CACJ,CACJ,CA/5BQqB,CAAmBtD,GAAaJ,GAAchrD,EAAYuM,GAAU8+C,wBACpEsD,EAAevD,GAAaJ,GAAchrD,EAAW0sD,WAAY1sD,EAAW4sD,aAGhF,GAAGvI,GAAeA,EAAYuK,QAAS,CACnC,IAAI5jD,GAAiB1G,EAASw7C,mBAAmB,cAAe,iBAA3Cx7C,CAA6DkD,EAAI6iD,IACtFhH,EAAe/0C,EAAGxK,OAAOugD,GAAcr5C,GAAiB,UAAY,GACxE,CAGA,IAAIq5C,GAAeD,IAgxCvB,SAAsB58C,EAAIg7B,EAAKI,GAE3B,IAAIA,GAAgBA,EAAathC,SAAWkG,EAAGq7B,WAAWvhC,OAAQ,OAAO,EAEzE,IAAI,IAAID,EAAIuhC,EAAathC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC9C,IAAIwtD,EAAQjsB,EAAavhC,GACrBytD,EAAQtnD,EAAGq7B,WAAWxhC,GAE1B,GAAGwtD,EAAMhN,cAAgBiN,EAAMjN,aAC3BlxC,OAAOk+C,EAAMjN,eAAiBjxC,OAAOm+C,EAAMlN,cAC3CjxC,OAAOk+C,EAAMlM,gBAAkBhyC,OAAOm+C,EAAMnM,cAE5C,OAAO,CAEf,CACA,OAAO,CACX,CAhyCwCoM,CAAavnD,EAAIg7B,EAAKI,IAAe,OAEtEA,IACCp7B,EAAG2J,KAAK,iBAAkB,CACtBE,MAAOmxB,EACPO,OAAQH,KAIhBp7B,EAAG2J,KAAK,eAAgB,CACpBE,MAAOmxB,EACPO,OAAQv7B,EAAGq7B,WACX8d,MAAOkE,EACPjE,MAAOkE,EACPkK,MAAO5J,EACP6J,MAAO5J,GAEf,CAxwBqB6J,CAAO1nD,EAAIg7B,EAAKC,EAAS2hB,EAAcC,EAAc,GAE1E,EAmCAtnD,EAAQ6U,UAAY,SAAmBu9C,EAAYjtD,GAC/C,IAAIktD,GAAa,EACb7tC,MAAMC,QAAQ2tC,KACdC,GAAa,EACbD,EAAa,CAACA,IAGlB,IAAI3nD,EAAKtF,EAAKsF,GACV8iD,EAAOC,EAAa/iD,GACpBgjD,EAAQC,EAAcjjD,GA6EtBwjD,GAAe,EAUfqE,EARYnE,EA7ECiE,EAAWn2C,KAAI,SAASs2C,GACrC,IAAI3E,EAAM2E,EAAU3E,KAAO2E,EAAUz9C,IAAMy9C,EAAUlyD,GAAK,EACtDwtD,EAAM0E,EAAU1E,KAAO0E,EAAUv9C,IAAMu9C,EAAUlyD,GAAK,EACtDytD,EAAMyE,EAAUzE,KAAOyE,EAAUzmB,IAAMymB,EAAU9xD,GAAK,EACtDstD,EAAMwE,EAAUxE,KAAOwE,EAAU/xC,IAAM+xC,EAAU9xD,GAAK,EAEtDuW,EAAYu7C,EAAUv7C,UAC1B,GAAGA,EAAW,CACV,IAAIlC,EAAKpI,KAAK/C,IAAIikD,EAAKC,GACnB74C,EAAKtI,KAAK9C,IAAIgkD,EAAKC,GACnB/hB,EAAKp/B,KAAK/C,IAAImkD,EAAKC,GACnBvtC,EAAK9T,KAAK9C,IAAIkkD,EAAKC,GAEnBzjC,EAAQioC,EAAUjoC,MACtB,GAAG/iB,EAASozB,QAAQrQ,EAAO,QAAS,CAChC,IAAI/U,EAAY9K,EAAG9E,YAAY2kB,EAAMznB,OAAO2vD,OAAOj9C,UAC/CwF,EAAKxF,EAAUgc,WACfvW,EAAKzF,EAAU+b,UACnBxc,GAAMiG,EACN/F,GAAM+F,EACN+wB,GAAM9wB,EACNwF,GAAMxF,CACV,CAEAhE,EAAUg3C,KAAO,CACbl5C,GAAIA,EAAK24C,EACTz4C,GAAIA,EAAKy4C,EACT3hB,GAAIA,EAAKyhB,EACT/sC,GAAIA,EAAK+sC,GAGVpoD,EAAKstD,YACJttD,EAAKstD,WAAW9kD,KAAKqJ,EAAUg3C,KAEvC,MACIh3C,GAAY,EAGhB,MAAO,CACHjH,MAAOwiD,EAAUxiD,OAASlB,EAAMU,YAChCuF,GAAIy9C,EAAUz9C,IAAMy9C,EAAUlyD,GAAK,EACnC2U,GAAIu9C,EAAUv9C,IAAMu9C,EAAUlyD,GAAK,EACnCyrC,GAAIymB,EAAUzmB,IAAMymB,EAAU9xD,GAAK,EACnC+f,GAAI+xC,EAAU/xC,IAAM+xC,EAAU9xD,GAAK,EACnCiyD,OAAQH,EAAUG,OAClBC,OAAQJ,EAAUI,OAClBC,OAAQL,EAAUK,OAClB3xD,KAAMsxD,EAAUtxD,KAChBmF,KAAMmsD,EAAUnsD,KAChBysD,WAAYN,EAAUM,WAGtB9jD,YAAawjD,EAAUxjD,YACvBqG,WAAYm9C,EAAUn9C,WACtBC,SAAUk9C,EAAUl9C,SACpBC,UAAWi9C,EAAUj9C,UACrBw9C,WAAYP,EAAUO,WACtBC,UAAWR,EAAUQ,UAGrBzoC,MAAOioC,EAAUjoC,OAAS,CACtBrY,MAAO,EACPwwC,UAAW,IAEf73C,GAAI,CAAChH,QAAS,GACdkH,GAAI,CAAClH,QAAS,GACdqO,MAAO,EAEP2wC,cAAe2P,EAAU3P,gBAAiB,EAC1CoQ,oBAAqBT,EAAUS,sBAAuB,EAEtDh8C,UAAWA,EAEnB,IAI4C,CACxCvM,GAAIA,EACJ27C,UAAW,UACX6H,aAAcA,EACdn/C,QAAS3J,EAAK2J,SAAWD,EAAMgT,WAC/BtM,UAAWhE,EAAGxK,OAAO5B,EAAKoQ,WAC1BG,eAAgBvQ,EAAKuQ,gBAAkBvQ,EAAKoQ,YAErB84C,YAIvB4E,EAAc,EACd36C,EAAS,EAwBb,OAvBAg6C,EACK//B,MAAK,SAASpW,EAAGiH,GAAI,OAAOjH,EAAE2vB,GAAK1oB,EAAE0oB,EAAG,IACxC3f,MAAK,SAASpe,EAAGzJ,GACd,IAAI4uD,EAAOnlD,EAAE+9B,GAAK/9B,EAAEijD,GAAK,EAGrBjjD,EAAE2jB,OADFwhC,EARS,EAQgBD,EACbA,EAAcC,EATjB,EAWE,EAGfD,EAAcC,EAAOnlD,EAAEijD,GAAKjjD,EAAE2jB,OAE3BptB,IAAMa,EAAKguD,cAAkB76C,EAASvK,EAAE2jB,OAC/C,IACCvF,MAAK,SAASpe,GACXA,EAAE2jB,QAAUpZ,CAChB,IAIJs5C,EAAeU,EAAYrE,EAFdxjD,EAAG9E,YAAYgqD,WACfllD,EAAG9E,YAAYkqD,YAGrBwC,EAAaC,EAAaA,EAAW78C,MAChD,EA2mBA,IAAI29C,EAAqB,4BAEzB,SAASjF,EAAgBphD,EAAW5H,GAChC,IAAIsF,EAAKtF,EAAKsF,GACVxH,EAAawH,EAAG9E,YAChBygD,EAAYjhD,EAAKihD,UACjB6H,EAAe9oD,EAAK8oD,aACpBn/C,EAAU3J,EAAK2J,QACfyG,EAAYpQ,EAAKoQ,UACjBG,EAAiBvQ,EAAKuQ,eACtB04C,EAAkBjpD,EAAKipD,iBAAmB,CAAC,EAE/C,GAAwB,IAArBrhD,EAAUxI,OAAc,MAAO,CAAC,IAKnC,IAAI6Q,EAAajQ,EAAKiQ,YAAc+rB,EAAUmiB,UAC1CjuC,EAAWlQ,EAAKkQ,UAAY8rB,EAAUkiB,cAEtCgQ,EAAKtmD,EAAU,GACfnC,EAAKyoD,EAAGzoD,GACRE,EAAKuoD,EAAGvoD,GACRtF,EAAW4gD,EAAU56C,OAAO,GAC5B8nD,EAAU9tD,EAAW,QACrBsxB,EAAKu8B,EAAGC,GAGZ,QAAUjiD,IAAPylB,GAAgC,kBAAZlsB,EAAGvH,KACtB,IAAI,IAAIkwD,EAAI,EAAGA,EAAIxmD,EAAUxI,aAEf8M,KADVylB,EAAK/pB,EAAUwmD,GAAGD,IADeC,KAMzC,IAAIC,EAAmB7+C,EAAsBlK,EAAIiL,GAC7C+9C,EAAWD,EAAiBt+C,IAC5B+C,EAAau7C,EAAiBpyD,MAC9B+W,EAAcq7C,EAAiBnyD,OAK/BqyD,OACQriD,IAAPylB,GACAu8B,EAAG7O,UAAYr/C,EAAKgjD,gBACN,MAAd/B,GAAmC,MAAdA,GAK1B,GAAGsN,EAAiB,CAChB,IACIpvD,EAAGqvD,EADHC,GAAW,EAEf,IAAItvD,EAAI,EAAGA,EAAIyI,EAAUxI,OAAQD,IAI7B,GAHGsvD,QAAoCviD,IAAxBtE,EAAUzI,GAAGsuD,SAAsBgB,GAAW,GAE7DD,EAAiB5mD,EAAUzI,GAAGm+C,WAAa11C,EAAUzI,GAAGgmB,MAAMm4B,UAC3C,CACf,IAAIhgC,EAAQ+B,MAAMC,QAAQkvC,GAAkBA,EAAiBA,EAAejxC,MAAM,KAClF,IAA6B,IAA1BD,EAAMnT,QAAQ,SACiB,IAA9BmT,EAAMnT,QAAQ82C,GAAmB,CACjCsN,GAAkB,EAClB,KACJ,CACJ,CAIDE,IAAUF,GAAkB,EACnC,CAEA,IAAIG,EAAct+C,EAAU9Q,UAAU,cACjC2R,KAAKs9C,EAAkB,CAAC,GAAK,IAClCG,EAAYx9C,QAAQ3C,OAAO,KACtBC,QAAQ,YAAY,GACzBkgD,EAAYv9C,OAAO3R,SAGnB,IAAImvD,EAAkB,CAClB3E,KAAM,EACNE,KAAM,EACNE,KAAM,EACNE,KAAM,GA4KV,GA1KAoE,EAAY1nC,MAAK,WACb,IAAI4nC,EAAQxiD,EAAGxK,OAAO2N,MAClBs/C,EAAQz0D,EAAI6sB,aAAa2nC,EAAO,OAAQ,IAAI,SAAS78C,GACrDA,EAAErD,MAAM,CAAC,eAAgB,OAC7B,IACIogD,EAAQ10D,EAAI6sB,aAAa2nC,EAAO,OAAQ,IAAI,SAAS78C,GAGrDA,EAAE7R,KAAK,aAAc,EACzB,IAEI6uD,EAAgB9F,EAAgB3sD,SAAWoN,EAAMU,YACjD4kD,EAAe/F,EAAgB1sD,aAAemN,EAAMgB,SAASqkD,GAC7DE,EAAgBvlD,EAAMgB,SAASqkD,GAC/BG,EAAkB,CAClBvkD,OAAQs+C,EAAgBjtD,KAAK2O,QAAUsF,EACvCpS,KAAMorD,EAAgBjtD,KAAK6B,MAAQqS,EACnCtF,MAAOq+C,EAAgBjtD,KAAK4O,OAASqkD,GAGzCJ,EAAMngD,MAAM,CACRmC,KAAMk+C,EACNn+C,OAAQo+C,IAGZF,EAAMhzD,KAAK61B,GACNloB,KAAK8C,EAAQvQ,KAAMkzD,GACnBzlD,KAAKgD,EAAa6I,aAAc,EAAG,GACnC7L,KAAKgD,EAAauF,gBAAiB1M,GAExCspD,EAAM1uD,KAAK,YAAa,IAExB,IACIkvB,EAAIC,EADJ8/B,EAAM3/C,EAAsBlK,EAAIwpD,EAAMx+C,QAG1C,GAAiB,MAAd2wC,EAAmB,CAClB,IAAImO,EAAsB,QAAZ3pD,EAAGwc,KAAiB,IAAM,GAExC6sC,EAAM5uD,KAAK,cAAe,UACrBuJ,KAAKgD,EAAa6I,aAAc,EAAgB,QAAZ7P,EAAGwc,KACnCqsC,EAAWa,EAAIn/C,OAASguC,EAAiBC,EACzCqQ,EAAWa,EAAIp/C,IAAMiuC,EAAiBC,GAE/C7uB,EAAK3pB,EAAGhH,SAAWyvD,EAAGv+C,GAAKu+C,EAAGr+C,IAAM,EACpCwf,EAAK1pB,EAAGlH,SAAuB,QAAZgH,EAAGwc,KAAiB,EAAItc,EAAG8H,SAE9C,IAAI4hD,EAAYF,EAAIlzD,MAAQ,EAAIgiD,EAE7B7uB,EAAKigC,GACJjgC,EAAKigC,EAELR,EAAM3uD,KAAK,IAAK,MAAQmvD,EAAYrR,GAApB,QACJqR,EAA6B,EAAjBrR,GAAsB,IAAMoR,EAAUpR,EAC1D,IAAOqR,EACP,IAAMD,GAA0B,EAAfnR,EAAmBkR,EAAIjzD,QACxC,KAAOmzD,EACP,IAAMD,EAAUpR,EAChB,MACE5uB,EAAMtxB,EAAW7B,MAAQozD,GAC/BjgC,EAAKtxB,EAAW7B,MAAQozD,EAExBR,EAAM3uD,KAAK,IAAK,KAAOmvD,EAAYrR,GAAnB,MACNqR,EAAY,IAAMD,EAAUpR,EAClC,IAAMoR,GAA0B,EAAfnR,EAAmBkR,EAAIjzD,QACxC,KAAOmzD,EACP,IAAMD,EAAUpR,EAChB,KAAOqR,EAA6B,EAAjBrR,GAAsB,MAE7C6Q,EAAM3uD,KAAK,IAAK,QACN89C,EAAiB,IAAMoR,EAAUpR,EACvC,IAAOqR,EACP,IAAMD,GAA0B,EAAfnR,EAAmBkR,EAAIjzD,QACxC,KAAQmzD,EACR,IAAMD,EAAUpR,EAChB,KAAOA,EAAiB,KAGhC2Q,EAAgB3E,KAAO56B,EAAKigC,EAC5BV,EAAgBzE,KAAO96B,EAAKigC,EACb,QAAZ5pD,EAAGwc,MAEF0sC,EAAgBvE,KAAO/6B,GAAqB,EAAf4uB,EAAmBkR,EAAIjzD,QACpDyyD,EAAgBrE,KAAOj7B,EAAK4uB,IAE5B0Q,EAAgBvE,KAAO/6B,EAAK4uB,EAC5B0Q,EAAgBrE,KAAOj7B,GAAqB,EAAf4uB,EAAmBkR,EAAIjzD,QAE5D,KAAO,CACH,IAAIiX,EACAm8C,EACAC,EACW,UAAZ5pD,EAAGsc,MACF9O,EAAS,QACTm8C,EAAM,EACNC,EAAW,GACXngC,EAAK3pB,EAAGhH,QAAUgH,EAAGgI,UAErB0F,EAAS,MACTm8C,GAAO,EACPC,EAAW,IACXngC,EAAK3pB,EAAGhH,SAGZ4wB,EAAK1pB,EAAGlH,SAAWyvD,EAAGvnB,GAAKunB,EAAG7yC,IAAM,EAEpCyzC,EAAM5uD,KAAK,cAAeiT,GAE1B07C,EAAM3uD,KAAK,IAAK,QACNqvD,EAAWvR,EAAiB,IAAMA,EACxC,KAAOC,EAAekR,EAAIjzD,OAAS,GACnC,IAAMqzD,GAA2B,EAAftR,EAAmBkR,EAAIlzD,OACzC,MAAQgiD,EAAekR,EAAIjzD,OAAS,GACpC,IAAMqzD,EAAWvR,EAAiB,KAAOA,EAAiB,KAE9D2Q,EAAgBvE,KAAO/6B,GAAM4uB,EAAekR,EAAIjzD,OAAS,GACzDyyD,EAAgBrE,KAAOj7B,GAAM4uB,EAAekR,EAAIjzD,OAAS,GAC1C,UAAZyJ,EAAGsc,MACF0sC,EAAgB3E,KAAO56B,EAAK4uB,EAC5B2Q,EAAgBzE,KAAO96B,EAAK4uB,GAAiC,EAAfC,EAAmBkR,EAAIlzD,SAGrE0yD,EAAgB3E,KAAO56B,EAAK4uB,GAAiC,EAAfC,EAAmBkR,EAAIlzD,OACrE0yD,EAAgBzE,KAAO96B,EAAK4uB,GAGhC,IAGIwR,EAHAC,EAAaN,EAAIjzD,OAAS,EAC1BwzD,EAAMpB,EAAWa,EAAIp/C,IAAM0/C,EAC3BE,EAAS,OAAS7xD,EAAWqQ,KAAO,cAAgBxI,EAAGQ,IAG3D,GAAGipB,EAAM+/B,EAAIlzD,MAAQ,EAAIgiD,EAAeD,EAAiB,CACrDwR,EAAW,MAAQxR,EAAiBC,GAAgB,IAAMwR,EACtD,MAAQN,EAAIlzD,MAAQgiD,GACpB,IAAMwR,EACN,KAAON,EAAIlzD,MAAQgiD,GAAgB,IAEvC,IAAI2R,EAAMT,EAAIlzD,MAAQmzB,EAAK6uB,EAC3BxxC,EAAa6I,aAAaw5C,EAAOc,EAAKF,GAIxB,QAAXv8C,GACC27C,EAAMxvD,UAAU,SAAS0nB,MAAK,WAC1B,IAAIjV,EAAI3F,EAAGxK,OAAO2N,MACdsgD,EAAQtjD,EAAQikC,OAAOjiC,OAAO,QAC7BzS,KAAKiW,EAAEjW,QACP2N,KAAK8C,EAAQvQ,KAAMkzD,GACpBY,EAAUtgD,EAAsBlK,EAAIuqD,EAAMv/C,QAC3C/I,KAAKwL,MAAM+8C,EAAQ7zD,OAASsL,KAAKwL,MAAMo8C,EAAIlzD,QAC1C8V,EAAE7R,KAAK,IAAK0vD,EAAME,EAAQ7zD,OAE9B4zD,EAAMrwD,QACV,GAER,MACIiN,EAAa6I,aAAaw5C,EAAOQ,GAAOrR,EAAeD,GAAiB0R,GACxEF,EAAW,KAGf,IAAIO,EAAWjyD,EAAWkT,UAAU1R,UAAU,IAAMqwD,GAAQ1+C,KAAKu+C,EAAW,CAAC,GAAK,IAClFO,EAAS7+C,QAAQ3C,OAAO,YAAYrO,KAAK,KAAMyvD,GAAQphD,OAAO,QAC9DwhD,EAAS5+C,OAAO3R,SAChBuwD,EAASnuD,OAAO,QAAQ1B,KAAK,IAAKsvD,GAClCjjD,EAAQ4I,WAAW25C,EAAOU,EAAWG,EAAS,KAAMrqD,EACxD,CAEAspD,EAAM1uD,KAAK,YAAaoM,EAAa8iB,EAAIC,GAC7C,IAGGuJ,EAAQooB,eAAeC,GAAY,CAElC7wC,EAAU9Q,UAAU,eAAeE,SACnC,IAAIwwD,EAAmBpoD,EAAUi+C,QAAO,SAAS50C,GAAO,MAA0B,SAAnBA,EAAKqsC,SAAqB,IAEzF,GAA+B,IAA5B0S,EAAiB5wD,OAAc,MAAO,GAGzC,IAAI/B,EAAaS,EAAWT,WACxBrB,EAAOqB,EAAWrB,KAClBi0D,EAAe,CACfC,YAAY,EACZC,OAAQ,CACJnuC,MAAO,CAAClmB,KAAM61B,EAAI31B,KAAMA,GACxBA,KAAMA,EACNM,QAASe,EAAWf,QACpBC,YAAac,EAAWd,YACxBE,YAAa,EACb2zD,cAAe,EACfC,WAAYvyD,EAAWqyD,OAASryD,EAAWqyD,OAAOE,gBAAankD,EAC/DuT,YAAa,MAGjB6wC,EAAgB,CAChBt0D,KAAMA,GAEVolD,EAAqB6O,EAAcK,EAAehrD,EAAGkC,WACrD,IAAI+oD,EAAaD,EAAcH,OAG/BI,EAAWC,QAAU,GACrB,IAAI,IAAIhvD,GAAI,EAAGA,GAAIwuD,EAAiB5wD,OAAQoC,KAAK,CAC7C,IAAIqmC,GAAKmoB,EAAiBxuD,IAC1B,GAAoB,SAAjBqmC,GAAGyV,UAAN,CAEA,IAAImT,GAAQC,EAAkB7oB,IAAI,EAAMoZ,EAAWnjD,EAAY6zB,GAC3D71B,GAAO20D,GAAM,GACbxvD,GAAOwvD,GAAM,GAEjB5oB,GAAG5mC,KAAOA,GAEN4mC,GAAG/rC,KADK,KAATmF,GACWA,GAAO,MAAQnF,GAEfA,GAId,IAAIqqB,GAAK0hB,GAAG1hB,GAAG0hB,GAAG/6B,OACfqZ,KACIA,GAAGujB,KAAI7B,GAAG6B,GAAKvjB,GAAGujB,IAClBvjB,GAAGogB,MAAKsB,GAAG6B,GAAKvjB,GAAGogB,KACnBpgB,GAAGqjB,MAAK3B,GAAG2B,IAAMrjB,GAAGqjB,KACpBrjB,GAAGmjB,OAAMzB,GAAG2B,IAAMrjB,GAAGmjB,MACrBnjB,GAAGkjB,MAAKxB,GAAGwB,IAAMljB,GAAGkjB,KACpBljB,GAAGoiB,MAAKV,GAAGU,IAAMpiB,GAAGoiB,KACpBpiB,GAAGwqC,MAAK9oB,GAAG8oB,IAAMxqC,GAAGwqC,MAE3B9oB,GAAG+oB,WAAY,EAEfL,EAAWC,QAAQhoD,KAAK,CAACq/B,IA1BW,CA2BxC,CACA0oB,EAAWC,QAAQpjC,MAAK,SAASpW,EAAGiH,GAAK,OAAOjH,EAAE,GAAGmO,MAAMrY,MAAQmR,EAAE,GAAGkH,MAAMrY,KAAM,IACpFyjD,EAAWtiC,MAAQ7d,EAGnBmgD,EAAWM,UAAW,EACtBN,EAAWO,gBAAkBzzD,EAAW0zD,eAExC1P,EAAW/7C,EAAIirD,GAGf,IAaIS,GAAUC,GAaVC,GAASC,GA1BTC,GAAkBhhD,EAAUxO,OAAO,YACnCutD,GAAM3/C,EAAsBlK,EAAI8rD,GAAgB9gD,QAChD+gD,GAASlC,GAAIlzD,MAAQ,EAAIgiD,EACzBqT,GAAUnC,GAAIjzD,OAAS,EAAI+hD,EAC3B0J,GAAeqI,EAAiB,GAChCuB,IAAQ5J,GAAah4C,GAAKg4C,GAAa93C,IAAM,EAC7C2hD,IAAQ7J,GAAahhB,GAAKghB,GAAatsC,IAAM,EAE7Co2C,KACArvD,EAASozB,QAAQmyB,GAAaxiC,MAAO,aACrC/iB,EAASozB,QAAQmyB,GAAaxiC,MAAO,eAIzB,MAAb9kB,EACIoxD,IACCR,GAAQO,GAAOvT,EACf+S,GAAWQ,GAAOvT,IAElBgT,GAAQ1pD,KAAK/C,IAAI8nD,MAAM,KAAM0D,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAOtW,KAAK/C,IAAIqZ,EAAE8oB,GAAI9oB,EAAExC,GAAK,KAC7F21C,GAAWzpD,KAAK9C,IAAI6nD,MAAM,KAAM0D,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAOtW,KAAK9C,IAAIoZ,EAAE8oB,GAAI9oB,EAAExC,GAAK,MAGpG41C,GAAQD,GAAW52D,EAAIs3D,KAAK1B,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAQA,EAAE8oB,GAAK9oB,EAAExC,IAAM,CAAG,KAAMi2C,GAAU,EAI7F,MAAbjxD,EACIoxD,IACCP,GAAUK,GAAOtT,EACjBkT,GAASI,GAAOtT,IAEhBiT,GAAU3pD,KAAK9C,IAAI6nD,MAAM,KAAM0D,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAOtW,KAAK9C,IAAIoZ,EAAElO,GAAIkO,EAAEhO,GAAK,KAC/FshD,GAAS5pD,KAAK/C,IAAI8nD,MAAM,KAAM0D,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAOtW,KAAK/C,IAAIqZ,EAAElO,GAAIkO,EAAEhO,GAAK,MAGlGqhD,GAAUC,GAAS/2D,EAAIs3D,KAAK1B,EAAiBl5C,KAAI,SAAS+G,GAAK,OAAQA,EAAElO,GAAKkO,EAAEhO,IAAM,CAAG,KAAMwhD,GAAS,EAG5G,IAOIjiC,GAAIC,GAPJsiC,GAAUlsD,EAAGhH,QACbmzD,GAAUjsD,EAAGlH,QA2CjB,OAxCA0yD,IAAUQ,GAAUN,GACpBJ,IAASW,GAAUN,GAMfliC,IARJ8hC,IAAWS,IAOEN,GAASv+C,GAAco+C,IAAW,EACtCA,GACCC,GAASE,GAASv+C,GAAcq+C,IAAU,EAC3CA,GACCQ,GAAUN,GAASv+C,EACpB6+C,GAGFT,GAAUK,GAAOA,GAAOJ,GAASE,GAC3Bv+C,EAAau+C,GAEb,EAGbjiC,IAAM6uB,EAIF5uB,IA1BJ2hC,IAAYY,IAyBEN,GAAUt+C,GAAeg+C,IAAY,EAC1CA,GACCC,GAAQK,GAAUt+C,GAAei+C,IAAS,EAC3CA,GACCW,GAAUN,GAAUt+C,EACrB4+C,GAGFZ,GAAWQ,GAAOA,GAAOP,GAAQK,GAC3Bt+C,EAAcs+C,GAEd,EAGbjiC,IAAM4uB,EAENmT,GAAgBlxD,KAAK,YAAaoM,EAAa8iB,GAAK,EAAGC,GAAK,IACrD+hC,EACX,CAKA,IAAIlI,GAAc94C,EAAU9Q,UAAU,eACjC2R,KAAKrJ,GAAW,SAASgB,GAGtB,OAAOq5C,EAAar5C,EACxB,IAoJJ,OAnJAsgD,GAAYh4C,QAAQ3C,OAAO,KACtBC,QAAQ,aAAa,GACrBwY,MAAK,WACF,IAAIhJ,EAAI5R,EAAGxK,OAAO2N,MAElByO,EAAEzP,OAAO,QACJ9E,KAAKC,EAAMmH,KAAMnH,EAAM0U,WAAWzU,EAAS,KAChDqU,EAAEzP,OAAO,QAAQC,QAAQ,QAAQ,GAEjCwP,EAAEzP,OAAO,QACJG,MAAM,eAAgB,OAC3BsP,EAAEzP,OAAO,QAAQC,QAAQ,QAAQ,GAC5B/E,KAAK8C,EAAQvQ,KAAMiU,EAAYC,EACxC,IACJg5C,GAAY/3C,OAAO3R,SAInB0pD,GAAYliC,MAAK,SAASpe,GACtB,IAAIoV,EAAI5R,EAAGxK,OAAO2N,MAAMrP,KAAK,YAAa,IAEtC2xD,EAASjpD,EAAEgC,MACZyU,MAAMC,QAAQuyC,KACbA,EAASA,EAAOjpD,EAAEiJ,UAAU,GAAG6tC,cAInC,IAAIoS,EAASlpD,EAAEtM,SAAWu1D,EAEtBE,EAAYroD,EAAM4U,QAClB5U,EAAMvN,QAAQ21D,GAAUA,EAASpoD,EAAMU,YACvCT,GAGAqoD,EAAYtoD,EAAM4U,QAClB5U,EAAMvN,QAAQ01D,GAAUA,EAASnoD,EAAMU,YACvCT,GAGAslD,EAAgBrmD,EAAEgB,aAAeF,EAAMgB,SAASqnD,GAEhDtB,EAAQC,EAAkB9nD,EAAG2lD,EAAiBtN,EAAWnjD,EAAY6zB,EAAI3T,GACzEliB,EAAO20D,EAAM,GACbxvD,EAAOwvD,EAAM,GAGb/iB,EAAK1vB,EAAEpc,OAAO,aACb6H,KAAK8C,EAAQvQ,KACV4M,EAAEqH,YAAcA,EAChBrH,EAAEsH,UAAYA,EACdtH,EAAEuH,WAAa8+C,GAClBnzD,KAAKA,GACLoE,KAAK,aAAc,GACnBuJ,KAAKgD,EAAa6I,aAAc,EAAG,GACnC7L,KAAKgD,EAAauF,gBAAiB1M,GAEpC2sD,EAAMj0C,EAAEpc,OAAO,aACfmqD,EAAW,EACXmG,EAAY,EAGhB,GAAGjxD,GAAQA,IAASnF,EAAM,CACtBm2D,EAAIxoD,KAAK8C,EAAQvQ,KACT4M,EAAEqH,YAAcA,EAChBrH,EAAEsH,UAAYA,EACd8hD,GACHl2D,KAAKmF,GACLf,KAAK,aAAc,GACnBuJ,KAAKgD,EAAa6I,aAAc,EAAG,GACnC7L,KAAKgD,EAAauF,gBAAiB1M,GAExC,IAAI6sD,EAAO3iD,EAAsBlK,EAAI2sD,EAAI3hD,QACzCy7C,EAAWoG,EAAKl2D,MAAQ,EAAIgiD,EAC5BiU,EAAYC,EAAKj2D,OAAS,EAAI+hD,CAClC,MACIgU,EAAIzyD,SACJwe,EAAEpc,OAAO,QAAQpC,SAGrBwe,EAAEpc,OAAO,QAAQ8M,MAAM,CACnBmC,KAAMkhD,EACNnhD,OAAQq+C,IAGZ,IAAImD,EAAMxpD,EAAEnD,GAAGhH,SAAWmK,EAAE+G,GAAK/G,EAAEiH,IAAM,EACrCwiD,EAAMzpD,EAAEjD,GAAGlH,SAAWmK,EAAE+9B,GAAK/9B,EAAEyS,IAAM,EACrCzF,EAAKrO,KAAK6M,IAAIxL,EAAEiH,GAAKjH,EAAE+G,IACvBkG,EAAKtO,KAAK6M,IAAIxL,EAAEyS,GAAKzS,EAAE+9B,IAEvBwoB,EAAM3/C,EAAsBlK,EAAIooC,EAAGp9B,QACnCgiD,EAAWnD,EAAIlzD,MAAQ6B,EAAW0sD,WAClC+H,EAAYpD,EAAIjzD,OAAS4B,EAAW4sD,WAExC9hD,EAAE4pD,KAAOlE,EAAWa,EAAIp/C,KAAOjS,EAAW4sD,WAC1C9hD,EAAEkjD,GAAKwG,EAAW,EAAIrU,EACtBr1C,EAAEijD,GAAKtkD,KAAK9C,IAAI8tD,EAAY,EAAItU,EAAciU,GAC9CtpD,EAAEuK,OAAS,QACXvK,EAAE6pD,QAAUH,EACZ1pD,EAAEmjD,SAAWA,EACbnjD,EAAE2jB,OAAS,EAEX,IACImmC,EAAeC,EADfC,GAAgBN,EAAWtU,EAAiBC,EAAe8N,GAAYjuD,EAAW0sD,WAGtF,GAAG1B,EACClgD,EAAEnH,IAAM2wD,EACRM,EAAgBL,EAAMx8C,EAAK,EAAI+8C,GAAgB5/C,EAC/C2/C,EAAcN,EAAMx8C,EAAK,EAAI+8C,GAAgB,EACxB,QAAjBhqD,EAAE8kD,YAAyBgF,IAAkBC,EAGvCD,GACNL,GAAOx8C,EAAK,EACZjN,EAAEuK,OAAS,SAEXvK,EAAEuK,OAAS,UANXk/C,GAAOx8C,EAAK,EACZjN,EAAEuK,OAAS,OAOfvK,EAAEgjD,SAAWyG,MACV,CAKH,GAJAzpD,EAAEnH,IAAM4wD,EACRK,EAAgBN,EAAMx8C,EAAK,EAAIg9C,GAAgB9/C,EAC/C6/C,EAAcP,EAAMx8C,EAAK,EAAIg9C,GAAgB,EAExB,SAAjBhqD,EAAE8kD,YAA0BgF,IAAkBC,EAG3C,GAAGD,EACNN,GAAOx8C,EAAK,EACZhN,EAAEuK,OAAS,YACR,CACHvK,EAAEuK,OAAS,SAEX,IAAI0/C,EAAcD,EAAe,EAC7BE,EAAYV,EAAMS,EAAc//C,EAChCigD,EAAYX,EAAMS,EACnBC,EAAY,IAAGV,GAAOU,GACtBC,EAAY,IAAGX,IAAQW,EAC9B,MAbIX,GAAOx8C,EAAK,EACZhN,EAAEuK,OAAS,MAafvK,EAAEgjD,SAAWwG,CACjB,CAEA1kB,EAAGxtC,KAAK,cAAe0I,EAAEuK,QACtB44C,GAAUkG,EAAI/xD,KAAK,cAAe0I,EAAEuK,QACvC6K,EAAE9d,KAAK,YAAaoM,EAAa8lD,EAAKC,IACjCvJ,EAAelvC,EAAUmkC,GAAU,IAC5C,IAEO,CACHmL,YAAaA,GACbC,uBAAwBwF,EAEhC,CAEA,SAAS+B,EAAkB9nD,EAAG2lD,EAAiBtN,EAAWnjD,EAAY6zB,EAAI3T,GACtE,IAAI/c,EAAO,GACPnF,EAAO,QAEWoQ,IAAnBtD,EAAEoqD,eAA4BpqD,EAAE3H,KAAO2H,EAAEoqD,cAEzCpqD,EAAE3H,OACE2H,EAAEuc,MAAM/T,QACPxI,EAAE3H,KAAO7G,EAAIiX,eAAezI,EAAE3H,KAAM2H,EAAEuc,MAAM/T,QAEhDnQ,EAAOgyD,EAAUrqD,EAAE3H,KAAM2H,EAAE+kD,aAG/B,IAAIuF,EAAKjS,EAAU56C,OAAO,GACtB8sD,EAAY,MAAPD,EAAa,IAAM,SAEZhnD,IAAbtD,EAAE6kD,aACevhD,IAAbtD,EAAE2kD,SAAsBzxD,GAAQ,MAAQ8M,EAAE2kD,OAAS,aACtCrhD,IAAbtD,EAAE4kD,SAAsB1xD,GAAQ,MAAQ8M,EAAE4kD,OAAS,QAClC,eAAjB5kD,EAAEuc,MAAMjnB,MAA0C,qBAAjB0K,EAAEuc,MAAMjnB,OACxCpC,IAASA,EAAO,MAAQ,IAAM8M,EAAE6kD,SAE9Bc,GAAmB3lD,EAAEsqD,EAAK,WAAavhC,EAC7C71B,EAAO8M,EAAEuqD,EAAK,UAAY,QACPjnD,IAAbtD,EAAE2kD,YACQrhD,IAAbtD,EAAE4kD,QAAyC,kBAAjB5kD,EAAEuc,MAAMjnB,OACjCpC,EAAO8M,EAAE4kD,QAEiB1xD,OAAXoQ,IAAbtD,EAAE4kD,OAA6B5kD,EAAE2kD,OAC/B,IAAM3kD,EAAE2kD,OAAS,KAAO3kD,EAAE4kD,OAAS,KAE3C5kD,EAAE9M,MAAmB,IAAX8M,EAAE9M,MAAgBujB,MAAMC,QAAQ1W,EAAE9M,QAC5CA,IAASA,EAAO,OAAS,IAAM8M,EAAE9M,WAQlBoQ,IAAhBtD,EAAEwqD,YAAyBt3D,IAASA,EAAO,OAAS,IAAM8M,EAAEwqD,WAK5Dp1C,GAAc,KAATliB,IAAgB8M,EAAE60C,gBAEV,KAATx8C,GAAa+c,EAAExe,SAClB1D,EAAOmF,GAIX,IAAIw8C,EAAgB70C,EAAE60C,gBAAiB,EACvC,GAAGA,EAAe,CACd,IAAIxQ,EAASrkC,EAAEilD,qBAAuBjlD,EAEnCA,EAAEsqD,EAAK,WAAavhC,IACnBsb,EAAOimB,EAAK,SAAWjmB,EAAOimB,EAAK,OACnCjmB,EAAOimB,EAAK,cAAgBjmB,EAAOimB,EAAK,UAW5Cp3D,GARAA,EAAO1B,EAAIi5D,oBACP5V,EACAxQ,EACAnvC,EAAWuvC,UACXzkC,EAAEiJ,UAAU,IAAM,CAAC,EACnBjJ,EAAEuc,MAAM/T,QAGA1W,QAAQuzD,GAAoB,SAAS5wC,EAAOi2C,GAIpD,OAFAryD,EAAOgyD,EAAUK,EAAO1qD,EAAE+kD,YAEnB,EACX,GACJ,CACA,MAAO,CAAC7xD,EAAMmF,EAClB,CAqPA,SAASyqD,EAAqByB,EAAYrE,GACtC,IAAIyK,EAAU,EACVC,EAAUrG,EAAW5gC,OAOzB,OALGu8B,IACC0K,IAAY/R,EACZ8R,EAAUpG,EAAW5gC,OAASi1B,GAG3B,CACHtmD,EAAGq4D,EACHj4D,EAAGk4D,EAEX,CAuBA,SAAS/G,EAAevD,EAAaJ,EAAc2K,EAAQC,GACvD,IAAInJ,EAAK,SAASrvD,GAAK,OAAOA,EAAIu4D,CAAQ,EACtChJ,EAAK,SAASnvD,GAAK,OAAOA,EAAIo4D,CAAQ,EAI1CxK,EAAYliC,MAAK,SAASpe,GACtB,IAAIoV,EAAI5R,EAAGxK,OAAO2N,MAClB,GAAG3G,EAAEuiD,IAAK,OAAOntC,EAAExe,SAEnB,IAAIkuC,EAAK1vB,EAAEpc,OAAO,aACduR,EAASvK,EAAEuK,OACXw4C,EAAsB,QAAXx4C,GAAoB,EAAI,EACnCwgD,EA/BZ,SAAuBxG,GACnB,IAAIyG,EAAa,CAAC75C,MAAO,EAAGC,KAAM,EAAG3G,OAAQ,GAAG85C,EAAWh6C,QACvD0gD,EAAaD,GAAc5V,EAAiBC,GAC5C6V,EAAcD,EAAaD,GAAczG,EAAWsF,QAAUxU,GAQlE,MANqC,WAAtBkP,EAAWh6C,SAEtB0gD,GAAc1G,EAAWpB,SAAW,EACpC+H,GAAe3G,EAAWsF,QAAU,EAAIxU,GAGrC,CACH2V,WAAYA,EACZC,WAAYA,EACZC,YAAaA,EAErB,CAeqBC,CAAcnrD,GACvB6iD,EAAUC,EAAqB9iD,EAAGkgD,GAClCyK,EAAU9H,EAAQvwD,EAClBs4D,EAAU/H,EAAQnwD,EAElB04D,EAAsB,WAAX7gD,EAEf6K,EAAEpc,OAAO,QACJ1B,KAAK,IAAK8zD,EAEV,KAAOzJ,EAAG3hD,EAAEkjD,GAAK,EAAIljD,EAAEmjD,SAAW,GAAK,IAAMtB,EAAG+I,EAAU5qD,EAAEijD,GAAK,GAChE,IAAMtB,EAAG3hD,EAAEkjD,IAAM,IAAMrB,EAAG7hD,EAAEijD,IAAM,KAAOtB,EAAG3hD,EAAEkjD,IAAM,IAErD,QAAUvB,EAAGoB,EAAW3N,EAAiBuV,GAAW,IAAM9I,EAAGzM,EAAiBwV,GAC3E,IAAM/I,EAAG7hD,EAAEijD,GAAK,EAAI7N,GACpB,IAAMuM,EAAGoB,EAAW/iD,EAAEkjD,IACtB,KAAOrB,EAAG7hD,EAAEijD,IACZ,IAAMtB,EAAGoB,EAAW3N,EAAiBuV,GACrC,IAAM9I,EAAG+I,EAAUxV,GACnB,KAER,IAAIiW,EAAOV,EAAUI,EAAOE,WACxBK,EAAOV,EAAU5qD,EAAE4pD,IAAM5pD,EAAEijD,GAAK,EAAI5N,EACpC2P,EAAYhlD,EAAEglD,WAAa,OAEd,SAAdA,IACkB,SAAdA,GAAmC,UAAXz6C,GACvBu6B,EAAGxtC,KAAK,cAAe,SACvB+zD,EAAOD,GACFprD,EAAEkjD,GAAK,EAAIljD,EAAEmjD,SAAW,EAAI9N,GAC5Br1C,EAAEkjD,GAAK7N,GACQ,UAAd2P,GAAoC,QAAXz6C,IAC/Bu6B,EAAGxtC,KAAK,cAAe,OACvB+zD,EAAOD,EACHprD,EAAEkjD,GAAK,EAAIljD,EAAEmjD,SAAW,EAAI9N,EAC5Br1C,EAAEkjD,GAAK7N,IAInBvQ,EAAGjkC,KAAKgD,EAAa6I,aAAci1C,EAAG0J,GAAOxJ,EAAGyJ,IAE7CtrD,EAAEmjD,WACD/tC,EAAEpc,OAAO,aACJ6H,KAAKgD,EAAa6I,aACfi1C,EAAGoJ,EAAOG,YAAcH,EAAOC,WAAa3V,EAAesV,GAC3D9I,EAAG+I,EAAU5qD,EAAE4pD,IAAM5pD,EAAEijD,GAAK,EAAI5N,IACxCjgC,EAAEpc,OAAO,QACJ6H,KAAK8C,EAAQgJ,QACVg1C,EAAGoJ,EAAOG,aAAeH,EAAOC,WAAa,GAAKhrD,EAAEmjD,SAAW,EAAIwH,GACnE9I,EAAG+I,EAAU5qD,EAAEijD,GAAK,EAAI,GACxBtB,EAAG3hD,EAAEmjD,UAAWtB,EAAG7hD,EAAEijD,GAAK,IAE1C,GACJ,CAEA,SAASnG,EAAW98C,EAAGq4C,GACnB,IAAIn0C,EAAQlE,EAAEkE,MACVqY,EAAQvc,EAAEuc,OAAS,CAAC,EACpBgvC,EAAMvrD,EAAEud,GAAG,GACXA,EAAKvd,EAAEud,GAAGrZ,IAAU,CAAC,EAEzB,SAASsnD,EAAKlhD,GACV,OAAOA,GAAMrI,EAAUqI,IAAY,IAANA,CACjC,CAEA,IAAImhD,EAASh1C,MAAMC,QAAQxS,GACvB,SAASwnD,EAASC,GACd,IAAIrhD,EAAI9Y,EAAIo6D,WAAWL,EAAKrnD,EAAOwnD,GACnC,OAAOF,EAAKlhD,GAAKA,EAAI9Y,EAAI0yC,cAAc,CAAC,EAAG3nB,EAAO,GAAIovC,EAC1D,EACA,SAASD,EAASC,GACd,OAAOn6D,EAAI0yC,cAAc3mB,EAAIhB,EAAOmvC,EAASC,EACjD,EAEJ,SAAS1jD,EAAKuO,EAAKk1C,EAASC,GACxB,IAAIt3C,EAAMo3C,EAAOC,EAASC,GACvBH,EAAKn3C,KAAMrU,EAAEwW,GAAOnC,EAC3B,CAqCA,GAnCApM,EAAK,YAAa,KAAM,aACxBA,EAAK,UAAW,MAAO,sBACvBA,EAAK,cAAe,MAAO,0BAC3BA,EAAK,aAAc,MAAO,0BAC1BA,EAAK,WAAY,MAAO,wBACxBA,EAAK,YAAa,MAAO,yBACzBA,EAAK,aAAc,MAAO,yBAC1BA,EAAK,YAAa,MAAO,oBAEzBjI,EAAEujD,OAAwB,MAAdlL,GAAoC,YAAdA,GAAiD,MAAtB97B,EAAM1F,YAC9D7W,EAAEnD,GAAGhH,SAAWmK,EAAE+G,GAAK/G,EAAEiH,IAAM,EAC/BjH,EAAEjD,GAAGlH,SAAWmK,EAAE+9B,GAAK/9B,EAAEyS,IAAM,EAGpCzS,EAAE+G,GAAKvV,EAAI0a,UAAUlM,EAAE+G,GAAI,EAAG/G,EAAEnD,GAAGgI,SACnC7E,EAAEiH,GAAKzV,EAAI0a,UAAUlM,EAAEiH,GAAI,EAAGjH,EAAEnD,GAAGgI,SACnC7E,EAAE+9B,GAAKvsC,EAAI0a,UAAUlM,EAAE+9B,GAAI,EAAG/9B,EAAEjD,GAAG8H,SACnC7E,EAAEyS,GAAKjhB,EAAI0a,UAAUlM,EAAEyS,GAAI,EAAGzS,EAAEjD,GAAG8H,cAGhBvB,IAAhBtD,EAAEq8C,YACDr8C,EAAE2kD,OAAU,WAAY3kD,EAAKA,EAAE2kD,OAAShwD,EAAKk3D,eAAe7rD,EAAEnD,GAAImD,EAAEq8C,UAAW9/B,EAAMuvC,cACrF9rD,EAAEm3C,KAAOn3C,EAAEnD,GAAGkvD,IAAI/rD,EAAEq8C,iBAEL/4C,IAAhBtD,EAAEs8C,YACDt8C,EAAE4kD,OAAU,WAAY5kD,EAAKA,EAAE4kD,OAASjwD,EAAKk3D,eAAe7rD,EAAEjD,GAAIiD,EAAEs8C,UAAW//B,EAAMyvC,cACrFhsD,EAAEo3C,KAAOp3C,EAAEjD,GAAGgvD,IAAI/rD,EAAEs8C,iBAILh5C,IAAhBtD,EAAEq3C,gBAAwC/zC,IAAbtD,EAAE6kD,SAC9B7kD,EAAE6kD,OAASh/C,OAAO7F,EAAEq3C,aAIpB9G,MAAMvwC,EAAEoyC,SAAyB,QAAdpyC,EAAEnD,GAAGvH,MAAkB0K,EAAEoyC,MAAQ,GAAI,CACxD,IAAI6Z,EAASt3D,EAAKu3D,SAASlsD,EAAEnD,GAAImD,EAAEnD,GAAGgzC,IAAI7vC,EAAEoyC,MAAO,SAASl/C,UAC3CoQ,IAAdtD,EAAEsyC,QACDtyC,EAAE2kD,QAAU,KAAOsH,EAAS,OACxBt3D,EAAKu3D,SAASlsD,EAAEnD,GAAImD,EAAEnD,GAAGgzC,IAAI7vC,EAAEsyC,SAAU,SAASp/C,KACnD8M,EAAE2kD,QAAU,SAAQsH,EAKV,MAAd5T,IAAmBr4C,EAAEy2C,UAAY,EACxC,CACA,IAAIlG,MAAMvwC,EAAEgyC,SAAyB,QAAdhyC,EAAEjD,GAAGzH,MAAkB0K,EAAEgyC,MAAQ,GAAI,CACxD,IAAIma,EAASx3D,EAAKu3D,SAASlsD,EAAEjD,GAAIiD,EAAEjD,GAAG8yC,IAAI7vC,EAAEgyC,MAAO,SAAS9+C,UAC3CoQ,IAAdtD,EAAEkyC,QACDlyC,EAAE4kD,QAAU,KAAOuH,EAAS,OACxBx3D,EAAKu3D,SAASlsD,EAAEjD,GAAIiD,EAAEjD,GAAG8yC,IAAI7vC,EAAEkyC,SAAU,SAASh/C,KACnD8M,EAAE4kD,QAAU,SAAQuH,EAEV,MAAd9T,IAAmBr4C,EAAEy2C,UAAY,EACxC,CAEA,IAAI2V,EAAWpsD,EAAE00C,WAAa10C,EAAEuc,MAAMm4B,UAWtC,OATG0X,GAAyB,QAAbA,KAEmB,KAD9BA,EAAW31C,MAAMC,QAAQ01C,GAAYA,EAAWA,EAASz3C,MAAM,MACnDpT,QAAQ,OAAavB,EAAE2kD,YAASrhD,IACd,IAA3B8oD,EAAS7qD,QAAQ,OAAavB,EAAE4kD,YAASthD,IACd,IAA3B8oD,EAAS7qD,QAAQ,OAAavB,EAAE6kD,YAASvhD,IACX,IAA9B8oD,EAAS7qD,QAAQ,UAAgBvB,EAAE9M,UAAOoQ,IACZ,IAA9B8oD,EAAS7qD,QAAQ,UAAgBvB,EAAE3H,UAAOiL,IAG1CtD,CACX,CAEA,SAAS8+C,EAAiBpiD,EAAIsgD,EAAe5lD,GACzC,IAOIyF,EAAIE,EAPJyK,EAAYpQ,EAAKoQ,UACjBtS,EAAakC,EAAKlC,WAClBsP,EAAKtP,EAAWC,MAChBuiC,EAAMtgC,EAAKmP,MACX8lD,IAAUrP,EAAc/B,WACxBqR,IAAUtP,EAAc9B,WAO5B,GAFA1zC,EAAU9Q,UAAU,cAAcE,SAE7B01D,GAASD,EAAd,CAEA,IAAIhG,EAAgBvlD,EAAM4U,QAAQxgB,EAAWirD,aAAcjrD,EAAW0xB,eAGtE,GAAGylC,EAAO,CACN,IACIE,EAAaC,EADbvR,EAAa+B,EAAc/B,WAG/Bp+C,EAAKo+C,GAAcA,EAAWp+C,GAIjB,YAHbE,EAAKk+C,GAAcA,EAAWl+C,IACfugD,WAGXiP,EAAc70B,EAAIikB,SAClB6Q,EAAc90B,EAAIkkB,WAElB2Q,EAAc1vD,EAAGhH,QAAUolD,EAAW3oD,EACtCk6D,EAAczvD,EAAGlH,QAAUolD,EAAWvoD,GAE1C,IAMI+5D,EAAOC,EANPC,EAAiB14C,EAAU24C,YAAY3R,EAAWj5C,MAAOqkD,GAAiB,IAC1EvlD,EAAMgB,SAASukD,GAAiBpL,EAAWj5C,MAC3C6qD,EAAQ9vD,EAAG+vD,UACXC,EAAahwD,EAAGiwD,eAChBC,EAASlwD,EAAGmwD,YAAcP,EAC1BQ,EAAQx4D,EAAKy4D,cAAc1wD,EAAIK,GAGnC,IAAgC,IAA7B8vD,EAAMtrD,QAAQ,YAAiD,IAA7BsrD,EAAMtrD,QAAQ,UAAkB,CAKjE,IAJgC,IAA7BsrD,EAAMtrD,QAAQ,YACbkrD,EAAQU,EACRT,EAAYH,IAEgB,IAA7BM,EAAMtrD,QAAQ,UAAkB,CAC/B,IAAI8rD,EAAWtwD,EAAGuwD,kBACdC,EAAWxwD,EAAGywD,kBACD,SAAdzwD,EAAGwN,SACF8iD,EAAW1uD,KAAK/C,IAAIyxD,EAAUtwD,EAAG+jB,UACjCysC,EAAW5uD,KAAK9C,IAAI0xD,EAAUxwD,EAAG+jB,WAErC2rC,EAAQjoD,EAAG1O,EAAIu3D,EAAW7oD,EAAGzO,EAC7B22D,EAAYloD,EAAG1O,EAAIy3D,EAAW/oD,EAAGzO,CACrC,CAGAyR,EAAU+B,OAAO,OAAQ,gBACpBjS,KAAK,CACF2P,GAAIwlD,EACJp6C,GAAIq6C,EACJj6C,GAAI+5C,EACJl6C,GAAIk6C,EACJ,eAAgBO,EAChB/kD,OAAQilD,EACR,mBAAoBtpD,EAAQs3B,UAAUl+B,EAAG0wD,UAAWV,KAEvDnnD,QAAQ,aAAa,GACrBA,QAAQ,SAAS,GAGtB4B,EAAU+B,OAAO,OAAQ,gBACpBjS,KAAK,CACF2P,GAAIwlD,EACJp6C,GAAIq6C,EACJj6C,GAAI+5C,EACJl6C,GAAIk6C,EACJ,eAAgBO,EAAa,EAC7B/kD,OAAQq+C,IAEXzgD,QAAQ,aAAa,GACrBA,QAAQ,SAAS,EAC1B,EAEgC,IAA7BinD,EAAMtrD,QAAQ,WACbiG,EAAU+B,OAAO,SAAU,gBACtBjS,KAAK,CACF6mC,GAAIgvB,GAAqB,UAAZpwD,EAAGsc,KAAmB0zC,GAAcA,GACjD3uB,GAAIouB,EACJr3C,EAAG43C,EACH9kD,KAAMglD,IAETrnD,QAAQ,aAAa,EAElC,CAEA,GAAG0mD,EAAO,CACN,IACIoB,EAAaC,EADbzS,EAAa8B,EAAc9B,WAG/Br+C,EAAKq+C,GAAcA,EAAWr+C,GAC9BE,EAAKm+C,GAAcA,EAAWn+C,GAGjB,WAFDF,EAAGygD,WAGXoQ,EAAch2B,EAAIikB,SAClBgS,EAAcj2B,EAAIkkB,WAElB8R,EAAc7wD,EAAGhH,QAAUqlD,EAAW5oD,EACtCq7D,EAAc5wD,EAAGlH,QAAUqlD,EAAWxoD,GAE1C,IAMIk7D,EAAOC,EANPC,EAAiB75C,EAAU24C,YAAY1R,EAAWl5C,MAAOqkD,GAAiB,IAC1EvlD,EAAMgB,SAASukD,GAAiBnL,EAAWl5C,MAC3C+rD,EAAQlxD,EAAGiwD,UACXkB,EAAanxD,EAAGmwD,eAChBiB,EAASpxD,EAAGqwD,YAAcY,EAC1BI,EAAQv5D,EAAKy4D,cAAc1wD,EAAIG,GAGnC,IAAgC,IAA7BkxD,EAAMxsD,QAAQ,YAAiD,IAA7BwsD,EAAMxsD,QAAQ,UAAkB,CAKjE,IAJgC,IAA7BwsD,EAAMxsD,QAAQ,YACbqsD,EAAQM,EACRL,EAAYF,IAEgB,IAA7BI,EAAMxsD,QAAQ,UAAkB,CAC/B,IAAI4sD,EAAWtxD,EAAGywD,kBACdc,EAAWvxD,EAAG2wD,kBACD,SAAd3wD,EAAG0N,SACF4jD,EAAWxvD,KAAK/C,IAAIuyD,EAAUtxD,EAAGikB,UACjCstC,EAAWzvD,KAAK9C,IAAIuyD,EAAUvxD,EAAGikB,WAErC8sC,EAAQppD,EAAGrO,GAAK,EAAIi4D,GAAY5pD,EAAGpO,EACnCy3D,EAAYrpD,EAAGrO,GAAK,EAAIg4D,GAAY3pD,EAAGpO,CAC3C,CAGAoR,EAAU+B,OAAO,OAAQ,gBACpBjS,KAAK,CACF2P,GAAIymD,EACJr7C,GAAIq7C,EACJj7C,GAAIm7C,EACJt7C,GAAIu7C,EACJ,eAAgBG,EAChBhmD,OAAQimD,EACR,mBAAoBtqD,EAAQs3B,UAAUp+B,EAAG4wD,UAAWO,KAEvDpoD,QAAQ,aAAa,GACrBA,QAAQ,SAAS,GAGtB4B,EAAU+B,OAAO,OAAQ,gBACpBjS,KAAK,CACF2P,GAAIymD,EACJr7C,GAAIq7C,EACJj7C,GAAIm7C,EACJt7C,GAAIu7C,EACJ,eAAgBG,EAAa,EAC7BhmD,OAAQq+C,IAEXzgD,QAAQ,aAAa,GACrBA,QAAQ,SAAS,EAC1B,EAGgC,IAA7BmoD,EAAMxsD,QAAQ,WACbiG,EAAU+B,OAAO,SAAU,gBACtBjS,KAAK,CACF6mC,GAAIuvB,EACJtvB,GAAI8vB,GAAqB,QAAZrxD,EAAGwc,KAAiB20C,GAAcA,GAC/C74C,EAAG64C,EACH/lD,KAAMgmD,IAETroD,QAAQ,aAAa,EAElC,CAlK4B,CAmKhC,CAoBA,SAASi5C,EAAcniD,EAAIwhD,GAEvB,OAAIA,IACDA,EAAehD,aAAex+C,EAAGyhD,aAAajD,YAC7CgD,EAAejD,aAAev+C,EAAGyhD,aAAalD,WAGtD,CAEA,SAASoP,EAAUlhD,EAAG8N,GAClB,OAAOpT,EAAawmD,UAAUlhD,GAAK,GAAI,CACnC8N,IAAKA,EACLo3C,YAAa,CAAC,KAAM,MAAO,MAAO,IAAK,IAAK,OAEpD,CA2BA,SAASpP,EAASxnD,EAAUsnD,EAAc7pD,GACtC,IAAItC,EAAKmsD,EAAatnD,EAAW,KAC7B4c,EAAM0qC,EAAatnD,EAAW,OAE9B8zD,EAAMxM,EAAaxhC,GAAG,GAE1B,GAAe,aAAZ3qB,EAAG0C,MAAmC,kBAAZ1C,EAAG0C,KAA0B+e,EAAMzhB,EAAG07D,eAAej6C,QAC7E,GAAe,SAAZzhB,EAAG0C,KAAiB,CACxB,IAAIi5D,EAAkBxP,EAAaxiC,MAAM9kB,EAAW,mBACpD,GAAG82D,EAAiB,CAChB,IAAIvuD,EAAI++C,EAAaxhC,GAAGwhC,EAAa76C,OAEjCiN,EAAQnR,EAAEvI,EAAW,cACZ6L,IAAV6N,IAAqBA,EAAQnR,EAAEvI,IAElC,IAAI2Z,EAAMpR,EAAEvI,EAAW,YACZ6L,IAAR8N,IAAmBA,EAAMpR,EAAEvI,IAE9B,IAAI+2D,EAAOp9C,EAAMD,EAEM,QAApBo9C,EACCl6C,GAAOm6C,EACmB,WAApBD,IACNl6C,GAAOm6C,EAAO,EAEtB,CAEAn6C,EAAMzhB,EAAG67D,IAAIp6C,EACjB,CAWA,OATGk3C,GAAOA,EAAIp1D,GAAKo1D,EAAIp1D,EAAEu4D,YAAc97D,EAAG2K,MAEX,UAAvBrI,EAAWy5D,SACe,UAA1Bz5D,EAAW05D,aAEXv6C,GAAOk3C,EAAIp1D,EAAE04D,OAIdx6C,CACX,CAKA,SAASorC,EAAa/iD,GAAM,OAAOA,EAAG6mB,UAAY7mB,EAAGoyD,SAAW,CAChE,SAASnP,EAAcjjD,GAAM,OAAOA,EAAG8mB,WAAa9mB,EAAGqyD,UAAY,CAEnE,SAASnoD,EAAsBlK,EAAIgL,GAC/B,IAAIxS,EAAawH,EAAG9E,YAEhBo3D,EAAOtnD,EAAKd,wBAEZG,EAAKioD,EAAKhoD,KACV+2B,EAAKixB,EAAK7nD,IACVF,EAAKF,EAAKioD,EAAK37D,MACfof,EAAKsrB,EAAKixB,EAAK17D,OAEfk4C,EAAIh6C,EAAIiqD,iBAAiBvmD,EAAWwmD,cAAhClqD,CAA+CuV,EAAIg3B,GACvD0N,EAAIj6C,EAAIiqD,iBAAiBvmD,EAAWwmD,cAAhClqD,CAA+CyV,EAAIwL,GAEvDw8C,EAAKzjB,EAAE,GACP0jB,EAAK1jB,EAAE,GACP2jB,EAAK1jB,EAAE,GACP2jB,EAAK3jB,EAAE,GAEX,MAAO,CACHn5C,EAAG28D,EACHv8D,EAAGw8D,EACH77D,MAAO87D,EAAKF,EACZ37D,OAAQ87D,EAAKF,EACb/nD,IAAKxI,KAAK/C,IAAIszD,EAAIE,GAClBpoD,KAAMrI,KAAK/C,IAAIqzD,EAAIE,GACnBjoD,MAAOvI,KAAK9C,IAAIozD,EAAIE,GACpB/nD,OAAQzI,KAAK9C,IAAIqzD,EAAIE,GAE7B,C,wBCluEA,IAAI59D,EAAMC,EAAQ,OACdqP,EAAQrP,EAAQ,MAChB2mD,EAAiB3mD,EAAAA,OAAAA,eAErBO,EAAOC,QAAU,SAAkCo9D,EAAQC,EAASj4D,EAAQD,GACxEA,EAAOA,GAAQ,CAAC,EAEhB,IAAIm4D,EAAYD,EAAQ/H,OAExB,SAASiI,EAAgBl4D,GACjBF,EAAKhE,KAAKkE,KACVF,EAAKhE,KAAKkE,GAAQi4D,EAAYD,EAAQ/H,OAAOn0D,KAAKkE,GAAQg4D,EAAQl8D,KAAKkE,GAE/E,CAGGg4D,GAAWlX,EAAekX,EAAQjX,aAC7BjhD,EAAKhE,OAAMgE,EAAKhE,KAAO,CAAC,GAC5Bo8D,EAAgB,QAChBA,EAAgB,UAChBA,EAAgB,SAEbD,GACKn4D,EAAK1D,UAAS0D,EAAK1D,QAAUoN,EAAM4U,QAAQ45C,EAAQ/H,OAAO7zD,QAAS47D,EAAQ1oC,gBAC3ExvB,EAAKzD,cAAayD,EAAKzD,YAAc27D,EAAQ/H,OAAO5zD,cAEpDyD,EAAK1D,UAAS0D,EAAK1D,QAAU47D,EAAQ1oC,gBAIjDvvB,EAAO,qBAAsBD,EAAK1D,SAClC2D,EAAO,yBAA0BD,EAAKzD,aACtC0D,EAAO,wBAAyBD,EAAKg9C,YACrC5iD,EAAI8P,WAAWjK,EAAQ,kBAAmBD,EAAKhE,MAC/CiE,EAAO,mBAAoBD,EAAK5D,MACpC,C,wBCnCA,IAAIhC,EAAMC,EAAQ,OACdmI,EAAmBnI,EAAQ,OAE/BO,EAAOC,QAAU,SAAiC8H,EAAUC,GACxD,SAAS3C,EAAOC,EAAMC,GAElB,YAAuB+L,IAApBtJ,EAAU1C,GAA4B0C,EAAU1C,GAE5C9F,EAAI6F,OAAO0C,EAAUC,EAAWJ,EAAkBtC,EAAMC,EACnE,CAGA,OADAF,EAAO,aACAA,EAAO,YAClB,C,wBCbA,IAAImM,EAAK/R,EAAQ,OACbD,EAAMC,EAAQ,OACdsS,EAActS,EAAQ,OACtBu+B,EAAUv+B,EAAQ,OAClBmI,EAAmBnI,EAAQ,OAC3Bg+D,EAAch+D,EAAQ,OAE1BO,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,KAEN+6B,UAAW3hC,EAAQ,OACnBiI,OAAQ,CACJgH,OAAQ9G,GAGZ7C,WAAYtF,EAAQ,OACpBmI,iBAAkBA,EAElB81D,2BAA4Bj+D,EAAQ,OACpC23B,eAAgB33B,EAAQ,OACxBgiB,qBAAsBhiB,EAAQ,OAE9B2rB,KAAM3rB,EAAQ,OAEdykD,oBAAqBlmB,EAAQkmB,oBAC7BI,WAAYtmB,EAAQsmB,WACpBK,MAAO3mB,EAAQ2mB,MACfN,WAAYrmB,EAAQqmB,WACpBxd,sBAAuB7I,EAAQ6I,sBAE/B82B,gBAyBJ,SAAyBpzC,EAAOqzC,EAAUt4D,GACtC,OAAO9F,EAAIo6D,WAAWrvC,EAAOqzC,EAAU,cAAgBt4D,EAC3D,EA1BIu4D,cA4BJ,SAAuBtzC,EAAOrnB,EAAY06D,GAKtC,OAAOp+D,EAAIo6D,WAAWrvC,EAAOqzC,EAAU,aAJvC,SAAiBv7C,GACb,OAAO7iB,EAAIijD,gBAAgB,CAACC,UAAWrgC,GAAM,CAACmJ,QAASjB,EAAMiB,SAAUtoB,EAC3E,GAGJ,EAhCI4/C,MAAO2a,EAAY3a,MACnBzhB,QAAStvB,EAAYsvB,QAErBvsB,UAAW2oD,EAAY3oD,UACvBe,YAKJ,SAAqBioD,GAGjB,IAAIxsC,EAAY9xB,EAAIu+D,cAAcD,GAC1BA,EACAtsD,EAAGxK,OAAO82D,GAElBxsC,EAAU5sB,UAAU,eAAeE,SACnC0sB,EAAU5sB,UAAU,cAAcE,QACtC,EAZIo5D,MAAOv+D,EAAQ,O,wBCxCnB,IAAI2hC,EAAY3hC,EAAQ,OAEpByJ,EAAYzJ,EAAQ,OAEpB2B,EAAO8H,EAAU,CACjBQ,SAAU,OACVlJ,YAAa,uEAEjBY,EAAK2O,OAAOxK,KAAO67B,EAAUmiB,UAC7BniD,EAAK6B,KAAKsC,KAAO67B,EAAUkiB,cAE3BtjD,EAAOC,QAAU,CACbg+D,UAAW,CACP19D,QAAS,WACTwJ,MAAO,CAAC,QAAS,UACjBxE,KAAM,QACNmE,SAAU,OACVM,OAAQ,CAAC,QACTxJ,YAAa,CACT,oDACA,4DACA,iEACA,sEACA,oCACA,6CACA,wEACA,0EACA,gFACA,qEACA,gFACA,yEACA,yBACFC,KAAK,MAEXigC,SAAU,CACNngC,QAAS,aACTuJ,OAAQ,CACJ,OACA,MACA,SACA,QACA,iBACA,eACA,WACA,WACA,aACA,QACA,aACA,GAEJvE,KAAM,OACNmE,SAAU,UACVlJ,YAAa,CACT,4CACA,yDACA,yDACA,cACFC,KAAK,MAEX4lD,UAAW,CACP9lD,QAAS,aACTuJ,OAAQ,CAAC,IAAK,IAAK,WAAW,EAAO,YAAa,aAClDvE,KAAM,UACNmE,SAAU,UACVlJ,YAAa,CACT,6CACA,gDACA,sDACA,wEACA,qEACA,0EACA,mEACA,kFACA,0EACA,uFACA,8CACFC,KAAK,MAEX2nD,cAAe,CACX7nD,QAAS,UACTqJ,KAAM,EACNrE,KAAM,GACNmE,SAAU,OACVlJ,YAAa,CACT,yDACA,yEACA,mEACA,wEACA,oEACA,uEACFC,KAAK,MAEX4nD,cAAe,CACX9nD,QAAS,UACTqJ,KAAM,EACNrE,MAAO,EACPmE,SAAU,OACVlJ,YAAa,CACT,iEACA,mEACA,uEACA,oEACA,sCACFC,KAAK,MAEXgC,WAAY,CACRf,QAAS,CACLnB,QAAS,QACTmJ,SAAU,OACVlJ,YAAa,CACT,0DACFC,KAAK,MAEXkB,YAAa,CACTpB,QAAS,QACTmJ,SAAU,OACVlJ,YAAa,CACT,uDACFC,KAAK,MAEXW,KAAMA,EACN+0D,eAAgBjtD,EAAU,CACtBQ,SAAU,OACVlJ,YAAa,CACT,2DACA,kCACFC,KAAK,OAEXe,MAAO,CACHjB,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,QAAS,QAC1BvE,KAAM,OACNmE,SAAU,OACVlJ,YAAa,CACT,4EACA,2EACFC,KAAK,MAEX2hD,WAAY,CACR7hD,QAAS,UACTqJ,KAAM,EACNrE,KAAM,GACNmE,SAAU,OACVlJ,YAAa,CACT,yEACA,2DACA,gEACA,iEACA,yDACA,oDACFC,KAAK,MAGXiJ,SAAU,QAEdw0D,gBAAiB,CACb39D,QAAS,aACTuJ,OAAQ,CAAC,IAAK,IAAK,IAAK,OACxBvE,KAAM,MACN/E,YAAa,CACT,+EACA,0EACA,iEACFC,KAAK,KACPiJ,SAAU,Q,wBCpKlB,IAAIlK,EAAMC,EAAQ,OACdmI,EAAmBnI,EAAQ,OAC3B0+D,EAA0B1+D,EAAQ,OAClCgkD,EAA2BhkD,EAAQ,OAEvCO,EAAOC,QAAU,SAA8B8H,EAAUC,GACrD,SAAS3C,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAO0C,EAAUC,EAAWJ,EAAkBtC,EAAMC,EACnE,CAEgB44D,EAAwBp2D,EAAUC,KAE9C3C,EAAO,iBACPA,EAAO,kBAIK,WADDA,EAAO,aACIA,EAAO,mBAKjC,IAAI+4D,EAAYp2D,EAAU2/C,KAAK,UAC3B0W,EAASr2D,EAAU2/C,KAAK,OACxB1iC,EAAMjd,EAAUU,iBAAiBlE,OAEX,SAAvBwD,EAAU04B,YACP09B,GAAaC,IAAmB,IAARp5C,GACzBm5C,GAAaC,GAAkB,IAARp5C,KAExBjd,EAAU04B,SAAW,OAGzB+iB,EAAyB17C,EAAUC,EAAW3C,GAE9C7F,EAAI8P,WAAWjK,EAAQ,4BAA6B2C,EAAUvF,WAAWrB,KAC7E,C,wBCpCA,IAAI5B,EAAMC,EAAQ,OACdgkD,EAA2BhkD,EAAQ,OACnCmI,EAAmBnI,EAAQ,OAE/BO,EAAOC,QAAU,SAAoC8H,EAAUC,GAK3Dy7C,EAAyB17C,EAAUC,GAJnC,SAAgB1C,EAAMC,GAClB,OAAO/F,EAAI6F,OAAO0C,EAAUC,EAAWJ,EAAkBtC,EAAMC,EACnE,GAGJ,C,wBCVA,IAAI/F,EAAMC,EAAQ,OACd83B,EAAe93B,EAAAA,OAAAA,QACf6+D,EAAc7+D,EAAAA,OAAAA,EACd8+D,EAAmB9+D,EAAAA,OAAAA,QACnB4oB,EAAW5oB,EAAQ,OAEnB++D,EAAY,CACZC,KAAM,CACFl+D,QAAS,UACTqJ,IAAK,EACLF,SAAU,OACVlJ,YAAa,CACT,iEACA,+DACA,4DACA,8DACFC,KAAK,MAEXi+D,SAAU,CACNn+D,QAAS,aACTuJ,OAAQ,CAAC,gBAAiB,iBAC1BvE,KAAM,gBACNmE,SAAU,OACVlJ,YAAa,CACT,4DACA,6CACFC,KAAK,MAEXk+D,QAAS,CACLp+D,QAAS,UACTqJ,IAAK,EACLF,SAAU,OACVlJ,YAAa,CACT,oEACA,+DACA,mEACA,4DACA,8DACFC,KAAK,MAEXkH,SAAU,CACNpH,QAAS,aACTq+D,YAAY,EACZC,WAAY,EACZC,MAAO,CAACv+D,QAAS,aAAcuJ,OAAQ,CAACytB,EAAa,MAAMrtB,WAAY,IAAKR,SAAU,QACtFA,SAAU,OACVlJ,YAAa,CACT,yEACA,wEACA,uEACA,0DACA,+EACA,2DACFC,KAAK,MAEXojD,MAAO,CACHtjD,QAAS,aACTq+D,YAAY,EACZE,MAAO,CAACv+D,QAAS,aAAcuJ,OAAQ,CAACy0D,EAAiBj+D,EAAE4J,WAAY,IAAKR,SAAU,QACtFA,SAAU,OACVlJ,YAAa,CACT,8EACA,mEACA,0EACA,uEACA,kCACFC,KAAK,MAEXqjD,MAAO,CACHvjD,QAAS,aACTq+D,YAAY,EACZE,MAAO,CAACv+D,QAAS,aAAcuJ,OAAQ,CAACy0D,EAAiB79D,EAAEwJ,WAAY,IAAKR,SAAU,QACtFA,SAAU,OACVlJ,YAAa,CACT,8EACA,mEACA,sEACA,uEACA,kCACFC,KAAK,MAEXknC,QAAS,CACLpnC,QAAS,aACTuJ,OAAQ,CAAC,cAAe,WACxBvE,KAAM,UACNmE,SAAU,OACVlJ,YAAa,CACT,uFACA,oEACA,gEACA,gFACA,gDACFC,KAAK,MAEXs+D,KAAM,CACFx+D,QAAS,SACTqJ,IAAK,EACLC,IAAK,EACLH,SAAU,OACVlJ,YAAa,CACT,+DACA,4DACA,yDACFC,KAAK,MAEXu+D,KAAM,CACFz+D,QAAS,SACTqJ,IAAK,EACLC,IAAK,EACLH,SAAU,OACVlJ,YAAa,CACT,6DACA,6DACA,yDACFC,KAAK,MAEXsC,OAAQu7D,EAAY,CAACj4D,KAAM,OAAQqD,SAAU,OAAQu1D,YAAY,GAAO,CACpEz+D,YAAa,CACT,qDACA,0CACFC,KAAK,OAEXy+D,MAAO,CACH3+D,QAAS,aACTuJ,OAAQ,CAAC,SAAU,cAAe,WAAY,OAC9CvE,KAAM,cACNmE,SAAU,OACVlJ,YAAa,CACT,6DACA,gEACA,kEACFC,KAAK,MAEX0+D,MAAO,CACH5+D,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,YAAa,aAAc,SAC5CvE,KAAM,YACNmE,SAAU,OACVlJ,YAAa,CACT,2DACA,mEACA,sEACFC,KAAK,MAEXiJ,SAAU,QAGd,SAAS01D,EAAQ1wD,EAAQ2wD,EAAM55D,GAC3B,IAAI65D,EAAUD,EAAK55D,EAAW,QAC1B85D,EAAWj3D,OAAOD,MAAMqG,EAAO8wD,YAAc,CAAC,GAAG/5D,IAAa,CAAC,GAEnE,OAAGgf,MAAMC,QAAQ46C,GAAiBA,EAC/BC,EAAS/6D,OAAe+6D,OAA3B,CACJ,CAoEA,SAASE,EAAkBh6D,EAAUJ,EAAQq6D,EAASC,EAAU16C,EAAK4lB,GACjE,IAAI+0B,EAASv6D,EAAOI,EAAW,MAAOi6D,GAClC38D,EAASsC,EAAO,UAAYI,GAChCJ,EAAOI,EAAW,OAAQk6D,GAM1B,IAJA,IAAIj1C,EAAM,IAAIjG,MAAMQ,GAChB9F,EAAQpc,EAAO,GACf88D,GAAQ98D,EAAO,GAAKoc,IAAU8F,EAAM26C,GACpCE,EAAaD,GAAQ,EAAID,GACrBr7D,EAAI,EAAGA,EAAI0gB,EAAK1gB,IAAK,CACzB,IAAIw7D,EAAY5gD,EAAQ0gD,EAAOt7D,EAC/BmmB,EAAImgB,EAAY5lB,EAAM,EAAI1gB,EAAKA,GAAK,CAACw7D,EAAWA,EAAYD,EAChE,CACA,OAAOp1C,CACX,CAwIA,SAASs1C,EAAaC,EAAQC,EAAaj7C,EAAKk7C,EAAS16D,GACrD,IACIlB,EADAmmB,EAAM,IAAIjG,MAAMQ,GAGpB,SAASm7C,EAAY77D,EAAG87D,IACgB,IAAjCH,EAAY3wD,QAAQ8wD,SAAsC/uD,IAApB6uD,EAAQE,IAC7C31C,EAAInmB,GAAK87D,EACTF,EAAQE,GAAU97D,GACfmmB,EAAInmB,GAAK,EACpB,CAEA,GAAGkgB,MAAMC,QAAQu7C,GACb,IAAI17D,EAAI,EAAGA,EAAI0gB,EAAK1gB,IAChB67D,EAAY77D,EAAG07D,EAAO17D,SAK1B,IADA67D,EAAY,EAAG36D,GACXlB,EAAI,EAAGA,EAAI0gB,EAAK1gB,IAChB67D,EAAY77D,EAAGkB,GAAYlB,EAAI,IAIvC,OAAOmmB,CACX,CAEA1qB,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,OAENqB,OAAQ,CACJgH,OAAQ,CAAC2wD,KAAMb,IAGnB52D,iBAAkB42D,EAClB8B,aAzPJ,SAAsBv4D,EAAUC,GAC5B,IAAIu4D,EAASx4D,EAASs3D,MAAQ,CAAC,EAC3BmB,EAAQpB,EAAQp3D,EAAWu4D,EAAQ,KACnCE,EAAQrB,EAAQp3D,EAAWu4D,EAAQ,KAEvC,GAAIx4D,EAASs3D,MAASmB,GAAUC,EAAhC,CAEA,IAQIC,EAAUC,EARVC,EAAiBn8C,MAAMC,QAAQ67C,EAAO54D,WAAa8c,MAAMC,QAAQ67C,EAAO54D,SAAS,IACjFk5D,EAAWp8C,MAAMC,QAAQ87C,GACzBM,EAAWr8C,MAAMC,QAAQ+7C,GACzBM,EACAF,GAAYL,IAAUD,EAAO1c,OAC7Bid,GAAYL,IAAUF,EAAOzc,MAK9B8c,GACCF,EAAWH,EAAO54D,SAASnD,OAC3Bm8D,EAAcJ,EAAO54D,SAAS,GAAGnD,SAE9Bs8D,IAAUJ,EAAWD,EAAMj8D,QAC3Bq8D,IAAUF,EAAcH,EAAMh8D,SAGrC,IAAIw8D,EAAU34C,EAASQ,aAAa7gB,EAAW,QAM3Cy2D,EAAOp5D,EAAO,OAAQq7D,GACtB/B,EAAUt5D,EAAO,UAAWs7D,GAEhC,GAAKlC,EAAOE,EAAU,EAAtB,CAKA,IAAIiC,IAAmBC,IAAaC,EACe,gBAAtBz7D,EAAO,aACTu7D,GAAiB,GAE5CI,EAAQC,gBAAkBL,EAE1B,IAMIM,EAAWC,EALXt2B,EAAwB,kBADbxlC,EAAO,YAGlB+7D,EAAWR,EAAiB,GAAM,GAClCS,EAAWT,EAAiB,GAAM,GAGnCG,GAAoB/4D,EAAUs5D,iBAC7BJ,EAAYl5D,EAAUs5D,eAAepC,MACrCiC,EAAYn5D,EAAUs5D,eAAenC,OAGzC6B,EAAQO,SAAW,CACfjhE,EAAGm/D,EAAkB,IAAKp6D,EAAQ+7D,EAAUF,EAAWvC,GACvDj+D,EAAG++D,EAAkB,IAAKp6D,EAAQg8D,EAAUF,EAAW1C,EAAM5zB,GAtBjE,aAFW7iC,EAAUq3D,IA9BwB,CAsB7C,SAASh6D,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOk7D,EAAQS,EAASxC,EAAWl5D,EAAMC,EACxD,CAgCJ,EA6LIi8D,gBAxKJ,SAAyBz5D,EAAUC,GAC/B,IAAIg5D,EAAUh5D,EAAUq3D,KAExB,GAAI2B,GAAYA,EAAQO,SAAxB,CAEA,IAOIh9D,EAAGqC,EAAG66D,EAAKC,EAAK1uD,EAAW2uD,EAAaC,EAPxCrB,EAASx4D,EAASs3D,MAAQ,CAAC,EAC3B13D,EAAWK,EAAUW,UACrBi4D,EAAiBI,EAAQC,gBACzBxC,EAAOuC,EAAQvC,KACfE,EAAUqC,EAAQrC,QAClBkD,EAAyC,gBAApBb,EAAQr5B,QAI7Bw4B,EAAUa,EAAQc,SAAW,CAAC,EAElC,GAAGlB,EAAgB,CACf,IAAImB,EAAaxB,EAAO54D,UAAY,GACpCg6D,EAAcX,EAAQr5D,SAAW,IAAI8c,MAAMg6C,GAC3C,IAAIvsD,EAAQ,EAEZ,IAAI3N,EAAI,EAAGA,EAAIk6D,EAAMl6D,IAAK,CACtB,IAAIy9D,EAASL,EAAYp9D,GAAK,IAAIkgB,MAAMk6C,GACpCsD,EAAQF,EAAWx9D,IAAM,GAC7B,IAAIqC,EAAI,EAAGA,EAAI+3D,EAAS/3D,IAQpB,GAPGi7D,GACC7uD,EAAuB,IAAVd,EAAe,KAAQ,IAAMA,EAAQ,IAAMA,EACxDA,KACGc,EAAYivD,EAAMr7D,GAEzBo7D,EAAOp7D,GAAK,IAEkC,IAA3Ce,EAASu6D,UAAU3yD,QAAQyD,GAAmB,CAI7C,GAHA4uD,EAAO5uD,EAAUzD,QAAQ,KACzBkyD,EAAMzuD,EAAUgoB,MAAM,EAAG4mC,GACzBF,EAAM1uD,EAAUgoB,MAAM4mC,QACDtwD,IAAjB6uD,EAAQsB,IAAsBtB,EAAQsB,KAAS76D,QAC7B0K,IAAjB6uD,EAAQuB,IAAsBvB,EAAQuB,KAASn9D,EAEhD,SAGJy9D,EAAOp7D,GAAKoM,EACZmtD,EAAQsB,GAAO76D,EACfu5D,EAAQuB,GAAOn9D,CACnB,CAER,CACJ,KAAO,CACH,IAAIi8D,EAAQpB,EAAQp3D,EAAWu4D,EAAQ,KACnCE,EAAQrB,EAAQp3D,EAAWu4D,EAAQ,KACvCS,EAAQnd,MAAQmc,EAAaQ,EAAO74D,EAASR,MAAOw3D,EAASwB,EAAS,KACtEa,EAAQld,MAAQkc,EAAaS,EAAO94D,EAASN,MAAOo3D,EAAM0B,EAAS,IACvE,CAEA,IAAIgC,EAAUnB,EAAQoB,SAAW,CAAC,EAC9Bv3B,EAAgC,kBAArBm2B,EAAQtC,SAEvB,IAAI,IAAI2B,KAAUF,EAAS,CACvB,IAGIkC,EAAIC,EAAKC,EAHT98D,EAAW46D,EAAO50D,OAAO,GACzB4b,EAAO25C,EAAQv7D,EAAW,QAI9B,GAAG4hB,EAAK7iB,OAAS,EAGb29D,EAAQ9B,GAAU,YACf,GAAgB,MAAb56D,GAUN,GATuB,MAAnB4hB,EAAK5b,OAAO,KAAgBo/B,GAC5Bw3B,EAAK,EACLC,EAAM,EACNC,EAAS9D,IAET4D,EAAK5D,EAAO,EACZ6D,GAAO,EACPC,GAAU,GAEX3B,EAAgB,CACf,IAAI4B,EAASrC,EAAQE,GACrB,IAAI97D,EAAI89D,EAAI99D,IAAMg+D,EAAQh+D,GAAK+9D,EAE3B,IADAtvD,EAAY2uD,EAAYp9D,GAAGi+D,MAE3BZ,EAAO5uD,EAAUzD,QAAQ,KACtByD,EAAUgoB,MAAM,EAAG4mC,KAAUvB,GAAQ,CACpC8B,EAAQ9B,GAAUrtD,EAAUgoB,MAAM4mC,GAClC,KACJ,CAER,MACI,IAAIr9D,EAAI89D,EAAI99D,IAAMg+D,EAAQh+D,GAAK+9D,EAE3B,GADAZ,EAAMV,EAAQld,MAAMv/C,IAC6B,IAA9CoD,EAASu6D,UAAU3yD,QAAQ8wD,EAASqB,GAAa,CAChDS,EAAQ9B,GAAUqB,EAClB,KACJ,OAaR,GATuB,MAAnBr6C,EAAK5b,OAAO,IACZ42D,EAAK,EACLC,EAAM,EACNC,EAAS5D,IAET0D,EAAK1D,EAAU,EACf2D,GAAO,EACPC,GAAU,GAEX3B,EAAgB,CACf,IAAI6B,EAAMtC,EAAQE,GAClB,IAAI97D,EAAI89D,EAAI99D,IAAMg+D,EAAQh+D,GAAK+9D,EAE3B,IADAtvD,EAAY2uD,EAAYc,GAAKl+D,MAE7Bq9D,EAAO5uD,EAAUzD,QAAQ,KACtByD,EAAUgoB,MAAM4mC,KAAUvB,GAAQ,CACjC8B,EAAQ9B,GAAUrtD,EAAUgoB,MAAM,EAAG4mC,GACrC,KACJ,CAER,MACI,IAAIr9D,EAAI89D,EAAI99D,IAAMg+D,EAAQh+D,GAAK+9D,EAE3B,GADAb,EAAMT,EAAQnd,MAAMt/C,IAC6B,IAA9CoD,EAASu6D,UAAU3yD,QAAQkyD,EAAMpB,GAAgB,CAChD8B,EAAQ9B,GAAUoB,EAClB,KACJ,CAIhB,CA9HwC,CA+H5C,E,wBCjXA,IAAIt4D,EAAqB1J,EAAQ,OAC7BW,EAAiBX,EAAAA,OAAAA,eACjB2J,EAAoB3J,EAAQ,OAGhCO,EAAOC,QAAUG,EAAe,QAAS,CACrCC,QAAS,CACLE,QAAS,UACTgF,MAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,oDACFC,KAAK,MAGXiiE,OAAQ,CACJniE,QAAS,SACTmJ,SAAU,YACVlJ,YAAa,CACT,6CACA,uDACA,6DAEFC,KAAK,MAGX4yB,MAAO,CACH9yB,QAAS,aACTuJ,OAAQ,CAAC,QAAS,SAClBvE,KAAM,QACNmE,SAAU,YACVlJ,YAAa,CACT,4DACA,kDACA,8CACFC,KAAK,MAGXkiE,MAAO,CACHpiE,QAAS,SACTgF,KAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,8CACA,yDACA,0DACA,qBACA,4DACA,sBACFC,KAAK,MAGXmiE,MAAO,CACHriE,QAAS,SACTgF,KAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,4CACA,yDACA,0DACA,sBACA,4DACA,uBACFC,KAAK,MAGXoiE,OAAQ,CACJtiE,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,UAAW,WAC5BvE,KAAM,UACNmE,SAAU,YACVlJ,YAAa,CACT,wDACFC,KAAK,MAGXc,QAAS,CACLhB,QAAS,SACTqJ,IAAK,EACLC,IAAK,EACLtE,KAAM,EACNmE,SAAU,YACVlJ,YAAa,kCAGjBF,EAAG,CACCC,QAAS,MACTgF,KAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,+BACA,0DACA,sBACA,4BACFC,KAAK,MAGXC,EAAG,CACCH,QAAS,MACTgF,KAAM,EACNmE,SAAU,YACVlJ,YAAa,CACT,+BACA,0DACA,sBACA,4BACFC,KAAK,MAGXK,QAAS,CACLP,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,SAAU,SAC3BvE,KAAM,OACNmE,SAAU,YACVlJ,YAAa,sCAGjBQ,QAAS,CACLT,QAAS,aACTuJ,OAAQ,CAAC,MAAO,SAAU,UAC1BvE,KAAM,MACNmE,SAAU,YACVlJ,YAAa,uCAGjBsF,KAAM,CACFvF,QAAS,aACTuJ,OAAQ,CACJ,QACAX,EAAmBc,QAAQ3J,EAAE4J,YAEjC3E,KAAM,QACNmE,SAAU,YACVlJ,YAAa,CACT,uCACA4I,EAAkBe,mBAAmB,IAAK,OAAQ,UACpD1J,KAAK,MAGXsF,KAAM,CACFxF,QAAS,aACTuJ,OAAQ,CACJ,QACAX,EAAmBc,QAAQvJ,EAAEwJ,YAEjC3E,KAAM,QACNmE,SAAU,YACVlJ,YAAa,CACT,uCACA4I,EAAkBe,mBAAmB,IAAK,SAAU,QACtD1J,KAAK,MAEXiJ,SAAU,a,wBCxJd,IAAIuG,EAAYxQ,EAAQ,OACpByQ,EAAazQ,EAAQ,OAoBzBO,EAAOC,QAAU,SAAuByK,EAAI9J,EAAIuP,EAASC,GACrDxP,EAAKA,GAAM,CAAC,EAEZ,IAAIyP,EAAqB,QAAZF,GAAmC,WAAZvP,EAAG0C,KACnCgN,EAAuB,WAAZH,GAAsC,QAAZvP,EAAG0C,KAE5C,GAAK+M,GAASC,EAOd,IALA,IAEIwyD,EACAvyD,EAHAwyD,EAASr4D,EAAG9E,YAAYm9D,OACxBt9D,EAAW7E,EAAG2K,IAAIE,OAAO,GAIrBlH,EAAI,EAAGA,EAAIw+D,EAAOv+D,OAAQD,IAI9B,GAFAgM,EAAa,UAAYhM,EAAI,MAD7Bu+D,EAAQC,EAAOx+D,IAGNkB,EAAW,SAAW7E,EAAG2K,IAAK,CACnC,IAAIy3D,EAAaF,EAAMr9D,GACnBw9D,EAAcH,EAAM,OAASr9D,GAC7By9D,EAAS,KACTC,EAAU,KAEd,GAAG9yD,EAAO,CACN6yD,EAAShzD,EAAW8yD,EAAYpiE,EAAG4C,OAKnC,IAAIwX,EAAKioD,EAAct2D,KAAK+D,IAAI,GAAIwyD,GAAU,EAC9CC,EAAU,EAAIx2D,KAAKmjB,IAAI9U,EAAKrO,KAAKqQ,KAAK,EAAIhC,EAAKA,IAAOrO,KAAKojB,IAC/D,MAEIozC,GADAD,EAASv2D,KAAK+D,IAAI,GAAIsyD,KACFr2D,KAAK+D,IAAI,GAAIuyD,EAAc,GAAKt2D,KAAK+D,IAAI,IAAKuyD,EAAc,IAIhFhzD,EAAUizD,GAGHjzD,EAAUkzD,KAAUA,EAAU,OAFrCD,EAAS,KACTC,EAAU,MAGd/yD,EAAQG,EAAa9K,EAAUy9D,GAC/B9yD,EAAQG,EAAa,OAAS9K,EAAU09D,EAC5C,CAER,C,uBCnEA,IAAI3jE,EAAMC,EAAQ,OACdkD,EAAOlD,EAAQ,OACfoF,EAA+BpF,EAAQ,OAEvCsF,EAAatF,EAAQ,OAazB,SAAS2jE,EAAcC,EAASC,EAAUpgE,GACtC,SAASmC,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOg+D,EAASC,EAAUv+D,EAAYO,EAAMC,EAC3D,CAEA,IAAIm9D,EAASr9D,EAAO,UAGpB,IAFcA,EAAO,YAAaq9D,GAErB,OAAOY,EAEpBj+D,EAAO,SACPA,EAAO,WACPA,EAAO,WACPA,EAAO,SACPA,EAAO,SACPA,EAAO,UACPA,EAAO,WAKP,IAHA,IAAIM,EAAS,CAAEC,YAAa1C,GACxBuD,EAAY,CAAC,IAAK,KAEdlC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEvB,IAAIkB,EAAWgB,EAAUlC,GACrBsM,EAAQlO,EAAKmO,UAAUuyD,EAASC,EAAU39D,EAAQF,EAAU,aAAS6L,GAEzE,GAAa,UAAVT,EACUlO,EAAKmI,UAAUnF,EAAQkL,GAC7B0yD,YAAY31D,KAAK01D,EAAStyD,QAGjCrO,EAAK6C,eAAe89D,EAAU39D,EAAQN,EAAQwL,EAAOpL,EAAU,EACnE,CAEA,OAAO69D,CACX,CA7CAtjE,EAAOC,QAAU,SAA8B8H,EAAUC,GAMrDnD,EAA6BkD,EAAUC,EAL5B,CACP3B,KAJG,SAKHC,mBAAoB88D,GAI5B,C,wBCdA,IAAI5xD,EAAK/R,EAAQ,OACbkS,EAAUlS,EAAQ,MAClBkD,EAAOlD,EAAQ,OACf+jE,EAAU/jE,EAAQ,OAClBgnC,EAAkBhnC,EAAQ,OAE9BO,EAAOC,QAAU,SAAcyK,GAC3B,IAIIi7B,EACAphC,EALArB,EAAawH,EAAG9E,YAChB69D,EAAiB,GACjBC,EAAmB,CAAC,EACpBC,EAAiB,GAKrB,IAAIp/D,EAAI,EAAGA,EAAIrB,EAAW6/D,OAAOv+D,OAAQD,IAAK,CAC1C,IAAIq/D,EAAM1gE,EAAW6/D,OAAOx+D,GAE5B,GAAGq/D,EAAIvjE,QACH,GAAiB,UAAdujE,EAAIvwC,OAAkC,UAAbuwC,EAAI99D,MAAiC,UAAb89D,EAAI79D,KAAkB,CACtE4/B,EAAU69B,EAAQK,OAAOD,EAAI99D,MAAQ09D,EAAQK,OAAOD,EAAI79D,MAExD,IAAIy6C,EAAWt9C,EAAWukD,OAAO9hB,GAEjC,IAAI6a,EAAU,CAIVmjB,EAAe/1D,KAAKg2D,GACpB,QACJ,CAEGpjB,EAASsjB,WACRn+B,EAAU6a,EAASsjB,SAASn/D,IAG5B++D,EAAiB/9B,KACjB+9B,EAAiB/9B,GAAW,IAEhC+9B,EAAiB/9B,GAAS/3B,KAAKg2D,EACnC,KAAwB,UAAdA,EAAIvwC,MACVowC,EAAe71D,KAAKg2D,GAEpBD,EAAe/1D,KAAKg2D,EAGhC,CAGA,IAAIzB,EACG,CACCntD,KAAM,CAAE6tD,OAAQ,OAAQlxC,OAAQ,GAChCnZ,OAAQ,CAAEqqD,OAAQ,OAAQlxC,QAAQ,IAClCzc,MAAO,CAAE2tD,OAAQ,OAAQlxC,QAAS,IAJtCwwC,EAMG,CACChtD,IAAK,CAAE0tD,OAAQ,OAAQlxC,OAAQ,GAC/BlZ,OAAQ,CAAEoqD,OAAQ,OAAQlxC,QAAQ,IAClCvc,OAAQ,CAAEytD,OAAQ,OAAQlxC,QAAS,IAM3C,SAASoyC,EAAS/1D,GACd,IAAIg2D,EAAYxyD,EAAGxK,OAAO2N,MAE1B,GAAGA,KAAKsvD,UAAYj2D,EAAE00D,OAMtB,GAFAsB,EAAU1+D,KAAK,QAASmhC,EAAgBy9B,KAErCl2D,EAAE00D,QAAmC,UAAzB10D,EAAE00D,OAAO1nC,MAAM,EAAG,GAC7BgpC,EAAU1+D,KAAK,aAAc0I,EAAE00D,QAC/B/tD,KAAKsvD,QAAUj2D,EAAE00D,WACd,CACH,IAAIyB,EAAe,IAAIC,QAAQ,SAASC,GACpC,IAAIT,EAAM,IAAIU,MA6Bd,SAASC,IACLP,EAAUp/D,SACVy/D,GACJ,CA/BA1vD,KAAKivD,IAAMA,EAGXA,EAAIluC,aAAa,cAAe,aAChCkuC,EAAIY,QAAUD,EACdX,EAAIa,OAAS,WACT,IAAIC,EAAS5mD,SAAS0jB,cAAc,UACpCkjC,EAAOrjE,MAAQsT,KAAKtT,MACpBqjE,EAAOpjE,OAASqT,KAAKrT,OAEXojE,EAAOC,WAAW,KAAM,CAACC,oBAAoB,IACnDC,UAAUlwD,KAAM,EAAG,GAEvB,IAAImwD,EAAUJ,EAAOK,UAAU,aAE/Bf,EAAU1+D,KAAK,aAAcw/D,GAK7BT,GACJ,EAEAL,EAAUn2D,GAAG,QAAS02D,GAEtBX,EAAIoB,IAAMh3D,EAAE00D,OACZ/tD,KAAKsvD,QAAUj2D,EAAE00D,MAMrB,EAAEuC,KAAKtwD,OAEPjK,EAAGmsB,UAAUjpB,KAAKu2D,EACtB,CACJ,CAEA,SAASe,EAAgBl3D,GACrB,IASI3M,EAAOC,EATP0iE,EAAYxyD,EAAGxK,OAAO2N,MAGtB9J,EAAKlI,EAAKmI,UAAUJ,EAAIsD,EAAElI,MAC1BiF,EAAKpI,EAAKmI,UAAUJ,EAAIsD,EAAEjI,MAC1Bo/D,EAAwC,WAA5BxiE,EAAKsI,WAAW+C,EAAElI,MAC9Bs/D,EAAwC,WAA5BziE,EAAKsI,WAAW+C,EAAEjI,MAE9B9C,EAAOC,EAAWC,MAGlB9B,OADMiQ,IAAPzG,EAC8B,kBAAZmD,EAAElI,MAAuBq/D,EACtCt6D,EAAGgI,QAAU7E,EAAE20D,MACfh2D,KAAK6M,IAAI3O,EAAG7G,IAAIgK,EAAE20D,OAAS93D,EAAG7G,IAAI,IAE9BgK,EAAE20D,MAAQ1/D,EAAKc,EAGvBzC,OADMgQ,IAAPvG,EAC+B,kBAAZiD,EAAEjI,MAAuBq/D,EACvCr6D,EAAG8H,QAAU7E,EAAE40D,MACfj2D,KAAK6M,IAAIzO,EAAG/G,IAAIgK,EAAE40D,OAAS73D,EAAG/G,IAAI,IAE7BgK,EAAE40D,MAAQ3/D,EAAKmB,EAI5B,IAMIihE,EAAMzD,EANN7K,EAAU11D,EAAQ8gE,EAAUn0D,EAAElN,SAAS6wB,OACvCqlC,EAAU11D,EAAS6gE,EAAUn0D,EAAEhN,SAAS2wB,OAExCkxC,EAASV,EAAUn0D,EAAElN,SAAS+hE,OAASV,EAAUn0D,EAAEhN,SAAS6hE,OAwBhE,OAnBIwC,OADM/zD,IAAPzG,EAC6B,kBAAZmD,EAAElI,MAAuBq/D,EACrCt6D,EAAGgI,QAAU7E,EAAE1N,EAAIuK,EAAGhH,QACtBgH,EAAGkI,IAAI/E,EAAE1N,GAAKuK,EAAGhH,QAEdmK,EAAE1N,EAAI2C,EAAKc,EAAId,EAAKa,EAE/BuhE,GAAQtO,EAEJ6K,OADMtwD,IAAPvG,EAC6B,kBAAZiD,EAAEjI,MAAuBq/D,EAGrCr6D,EAAG8H,SAAW,EAAI7E,EAAEtN,GAAKqK,EAAGlH,QAC5BkH,EAAGgI,IAAI/E,EAAEtN,GAAKqK,EAAGlH,QAEdZ,EAAKmB,EAAI4J,EAAEtN,EAAIuC,EAAKmB,EAAInB,EAAKkB,EAExCy9D,GAAQ5K,EAGDhpD,EAAE60D,QACL,IAAK,OACDA,GAAU,SACV,MAEJ,IAAK,UACDA,EAAS,OAIjBmB,EAAU1+D,KAAK,CACXhF,EAAG+kE,EACH3kE,EAAGkhE,EACHvgE,MAAOA,EACPC,OAAQA,EACRgkE,oBAAqBzC,EACrBthE,QAASyM,EAAEzM,UAKf,IAEIgkE,GAFM16D,GAAmC,WAA5BlI,EAAKsI,WAAW+C,EAAElI,MAAsB+E,EAAGU,IAAM,KACxDR,GAAmC,WAA5BpI,EAAKsI,WAAW+C,EAAEjI,MAAsBgF,EAAGQ,IAAM,IAGlEoG,EAAQ4I,WACJypD,EACAuB,EAAY,OAASriE,EAAWqQ,KAAOgyD,EAAY,KACnD76D,EAER,CAEA,IAAI86D,EAActiE,EAAWuiE,iBAAiB/gE,UAAU,SACnD2R,KAAKstD,GACN+B,EAAcxiE,EAAWyiE,iBAAiBjhE,UAAU,SACnD2R,KAAKotD,GAEV+B,EAAYlvD,QAAQ3C,OAAO,SAC3B+xD,EAAYpvD,QAAQ3C,OAAO,SAE3B6xD,EAAYjvD,OAAO3R,SACnB8gE,EAAYnvD,OAAO3R,SAEnB4gE,EAAYp5C,MAAK,SAASpe,GACtB+1D,EAASkB,KAAKtwD,KAAdovD,CAAoB/1D,GACpBk3D,EAAgBD,KAAKtwD,KAArBuwD,CAA2Bl3D,EAC/B,IACA03D,EAAYt5C,MAAK,SAASpe,GACtB+1D,EAASkB,KAAKtwD,KAAdovD,CAAoB/1D,GACpBk3D,EAAgBD,KAAKtwD,KAArBuwD,CAA2Bl3D,EAC/B,IAEA,IAAI43D,EAAct9D,OAAOD,KAAKnF,EAAWukD,QACzC,IAAIljD,EAAI,EAAGA,EAAIqhE,EAAYphE,OAAQD,IAAK,CACpCohC,EAAUigC,EAAYrhE,GACtB,IAAIshE,EAAa3iE,EAAWukD,OAAO9hB,GAInC,GAAIkgC,EAAWC,WAAf,CAEA,IAAIC,EAAkBF,EAAWC,WAAWphE,UAAU,SAGjD2R,KAAKqtD,EAAiB/9B,IAAY,IAEvCogC,EAAgBzvD,QAAQ3C,OAAO,SAC/BoyD,EAAgBxvD,OAAO3R,SAEvBmhE,EAAgB35C,MAAK,SAASpe,GAC1B+1D,EAASkB,KAAKtwD,KAAdovD,CAAoB/1D,GACpBk3D,EAAgBD,KAAKtwD,KAArBuwD,CAA2Bl3D,EAC/B,GAbmC,CAcvC,CACJ,C,wBCrPAhO,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,SAENuB,iBAAkBnI,EAAQ,OAC1BgiB,qBAAsBhiB,EAAQ,MAC9BqI,gBAAiBrI,EAAQ,MAARA,CAAoD,UAErEoJ,KAAMpJ,EAAQ,OAEdkiB,cAAeliB,EAAQ,O,wBCV3B,IAAIyJ,EAAYzJ,EAAQ,OACpB0iB,EAAa1iB,EAAQ,OAGzBO,EAAOC,QAAU,CAIbw+B,eAAe,EAEfp+B,QAAS,CACLE,QAAS,UACTgF,MAAM,EACNmE,SAAU,SACVlJ,YAAa,CACT,qDACFC,KAAK,MAGXiB,QAAS,CACLnB,QAAS,QACTmJ,SAAU,SACVlJ,YAAa,CACT,oCACA,uCACFC,KAAK,MAEXkB,YAAa,CACTpB,QAAS,QACTgF,KAAM4c,EAAW3S,YACjB9F,SAAU,SACVlJ,YAAa,sDAEjBqB,YAAa,CACTtB,QAAS,SACTqJ,IAAK,EACLrE,KAAM,EACNmE,SAAU,SACVlJ,YAAa,8DAEjBY,KAAM8H,EAAU,CACZQ,SAAU,SACVlJ,YAAa,iDAEjB21D,eAAgBjtD,EAAU,CACtBQ,SAAU,SACVlJ,YAAa,CACT,4CACA,gEACFC,KAAK,OAEXokB,YAAa,CACTtkB,QAAS,aACTuJ,OAAQ,CAAC,IAAK,KACdvE,KAAM,IACNmE,SAAU,SACVlJ,YAAa,uCAEjBi1D,WAAY,CACRl1D,QAAS,WACTwJ,MAAO,CAAC,WAAY,WACpBC,OAAQ,CAAC,UACTN,SAAU,SACVlJ,YAAa,CACT,gEAEA,iEACA,2BAEA,+DACA,eAEA,kDACA,4CAEA,uEACA,iBACFC,KAAK,MAEX+0D,cAAe,CACXj1D,QAAS,SACTqJ,IAAK,EACLrE,KAAM,GACNmE,SAAU,SACVlJ,YAAa,CACT,oEACFC,KAAK,MAEXulE,WAAY,CACRzlE,QAAS,SACTqJ,IAAK,EACLF,SAAU,SACVlJ,YAAa,CACT,oDACA,mDACA,6CACFC,KAAK,MAEXwlE,eAAgB,CACZ1lE,QAAS,aACTuJ,OAAQ,CAAC,WAAY,UACrBvE,KAAM,SACNmE,SAAU,SACVlJ,YAAa,qCAEjB0lE,WAAY,CACR3lE,QAAS,aACTuJ,OAAQ,CAAC,QAAS,YAClBvE,KAAM,QACNmE,SAAU,SACVlJ,YAAa,CACT,2FACA,qEACFC,KAAK,MAEX0lE,UAAW,CACP5lE,QAAS,SACTqJ,IAAK,GACLrE,KAAM,GACNmE,SAAU,SACVlJ,YAAa,2FAEjB4lE,UAAW,CACP7lE,QAAS,aACTuJ,OAAQ,CAAC,SAAU,gBAAgB,GACnCvE,KAAM,SACNmE,SAAU,SACVlJ,YAAa,CACT,gDACA,oEACA,4EACA,oDACFC,KAAK,MAEX4lE,gBAAiB,CACb9lE,QAAS,aACTuJ,OAAQ,CAAC,SAAU,gBAAgB,GACnCvE,KAAM,eACNmE,SAAU,SACVlJ,YAAa,CACT,uDACA,oEACA,4EACA,2DACFC,KAAK,MAEX6lE,WAAY,CACR/lE,QAAS,aACTuJ,OAAQ,CAAC,aAAc,eACvBvE,KAAM,cACNmE,SAAU,SACVlJ,YAAa,CACT,sDACA,mFACA,+GACFC,KAAK,MAEXH,EAAG,CACCC,QAAS,SACTmJ,SAAU,SACVlJ,YAAa,CACT,wFACA,sEACA,0CACA,uEACA,0CACA,wDACA,kDACFC,KAAK,MAEXqF,KAAM,CACFvF,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CAAC,YAAa,SACtBJ,SAAU,cACVlJ,YAAa,CACT,oCACA,oDACA,0DACFC,KAAK,MAEXK,QAAS,CACLP,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,OAAQ,SAAU,SACnCvE,KAAM,OACNmE,SAAU,SACVlJ,YAAa,CACT,gDACA,6DACA,4BACA,yFACA,2EACA,2DACFC,KAAK,MAEXC,EAAG,CACCH,QAAS,SACTmJ,SAAU,SACVlJ,YAAa,CACT,wFACA,gEACA,4EACA,wFACA,+CACA,uDACA,kDACFC,KAAK,MAEXsF,KAAM,CACFxF,QAAS,aACTgF,KAAM,QACNuE,OAAQ,CAAC,YAAa,SACtBJ,SAAU,cACVlJ,YAAa,CACT,oCACA,qDACA,2DACFC,KAAK,MAEXO,QAAS,CACLT,QAAS,aACTuJ,OAAQ,CAAC,OAAQ,MAAO,SAAU,UAClCJ,SAAU,SACVlJ,YAAa,CACT,6CACA,4DACA,6BACA,yFACA,kFACA,2DACFC,KAAK,MAEX8lE,WAAY,CACRhmE,QAAS,MACTmJ,SAAU,OACVlJ,YAAa,CACT,uEACA,gDACFC,KAAK,MAEXgB,OAAQ,CACJlB,QAAS,aACTuJ,OAAQ,CAAC,MAAO,SAAU,UAC1BvE,KAAM,SACNmE,SAAU,SACVlJ,YAAa,CACT,qFACFC,KAAK,MAEX2mB,MAAO,CACHlmB,KAAM,CACFX,QAAS,SACTgF,KAAM,GACNmE,SAAU,SACVlJ,YAAa,CACT,iCACFC,KAAK,MAEXW,KAAM8H,EAAU,CACZQ,SAAU,SACVlJ,YAAa,CACT,iCACA,gEACFC,KAAK,OAEX4mB,KAAM,CACF9mB,QAAS,aACTuJ,OAAQ,CAAC,MAAO,OAAQ,WAAY,aAAc,aAClDJ,SAAU,SACVlJ,YAAa,CACT,4CACA,oCACA,gDACA,iDACA,iDACA,wDACA,sCACFC,KAAK,MAEXiJ,SAAU,UAEdA,SAAU,S,oBCzRd1J,EAAOC,QAAU,CACbumE,eAAgB,EAChBC,mBAAoB,GACpBC,eAAgB,UAChBC,gBAAiB,EACjBC,oBAAqB,CAACzrB,GAAI,GAAIuB,GAAI,EAAGr7C,MAAO,EAAGC,OAAQ,GAGvDulE,SAAU,EAEVC,QAAS,E,wBCVb,IAAIt/D,EAAW/H,EAAQ,OACnBD,EAAMC,EAAQ,OACd4oB,EAAW5oB,EAAQ,OAEnBsnE,EAAatnE,EAAQ,OACrBsF,EAAatF,EAAQ,OACrBunE,EAA2BvnE,EAAQ,OACnCu+B,EAAUv+B,EAAQ,OAEtB,SAASwnE,EAAcC,EAAUn/D,EAAUC,EAAWsyB,GAClD,IAAI5R,EAAc3gB,EAASm/D,IAAa,CAAC,EACrCv+C,EAAeN,EAASQ,aAAa7gB,EAAWk/D,GAEpD,SAAS7hE,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOqjB,EAAaC,EAAc5jB,EAAYO,EAAMC,EACnE,CAGA,IAAI4hE,EAAW3nE,EAAI8P,WAAWjK,EAAQ,OAAQ2C,EAAU5G,MAKxD,GAJAiE,EAAO,UAAW2C,EAAU4sB,eAC5BvvB,EAAO,eAEOA,EAAO,WACrB,CAwBA,IAtBA,IAAIklB,EACA68C,EAAc,SAAS9hE,EAAMC,GAC7B,IAAIo5C,EAAUp0B,EAAM/W,OAChBorC,EAAWr0B,EACf,OAAO/qB,EAAI6F,OAAOs5C,EAASC,EAAUmoB,EAAYzhE,EAAMC,EAC3D,EAEI8hE,EAAar/D,EAAU5G,MAAQ,CAAC,EAChC+0D,EAAiB32D,EAAI8P,WAAWjK,EAAQ,iBAAkB7F,EAAImE,WAAW,CAAC,EAAG0jE,EAAY,CACzFpkE,KAAM0J,KAAKwL,MAAwB,IAAlBkvD,EAAWpkE,SAG5BqkE,EAAmB,EACnBC,GAAwB,EACxBC,EAAe,SAEfC,GAAoBz/D,EAAU0/D,QAAU,IAAIzc,QAAO,SAASj9C,GAAK,OAAOA,EAAEsnD,UAAY,IAEtFqS,EAAiBrtC,EAAS/rB,OAAOk5D,GAAkBxc,QAAO,SAASj9C,GACnE,OAAOk5D,KAAcl5D,EAAEunD,QAAU,SACrC,IAEQhxD,EAAI,EAAGA,EAAIojE,EAAenjE,OAAQD,IAGtC,IAFAgmB,EAAQo9C,EAAepjE,IAEblE,QAAV,CAEA,IAAIunE,EAAUr9C,EAAMs9C,UAMjBt9C,EAAM+qC,YACL/qC,EAAMu9C,mBACFv9C,EAAMiB,SACNjB,EAAMiB,QAAQzmB,YACdwlB,EAAMiB,QAAQzmB,WAAWuwD,aACoB,IAA7C/qC,EAAMiB,QAAQzmB,WAAWuwD,WAAW/vD,SAGxC+hE,IACG/8C,EAAM+qC,aACLiS,GAAwB,IAGpBK,GAAWpgE,EAASozB,QAAQrQ,EAAO,cACP,IAA5BA,EAAM/W,OAAO8hD,aAEbgS,KAIR9nE,EAAI8P,WAAW83D,EAAa,wBAAyBjR,MAGpDyR,GAAWpgE,EAASozB,QAAQrQ,EAAO,QAAgC,UAAtBviB,EAAU+/D,UACJ,IAAhD,CAAC,UAAW,WAAWx4D,QAAQgb,EAAMtU,SACzCuxD,EAAexpC,EAAQgqC,UAAU,CAACvS,WAAY+R,IAC1C,mBAAqB,iBAGJl2D,IAAtBiZ,EAAM09C,aAAmD,KAAtB19C,EAAM09C,cACxCT,EAAexpC,EAAQkqC,WAAW,CAACzS,WAAY+R,IAC3C,mBAAqB,UAvCF,CA2C/B,IAAIW,EAAa3oE,EAAI6F,OAAO0C,EAAUC,EAClCg/D,EAA0B,aAC1BO,GAA0BD,GAAiC,WAAbJ,EAAwB,EAAI,IAK9E,IAFkB,IAAfiB,IAAsBngE,EAAUk/D,QAAY51D,KAE7B,IAAf62D,GAAyBz/C,EAAY69C,cAExClhE,EAAO,aAAc2C,EAAUu+D,aAEb,IAAf4B,GAAH,CAEA9iE,EAAO,eAEP,IAQI4jB,EAAUC,EAAUC,EAHpBi/C,EAA+B,MALjB/iE,EAAO,eAMrB+jB,EAAoB,UAJb/jB,EAAO,QAKdgkB,EAAoB,UAJbhkB,EAAO,QAMdikB,EAAiB,OA0ErB,GAxEG8+C,GACCn/C,EAAW,EAERzhB,EAASw7C,mBAAmB,cAAe,YAA3Cx7C,CAAwDO,EAASZ,OAC7DiiB,GACCF,EAAW,IACXC,EAAiB,WAEjBD,EAAW,EACXC,EAAiB,OAMlBC,GACCF,GAAY,GACZC,EAAiB,QAEjBD,EAAW,EACXC,EAAiB,YAIzBD,EAAW,EACXC,EAAiB,OACdE,EACCJ,EAAW,MAEXA,EAAW,EACXK,EAAiB,UAIzB9pB,EAAI6F,OAAOqjB,EAAaC,EAAc,CAClCroB,EAAG,CACCC,QAAS,SACTmJ,SAAU,SACVE,IAAKyf,GAAY,EAAI,EACrBxf,IAAKwf,EAAW,EAAI,EACpB9jB,KAAM0jB,IAEX,KAEHzpB,EAAI6F,OAAOqjB,EAAaC,EAAc,CAClCjoB,EAAG,CACCH,QAAS,SACTmJ,SAAU,SACVE,IAAKwf,GAAY,EAAI,EACrBvf,IAAKuf,EAAW,EAAI,EACpB7jB,KAAM2jB,IAEX,KAEH7jB,EAAO,aAAcmiE,GAClBxpC,EAAQgqC,UAAUhgE,EAAUk/D,KAAY7hE,EAAO,iBAElDA,EAAO,cACPA,EAAO,kBACPA,EAAO,cACPA,EAAO,aAEPA,EAAO,aACPA,EAAO,mBACPA,EAAO,cAEPA,EAAO,UAAWikB,GAClBjkB,EAAO,UAAW8jB,GAClB9jB,EAAO,UACP7F,EAAIqG,UAAU6iB,EAAaC,EAAc,CAAC,IAAK,MAE/BtjB,EAAO,cACT,CACVA,EAAO,aAAc+iE,EAAe,OAAS,OAC7C,IAAI1+C,EAAgBlqB,EAAImE,WAAW,CAAC,EAAGwjE,EAAU,CAC7ClkE,KAAMzD,EAAImqB,QAAQw9C,EAASlkE,QAG/BzD,EAAI8P,WAAWjK,EAAQ,aAAcqkB,EACzC,CA9F+B,CAjFZ,CAgLvB,CAEA1pB,EAAOC,QAAU,SAAwB8H,EAAUC,EAAWsyB,GAC1D,IAAI/1B,EAEA8jE,EAAiB/tC,EAASU,QAG1B0sC,EAAS1/D,EAAU0/D,OACvB,GAAGA,EACC,IAAInjE,EAAI,EAAGA,EAAImjE,EAAOljE,OAAQD,IAAK,CAC/B,IAAI2hC,EAAQwhC,EAAOnjE,GACnB,GAAI2hC,EAAMovB,WAAV,CAEA,IAAIgT,EAAY,CACZ90D,OAAQ0yB,EAAM1yB,OACdnT,QAAS6lC,EAAM7lC,QACfi1D,WAAYpvB,EAAMovB,WAClBC,OAAQrvB,EAAMqvB,QAGlB8S,EAAez6D,KAAK06D,EATU,CAUlC,CAGJ,IAAIC,EAAU,CAAC,UACf,IAAIhkE,EAAI,EAAGA,EAAI8jE,EAAe7jE,OAAQD,IAClC/E,EAAIiJ,WAAW8/D,EAASF,EAAe9jE,GAAGgxD,QAI9C,IADAvtD,EAAUwgE,SAAW,GACjBjkE,EAAI,EAAGA,EAAIgkE,EAAQ/jE,OAAQD,IAAK,CAChC,IAAI2iE,EAAWqB,EAAQhkE,GAEvB0iE,EAAcC,EAAUn/D,EAAUC,EAAWqgE,GAGzCrgE,EAAUk/D,IACVl/D,EAAUk/D,GAAU7mE,UAEpB2H,EAAUk/D,GAAU37D,IAAM27D,GAG9Bl/D,EAAUwgE,SAAS56D,KAAKs5D,EAC5B,CACJ,C,wBCpPA,IAAI11D,EAAK/R,EAAQ,OAEbD,EAAMC,EAAQ,OACdgS,EAAQhS,EAAQ,OAChB+H,EAAW/H,EAAQ,OACnB6lC,EAAS7lC,EAAQ,OACjBsS,EAActS,EAAQ,OACtBkS,EAAUlS,EAAQ,MAClBqP,EAAQrP,EAAQ,MAChBoS,EAAepS,EAAQ,OACvBgpE,EAAchpE,EAAQ,OAEtB2hC,EAAY3hC,EAAQ,OACpBwqB,EAAqBxqB,EAAQ,OAC7ByqB,EAAeD,EAAmBC,aAClCC,EAAUF,EAAmBE,QAC7BC,EAAUH,EAAmBG,QAE7Bs+C,EAAgBjpE,EAAQ,OACxBqU,EAAQrU,EAAQ,OAChBu+B,EAAUv+B,EAAQ,OAIlBkpE,EAAiB,iBAsDrB,SAAS12D,EAAQvH,EAAItF,GACjB,IAKI2vD,EAAQ1hC,EALRu1C,EAAYxjE,GAAQ,CAAC,EAErBlC,EAAawH,EAAG9E,YAChBshE,EAAW2B,EAAMD,GAIjBE,EAAUF,EAAU3S,SAQxB,GAPG6S,GACCz1C,EAAQu1C,EAAUv1C,MAClB0hC,EAAS,UAET1hC,EAAQnwB,EAAWuB,WACnBswD,EAASmS,GAET7zC,EAAJ,CAKA,IAAI01C,EACJ,GALAhU,GAAU7xD,EAAWqQ,KAEjB7I,EAAGs+D,uBAAsBt+D,EAAGs+D,qBAAuB,GAGnDF,EAuCG,CACH,IAAIF,EAAUhT,QAAS,OACvBmT,EAAaL,EAAcE,EAAUhT,QAASgT,EAClD,KA1Ca,CAIT,IAHA,IAAIn+C,GAAY/f,EAAG+f,UAAY,IAAIuQ,QAE/B0sC,EAASxkE,EAAWwkE,OAChBnjE,EAAI,EAAGA,EAAImjE,EAAOljE,OAAQD,IAAK,CACnC,IAAI2hC,EAAQwhC,EAAOnjE,GACnB,GAAI2hC,EAAMovB,WAAV,CAEA,IAAI2T,EAAc,CACdpB,UAAU,EACVqB,WAAYhjC,EACZh0B,MAAOg0B,EAAMl1B,OACb3K,KAAM6/B,EAAM7/B,MAAQ6/B,EAAM8tB,MAAM9yD,MAAS,SAAWglC,EAAMl1B,OAC1DukD,OAAQrvB,EAAMqvB,OACd0S,YAAa/hC,EAAM+hC,YACnBkB,iBAAkBjjC,EAAMijC,iBACxBC,WAAYljC,EAAMkjC,WAClBC,YAAanjC,EAAMmjC,YACnB/T,WAAYpvB,EAAMovB,WAClBj1D,QAAS6lC,EAAM7lC,QACfkB,QAAS2kC,EAAM3kC,QACf4iD,KAAqB,SAAfje,EAAM5iC,KAAkB,QAAU,UACxCopB,KAAMwZ,EAAMxZ,KACZ2gB,OAAQ,CACJ3gB,KAAMwZ,EAAMxZ,KACZ1c,MAAOk2B,EAAM0B,UACb3kC,KAAM,GACN6qC,OACmB,SAAf5H,EAAM5iC,KAAkB,SACT,WAAf4iC,EAAM5iC,KAAoB,SAE1B,aAIZmnB,EAAS7c,KAAK,CAAC,CAAE2c,MAAO0+C,IA7BM,CA8BlC,CAEAF,EAAa7lE,EAAWoyD,YAAcoT,EAAcj+C,EAAUm+C,EAAW1lE,EAAWslE,SAAShkE,OAAS,EAC1G,CAKA,IAAI8kE,EAAepmE,EAAWqmE,cAAgB,GAE9C,IAAIT,KAAa5lE,EAAWoyD,aAAeyT,EAAWvkE,QAGlD,OAFA6uB,EAAM3uB,UAAU,IAAMwiE,GAAUtiE,SAChC1B,EAAWsmE,SAASxiE,OAAO,IAAM+tD,GAAQnwD,SAClC6M,EAAMilB,WAAWhsB,EAAIw8D,GAGhC,IAAI3R,EAAS/1D,EAAI6sB,aAAagH,EAAO,IAAK6zC,GAAU,SAAS/vD,GACrD2xD,GAAS3xD,EAAE7R,KAAK,iBAAkB,MAC1C,IAEIsvD,EAAWp1D,EAAIq2C,iBAAiB3yC,EAAWsmE,SAAU,WAAYzU,GAAQ,SAAS59C,GAClFA,EAAExD,OAAO,OACb,IAEI81D,EAAKjqE,EAAI6sB,aAAakpC,EAAQ,OAAQ,MAAM,SAASp+C,GACrDA,EAAE7R,KAAK,kBAAmB,aAC9B,IACAmkE,EAAG56D,KAAKC,EAAMkH,OAAQ4yD,EAAUjnE,aAC3BkN,KAAKC,EAAMmH,KAAM2yD,EAAUlnE,SAC3BoS,MAAM,eAAgB80D,EAAU/mE,YAAc,MAEnD,IAKIouB,EALAy5C,EAAYlqE,EAAI6sB,aAAakpC,EAAQ,IAAK,aAE1CnuC,EAAQwhD,EAAUxhD,MACtBwhD,EAAUe,YAAc,EACxBf,EAAU10C,aAAe,EAEtB9M,EAAMlmB,OACL+uB,EAAUzwB,EAAI6sB,aAAaq9C,EAAW,OAAQxC,EAAW,cACjD5hE,KAAK,cAAe,SACvBuJ,KAAK8C,EAAQvQ,KAAMgmB,EAAMhmB,MACzBF,KAAKkmB,EAAMlmB,MAEhB2V,EAAWoZ,EAASy5C,EAAWh/D,EAAIk+D,EA7J1B,IA+JTc,EAAUhlE,UAAU,IAAMwiE,EAAW,aAAatiE,SAGtD,IAAIglE,EAAYpqE,EAAI6sB,aAAakpC,EAAQ,OAAQ,aAAa,SAASp+C,GACnEA,EAAE7R,KAAK87B,EAAUwlC,qBACf/3D,KAAKC,EAAMmH,KAAMmrB,EAAUslC,eACjC,IAEImD,EAASH,EAAUhlE,UAAU,YAAY2R,KAAK0yD,GAClDc,EAAOvzD,QAAQ3C,OAAO,KAAKrO,KAAK,QAAS,UACzCukE,EAAOtzD,OAAO3R,SAEd,IAAI06C,EAASuqB,EAAOnlE,UAAU,YAAY2R,KAAK7W,EAAI+rC,UACnD+T,EAAOhpC,QAAQ3C,OAAO,KAAKrO,KAAK,QAAS,UACzCg6C,EAAO/oC,OAAO3R,SAEd06C,EAAOxrC,MAAM,WAAW,SAAS9F,GAC7B,IAAIuc,EAAQvc,EAAE,GAAGuc,MACjB,OAAG/iB,EAASozB,QAAQrQ,EAAO,aACsB,IAAtC++C,EAAa/5D,QAAQvB,EAAE,GAAGgmD,OAAgB,GAAM,EAE9B,eAAlBzpC,EAAMlqB,QAA2B,GAAM,CAEtD,IACC+rB,MAAK,WAAa5a,EAAGxK,OAAO2N,MAAM9F,KAAKi7D,EAAWp/D,EAAIk+D,EAAY,IAClE/5D,KAAKiF,EAAOpJ,EAAIk+D,GAChBx8C,MAAK,WAAiB08C,GAASt3D,EAAGxK,OAAO2N,MAAM9F,KAAKk7D,EAAkBr/D,EAAIw8D,EAAW,IAEtF1nE,EAAIqN,YAAY,CACZ4E,EAAMqN,iBACN,WAAa,OA2hBrB,SAAiCpU,EAAIm/D,EAAQvqB,EAAQspB,GACjD,IAAI1lE,EAAawH,EAAG9E,YAChBshE,EAAW2B,EAAMD,GACjBA,IACAA,EAAY1lE,EAAWgkE,IAE3B,IAAI10D,EAAKtP,EAAWC,MAEhB6lB,EAAagV,EAAQhV,WAAW4/C,GAChCZ,EAAYhqC,EAAQgqC,UAAUY,GAC9BoB,EAA0C,aAA7BpB,EAAU3C,eAEvBgE,EAAKrB,EAAU/mE,YACfqoE,EAAM,EAAID,EACVnD,EAAU1lC,EAAU0lC,QACpBqD,EAAUvB,EAAUzC,UAAsB,EAAVW,EAChCsD,EAAS,GAAKH,EAAKnD,GAEnB9lE,EAAUqpE,EAAWzB,GACrB0B,EAAkB1B,EAAUloE,EAAI,GAAsB,IAAhBkoE,EAAUloE,GAAuB,QAAZM,EAC3DupE,EAAkB3B,EAAUloE,EAAI,GAAsB,IAAhBkoE,EAAUloE,GAAuB,WAAZM,EAE3DwpE,EAAgB5B,EAAUpT,cAC1BiV,EAAoB,CAAC,EAIzB7B,EAAU8B,WAAa/9D,KAAK9C,IACvBygE,GAAmBC,EAAmBrnE,EAAW5B,OAAS,EAAIkR,EAAGpO,EAClE,IAGJ,IAAIumE,EAAkB,EACtB/B,EAAUgC,OAAS,EACnBhC,EAAUiC,QAAU,EACpB,IAAIC,EA9DR,SAAsBlC,GAClB,IAAI7kE,EAAI,EACJK,EAAI,EAEJijB,EAAOuhD,EAAUxhD,MAAMC,KACxBA,KAC8B,IAA1BA,EAAK9X,QAAQ,UACZxL,EAAI6kE,EAAUe,cAEU,IAAzBtiD,EAAK9X,QAAQ,SACZnL,EAAIwkE,EAAU10C,eAItB,MAAO,CAACnwB,EAAGK,EACf,CA+CoB2mE,CAAanC,GAE7B,GAAG5/C,EACCs2B,EAAOlzB,MAAK,SAASpe,GACjB,IAAI5J,EAAI4J,EAAE,GAAG1M,OACbqQ,EAAQiJ,aAAajG,KACjBs1D,EAAKa,EAAU,GACfb,EAAKa,EAAU,GAAKlC,EAAUiC,QAAUzmE,EAAI,EAAI0iE,GAEpD8B,EAAUiC,SAAWzmE,EACrBwkE,EAAUgC,OAASj+D,KAAK9C,IAAI++D,EAAUgC,OAAQ58D,EAAE,GAAG3M,MACvD,IAEAspE,EAAkBR,EAAUvB,EAAUgC,OACtChC,EAAUgC,QAAU9D,EAAUqD,EAAUD,EACxCtB,EAAUiC,SAAWT,EAElBpC,IACC6B,EAAOz9C,MAAK,SAASpe,EAAGzJ,GACpBoN,EAAQiJ,aAAajG,KAAM,EAAGpQ,EAAIqkE,EAAUpT,cAChD,IACAoT,EAAUiC,UAAYjC,EAAUoC,eAAiB,GAAKpC,EAAUpT,mBAEjE,CACH,IAAI10D,EAAUmqE,EAAWrC,GACrBsC,EAAmBtC,EAAUtoE,EAAI,GAAsB,IAAhBsoE,EAAUtoE,GAAuB,UAAZQ,EAC5DqqE,EAAoBvC,EAAUtoE,EAAI,GAAsB,IAAhBsoE,EAAUtoE,GAAuB,SAAZQ,EAC7DsqE,EAAoBb,GAAmBD,EACvCe,EAAKnoE,EAAW7B,MAAQ,EAK5BunE,EAAU0C,UAAY3+D,KAAK9C,IACvBqhE,EAAqBE,GAAiC,SAAZtqE,EAAsB0R,EAAG1O,EAAI0O,EAAGzO,EAAIsnE,EAC9EF,EAAsBC,GAAiC,UAAZtqE,EAAuB0R,EAAG2Q,EAAI3Q,EAAGzO,EAAIsnE,EAChF74D,EAAGzO,EACP,EAAIomE,GACJ,IAAIoB,EAAe,EACfC,EAAoB,EACxBlsB,EAAOlzB,MAAK,SAASpe,GACjB,IAAIjK,EAAI0nE,EAAcz9D,EAAG46D,EAAWuB,GACpCoB,EAAe5+D,KAAK9C,IAAI0hE,EAAcxnE,GACtCynE,GAAqBznE,CACzB,IAEA4mE,EAAkB,KAClB,IAAIe,EAAc,EAElB,GAAG1D,EAAW,CACV,IAAI2D,EAAsB,EACtBC,EAAe,EACfC,EAAe,EACnBhC,EAAOz9C,MAAK,WACR,IAAI0/C,EAAkB,EAClBlT,EAAU,EACdpnD,EAAGxK,OAAO2N,MAAMjQ,UAAU,YAAY0nB,MAAK,SAASpe,GAChD,IAAIjK,EAAI0nE,EAAcz9D,EAAG46D,EAAWuB,GAChC/lE,EAAI4J,EAAE,GAAG1M,OAEbqQ,EAAQiJ,aAAajG,KACjBm2D,EAAU,GACVA,EAAU,GAAKb,EAAKnD,EAAU1iE,EAAI,EAAIw0D,GAE1CA,GAAWx0D,EACX0nE,EAAkBn/D,KAAK9C,IAAIiiE,EAAiB/nE,GAC5C0mE,EAAkBz8D,EAAE,GAAGuc,MAAM09C,aAAe6D,CAChD,IAEA,IAAIC,EAAOD,EAAkBhF,EAKzB8E,EAAe,GAGfG,EAAO9B,EAAK2B,EAAehD,EAAU0C,WAErCI,EAAc/+D,KAAK9C,IAAI6hE,EAAaE,GACpCA,EAAe,EACfC,GAAgBF,EAAsBnB,EACtCmB,EAAsB/S,GAEtB+S,EAAsBh/D,KAAK9C,IAAI8hE,EAAqB/S,GAGxDjnD,EAAQiJ,aAAajG,KAAMi3D,EAAcC,GAEzCD,GAAgBG,CACpB,IAEAnD,EAAUgC,OAASj+D,KAAK9C,IAAI6hE,EAAaE,GAAgB3B,EACzDrB,EAAUiC,QAAUgB,EAAeF,EAAsBvB,CAC7D,KAAO,CACH,IAAI4B,EAAU1sB,EAAOr8C,OACjBgpE,EAAgBT,EAAoBtB,GAAO8B,EAAU,GAAKlF,EAAW8B,EAAU0C,UAE/EY,EAAqB,EACrBvT,EAAU,EACVC,EAAU,EACVuT,EAAW,EACf7sB,EAAOlzB,MAAK,SAASpe,GACjB,IAAI5J,EAAI4J,EAAE,GAAG1M,OACTyC,EAAI0nE,EAAcz9D,EAAG46D,EAAWuB,GAChC4B,EAAQE,EAAeloE,EAAIwnE,EAE3BvB,IACA+B,GAAQjF,GAGRiF,EAAO9B,EAAKtR,EAAUmO,GAAY8B,EAAU0C,YAC5CI,EAAc/+D,KAAK9C,IAAI6hE,EAAaS,GACpCxT,EAAU,EACVC,GAAWsT,EACXtD,EAAUiC,SAAWqB,EACrBA,EAAqB,GAGzBv6D,EAAQiJ,aAAajG,KACjBm2D,EAAU,GAAKb,EAAKtR,EACpBmS,EAAU,GAAKb,EAAKrR,EAAUx0D,EAAI,EAAI0iE,GAG1CqF,EAAWxT,EAAU50D,EAAI+iE,EACzBnO,GAAWoT,EACXG,EAAqBv/D,KAAK9C,IAAIqiE,EAAoB9nE,EACtD,IAEG6nE,GACCrD,EAAUgC,OAASjS,EAAUuR,EAC7BtB,EAAUiC,QAAUqB,EAAqB9B,IAEzCxB,EAAUgC,OAASj+D,KAAK9C,IAAI6hE,EAAaS,GAAYjC,EACrDtB,EAAUiC,SAAWqB,EAAqB9B,EAElD,CACJ,CAEAxB,EAAUgC,OAASj+D,KAAKy/D,KACpBz/D,KAAK9C,IACD++D,EAAUgC,OAASE,EAAU,GAC7BlC,EAAUe,YAAc,GAAKM,EAAK7oC,EAAUylC,YAIpD+B,EAAUiC,QAAUl+D,KAAKy/D,KACrBz/D,KAAK9C,IACD++D,EAAUiC,QAAUC,EAAU,GAC9BlC,EAAU10C,aAAe,GAAK+1C,EAAK7oC,EAAU0lC,WAIrD8B,EAAUyD,WAAa1/D,KAAK/C,IAAIg/D,EAAUiC,QAASjC,EAAU8B,YAE7D,IAAIv3D,EAAQzI,EAAG0I,SAASD,MACpBm5D,EAAan5D,EAAMo5D,YAAcp5D,EAAMq5D,eAC3CltB,EAAOlzB,MAAK,SAASpe,GACjB,IAAIy+D,EAAcj7D,EAAGxK,OAAO2N,MAAM3N,OAAO,IAAMkgE,EAAW,UACtD9iE,EAAI4J,EAAE,GAAG1M,OACT2mE,EAAcj6D,EAAE,GAAGuc,MAAM09C,YACzByE,EAAajB,EAAcz9D,EAAG46D,EAAWuB,GAC1CnC,GAA6B,KAAhBC,IACZyE,EAAajC,EAAkBxC,IAEnC,IAAIlkE,EAAIuoE,EAAanC,EAAWQ,GAAmB+B,EAC/C1jD,GAAeghD,IACfjmE,GAAK+iE,EAAU,GAEnBn1D,EAAQgJ,QAAQ8xD,EAAa,GAAIroE,EAAI,EAAGL,EAAGK,EAC/C,GACJ,CAzuB4BuoE,CAAwBjiE,EAAIm/D,EAAQvqB,EAAQspB,EAAY,EAC5E,WACI,IA2MQ5xC,EAAIC,EAAIliB,EAAIg3B,EA3MhBv5B,EAAKtP,EAAWC,MAChB8mE,EAAKrB,EAAU/mE,YACfwnB,EAA8B,UAAnBu/C,EAAU9iE,KACrBsjB,EAA8B,UAAnBw/C,EAAU7iE,KAOzB,GAJGqhB,EAAMlmB,MApKrB,SAA8B+uB,EAAS24C,EAAWqB,GAC9C,GAA6B,eAAzBrB,EAAUxhD,MAAMC,MAAoD,cAAzBuhD,EAAUxhD,MAAMC,KAA/D,CAEA,IACIulD,EADOhE,EAAUxhD,MAAMhmB,KACL6B,KAAOinB,EACzB2iD,EAAc,EACdC,EAAW78C,EAAQva,OAEnBrU,EAAQsQ,EAAQ+C,KAAKo4D,GAAUzrE,MAEP,eAAzBunE,EAAUxhD,MAAMC,KACfwlD,EAAc,IAAOjE,EAAUgC,OAAS,EAAIX,EAAK,EAAI7oC,EAAUylC,SAAWxlE,GAC3C,cAAzBunE,EAAUxhD,MAAMC,OACtBwlD,EAAcjE,EAAUgC,OAAS,EAAIX,EAAK,EAAI7oC,EAAUylC,SAAWxlE,GAGvEwQ,EAAa6I,aAAauV,EACtBg6C,EAAK7oC,EAAUylC,SAAWgG,EAC1B5C,EAAK2C,EAjBmF,CAmBhG,CAiJgBG,CAAqB98C,EAAS24C,EAAWqB,IAGzCnB,EAAS,CACT,IAAIt0C,EAAIC,EAGJD,EADDnL,EACM7W,EAAG1O,EAAI0O,EAAGzO,EAAI6kE,EAAUtoE,EAAI6pB,EAAQ8gD,EAAWrC,IAAcA,EAAUgC,OAEvE1nE,EAAW7B,MAAQunE,EAAUtoE,EAAI6pB,EAAQ8gD,EAAWrC,IAAcA,EAAUgC,OAIjFn2C,EADDrL,EACM5W,EAAGrO,EAAIqO,EAAGpO,GAAK,EAAIwkE,EAAUloE,GAAKypB,EAAQkgD,EAAWzB,IAAcA,EAAUyD,WAE7EnpE,EAAW5B,QAAU,EAAIsnE,EAAUloE,GAAKypB,EAAQkgD,EAAWzB,IAAcA,EAAUyD,WAG5F,IAAIW,EAgtBpB,SAAsBtiE,EAAIw8D,EAAU1yC,EAAIC,GACpC,IAAIvxB,EAAawH,EAAG9E,YAChBgjE,EAAY1lE,EAAWgkE,GACvBpmE,EAAUmqE,EAAWrC,GACrB5nE,EAAUqpE,EAAWzB,GAErBv/C,EAA8B,UAAnBu/C,EAAU9iE,KACrBsjB,EAA8B,UAAnBw/C,EAAU7iE,KAEzB2E,EAAG9E,YAAY4wB,gBAAgB0wC,GAAY,CAAC,EAC5C,IAAI5wC,EAAQsyC,EAAUloE,EAAI,GAAM,IAAM,IAClC61B,EAAQqyC,EAAUtoE,EAAI,GAAM,IAAM,IAClCm2B,EAA0B,CAC1BtT,EAAIjgB,EAAW7B,MAAQmzB,EACvB1wB,EAAG0wB,EAAKo0C,EAAUgC,OAClBvnD,EAAIngB,EAAW5B,OAASmzB,EACxBtwB,EAAGswB,EAAKm0C,EAAUyD,YAGtB,GAAGhjD,GAAYD,EACX,OAAO3X,EAAMilB,WAAWhsB,EAAIw8D,EAAU,CAClC5mE,EAAGsoE,EAAUtoE,EACbI,EAAGkoE,EAAUloE,EACboD,EAAG8kE,EAAUgC,OAAUzgD,EAAQrpB,GAC/BqiB,EAAGylD,EAAUgC,OAAUxgD,EAAQtpB,GAC/BuiB,EAAGulD,EAAUyD,WAAcjiD,EAAQppB,GACnCmD,EAAGykE,EAAUyD,WAAcliD,EAAQnpB,KAEjCqoB,EACN3e,EAAG9E,YAAY4wB,gBAAgB0wC,GAAU5wC,GAASG,EAAwBH,GACpElN,GAGuB,MAA1Bw/C,EAAU/jD,YAFbna,EAAG9E,YAAY4wB,gBAAgB0wC,GAAU3wC,GAASE,EAAwBF,GAKtE7rB,EAAG9E,YAAY4wB,gBAAgB0wC,GAAU5wC,GAASG,EAAwBH,EAGtF,CAvvBgC22C,CAAaviE,EAAIw8D,EAAU1yC,EAAIC,GAK/C,GAAGu4C,EAAW,OAEd,GAAG9pE,EAAW6lB,OAAOmkD,WAAY,CAC7B,IAAIC,EAAM34C,EACN44C,EAAM34C,EAEVD,EAAKnL,EAAW7pB,EAAI0a,UAAUsa,EAAI,EAAGtxB,EAAW7B,MAAQunE,EAAUgC,QAAUuC,EAC5E14C,EAAKrL,EAAW5pB,EAAI0a,UAAUua,EAAI,EAAGvxB,EAAW5B,OAASsnE,EAAUyD,YAAce,EAE9E54C,IAAO24C,GACN3tE,EAAIswB,IAAI,aAAeo3C,EAAW,sCAEnCzyC,IAAO24C,GACN5tE,EAAIswB,IAAI,aAAeo3C,EAAW,qCAE1C,CAIAv1D,EAAQiJ,aAAa26C,EAAQ/gC,EAAIC,EACrC,CAMA,GAHAm1C,EAAU/7D,GAAG,QAAS,MACtB0nD,EAAO1nD,GAAG,QAAS,MAEhBi7D,GAAWF,EAAUiC,SAAWjC,EAAU8B,YAAchgE,EAAG0I,SAASs1B,WAAY,CAE/E,IAAIpnC,EAASsnE,EAAUyD,WAGpBvD,IAASxnE,EAASsnE,EAAUiC,SAE/BpB,EAAGnkE,KAAK,CACJjE,MAAOunE,EAAUgC,OAASX,EAC1B3oE,OAAQA,EAAS2oE,EACjB3pE,EAAG2pE,EAAK,EACRvpE,EAAGupE,EAAK,IAGZt4D,EAAQiJ,aAAa8uD,EAAW,EAAG,GAEnC9U,EAAS5tD,OAAO,QAAQ1B,KAAK,CACzBjE,MAAOunE,EAAUgC,OAAS,EAAIX,EAC9B3oE,OAAQA,EAAS,EAAI2oE,EACrB3pE,EAAG2pE,EACHvpE,EAAGupE,IAGPt4D,EAAQ4I,WAAWmvD,EAAW3U,EAAQrqD,GAEtCiH,EAAQgJ,QAAQivD,EAAW,EAAG,EAAG,EAAG,UAC7BhB,EAAUyE,QACrB,KAAO,CACH,IAgDIC,EAASC,EAASC,EAhDlBC,EAAkB9gE,KAAK9C,IAAIu3B,EAAUqlC,mBACrCmC,EAAUyD,WAAazD,EAAUyD,WAAazD,EAAUiC,SACxD6C,EAAgB9E,EAAUyD,WAC1BoB,EACA,EAAIrsC,EAAUulC,gBACdgH,EAAgB/E,EAAUiC,QAAUjC,EAAUyD,WAC9CuB,EAAcF,EAAgBC,EAE9BE,EAAalhE,KAAK/C,IAAIg/D,EAAUyE,UAAY,EAAGM,GAInDlE,EAAGnkE,KAAK,CACJjE,MAAOunE,EAAUgC,OACb,EAAIX,EACJ7oC,EAAUolC,eACVplC,EAAUulC,gBACdrlE,OAAQsnE,EAAUyD,WAAapC,EAC/B3pE,EAAG2pE,EAAK,EACRvpE,EAAGupE,EAAK,IAGZrV,EAAS5tD,OAAO,QAAQ1B,KAAK,CACzBjE,MAAOunE,EAAUgC,OACb,EAAIX,EACJ7oC,EAAUolC,eACVplC,EAAUulC,gBACdrlE,OAAQsnE,EAAUyD,WAAa,EAAIpC,EACnC3pE,EAAG2pE,EACHvpE,EAAGupE,EAAK4D,IAGZl8D,EAAQ4I,WAAWmvD,EAAW3U,EAAQrqD,GAEtCojE,EAAcD,EAAYJ,EAAiBG,GAG3CrY,EAAO1nD,GAAG,SAAS,WAKfigE,EAJAD,EAAaruE,EAAI0a,UACb0uD,EAAUyE,SACJ77D,EAAG+C,MAAMglC,OAASm0B,EAAiBC,EACzC,EAAGA,GACmBF,EAAiBG,GACzB,IAAfC,GAAoBA,IAAeF,GAClCn8D,EAAG+C,MAAMyvB,gBAEjB,IAIA,IAWI+pC,EAAgBv8D,EAAGw8D,SAASC,OAC/BpgE,GAAG,aAAa,WACb,IAAIoyB,EAAIzuB,EAAG+C,MAAM25D,YAEbZ,EADU,eAAXrtC,EAAE38B,KACS28B,EAAE4B,eAAe,GAAG4B,QAEpBxD,EAAEwD,QAEhB+pC,EAAcK,CAClB,IACChgE,GAAG,QAAQ,WACR,IAAIoyB,EAAIzuB,EAAG+C,MAAM25D,YACA,IAAdjuC,EAAEqD,SAAiBrD,EAAEsD,UAEpBgqC,EADU,cAAXttC,EAAE38B,KACS28B,EAAE4B,eAAe,GAAG4B,QAEpBxD,EAAEwD,QAEhBoqC,EA7BoB,SAASL,EAAaF,EAASC,GACnD,IAAI7sE,GAAM6sE,EAAUD,GAAWM,EAAeJ,EAC9C,OAAOhuE,EAAI0a,UAAUxZ,EAAG,EAAGitE,EAC/B,CA0BiBQ,CAAkBX,EAAaF,EAASC,GACrDO,EAAcD,EAAYJ,EAAiBG,GAC/C,IACAhE,EAAU/6D,KAAKk/D,GAGf,IAAIK,EAAqB58D,EAAGw8D,SAASC,OACpCpgE,GAAG,aAAa,WACb,IAAIoyB,EAAIzuB,EAAG+C,MAAM25D,YACH,eAAXjuC,EAAE38B,OACDgqE,EAAUrtC,EAAE4B,eAAe,GAAG4B,QAC9B+pC,EAAcK,EAEtB,IACChgE,GAAG,QAAQ,WACR,IAAIoyB,EAAIzuB,EAAG+C,MAAM25D,YACH,cAAXjuC,EAAE38B,OACDiqE,EAAUttC,EAAE4B,eAAe,GAAG4B,QAC9BoqC,EA1Cc,SAASL,EAAaF,EAASC,GACjD,IAAI7sE,GAAM4sE,EAAUC,GAAWK,EAAeJ,EAC9C,OAAOhuE,EAAI0a,UAAUxZ,EAAG,EAAGitE,EAC/B,CAuCqBU,CAAgBb,EAAaF,EAASC,GACnDO,EAAcD,EAAYJ,EAAiBG,GAEnD,IACAlE,EAAU76D,KAAKu/D,EACnB,CAEA,SAASN,EAAcD,EAAYJ,EAAiBG,GAChDhF,EAAUyE,SAAW3iE,EAAG9E,YAAYshE,GAAUmG,SAAWQ,EACzDl8D,EAAQiJ,aAAa8uD,EAAW,GAAImE,GAEpCl8D,EAAQgJ,QACJivD,EACAhB,EAAUgC,OACVxpC,EAAUulC,gBAAkBkH,EAAaD,EACzCxsC,EAAUolC,eACViH,GAEJ7Y,EAAS5tD,OAAO,QAAQ1B,KAAK,IAAK2kE,EAAK4D,EAC3C,CAEGnjE,EAAG0I,SAASD,MAAMq5D,iBAGjBjX,EAAO3hD,QAAQ,eAAe,GAE9B7B,EAAYqL,KAAK,CACbC,QAASk4C,EAAO7/C,OAChBhL,GAAIA,EACJ4S,OAAQ,WACJ,IAAIzC,EAAYlJ,EAAQ4L,aAAag4C,GACrCxgD,EAAK8F,EAAUva,EACfyrC,EAAKlxB,EAAUna,CACnB,EACA8c,OAAQ,SAASxC,EAAIC,GACjB,IAAIqzD,EAAOv5D,EAAKiG,EACZuzD,EAAOxiC,EAAK9wB,EAEhBtJ,EAAQiJ,aAAa26C,EAAQ+Y,EAAMC,GACnCv3C,EAAKjlB,EAAYvQ,MAAM8sE,EAAM1F,EAAUgC,OAAQp4D,EAAG1O,EAAG0O,EAAG1O,EAAI0O,EAAGzO,EAAG6kE,EAAU9nE,SAC5Em2B,EAAKllB,EAAYvQ,MAAM+sE,EAAO3F,EAAUiC,SAAUjC,EAAUiC,QAASr4D,EAAGrO,EAAIqO,EAAGpO,EAAGoO,EAAGrO,EAAGykE,EAAU5nE,QACtG,EACA4c,OAAQ,WACJ,QAAUtM,IAAP0lB,QAA2B1lB,IAAP2lB,EAAkB,CACrC,IAAIu3C,EAAM,CAAC,EACXA,EAAItH,EAAW,MAAQlwC,EACvBw3C,EAAItH,EAAW,MAAQjwC,EACvBzvB,EAASqH,KAAK,eAAgBnE,EAAI8jE,EACtC,CACJ,EACA5vD,QAAS,SAAS2jB,EAAWtC,GACzB,IAAIwuC,EAAep7C,EAAM3uB,UAAU,YAAYumD,QAAO,WAClD,IAAIgD,EAAOt5C,KAAKC,wBAChB,OACIqrB,EAAEuD,SAAWyqB,EAAKj5C,MAAQirB,EAAEuD,SAAWyqB,EAAK/4C,OAC5C+qB,EAAEwD,SAAWwqB,EAAK94C,KAAO8qB,EAAEwD,SAAWwqB,EAAK74C,MAEnD,IACGq5D,EAAaxrE,OAAS,GACrByrE,EAAmBhkE,EAAI6qD,EAAQkZ,EAAclsC,EAAWtC,EAEhE,IAGZ,GAAIv1B,EA5WS,CA6WrB,CAEA,SAAS+gE,EAAcz9D,EAAG46D,EAAWuB,GACjC,IAAIwE,EAAa3gE,EAAE,GACf4gE,EAAcD,EAAWttE,MACzB8iD,EAAOykB,EAAU3C,eAEjB4I,EAAmBF,EAAWpkD,MAAM8+C,aAAeT,EAAU5C,WAEjE,MAAY,aAAT7hB,EAA4BykB,EAAU0C,UAAYuD,EAE9C1E,GAAW0E,GAAoBD,EAC1C,CAEA,SAASF,EAAmBhkE,EAAI6qD,EAAQoZ,EAAYpsC,EAAWmD,GAC3D,IAAInb,EAAQokD,EAAWt4D,OAAO,GAAG,GAAGkU,MAChCukD,EAAU,CACVv6D,MAAOmxB,EACPhwB,KAAMi5D,EAAWj5D,OACjBqvC,YAAax6B,EAAMrY,MACnB68D,cAAexkD,EAAMykD,eACrB34D,KAAM3L,EAAG2L,KACT3H,OAAQhE,EAAGgE,OACXugE,OAAQvkE,EAAGwkE,gBAAgBC,QAC3BC,OAAQ1kE,EAAG0I,SACXknB,SAAU5vB,EAAGkC,UACb1J,WAAYwH,EAAG9E,aAGhB2kB,EAAM8kD,SACLP,EAAQl9B,MAAQrnB,EAAM8kD,QAEvB7nE,EAASozB,QAAQrQ,EAAO,cACvBukD,EAAQ9a,MAAQ2a,EAAWrd,QAAQ,GAAG0C,OAE1C,IAAIsb,EAAWhqC,EAAOU,eAAet7B,EAAI,qBAAsBokE,GAC/D,GAAiB,IAAdvsC,EAAiB,CAChB,IAAgB,IAAb+sC,EAAoB,OACvB/Z,EAAOga,cAAgBC,YAAW,WAC1B9kE,EAAG9E,aACP6iE,EAAYkG,EAAYjkE,EAAI63B,EAChC,GAAG73B,EAAG0I,SAASovB,iBACnB,MAAO,GAAiB,IAAdD,EAAiB,CACpBgzB,EAAOga,eAAeE,aAAala,EAAOga,eAC7C7kE,EAAGs+D,qBAAuB,GAIP,IAFD1jC,EAAOU,eAAet7B,EAAI,2BAA4BokE,KAE/B,IAAbQ,GAAoB7G,EAAYkG,EAAYjkE,EAAI63B,EAChF,CACJ,CAEA,SAASunC,EAAU1mD,EAAG1Y,EAAIk+D,GACtB,IAOIviE,EAAMjF,EAPN8lE,EAAW2B,EAAMD,GACjB+F,EAAavrD,EAAE/M,OAAO,GAAG,GACzBkU,EAAQokD,EAAWpkD,MACnBmlD,EAAYloE,EAASozB,QAAQrQ,EAAO,YACpC+hD,GAAc1D,EAAU3S,UAAYvrD,EAAG0I,SAASD,MAAMo5D,aAAemD,EACrEC,EAAgB/G,EAAUgH,eAG3BjB,EAAWkB,YACVxpE,EAAOsoE,EAAWkB,WAAW3uE,KAC7BE,EAAOutE,EAAWkB,WAAWzuE,OAE7BA,EAAOwnE,EAAUxnE,KACbwnE,EAAUhT,QAMVvvD,EAAOsoE,EAAWztE,MALlBmF,EAAOqpE,EAAYf,EAAW3a,MAAQzpC,EAAMlkB,KACzCkkB,EAAM/T,QACLnQ,EAAO7G,EAAIiX,eAAepQ,EAAMkkB,EAAM/T,UAOlD,IAAIs5D,EAAStwE,EAAI6sB,aAAajJ,EAAG,OAAQ8jD,EAAW,QAEpD4I,EAAOxqE,KAAK,cAAe,SACtBuJ,KAAK8C,EAAQvQ,KAAMA,GACnBF,KAAKorE,EAAayD,EAAa1pE,EAAMspE,GAAiBtpE,GAE3D,IAAI8jE,EAAUvB,EAAUzC,UAAgC,EAApB/kC,EAAU0lC,QAC9Cj1D,EAAa6I,aAAao1D,EAAQ3F,EAAS,GAExCmC,EACCwD,EAAOjhE,KAAKgD,EAAa8E,aAAc,CAACjM,GAAIA,EAAIxJ,KAAMmF,IACjDwI,KAAKgI,EAAYuM,EAAG1Y,EAAIk+D,GACxB/6D,GAAG,QAAQ,SAASmiE,GACjBr7D,KAAKzT,KAAK6uE,EAAaC,EAASL,IAC3B9gE,KAAKgI,EAAYuM,EAAG1Y,EAAIk+D,GAE7B,IAAIqH,EAAYtB,EAAWpkD,MAAM2+C,YAAc,CAAC,EAC5C16D,EAAS,CAAC,EAEd,GAAGhH,EAAS0oE,aAAaD,EAAW,WAAY,CAC5C,IAAIE,EAAiB3oE,EAAS4oE,oBAAoBH,EAAW,WACzDj/D,EAASm/D,EAAeA,EAAe3rE,OAAS,GAEhD6rE,EAAQ7wE,EAAI8wE,eAAeL,EAAW,cAAgBj/D,EAAS,WAAY,SAAU,cAEzFq/D,EAAME,IAAI5B,EAAWpkD,MAAM8kD,OAAQW,GAEnCxhE,EAAS6hE,EAAMG,iBACnB,MACIhiE,EAAOnI,KAAO2pE,EAGlB,OAAGC,EAAUpI,SACFrgE,EAASqH,KAAK,eAAgBnE,EAAI,UAAY6f,EAAMrY,MAAQ,SAAU1D,EAAOnI,MAE7EmB,EAASqH,KAAK,cAAenE,EAAI8D,EAAQ+b,EAAMrY,MAE9D,IAEJ2E,EAAWi5D,EAAQ1sD,EAAG1Y,EAAIk+D,EAElC,CASA,SAASmH,EAAa1jC,EAAKokC,GACvB,IAAIC,EAAe/jE,KAAK9C,IAAI,EAAG4mE,GAC/B,GAAGpkC,GAAOA,EAAI9pB,OAAO/d,QAAUksE,EAAe,EAAG,OAAOrkC,EAExD,IAAI,IAAI9nC,EAAImsE,GADZrkC,EAAMA,GAAO,IACkB7nC,OAAQD,EAAI,EAAGA,IAAK8nC,GAAO,IAC1D,OAAOA,CACX,CAEA,SAAS09B,EAAiB3mD,EAAG1Y,EAAIw8D,GAC7B,IACI/kC,EADAK,EAAmB93B,EAAG0I,SAASovB,iBAE/BD,EAAY,EAEZkqC,EAAcjtE,EAAI6sB,aAAajJ,EAAG,OAAQ8jD,EAAW,UAAU,SAAS/vD,GACpEzM,EAAG0I,SAASs1B,YACZvxB,EAAErD,MAAM,SAAU,WAAWxO,KAAK,iBAAkB,OAExD6R,EAAEtI,KAAKC,EAAMmH,KAAM,gBACvB,IAEGvL,EAAG0I,SAASs1B,aAEf+jC,EAAY5+D,GAAG,aAAa,YACxBs0B,GAAoB,IAAIuB,MAAQC,WACVj5B,EAAGs+D,qBAAuBxmC,EAE5CD,GAAa,GAGbA,EAAY,EACZ73B,EAAGs+D,qBAAuB7mC,EAElC,IACAsqC,EAAY5+D,GAAG,WAAW,WACtB,IAAGnD,EAAG04B,WAAY14B,EAAGimE,SAArB,CACA,IAAIpb,EAAS7qD,EAAG9E,YAAYshE,IAExB,IAAIxjC,MAAQC,UAAYj5B,EAAGs+D,qBAAuBxmC,IAClDD,EAAY51B,KAAK9C,IAAI04B,EAAY,EAAG,IAGxCmsC,EAAmBhkE,EAAI6qD,EAAQnyC,EAAGmf,EAAW/wB,EAAG+C,MAPX,CAQzC,IACJ,CAEA,SAASsC,EAAWM,EAAGiM,EAAG1Y,EAAIk+D,EAAWgI,GAClChI,EAAU3S,UAAU9+C,EAAE7R,KAAK,cAAc,GAC5CuM,EAAauF,gBAAgBD,EAAGzM,GAAI,YAKxC,SAA+B0Y,EAAG1Y,EAAIk+D,EAAWgI,GAC7C,IAAIjC,EAAavrD,EAAE/M,OAAO,GAAG,GAC7B,IAAIuyD,EAAU3S,UAAY0Y,IAAeA,EAAWpkD,MAAM+qC,WAEtD,YADAlyC,EAAExe,SAIN,IAAI8S,EAAe0L,EAAEpc,OAAO,wBACxB6pE,EAAcn5D,EAAahC,OAE3BwxD,EAAW2B,EAAMD,GACjBA,IACAA,EAAYl+D,EAAG9E,YAAYshE,IAE/B,IACI9lE,EADA6oE,EAAKrB,EAAU/mE,YAGfT,EAxnBS,IAunBVwvE,EACQhI,EAAUxhD,MAAMhmB,KACjButE,EAAWkB,WACVlB,EAAWkB,WAAWzuE,KAEtBwnE,EAAUxnE,KAErB,IACIE,EAAQD,EADRurE,EAAaxrE,EAAK6B,KAAOinB,EAG7B,GAAG2mD,EAAa,CACZ,IAAIC,EAAYn/D,EAAQ+C,KAAKm8D,GAE7BvvE,EAASwvE,EAAUxvE,OACnBD,EAAQyvE,EAAUzvE,MAroBT,IAuoBNuvE,EACCj/D,EAAQiJ,aAAalD,EAAcuyD,EAAIA,EAAc,IAAT3oE,GAE5CqQ,EAAQiJ,aAAalD,EAAc,EAAY,IAATpW,EAE9C,KAAO,CACH,IAAIyvE,EAAM,IAAM7J,GA7oBP,IA8oBL0J,EAAwB,QAAU,IAClC,OAEAd,EAAS1sD,EAAEpc,OAAO+pE,GAElBC,EAAYn/D,EAAaugB,UAAU09C,GACnChD,EAAWgD,EAAOp6D,OAOtB,GALApU,EAASsrE,EAAaoE,EACtB3vE,EAAQyrE,EAAWn7D,EAAQ+C,KAAKo4D,GAAUzrE,MAAQ,EAvpBzC,IA2pBNuvE,EAC6B,SAAzBhI,EAAUxhD,MAAMC,OAEfhmB,GAA6B,EAApB+/B,EAAU0lC,SAGvBj1D,EAAa6I,aAAao1D,EACtB7F,EAAK7oC,EAAUylC,SACfoD,EAAK2C,OAEN,CACH,IAAItsE,EAAwB,EAApB8gC,EAAU0lC,QAAc8B,EAAUzC,UACvCwI,EAAWkB,aACVvvE,EAAI8gC,EAAU0lC,QACdzlE,GAASunE,EAAUzC,WAGvBt0D,EAAa6I,aAAao1D,EACtBxvE,GACCssE,IAAeoE,EAAY,GAAK,EAAI,IAE7C,CACJ,CAjrBa,IAmrBVJ,GACChI,EAAUe,YAActoE,EACxBunE,EAAU10C,aAAe5yB,IAEzBqtE,EAAW/B,WAAaA,EACxB+B,EAAWrtE,OAASqL,KAAK9C,IAAIvI,EAAQ,IAAM,EAC3CqtE,EAAWttE,MAAQA,EAE3B,CAxFQ4vE,CAAsB7tD,EAAG1Y,EAAIk+D,EAAWgI,EAC5C,GACJ,CA4WA,SAAS3F,EAAWrC,GAChB,OAAOppE,EAAI0xE,cAActI,GAAa,QAClCppE,EAAI2xE,eAAevI,GAAa,SAChC,MACR,CAEA,SAASyB,EAAWzB,GAChB,OAAOppE,EAAI4xE,eAAexI,GAAa,SACnCppE,EAAI6xE,eAAezI,GAAa,SAChC,KACR,CAEA,SAASC,EAAMD,GACX,OAAOA,EAAUr9D,KAAO,QAC5B,CA39BAvL,EAAOC,QAAU,SAAcyK,EAAItF,GAC/B,GAAGA,EACC6M,EAAQvH,EAAItF,OACT,CACH,IAAIlC,EAAawH,EAAG9E,YAChB0rE,EAAapuE,EAAWslE,SAGXtlE,EAAWuB,WAAWC,UAAU,qBAEtC0nB,MAAK,WACZ,IAAI7M,EAAK/N,EAAGxK,OAAO2N,MAEfo8D,EADUxxD,EAAGja,KAAK,SACJqd,MAAM,KAAK,GAC1BouD,EAAItuD,MAAMkmD,KAAgD,IAA7B2I,EAAW/hE,QAAQwhE,IAC/CxxD,EAAG3a,QAEX,IAGA,IAAI,IAAIL,EAAI,EAAGA,EAAI+sE,EAAW9sE,OAAQD,IAAK,CACvC,IAAI2iE,EAAWoK,EAAW/sE,GAE1B0N,EAAQvH,EADQA,EAAG9E,YAAYshE,GAEnC,CACJ,CACJ,C,wBCpDA,IAAI1/D,EAAW/H,EAAQ,OACnBu+B,EAAUv+B,EAAQ,OAEtBO,EAAOC,QAAU,SAAuBwqB,EAAUrlB,EAAMmsE,GACpD,IAUIhtE,EAAGqC,EAVHkiE,EAAU1jE,EAAK6wD,SACfub,EAAUxzC,EAAQgqC,UAAU5iE,GAC5BylC,EAAW7M,EAAQkqC,WAAW9iE,GAE9BqsE,EAAiB,CAAC,EAClBC,EAAU,GACVC,GAAsB,EACtBC,EAAc,CAAC,EACfC,EAAU,EACVlC,EAAgB,EAGpB,SAASmC,EAAW5K,EAAU6K,EAAapD,GACvC,IAAoB,IAAjBvpE,EAAK/E,WACLkxE,GAAsBrK,IAAa9hE,EAAKmG,KAG3C,GAAmB,KAAhBwmE,GAAuB/zC,EAAQgqC,UAAU5iE,IAMA,IAAlCssE,EAAQniE,QAAQwiE,IACtBL,EAAQ9jE,KAAKmkE,GACbJ,GAAsB,EACtBF,EAAeM,GAAe,CAACpD,IAE/B8C,EAAeM,GAAankE,KAAK+gE,OAXc,CAE/C,IAAIqD,EAAc,MAAQH,EAC1BH,EAAQ9jE,KAAKokE,GACbP,EAAeO,GAAe,CAACrD,GAC/BkD,GACJ,CAOJ,CAGA,IAAIttE,EAAI,EAAGA,EAAIkmB,EAASjmB,OAAQD,IAAK,CACjC,IAAIgnB,EAAKd,EAASlmB,GACdg1D,EAAMhuC,EAAG,GACThB,EAAQgvC,EAAIhvC,MACZ0nD,EAAM1nD,EAAMgrC,OACZ2c,EAAS3nD,EAAM09C,YAEnB,GAAIa,GAAav+C,EAAMlqB,SAAYkqB,EAAM+qC,WAEzC,GAAG9tD,EAASozB,QAAQrQ,EAAO,YAGvB,IAFIqnD,EAAYM,KAASN,EAAYM,GAAU,CAAC,GAE5CtrE,EAAI,EAAGA,EAAI2kB,EAAG/mB,OAAQoC,IAAK,CAC3B,IAAIurE,EAAS5mD,EAAG3kB,GAAGotD,MAEf4d,EAAYM,GAAQC,KACpBL,EAAWG,EAAKC,EAAQ,CACpBle,MAAOme,EACPniE,MAAOub,EAAG3kB,GAAGoJ,MACbzL,EAAGgnB,EAAG3kB,GAAGrC,EACTgmB,MAAOA,EACPiqB,IAAKjpB,EAAG3kB,GAAG4tC,MAGfo9B,EAAYM,GAAQC,IAAU,EAC9BxC,EAAgBhjE,KAAK9C,IAAI8lE,GAAgBwC,GAAU,IAAI3tE,QAE/D,MAEAstE,EAAWG,EAAKC,EAAQ3Y,GACxBoW,EAAgBhjE,KAAK9C,IAAI8lE,GAAgBplD,EAAMlkB,MAAQ,IAAI7B,OAEnE,CAGA,IAAIktE,EAAQltE,OAAQ,MAAO,GAG3B,IAAI4tE,GAAkBT,IAAwBH,EAE1CzI,EAAa,GACjB,IAAIxkE,EAAI,EAAGA,EAAImtE,EAAQltE,OAAQD,IAAK,CAChC,IAAIJ,EAAIstE,EAAeC,EAAQntE,IAC5B6tE,EACCrJ,EAAWn7D,KAAKzJ,EAAE,IAElB4kE,EAAWn7D,KAAKzJ,EAExB,CAGA,IAFGiuE,IAAgBrJ,EAAa,CAACA,IAE7BxkE,EAAI,EAAGA,EAAIwkE,EAAWvkE,OAAQD,IAAK,CAEnC,IAAI8tE,EAAe5uE,IACnB,IAAImD,EAAI,EAAGA,EAAImiE,EAAWxkE,GAAGC,OAAQoC,IAAK,CACtC,IAAI0rE,EAAOvJ,EAAWxkE,GAAGqC,GAAG2jB,MAAM6+C,WAC/BiJ,EAAeC,IAAMD,EAAeC,EAC3C,CAGAvJ,EAAWxkE,GAAG,GAAGguE,cAAgBF,EACjCtJ,EAAWxkE,GAAG,GAAGiuE,cAAgBjuE,CACrC,CAEA,IAOIkuE,EAAW,SAASr2D,EAAGiH,GACvB,OACKjH,EAAEmO,MAAM6+C,WAAa/lD,EAAEkH,MAAM6+C,YAC7BhtD,EAAEs2D,SAAWrvD,EAAEqvD,QAExB,EAKA,IAFA3J,EAAWn+D,SAAQ,SAASwR,EAAG7T,GAAK6T,EAAE,GAAGo2D,cAAgBjqE,CAAG,IAC5DwgE,EAAWv2C,MAhBI,SAASpW,EAAGiH,GACvB,OACKjH,EAAE,GAAGm2D,cAAgBlvD,EAAE,GAAGkvD,eAC1Bn2D,EAAE,GAAGo2D,cAAgBnvD,EAAE,GAAGmvD,aAEnC,IAYIjuE,EAAI,EAAGA,EAAIwkE,EAAWvkE,OAAQD,IAAK,CAEnCwkE,EAAWxkE,GAAGqG,SAAQ,SAASwR,EAAG7T,GAAK6T,EAAEs2D,SAAWnqE,CAAG,IACvDwgE,EAAWxkE,GAAGiuB,KAAKigD,GAEnB,IAAIE,EAAiB5J,EAAWxkE,GAAG,GAAGgmB,MAElCslD,EAAa,KAEjB,IAAIjpE,EAAI,EAAGA,EAAImiE,EAAWxkE,GAAGC,OAAQoC,IAAK,CACtC,IAAIgsE,EAAK7J,EAAWxkE,GAAGqC,GAAG2jB,MAAM4+C,iBAChC,GAAGyJ,GAAMA,EAAG1xE,KAAM,CACd2uE,EAAa+C,EACV9J,IAAS8J,EAAGxxE,KAAOgE,EAAK8wD,iBAC3B,KACJ,CACJ,CAKA,GAFGrrB,GAAUk+B,EAAWxkE,GAAGkpB,UAExBoiD,EAAY,CACX,IAAIgD,GAAa,EACjB,IAAIjsE,EAAI,EAAGA,EAAImiE,EAAWxkE,GAAGC,OAAQoC,IACjC,GAAGY,EAASozB,QAAQmuC,EAAWxkE,GAAGqC,GAAG2jB,MAAO,YAAa,CACrDsoD,GAAa,EACb,KACJ,CAIJ9J,EAAWxkE,GAAGuuE,QAAQ,CAClBvuE,GAAI,EACJsrE,WAAYA,EACZkD,QAASF,EACTtoD,MAAO,CACH+qC,WAAYqd,EAAerd,WAC3B2S,YAAa0K,EAAe1K,YAC5B5nE,QAA6B,eAApB+E,EAAKkhE,YAAqCqM,EAAetyE,UAG9E,CAGA,IAAIuG,EAAI,EAAGA,EAAImiE,EAAWxkE,GAAGC,OAAQoC,IACjCmiE,EAAWxkE,GAAGqC,GAAK,CACfmiE,EAAWxkE,GAAGqC,GAG1B,CAOA,OAJAxB,EAAK4lE,eAAiBjC,EAAWvkE,OAEjCY,EAAKwqE,eAAiBD,EAEf5G,CACX,C,wBC/KA,IAAIvhE,EAAW/H,EAAQ,OACnBD,EAAMC,EAAQ,OACdgJ,EAAajJ,EAAIiJ,WAEjBuqE,GAAiB,EAErBhzE,EAAOC,QAAU,SAAqBmjB,EAAG1Y,EAAI63B,GACzC,IAAIr/B,EAAawH,EAAG9E,YAEpB,IAAG8E,EAAG04B,WAAY14B,EAAGimE,SAArB,CAEA,IAaIxsB,EAbA8uB,EAAY/vE,EAAWqyD,OAAO6Q,UAC9B8M,EAAkBhwE,EAAWqyD,OAAO8Q,gBACpC8M,EAAajwE,EAAWqyD,OAAO+Q,WAcnC,GAZiB,IAAd/jC,GAAiC,WAAd0wC,GAA8C,iBAApBC,GAC5CF,GAAkBtoE,EAAG2L,MAAQ3L,EAAG0I,SAASggE,UAEzC5zE,EAAI6zE,SAAS7zE,EAAIqf,EAAEnU,EAAI,+CAAgD,QACvEsoE,GAAiB,GAEjBA,GAAiB,EAIJ,IAAdzwC,EAAiB4hB,EAAO8uB,EACL,IAAd1wC,IAAiB4hB,EAAO+uB,GAC5B/uB,EAAJ,CAEA,IAAImvB,EAA6B,gBAAfH,EAEd7J,EAAepmE,EAAWqmE,aAC1BrmE,EAAWqmE,aAAavuC,QACxB,GAEA2zC,EAAavrD,EAAE/M,OAAO,GAAG,GAC7B,IAAGs4D,EAAWkB,aAAclB,EAAWoE,QAAvC,CAEA,IAAIz4C,EAAW5vB,EAAGkC,UACd66D,GAAoBvkE,EAAWwkE,QAAU,IAAIzc,QAAO,SAASj9C,GAAK,OAAOA,EAAEsnD,UAAY,IACvFqS,EAAiBrtC,EAAS/rB,OAAOk5D,GAEjC8L,EAAY5E,EAAWpkD,MACxBgpD,EAAU1L,WACT0L,EAAYA,EAAUrK,YAG1B,IAEI3kE,EAAGqC,EAAGypE,EAAO7rD,EAAKnc,EAFlB4/D,EAAcsL,EAAUtL,YAGxBuL,EAAa,CAAC,EACdC,EAAc,GACdC,EAAQ,GACRC,EAAU,GAmBVC,GAAiB1wE,EAAWwkE,QAAU,IAAIxrD,KAAI,SAASlO,GACvD,OAAOA,EAAEwF,MACb,IAEIqgE,GAAgB,EAsDhBC,EAAaP,EAAUhe,OAEvB0a,EAAYsD,EAAUrK,WAG1B,KAFc+G,GAAaA,EAAUpI,WAEtBrgE,EAASozB,QAAQ24C,EAAW,YAAa,CACpD,IAAIQ,EAAYpF,EAAW3a,MACvBggB,EAAiB1K,EAAa/5D,QAAQwkE,GAE1C,GAAY,WAAT5vB,GACwB,IAApB6vB,EAAuB1K,EAAa17D,KAAKmmE,GACvCzK,EAAave,OAAOipB,EAAgB,QACtC,GAAY,iBAAT7vB,EAAyB,CAC/B,IAAI8vB,GAA8B,IAApBD,EACVE,EAAa,GACjB,IAAI3vE,EAAI,EAAGA,EAAImG,EAAG+f,SAASjmB,OAAQD,IAAK,CACpC,IAAI4vE,EAAMzpE,EAAG+f,SAASlmB,GACtB,IAAIqC,EAAI,EAAGA,EAAIutE,EAAI3vE,OAAQoC,IAAK,CAC5B,IACIwtE,EADID,EAAIvtE,GACGotD,MAGZ8f,IAAeK,EAAI,GAAG5pD,MAAMgrC,QACxBwe,IAAcK,KACwB,IAAlC9K,EAAa/5D,QAAQ6kE,KAAgBH,GAAU,GAClDxrE,EAAW6gE,EAAc8K,GACzBF,EAAWtmE,KAAKwmE,GAG5B,CACJ,CAEA,IAAIH,EACA,IAAI,IAAIzgB,EAAI,EAAGA,EAAI0gB,EAAW1vE,OAAQgvD,IAAK,CACvC,IAAI3sD,EAAMyiE,EAAa/5D,QAAQ2kE,EAAW1gB,KAC9B,IAAT3sD,GACCyiE,EAAave,OAAOlkD,EAAK,EAEjC,CAER,CAEAW,EAASqH,KAAK,eAAgBnE,EAAI,eAAgB4+D,EACtD,KAAO,CACH,IAEI+K,EAFAC,EAAiBrM,GAAeA,EAAYzjE,OAC5C+vE,EAAsB,GAE1B,GAAGD,EACC,IAAI/vE,EAAI,EAAGA,EAAIojE,EAAenjE,OAAQD,KAClC8vE,EAAS1M,EAAepjE,IACblE,SACRg0E,EAAOpM,cAAgBA,GACtBsM,EAAoB3mE,KAAKrJ,GAKrC,GAAY,WAAT4/C,EAAmB,CAClB,IAAIqwB,EAEJ,OAAOjB,EAAUlzE,SACb,KAAK,EACDm0E,EAAiB,aACjB,MACJ,KAAK,EACDA,GAAiB,EACjB,MACJ,IAAK,aACDA,GAAiB,EAIzB,GAAGF,EACC,GAAGhB,EACC,IAAI/uE,EAAI,EAAGA,EAAIojE,EAAenjE,OAAQD,IAAK,CACvC,IAAIkwE,EAAO9M,EAAepjE,IACN,IAAjBkwE,EAAKp0E,SAAqBo0E,EAAKxM,cAAgBA,GAC9CyM,GAAcD,EAAMD,EAE5B,MAEAE,GAAcnB,EAAWiB,QAG7BE,GAAcnB,EAAWiB,EAEjC,MAAO,GAAY,iBAATrwB,EAAyB,CAG/B,IAAIwwB,EAAsBC,EAAaC,EAAYC,EAC/CC,GAAa,EACjB,IAAIxwE,EAAI,EAAGA,EAAIojE,EAAenjE,OAAQD,IAIlC,GAFAowE,GADAG,EAAQnN,EAAepjE,MACDgvE,EACtBqB,GAAmC,IAArBE,EAAMxf,YACjBqf,IAAaC,KAEHN,GAAkBQ,EAAM7M,cAAgBA,IAEpC6M,EAAMvf,SAAWue,IAAgC,IAAlBgB,EAAMz0E,UAAqBmH,EAASozB,QAAQk6C,EAAO,uBAAwB,CACvHC,GAAa,EACb,KACJ,CAGJ,IAAIxwE,EAAI,EAAGA,EAAIojE,EAAenjE,OAAQD,IAIlC,IAAqB,KAHrBuwE,EAAQnN,EAAepjE,IAGdlE,SAAqBy0E,EAAMvf,SAAWue,IAE5CtsE,EAASozB,QAAQk6C,EAAO,uBAI3B,OAAOvB,EAAUlzE,SACb,IAAK,aACDq0E,GAAcI,GAAO,GACrB,MACJ,KAAK,EACDD,IAAaE,GAAoB,aACjCJ,EAAYG,IAAUvB,EAEtBqB,GAAoC,IAArBE,EAAMxf,aAAwBwf,EAAM7M,YAEnDyM,GAAcI,MADFH,GAAcL,GAAkBQ,EAAM7M,cAAgBA,KAC/B2M,IAAsBC,GAIzE,CAEA,IAAItwE,EAAI,EAAGA,EAAImvE,EAAMlvE,OAAQD,IAEzB,GADA8rE,EAAQqD,EAAMnvE,GACd,CACA,IAAIiK,EAAS6hE,EAAMG,kBAEfwE,EAAa1sE,OAAOD,KAAKmG,GAC7B,IAAI5H,EAAI,EAAGA,EAAIouE,EAAWxwE,OAAQoC,IAC9B4d,EAAMwwD,EAAWpuE,IACX4sE,EAAWhvD,GAAOgvD,EAAWhvD,IAAQ,IACvCmvD,EAAQpvE,IAAMiK,EAAOgW,EAPV,CAgBvB,IADAnc,EAAOC,OAAOD,KAAKmrE,GACfjvE,EAAI,EAAGA,EAAI8D,EAAK7D,OAAQD,IAExB,IADAigB,EAAMnc,EAAK9D,GACPqC,EAAI,EAAGA,EAAI6sE,EAAYjvE,OAAQoC,IAE3B4sE,EAAWhvD,GAAKywD,eAAeruE,KAC/B4sE,EAAWhvD,GAAK5d,QAAK0K,GAK9BuiE,EACCrsE,EAASqH,KAAK,aAAcnE,EAAI8oE,EAAY,CAAC9L,OAAQkM,GAAgBH,GAErEjsE,EAASqH,KAAK,cAAenE,EAAI8oE,EAAYC,EAErD,CAlQsD,CATtC,CAlBqB,CA8CrC,SAASyB,EAAiBrkD,EAAYksB,GAClC,IAAIo4B,EAAY1B,EAAYlkE,QAAQshB,GAChCukD,EAAa5B,EAAWnzE,QAY5B,OAXI+0E,IACAA,EAAa5B,EAAWnzE,QAAU,KAGE,IAArCozE,EAAYlkE,QAAQshB,KACnB4iD,EAAY7lE,KAAKijB,GACjBskD,EAAY1B,EAAYjvE,OAAS,GAGrC4wE,EAAWD,GAAap4B,EAEjBo4B,CACX,CAaA,SAAST,GAAcnB,EAAW8B,GAC9B,IAAG1G,EAAWkB,YAAeyD,EAA7B,CAEA,IARoCv2B,EAQhCkzB,EAAYsD,EAAUrK,YAAcqK,EACpC3L,EAAUqI,EAAUpI,SACpB31D,EAAQ+9D,EAAU/9D,MAGtB,QAFaZ,IAAVY,IAAqBA,EAAQ+9D,EAAUj/D,QAEvCxJ,EAAS0oE,aAAaD,EAAW,WAAY,CAC5C,IAAII,EAAQqD,EAAMxhE,GAClB,IAAIm+D,EAAO,CACP,IAAIF,EAAiB3oE,EAAS4oE,oBAAoBH,EAAW,WACzDqF,EAAmBnF,EAAeA,EAAe3rE,OAAS,GAC9D6rE,EAAQ7wE,EAAI8wE,eAAeL,EAAW,cAAgBqF,EAAmB,WAAY,SAAU,iBAC/F5B,EAAMxhE,GAASm+D,CACnB,CAEA,IAAIkF,EAAWlF,EAAM12C,IAAI45C,EAAUlE,aAOnB/9D,IAAbikE,IACCA,GAAW,IAGC,IAAbA,GAEClF,EAAME,IAAIgD,EAAUlE,OAAQgG,GAEhC1B,EAAQzhE,GAASgjE,EAAiBhjE,GAA6B,IAAtB+9D,EAAU5vE,QACvD,KAAO,CAIH,IAAIm0E,GAAuC,IAAtBvE,EAAU5vE,SAA4Bg1E,EAExDzN,GA5C6B7qB,EA6CFy3B,EA5ClCZ,EA4C2B1hE,GA5CD7R,QAAU08C,EACpC82B,GAAgB,GA6CRqB,EAAiBhjE,EAAOsiE,EAEhC,CA3CgD,CA4CpD,CAuKJ,C,sBCvSAv0E,EAAQ+nE,UAAY,SAAmBwN,GACnC,OAA+D,KAAvDA,EAAa/f,YAAc,IAAIlmD,QAAQ,UACnD,EAEAtP,EAAQ+oB,WAAa,SAAoBwsD,GACrC,MAAoC,MAA7BA,EAAa3wD,WACxB,EAEA5kB,EAAQioE,WAAa,SAAoBsN,GACrC,OAAgE,KAAxDA,EAAa/f,YAAc,IAAIlmD,QAAQ,WACnD,C,wBCTAvP,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,SAENuB,iBAAkBnI,EAAQ,OAC1BgiB,qBAAsBhiB,EAAQ,OAE9BoJ,KAAMpJ,EAAQ,OACdqU,MAAOrU,EAAQ,O,wBCTnB,IAAI+R,EAAK/R,EAAQ,OAEb+H,EAAW/H,EAAQ,OACnBD,EAAMC,EAAQ,OACdiS,EAAelS,EAAIkS,aACnBC,EAAUlS,EAAQ,MAClBqP,EAAQrP,EAAQ,MAChB+5B,EAAc/5B,EAAAA,OAAAA,YAEdknC,EAAWlnC,EAAQ,OACnBg2E,EAAWh2E,EAAQ,OACnBi2E,EAAgBj2E,EAAAA,OAAAA,WAEhB2hC,EAAY3hC,EAAQ,OAsnBxB,SAASk2E,EAAqBtqD,EAAcuqD,GAExC,OADUA,EAAW,SAAW,eAClBvqD,EAAe,GAAK,WACtC,CAEA,SAASwqD,EAAc7nE,GACnB,IAAIuc,EAAQvc,EAAE,GAAGuc,MACburD,EAAWvrD,EAAMurD,SACjBC,EAAWpvC,EAASqvC,SAASzrD,GAC7B0rD,EAAatvC,EAASua,WAAW32B,GAEjC2rD,EAAW3rD,EAAMlqB,SAAWkqB,EAAMtU,MAAuB,SAAfsU,EAAMtU,KAChDkgE,GAAmB,EACnBC,GAAmB,EAEvB,GAAGN,EAAU,CACT,IAAIO,EAAWP,EAASO,SAER,UAAbA,EACCF,GAAmB,EAEnBJ,EAAwB,SAAbM,GAAoC,YAAbA,GAA0BP,EAASQ,UAGpD,eAAlBR,EAASxyE,KACR4yE,EAAmC,MAAxBJ,EAASS,WACD,SAAbF,GAAoC,YAAbA,IAC7BD,GAAmB,EAE3B,CAEA,MAAO,CACHH,WAAYA,EACZF,SAAUA,EACVG,SAAUA,EACVC,iBAAkBA,EAClBC,iBAAkBA,EAClBI,QAAST,GAAYI,EACrBM,QAASP,GAAYE,EAE7B,CAEA,SAASM,EAAQp+D,EAAG/S,EAAMsE,GACtB,OAAGyO,GAAK9Y,EAAIq+B,oBAAoBvlB,GAAW/S,EACxC+S,EAAIzO,EAAYA,EACZyO,CACX,CA5pBAtY,EAAOC,QAAU,SAAekX,EAAGzM,EAAI6qD,GACnC,IAAIryD,EAAawH,EAAG9E,YAChB2vD,IAAQA,EAASryD,EAAWqyD,QAChC,IAAIohB,EAA2C,aAAtBphB,EAAO2Q,WAC5B0Q,EAAYrhB,EAAO4Q,UACnB0Q,GAAaD,EAAgC,EAApBx1C,EAAU0lC,SAAe,EAClDgQ,EAAkBplE,EAAamlE,EAAW,GAE1CE,EAAiB,SAAStoC,EAAKnkB,EAAMzgB,EAAKmtE,GAC1C,IAAI1+D,EACJ,GAAGm2B,EAAM,EACLn2B,EAAIm2B,MACD,MAAGnkB,GAAQA,EAAKjpB,MAAQ,GAG3B,OAAO,EAFPiX,EAAIgS,EAAKjpB,KAGb,CACA,OAAOs1E,EAAqBK,EAAMrqE,KAAK/C,IAAI0O,EAAGzO,EAClD,EAkSA,SAASotE,EAAajpE,EAAGkpE,EAAOC,GAC5B,IAAI5sD,EAAQvc,EAAE,GAAGuc,MACb8iB,EAAS9iB,EAAM8iB,QAAU,CAAC,EAC1BC,EAAaD,EAAO3gB,MAAQ,CAAC,EAG7B0qD,EAAU/pC,EAAOgqC,aACjB,wEACA,gBAEAC,EAAcH,EACb5sD,EAAMlqB,SAAWkqB,EAAMjnB,OAAS6zE,EADJ3vE,EAASozB,QAAQrQ,EAAO,OAGrDgtD,EAAU/lE,EAAGxK,OAAOkwE,GAAOlwE,OAAO,kBACjCtC,UAAU,cAAgByyE,GAC1B9gE,KAAKihE,EAAY,CAACtpE,GAAK,IAC5BupE,EAAQjhE,QAAQ3C,OAAO,QAAQC,QAAQ,SAAWujE,GAAa,GAC1D7xE,KAAK,IAAK8xE,GACV9xE,KAAK,YAAawxE,GACvBS,EAAQhhE,OAAO3R,SAEf2yE,EAAQnrD,MAAK,SAASpe,GAClB,IAAIsO,EAAI9K,EAAGxK,OAAO2N,MACd6iE,EAAKxpE,EAAE,GACPjK,EAAIgzE,EAAeS,EAAG/oC,IAAKpB,EAAO3gB,KA9UtB,EAFA,GAkVhBpQ,EAAExI,MAAM,eAAgB/P,EAAI,MAE5B,IAAI4nC,EAAM6rC,EAAG7rC,IACb,IAAI4pB,EAAOU,UAAY,OAAQuhB,EAAI,CAG/B,IAAI59C,EAAQJ,EAAY6T,GACpBlc,EAAMyI,EAAMzI,SACL7f,IAAR6f,IAAmBA,GAAOyI,EAAM/vB,IAAM+vB,EAAMhwB,KAAO,GACtD+hC,EAAMh6B,EAAQ69B,cAAcnC,EAAQ,GAA9B17B,CAAkCwf,EAC5C,CACA,IAAI1E,EAAYkf,GAAO6rC,EAAG1oC,IAAMzB,EAAOr9B,MAEnCi3B,EAAgBoG,EAAO1F,QACvBR,EAAeF,GAAiBt1B,EAAQy1B,eAAeH,EAAcf,MAAO,EAAG,IAEnF,GAAGiB,EAAc,CACb,IAAIE,EAAiB11B,EAAQy1B,eAAeH,EAAcvlC,QAAS,EAAG,MAClE4lC,EAAiB31B,EAAQy1B,eAAeH,EAAcb,QAAS,EAAG,MAClEmB,EAAmBN,EAAcZ,UACjCmB,EAAckvC,EAAQzvC,EAAchkC,KAAM,EAAG,IAC7CwkC,EAAkBivC,EAAQzvC,EAAcX,SAAU,GAAK,GACvDoB,EAAY,UAAYnd,EAAMuB,IAClCxP,EAAEzN,KACE8C,EAAQg2B,QAAS,SAAUj9B,EAAIg9B,EAC/BP,EAAcK,EAAaC,EAC3BkE,EAAK1E,EAAcd,SACnBkB,EAAgBC,EAAgBC,EAExC,MACIjrB,EAAEzN,KAAKC,EAAMmH,KAAMwW,GAGpB1oB,GAAG+K,EAAMkH,OAAOsG,EAAGk7D,EAAG5oC,KAAOtB,EAAWt9B,MAC/C,GACJ,CAsGA,SAASynE,EAAazpE,EAAGkpE,EAAOC,GAC5B,IAAIK,EAAKxpE,EAAE,GACPuc,EAAQitD,EAAGjtD,MAEX+sD,EAAcH,EACb5sD,EAAMlqB,SAAWkqB,EAAMjnB,OAAS6zE,EADJ3vE,EAASozB,QAAQrQ,EAAO4sD,GAGrD3iC,EAAMhjC,EAAGxK,OAAOkwE,GAAOlwE,OAAO,kBAC7BtC,UAAU,cAAgByyE,GAC1B9gE,KAAKihE,EAAY,CAACtpE,GAAK,IAM5B,GALAwmC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,SAAWujE,GAAa,GACtD7xE,KAAK,IAAK,iBACVA,KAAK,YAAawxE,GACvBtiC,EAAIj+B,OAAO3R,SAER4vC,EAAIvxC,OAAQ,CACX,IAAIqnB,EAAOC,EAAM8iB,QAAU,CAAC,EACxBzE,EAAKmuC,EAAerB,EAAcprD,EAAKoC,KAAKrrB,MAAOm2E,EAAGhjC,KAAMlqB,EAAKoC,KA1erD,EAFA,GA8eZgrD,EAAM,UACNC,EAAOn4E,EAAIo4E,UAAUrtD,EAAO,CAAC8iB,OAAQ,CAAC3gB,KAAM,CAACrrB,MAAOunC,KAAO8uC,GAC3DG,EAAQr4E,EAAIo4E,UAAUJ,EAAI,CAACjtD,MAAOotD,GAAOD,GAE7CjC,EAASjhC,EAAKqjC,EAAOF,EAAMjtE,EAC/B,CACJ,CA5dAyM,EAAEiV,MAAK,SAASpe,GACZ,IAAI8pE,EAAatmE,EAAGxK,OAAO2N,MAEvBojE,EAASv4E,EAAI6sB,aAAayrD,EAAY,IAAK,UAC/CC,EAAOjkE,MAAM,UAAW9F,EAAE,GAAGuc,MAAMhpB,SAEnC,IAAIE,EAAS8zD,EAAO9zD,OAChBmrE,EAAa5+D,EAAE,GAAG4+D,WAClBtrE,EAAS0M,EAAE,GAAG1M,OAElB,GAAc,WAAXG,GAAwBmrE,GAAetrE,EAEnC,CACH,IACI02E,EADS,CAAC7iE,IAAK,EAAGC,QAAS,GAAG3T,IACJ,IAAOmrE,EAAatrE,EAAS,IAC3Dy2E,EAAOzyE,KAAK,YAAaoM,EAAa,EAAGsmE,GAC7C,MALID,EAAOzyE,KAAK,YAAa,MAOlByyE,EACNrzE,UAAU,gBACN2R,KAAK,CAACrI,IACVsI,QAAQ3C,OAAO,KACfC,QAAQ,cAAc,GAEhBmkE,EACNrzE,UAAU,iBACN2R,KAAK,CAACrI,IACVsI,QAAQ3C,OAAO,KACfC,QAAQ,eAAe,GAE5B,IAAIk6B,EAASiqC,EACRrzE,UAAU,mBACN2R,KAAK,CAACrI,IACf8/B,EAAOx3B,QAAQ3C,OAAO,KACjBC,QAAQ,iBAAiB,GAE9Bk6B,EAAOppC,UAAU,kBACZ2R,KAAK,CAACrI,IACRsI,QAAQ3C,OAAO,KACbC,QAAQ,gBAAgB,EACjC,IACCwY,MAqbD,SAAsBpe,GAClB,IAEIiqE,EAFA1tD,EAAQvc,EAAE,GAAGuc,MAGb2tD,EAAU,GACd,GAAG3tD,EAAMlqB,QACL,OAAOkqB,EAAMjnB,MACT,IAAK,cACL,IAAK,UACD40E,EAAU,CACN,CAAC,qBAELD,GAAc,EACd,MACJ,IAAK,aACL,IAAK,mBACDC,EAAU,CACN,CAAC,mBAELD,GAAc,EACd,MACJ,IAAK,gBACDC,EAAU,CACN,CAAC,4CAELD,EAAc,SACd,MACJ,IAAK,OACDC,EAAU,CACN,CAAC,iCACD,CAAC,kCACD,CAAC,iCAELD,GAAc,EACd,MACJ,IAAK,aACDC,EAAU,CACN,CAAC,6CACD,CAAC,gDACD,CAAC,gDAELD,GAAc,EACd,MACJ,IAAK,UACDC,EAAU,CACN,CAAC,+CACD,CAAC,8CAELD,GAAc,EACd,MACJ,IAAK,SACDC,EAAU,CACN,CAAC,kBACD,CAAC,gBACD,CAAC,kBAELD,GAAc,EACd,MACJ,IAAK,SACDC,EAAU,CACN,CAAC,kBACD,CAAC,gBACD,CAAC,kBAELD,GAAc,EACd,MACJ,IAAK,aACDC,EAAU,CACN,CAAC,kBACD,CAAC,gBACD,CAAC,mCAELD,GAAc,EAK1B,IAAIzjC,EAAMhjC,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAC5BtC,UAAU,2BACV2R,KAAK6hE,GACV1jC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,sBAAsB,GACpDtO,KAAK,YAAawxE,GAClBhjE,MAAM,oBAAqB,GAChC0gC,EAAIj+B,OAAO3R,SAEX4vC,EAAIpoB,MAAK,SAAS+rD,EAAI5zE,GAClB,IAcIkoB,EAdAwgB,EAAKz7B,EAAGxK,OAAO2N,MAEfilB,EAAQJ,EAAYjP,GACpBe,EAAasO,EAAMtO,WACnBD,EAAeuO,EAAMvO,aAWzB,GAAIC,GAIA,IAAI2sD,EAAa,CACb,IAAIhzD,EAAMqG,EAAW9mB,OACrBioB,EACU,IAANloB,EAAU+mB,EAAWD,EAAepG,EAAM,EAAI,GAAG,GAC3C,IAAN1gB,EAAU+mB,EAAWD,EAAe,EAAIpG,EAAM,GAAG,GAC7CqG,EAAW3e,KAAKkjB,OAAO5K,EAAM,GAAK,IAAI,EAClD,MAVY,CACZ,IAAIjV,EAAQua,EAAM6tD,aAAe7tD,EAAM8tD,WAAa9tD,EAAMva,MAC1Dyc,EAAYjtB,EAAIq+B,oBAAoB7tB,GAAUA,EAAMzL,IAAMyL,EAAM,GAAMA,CAC1E,CAUAi9B,EAAG3nC,KAAK,IAAK6yE,EAAG,IACb1rD,EACCwgB,EAAGp+B,KAAKC,EAAMmH,KAAMwW,GAEpBwgB,EAAGp+B,MA3BY,SAASsI,GACxB,GAAGA,EAAElU,OAAQ,CACT,IAAIgoC,EAAa,cAAgB1gB,EAAMuB,IACvCna,EAAQ+gB,SAASvb,EAAGzM,EAAIugC,EACpB0qC,EAAqBtqD,EAA8B,WAAhB4sD,GACnC3sD,EAAY,OACpB,CACJ,GAsBJ,GACJ,IA7iBCc,MAoMD,SAAyBpe,GACrB,IAAIuc,EAAQvc,EAAE,GAAGuc,MACb+tD,EAA6B,cAAf/tD,EAAMjnB,KAExB,GAAG0K,EAAE,GAAGgoD,WAAasiB,EAAa,CAC9B,IAAIhuD,EAAOtc,EAAE,GAAGuc,MAAMvc,EAAE,GAAG+nD,KAAK1oB,OAIhC,OAHAr/B,EAAE,GAAG8gC,GAAKxkB,EAAKta,MACfhC,EAAE,GAAGygC,IAAMnkB,EAAKoC,KAAKrrB,MACrB2M,EAAE,GAAG4gC,IAAMtkB,EAAKoC,KAAK1c,MACdinE,EAAajpE,EAAG2G,KAAM,YACjC,CAEA,IAAIujE,EAAU,GACX3tD,EAAMlqB,SAAWi4E,IAChBJ,EAAUlqE,EAAE,GAAGuqE,UACX,CAAC,CAAC,aAAc,eAAgB,CAAC,SAAU,oBAAqB,CAAC,aAAc,eAC/E,CAAC,CAAC,aAAc,eAAgB,CAAC,aAAc,iBAGvD,IAAI/jC,EAAMhjC,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAC5BtC,UAAU,wBACV2R,KAAK6hE,GACV1jC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,mBAAmB,GACjDtO,KAAK,YAAawxE,GAClBhjE,MAAM,oBAAqB,GAChC0gC,EAAIj+B,OAAO3R,SAEX4vC,EAAIpoB,MAAK,SAAS+rD,GACd,IAAIlrC,EAAKz7B,EAAGxK,OAAO2N,MACf2V,EAAOC,EAAM4tD,EAAG,IAAI9qC,OACpBzE,EAAKmuC,OAAezlE,EAAWgZ,EAAKoC,KAlSxB,EAFA,GAsShBugB,EAAG3nC,KAAK,IAAK6yE,EAAG,IACXrkE,MAAM,eAAgB80B,EAAK,MAC3B/5B,KAAKC,EAAMmH,KAAMqU,EAAKta,OAExB44B,GACCqE,EAAGp+B,KAAKC,EAAMkH,OAAQsU,EAAKoC,KAAK1c,MAExC,GACJ,IA3OCoc,MAiPD,SAAsBpe,GAClBipE,EAAajpE,EAAG2G,KAAM,SAC1B,IAlPCyX,MA4OD,SAAmBpe,GACfipE,EAAajpE,EAAG2G,KACpB,IA7OCyX,MAkTD,SAAoBpe,GAChB,IAAIuc,EAAQvc,EAAE,GAAGuc,MAEbiqB,EAAMhjC,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAC5BtC,UAAU,kBACV2R,KAAKkU,EAAMlqB,SAAWmH,EAASozB,QAAQrQ,EAAO,cAAgB,CAACvc,GAAK,IACzEwmC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,aAAa,GAE3CtO,KAAK,IAAK,iBACVA,KAAK,YAAawxE,GACvBtiC,EAAIj+B,OAAO3R,SAEX4vC,EAAIpoB,MAAK,WACL,IAAI9P,EAAI9K,EAAGxK,OAAO2N,MAElB,GAAwB,QAApB4V,EAAMiuD,WAAwC,QAAjBjuD,EAAM0b,QACA,IAAnCn3B,EAAMvN,QAAQgpB,EAAMqd,YAAgE,IAA5C94B,EAAMvN,SAASgpB,EAAMmC,MAAQ,CAAC,GAAG1c,OAWtE,CACH,IAAIjM,EAAIgzE,OAAezlE,EAAWiZ,EAAMmC,KAjZ5B,EAFA,GAqZZpQ,EAAExI,MAAM,eAAgB/P,EAAI,MACvB8K,KAAKC,EAAMmH,KAAMsU,EAAMqd,WAEzB7jC,GAAG+K,EAAMkH,OAAOsG,EAAGiO,EAAMmC,KAAK1c,MACrC,KAjBE,CACE,IAAI2nE,EAAOn4E,EAAIo4E,UAAUrtD,EAAO,CAC5B8iB,OAAQ,CACJpqC,KAAM0zE,EA7YR,GA6Y+Cn3E,EAAI0a,UAAUqQ,EAAM8iB,OAAOpqC,KAAM,EAAG,IACjFw1E,QAAS,EACTC,QAAS,EACTC,SAAU,cAGlBnkC,EAAI3lC,KAAK8C,EAAQq7B,WAAY2qC,EAAMjtE,EACvC,CAQJ,GACJ,IArVC0hB,MAiZD,SAA0Bpe,GACtBypE,EAAazpE,EAAG2G,KAAM,aAC1B,IAlZCyX,MA4YD,SAAmBpe,GACfypE,EAAazpE,EAAG2G,KAAM,MAC1B,IA7YCyX,MAKD,SAAoBpe,GAChB,IAUI4qE,EAAMjB,EAVNkB,EAAahD,EAAc7nE,GAC3BkoE,EAAW2C,EAAW3C,SACtBH,EAAW8C,EAAW9C,SACtBI,EAAmB0C,EAAW1C,iBAC9BC,EAAmByC,EAAWzC,iBAC9BK,EAAUoC,EAAWpC,QACrBD,EAAUqC,EAAWrC,QAErBgB,EAAKxpE,EAAE,GACPuc,EAAQitD,EAAGjtD,MAGXqP,EAAQJ,EAAYjP,GACpBe,EAAasO,EAAMtO,WACnBD,EAAeuO,EAAMvO,aA4BrBytD,EAAanyC,EAASua,WAAW32B,KAAWksD,EAAW,OAGvDD,EAAU,QAAU,QAEpBuC,EAAQvnE,EAAGxK,OAAO2N,MAElBsB,EAAO8iE,EAAM/xE,OAAO,eAAetC,UAAU,QAC5C2R,KAAK6/D,GAAYE,EAAmB,CAACpoE,GAAK,IAM/C,GALAiI,EAAKK,QAAQ3C,OAAO,QAAQC,QAAQ,WAAW,GAC/CqC,EAAKM,OAAO3R,SACZqR,EAAK3Q,KAAK,IAAKwzE,EAAY,IAAMlC,EAAY,OAASA,EAAY,KAC7D/nE,MAtCW,SAASsI,GACrB,GAAGA,EAAElU,OACD,GAAGizE,EACCvkE,EAAQy3B,eAAejyB,EAAGzM,OACvB,CACH,IAAIugC,EAAa,cAAgB1gB,EAAMuB,IACvCna,EAAQ+gB,SAASvb,EAAGzM,EAAIugC,EACpB0qC,EAAqBtqD,GACrBC,EAAY,OACpB,CAER,IA6BGyqD,GAAYI,EAAkB,CAC7B,IAAIvtC,EAAKmuC,OAAezlE,EAAWiZ,EAAMmC,KAtIhC,GAFA,GAyITirD,EAAOn4E,EAAIo4E,UAAUrtD,EAAO,CAACmC,KAAM,CAACrrB,MAAOunC,KAC3CgwC,EAAO,CAACp5E,EAAIo4E,UAAUJ,EAAI,CAACjtD,MAAOotD,IACtC,CAEA,IAAIjrD,EAAOqsD,EAAM/xE,OAAO,gBAAgBtC,UAAU,QAC7C2R,KAAK0/D,GAAYI,EAAmB,CAACyC,GAAQ,IAClDlsD,EAAKpW,QAAQ3C,OAAO,QAAQC,QAAQ,WAAW,GAC/C8Y,EAAKnW,OAAO3R,SAQZ8nB,EAAKpnB,KAAK,IAAKwzE,GAAa3C,EAAmB,IAAMS,EAAY,UAAY,IAAMA,IAC9E/nE,KAAKknE,EAAWpkE,EAAQmhB,eA7CV,SAAS3b,GACxB,GAAGA,EAAElU,OAAQ,CACT,IAAIgoC,EAAa,cAAgB1gB,EAAMuB,IACvCna,EAAQmhB,eAAe3b,GACvBxF,EAAQ+gB,SAASvb,EAAGzM,EAAIugC,EACpB0qC,EAAqBtqD,GACrBC,EAAY,SACpB,CACJ,EAsCJ,IAhFCc,MAkFD,SAAqBpe,GACjB,IASI4qE,EAAMjB,EATNkB,EAAahD,EAAc7nE,GAC3ByoE,EAAUoC,EAAWpC,QACrBD,EAAUqC,EAAWrC,QACrBT,EAAW8C,EAAW9C,SACtBE,EAAa4C,EAAW5C,WAExBuB,EAAKxpE,EAAE,GACPuc,EAAQitD,EAAGjtD,MACXyuD,GAAY/C,IAAeO,IAAYC,GAAW9vC,EAASsyC,QAAQ1uD,GAMvE,SAAS2uD,EAASC,EAAQC,EAAcC,EAAQrC,GAC5C,IAAIsC,EAAQ95E,EAAIk6B,eAAenP,EAAO4uD,GAAQx/C,MAC1C4/C,EAAc/5E,EAAIq+B,oBAAoBy7C,IAAUF,EAChDA,EAAaE,GACbA,EAMJ,GAJG3C,GAAsB4C,QAAsBjoE,IAAR0lE,IACnCuC,EAAavC,GAGdqC,EAAQ,CACP,GAAGE,EAAaF,EAAO,GAAI,OAAOA,EAAO,GACpC,GAAGE,EAAaF,EAAO,GAAI,OAAOA,EAAO,EAClD,CACA,OAAOE,CACX,CAEA,SAASC,EAAU38B,GACf,OAAG26B,EAAGxhB,WAAawhB,EAAGtlE,OAAS2qC,EAAM26B,EAAGtlE,OAAe2qC,EAAM26B,EAAGtlE,OACzD2qC,EAAM,EACjB,CAGA,GAAGo5B,GAAc+C,GAAYjD,EAAU,CACnC,IAAI0D,EAAQ,CAAC,EACTC,EAAQ,CAAC,EAEb,GAAGzD,EAAY,CACXwD,EAAM3qC,GAAKoqC,EAAS,eAAgBM,GACpCC,EAAM5rC,GAAKqrC,EAAS,gBAAiBM,GACrCC,EAAMjsC,GAAK0rC,EAAS,iBAAkB15E,EAAIs3D,KAAM,CAAC,GAAK,IACtD2iB,EAAM7qC,IAAMsqC,EAAS,oBAAqBM,GAC1CC,EAAMhrC,IAAMyqC,EAAS,oBAAqB15E,EAAIs3D,KAAM,CAAC,EAAG,GA1M5C,GA2MZ4iB,EAAMrsC,OAAS,CACXorC,QAAS,EACTC,QAAS,EACTC,SAAU,YAGd,IAAIjrC,EAAKwrC,EAAS,cAAe15E,EAAIs3D,KAAM,CAAC,EAAG,IAnNzC,IAoNN2iB,EAAM/rC,GAAKA,EACXgsC,EAAMrsC,OAAOpqC,KAAOyqC,CACxB,CAEGqoC,IACC2D,EAAMhtD,KAAO,CACTrrB,MAAO63E,EAAS,aAAcM,EAAW,CAAC,EAAG,IAzN5C,KA6NNR,IACCS,EAAM3mC,GAAK,KACX2mC,EAAM/mC,GAAKwmC,EAAS,eAAgBM,GACpCC,EAAM1nC,GAAK,GACX0nC,EAAMz2D,GAAKk2D,EAAS,iBAAkBM,GACtCC,EAAM7mC,GAAKsmC,EAAS,kBAAmBM,IAG3CZ,EAAO,CAACp5E,EAAIo4E,UAAUJ,EAAIiC,KAC1B9B,EAAOn4E,EAAIo4E,UAAUrtD,EAAOmvD,IAGvBhqC,eAAiB,KAGtBioC,EAAK1lC,aAAe,IACxB,CAEA,IAAI0nC,EAAUnoE,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAEjCwtC,EAAMmlC,EAAQj1E,UAAU,mBACvB2R,KAAK4/D,EAAa2C,EAAO,IAE9BpkC,EAAIl+B,QAAQiB,OAAO,OAAQ,gBACtB3D,QAAQ,cAAc,GACtBtO,KAAK,YAAawxE,GACvBtiC,EAAIj+B,OAAO3R,SACX4vC,EAAI3lC,KAAK8C,EAAQq7B,WAAY2qC,EAAMjtE,GAIhCurE,IAAY2C,EAAK,GAAGjrC,IAAM,GAE7B,IAAIisC,EAAMD,EAAQj1E,UAAU,eACvB2R,KAAK2iE,EAAWJ,EAAO,IAC5BgB,EAAItjE,QACC3C,OAAO,KAAKC,QAAQ,aAAa,GAC7BD,OAAO,QAAQrO,KAAK,YAAawxE,GAC1C8C,EAAIrjE,OAAO3R,SACXg1E,EAAIl1E,UAAU,QAAQmK,KAAK8C,EAAQqgC,eAAgB2lC,EAAMjtE,EAC7D,IA1LC0hB,MAmVD,SAAsBpe,GAClB,IAAIuc,EAAQvc,EAAE,GAAGuc,MAEbiqB,EAAMhjC,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAC5BtC,UAAU,qBACV2R,KAAKkU,EAAMlqB,SAA0B,gBAAfkqB,EAAMjnB,KAAyB,CAAC0K,EAAGA,GAAK,IACnEwmC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,gBAAgB,GAC9CtO,KAAK,KAAK,SAASuZ,EAAGta,GACnB,OAAGA,EAAU,uBACN,oBACX,IACCe,KAAK,YAAawxE,GAClBhjE,MAAM,oBAAqB,GAChC0gC,EAAIj+B,OAAO3R,SAEX4vC,EAAIpoB,MAAK,SAASvN,EAAGta,GACjB,IAAI+X,EAAI9K,EAAGxK,OAAO2N,MACd2V,EAAOC,EAAMhmB,EAAI,aAAe,cAChCR,EAAIgzE,OAAezlE,EAAWgZ,EAAKoC,KA7avB,EAFA,GAibhBpQ,EAAExI,MAAM,eAAgB/P,EAAI,MACvB8K,KAAKC,EAAMmH,KAAMqU,EAAKsd,WAExB7jC,GAAG+K,EAAMkH,OAAOsG,EAAGgO,EAAKoC,KAAK1c,MACpC,GACJ,IA3WCoc,MA6WD,SAAmBpe,GACf,IAAIuc,EAAQvc,EAAE,GAAGuc,MAEbiqB,EAAMhjC,EAAGxK,OAAO2N,MAAM3N,OAAO,kBAC5BtC,UAAU,mBACV2R,KAAKkU,EAAMlqB,SAA0B,SAAfkqB,EAAMjnB,KAAkB,CAAC0K,EAAGA,GAAK,IAC5DwmC,EAAIl+B,QAAQ3C,OAAO,QAAQC,QAAQ,cAAc,GAC5CtO,KAAK,KAAK,SAASuZ,EAAGta,GACnB,OAAGA,EAAU,mBACN,eACX,IACCe,KAAK,YAAawxE,GAClBhjE,MAAM,oBAAqB,GAChC0gC,EAAIj+B,OAAO3R,SAEX4vC,EAAIpoB,MAAK,SAASvN,EAAGta,GACjB,IAAI+X,EAAI9K,EAAGxK,OAAO2N,MACd2V,EAAOC,EAAMhmB,EAAI,aAAe,cAChCR,EAAIgzE,OAAezlE,EAAWgZ,EAAKoC,KAxcvB,EAFA,GA4chBpQ,EAAExI,MAAM,OAAQ,QACXjF,KAAK8C,EAAQq3B,SAAU1e,EAAKoC,KAAK5B,KAAM/mB,GAEzCA,GAAG+K,EAAMkH,OAAOsG,EAAGgO,EAAKoC,KAAK1c,MACpC,GACJ,GA+JJ,C,wBCjoBA,IAAIoxB,EAAY3hC,EAAQ,OAExBO,EAAOC,QAAU,CACbyJ,SAAU,UAEVmb,YAAa,CACTtkB,QAAS,aACTuJ,OAAQ,CAAC,IAAK,KACdvE,KAAM,IACNmE,SAAU,UACVlJ,YAAa,wCAEjBkB,QAAS,CACLnB,QAAS,QACTmJ,SAAU,UACVlJ,YAAa,6CAEjBwP,MAAO,CACHzP,QAAS,QACTmJ,SAAU,UACVlJ,YAAa,+CAEjBq5E,YAAa,CACTt5E,QAAS,QACTmJ,SAAU,UACVlJ,YAAa,oEAEjB+lE,WAAY,CACRhmE,QAAS,MACTmJ,SAAU,OACVlJ,YAAa,CACT,sEACA,kEACA,oEACFC,KAAK,MAEXq5E,IAAK,CACDv5E,QAAS,SACTy4B,SAAS,EACTzzB,KAAM,GACNmE,SAAU,UACVlJ,YAAa,CACT,sDACA,gEACA,mDACA,kDACA,qBAAuB4gC,EAAU24C,YAAYt5E,KAAK,QAAU,MAC9DA,KAAK,MAEXmE,OAAQ,CACJrE,QAAS,SACTy4B,SAAS,EACTzzB,KAAM,GACNmE,SAAU,UACVlJ,YAAa,CACT,yDACA,qDACA,qBAAuB4gC,EAAU44C,YAAYv5E,KAAK,QAAU,MAC9DA,KAAK,M,wBC1Df,IAAI+G,EAAW/H,EAAQ,OACnBgS,EAAQhS,EAAQ,OAChB+jE,EAAU/jE,EAAQ,OAClBw6E,EAAQx6E,EAAQ,MAChBy6E,EAAmBz6E,EAAAA,OAAAA,iBACnBD,EAAMC,EAAQ,OACdof,EAAIrf,EAAIqf,EAERs7D,EAAiBn6E,EAAOC,QAAU,CAAC,EA8OvC,SAASm6E,EAAgB1vE,EAAI2vE,GACzB,IAQIz5E,EAAI2D,EARJ4gC,EAASk1C,EAAGC,cACZ90B,EAAOrgB,EAAOxP,aAAa,aAC3BtT,EAAM8iB,EAAOxP,aAAa,cAAe,EACzCzyB,EAAawH,EAAG9E,YAChB20E,EAAO,CAAC,EACRC,EAAShX,EAAQiX,KAAK/vE,EAAI,MAAM,GAChCgwE,EAAmBx3E,EAAWy3E,wBAIlC,GAAY,SAATn1B,EAAiB,CAChB,IAGI9/C,EAHAk1E,EAAe,OAARv4D,EAAgB,GAAM,EAC7Bw4D,GAAM,EAAID,GAAO,EACjBn/B,GAAM,EAAIm/B,GAAO,EAGrB,IAAIr2E,EAAI,EAAGA,EAAIi2E,EAAOh2E,OAAQD,IAG1B,KAFA3D,EAAK45E,EAAOj2E,IAELu2E,WAEH,GADAp1E,EAAS9E,EAAGmW,MACD,SAARsL,EACCk4D,EAAK70E,EAAS,eAAgB,OAC3B,GAAW,UAAR2c,OACmB/Q,IAAtB1Q,EAAGm6E,qBAAsDzpE,IAAtB1Q,EAAGo6E,eACrCT,EAAK70E,EAAS,eAAgB,OACF4L,IAAtB1Q,EAAGm6E,gBACTR,EAAK70E,EAAS,cAAgB9E,EAAGq6E,kBACjCV,EAAK70E,EAAS,UAAY,CAAC,KAAM9E,EAAGo6E,sBACR1pE,IAAtB1Q,EAAGo6E,gBACTT,EAAK70E,EAAS,UAAY,CAAC9E,EAAGm6E,eAAgB,MAC9CR,EAAK70E,EAAS,cAAgB9E,EAAGq6E,mBAEjCV,EAAK70E,EAAS,UAAY,CAAC9E,EAAGm6E,eAAgBn6E,EAAGo6E,qBAIzB1pE,IAAzB1Q,EAAGs6E,oBACFX,EAAK70E,EAAS,eAAiB9E,EAAGs6E,kBACV,OAArBR,GAA8B95E,EAAGs6E,oBAChCR,EAAmB,YAGxB,CACH,IAAIS,EAAW,CACXv6E,EAAGwG,IAAIxG,EAAG4C,MAAM,IAChB5C,EAAGwG,IAAIxG,EAAG4C,MAAM,KAGhB43E,EAAW,CACXP,EAAKM,EAAS,GAAK1/B,EAAK0/B,EAAS,GACjCN,EAAKM,EAAS,GAAK1/B,EAAK0/B,EAAS,IAGrCZ,EAAK70E,EAAS,aAAe9E,EAAGqN,IAAImtE,EAAS,IAC7Cb,EAAK70E,EAAS,aAAe9E,EAAGqN,IAAImtE,EAAS,GACjD,CAGZ,KAEgB,cAAT51B,GAAiC,MAARnjC,GAAuB,MAARA,IACvCA,EAAMnf,EAAWm4E,SAAW,IAAM,IAClCl2C,EAAOzP,aAAa,WAAYrT,IAGpCk4D,EAAK/0B,GAAQnjC,EAGjBnf,EAAWy3E,wBAA0BD,EAErClzE,EAASqH,KAAK,eAAgBnE,EAAI6vE,EACtC,CAwCA,SAASe,EAAa5wE,EAAI2vE,GAStB,IARA,IAAIl1C,EAASk1C,EAAGC,cACZh1E,EAAO6/B,EAAOxP,aAAa,aAC3BtT,EAAM8iB,EAAOxP,aAAa,cAAe,EACzC4lD,EAAW7wE,EAAG9E,YAAY+C,UAAUR,MAAQ,GAC5CqzE,EAAe,CAAC,EAEhB94D,EAAQpd,EAAKqd,MAAM,KAEfpe,EAAI,EAAGA,EAAIg3E,EAAS/2E,OAAQD,IAChCi3E,EAAaD,EAASh3E,GAAK,IAAMme,EAAM,IAAML,EAIjD,IAAIo5D,EAAiB,QAARp5D,EAAiBA,EAAM,OACpCm5D,EAAa96C,SAAW+6C,EAExBj0E,EAASqH,KAAK,eAAgBnE,EAAI8wE,EACtC,CAoBA,SAASE,EAAehxE,EAAI2vE,GAUxB,IATA,IACI/0E,EADS+0E,EAAGC,cACE3kD,aAAa,aAC3BgmD,EAAyB,kBAATr2E,EAChBs2E,EAAwB,iBAATt2E,EAEfpC,EAAawH,EAAG9E,YAChB21E,EAAWr4E,EAAWyF,UAAUR,MAAQ,GACxCoyE,EAAO,CAAC,EAEJh2E,EAAI,EAAGA,EAAIg3E,EAAS/2E,OAAQD,IAAK,CACrC,IAKIs3E,EALAC,EAAUP,EAASh3E,GACnBw3E,EAASD,EAAU,UACnBE,EAAcF,EAAU,eACxBG,EAAaH,EAAU,cACvBh5E,EAAQI,EAAW44E,GAASrpB,OAG7BkpB,GACCpB,EAAKwB,EAAS,OAASj5E,EAAMo5E,YAAYC,GACzC5B,EAAKwB,EAAS,QAAUj5E,EAAMo5E,YAAYE,IAC1C7B,EAAKwB,EAAS,WAAaj5E,EAAMo5E,YAAY1jE,OAC7CqjE,GAAY,GACND,IACNrB,EAAKwB,EAAS,OAAS,KACvBxB,EAAKwB,EAAS,QAAU,KACxBxB,EAAKwB,EAAS,WAAa,KAC3BF,GAAY,GAGbA,IACCtB,EAAKyB,EAAc,MAAQl5E,EAAMo5E,YAAYF,YAAY17E,EACzDi6E,EAAKyB,EAAc,MAAQl5E,EAAMo5E,YAAYF,YAAYt7E,EACzD65E,EAAKyB,EAAc,MAAQl5E,EAAMo5E,YAAYF,YAAYr7E,EACzD45E,EAAK0B,GAAcn5E,EAAMo5E,YAAYD,WAE7C,CAEAz0E,EAASqH,KAAK,eAAgBnE,EAAI6vE,EACtC,CAcA,SAAS8B,EAAe3xE,EAAI2vE,GACxB,IAAIl1C,EAASk1C,EAAGC,cACZj4D,EAAM8iB,EAAOm3C,aACbp5E,EAAawH,EAAG9E,YAChB21E,EAAWr4E,EAAWyF,UAAUR,MAAQ,GAExCo0E,EAAO,CAAC,QAAS,QAAS,SAG1BC,EAAgB,CAAC,EACjBhB,EAAe,CAAC,EAEpB,GAAGn5D,EACCm5D,EAAen5D,EACf8iB,EAAOm3C,aAAe,SACnB,CACH,IAAI,IAAI/3E,EAAI,EAAGA,EAAIg3E,EAAS/2E,OAAQD,IAAK,CACrC,IAAIu3E,EAAUP,EAASh3E,GACnBY,EAAcjC,EAAW44E,GAEzBW,EAAgBX,EAAU,aAC9BU,EAAcC,GAAiBt3E,EAAYkhD,UAC3Cm1B,EAAaiB,IAAiB,EAG9B,IAAI,IAAI71E,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACvB,IAAI0C,EAAOizE,EAAK31E,GACZ81E,EAAYZ,EAAU,IAAMxyE,EAAO,cACvCkyE,EAAakB,IAAa,EAC1BF,EAAcE,GAAav3E,EAAYmE,GAAM+hD,UACjD,CACJ,CAEAlmB,EAAOm3C,aAAeE,CAC1B,CACA,OAAOhB,CACX,CAiDA,SAASmB,EAAUjyE,EAAI2vE,GAOnB,IANA,IAAIl1C,EAASk1C,EAAGC,cACZh1E,EAAO6/B,EAAOxP,aAAa,aAC3BtT,EAAM8iB,EAAOxP,aAAa,cAAe,EACzCzyB,EAAawH,EAAG9E,YAChBg3E,EAAS15E,EAAWyF,UAAUg7C,KAAO,GAEjCp/C,EAAI,EAAGA,EAAIq4E,EAAOp4E,OAAQD,IAAK,CACnC,IAAII,EAAKi4E,EAAOr4E,GACZs4E,EAAY35E,EAAWyB,GAE3B,GAAY,SAATW,EAAiB,CAChB,IAAIoa,EAAQm9D,EAAUC,WAAWp9D,MAC7Bq9D,EAAoB,OAAR16D,EAAgB,EAAI3C,EAAQ,GAAMA,EAElDlY,EAASqH,KAAK,eAAgBnE,EAAI/F,EAAK,oBAAqBo4E,EAChE,CACJ,CAEY,UAATz3E,GACC03E,EAAUtyE,EAAI,MAEtB,CAyBA,SAASuyE,EAAavyE,GAClB,IAAIxH,EAAawH,EAAG9E,YAEpB,OAAG1C,EAAWmjD,YAEXnjD,EAAWykD,KAAK,aACRzkD,EAAWm4E,SAAW,IAAM,IAEhC,UACX,CAEA,SAAS6B,EAAYxyE,GACjB,IAAIyyE,EAAWF,EAAavyE,GAC5BlD,EAASqH,KAAK,eAAgBnE,EAAI,YAAayyE,EACnD,CAuHA,SAASC,EAAiB1yE,EAAI2vE,GAQ1B,IAPA,IACIh4D,EADSg4D,EAAGC,cACC3kD,aAAa,YAC1BzyB,EAAawH,EAAG9E,YAChBy3E,EAAan6E,EAAWyF,UAAU20E,QAAU,GAE5CC,EAAO,CAAC,EAEJh5E,EAAI,EAAGA,EAAI84E,EAAW74E,OAAQD,IAAK,CACvC,IAAII,EAAK04E,EAAW94E,GAChBi5E,EAAUt6E,EAAWyB,GAAI84E,KACzB1R,EAAgB,OAAR1pD,EANH,KAM4Bm7D,EAAUA,EANtC,KAOTD,EAAK54E,EAAK,SAAWonE,CACzB,CAEAvkE,EAASqH,KAAK,eAAgBnE,EAAI6yE,EACtC,CAEA,SAASP,EAAUtyE,EAAIgzE,GAKnB,IAJA,IAAIx6E,EAAawH,EAAG9E,YAChBy3E,EAAan6E,EAAWyF,UAAU+0E,IAAgB,GAClDH,EAAO,CAAC,EAEJh5E,EAAI,EAAGA,EAAI84E,EAAW74E,OAAQD,IAMlC,IALA,IAAII,EAAK04E,EAAW94E,GAEhB23E,EADah5E,EAAWyB,GAAIwjD,SACH+zB,YACzByB,EAAWr1E,OAAOD,KAAK6zE,GAEnBt1E,EAAI,EAAGA,EAAI+2E,EAASn5E,OAAQoC,IAAK,CACrC,IAAI4d,EAAMm5D,EAAS/2E,GACnB22E,EAAK54E,EAAK,IAAM6f,GAAO03D,EAAY13D,EACvC,CAGJhd,EAASqH,KAAK,eAAgBnE,EAAI6yE,EACtC,CA5sBApD,EAAeyD,QAAU,CACrBv3E,KAAM,UACN+gB,MAAO,SAAS1c,GACZ,IACImzE,GADOnzE,EAAG0I,SAAS0qE,sBAAwB,CAAC,GAC9BD,QAAU,MAC5B,OACIh/D,EAAEnU,EADY,QAAXmzE,EACG,yBACA,gBACd,EACAE,KAAM9D,EAAM8B,OACZ/d,MAAO,SAAStzD,GACZ,IAAIozE,EAAuBpzE,EAAG0I,SAAS0qE,qBACnC14E,EAAO,CAACy4E,OAAQC,EAAqBD,QAAU,OAEnDr+E,EAAI6zE,SAASx0D,EAAEnU,EAAI,iDAAkD,QAElD,QAAhBtF,EAAKy4E,QAAoBr+E,EAAIw+E,SAC5Bx+E,EAAI6zE,SAASx0D,EAAEnU,EAAI,kDAAmD,QACtEtF,EAAKy4E,OAAS,OAGlB,CAAC,WAAY,QAAS,SAAU,SAASjzE,SAAQ,SAAS4Z,GACnDA,KAAOs5D,IACN14E,EAAKof,GAAOs5D,EAAqBt5D,GAEzC,IAEAhd,EAASqH,KAAK,gBAAiBnE,EAAItF,GAChCwxB,MAAK,SAASqnD,GACXz+E,EAAI6zE,SAASx0D,EAAEnU,EAAI,sBAAwB,MAAQuzE,EAAU,OACjE,IACCC,OAAM,WACH1+E,EAAI6zE,SAASx0D,EAAEnU,EAAI,yDAA0D,OACjF,GACN,GAGJyvE,EAAegE,gBAAkB,CAC7B93E,KAAM,kBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,uBAAyB,EAC5DqzE,KAAM9D,EAAMmE,KACZpgB,MAAO,SAAStzD,GACZ+G,EAAM0sE,gBAAgBzzE,EAC1B,GAGJyvE,EAAekE,kBAAoB,CAC/Bh4E,KAAM,oBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,uBAAyB,EAC5DqzE,KAAM9D,EAAMqE,OACZtgB,MAAO,SAAStzD,GACZ+G,EAAM0sE,gBAAgBzzE,EAC1B,GAGJyvE,EAAeoE,OAAS,CACpBl4E,KAAM,SACNm4E,KAAM,OACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,OAAS,EAC5CpF,KAAM,WACN+c,IAAK,OACL07D,KAAM9D,EAAMwE,QACZzgB,MAAOoc,GAGXD,EAAeuE,MAAQ,CACnBr4E,KAAM,QACNm4E,KAAM,MACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,MAAQ,EAC3CpF,KAAM,WACN+c,IAAK,MACL07D,KAAM9D,EAAM0E,IACZ3gB,MAAOoc,GAGXD,EAAeyE,SAAW,CACtBv4E,KAAM,WACNm4E,KAAM,SACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,aAAe,EAClDpF,KAAM,WACN+c,IAAK,SACL07D,KAAM9D,EAAM4E,UACZ7gB,MAAOoc,GAGXD,EAAe2E,QAAU,CACrBz4E,KAAM,UACNm4E,KAAM,QACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,eAAiB,EACpDpF,KAAM,WACN+c,IAAK,QACL07D,KAAM9D,EAAM8E,MACZ/gB,MAAOoc,GAGXD,EAAe6E,eAAiB,CAC5B34E,KAAM,iBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,uBAAyB,EAC5DpF,KAAM,WACN+c,IAAK,iBACL07D,KAAM9D,EAAM+E,eACZhhB,MAAOoc,GAGXD,EAAe8E,aAAe,CAC1B54E,KAAM,eACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,qBAAuB,EAC1DpF,KAAM,WACN+c,IAAK,eACL07D,KAAM9D,EAAMgF,aACZjhB,MAAOoc,GAGXD,EAAe+E,SAAW,CACtB74E,KAAM,WACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,YAAc,EACjDpF,KAAM,WACN+c,IAAK,WACL07D,KAAM9D,EAAMiF,SACZlhB,MAAOoc,GAGXD,EAAegF,SAAW,CACtB94E,KAAM,WACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,iBAAmB,EACtDpF,KAAM,WACN+c,IAAK,WACL07D,KAAM9D,EAAMkF,SACZnhB,MAAOoc,GAGXD,EAAeiF,WAAa,CACxB/4E,KAAM,aACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,cAAgB,EACnDpF,KAAM,WACN+c,IAAK,aACL07D,KAAM9D,EAAMmF,WACZphB,MAAOoc,GAGXD,EAAekF,WAAa,CACxBh5E,KAAM,aACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,qBAAuB,EAC1DqzE,KAAM9D,EAAMoF,WACZrhB,MAAOkc,GAGXC,EAAemF,SAAW,CACtBj5E,KAAM,WACNm4E,KAAM,SACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,UAAY,EAC/CpF,KAAM,OACN+c,IAAK,KACL07D,KAAM9D,EAAMsF,UACZvhB,MAAOoc,GAGXD,EAAeqF,UAAY,CACvBn5E,KAAM,YACNm4E,KAAM,UACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,WAAa,EAChDpF,KAAM,OACN+c,IAAK,MACL07D,KAAM9D,EAAMwF,WACZzhB,MAAOoc,GAGXD,EAAeuF,YAAc,CACzBr5E,KAAM,cACNm4E,KAAM,YACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,YAAc,EACjDpF,KAAM,OACN+c,IAAK,OACL07D,KAAM9D,EAAM0F,UACZ3hB,MAAOoc,GAGXD,EAAeyF,aAAe,CAC1Bv5E,KAAM,eACNm4E,KAAM,aACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,aAAe,EAClDpF,KAAM,OACN+c,IAAK,QACL07D,KAAM9D,EAAM4F,KACZ7hB,MAAOoc,GAGXD,EAAe2F,sBAAwB,CACnCz5E,KAAM,wBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,6BAA+B,EAClEpF,KAAM,YACN+c,IAAK,UACL07D,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAAOoc,GAGXD,EAAe8F,sBAAwB,CACnC55E,KAAM,wBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,wBAA0B,EAC7DpF,KAAM,YACN+c,IAAK,SAAS3X,GACV,OAAOA,EAAG9E,YAAYy1E,SAAW,IAAM,GAC3C,EACA0C,KAAM9D,EAAMiG,gBACZF,QAAS,KACThiB,MAAOoc,GA8EXD,EAAegG,OAAS,CACpB95E,KAAM,SACNm4E,KAAM,OACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,OAAS,EAC5CpF,KAAM,iBACN+c,IAAK,OACL07D,KAAM9D,EAAMwE,QACZzgB,MAAOsd,GAGXnB,EAAeiG,MAAQ,CACnB/5E,KAAM,QACNm4E,KAAM,MACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,MAAQ,EAC3CpF,KAAM,iBACN+c,IAAK,MACL07D,KAAM9D,EAAM0E,IACZ3gB,MAAOsd,GAGXnB,EAAekG,cAAgB,CAC3Bh6E,KAAM,gBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,mBAAqB,EACxDpF,KAAM,iBACN+c,IAAK,QACL07D,KAAM9D,EAAM,aACZjc,MAAOsd,GAGXnB,EAAemG,cAAgB,CAC3Bj6E,KAAM,gBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,qBAAuB,EAC1DpF,KAAM,iBACN+c,IAAK,YACL07D,KAAM9D,EAAM,UACZjc,MAAOsd,GAuBXnB,EAAeoG,qBAAuB,CAClCl6E,KAAM,uBACNm4E,KAAM,qBACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,0BAA4B,EAC/DpF,KAAM,eACNy4E,KAAM9D,EAAM4F,KACZ7hB,MAAO0d,GAGXvB,EAAeqG,sBAAwB,CACnCn6E,KAAM,wBACNm4E,KAAM,sBACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,4BAA8B,EACjEpF,KAAM,gBACNy4E,KAAM9D,EAAMwG,MACZziB,MAAO0d,GA4CXvB,EAAeuG,eAAiB,CAC5Br6E,KAAM,iBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,oCAAsC,EACzEpF,KAAM,YACN+c,IAAK,KACLs+D,QAAQ,EACR5C,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAyCJ,SAAuBtzD,EAAI2vE,GACvB,IAAImB,EAAea,EAAe3xE,EAAI2vE,GACtC7yE,EAASqH,KAAK,eAAgBnE,EAAI8wE,EACtC,GAEArB,EAAeyG,UAAY,CACvBv6E,KAAM,YACNm4E,KAAM,SACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,UAAY,EAC/CpF,KAAM,OACN+c,IAAK,KACL07D,KAAM9D,EAAMsF,UACZvhB,MAAO2e,GAGXxC,EAAe0G,WAAa,CACxBx6E,KAAM,aACNm4E,KAAM,UACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,WAAa,EAChDpF,KAAM,OACN+c,IAAK,MACL07D,KAAM9D,EAAMwF,WACZzhB,MAAO2e,GAGXxC,EAAe2G,SAAW,CACtBz6E,KAAM,WACNm4E,KAAM,QACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,QAAU,EAC7CpF,KAAM,QACN+c,IAAK,KACL07D,KAAM9D,EAAM0F,UACZ3hB,MAAO2e,GAGXxC,EAAe4G,gBAAkB,CAC7B16E,KAAM,kBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,oCAAsC,EACzEpF,KAAM,YACN+c,IAAK,KACLs+D,QAAQ,EACR5C,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAAOkf,GA2BX/C,EAAe6G,iBAAmB,CAC9B36E,KAAM,mBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,oCAAsC,EACzEpF,KAAM,YACN+c,IAAK,KACLs+D,QAAQ,EACR5C,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAAOkf,GAGX/C,EAAe8G,gBAAkB,CAC7B56E,KAAM,kBACNm4E,KAAM,eACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,oCAAsC,EACzEpF,KAAM,YACN+c,IAAK,UACL07D,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAAOkf,GAmBX/C,EAAe+G,gBAAkB,CAC7B76E,KAAM,mBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,aAAe,EAClDqzE,KAAM9D,EAAM4F,KACZ7hB,MAAO,SAAStzD,GAMZ,IALA,IAAI6yE,EAAO,CACP,cAAe,GACf,SAAU,GACV,SAAU,IAENh5E,EAAI,EAAGA,EAAImG,EAAGkC,UAAUpI,OAAQD,IAAK,CACzC,IAAI23E,EAAcxxE,EAAGkC,UAAUrI,GAAG48E,aAClC5D,EAAK,eAAe3vE,KAAKsuE,EAAYxmE,KAAKm0D,OAAO7uC,SACjDuiD,EAAK,UAAU3vE,KAAKsuE,EAAYxmE,KAAKpV,EAAE06B,SACvCuiD,EAAK,UAAU3vE,KAAKsuE,EAAYxmE,KAAKhV,EAAEs6B,QAC3C,CACAxzB,EAASqH,KAAK,UAAWnE,EAAI6yE,EACjC,GAKJpD,EAAe+C,YAAc,CACzB72E,KAAM,cACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,oCAAsC,EACzEpF,KAAM,YACN+c,IAAK,KACLs+D,QAAQ,EACR5C,KAAM9D,EAAM8F,cACZC,QAAS,KACThiB,MAAO,SAAStzD,EAAI2vE,GAChB,IAAImB,EAAea,EAAe3xE,EAAI2vE,GACtCmB,EAAan1B,UAAY42B,EAAavyE,GAEtClD,EAASqH,KAAK,eAAgBnE,EAAI8wE,EACtC,GAGJrB,EAAeiH,WAAa,CACxB/6E,KAAM,aACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,cAAgB,EACnDqzE,KAAM9D,EAAM4F,KACZ7hB,MAAO,SAAStzD,EAAI2vE,GAChB,IAAIl1C,EAASk1C,EAAGC,cAEhBn1C,EAAOzP,aAAa,YAAa,QACjCyP,EAAOzP,aAAa,WAAY,SAChC0kD,EAAgB1vE,EAAI2vE,GAEpBl1C,EAAOzP,aAAa,YAAa,iBACjCgmD,EAAehxE,EAAI2vE,GAEnB2C,EAAUtyE,EAAI,OACdsyE,EAAUtyE,EAAI,SAClB,GAGJyvE,EAAekH,iBAAmB,CAC9Bh7E,KAAM,mBACN+gB,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,qBAAuB,EAC1DqzE,KAAM9D,EAAMqH,UACZh8E,KAAM,0BACN+c,IAAK,KACL27C,MAAO,SAAStzD,GACZ,IAAIxH,EAAawH,EAAG9E,YAChB80E,EAAmBx3E,EAAWy3E,wBAElCz3E,EAAWy3E,wBAA+C,OAArBD,EAA4B,MAAQ,KACzElzE,EAASqH,KAAK,eAAgBnE,EAItC,SAAgCA,GAM5B,IALA,IACI62E,EAAqD,OADxC72E,EAAG9E,YACS+0E,wBACzBH,EAAShX,EAAQiX,KAAK/vE,EAAI,MAAM,GAChC6vE,EAAO,CAAC,EAEJh2E,EAAI,EAAGA,EAAIi2E,EAAOh2E,OAAQD,IAAK,CACnC,IAAI3D,EAAK45E,EAAOj2E,GAChBg2E,EAAK35E,EAAGmW,MAAQ,iBAAiBwqE,GAAqB3gF,EAAGs6E,iBAC7D,CAEA,OAAOX,CACX,CAhB0CiH,CAAuB92E,GAC7D,GAiBJyvE,EAAesH,gBAAkB,CAC7Bp7E,KAAM,kBACNm4E,KAAM,YACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,aAAe,EAClDpF,KAAM,QACNy4E,KAAM9D,EAAM4F,KACZ7hB,MAAO,SAAStzD,GACZsyE,EAAUtyE,EAAI,SAClB,GAGJyvE,EAAeuH,aAAe,CAC1Br7E,KAAM,eACNm4E,KAAM,SACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,UAAY,EAC/CpF,KAAM,OACN+c,IAAK,KACL07D,KAAM9D,EAAMsF,UACZvhB,MAAOof,GAGXjD,EAAewH,cAAgB,CAC3Bt7E,KAAM,gBACNm4E,KAAM,UACNp3D,MAAO,SAAS1c,GAAM,OAAOmU,EAAEnU,EAAI,WAAa,EAChDpF,KAAM,OACN+c,IAAK,MACL07D,KAAM9D,EAAMwF,WACZzhB,MAAOof,E,wBCxsBX,IAAIjD,EAAiB16E,EAAQ,OACzBmiF,EAAat5E,OAAOD,KAAK8xE,GAEzB0H,EAAa,CACb,WACA,eACA,iBACA,aACA,WACA,cAGA9H,EAAc,CACd,cACA,eACA,eACA,cACA,oBACFxrE,OAAOszE,GAEL7H,EAAc,GASlB4H,EAAWh3E,SAAQ,SAASrC,IARL,SAAS8a,GAC5B,IAA8C,IAA3C02D,EAAYxqE,QAAQ8T,EAAEm7D,MAAQn7D,EAAEhd,MAAnC,CAEA,IAAIA,EAAOgd,EAAEhd,KACTm4E,GAAQn7D,EAAEm7D,MAAQn7D,EAAEhd,MAAMy7E,eACI,IAA/B9H,EAAYzqE,QAAQlJ,IAAc2zE,EAAYpsE,KAAKvH,IACpB,IAA/B2zE,EAAYzqE,QAAQivE,IAAcxE,EAAYpsE,KAAK4wE,EALC,CAM3D,CAEIuD,CAAiB5H,EAAe5xE,GACpC,IACAyxE,EAAYxnD,OAEZxyB,EAAOC,QAAU,CACb4hF,WAAYA,EACZ9H,YAAaA,EACbC,YAAaA,E,uBCrCjB,IAAIx6E,EAAMC,EAAQ,OACdqP,EAAQrP,EAAQ,MAChB4oB,EAAW5oB,EAAQ,OACnBsF,EAAatF,EAAQ,OAEzBO,EAAOC,QAAU,SAA8B8H,EAAUC,GACrD,IAAI0gB,EAAc3gB,EAASi6E,SAAW,CAAC,EACnCr5D,EAAeN,EAASQ,aAAa7gB,EAAW,WAEpD,SAAS3C,EAAOC,EAAMC,GAClB,OAAO/F,EAAI6F,OAAOqjB,EAAaC,EAAc5jB,EAAYO,EAAMC,EACnE,CAEAF,EAAO,eACPA,EAAO,UAAWyJ,EAAM0U,WAAWxb,EAAU4sB,cAAe,KAC5D,IAAIiqB,EAAe/vC,EAAMgB,SAAShB,EAAMc,IAAI5H,EAAUg6E,QAAQtgF,UAC9D2D,EAAO,QAASyJ,EAAM0U,WAAWq7B,EAAc,KAC/Cx5C,EAAO,cAAeyJ,EAAM0U,WAAWq7B,EAAc,KACrDx5C,EAAO,aAAc2C,EAAUu+D,YAC/BlhE,EAAO,OACPA,EAAO,SACX,C,wBCrBArF,EAAOC,QAAU,CACbwH,WAAY,YACZpB,KAAM,UAENuB,iBAAkBnI,EAAQ,OAC1BgiB,qBAAsBhiB,EAAQ,MAE9BwiF,OAAQxiF,EAAQ,O,wBCPpB,IAAI+jE,EAAU/jE,EAAQ,OAClByiF,EAAkBziF,EAAQ,OAC1B+H,EAAW/H,EAAQ,OACnB2mD,EAAiB3mD,EAAAA,OAAAA,eAEjB0iF,EAAgB1iF,EAAQ,OACxB06E,EAAiB16E,EAAQ,OACzBoiF,EAAapiF,EAAAA,OAAAA,WACb2iF,EAAa3iF,EAAAA,OAAAA,WAUjBO,EAAOC,QAAU,SAAuByK,GACpC,IAAIxH,EAAawH,EAAG9E,YAChBgyB,EAAUltB,EAAG0I,SACbivE,EAAUn/E,EAAWo/E,SAEzB,GAAI1qD,EAAQ2qD,gBAAmB3qD,EAAQ4qD,UAAvC,CAQA,IAAI/9D,MAAMC,QAAQkT,EAAQ6qD,wBACtB,MAAM,IAAIC,MAAM,CACZ,iDACA,qBACFjiF,KAAK,MAGX,IAAIgkB,MAAMC,QAAQkT,EAAQ+qD,qBACtB,MAAM,IAAID,MAAM,CACZ,8CACA,qBACFjiF,KAAK,MAGX,IACImiF,EADAC,EAAgBjrD,EAAQuiD,eAIxByI,EADDn+D,MAAMC,QAAQm+D,IAAkBA,EAAcr+E,OA2RrD,SAA0Bs+E,GAGtB,IAFA,IAAID,EAAgBT,EAAW,GAAIU,GAE3Bv+E,EAAI,EAAGA,EAAIs+E,EAAcr+E,OAAQD,IAGrC,IAFA,IAAIw+E,EAAcF,EAAct+E,GAExBqC,EAAI,EAAGA,EAAIm8E,EAAYv+E,OAAQoC,IAAK,CACxC,IAAIu+B,EAAS49C,EAAYn8E,GAEzB,GAAqB,kBAAXu+B,EAAqB,CAC3B,QAA8B7zB,IAA3B6oE,EAAeh1C,GAGd,MAAM,IAAIu9C,MAAM,CACZ,yCACA,uBACFjiF,KAAK,MALPoiF,EAAct+E,GAAGqC,GAAKuzE,EAAeh1C,EAO7C,CACJ,CAGJ,OAAO09C,CACX,CAjTuBG,CAAiBH,IACzBjrD,EAAQ2qD,gBAAkB3qD,EAAQ4qD,UAC1B,GAUvB,SAAyB93E,GACrB,IAAIxH,EAAawH,EAAG9E,YAChB00B,EAAW5vB,EAAGkC,UACdgrB,EAAUltB,EAAG0I,SAEjB,SAASqP,EAAMpc,EAAMozC,GACjB,GAAgB,kBAANA,GACN,GAAGA,EAAEqoC,gBAAkBz7E,EAAKy7E,cAAe,OAAO,MAC/C,CACH,IAAI3hD,EAAKsZ,EAAEpzC,KACP+5B,EAAMqZ,EAAE+kC,MAAQ/kC,EAAEpzC,KAEtB,GAAG85B,IAAO95B,GAAQ+5B,IAAO/5B,EAAKy7E,cAAe,OAAO,CACxD,CACA,OAAO,CACX,CAEA,IAAImB,EAAY//E,EAAW8+E,QAAQlI,IACX,kBAAdmJ,IAAwBA,EAAY,CAACA,IAE/C,IAAIC,EAAehgF,EAAW8+E,QAAQp9E,OACX,kBAAjBs+E,IAA2BA,EAAe,CAACA,IAErD,IAAIC,EAAevrD,EAAQ+qD,oBAAoBp0E,OAC3C00E,EAAUh4B,QAAO,SAAShrB,GACtB,IAAI,IAAI17B,EAAI,EAAGA,EAAIqzB,EAAQ6qD,uBAAuBj+E,OAAQD,IACtD,GAAGke,EAAMwd,EAAGrI,EAAQ6qD,uBAAuBl+E,IAAK,OAAO,EAE3D,OAAO,CACX,KAGA6+E,EAAkBxrD,EAAQ6qD,uBAAuBl0E,OACjD20E,EAAaj4B,QAAO,SAAShrB,GACzB,IAAI,IAAI17B,EAAI,EAAGA,EAAIqzB,EAAQ+qD,oBAAoBn+E,OAAQD,IACnD,GAAGke,EAAMwd,EAAGrI,EAAQ+qD,oBAAoBp+E,IAAK,OAAO,EAExD,OAAO,CACX,KAGAmjD,EAAexkD,EAAWykD,KAAK,aAC/B07B,EAAUngF,EAAWykD,KAAK,QAC1B0W,EAASn7D,EAAWykD,KAAK,OACzB27B,EAASpgF,EAAWykD,KAAK,OACzB47B,EAAgBrgF,EAAWykD,KAAK,cAChC67B,EAAUtgF,EAAWykD,KAAK,QAC1B87B,EAAavgF,EAAWykD,KAAK,WAC7ByW,EAAYl7D,EAAWykD,KAAK,UAC5B+7B,EAAWxgF,EAAWykD,KAAK,SAC3Bg8B,EAAWzgF,EAAWykD,KAAK,SAC3Bi8B,EAAY1gF,EAAWykD,KAAK,UAC5Bk8B,EAyJR,SAAyB3gF,GAGrB,IAFA,IAAIs3E,EAAShX,EAAQiX,KAAK,CAAC70E,YAAa1C,GAAa,MAAM,GAEnDqB,EAAI,EAAGA,EAAIi2E,EAAOh2E,OAAQD,IAC9B,IAAIi2E,EAAOj2E,GAAGu2E,WACV,OAAO,EAIf,OAAO,CACX,CAnKuBgJ,CAAgB5gF,GAC/B6gF,EAAuB39B,EAAeljD,EAAWmjD,WAEjDwjB,EAAS,GAEb,SAASma,EAASC,GACd,GAAIA,EAASz/E,OAAb,CAIA,IAFA,IAAIkmB,EAAM,GAEFnmB,EAAI,EAAGA,EAAI0/E,EAASz/E,OAAQD,IAAK,CAMrC,IALA,IAAI8B,EAAO49E,EAAS1/E,GAChBk1C,EAAI0gC,EAAe9zE,GACnB85B,EAAKsZ,EAAEpzC,KAAKy7E,cACZ1hD,GAAMqZ,EAAE+kC,MAAQ/kC,EAAEpzC,MAAMy7E,cACxBoC,GAAQ,EACJ1wB,EAAI,EAAGA,EAAI4vB,EAAgB5+E,OAAQgvD,IAAK,CAC5C,IAAIrvD,EAAIi/E,EAAgB5vB,GAAGsuB,cAC3B,GAAG39E,IAAMg8B,GAAMh8B,IAAMi8B,EAAI,CACrB8jD,GAAQ,EACR,KACJ,CACJ,CACGA,GACHx5D,EAAI9c,KAAKusE,EAAe9zE,GAC5B,CAEAwjE,EAAOj8D,KAAK8c,EArBe,CAsB/B,CAGA,IAAIy5D,EAAc,CAAC,WAChBvsD,EAAQwsD,sBAAuBD,EAAYv2E,KAAK,qBAC3CgqB,EAAQysD,iBAAiBF,EAAYv2E,KAAK,mBAClDo2E,EAASG,GAET,IAAIG,EAAY,GACZC,EAAa,GACbC,EAAa,GACbC,EAAgB,IAEhB/8B,GAAgB87B,GAAWF,GAAUC,GAAiBE,GAAcplB,EAASglB,EAAUjlB,EAAYslB,EAAWC,EAAW,GAGzHY,EAAa,CAAC,eACdC,EAAa,CAAC,eACRnmB,GACNimB,EAAY,CAAC,YAAa,cAC1BC,EAAa,CAAC,mBACdC,EAAa,CAAC,aACRnB,GACNkB,EAAa,CAAC,kBACdC,EAAa,CAAC,uBAAwB,0BAChCpmB,GACNkmB,EAAY,CAAC,eAAgB,iBAC7BC,EAAa,CAAC,eACdC,EAAa,CAAC,oBACRhB,EACNe,EAAa,CAAC,oBACRjB,EACNiB,EAAa,CAAC,mBACRX,GACNW,EAAa,CAAC,wBAAyB,yBACvCC,EAAa,CAAC,oBAGdD,EAAa,CAAC,eAKf78B,IACC68B,EAAa,CAAC,mBAAoB,wBAAyB,2BA8HnE,SAAoBjqD,GAChB,IAAI,IAAI/1B,EAAI,EAAGA,EAAI+1B,EAAS91B,OAAQD,IAChC,IAAIiD,EAASozB,QAAQN,EAAS/1B,GAAI,WAAY,OAAO,EAEzD,OAAO,CACX,CAjIOmgF,CAAWpqD,IAAaypD,KACvBQ,EAAa,KAGb78B,IAAgB87B,GAAaK,IAC7BS,EAAY,CAAC,WAAY,YAAa,eACjB,eAAlBE,EAAW,KAAqBA,EAAa,CAAC,kBAGlDnB,EACCoB,EAAgB,CAAC,SAAU,QAAS,gBAAiB,kBAC7C/8B,GAAgB87B,KAAaK,GAAiBJ,EACtDgB,EAAgB,CAAC,SAAU,SACrBrmB,GAAaC,EACnBomB,EAAgB,CAAC,SACXf,IACNe,EAAgB,CAAC,YA6EzB,SAAsBnqD,GAGlB,IAFA,IAAIqqD,GAAa,EAETpgF,EAAI,EAAGA,EAAI+1B,EAAS91B,SACrBmgF,EAD6BpgF,IAAK,CAGrC,IAAIgmB,EAAQ+P,EAAS/1B,GAEjBgmB,EAAMiB,SAAYjB,EAAMiB,QAAQo5D,eAEjCp9E,EAASozB,QAAQrQ,EAAO,iBACpB23D,EAAgBhhC,WAAW32B,IAAU23D,EAAgBjJ,QAAQ1uD,MAC5Do6D,GAAa,GAEXn9E,EAASozB,QAAQrQ,EAAO,eACP,QAApBA,EAAMiuD,WAAwC,QAAjBjuD,EAAM0b,SAQtC0+C,GAAa,GAErB,CAEA,OAAOA,CACX,EAvGOE,CAAavqD,IACZmqD,EAAc72E,KAAK,WAAY,WAGnC,IAAIk3E,EAAoB,GACpBC,EAAc,SAAS3oE,IAEc,IAAlC0oE,EAAkBv1E,QAAQ6M,KAEC,IAA3BmoE,EAAWh1E,QAAQ6M,IAClB0oE,EAAkBl3E,KAAKwO,EAE/B,EACA,GAAGqI,MAAMC,QAAQy+D,GAAe,CAE5B,IADA,IAAI6B,EAAU,GACNzgF,EAAI,EAAGA,EAAI4+E,EAAa3+E,OAAQD,IAAK,CACzC,IAAI8e,EAAI8/D,EAAa5+E,GACL,kBAAN8e,GACNA,EAAIA,EAAEy+D,eAEwB,IAA3BD,EAAWtyE,QAAQ8T,IAGdngB,EAAWykD,KAAK,WAChBzkD,EAAWykD,KAAK,eAEhB88B,EAAc72E,KAAKyV,GAEX,qBAANA,EACN0hE,EAAY,oBACA,gBAAN1hE,EACN0hE,EAAY,eACA,iBAAN1hE,EACN0hE,EAAY,yBACA,iBAAN1hE,GACN0hE,EAAY,yBACZA,EAAY,mBACZA,EAAY,kBACZA,EAAY,oBACZA,EAAY,oBACA,gBAAN1hE,IACN0hE,EAAY,eACZA,EAAY,yBACZA,EAAY,yBACZA,EAAY,mBACZA,EAAY,kBACZA,EAAY,oBACZA,EAAY,qBAEbC,EAAQp3E,KAAKyV,EACxB,CACA8/D,EAAe6B,CACnB,CAMA,OAJAhB,EAASS,GACTT,EAASM,EAAU/1E,OAAOi2E,IAC1BR,EAASc,GAyDb,SAA+Bjb,EAAQvmC,GACnC,GAAGA,EAAQ9+B,OACP,GAAGigB,MAAMC,QAAQ4e,EAAQ,IACrB,IAAI,IAAI/+B,EAAI,EAAGA,EAAI++B,EAAQ9+B,OAAQD,IAC/BslE,EAAOj8D,KAAK01B,EAAQ/+B,SAErBslE,EAAOj8D,KAAK01B,GAGvB,OAAOumC,CACX,CAjEWob,CAAsBpb,EAAQsZ,EACzC,CAnNuB+B,CAAgBx6E,GAGhC23E,EAASA,EAAQ7zE,OAAO9D,EAAIk4E,GAC1B1/E,EAAWo/E,SAAWH,EAAcz3E,EAAIk4E,EA5B7C,MALOP,IACCA,EAAQ8C,iBACDjiF,EAAWo/E,SAgC9B,C,wBC1DA,IAAI9wE,EAAK/R,EAAQ,OACbwQ,EAAYxQ,EAAQ,OAEpBD,EAAMC,EAAQ,OACdw6E,EAAQx6E,EAAQ,MAChB2lF,EAAU3lF,EAAAA,OAAAA,QAEV4lF,EAAS,IAAIC,UAUjB,SAASC,EAAQngF,GACbuP,KAAKa,UAAYpQ,EAAKoQ,UACtBb,KAAK0I,QAAUS,SAAS0jB,cAAc,OAEtC7sB,KAAKnG,OAAOpJ,EAAKogF,UAAWpgF,EAAKk+B,SAEjC3uB,KAAKa,UAAUiC,YAAY9C,KAAK0I,QACpC,CAEA,IAAIooE,EAAQF,EAAQG,UASpBD,EAAMj3E,OAAS,SAASg3E,EAAWliD,GAC/B3uB,KAAK6wE,UAAYA,EAEjB,IAAI5tD,EAAUjjB,KAAK6wE,UAAUpyE,SACzBlQ,EAAayR,KAAK6wE,UAAU5/E,YAC5B+/E,EAAY,WAAaziF,EAAWqQ,KAExCoB,KAAK0I,QAAQqY,aAAa,KAAMiwD,GAChChxE,KAAKpB,KAAOoyE,EAEZhxE,KAAK0I,QAAQpK,UAAY,UACK,UAA3B2kB,EAAQ2qD,iBAA4B5tE,KAAK0I,QAAQpK,WAAa,2BAE3B,MAAnC/P,EAAW8+E,QAAQn9D,cAClBlQ,KAAK0I,QAAQpK,WAAa,YAC1BqwB,EAAUA,EAAQ7V,WAGtB,IAAI3Z,EAAQ5Q,EAAW8+E,QACnB4D,EAAwC,UAA3BhuD,EAAQ2qD,eAA6B,iCAAmC,GAEzF/iF,EAAIqmF,uBAAuBF,GAC3BnmF,EAAIsmF,oBAAoBH,EAAWC,EAAa,IAAMD,EAAY,kBAAmB,qBAAuB7xE,EAAMpS,SAClHlC,EAAIsmF,oBAAoBH,EAAW,IAAMA,EAAY,2BAA4B,SAAW7xE,EAAM9D,OAClGxQ,EAAIsmF,oBAAoBH,EAAW,IAAMA,EAAY,iCAAkC,SAAW7xE,EAAM+lE,aACxGr6E,EAAIsmF,oBAAoBH,EAAW,IAAMA,EAAY,kCAAmC,SAAW7xE,EAAM+lE,aAGzG,IAAIkM,GAAmBpxE,KAAKqxE,WAAW1iD,GACnC2iD,EAAgBtxE,KAAKuxE,UAAYtuD,EAAQuuD,YACzCC,EAAkBzxE,KAAK0xE,SAAWzuD,EAAQyuD,OAI9C,GAFA1xE,KAAK0xE,OAASzuD,EAAQyuD,QAEnBN,GAAmBE,GAAgBG,KAClCzxE,KAAK2xE,mBAEL3xE,KAAK4xE,cAAcjjD,GAEhB1L,EAAQ4qD,WAAa5qD,EAAQuuD,aAAa,CACzC,IAAIK,EAAY7xE,KAAK8xE,UAClB7uD,EAAQ4qD,YACPgE,EAAUvzE,UAAYuzE,EAAUvzE,UAAY,cAGV,MAAnC/P,EAAW8+E,QAAQn9D,YAClBlQ,KAAK0I,QAAQqpE,aAAaF,EAAW7xE,KAAK0I,QAAQs5B,WAAW,IAE7DhiC,KAAK0I,QAAQ5F,YAAY+uE,GAG7B7xE,KAAKuxE,SAAU,CACnB,CAGJvxE,KAAKgyE,oBACT,EAEAlB,EAAMc,cAAgB,SAASjjD,GAC3B,IAAIsjD,EAAQjyE,KAEZA,KAAK2uB,QAAUA,EACf3uB,KAAKkyE,eAAiB,GACtBlyE,KAAKmyE,aAAe,GAEpBnyE,KAAK2uB,QAAQ14B,SAAQ,SAASm4E,GAC1B,IAAInxC,EAAQg1C,EAAMG,cAElBhE,EAAYn4E,SAAQ,SAASo8E,GACzB,IAAIC,EAAaD,EAAa3gF,KAC9B,IAAI4gF,EACA,MAAM,IAAIvE,MAAM,+CAEpB,IAA+C,IAA5CkE,EAAME,aAAav3E,QAAQ03E,GAC1B,MAAM,IAAIvE,MAAM,gBAAmBuE,EAAa,cAEpDL,EAAME,aAAal5E,KAAKq5E,GAExB,IAAI9hD,EAASyhD,EAAMM,aAAaF,GAChCJ,EAAMC,eAAej5E,KAAKu3B,GAC1ByM,EAAMn6B,YAAY0tB,EACtB,IAEAyhD,EAAMvpE,QAAQ5F,YAAYm6B,EAC9B,GACJ,EAMA6zC,EAAMsB,YAAc,WAChB,IAAIn1C,EAAQ9zB,SAAS0jB,cAAc,OAEnC,OADAoQ,EAAM3+B,UAAY,gBACX2+B,CACX,EAOA6zC,EAAMyB,aAAe,SAAS9X,GAC1B,IAAIwX,EAAQjyE,KACRwwB,EAASrnB,SAAS0jB,cAAc,KAEpC2D,EAAOzP,aAAa,MAAO,WAC3ByP,EAAOlyB,UAAY,cAEnB,IAAImU,EAAQgoD,EAAOhoD,WACN9V,IAAV8V,EAAqBA,EAAQgoD,EAAO/oE,KAEd,oBAAV+gB,IAAsBA,EAAQA,EAAMzS,KAAK6wE,aAErDp+D,GAAmB,IAAVA,IAAa+d,EAAOzP,aAAa,aAActO,QAExC9V,IAAhB89D,EAAO9pE,MAAoB6/B,EAAOzP,aAAa,YAAa05C,EAAO9pE,MAEtE,IAAI+c,EAAM+sD,EAAO/sD,IAOjB,QANW/Q,IAAR+Q,IACmB,oBAARA,IAAoBA,EAAMA,EAAI1N,KAAK6wE,YAC7CrgD,EAAOzP,aAAa,WAAYrT,IAIhB,oBADR+sD,EAAOpR,MAEf,MAAM,IAAI0kB,MAAM,yDAEhBv9C,EAAOpC,iBAAiB,SAAS,SAASs3C,GACtCjL,EAAOpR,MAAM4oB,EAAMpB,UAAWnL,GAG9BuM,EAAMD,mBAAmBtM,EAAGC,cAChC,IAGJn1C,EAAOzP,aAAa,cAAe05C,EAAOuR,SAAU,GACjDvR,EAAOuR,QAAQnvE,EAAGxK,OAAOm+B,GAAQvxB,QAAQ,UAAU,GAEtD,IAAImqE,EAAO3O,EAAO2O,KAQlB,MAPmB,oBAATA,EACN54C,EAAO1tB,YAAYsmE,KAEnB54C,EAAO1tB,YAAY9C,KAAKwyE,WAAWpJ,GAAQ9D,EAAMmN,WAErDjiD,EAAOzP,aAAa,eAAgB05C,EAAO4Q,SAAW,KAE/C76C,CACX,EAUAsgD,EAAM0B,WAAa,SAASE,GACxB,IAIItJ,EAJAuJ,EAAar3E,EAAUo3E,EAAS/lF,QAChCuhB,OAAOwkE,EAAS/lF,QAChB+lF,EAASE,OAASF,EAASG,QAC3BC,EAAQ,6BAGZ,GAAGJ,EAASv+E,KAAM,EACdi1E,EAAOjgE,SAAS4pE,gBAAgBD,EAAO,QAClC/xD,aAAa,UAAW,CAAC,EAAG,EAAG2xD,EAAShmF,MAAOimF,GAAY7mF,KAAK,MACrEs9E,EAAKroD,aAAa,QAAS,QAE3B,IAAI5sB,EAAOgV,SAAS4pE,gBAAgBD,EAAO,QAC3C3+E,EAAK4sB,aAAa,IAAK2xD,EAASv+E,MAE7Bu+E,EAASxsE,UACR/R,EAAK4sB,aAAa,YAAa2xD,EAASxsE,gBACdvJ,IAApB+1E,EAASE,QAEfz+E,EAAK4sB,aAAa,YAAa,qBAAuB2xD,EAASE,OAAS,KAG5ExJ,EAAKtmE,YAAY3O,EACrB,CAEGu+E,EAASnjB,MAER6Z,EADasH,EAAOsC,gBAAgBN,EAASnjB,IAAK,mBACpCvtB,WAAW,IAM7B,OAHAonC,EAAKroD,aAAa,SAAU,OAC5BqoD,EAAKroD,aAAa,QAAS,OAEpBqoD,CACX,EAOA0H,EAAMkB,mBAAqB,SAASiB,GAChC,IAAI1kF,EAAayR,KAAK6wE,UAAU5/E,YAC5BiiF,OAAqCv2E,IAAlBs2E,EACnBA,EAAcjyD,aAAa,aAC3B,KAEJhhB,KAAKkyE,eAAej8E,SAAQ,SAASu6B,GACjC,IAAI2iD,EAAU3iD,EAAOxP,aAAa,cAAe,EAC7CoyD,EAAW5iD,EAAOxP,aAAa,aAC/BqyD,EAAyD,SAAvC7iD,EAAOxP,aAAa,eACtCsyD,EAAUz2E,EAAGxK,OAAOm+B,GAIxB,GAAG6iD,EACID,IAAaF,GACZI,EAAQr0E,QAAQ,UAAWq0E,EAAQr0E,QAAQ,eAE5C,CACH,IAAIyO,EAAoB,OAAb0lE,EACPA,EACAvoF,EAAIk6B,eAAex2B,EAAY6kF,GAAUpuD,MAE7CsuD,EAAQr0E,QAAQ,SAAUyO,IAAQylE,EACtC,CACJ,GACJ,EAQArC,EAAMO,WAAa,SAAS1iD,GACxB,IAAI4kD,EAAiBvzE,KAAK2uB,QAE1B,IAAI4kD,EAAgB,OAAO,EAE3B,GAAG5kD,EAAQ9+B,SAAW0jF,EAAe1jF,OAAQ,OAAO,EAEpD,IAAI,IAAID,EAAI,EAAGA,EAAI++B,EAAQ9+B,SAAUD,EAAG,CACpC,GAAG++B,EAAQ/+B,GAAGC,SAAW0jF,EAAe3jF,GAAGC,OAAQ,OAAO,EAC1D,IAAI,IAAIoC,EAAI,EAAGA,EAAI08B,EAAQ/+B,GAAGC,OAAQoC,IAClC,GAAG08B,EAAQ/+B,GAAGqC,GAAGP,OAAS6hF,EAAe3jF,GAAGqC,GAAGP,KAAM,OAAO,CAEpE,CAEA,OAAO,CACX,EASAo/E,EAAMgB,QAAU,WACZ,IAAI70C,EAAQj9B,KAAKoyE,cACb3qE,EAAI0B,SAAS0jB,cAAc,KAU/B,OARAplB,EAAE+rE,KAAO,sBACT/rE,EAAEinB,OAAS,SACXjnB,EAAEsZ,aAAa,aAAwBl2B,EAAIqf,EAAElK,KAAK6wE,UAAW,2BAZhD,MAAQJ,EAAU,KAa/BhpE,EAAEnJ,UAAY,6CAEdmJ,EAAE3E,YAAY9C,KAAKwyE,WAAWlN,EAAMmO,gBAEpCx2C,EAAMn6B,YAAY2E,GACXw1B,CACX,EAEA6zC,EAAMa,iBAAmB,WACrB,KAAM3xE,KAAK0I,QAAQgrE,YACf1zE,KAAK0I,QAAQ45B,YAAYtiC,KAAK0I,QAAQgrE,YAG1C1zE,KAAKuxE,SAAU,CACnB,EAEAT,EAAMN,QAAU,WACZ3lF,EAAI2hC,cAAcxsB,KAAKa,UAAUuI,cAAc,aAC/Cve,EAAIqmF,uBAAuBlxE,KAAKpB,KACpC,EAoBAvT,EAAOC,QAlBP,SAAuByK,EAAI44B,GACvB,IAAIpgC,EAAawH,EAAG9E,YAEhBy8E,EAAU,IAAIkD,EAAQ,CACtBC,UAAW96E,EACX8K,UAAWtS,EAAWolF,YAAY5yE,OAClC4tB,QAASA,IASb,OANGpgC,EAAWqlF,cACV/2E,EAAGxK,OAAOq7E,EAAQhlE,SAAS1J,OAAO,QAC7BC,QAAQ,6BAA6B,GACrC1S,KAAK,WAGPmhF,CACX,C","sources":["../node_modules/plotly.js/build/plotcss.js","../node_modules/plotly.js/lib/bar.js","../node_modules/plotly.js/lib/box.js","../node_modules/plotly.js/lib/core.js","../node_modules/plotly.js/lib/heatmap.js","../node_modules/plotly.js/lib/pie.js","../node_modules/plotly.js/src/components/annotations3d/attributes.js","../node_modules/plotly.js/src/components/annotations3d/convert.js","../node_modules/plotly.js/src/components/annotations3d/defaults.js","../node_modules/plotly.js/src/components/annotations3d/draw.js","../node_modules/plotly.js/src/components/annotations3d/index.js","../node_modules/plotly.js/src/components/annotations/arrow_paths.js","../node_modules/plotly.js/src/components/annotations/attributes.js","../node_modules/plotly.js/src/components/annotations/calc_autorange.js","../node_modules/plotly.js/src/components/annotations/click.js","../node_modules/plotly.js/src/components/annotations/common_defaults.js","../node_modules/plotly.js/src/components/annotations/convert_coords.js","../node_modules/plotly.js/src/components/annotations/defaults.js","../node_modules/plotly.js/src/components/annotations/draw.js","../node_modules/plotly.js/src/components/annotations/draw_arrow_head.js","../node_modules/plotly.js/src/components/annotations/index.js","../node_modules/plotly.js/src/components/color/attributes.js","../node_modules/plotly.js/src/components/color/index.js","../node_modules/plotly.js/src/components/colorbar/attributes.js","../node_modules/plotly.js/src/components/colorbar/constants.js","../node_modules/plotly.js/src/components/colorbar/defaults.js","../node_modules/plotly.js/src/components/colorbar/draw.js","../node_modules/plotly.js/src/components/colorbar/has_colorbar.js","../node_modules/plotly.js/src/components/colorbar/index.js","../node_modules/plotly.js/src/components/colorscale/attributes.js","../node_modules/plotly.js/src/components/colorscale/calc.js","../node_modules/plotly.js/src/components/colorscale/cross_trace_defaults.js","../node_modules/plotly.js/src/components/colorscale/defaults.js","../node_modules/plotly.js/src/components/colorscale/helpers.js","../node_modules/plotly.js/src/components/colorscale/index.js","../node_modules/plotly.js/src/components/colorscale/layout_attributes.js","../node_modules/plotly.js/src/components/colorscale/layout_defaults.js","../node_modules/plotly.js/src/components/colorscale/scales.js","../node_modules/plotly.js/src/components/dragelement/align.js","../node_modules/plotly.js/src/components/dragelement/cursor.js","../node_modules/plotly.js/src/components/dragelement/helpers.js","../node_modules/plotly.js/src/components/dragelement/index.js","../node_modules/plotly.js/src/components/dragelement/unhover.js","../node_modules/plotly.js/src/components/drawing/attributes.js","../node_modules/plotly.js/src/components/drawing/index.js","../node_modules/plotly.js/src/components/drawing/symbol_defs.js","../node_modules/plotly.js/src/components/errorbars/attributes.js","../node_modules/plotly.js/src/components/errorbars/calc.js","../node_modules/plotly.js/src/components/errorbars/compute_error.js","../node_modules/plotly.js/src/components/errorbars/defaults.js","../node_modules/plotly.js/src/components/errorbars/index.js","../node_modules/plotly.js/src/components/errorbars/plot.js","../node_modules/plotly.js/src/components/errorbars/style.js","../node_modules/plotly.js/src/components/fx/attributes.js","../node_modules/plotly.js/src/components/fx/calc.js","../node_modules/plotly.js/src/components/fx/click.js","../node_modules/plotly.js/src/components/fx/constants.js","../node_modules/plotly.js/src/components/fx/defaults.js","../node_modules/plotly.js/src/components/fx/helpers.js","../node_modules/plotly.js/src/components/fx/hover.js","../node_modules/plotly.js/src/components/fx/hoverlabel_defaults.js","../node_modules/plotly.js/src/components/fx/hovermode_defaults.js","../node_modules/plotly.js/src/components/fx/index.js","../node_modules/plotly.js/src/components/fx/layout_attributes.js","../node_modules/plotly.js/src/components/fx/layout_defaults.js","../node_modules/plotly.js/src/components/fx/layout_global_defaults.js","../node_modules/plotly.js/src/components/grid/index.js","../node_modules/plotly.js/src/components/images/attributes.js","../node_modules/plotly.js/src/components/images/convert_coords.js","../node_modules/plotly.js/src/components/images/defaults.js","../node_modules/plotly.js/src/components/images/draw.js","../node_modules/plotly.js/src/components/images/index.js","../node_modules/plotly.js/src/components/legend/attributes.js","../node_modules/plotly.js/src/components/legend/constants.js","../node_modules/plotly.js/src/components/legend/defaults.js","../node_modules/plotly.js/src/components/legend/draw.js","../node_modules/plotly.js/src/components/legend/get_legend_data.js","../node_modules/plotly.js/src/components/legend/handle_click.js","../node_modules/plotly.js/src/components/legend/helpers.js","../node_modules/plotly.js/src/components/legend/index.js","../node_modules/plotly.js/src/components/legend/style.js","../node_modules/plotly.js/src/components/modebar/attributes.js","../node_modules/plotly.js/src/components/modebar/buttons.js","../node_modules/plotly.js/src/components/modebar/constants.js","../node_modules/plotly.js/src/components/modebar/defaults.js","../node_modules/plotly.js/src/components/modebar/index.js","../node_modules/plotly.js/src/components/modebar/manage.js","../node_modules/plotly.js/src/components/modebar/modebar.js"],"sourcesContent":["'use strict';\n\nvar Lib = require('../src/lib');\nvar rules = {\n \"X,X div\": \"direction:ltr;font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;margin:0;padding:0;\",\n \"X input,X button\": \"font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;\",\n \"X input:focus,X button:focus\": \"outline:none;\",\n \"X a\": \"text-decoration:none;\",\n \"X a:hover\": \"text-decoration:none;\",\n \"X .crisp\": \"shape-rendering:crispEdges;\",\n \"X .user-select-none\": \"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;\",\n \"X svg\": \"overflow:hidden;\",\n \"X svg a\": \"fill:#447adb;\",\n \"X svg a:hover\": \"fill:#3c6dc5;\",\n \"X .main-svg\": \"position:absolute;top:0;left:0;pointer-events:none;\",\n \"X .main-svg .draglayer\": \"pointer-events:all;\",\n \"X .cursor-default\": \"cursor:default;\",\n \"X .cursor-pointer\": \"cursor:pointer;\",\n \"X .cursor-crosshair\": \"cursor:crosshair;\",\n \"X .cursor-move\": \"cursor:move;\",\n \"X .cursor-col-resize\": \"cursor:col-resize;\",\n \"X .cursor-row-resize\": \"cursor:row-resize;\",\n \"X .cursor-ns-resize\": \"cursor:ns-resize;\",\n \"X .cursor-ew-resize\": \"cursor:ew-resize;\",\n \"X .cursor-sw-resize\": \"cursor:sw-resize;\",\n \"X .cursor-s-resize\": \"cursor:s-resize;\",\n \"X .cursor-se-resize\": \"cursor:se-resize;\",\n \"X .cursor-w-resize\": \"cursor:w-resize;\",\n \"X .cursor-e-resize\": \"cursor:e-resize;\",\n \"X .cursor-nw-resize\": \"cursor:nw-resize;\",\n \"X .cursor-n-resize\": \"cursor:n-resize;\",\n \"X .cursor-ne-resize\": \"cursor:ne-resize;\",\n \"X .cursor-grab\": \"cursor:-webkit-grab;cursor:grab;\",\n \"X .modebar\": \"position:absolute;top:2px;right:2px;\",\n \"X .ease-bg\": \"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;\",\n \"X .modebar--hover>:not(.watermark)\": \"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;\",\n \"X:hover .modebar--hover .modebar-group\": \"opacity:1;\",\n \"X .modebar-group\": \"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;\",\n \"X .modebar-btn\": \"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;\",\n \"X .modebar-btn svg\": \"position:relative;top:2px;\",\n \"X .modebar.vertical\": \"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;\",\n \"X .modebar.vertical svg\": \"top:-1px;\",\n \"X .modebar.vertical .modebar-group\": \"display:block;float:none;padding-left:0px;padding-bottom:8px;\",\n \"X .modebar.vertical .modebar-group .modebar-btn\": \"display:block;text-align:center;\",\n \"X [data-title]:before,X [data-title]:after\": \"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;\",\n \"X [data-title]:hover:before,X [data-title]:hover:after\": \"display:block;opacity:1;\",\n \"X [data-title]:before\": \"content:\\\"\\\";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;\",\n \"X [data-title]:after\": \"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;\",\n \"X .vertical [data-title]:before,X .vertical [data-title]:after\": \"top:0%;right:200%;\",\n \"X .vertical [data-title]:before\": \"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;\",\n Y: \"font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;\",\n \"Y p\": \"margin:0;\",\n \"Y .notifier-note\": \"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;\",\n \"Y .notifier-close\": \"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;\",\n \"Y .notifier-close:hover\": \"color:#444;text-decoration:none;cursor:pointer;\"\n};\n\nfor(var selector in rules) {\n var fullSelector = selector.replace(/^,/,' ,')\n .replace(/X/g, '.js-plotly-plot .plotly')\n .replace(/Y/g, '.plotly-notifier');\n Lib.addStyleRule(fullSelector, rules[selector]);\n}\n","'use strict';\n\nmodule.exports = require('../src/traces/bar');\n","'use strict';\n\nmodule.exports = require('../src/traces/box');\n","'use strict';\n\nmodule.exports = require('../src/core');\n","'use strict';\n\nmodule.exports = require('../src/traces/heatmap');\n","'use strict';\n\nmodule.exports = require('../src/traces/pie');\n","'use strict';\n\nvar annAttrs = require('../annotations/attributes');\nvar overrideAll = require('../../plot_api/edit_types').overrideAll;\nvar templatedArray = require('../../plot_api/plot_template').templatedArray;\n\nmodule.exports = overrideAll(templatedArray('annotation', {\n visible: annAttrs.visible,\n x: {\n valType: 'any',\n description: [\n 'Sets the annotation\\'s x position.'\n ].join(' ')\n },\n y: {\n valType: 'any',\n description: [\n 'Sets the annotation\\'s y position.'\n ].join(' ')\n },\n z: {\n valType: 'any',\n description: [\n 'Sets the annotation\\'s z position.'\n ].join(' ')\n },\n ax: {\n valType: 'number',\n description: [\n 'Sets the x component of the arrow tail about the arrow head (in pixels).'\n ].join(' ')\n },\n ay: {\n valType: 'number',\n description: [\n 'Sets the y component of the arrow tail about the arrow head (in pixels).'\n ].join(' ')\n },\n\n xanchor: annAttrs.xanchor,\n xshift: annAttrs.xshift,\n yanchor: annAttrs.yanchor,\n yshift: annAttrs.yshift,\n\n text: annAttrs.text,\n textangle: annAttrs.textangle,\n font: annAttrs.font,\n width: annAttrs.width,\n height: annAttrs.height,\n opacity: annAttrs.opacity,\n align: annAttrs.align,\n valign: annAttrs.valign,\n bgcolor: annAttrs.bgcolor,\n bordercolor: annAttrs.bordercolor,\n borderpad: annAttrs.borderpad,\n borderwidth: annAttrs.borderwidth,\n showarrow: annAttrs.showarrow,\n arrowcolor: annAttrs.arrowcolor,\n arrowhead: annAttrs.arrowhead,\n startarrowhead: annAttrs.startarrowhead,\n arrowside: annAttrs.arrowside,\n arrowsize: annAttrs.arrowsize,\n startarrowsize: annAttrs.startarrowsize,\n arrowwidth: annAttrs.arrowwidth,\n standoff: annAttrs.standoff,\n startstandoff: annAttrs.startstandoff,\n hovertext: annAttrs.hovertext,\n hoverlabel: annAttrs.hoverlabel,\n captureevents: annAttrs.captureevents,\n\n // maybes later?\n // clicktoshow: annAttrs.clicktoshow,\n // xclick: annAttrs.xclick,\n // yclick: annAttrs.yclick,\n\n // not needed!\n // axref: 'pixel'\n // ayref: 'pixel'\n // xref: 'x'\n // yref: 'y\n // zref: 'z'\n}), 'calc', 'from-root');\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Axes = require('../../plots/cartesian/axes');\n\nmodule.exports = function convert(scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var anns = fullSceneLayout.annotations;\n\n for(var i = 0; i < anns.length; i++) {\n mockAnnAxes(anns[i], scene);\n }\n\n scene.fullLayout._infolayer\n .selectAll('.annotation-' + scene.id)\n .remove();\n};\n\nfunction mockAnnAxes(ann, scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var domain = fullSceneLayout.domain;\n var size = scene.fullLayout._size;\n\n var base = {\n // this gets fill in on render\n pdata: null,\n\n // to get setConvert to not execute cleanly\n type: 'linear',\n\n // don't try to update them on `editable: true`\n autorange: false,\n\n // set infinite range so that annotation draw routine\n // does not try to remove 'outside-range' annotations,\n // this case is handled in the render loop\n range: [-Infinity, Infinity]\n };\n\n ann._xa = {};\n Lib.extendFlat(ann._xa, base);\n Axes.setConvert(ann._xa);\n ann._xa._offset = size.l + domain.x[0] * size.w;\n ann._xa.l2p = function() {\n return 0.5 * (1 + ann._pdata[0] / ann._pdata[3]) * size.w * (domain.x[1] - domain.x[0]);\n };\n\n ann._ya = {};\n Lib.extendFlat(ann._ya, base);\n Axes.setConvert(ann._ya);\n ann._ya._offset = size.t + (1 - domain.y[1]) * size.h;\n ann._ya.l2p = function() {\n return 0.5 * (1 - ann._pdata[1] / ann._pdata[3]) * size.h * (domain.y[1] - domain.y[0]);\n };\n}\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Axes = require('../../plots/cartesian/axes');\nvar handleArrayContainerDefaults = require('../../plots/array_container_defaults');\nvar handleAnnotationCommonDefaults = require('../annotations/common_defaults');\nvar attributes = require('./attributes');\n\nmodule.exports = function handleDefaults(sceneLayoutIn, sceneLayoutOut, opts) {\n handleArrayContainerDefaults(sceneLayoutIn, sceneLayoutOut, {\n name: 'annotations',\n handleItemDefaults: handleAnnotationDefaults,\n fullLayout: opts.fullLayout\n });\n};\n\nfunction handleAnnotationDefaults(annIn, annOut, sceneLayout, opts) {\n function coerce(attr, dflt) {\n return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n }\n\n function coercePosition(axLetter) {\n var axName = axLetter + 'axis';\n\n // mock in such way that getFromId grabs correct 3D axis\n var gdMock = { _fullLayout: {} };\n gdMock._fullLayout[axName] = sceneLayout[axName];\n\n return Axes.coercePosition(annOut, gdMock, coerce, axLetter, axLetter, 0.5);\n }\n\n\n var visible = coerce('visible');\n if(!visible) return;\n\n handleAnnotationCommonDefaults(annIn, annOut, opts.fullLayout, coerce);\n\n coercePosition('x');\n coercePosition('y');\n coercePosition('z');\n\n // if you have one coordinate you should all three\n Lib.noneOrAll(annIn, annOut, ['x', 'y', 'z']);\n\n // hard-set here for completeness\n annOut.xref = 'x';\n annOut.yref = 'y';\n annOut.zref = 'z';\n\n coerce('xanchor');\n coerce('yanchor');\n coerce('xshift');\n coerce('yshift');\n\n if(annOut.showarrow) {\n annOut.axref = 'pixel';\n annOut.ayref = 'pixel';\n\n // TODO maybe default values should be bigger than the 2D case?\n coerce('ax', -10);\n coerce('ay', -30);\n\n // if you have one part of arrow length you should have both\n Lib.noneOrAll(annIn, annOut, ['ax', 'ay']);\n }\n}\n","'use strict';\n\nvar drawRaw = require('../annotations/draw').drawRaw;\nvar project = require('../../plots/gl3d/project');\nvar axLetters = ['x', 'y', 'z'];\n\nmodule.exports = function draw(scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var dataScale = scene.dataScale;\n var anns = fullSceneLayout.annotations;\n\n for(var i = 0; i < anns.length; i++) {\n var ann = anns[i];\n var annotationIsOffscreen = false;\n\n for(var j = 0; j < 3; j++) {\n var axLetter = axLetters[j];\n var pos = ann[axLetter];\n var ax = fullSceneLayout[axLetter + 'axis'];\n var posFraction = ax.r2fraction(pos);\n\n if(posFraction < 0 || posFraction > 1) {\n annotationIsOffscreen = true;\n break;\n }\n }\n\n if(annotationIsOffscreen) {\n scene.fullLayout._infolayer\n .select('.annotation-' + scene.id + '[data-index=\"' + i + '\"]')\n .remove();\n } else {\n ann._pdata = project(scene.glplot.cameraParams, [\n fullSceneLayout.xaxis.r2l(ann.x) * dataScale[0],\n fullSceneLayout.yaxis.r2l(ann.y) * dataScale[1],\n fullSceneLayout.zaxis.r2l(ann.z) * dataScale[2]\n ]);\n\n drawRaw(scene.graphDiv, ann, i, scene.id, ann._xa, ann._ya);\n }\n }\n};\n","'use strict';\n\nvar Registry = require('../../registry');\nvar Lib = require('../../lib');\n\nmodule.exports = {\n moduleType: 'component',\n name: 'annotations3d',\n\n schema: {\n subplots: {\n scene: {annotations: require('./attributes')}\n }\n },\n\n layoutAttributes: require('./attributes'),\n handleDefaults: require('./defaults'),\n includeBasePlot: includeGL3D,\n\n convert: require('./convert'),\n draw: require('./draw')\n};\n\nfunction includeGL3D(layoutIn, layoutOut) {\n var GL3D = Registry.subplotsRegistry.gl3d;\n if(!GL3D) return;\n\n var attrRegex = GL3D.attrRegex;\n\n var keys = Object.keys(layoutIn);\n for(var i = 0; i < keys.length; i++) {\n var k = keys[i];\n if(attrRegex.test(k) && (layoutIn[k].annotations || []).length) {\n Lib.pushUnique(layoutOut._basePlotModules, GL3D);\n Lib.pushUnique(layoutOut._subplots.gl3d, k);\n }\n }\n}\n","'use strict';\n\n/**\n * All paths are tuned for maximum scalability of the arrowhead,\n * ie throughout arrowwidth=0.3..3 the head is joined smoothly\n * to the line, with the line coming from the left and ending at (0, 0).\n *\n * `backoff` is the distance to move the arrowhead and the end of the line,\n * in order that the arrowhead points to the desired place, either at\n * the tip of the arrow or (in the case of circle or square)\n * the center of the symbol.\n *\n * `noRotate`, if truthy, says that this arrowhead should not rotate with the\n * arrow. That's the case for squares, which should always be straight, and\n * circles, for which it's irrelevant.\n */\n\nmodule.exports = [\n // no arrow\n {\n path: '',\n backoff: 0\n },\n // wide with flat back\n {\n path: 'M-2.4,-3V3L0.6,0Z',\n backoff: 0.6\n },\n // narrower with flat back\n {\n path: 'M-3.7,-2.5V2.5L1.3,0Z',\n backoff: 1.3\n },\n // barbed\n {\n path: 'M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z',\n backoff: 1.55\n },\n // wide line-drawn\n {\n path: 'M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z',\n backoff: 1.6\n },\n // narrower line-drawn\n {\n path: 'M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z',\n backoff: 2\n },\n // circle\n {\n path: 'M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z',\n backoff: 0,\n noRotate: true\n },\n // square\n {\n path: 'M2,2V-2H-2V2Z',\n backoff: 0,\n noRotate: true\n }\n];\n","'use strict';\n\nvar ARROWPATHS = require('./arrow_paths');\nvar fontAttrs = require('../../plots/font_attributes');\nvar cartesianConstants = require('../../plots/cartesian/constants');\nvar templatedArray = require('../../plot_api/plot_template').templatedArray;\nvar axisPlaceableObjs = require('../../constants/axis_placeable_objects');\n\nfunction arrowAxisRefDescription(axis) {\n return [\n 'In order for absolute positioning of the arrow to work, *a' + axis +\n 'ref* must be exactly the same as *' + axis + 'ref*, otherwise *a' + axis +\n 'ref* will revert to *pixel* (explained next).',\n 'For relative positioning, *a' + axis + 'ref* can be set to *pixel*,',\n 'in which case the *a' + axis + '* value is specified in pixels',\n 'relative to *' + axis + '*.',\n 'Absolute positioning is useful',\n 'for trendline annotations which should continue to indicate',\n 'the correct trend when zoomed. Relative positioning is useful',\n 'for specifying the text offset for an annotated point.'\n ].join(' ');\n}\n\nfunction arrowCoordinateDescription(axis, lower, upper) {\n return [\n 'Sets the', axis, 'component of the arrow tail about the arrow head.',\n 'If `a' + axis + 'ref` is `pixel`, a positive (negative)',\n 'component corresponds to an arrow pointing',\n 'from', upper, 'to', lower, '(' + lower, 'to', upper + ').',\n 'If `a' + axis + 'ref` is not `pixel` and is exactly the same as `' + axis + 'ref`,',\n 'this is an absolute value on that axis,',\n 'like `' + axis + '`, specified in the same coordinates as `' + axis + 'ref`.'\n ].join(' ');\n}\n\nmodule.exports = templatedArray('annotation', {\n visible: {\n valType: 'boolean',\n dflt: true,\n editType: 'calc+arraydraw',\n description: [\n 'Determines whether or not this annotation is visible.'\n ].join(' ')\n },\n\n text: {\n valType: 'string',\n editType: 'calc+arraydraw',\n description: [\n 'Sets the text associated with this annotation.',\n 'Plotly uses a subset of HTML tags to do things like',\n 'newline (
), bold (), italics (),',\n 'hyperlinks (). Tags , , ',\n ' are also supported.'\n ].join(' ')\n },\n textangle: {\n valType: 'angle',\n dflt: 0,\n editType: 'calc+arraydraw',\n description: [\n 'Sets the angle at which the `text` is drawn',\n 'with respect to the horizontal.'\n ].join(' ')\n },\n font: fontAttrs({\n editType: 'calc+arraydraw',\n colorEditType: 'arraydraw',\n description: 'Sets the annotation text font.'\n }),\n width: {\n valType: 'number',\n min: 1,\n dflt: null,\n editType: 'calc+arraydraw',\n description: [\n 'Sets an explicit width for the text box. null (default) lets the',\n 'text set the box width. Wider text will be clipped.',\n 'There is no automatic wrapping; use
to start a new line.'\n ].join(' ')\n },\n height: {\n valType: 'number',\n min: 1,\n dflt: null,\n editType: 'calc+arraydraw',\n description: [\n 'Sets an explicit height for the text box. null (default) lets the',\n 'text set the box height. Taller text will be clipped.'\n ].join(' ')\n },\n opacity: {\n valType: 'number',\n min: 0,\n max: 1,\n dflt: 1,\n editType: 'arraydraw',\n description: 'Sets the opacity of the annotation (text + arrow).'\n },\n align: {\n valType: 'enumerated',\n values: ['left', 'center', 'right'],\n dflt: 'center',\n editType: 'arraydraw',\n description: [\n 'Sets the horizontal alignment of the `text` within the box.',\n 'Has an effect only if `text` spans two or more lines',\n '(i.e. `text` contains one or more
HTML tags) or if an',\n 'explicit width is set to override the text width.'\n ].join(' ')\n },\n valign: {\n valType: 'enumerated',\n values: ['top', 'middle', 'bottom'],\n dflt: 'middle',\n editType: 'arraydraw',\n description: [\n 'Sets the vertical alignment of the `text` within the box.',\n 'Has an effect only if an explicit height is set to override',\n 'the text height.'\n ].join(' ')\n },\n bgcolor: {\n valType: 'color',\n dflt: 'rgba(0,0,0,0)',\n editType: 'arraydraw',\n description: 'Sets the background color of the annotation.'\n },\n bordercolor: {\n valType: 'color',\n dflt: 'rgba(0,0,0,0)',\n editType: 'arraydraw',\n description: [\n 'Sets the color of the border enclosing the annotation `text`.'\n ].join(' ')\n },\n borderpad: {\n valType: 'number',\n min: 0,\n dflt: 1,\n editType: 'calc+arraydraw',\n description: [\n 'Sets the padding (in px) between the `text`',\n 'and the enclosing border.'\n ].join(' ')\n },\n borderwidth: {\n valType: 'number',\n min: 0,\n dflt: 1,\n editType: 'calc+arraydraw',\n description: [\n 'Sets the width (in px) of the border enclosing',\n 'the annotation `text`.'\n ].join(' ')\n },\n // arrow\n showarrow: {\n valType: 'boolean',\n dflt: true,\n editType: 'calc+arraydraw',\n description: [\n 'Determines whether or not the annotation is drawn with an arrow.',\n 'If *true*, `text` is placed near the arrow\\'s tail.',\n 'If *false*, `text` lines up with the `x` and `y` provided.'\n ].join(' ')\n },\n arrowcolor: {\n valType: 'color',\n editType: 'arraydraw',\n description: 'Sets the color of the annotation arrow.'\n },\n arrowhead: {\n valType: 'integer',\n min: 0,\n max: ARROWPATHS.length,\n dflt: 1,\n editType: 'arraydraw',\n description: 'Sets the end annotation arrow head style.'\n },\n startarrowhead: {\n valType: 'integer',\n min: 0,\n max: ARROWPATHS.length,\n dflt: 1,\n editType: 'arraydraw',\n description: 'Sets the start annotation arrow head style.'\n },\n arrowside: {\n valType: 'flaglist',\n flags: ['end', 'start'],\n extras: ['none'],\n dflt: 'end',\n editType: 'arraydraw',\n description: 'Sets the annotation arrow head position.'\n },\n arrowsize: {\n valType: 'number',\n min: 0.3,\n dflt: 1,\n editType: 'calc+arraydraw',\n description: [\n 'Sets the size of the end annotation arrow head, relative to `arrowwidth`.',\n 'A value of 1 (default) gives a head about 3x as wide as the line.'\n ].join(' ')\n },\n startarrowsize: {\n valType: 'number',\n min: 0.3,\n dflt: 1,\n editType: 'calc+arraydraw',\n description: [\n 'Sets the size of the start annotation arrow head, relative to `arrowwidth`.',\n 'A value of 1 (default) gives a head about 3x as wide as the line.'\n ].join(' ')\n },\n arrowwidth: {\n valType: 'number',\n min: 0.1,\n editType: 'calc+arraydraw',\n description: 'Sets the width (in px) of annotation arrow line.'\n },\n standoff: {\n valType: 'number',\n min: 0,\n dflt: 0,\n editType: 'calc+arraydraw',\n description: [\n 'Sets a distance, in pixels, to move the end arrowhead away from the',\n 'position it is pointing at, for example to point at the edge of',\n 'a marker independent of zoom. Note that this shortens the arrow',\n 'from the `ax` / `ay` vector, in contrast to `xshift` / `yshift`',\n 'which moves everything by this amount.'\n ].join(' ')\n },\n startstandoff: {\n valType: 'number',\n min: 0,\n dflt: 0,\n editType: 'calc+arraydraw',\n description: [\n 'Sets a distance, in pixels, to move the start arrowhead away from the',\n 'position it is pointing at, for example to point at the edge of',\n 'a marker independent of zoom. Note that this shortens the arrow',\n 'from the `ax` / `ay` vector, in contrast to `xshift` / `yshift`',\n 'which moves everything by this amount.'\n ].join(' ')\n },\n ax: {\n valType: 'any',\n editType: 'calc+arraydraw',\n description: [\n arrowCoordinateDescription('x', 'left', 'right')\n ].join(' ')\n },\n ay: {\n valType: 'any',\n editType: 'calc+arraydraw',\n description: [\n arrowCoordinateDescription('y', 'top', 'bottom')\n ].join(' ')\n },\n axref: {\n valType: 'enumerated',\n dflt: 'pixel',\n values: [\n 'pixel',\n cartesianConstants.idRegex.x.toString()\n ],\n editType: 'calc',\n description: [\n 'Indicates in what coordinates the tail of the',\n 'annotation (ax,ay) is specified.',\n axisPlaceableObjs.axisRefDescription('x', 'left', 'right'),\n arrowAxisRefDescription('x')\n ].join(' ')\n },\n ayref: {\n valType: 'enumerated',\n dflt: 'pixel',\n values: [\n 'pixel',\n cartesianConstants.idRegex.y.toString()\n ],\n editType: 'calc',\n description: [\n 'Indicates in what coordinates the tail of the',\n 'annotation (ax,ay) is specified.',\n axisPlaceableObjs.axisRefDescription('y', 'bottom', 'top'),\n arrowAxisRefDescription('y')\n ].join(' ')\n },\n // positioning\n xref: {\n valType: 'enumerated',\n values: [\n 'paper',\n cartesianConstants.idRegex.x.toString()\n ],\n editType: 'calc',\n description: [\n 'Sets the annotation\\'s x coordinate axis.',\n axisPlaceableObjs.axisRefDescription('x', 'left', 'right'),\n ].join(' ')\n },\n x: {\n valType: 'any',\n editType: 'calc+arraydraw',\n description: [\n 'Sets the annotation\\'s x position.',\n 'If the axis `type` is *log*, then you must take the',\n 'log of your desired range.',\n 'If the axis `type` is *date*, it should be date strings,',\n 'like date data, though Date objects and unix milliseconds',\n 'will be accepted and converted to strings.',\n 'If the axis `type` is *category*, it should be numbers,',\n 'using the scale where each category is assigned a serial',\n 'number from zero in the order it appears.'\n ].join(' ')\n },\n xanchor: {\n valType: 'enumerated',\n values: ['auto', 'left', 'center', 'right'],\n dflt: 'auto',\n editType: 'calc+arraydraw',\n description: [\n 'Sets the text box\\'s horizontal position anchor',\n 'This anchor binds the `x` position to the *left*, *center*',\n 'or *right* of the annotation.',\n 'For example, if `x` is set to 1, `xref` to *paper* and',\n '`xanchor` to *right* then the right-most portion of the',\n 'annotation lines up with the right-most edge of the',\n 'plotting area.',\n 'If *auto*, the anchor is equivalent to *center* for',\n 'data-referenced annotations or if there is an arrow,',\n 'whereas for paper-referenced with no arrow, the anchor picked',\n 'corresponds to the closest side.'\n ].join(' ')\n },\n xshift: {\n valType: 'number',\n dflt: 0,\n editType: 'calc+arraydraw',\n description: [\n 'Shifts the position of the whole annotation and arrow to the',\n 'right (positive) or left (negative) by this many pixels.'\n ].join(' ')\n },\n yref: {\n valType: 'enumerated',\n values: [\n 'paper',\n cartesianConstants.idRegex.y.toString()\n ],\n editType: 'calc',\n description: [\n 'Sets the annotation\\'s y coordinate axis.',\n axisPlaceableObjs.axisRefDescription('y', 'bottom', 'top'),\n ].join(' ')\n },\n y: {\n valType: 'any',\n editType: 'calc+arraydraw',\n description: [\n 'Sets the annotation\\'s y position.',\n 'If the axis `type` is *log*, then you must take the',\n 'log of your desired range.',\n 'If the axis `type` is *date*, it should be date strings,',\n 'like date data, though Date objects and unix milliseconds',\n 'will be accepted and converted to strings.',\n 'If the axis `type` is *category*, it should be numbers,',\n 'using the scale where each category is assigned a serial',\n 'number from zero in the order it appears.'\n ].join(' ')\n },\n yanchor: {\n valType: 'enumerated',\n values: ['auto', 'top', 'middle', 'bottom'],\n dflt: 'auto',\n editType: 'calc+arraydraw',\n description: [\n 'Sets the text box\\'s vertical position anchor',\n 'This anchor binds the `y` position to the *top*, *middle*',\n 'or *bottom* of the annotation.',\n 'For example, if `y` is set to 1, `yref` to *paper* and',\n '`yanchor` to *top* then the top-most portion of the',\n 'annotation lines up with the top-most edge of the',\n 'plotting area.',\n 'If *auto*, the anchor is equivalent to *middle* for',\n 'data-referenced annotations or if there is an arrow,',\n 'whereas for paper-referenced with no arrow, the anchor picked',\n 'corresponds to the closest side.'\n ].join(' ')\n },\n yshift: {\n valType: 'number',\n dflt: 0,\n editType: 'calc+arraydraw',\n description: [\n 'Shifts the position of the whole annotation and arrow up',\n '(positive) or down (negative) by this many pixels.'\n ].join(' ')\n },\n clicktoshow: {\n valType: 'enumerated',\n values: [false, 'onoff', 'onout'],\n dflt: false,\n editType: 'arraydraw',\n description: [\n 'Makes this annotation respond to clicks on the plot.',\n 'If you click a data point that exactly matches the `x` and `y`',\n 'values of this annotation, and it is hidden (visible: false),',\n 'it will appear. In *onoff* mode, you must click the same point',\n 'again to make it disappear, so if you click multiple points,',\n 'you can show multiple annotations. In *onout* mode, a click',\n 'anywhere else in the plot (on another data point or not) will',\n 'hide this annotation.',\n 'If you need to show/hide this annotation in response to different',\n '`x` or `y` values, you can set `xclick` and/or `yclick`. This is',\n 'useful for example to label the side of a bar. To label markers',\n 'though, `standoff` is preferred over `xclick` and `yclick`.'\n ].join(' ')\n },\n xclick: {\n valType: 'any',\n editType: 'arraydraw',\n description: [\n 'Toggle this annotation when clicking a data point whose `x` value',\n 'is `xclick` rather than the annotation\\'s `x` value.'\n ].join(' ')\n },\n yclick: {\n valType: 'any',\n editType: 'arraydraw',\n description: [\n 'Toggle this annotation when clicking a data point whose `y` value',\n 'is `yclick` rather than the annotation\\'s `y` value.'\n ].join(' ')\n },\n hovertext: {\n valType: 'string',\n editType: 'arraydraw',\n description: [\n 'Sets text to appear when hovering over this annotation.',\n 'If omitted or blank, no hover label will appear.'\n ].join(' ')\n },\n hoverlabel: {\n bgcolor: {\n valType: 'color',\n editType: 'arraydraw',\n description: [\n 'Sets the background color of the hover label.',\n 'By default uses the annotation\\'s `bgcolor` made opaque,',\n 'or white if it was transparent.'\n ].join(' ')\n },\n bordercolor: {\n valType: 'color',\n editType: 'arraydraw',\n description: [\n 'Sets the border color of the hover label.',\n 'By default uses either dark grey or white, for maximum',\n 'contrast with `hoverlabel.bgcolor`.'\n ].join(' ')\n },\n font: fontAttrs({\n editType: 'arraydraw',\n description: [\n 'Sets the hover label text font.',\n 'By default uses the global hover font and size,',\n 'with color from `hoverlabel.bordercolor`.'\n ].join(' ')\n }),\n editType: 'arraydraw'\n },\n captureevents: {\n valType: 'boolean',\n editType: 'arraydraw',\n description: [\n 'Determines whether the annotation text box captures mouse move',\n 'and click events, or allows those events to pass through to data',\n 'points in the plot that may be behind the annotation. By default',\n '`captureevents` is *false* unless `hovertext` is provided.',\n 'If you use the event `plotly_clickannotation` without `hovertext`',\n 'you must explicitly enable `captureevents`.'\n ].join(' ')\n },\n editType: 'calc',\n\n _deprecated: {\n ref: {\n valType: 'string',\n editType: 'calc',\n description: [\n 'Obsolete. Set `xref` and `yref` separately instead.'\n ].join(' ')\n }\n }\n});\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Axes = require('../../plots/cartesian/axes');\n\nvar draw = require('./draw').draw;\n\n\nmodule.exports = function calcAutorange(gd) {\n var fullLayout = gd._fullLayout;\n var annotationList = Lib.filterVisible(fullLayout.annotations);\n\n if(annotationList.length && gd._fullData.length) {\n return Lib.syncOrAsync([draw, annAutorange], gd);\n }\n};\n\nfunction annAutorange(gd) {\n var fullLayout = gd._fullLayout;\n\n // find the bounding boxes for each of these annotations'\n // relative to their anchor points\n // use the arrow and the text bg rectangle,\n // as the whole anno may include hidden text in its bbox\n Lib.filterVisible(fullLayout.annotations).forEach(function(ann) {\n var xa = Axes.getFromId(gd, ann.xref);\n var ya = Axes.getFromId(gd, ann.yref);\n var xRefType = Axes.getRefType(ann.xref);\n var yRefType = Axes.getRefType(ann.yref);\n\n ann._extremes = {};\n if(xRefType === 'range') calcAxisExpansion(ann, xa);\n if(yRefType === 'range') calcAxisExpansion(ann, ya);\n });\n}\n\nfunction calcAxisExpansion(ann, ax) {\n var axId = ax._id;\n var letter = axId.charAt(0);\n var pos = ann[letter];\n var apos = ann['a' + letter];\n var ref = ann[letter + 'ref'];\n var aref = ann['a' + letter + 'ref'];\n var padplus = ann['_' + letter + 'padplus'];\n var padminus = ann['_' + letter + 'padminus'];\n var shift = {x: 1, y: -1}[letter] * ann[letter + 'shift'];\n var headSize = 3 * ann.arrowsize * ann.arrowwidth || 0;\n var headPlus = headSize + shift;\n var headMinus = headSize - shift;\n var startHeadSize = 3 * ann.startarrowsize * ann.arrowwidth || 0;\n var startHeadPlus = startHeadSize + shift;\n var startHeadMinus = startHeadSize - shift;\n var extremes;\n\n if(aref === ref) {\n // expand for the arrowhead (padded by arrowhead)\n var extremeArrowHead = Axes.findExtremes(ax, [ax.r2c(pos)], {\n ppadplus: headPlus,\n ppadminus: headMinus\n });\n // again for the textbox (padded by textbox)\n var extremeText = Axes.findExtremes(ax, [ax.r2c(apos)], {\n ppadplus: Math.max(padplus, startHeadPlus),\n ppadminus: Math.max(padminus, startHeadMinus)\n });\n extremes = {\n min: [extremeArrowHead.min[0], extremeText.min[0]],\n max: [extremeArrowHead.max[0], extremeText.max[0]]\n };\n } else {\n startHeadPlus = apos ? startHeadPlus + apos : startHeadPlus;\n startHeadMinus = apos ? startHeadMinus - apos : startHeadMinus;\n extremes = Axes.findExtremes(ax, [ax.r2c(pos)], {\n ppadplus: Math.max(padplus, headPlus, startHeadPlus),\n ppadminus: Math.max(padminus, headMinus, startHeadMinus)\n });\n }\n\n ann._extremes[axId] = extremes;\n}\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Registry = require('../../registry');\nvar arrayEditor = require('../../plot_api/plot_template').arrayEditor;\n\nmodule.exports = {\n hasClickToShow: hasClickToShow,\n onClick: onClick\n};\n\n/*\n * hasClickToShow: does the given hoverData have ANY annotations which will\n * turn ON if we click here? (used by hover events to set cursor)\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n * *plotly_click* events in the `points` attribute\n *\n * returns: boolean\n */\nfunction hasClickToShow(gd, hoverData) {\n var sets = getToggleSets(gd, hoverData);\n return sets.on.length > 0 || sets.explicitOff.length > 0;\n}\n\n/*\n * onClick: perform the toggling (via Plotly.update) implied by clicking\n * at this hoverData\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n * *plotly_click* events in the `points` attribute\n *\n * returns: Promise that the update is complete\n */\nfunction onClick(gd, hoverData) {\n var toggleSets = getToggleSets(gd, hoverData);\n var onSet = toggleSets.on;\n var offSet = toggleSets.off.concat(toggleSets.explicitOff);\n var update = {};\n var annotationsOut = gd._fullLayout.annotations;\n var i, editHelpers;\n\n if(!(onSet.length || offSet.length)) return;\n\n for(i = 0; i < onSet.length; i++) {\n editHelpers = arrayEditor(gd.layout, 'annotations', annotationsOut[onSet[i]]);\n editHelpers.modifyItem('visible', true);\n Lib.extendFlat(update, editHelpers.getUpdateObj());\n }\n\n for(i = 0; i < offSet.length; i++) {\n editHelpers = arrayEditor(gd.layout, 'annotations', annotationsOut[offSet[i]]);\n editHelpers.modifyItem('visible', false);\n Lib.extendFlat(update, editHelpers.getUpdateObj());\n }\n\n return Registry.call('update', gd, {}, update);\n}\n\n/*\n * getToggleSets: find the annotations which will turn on or off at this\n * hoverData\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n * *plotly_click* events in the `points` attribute\n *\n * returns: {\n * on: Array (indices of annotations to turn on),\n * off: Array (indices to turn off because you're not hovering on them),\n * explicitOff: Array (indices to turn off because you *are* hovering on them)\n * }\n */\nfunction getToggleSets(gd, hoverData) {\n var annotations = gd._fullLayout.annotations;\n var onSet = [];\n var offSet = [];\n var explicitOffSet = [];\n var hoverLen = (hoverData || []).length;\n\n var i, j, anni, showMode, pointj, xa, ya, toggleType;\n\n for(i = 0; i < annotations.length; i++) {\n anni = annotations[i];\n showMode = anni.clicktoshow;\n\n if(showMode) {\n for(j = 0; j < hoverLen; j++) {\n pointj = hoverData[j];\n xa = pointj.xaxis;\n ya = pointj.yaxis;\n\n if(xa._id === anni.xref &&\n ya._id === anni.yref &&\n xa.d2r(pointj.x) === clickData2r(anni._xclick, xa) &&\n ya.d2r(pointj.y) === clickData2r(anni._yclick, ya)\n ) {\n // match! toggle this annotation\n // regardless of its clicktoshow mode\n // but if it's onout mode, off is implicit\n if(anni.visible) {\n if(showMode === 'onout') toggleType = offSet;\n else toggleType = explicitOffSet;\n } else {\n toggleType = onSet;\n }\n toggleType.push(i);\n break;\n }\n }\n\n if(j === hoverLen) {\n // no match - only turn this annotation OFF, and only if\n // showmode is 'onout'\n if(anni.visible && showMode === 'onout') offSet.push(i);\n }\n }\n }\n\n return {on: onSet, off: offSet, explicitOff: explicitOffSet};\n}\n\n// to handle log axes until v3\nfunction clickData2r(d, ax) {\n return ax.type === 'log' ? ax.l2r(d) : ax.d2r(d);\n}\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Color = require('../color');\n\n// defaults common to 'annotations' and 'annotations3d'\nmodule.exports = function handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce) {\n coerce('opacity');\n var bgColor = coerce('bgcolor');\n\n var borderColor = coerce('bordercolor');\n var borderOpacity = Color.opacity(borderColor);\n\n coerce('borderpad');\n\n var borderWidth = coerce('borderwidth');\n var showArrow = coerce('showarrow');\n\n coerce('text', showArrow ? ' ' : fullLayout._dfltTitle.annotation);\n coerce('textangle');\n Lib.coerceFont(coerce, 'font', fullLayout.font);\n\n coerce('width');\n coerce('align');\n\n var h = coerce('height');\n if(h) coerce('valign');\n\n if(showArrow) {\n var arrowside = coerce('arrowside');\n var arrowhead;\n var arrowsize;\n\n if(arrowside.indexOf('end') !== -1) {\n arrowhead = coerce('arrowhead');\n arrowsize = coerce('arrowsize');\n }\n\n if(arrowside.indexOf('start') !== -1) {\n coerce('startarrowhead', arrowhead);\n coerce('startarrowsize', arrowsize);\n }\n coerce('arrowcolor', borderOpacity ? annOut.bordercolor : Color.defaultLine);\n coerce('arrowwidth', ((borderOpacity && borderWidth) || 1) * 2);\n coerce('standoff');\n coerce('startstandoff');\n }\n\n var hoverText = coerce('hovertext');\n var globalHoverLabel = fullLayout.hoverlabel || {};\n\n if(hoverText) {\n var hoverBG = coerce('hoverlabel.bgcolor', globalHoverLabel.bgcolor ||\n (Color.opacity(bgColor) ? Color.rgb(bgColor) : Color.defaultLine)\n );\n\n var hoverBorder = coerce('hoverlabel.bordercolor', globalHoverLabel.bordercolor ||\n Color.contrast(hoverBG)\n );\n\n Lib.coerceFont(coerce, 'hoverlabel.font', {\n family: globalHoverLabel.font.family,\n size: globalHoverLabel.font.size,\n color: globalHoverLabel.font.color || hoverBorder\n });\n }\n\n coerce('captureevents', !!hoverText);\n};\n","'use strict';\n\nvar isNumeric = require('fast-isnumeric');\nvar toLogRange = require('../../lib/to_log_range');\n\n/*\n * convertCoords: when converting an axis between log and linear\n * you need to alter any annotations on that axis to keep them\n * pointing at the same data point.\n * In v3.0 this will become obsolete\n *\n * gd: the plot div\n * ax: the axis being changed\n * newType: the type it's getting\n * doExtra: function(attr, val) from inside relayout that sets the attribute.\n * Use this to make the changes as it's aware if any other changes in the\n * same relayout call should override this conversion.\n */\nmodule.exports = function convertCoords(gd, ax, newType, doExtra) {\n ax = ax || {};\n\n var toLog = (newType === 'log') && (ax.type === 'linear');\n var fromLog = (newType === 'linear') && (ax.type === 'log');\n\n if(!(toLog || fromLog)) return;\n\n var annotations = gd._fullLayout.annotations;\n var axLetter = ax._id.charAt(0);\n var ann;\n var attrPrefix;\n\n function convert(attr) {\n var currentVal = ann[attr];\n var newVal = null;\n\n if(toLog) newVal = toLogRange(currentVal, ax.range);\n else newVal = Math.pow(10, currentVal);\n\n // if conversion failed, delete the value so it gets a default value\n if(!isNumeric(newVal)) newVal = null;\n\n doExtra(attrPrefix + attr, newVal);\n }\n\n for(var i = 0; i < annotations.length; i++) {\n ann = annotations[i];\n attrPrefix = 'annotations[' + i + '].';\n\n if(ann[axLetter + 'ref'] === ax._id) convert(axLetter);\n if(ann['a' + axLetter + 'ref'] === ax._id) convert('a' + axLetter);\n }\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Axes = require('../../plots/cartesian/axes');\nvar handleArrayContainerDefaults = require('../../plots/array_container_defaults');\n\nvar handleAnnotationCommonDefaults = require('./common_defaults');\nvar attributes = require('./attributes');\n\n\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n handleArrayContainerDefaults(layoutIn, layoutOut, {\n name: 'annotations',\n handleItemDefaults: handleAnnotationDefaults\n });\n};\n\nfunction handleAnnotationDefaults(annIn, annOut, fullLayout) {\n function coerce(attr, dflt) {\n return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n }\n\n var visible = coerce('visible');\n var clickToShow = coerce('clicktoshow');\n\n if(!(visible || clickToShow)) return;\n\n handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce);\n\n var showArrow = annOut.showarrow;\n\n // positioning\n var axLetters = ['x', 'y'];\n var arrowPosDflt = [-10, -30];\n var gdMock = {_fullLayout: fullLayout};\n\n for(var i = 0; i < 2; i++) {\n var axLetter = axLetters[i];\n\n // xref, yref\n var axRef = Axes.coerceRef(annIn, annOut, gdMock, axLetter, '', 'paper');\n\n if(axRef !== 'paper') {\n var ax = Axes.getFromId(gdMock, axRef);\n ax._annIndices.push(annOut._index);\n }\n\n // x, y\n Axes.coercePosition(annOut, gdMock, coerce, axRef, axLetter, 0.5);\n\n if(showArrow) {\n var arrowPosAttr = 'a' + axLetter;\n // axref, ayref\n var aaxRef = Axes.coerceRef(annIn, annOut, gdMock, arrowPosAttr, 'pixel',\n ['pixel', 'paper']);\n\n // for now the arrow can only be on the same axis or specified as pixels\n // TODO: sometime it might be interesting to allow it to be on *any* axis\n // but that would require updates to drawing & autorange code and maybe more\n if(aaxRef !== 'pixel' && aaxRef !== axRef) {\n aaxRef = annOut[arrowPosAttr] = 'pixel';\n }\n\n // ax, ay\n var aDflt = (aaxRef === 'pixel') ? arrowPosDflt[i] : 0.4;\n Axes.coercePosition(annOut, gdMock, coerce, aaxRef, arrowPosAttr, aDflt);\n }\n\n // xanchor, yanchor\n coerce(axLetter + 'anchor');\n\n // xshift, yshift\n coerce(axLetter + 'shift');\n }\n\n // if you have one coordinate you should have both\n Lib.noneOrAll(annIn, annOut, ['x', 'y']);\n\n // if you have one part of arrow length you should have both\n if(showArrow) {\n Lib.noneOrAll(annIn, annOut, ['ax', 'ay']);\n }\n\n if(clickToShow) {\n var xClick = coerce('xclick');\n var yClick = coerce('yclick');\n\n // put the actual click data to bind to into private attributes\n // so we don't have to do this little bit of logic on every hover event\n annOut._xclick = (xClick === undefined) ?\n annOut.x :\n Axes.cleanPosition(xClick, gdMock, annOut.xref);\n annOut._yclick = (yClick === undefined) ?\n annOut.y :\n Axes.cleanPosition(yClick, gdMock, annOut.yref);\n }\n}\n","'use strict';\n\nvar d3 = require('@plotly/d3');\n\nvar Registry = require('../../registry');\nvar Plots = require('../../plots/plots');\nvar Lib = require('../../lib');\nvar strTranslate = Lib.strTranslate;\nvar Axes = require('../../plots/cartesian/axes');\nvar Color = require('../color');\nvar Drawing = require('../drawing');\nvar Fx = require('../fx');\nvar svgTextUtils = require('../../lib/svg_text_utils');\nvar setCursor = require('../../lib/setcursor');\nvar dragElement = require('../dragelement');\nvar arrayEditor = require('../../plot_api/plot_template').arrayEditor;\n\nvar drawArrowHead = require('./draw_arrow_head');\n\n// Annotations are stored in gd.layout.annotations, an array of objects\n// index can point to one item in this array,\n// or non-numeric to simply add a new one\n// or -1 to modify all existing\n// opt can be the full options object, or one key (to be set to value)\n// or undefined to simply redraw\n// if opt is blank, val can be 'add' or a full options object to add a new\n// annotation at that point in the array, or 'remove' to delete this one\n\nmodule.exports = {\n draw: draw,\n drawOne: drawOne,\n drawRaw: drawRaw\n};\n\n/*\n * draw: draw all annotations without any new modifications\n */\nfunction draw(gd) {\n var fullLayout = gd._fullLayout;\n\n fullLayout._infolayer.selectAll('.annotation').remove();\n\n for(var i = 0; i < fullLayout.annotations.length; i++) {\n if(fullLayout.annotations[i].visible) {\n drawOne(gd, i);\n }\n }\n\n return Plots.previousPromises(gd);\n}\n\n/*\n * drawOne: draw a single cartesian or paper-ref annotation, potentially with modifications\n *\n * index (int): the annotation to draw\n */\nfunction drawOne(gd, index) {\n var fullLayout = gd._fullLayout;\n var options = fullLayout.annotations[index] || {};\n var xa = Axes.getFromId(gd, options.xref);\n var ya = Axes.getFromId(gd, options.yref);\n\n if(xa) xa.setScale();\n if(ya) ya.setScale();\n\n drawRaw(gd, options, index, false, xa, ya);\n}\n\n// Convert pixels to the coordinates relevant for the axis referred to. For\n// example, for paper it would convert to a value normalized by the dimension of\n// the plot.\n// axDomainRef: if true and axa defined, draws relative to axis domain,\n// otherwise draws relative to data (if axa defined) or paper (if not).\nfunction shiftPosition(axa, dAx, axLetter, gs, options) {\n var optAx = options[axLetter];\n var axRef = options[axLetter + 'ref'];\n var vertical = axLetter.indexOf('y') !== -1;\n var axDomainRef = Axes.getRefType(axRef) === 'domain';\n var gsDim = vertical ? gs.h : gs.w;\n if(axa) {\n if(axDomainRef) {\n // here optAx normalized to length of axis (e.g., normally in range\n // 0 to 1). But dAx is in pixels. So we normalize dAx to length of\n // axis before doing the math.\n return optAx + (vertical ? -dAx : dAx) / axa._length;\n } else {\n return axa.p2r(axa.r2p(optAx) + dAx);\n }\n } else {\n return optAx + (vertical ? -dAx : dAx) / gsDim;\n }\n}\n\n/**\n * drawRaw: draw a single annotation, potentially with modifications\n *\n * @param {DOM element} gd\n * @param {object} options : this annotation's fullLayout options\n * @param {integer} index : index in 'annotations' container of the annotation to draw\n * @param {string} subplotId : id of the annotation's subplot\n * - use false for 2d (i.e. cartesian or paper-ref) annotations\n * @param {object | undefined} xa : full x-axis object to compute subplot pos-to-px\n * @param {object | undefined} ya : ... y-axis\n */\nfunction drawRaw(gd, options, index, subplotId, xa, ya) {\n var fullLayout = gd._fullLayout;\n var gs = gd._fullLayout._size;\n var edits = gd._context.edits;\n\n var className, containerStr;\n\n if(subplotId) {\n className = 'annotation-' + subplotId;\n containerStr = subplotId + '.annotations';\n } else {\n className = 'annotation';\n containerStr = 'annotations';\n }\n\n var editHelpers = arrayEditor(gd.layout, containerStr, options);\n var modifyBase = editHelpers.modifyBase;\n var modifyItem = editHelpers.modifyItem;\n var getUpdateObj = editHelpers.getUpdateObj;\n\n // remove the existing annotation if there is one\n fullLayout._infolayer\n .selectAll('.' + className + '[data-index=\"' + index + '\"]')\n .remove();\n\n var annClipID = 'clip' + fullLayout._uid + '_ann' + index;\n\n // this annotation is gone - quit now after deleting it\n // TODO: use d3 idioms instead of deleting and redrawing every time\n if(!options._input || options.visible === false) {\n d3.selectAll('#' + annClipID).remove();\n return;\n }\n\n // calculated pixel positions\n // x & y each will get text, head, and tail as appropriate\n var annPosPx = {x: {}, y: {}};\n var textangle = +options.textangle || 0;\n\n // create the components\n // made a single group to contain all, so opacity can work right\n // with border/arrow together this could handle a whole bunch of\n // cleanup at this point, but works for now\n var annGroup = fullLayout._infolayer.append('g')\n .classed(className, true)\n .attr('data-index', String(index))\n .style('opacity', options.opacity);\n\n // another group for text+background so that they can rotate together\n var annTextGroup = annGroup.append('g')\n .classed('annotation-text-g', true);\n\n var editTextPosition = edits[options.showarrow ? 'annotationTail' : 'annotationPosition'];\n var textEvents = options.captureevents || edits.annotationText || editTextPosition;\n\n function makeEventData(initialEvent) {\n var eventData = {\n index: index,\n annotation: options._input,\n fullAnnotation: options,\n event: initialEvent\n };\n if(subplotId) {\n eventData.subplotId = subplotId;\n }\n return eventData;\n }\n\n var annTextGroupInner = annTextGroup.append('g')\n .style('pointer-events', textEvents ? 'all' : null)\n .call(setCursor, 'pointer')\n .on('click', function() {\n gd._dragging = false;\n gd.emit('plotly_clickannotation', makeEventData(d3.event));\n });\n\n if(options.hovertext) {\n annTextGroupInner\n .on('mouseover', function() {\n var hoverOptions = options.hoverlabel;\n var hoverFont = hoverOptions.font;\n var bBox = this.getBoundingClientRect();\n var bBoxRef = gd.getBoundingClientRect();\n\n Fx.loneHover({\n x0: bBox.left - bBoxRef.left,\n x1: bBox.right - bBoxRef.left,\n y: (bBox.top + bBox.bottom) / 2 - bBoxRef.top,\n text: options.hovertext,\n color: hoverOptions.bgcolor,\n borderColor: hoverOptions.bordercolor,\n fontFamily: hoverFont.family,\n fontSize: hoverFont.size,\n fontColor: hoverFont.color\n }, {\n container: fullLayout._hoverlayer.node(),\n outerContainer: fullLayout._paper.node(),\n gd: gd\n });\n })\n .on('mouseout', function() {\n Fx.loneUnhover(fullLayout._hoverlayer.node());\n });\n }\n\n var borderwidth = options.borderwidth;\n var borderpad = options.borderpad;\n var borderfull = borderwidth + borderpad;\n\n var annTextBG = annTextGroupInner.append('rect')\n .attr('class', 'bg')\n .style('stroke-width', borderwidth + 'px')\n .call(Color.stroke, options.bordercolor)\n .call(Color.fill, options.bgcolor);\n\n var isSizeConstrained = options.width || options.height;\n\n var annTextClip = fullLayout._topclips\n .selectAll('#' + annClipID)\n .data(isSizeConstrained ? [0] : []);\n\n annTextClip.enter().append('clipPath')\n .classed('annclip', true)\n .attr('id', annClipID)\n .append('rect');\n annTextClip.exit().remove();\n\n var font = options.font;\n\n var text = fullLayout._meta ?\n Lib.templateString(options.text, fullLayout._meta) :\n options.text;\n\n var annText = annTextGroupInner.append('text')\n .classed('annotation-text', true)\n .text(text);\n\n function textLayout(s) {\n s.call(Drawing.font, font)\n .attr({\n 'text-anchor': {\n left: 'start',\n right: 'end'\n }[options.align] || 'middle'\n });\n\n svgTextUtils.convertToTspans(s, gd, drawGraphicalElements);\n return s;\n }\n\n function drawGraphicalElements() {\n // if the text has *only* a link, make the whole box into a link\n var anchor3 = annText.selectAll('a');\n if(anchor3.size() === 1 && anchor3.text() === annText.text()) {\n var wholeLink = annTextGroupInner.insert('a', ':first-child').attr({\n 'xlink:xlink:href': anchor3.attr('xlink:href'),\n 'xlink:xlink:show': anchor3.attr('xlink:show')\n })\n .style({cursor: 'pointer'});\n\n wholeLink.node().appendChild(annTextBG.node());\n }\n\n var mathjaxGroup = annTextGroupInner.select('.annotation-text-math-group');\n var hasMathjax = !mathjaxGroup.empty();\n var anntextBB = Drawing.bBox(\n (hasMathjax ? mathjaxGroup : annText).node());\n var textWidth = anntextBB.width;\n var textHeight = anntextBB.height;\n var annWidth = options.width || textWidth;\n var annHeight = options.height || textHeight;\n var outerWidth = Math.round(annWidth + 2 * borderfull);\n var outerHeight = Math.round(annHeight + 2 * borderfull);\n\n function shiftFraction(v, anchor) {\n if(anchor === 'auto') {\n if(v < 1 / 3) anchor = 'left';\n else if(v > 2 / 3) anchor = 'right';\n else anchor = 'center';\n }\n return {\n center: 0,\n middle: 0,\n left: 0.5,\n bottom: -0.5,\n right: -0.5,\n top: 0.5\n }[anchor];\n }\n\n var annotationIsOffscreen = false;\n var letters = ['x', 'y'];\n\n for(var i = 0; i < letters.length; i++) {\n var axLetter = letters[i];\n var axRef = options[axLetter + 'ref'] || axLetter;\n var tailRef = options['a' + axLetter + 'ref'];\n var ax = {x: xa, y: ya}[axLetter];\n var dimAngle = (textangle + (axLetter === 'x' ? 0 : -90)) * Math.PI / 180;\n // note that these two can be either positive or negative\n var annSizeFromWidth = outerWidth * Math.cos(dimAngle);\n var annSizeFromHeight = outerHeight * Math.sin(dimAngle);\n // but this one is the positive total size\n var annSize = Math.abs(annSizeFromWidth) + Math.abs(annSizeFromHeight);\n var anchor = options[axLetter + 'anchor'];\n var overallShift = options[axLetter + 'shift'] * (axLetter === 'x' ? 1 : -1);\n var posPx = annPosPx[axLetter];\n var basePx;\n var textPadShift;\n var alignPosition;\n var autoAlignFraction;\n var textShift;\n var axRefType = Axes.getRefType(axRef);\n\n /*\n * calculate the *primary* pixel position\n * which is the arrowhead if there is one,\n * otherwise the text anchor point\n */\n if(ax && (axRefType !== 'domain')) {\n // check if annotation is off screen, to bypass DOM manipulations\n var posFraction = ax.r2fraction(options[axLetter]);\n if(posFraction < 0 || posFraction > 1) {\n if(tailRef === axRef) {\n posFraction = ax.r2fraction(options['a' + axLetter]);\n if(posFraction < 0 || posFraction > 1) {\n annotationIsOffscreen = true;\n }\n } else {\n annotationIsOffscreen = true;\n }\n }\n basePx = ax._offset + ax.r2p(options[axLetter]);\n autoAlignFraction = 0.5;\n } else {\n var axRefTypeEqDomain = axRefType === 'domain';\n if(axLetter === 'x') {\n alignPosition = options[axLetter];\n basePx = axRefTypeEqDomain ?\n ax._offset + ax._length * alignPosition :\n basePx = gs.l + gs.w * alignPosition;\n } else {\n alignPosition = 1 - options[axLetter];\n basePx = axRefTypeEqDomain ?\n ax._offset + ax._length * alignPosition :\n basePx = gs.t + gs.h * alignPosition;\n }\n autoAlignFraction = options.showarrow ? 0.5 : alignPosition;\n }\n\n // now translate this into pixel positions of head, tail, and text\n // as well as paddings for autorange\n if(options.showarrow) {\n posPx.head = basePx;\n\n var arrowLength = options['a' + axLetter];\n\n // with an arrow, the text rotates around the anchor point\n textShift = annSizeFromWidth * shiftFraction(0.5, options.xanchor) -\n annSizeFromHeight * shiftFraction(0.5, options.yanchor);\n\n if(tailRef === axRef) {\n // In the case tailRefType is 'domain' or 'paper', the arrow's\n // position is set absolutely, which is consistent with how\n // it behaves when its position is set in data ('range')\n // coordinates.\n var tailRefType = Axes.getRefType(tailRef);\n if(tailRefType === 'domain') {\n if(axLetter === 'y') {\n arrowLength = 1 - arrowLength;\n }\n posPx.tail = ax._offset + ax._length * arrowLength;\n } else if(tailRefType === 'paper') {\n if(axLetter === 'y') {\n arrowLength = 1 - arrowLength;\n posPx.tail = gs.t + gs.h * arrowLength;\n } else {\n posPx.tail = gs.l + gs.w * arrowLength;\n }\n } else {\n // assumed tailRef is range or paper referenced\n posPx.tail = ax._offset + ax.r2p(arrowLength);\n }\n // tail is range- or domain-referenced: autorange pads the\n // text in px from the tail\n textPadShift = textShift;\n } else {\n posPx.tail = basePx + arrowLength;\n // tail is specified in px from head, so autorange also pads vs head\n textPadShift = textShift + arrowLength;\n }\n\n posPx.text = posPx.tail + textShift;\n\n // constrain pixel/paper referenced so the draggers are at least\n // partially visible\n var maxPx = fullLayout[(axLetter === 'x') ? 'width' : 'height'];\n if(axRef === 'paper') {\n posPx.head = Lib.constrain(posPx.head, 1, maxPx - 1);\n }\n if(tailRef === 'pixel') {\n var shiftPlus = -Math.max(posPx.tail - 3, posPx.text);\n var shiftMinus = Math.min(posPx.tail + 3, posPx.text) - maxPx;\n if(shiftPlus > 0) {\n posPx.tail += shiftPlus;\n posPx.text += shiftPlus;\n } else if(shiftMinus > 0) {\n posPx.tail -= shiftMinus;\n posPx.text -= shiftMinus;\n }\n }\n\n posPx.tail += overallShift;\n posPx.head += overallShift;\n } else {\n // with no arrow, the text rotates and *then* we put the anchor\n // relative to the new bounding box\n textShift = annSize * shiftFraction(autoAlignFraction, anchor);\n textPadShift = textShift;\n posPx.text = basePx + textShift;\n }\n\n posPx.text += overallShift;\n textShift += overallShift;\n textPadShift += overallShift;\n\n // padplus/minus are used by autorange\n options['_' + axLetter + 'padplus'] = (annSize / 2) + textPadShift;\n options['_' + axLetter + 'padminus'] = (annSize / 2) - textPadShift;\n\n // size/shift are used during dragging\n options['_' + axLetter + 'size'] = annSize;\n options['_' + axLetter + 'shift'] = textShift;\n }\n\n if(annotationIsOffscreen) {\n annTextGroupInner.remove();\n return;\n }\n\n var xShift = 0;\n var yShift = 0;\n\n if(options.align !== 'left') {\n xShift = (annWidth - textWidth) * (options.align === 'center' ? 0.5 : 1);\n }\n if(options.valign !== 'top') {\n yShift = (annHeight - textHeight) * (options.valign === 'middle' ? 0.5 : 1);\n }\n\n if(hasMathjax) {\n mathjaxGroup.select('svg').attr({\n x: borderfull + xShift - 1,\n y: borderfull + yShift\n })\n .call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n } else {\n var texty = borderfull + yShift - anntextBB.top;\n var textx = borderfull + xShift - anntextBB.left;\n\n annText.call(svgTextUtils.positionText, textx, texty)\n .call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n }\n\n annTextClip.select('rect').call(Drawing.setRect, borderfull, borderfull,\n annWidth, annHeight);\n\n annTextBG.call(Drawing.setRect, borderwidth / 2, borderwidth / 2,\n outerWidth - borderwidth, outerHeight - borderwidth);\n\n annTextGroupInner.call(Drawing.setTranslate,\n Math.round(annPosPx.x.text - outerWidth / 2),\n Math.round(annPosPx.y.text - outerHeight / 2));\n\n /*\n * rotate text and background\n * we already calculated the text center position *as rotated*\n * because we needed that for autoranging anyway, so now whether\n * we have an arrow or not, we rotate about the text center.\n */\n annTextGroup.attr({transform: 'rotate(' + textangle + ',' +\n annPosPx.x.text + ',' + annPosPx.y.text + ')'});\n\n /*\n * add the arrow\n * uses options[arrowwidth,arrowcolor,arrowhead] for styling\n * dx and dy are normally zero, but when you are dragging the textbox\n * while the head stays put, dx and dy are the pixel offsets\n */\n var drawArrow = function(dx, dy) {\n annGroup\n .selectAll('.annotation-arrow-g')\n .remove();\n\n var headX = annPosPx.x.head;\n var headY = annPosPx.y.head;\n var tailX = annPosPx.x.tail + dx;\n var tailY = annPosPx.y.tail + dy;\n var textX = annPosPx.x.text + dx;\n var textY = annPosPx.y.text + dy;\n\n // find the edge of the text box, where we'll start the arrow:\n // create transform matrix to rotate the text box corners\n var transform = Lib.rotationXYMatrix(textangle, textX, textY);\n var applyTransform = Lib.apply2DTransform(transform);\n var applyTransform2 = Lib.apply2DTransform2(transform);\n\n // calculate and transform bounding box\n var width = +annTextBG.attr('width');\n var height = +annTextBG.attr('height');\n var xLeft = textX - 0.5 * width;\n var xRight = xLeft + width;\n var yTop = textY - 0.5 * height;\n var yBottom = yTop + height;\n var edges = [\n [xLeft, yTop, xLeft, yBottom],\n [xLeft, yBottom, xRight, yBottom],\n [xRight, yBottom, xRight, yTop],\n [xRight, yTop, xLeft, yTop]\n ].map(applyTransform2);\n\n // Remove the line if it ends inside the box. Use ray\n // casting for rotated boxes: see which edges intersect a\n // line from the arrowhead to far away and reduce with xor\n // to get the parity of the number of intersections.\n if(edges.reduce(function(a, x) {\n return a ^\n !!Lib.segmentsIntersect(headX, headY, headX + 1e6, headY + 1e6,\n x[0], x[1], x[2], x[3]);\n }, false)) {\n // no line or arrow - so quit drawArrow now\n return;\n }\n\n edges.forEach(function(x) {\n var p = Lib.segmentsIntersect(tailX, tailY, headX, headY,\n x[0], x[1], x[2], x[3]);\n if(p) {\n tailX = p.x;\n tailY = p.y;\n }\n });\n\n var strokewidth = options.arrowwidth;\n var arrowColor = options.arrowcolor;\n var arrowSide = options.arrowside;\n\n var arrowGroup = annGroup.append('g')\n .style({opacity: Color.opacity(arrowColor)})\n .classed('annotation-arrow-g', true);\n\n var arrow = arrowGroup.append('path')\n .attr('d', 'M' + tailX + ',' + tailY + 'L' + headX + ',' + headY)\n .style('stroke-width', strokewidth + 'px')\n .call(Color.stroke, Color.rgb(arrowColor));\n\n drawArrowHead(arrow, arrowSide, options);\n\n // the arrow dragger is a small square right at the head, then a line to the tail,\n // all expanded by a stroke width of 6px plus the arrow line width\n if(edits.annotationPosition && arrow.node().parentNode && !subplotId) {\n var arrowDragHeadX = headX;\n var arrowDragHeadY = headY;\n if(options.standoff) {\n var arrowLength = Math.sqrt(Math.pow(headX - tailX, 2) + Math.pow(headY - tailY, 2));\n arrowDragHeadX += options.standoff * (tailX - headX) / arrowLength;\n arrowDragHeadY += options.standoff * (tailY - headY) / arrowLength;\n }\n var arrowDrag = arrowGroup.append('path')\n .classed('annotation-arrow', true)\n .classed('anndrag', true)\n .classed('cursor-move', true)\n .attr({\n d: 'M3,3H-3V-3H3ZM0,0L' + (tailX - arrowDragHeadX) + ',' + (tailY - arrowDragHeadY),\n transform: strTranslate(arrowDragHeadX, arrowDragHeadY)\n })\n .style('stroke-width', (strokewidth + 6) + 'px')\n .call(Color.stroke, 'rgba(0,0,0,0)')\n .call(Color.fill, 'rgba(0,0,0,0)');\n\n var annx0, anny0;\n\n // dragger for the arrow & head: translates the whole thing\n // (head/tail/text) all together\n dragElement.init({\n element: arrowDrag.node(),\n gd: gd,\n prepFn: function() {\n var pos = Drawing.getTranslate(annTextGroupInner);\n\n annx0 = pos.x;\n anny0 = pos.y;\n if(xa && xa.autorange) {\n modifyBase(xa._name + '.autorange', true);\n }\n if(ya && ya.autorange) {\n modifyBase(ya._name + '.autorange', true);\n }\n },\n moveFn: function(dx, dy) {\n var annxy0 = applyTransform(annx0, anny0);\n var xcenter = annxy0[0] + dx;\n var ycenter = annxy0[1] + dy;\n annTextGroupInner.call(Drawing.setTranslate, xcenter, ycenter);\n\n modifyItem('x',\n shiftPosition(xa, dx, 'x', gs, options));\n modifyItem('y',\n shiftPosition(ya, dy, 'y', gs, options));\n\n // for these 2 calls to shiftPosition, it is assumed xa, ya are\n // defined, so gsDim will not be used, but we put it in\n // anyways for consistency\n if(options.axref === options.xref) {\n modifyItem('ax', shiftPosition(xa, dx, 'ax', gs, options));\n }\n\n if(options.ayref === options.yref) {\n modifyItem('ay', shiftPosition(ya, dy, 'ay', gs, options));\n }\n\n arrowGroup.attr('transform', strTranslate(dx, dy));\n annTextGroup.attr({\n transform: 'rotate(' + textangle + ',' +\n xcenter + ',' + ycenter + ')'\n });\n },\n doneFn: function() {\n Registry.call('_guiRelayout', gd, getUpdateObj());\n var notesBox = document.querySelector('.js-notes-box-panel');\n if(notesBox) notesBox.redraw(notesBox.selectedObj);\n }\n });\n }\n };\n\n if(options.showarrow) drawArrow(0, 0);\n\n // user dragging the annotation (text, not arrow)\n if(editTextPosition) {\n var baseTextTransform;\n\n // dragger for the textbox: if there's an arrow, just drag the\n // textbox and tail, leave the head untouched\n dragElement.init({\n element: annTextGroupInner.node(),\n gd: gd,\n prepFn: function() {\n baseTextTransform = annTextGroup.attr('transform');\n },\n moveFn: function(dx, dy) {\n var csr = 'pointer';\n if(options.showarrow) {\n // for these 2 calls to shiftPosition, it is assumed xa, ya are\n // defined, so gsDim will not be used, but we put it in\n // anyways for consistency\n if(options.axref === options.xref) {\n modifyItem('ax', shiftPosition(xa, dx, 'ax', gs, options));\n } else {\n modifyItem('ax', options.ax + dx);\n }\n\n if(options.ayref === options.yref) {\n modifyItem('ay', shiftPosition(ya, dy, 'ay', gs.w, options));\n } else {\n modifyItem('ay', options.ay + dy);\n }\n\n drawArrow(dx, dy);\n } else if(!subplotId) {\n var xUpdate, yUpdate;\n if(xa) {\n // shiftPosition will not execute code where xa was\n // undefined, so we use to calculate xUpdate too\n xUpdate = shiftPosition(xa, dx, 'x', gs, options);\n } else {\n var widthFraction = options._xsize / gs.w;\n var xLeft = options.x + (options._xshift - options.xshift) / gs.w - widthFraction / 2;\n\n xUpdate = dragElement.align(xLeft + dx / gs.w,\n widthFraction, 0, 1, options.xanchor);\n }\n\n if(ya) {\n // shiftPosition will not execute code where ya was\n // undefined, so we use to calculate yUpdate too\n yUpdate = shiftPosition(ya, dy, 'y', gs, options);\n } else {\n var heightFraction = options._ysize / gs.h;\n var yBottom = options.y - (options._yshift + options.yshift) / gs.h - heightFraction / 2;\n\n yUpdate = dragElement.align(yBottom - dy / gs.h,\n heightFraction, 0, 1, options.yanchor);\n }\n modifyItem('x', xUpdate);\n modifyItem('y', yUpdate);\n if(!xa || !ya) {\n csr = dragElement.getCursor(\n xa ? 0.5 : xUpdate,\n ya ? 0.5 : yUpdate,\n options.xanchor, options.yanchor\n );\n }\n } else return;\n\n annTextGroup.attr({\n transform: strTranslate(dx, dy) + baseTextTransform\n });\n\n setCursor(annTextGroupInner, csr);\n },\n clickFn: function(_, initialEvent) {\n if(options.captureevents) {\n gd.emit('plotly_clickannotation', makeEventData(initialEvent));\n }\n },\n doneFn: function() {\n setCursor(annTextGroupInner);\n Registry.call('_guiRelayout', gd, getUpdateObj());\n var notesBox = document.querySelector('.js-notes-box-panel');\n if(notesBox) notesBox.redraw(notesBox.selectedObj);\n }\n });\n }\n }\n\n if(edits.annotationText) {\n annText.call(svgTextUtils.makeEditable, {delegate: annTextGroupInner, gd: gd})\n .call(textLayout)\n .on('edit', function(_text) {\n options.text = _text;\n\n this.call(textLayout);\n\n modifyItem('text', _text);\n\n if(xa && xa.autorange) {\n modifyBase(xa._name + '.autorange', true);\n }\n if(ya && ya.autorange) {\n modifyBase(ya._name + '.autorange', true);\n }\n\n Registry.call('_guiRelayout', gd, getUpdateObj());\n });\n } else annText.call(textLayout);\n}\n","'use strict';\n\nvar d3 = require('@plotly/d3');\n\nvar Color = require('../color');\n\nvar ARROWPATHS = require('./arrow_paths');\n\nvar Lib = require('../../lib');\nvar strScale = Lib.strScale;\nvar strRotate = Lib.strRotate;\nvar strTranslate = Lib.strTranslate;\n\n/**\n * Add arrowhead(s) to a path or line element\n *\n * @param {d3.selection} el3: a d3-selected line or path element\n *\n * @param {string} ends: 'none', 'start', 'end', or 'start+end' for which ends get arrowheads\n *\n * @param {object} options: style information. Must have all the following:\n * @param {number} options.arrowhead: end head style - see ./arrow_paths\n * @param {number} options.startarrowhead: start head style - see ./arrow_paths\n * @param {number} options.arrowsize: relative size of the end head vs line width\n * @param {number} options.startarrowsize: relative size of the start head vs line width\n * @param {number} options.standoff: distance in px to move the end arrow point from its target\n * @param {number} options.startstandoff: distance in px to move the start arrow point from its target\n * @param {number} options.arrowwidth: width of the arrow line\n * @param {string} options.arrowcolor: color of the arrow line, for the head to match\n * Note that the opacity of this color is ignored, as it's assumed the container\n * of both the line and head has opacity applied to it so there isn't greater opacity\n * where they overlap.\n */\nmodule.exports = function drawArrowHead(el3, ends, options) {\n var el = el3.node();\n var headStyle = ARROWPATHS[options.arrowhead || 0];\n var startHeadStyle = ARROWPATHS[options.startarrowhead || 0];\n var scale = (options.arrowwidth || 1) * (options.arrowsize || 1);\n var startScale = (options.arrowwidth || 1) * (options.startarrowsize || 1);\n var doStart = ends.indexOf('start') >= 0;\n var doEnd = ends.indexOf('end') >= 0;\n var backOff = headStyle.backoff * scale + options.standoff;\n var startBackOff = startHeadStyle.backoff * startScale + options.startstandoff;\n\n var start, end, startRot, endRot;\n\n if(el.nodeName === 'line') {\n start = {x: +el3.attr('x1'), y: +el3.attr('y1')};\n end = {x: +el3.attr('x2'), y: +el3.attr('y2')};\n\n var dx = start.x - end.x;\n var dy = start.y - end.y;\n\n startRot = Math.atan2(dy, dx);\n endRot = startRot + Math.PI;\n if(backOff && startBackOff) {\n if(backOff + startBackOff > Math.sqrt(dx * dx + dy * dy)) {\n hideLine();\n return;\n }\n }\n\n if(backOff) {\n if(backOff * backOff > dx * dx + dy * dy) {\n hideLine();\n return;\n }\n var backOffX = backOff * Math.cos(startRot);\n var backOffY = backOff * Math.sin(startRot);\n\n end.x += backOffX;\n end.y += backOffY;\n el3.attr({x2: end.x, y2: end.y});\n }\n\n if(startBackOff) {\n if(startBackOff * startBackOff > dx * dx + dy * dy) {\n hideLine();\n return;\n }\n var startBackOffX = startBackOff * Math.cos(startRot);\n var startbackOffY = startBackOff * Math.sin(startRot);\n\n start.x -= startBackOffX;\n start.y -= startbackOffY;\n el3.attr({x1: start.x, y1: start.y});\n }\n } else if(el.nodeName === 'path') {\n var pathlen = el.getTotalLength();\n // using dash to hide the backOff region of the path.\n // if we ever allow dash for the arrow we'll have to\n // do better than this hack... maybe just manually\n // combine the two\n var dashArray = '';\n\n if(pathlen < backOff + startBackOff) {\n hideLine();\n return;\n }\n\n\n var start0 = el.getPointAtLength(0);\n var dstart = el.getPointAtLength(0.1);\n\n startRot = Math.atan2(start0.y - dstart.y, start0.x - dstart.x);\n start = el.getPointAtLength(Math.min(startBackOff, pathlen));\n\n dashArray = '0px,' + startBackOff + 'px,';\n\n var end0 = el.getPointAtLength(pathlen);\n var dend = el.getPointAtLength(pathlen - 0.1);\n\n endRot = Math.atan2(end0.y - dend.y, end0.x - dend.x);\n end = el.getPointAtLength(Math.max(0, pathlen - backOff));\n\n var shortening = dashArray ? startBackOff + backOff : backOff;\n dashArray += (pathlen - shortening) + 'px,' + pathlen + 'px';\n\n el3.style('stroke-dasharray', dashArray);\n }\n\n function hideLine() { el3.style('stroke-dasharray', '0px,100px'); }\n\n function drawhead(arrowHeadStyle, p, rot, arrowScale) {\n if(!arrowHeadStyle.path) return;\n if(arrowHeadStyle.noRotate) rot = 0;\n\n d3.select(el.parentNode).append('path')\n .attr({\n class: el3.attr('class'),\n d: arrowHeadStyle.path,\n transform:\n strTranslate(p.x, p.y) +\n strRotate(rot * 180 / Math.PI) +\n strScale(arrowScale)\n })\n .style({\n fill: Color.rgb(options.arrowcolor),\n 'stroke-width': 0\n });\n }\n\n if(doStart) drawhead(startHeadStyle, start, startRot, startScale);\n if(doEnd) drawhead(headStyle, end, endRot, scale);\n};\n","'use strict';\n\nvar drawModule = require('./draw');\nvar clickModule = require('./click');\n\nmodule.exports = {\n moduleType: 'component',\n name: 'annotations',\n\n layoutAttributes: require('./attributes'),\n supplyLayoutDefaults: require('./defaults'),\n includeBasePlot: require('../../plots/cartesian/include_components')('annotations'),\n\n calcAutorange: require('./calc_autorange'),\n draw: drawModule.draw,\n drawOne: drawModule.drawOne,\n drawRaw: drawModule.drawRaw,\n\n hasClickToShow: clickModule.hasClickToShow,\n onClick: clickModule.onClick,\n\n convertCoords: require('./convert_coords')\n};\n","'use strict';\n\n\n// IMPORTANT - default colors should be in hex for compatibility\nexports.defaults = [\n '#1f77b4', // muted blue\n '#ff7f0e', // safety orange\n '#2ca02c', // cooked asparagus green\n '#d62728', // brick red\n '#9467bd', // muted purple\n '#8c564b', // chestnut brown\n '#e377c2', // raspberry yogurt pink\n '#7f7f7f', // middle gray\n '#bcbd22', // curry yellow-green\n '#17becf' // blue-teal\n];\n\nexports.defaultLine = '#444';\n\nexports.lightLine = '#eee';\n\nexports.background = '#fff';\n\nexports.borderLine = '#BEC8D9';\n\n// with axis.color and Color.interp we aren't using lightLine\n// itself anymore, instead interpolating between axis.color\n// and the background color using tinycolor.mix. lightFraction\n// gives back exactly lightLine if the other colors are defaults.\nexports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4);\n","'use strict';\n\nvar tinycolor = require('tinycolor2');\nvar isNumeric = require('fast-isnumeric');\nvar isTypedArray = require('../../lib/array').isTypedArray;\n\nvar color = module.exports = {};\n\nvar colorAttrs = require('./attributes');\ncolor.defaults = colorAttrs.defaults;\nvar defaultLine = color.defaultLine = colorAttrs.defaultLine;\ncolor.lightLine = colorAttrs.lightLine;\nvar background = color.background = colorAttrs.background;\n\n/*\n * tinyRGB: turn a tinycolor into an rgb string, but\n * unlike the built-in tinycolor.toRgbString this never includes alpha\n */\ncolor.tinyRGB = function(tc) {\n var c = tc.toRgb();\n return 'rgb(' + Math.round(c.r) + ', ' +\n Math.round(c.g) + ', ' + Math.round(c.b) + ')';\n};\n\ncolor.rgb = function(cstr) { return color.tinyRGB(tinycolor(cstr)); };\n\ncolor.opacity = function(cstr) { return cstr ? tinycolor(cstr).getAlpha() : 0; };\n\ncolor.addOpacity = function(cstr, op) {\n var c = tinycolor(cstr).toRgb();\n return 'rgba(' + Math.round(c.r) + ', ' +\n Math.round(c.g) + ', ' + Math.round(c.b) + ', ' + op + ')';\n};\n\n// combine two colors into one apparent color\n// if back has transparency or is missing,\n// color.background is assumed behind it\ncolor.combine = function(front, back) {\n var fc = tinycolor(front).toRgb();\n if(fc.a === 1) return tinycolor(front).toRgbString();\n\n var bc = tinycolor(back || background).toRgb();\n var bcflat = bc.a === 1 ? bc : {\n r: 255 * (1 - bc.a) + bc.r * bc.a,\n g: 255 * (1 - bc.a) + bc.g * bc.a,\n b: 255 * (1 - bc.a) + bc.b * bc.a\n };\n var fcflat = {\n r: bcflat.r * (1 - fc.a) + fc.r * fc.a,\n g: bcflat.g * (1 - fc.a) + fc.g * fc.a,\n b: bcflat.b * (1 - fc.a) + fc.b * fc.a\n };\n return tinycolor(fcflat).toRgbString();\n};\n\n/*\n * Create a color that contrasts with cstr.\n *\n * If cstr is a dark color, we lighten it; if it's light, we darken.\n *\n * If lightAmount / darkAmount are used, we adjust by these percentages,\n * otherwise we go all the way to white or black.\n */\ncolor.contrast = function(cstr, lightAmount, darkAmount) {\n var tc = tinycolor(cstr);\n\n if(tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background));\n\n var newColor = tc.isDark() ?\n (lightAmount ? tc.lighten(lightAmount) : background) :\n (darkAmount ? tc.darken(darkAmount) : defaultLine);\n\n return newColor.toString();\n};\n\ncolor.stroke = function(s, c) {\n var tc = tinycolor(c);\n s.style({stroke: color.tinyRGB(tc), 'stroke-opacity': tc.getAlpha()});\n};\n\ncolor.fill = function(s, c) {\n var tc = tinycolor(c);\n s.style({\n fill: color.tinyRGB(tc),\n 'fill-opacity': tc.getAlpha()\n });\n};\n\n// search container for colors with the deprecated rgb(fractions) format\n// and convert them to rgb(0-255 values)\ncolor.clean = function(container) {\n if(!container || typeof container !== 'object') return;\n\n var keys = Object.keys(container);\n var i, j, key, val;\n\n for(i = 0; i < keys.length; i++) {\n key = keys[i];\n val = container[key];\n\n if(key.substr(key.length - 5) === 'color') {\n // only sanitize keys that end in \"color\" or \"colorscale\"\n\n if(Array.isArray(val)) {\n for(j = 0; j < val.length; j++) val[j] = cleanOne(val[j]);\n } else container[key] = cleanOne(val);\n } else if(key.substr(key.length - 10) === 'colorscale' && Array.isArray(val)) {\n // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]]\n\n for(j = 0; j < val.length; j++) {\n if(Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]);\n }\n } else if(Array.isArray(val)) {\n // recurse into arrays of objects, and plain objects\n\n var el0 = val[0];\n if(!Array.isArray(el0) && el0 && typeof el0 === 'object') {\n for(j = 0; j < val.length; j++) color.clean(val[j]);\n }\n } else if(val && typeof val === 'object' && !isTypedArray(val)) color.clean(val);\n }\n};\n\nfunction cleanOne(val) {\n if(isNumeric(val) || typeof val !== 'string') return val;\n\n var valTrim = val.trim();\n if(valTrim.substr(0, 3) !== 'rgb') return val;\n\n var match = valTrim.match(/^rgba?\\s*\\(([^()]*)\\)$/);\n if(!match) return val;\n\n var parts = match[1].trim().split(/\\s*[\\s,]\\s*/);\n var rgba = valTrim.charAt(3) === 'a' && parts.length === 4;\n if(!rgba && parts.length !== 3) return val;\n\n for(var i = 0; i < parts.length; i++) {\n if(!parts[i].length) return val;\n parts[i] = Number(parts[i]);\n\n if(!(parts[i] >= 0)) {\n // all parts must be non-negative numbers\n\n return val;\n }\n\n if(i === 3) {\n // alpha>1 gets clipped to 1\n\n if(parts[i] > 1) parts[i] = 1;\n } else if(parts[i] >= 1) {\n // r, g, b must be < 1 (ie 1 itself is not allowed)\n\n return val;\n }\n }\n\n var rgbStr = Math.round(parts[0] * 255) + ', ' +\n Math.round(parts[1] * 255) + ', ' +\n Math.round(parts[2] * 255);\n\n if(rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')';\n return 'rgb(' + rgbStr + ')';\n}\n","'use strict';\n\nvar axesAttrs = require('../../plots/cartesian/layout_attributes');\nvar fontAttrs = require('../../plots/font_attributes');\nvar extendFlat = require('../../lib/extend').extendFlat;\nvar overrideAll = require('../../plot_api/edit_types').overrideAll;\n\n\nmodule.exports = overrideAll({\n orientation: {\n valType: 'enumerated',\n values: ['h', 'v'],\n dflt: 'v',\n description: 'Sets the orientation of the colorbar.'\n },\n thicknessmode: {\n valType: 'enumerated',\n values: ['fraction', 'pixels'],\n dflt: 'pixels',\n description: [\n 'Determines whether this color bar\\'s thickness',\n '(i.e. the measure in the constant color direction)',\n 'is set in units of plot *fraction* or in *pixels*.',\n 'Use `thickness` to set the value.'\n ].join(' ')\n },\n thickness: {\n valType: 'number',\n min: 0,\n dflt: 30,\n description: [\n 'Sets the thickness of the color bar',\n 'This measure excludes the size of the padding, ticks and labels.'\n ].join(' ')\n },\n lenmode: {\n valType: 'enumerated',\n values: ['fraction', 'pixels'],\n dflt: 'fraction',\n description: [\n 'Determines whether this color bar\\'s length',\n '(i.e. the measure in the color variation direction)',\n 'is set in units of plot *fraction* or in *pixels.',\n 'Use `len` to set the value.'\n ].join(' ')\n },\n len: {\n valType: 'number',\n min: 0,\n dflt: 1,\n description: [\n 'Sets the length of the color bar',\n 'This measure excludes the padding of both ends.',\n 'That is, the color bar length is this length minus the',\n 'padding on both ends.'\n ].join(' ')\n },\n x: {\n valType: 'number',\n description: [\n 'Sets the x position with respect to `xref` of the color bar (in plot fraction).',\n 'When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and',\n '0.5 when `orientation` is *h*.',\n 'When `xref` is *container*, defaults to *1* when `orientation` is *v* and',\n '0.5 when `orientation` is *h*.',\n 'Must be between *0* and *1* if `xref` is *container*',\n 'and between *-2* and *3* if `xref` is *paper*.'\n ].join(' ')\n },\n xref: {\n valType: 'enumerated',\n dflt: 'paper',\n values: ['container', 'paper'],\n editType: 'layoutstyle',\n description: [\n 'Sets the container `x` refers to.',\n '*container* spans the entire `width` of the plot.',\n '*paper* refers to the width of the plotting area only.'\n ].join(' ')\n },\n xanchor: {\n valType: 'enumerated',\n values: ['left', 'center', 'right'],\n description: [\n 'Sets this color bar\\'s horizontal position anchor.',\n 'This anchor binds the `x` position to the *left*, *center*',\n 'or *right* of the color bar.',\n 'Defaults to *left* when `orientation` is *v* and',\n '*center* when `orientation` is *h*.'\n ].join(' ')\n },\n xpad: {\n valType: 'number',\n min: 0,\n dflt: 10,\n description: 'Sets the amount of padding (in px) along the x direction.'\n },\n y: {\n valType: 'number',\n description: [\n 'Sets the y position with respect to `yref` of the color bar (in plot fraction).',\n 'When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and',\n '1.02 when `orientation` is *h*.',\n 'When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and',\n '1 when `orientation` is *h*.',\n 'Must be between *0* and *1* if `yref` is *container*',\n 'and between *-2* and *3* if `yref` is *paper*.'\n ].join(' ')\n },\n yref: {\n valType: 'enumerated',\n dflt: 'paper',\n values: ['container', 'paper'],\n editType: 'layoutstyle',\n description: [\n 'Sets the container `y` refers to.',\n '*container* spans the entire `height` of the plot.',\n '*paper* refers to the height of the plotting area only.'\n ].join(' '),\n },\n yanchor: {\n valType: 'enumerated',\n values: ['top', 'middle', 'bottom'],\n description: [\n 'Sets this color bar\\'s vertical position anchor',\n 'This anchor binds the `y` position to the *top*, *middle*',\n 'or *bottom* of the color bar.',\n 'Defaults to *middle* when `orientation` is *v* and',\n '*bottom* when `orientation` is *h*.'\n ].join(' ')\n },\n ypad: {\n valType: 'number',\n min: 0,\n dflt: 10,\n description: 'Sets the amount of padding (in px) along the y direction.'\n },\n // a possible line around the bar itself\n outlinecolor: axesAttrs.linecolor,\n outlinewidth: axesAttrs.linewidth,\n // Should outlinewidth have {dflt: 0} ?\n // another possible line outside the padding and tick labels\n bordercolor: axesAttrs.linecolor,\n borderwidth: {\n valType: 'number',\n min: 0,\n dflt: 0,\n description: [\n 'Sets the width (in px) or the border enclosing this color bar.'\n ].join(' ')\n },\n bgcolor: {\n valType: 'color',\n dflt: 'rgba(0,0,0,0)',\n description: 'Sets the color of padded area.'\n },\n // tick and title properties named and function exactly as in axes\n tickmode: axesAttrs.minor.tickmode,\n nticks: axesAttrs.nticks,\n tick0: axesAttrs.tick0,\n dtick: axesAttrs.dtick,\n tickvals: axesAttrs.tickvals,\n ticktext: axesAttrs.ticktext,\n ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}),\n ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, {\n description: [\n 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.',\n 'The default value for inside tick labels is *hide past domain*.',\n 'In other cases the default is *hide past div*.'\n ].join(' ')\n }),\n\n // ticklabelposition: not used directly, as values depend on orientation\n // left/right options are for x axes, and top/bottom options are for y axes\n ticklabelposition: {\n valType: 'enumerated',\n values: [\n 'outside', 'inside',\n 'outside top', 'inside top',\n 'outside left', 'inside left',\n 'outside right', 'inside right',\n 'outside bottom', 'inside bottom'\n ],\n dflt: 'outside',\n description: [\n 'Determines where tick labels are drawn relative to the ticks.',\n 'Left and right options are used when `orientation` is *h*,',\n 'top and bottom when `orientation` is *v*.'\n ].join(' ')\n },\n\n ticklen: axesAttrs.ticklen,\n tickwidth: axesAttrs.tickwidth,\n tickcolor: axesAttrs.tickcolor,\n ticklabelstep: axesAttrs.ticklabelstep,\n showticklabels: axesAttrs.showticklabels,\n labelalias: axesAttrs.labelalias,\n tickfont: fontAttrs({\n description: 'Sets the color bar\\'s tick label font'\n }),\n tickangle: axesAttrs.tickangle,\n tickformat: axesAttrs.tickformat,\n tickformatstops: axesAttrs.tickformatstops,\n tickprefix: axesAttrs.tickprefix,\n showtickprefix: axesAttrs.showtickprefix,\n ticksuffix: axesAttrs.ticksuffix,\n showticksuffix: axesAttrs.showticksuffix,\n separatethousands: axesAttrs.separatethousands,\n exponentformat: axesAttrs.exponentformat,\n minexponent: axesAttrs.minexponent,\n showexponent: axesAttrs.showexponent,\n title: {\n text: {\n valType: 'string',\n description: [\n 'Sets the title of the color bar.',\n 'Note that before the existence of `title.text`, the title\\'s',\n 'contents used to be defined as the `title` attribute itself.',\n 'This behavior has been deprecated.'\n ].join(' ')\n },\n font: fontAttrs({\n description: [\n 'Sets this color bar\\'s title font.',\n 'Note that the title\\'s font used to be set',\n 'by the now deprecated `titlefont` attribute.'\n ].join(' ')\n }),\n side: {\n valType: 'enumerated',\n values: ['right', 'top', 'bottom'],\n description: [\n 'Determines the location of color bar\\'s title',\n 'with respect to the color bar.',\n 'Defaults to *top* when `orientation` if *v* and ',\n 'defaults to *right* when `orientation` if *h*.',\n 'Note that the title\\'s location used to be set',\n 'by the now deprecated `titleside` attribute.'\n ].join(' ')\n }\n },\n\n _deprecated: {\n title: {\n valType: 'string',\n description: [\n 'Deprecated in favor of color bar\\'s `title.text`.',\n 'Note that value of color bar\\'s `title` is no longer a simple',\n '*string* but a set of sub-attributes.'\n ].join(' ')\n },\n titlefont: fontAttrs({\n description: 'Deprecated in favor of color bar\\'s `title.font`.'\n }),\n titleside: {\n valType: 'enumerated',\n values: ['right', 'top', 'bottom'],\n dflt: 'top',\n description: 'Deprecated in favor of color bar\\'s `title.side`.'\n }\n }\n}, 'colorbars', 'from-root');\n","'use strict';\n\nmodule.exports = {\n cn: {\n colorbar: 'colorbar',\n cbbg: 'cbbg',\n cbfill: 'cbfill',\n cbfills: 'cbfills',\n cbline: 'cbline',\n cblines: 'cblines',\n cbaxis: 'cbaxis',\n cbtitleunshift: 'cbtitleunshift',\n cbtitle: 'cbtitle',\n cboutline: 'cboutline',\n crisp: 'crisp',\n jsPlaceholder: 'js-placeholder'\n }\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Template = require('../../plot_api/plot_template');\n\nvar handleTickValueDefaults = require('../../plots/cartesian/tick_value_defaults');\nvar handleTickMarkDefaults = require('../../plots/cartesian/tick_mark_defaults');\nvar handleTickLabelDefaults = require('../../plots/cartesian/tick_label_defaults');\nvar handlePrefixSuffixDefaults = require('../../plots/cartesian/prefix_suffix_defaults');\n\nvar attributes = require('./attributes');\n\nmodule.exports = function colorbarDefaults(containerIn, containerOut, layout) {\n var colorbarOut = Template.newContainer(containerOut, 'colorbar');\n var colorbarIn = containerIn.colorbar || {};\n\n function coerce(attr, dflt) {\n return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);\n }\n\n var margin = layout.margin || {t: 0, b: 0, l: 0, r: 0};\n var w = layout.width - margin.l - margin.r;\n var h = layout.height - margin.t - margin.b;\n\n var orientation = coerce('orientation');\n var isVertical = orientation === 'v';\n\n var thicknessmode = coerce('thicknessmode');\n coerce('thickness', (thicknessmode === 'fraction') ?\n 30 / (isVertical ? w : h) :\n 30\n );\n\n var lenmode = coerce('lenmode');\n coerce('len', (lenmode === 'fraction') ?\n 1 :\n isVertical ? h : w\n );\n\n var yref = coerce('yref');\n var xref = coerce('xref');\n\n var isPaperY = yref === 'paper';\n var isPaperX = xref === 'paper';\n\n var defaultX, defaultY, defaultYAnchor;\n var defaultXAnchor = 'left';\n\n if(isVertical) {\n defaultYAnchor = 'middle';\n defaultXAnchor = isPaperX ? 'left' : 'right';\n defaultX = isPaperX ? 1.02 : 1;\n defaultY = 0.5;\n } else {\n defaultYAnchor = isPaperY ? 'bottom' : 'top';\n defaultXAnchor = 'center';\n defaultX = 0.5;\n defaultY = isPaperY ? 1.02 : 1;\n }\n\n Lib.coerce(colorbarIn, colorbarOut, {\n x: {\n valType: 'number',\n min: isPaperX ? -2 : 0,\n max: isPaperX ? 3 : 1,\n dflt: defaultX,\n }\n }, 'x');\n\n Lib.coerce(colorbarIn, colorbarOut, {\n y: {\n valType: 'number',\n min: isPaperY ? -2 : 0,\n max: isPaperY ? 3 : 1,\n dflt: defaultY,\n }\n }, 'y');\n\n coerce('xanchor', defaultXAnchor);\n coerce('xpad');\n coerce('yanchor', defaultYAnchor);\n coerce('ypad');\n Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']);\n\n coerce('outlinecolor');\n coerce('outlinewidth');\n coerce('bordercolor');\n coerce('borderwidth');\n coerce('bgcolor');\n\n var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, {\n ticklabelposition: {\n valType: 'enumerated',\n dflt: 'outside',\n values: isVertical ? [\n 'outside', 'inside',\n 'outside top', 'inside top',\n 'outside bottom', 'inside bottom'\n ] : [\n 'outside', 'inside',\n 'outside left', 'inside left',\n 'outside right', 'inside right'\n ]\n }\n }, 'ticklabelposition');\n\n coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div');\n\n handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear');\n\n var font = layout.font;\n var opts = {\n noAutotickangles: true,\n outerTicks: false,\n font: font\n };\n if(ticklabelposition.indexOf('inside') !== -1) {\n opts.bgColor = 'black'; // could we instead use the average of colors in the scale?\n }\n handlePrefixSuffixDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n handleTickLabelDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n\n coerce('title.text', layout._dfltTitle.colorbar);\n\n var tickFont = colorbarOut.showticklabels ? colorbarOut.tickfont : font;\n var dfltTitleFont = Lib.extendFlat({}, tickFont, {\n color: font.color,\n size: Lib.bigFont(tickFont.size)\n });\n Lib.coerceFont(coerce, 'title.font', dfltTitleFont);\n coerce('title.side', isVertical ? 'top' : 'right');\n};\n","'use strict';\n\nvar d3 = require('@plotly/d3');\nvar tinycolor = require('tinycolor2');\n\nvar Plots = require('../../plots/plots');\nvar Registry = require('../../registry');\nvar Axes = require('../../plots/cartesian/axes');\nvar dragElement = require('../dragelement');\nvar Lib = require('../../lib');\nvar strTranslate = Lib.strTranslate;\nvar extendFlat = require('../../lib/extend').extendFlat;\nvar setCursor = require('../../lib/setcursor');\nvar Drawing = require('../drawing');\nvar Color = require('../color');\nvar Titles = require('../titles');\nvar svgTextUtils = require('../../lib/svg_text_utils');\nvar flipScale = require('../colorscale/helpers').flipScale;\n\nvar handleAxisDefaults = require('../../plots/cartesian/axis_defaults');\nvar handleAxisPositionDefaults = require('../../plots/cartesian/position_defaults');\nvar axisLayoutAttrs = require('../../plots/cartesian/layout_attributes');\n\nvar alignmentConstants = require('../../constants/alignment');\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar FROM_TL = alignmentConstants.FROM_TL;\nvar FROM_BR = alignmentConstants.FROM_BR;\n\nvar cn = require('./constants').cn;\n\nfunction draw(gd) {\n var fullLayout = gd._fullLayout;\n\n var colorBars = fullLayout._infolayer\n .selectAll('g.' + cn.colorbar)\n .data(makeColorBarData(gd), function(opts) { return opts._id; });\n\n colorBars.enter().append('g')\n .attr('class', function(opts) { return opts._id; })\n .classed(cn.colorbar, true);\n\n colorBars.each(function(opts) {\n var g = d3.select(this);\n\n Lib.ensureSingle(g, 'rect', cn.cbbg);\n Lib.ensureSingle(g, 'g', cn.cbfills);\n Lib.ensureSingle(g, 'g', cn.cblines);\n Lib.ensureSingle(g, 'g', cn.cbaxis, function(s) { s.classed(cn.crisp, true); });\n Lib.ensureSingle(g, 'g', cn.cbtitleunshift, function(s) { s.append('g').classed(cn.cbtitle, true); });\n Lib.ensureSingle(g, 'rect', cn.cboutline);\n\n var done = drawColorBar(g, opts, gd);\n if(done && done.then) (gd._promises || []).push(done);\n\n if(gd._context.edits.colorbarPosition) {\n makeEditable(g, opts, gd);\n }\n });\n\n colorBars.exit()\n .each(function(opts) { Plots.autoMargin(gd, opts._id); })\n .remove();\n\n colorBars.order();\n}\n\nfunction makeColorBarData(gd) {\n var fullLayout = gd._fullLayout;\n var calcdata = gd.calcdata;\n var out = [];\n\n // single out item\n var opts;\n // colorbar attr parent container\n var cont;\n // trace attr container\n var trace;\n // colorbar options\n var cbOpt;\n\n function initOpts(opts) {\n return extendFlat(opts, {\n // fillcolor can be a d3 scale, domain is z values, range is colors\n // or leave it out for no fill,\n // or set to a string constant for single-color fill\n _fillcolor: null,\n // line.color has the same options as fillcolor\n _line: {color: null, width: null, dash: null},\n // levels of lines to draw.\n // note that this DOES NOT determine the extent of the bar\n // that's given by the domain of fillcolor\n // (or line.color if no fillcolor domain)\n _levels: {start: null, end: null, size: null},\n // separate fill levels (for example, heatmap coloring of a\n // contour map) if this is omitted, fillcolors will be\n // evaluated halfway between levels\n _filllevels: null,\n // for continuous colorscales: fill with a gradient instead of explicit levels\n // value should be the colorscale [[0, c0], [v1, c1], ..., [1, cEnd]]\n _fillgradient: null,\n // when using a gradient, we need the data range specified separately\n _zrange: null\n });\n }\n\n function calcOpts() {\n if(typeof cbOpt.calc === 'function') {\n cbOpt.calc(gd, trace, opts);\n } else {\n opts._fillgradient = cont.reversescale ?\n flipScale(cont.colorscale) :\n cont.colorscale;\n opts._zrange = [cont[cbOpt.min], cont[cbOpt.max]];\n }\n }\n\n for(var i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n trace = cd[0].trace;\n if(!trace._module) continue;\n var moduleOpts = trace._module.colorbar;\n\n if(trace.visible === true && moduleOpts) {\n var allowsMultiplotCbs = Array.isArray(moduleOpts);\n var cbOpts = allowsMultiplotCbs ? moduleOpts : [moduleOpts];\n\n for(var j = 0; j < cbOpts.length; j++) {\n cbOpt = cbOpts[j];\n var contName = cbOpt.container;\n cont = contName ? trace[contName] : trace;\n\n if(cont && cont.showscale) {\n opts = initOpts(cont.colorbar);\n opts._id = 'cb' + trace.uid + (allowsMultiplotCbs && contName ? '-' + contName : '');\n opts._traceIndex = trace.index;\n opts._propPrefix = (contName ? contName + '.' : '') + 'colorbar.';\n opts._meta = trace._meta;\n calcOpts();\n out.push(opts);\n }\n }\n }\n }\n\n for(var k in fullLayout._colorAxes) {\n cont = fullLayout[k];\n\n if(cont.showscale) {\n var colorAxOpts = fullLayout._colorAxes[k];\n\n opts = initOpts(cont.colorbar);\n opts._id = 'cb' + k;\n opts._propPrefix = k + '.colorbar.';\n opts._meta = fullLayout._meta;\n\n cbOpt = {min: 'cmin', max: 'cmax'};\n if(colorAxOpts[0] !== 'heatmap') {\n trace = colorAxOpts[1];\n cbOpt.calc = trace._module.colorbar.calc;\n }\n\n calcOpts();\n out.push(opts);\n }\n }\n\n return out;\n}\n\nfunction drawColorBar(g, opts, gd) {\n var isVertical = opts.orientation === 'v';\n var len = opts.len;\n var lenmode = opts.lenmode;\n var thickness = opts.thickness;\n var thicknessmode = opts.thicknessmode;\n var outlinewidth = opts.outlinewidth;\n var borderwidth = opts.borderwidth;\n var bgcolor = opts.bgcolor;\n var xanchor = opts.xanchor;\n var yanchor = opts.yanchor;\n var xpad = opts.xpad;\n var ypad = opts.ypad;\n var optsX = opts.x;\n var optsY = isVertical ? opts.y : 1 - opts.y;\n\n var isPaperY = opts.yref === 'paper';\n var isPaperX = opts.xref === 'paper';\n\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n\n var fillColor = opts._fillcolor;\n var line = opts._line;\n var title = opts.title;\n var titleSide = title.side;\n\n var zrange = opts._zrange ||\n d3.extent((typeof fillColor === 'function' ? fillColor : line.color).domain());\n\n var lineColormap = typeof line.color === 'function' ?\n line.color :\n function() { return line.color; };\n var fillColormap = typeof fillColor === 'function' ?\n fillColor :\n function() { return fillColor; };\n\n var levelsIn = opts._levels;\n var levelsOut = calcLevels(gd, opts, zrange);\n var fillLevels = levelsOut.fill;\n var lineLevels = levelsOut.line;\n\n // we calculate pixel sizes based on the specified graph size,\n // not the actual (in case something pushed the margins around)\n // which is a little odd but avoids an odd iterative effect\n // when the colorbar itself is pushing the margins.\n // but then the fractional size is calculated based on the\n // actual graph size, so that the axes will size correctly.\n var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? (isVertical ? gs.w : gs.h) : 1));\n var thickFrac = thickPx / (isVertical ? gs.w : gs.h);\n var lenPx = Math.round(len * (lenmode === 'fraction' ? (isVertical ? gs.h : gs.w) : 1));\n var lenFrac = lenPx / (isVertical ? gs.h : gs.w);\n\n var posW = isPaperX ? gs.w : gd._fullLayout.width;\n var posH = isPaperY ? gs.h : gd._fullLayout.height;\n\n // x positioning: do it initially just for left anchor,\n // then fix at the end (since we don't know the width yet)\n var uPx = Math.round(isVertical ?\n optsX * posW + xpad :\n optsY * posH + ypad\n );\n\n var xRatio = {center: 0.5, right: 1}[xanchor] || 0;\n var yRatio = {top: 1, middle: 0.5}[yanchor] || 0;\n\n // for dragging... this is getting a little muddled...\n var uFrac = isVertical ?\n optsX - xRatio * thickFrac :\n optsY - yRatio * thickFrac;\n\n // y/x positioning (for v/h) we can do correctly from the start\n var vFrac = isVertical ?\n optsY - yRatio * lenFrac :\n optsX - xRatio * lenFrac;\n\n var vPx = Math.round(isVertical ?\n posH * (1 - vFrac) :\n posW * vFrac\n );\n\n // stash a few things for makeEditable\n opts._lenFrac = lenFrac;\n opts._thickFrac = thickFrac;\n opts._uFrac = uFrac;\n opts._vFrac = vFrac;\n\n // stash mocked axis for contour label formatting\n var ax = opts._axis = mockColorBarAxis(gd, opts, zrange);\n\n // position can't go in through supplyDefaults\n // because that restricts it to [0,1]\n ax.position = thickFrac + (isVertical ?\n optsX + xpad / gs.w :\n optsY + ypad / gs.h\n );\n\n var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1;\n\n if(isVertical && topOrBottom) {\n ax.title.side = titleSide;\n ax.titlex = optsX + xpad / gs.w;\n ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h);\n }\n\n if(!isVertical && !topOrBottom) {\n ax.title.side = titleSide;\n ax.titley = optsY + ypad / gs.h;\n ax.titlex = vFrac + xpad / gs.w; // right side\n }\n\n if(line.color && opts.tickmode === 'auto') {\n ax.tickmode = 'linear';\n ax.tick0 = levelsIn.start;\n var dtick = levelsIn.size;\n // expand if too many contours, so we don't get too many ticks\n var autoNtick = Lib.constrain(lenPx / 50, 4, 15) + 1;\n var dtFactor = (zrange[1] - zrange[0]) / ((opts.nticks || autoNtick) * dtick);\n if(dtFactor > 1) {\n var dtexp = Math.pow(10, Math.floor(Math.log(dtFactor) / Math.LN10));\n dtick *= dtexp * Lib.roundUp(dtFactor / dtexp, [2, 5, 10]);\n // if the contours are at round multiples, reset tick0\n // so they're still at round multiples. Otherwise,\n // keep the first label on the first contour level\n if((Math.abs(levelsIn.start) / levelsIn.size + 1e-6) % 1 < 2e-6) {\n ax.tick0 = 0;\n }\n }\n ax.dtick = dtick;\n }\n\n // set domain after init, because we may want to\n // allow it outside [0,1]\n ax.domain = isVertical ? [\n vFrac + ypad / gs.h,\n vFrac + lenFrac - ypad / gs.h\n ] : [\n vFrac + xpad / gs.w,\n vFrac + lenFrac - xpad / gs.w\n ];\n\n ax.setScale();\n\n g.attr('transform', strTranslate(Math.round(gs.l), Math.round(gs.t)));\n\n var titleCont = g.select('.' + cn.cbtitleunshift)\n .attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t)));\n\n var ticklabelposition = ax.ticklabelposition;\n var titleFontSize = ax.title.font.size;\n\n var axLayer = g.select('.' + cn.cbaxis);\n var titleEl;\n var titleHeight = 0;\n var titleWidth = 0;\n\n function drawTitle(titleClass, titleOpts) {\n var dfltTitleOpts = {\n propContainer: ax,\n propName: opts._propPrefix + 'title',\n traceIndex: opts._traceIndex,\n _meta: opts._meta,\n placeholder: fullLayout._dfltTitle.colorbar,\n containerGroup: g.select('.' + cn.cbtitle)\n };\n\n // this class-to-rotate thing with convertToTspans is\n // getting hackier and hackier... delete groups with the\n // wrong class (in case earlier the colorbar was drawn on\n // a different side, I think?)\n var otherClass = titleClass.charAt(0) === 'h' ?\n titleClass.substr(1) :\n 'h' + titleClass;\n g.selectAll('.' + otherClass + ',.' + otherClass + '-math-group').remove();\n\n Titles.draw(gd, titleClass, extendFlat(dfltTitleOpts, titleOpts || {}));\n }\n\n function drawDummyTitle() {\n // draw the title so we know how much room it needs\n // when we squish the axis.\n // On vertical colorbars this only applies to top or bottom titles, not right side.\n // On horizontal colorbars this only applies to right, etc.\n\n if(\n (isVertical && topOrBottom) ||\n (!isVertical && !topOrBottom)\n ) {\n var x, y;\n\n if(titleSide === 'top') {\n x = xpad + gs.l + posW * optsX;\n y = ypad + gs.t + posH * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75;\n }\n\n if(titleSide === 'bottom') {\n x = xpad + gs.l + posW * optsX;\n y = ypad + gs.t + posH * (1 - vFrac) - 3 - titleFontSize * 0.25;\n }\n\n if(titleSide === 'right') {\n y = ypad + gs.t + posH * optsY + 3 + titleFontSize * 0.75;\n x = xpad + gs.l + posW * vFrac;\n }\n\n drawTitle(ax._id + 'title', {\n attributes: {x: x, y: y, 'text-anchor': isVertical ? 'start' : 'middle'}\n });\n }\n }\n\n function drawCbTitle() {\n if(\n (isVertical && !topOrBottom) ||\n (!isVertical && topOrBottom)\n ) {\n var pos = ax.position || 0;\n var mid = ax._offset + ax._length / 2;\n var x, y;\n\n if(titleSide === 'right') {\n y = mid;\n x = gs.l + posW * pos + 10 + titleFontSize * (\n ax.showticklabels ? 1 : 0.5\n );\n } else {\n x = mid;\n\n if(titleSide === 'bottom') {\n y = gs.t + posH * pos + 10 + (\n ticklabelposition.indexOf('inside') === -1 ?\n ax.tickfont.size :\n 0\n ) + (\n ax.ticks !== 'intside' ?\n opts.ticklen || 0 :\n 0\n );\n }\n\n if(titleSide === 'top') {\n var nlines = title.text.split('
').length;\n y = gs.t + posH * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines;\n }\n }\n\n drawTitle((isVertical ?\n // the 'h' + is a hack to get around the fact that\n // convertToTspans rotates any 'y...' class by 90 degrees.\n // TODO: find a better way to control this.\n 'h' :\n 'v'\n ) + ax._id + 'title', {\n avoid: {\n selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'),\n side: titleSide,\n offsetTop: isVertical ? 0 : gs.t,\n offsetLeft: isVertical ? gs.l : 0,\n maxShift: isVertical ? fullLayout.width : fullLayout.height\n },\n attributes: {x: x, y: y, 'text-anchor': 'middle'},\n transform: {rotate: isVertical ? -90 : 0, offset: 0}\n });\n }\n }\n\n function drawAxis() {\n if(\n (!isVertical && !topOrBottom) ||\n (isVertical && topOrBottom)\n ) {\n // squish the axis top to make room for the title\n var titleGroup = g.select('.' + cn.cbtitle);\n var titleText = titleGroup.select('text');\n var titleTrans = [-outlinewidth / 2, outlinewidth / 2];\n var mathJaxNode = titleGroup\n .select('.h' + ax._id + 'title-math-group')\n .node();\n var lineSize = 15.6;\n if(titleText.node()) {\n lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING;\n }\n\n var bb;\n if(mathJaxNode) {\n bb = Drawing.bBox(mathJaxNode);\n titleWidth = bb.width;\n titleHeight = bb.height;\n if(titleHeight > lineSize) {\n // not entirely sure how mathjax is doing\n // vertical alignment, but this seems to work.\n titleTrans[1] -= (titleHeight - lineSize) / 2;\n }\n } else if(titleText.node() && !titleText.classed(cn.jsPlaceholder)) {\n bb = Drawing.bBox(titleText.node());\n titleWidth = bb.width;\n titleHeight = bb.height;\n }\n\n if(isVertical) {\n if(titleHeight) {\n // buffer btwn colorbar and title\n // TODO: configurable\n titleHeight += 5;\n\n if(titleSide === 'top') {\n ax.domain[1] -= titleHeight / gs.h;\n titleTrans[1] *= -1;\n } else {\n ax.domain[0] += titleHeight / gs.h;\n var nlines = svgTextUtils.lineCount(titleText);\n titleTrans[1] += (1 - nlines) * lineSize;\n }\n\n titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));\n ax.setScale();\n }\n } else { // horizontal colorbars\n if(titleWidth) {\n if(titleSide === 'right') {\n ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w;\n }\n\n titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));\n ax.setScale();\n }\n }\n }\n\n g.selectAll('.' + cn.cbfills + ',.' + cn.cblines)\n .attr('transform', isVertical ?\n strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) :\n strTranslate(Math.round(gs.w * ax.domain[0]), 0)\n );\n\n axLayer.attr('transform', isVertical ?\n strTranslate(0, Math.round(-gs.t)) :\n strTranslate(Math.round(-gs.l), 0)\n );\n\n var fills = g.select('.' + cn.cbfills)\n .selectAll('rect.' + cn.cbfill)\n .attr('style', '')\n .data(fillLevels);\n fills.enter().append('rect')\n .classed(cn.cbfill, true)\n .attr('style', '');\n fills.exit().remove();\n\n var zBounds = zrange\n .map(ax.c2p)\n .map(Math.round)\n .sort(function(a, b) { return a - b; });\n\n fills.each(function(d, i) {\n var z = [\n (i === 0) ? zrange[0] : (fillLevels[i] + fillLevels[i - 1]) / 2,\n (i === fillLevels.length - 1) ? zrange[1] : (fillLevels[i] + fillLevels[i + 1]) / 2\n ]\n .map(ax.c2p)\n .map(Math.round);\n\n // offset the side adjoining the next rectangle so they\n // overlap, to prevent antialiasing gaps\n if(isVertical) {\n z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);\n } /* else {\n // TODO: horizontal case\n } */\n\n // Colorbar cannot currently support opacities so we\n // use an opaque fill even when alpha channels present\n var fillEl = d3.select(this)\n .attr(isVertical ? 'x' : 'y', uPx)\n .attr(isVertical ? 'y' : 'x', d3.min(z))\n .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))\n .attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2));\n\n if(opts._fillgradient) {\n Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill');\n } else {\n // tinycolor can't handle exponents and\n // at this scale, removing it makes no difference.\n var colorString = fillColormap(d).replace('e-', '');\n fillEl.attr('fill', tinycolor(colorString).toHexString());\n }\n });\n\n var lines = g.select('.' + cn.cblines)\n .selectAll('path.' + cn.cbline)\n .data(line.color && line.width ? lineLevels : []);\n lines.enter().append('path')\n .classed(cn.cbline, true);\n lines.exit().remove();\n lines.each(function(d) {\n var a = uPx;\n var b = (Math.round(ax.c2p(d)) + (line.width / 2) % 1);\n\n d3.select(this)\n .attr('d', 'M' +\n (isVertical ? a + ',' + b : b + ',' + a) +\n (isVertical ? 'h' : 'v') +\n thickPx\n )\n .call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);\n });\n\n // force full redraw of labels and ticks\n axLayer.selectAll('g.' + ax._id + 'tick,path').remove();\n\n var shift = uPx + thickPx +\n (outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);\n\n var vals = Axes.calcTicks(ax);\n var tickSign = Axes.getTickSigns(ax)[2];\n\n Axes.drawTicks(gd, ax, {\n vals: ax.ticks === 'inside' ? Axes.clipEnds(ax, vals) : vals,\n layer: axLayer,\n path: Axes.makeTickPath(ax, shift, tickSign),\n transFn: Axes.makeTransTickFn(ax)\n });\n\n return Axes.drawLabels(gd, ax, {\n vals: vals,\n layer: axLayer,\n transFn: Axes.makeTransTickLabelFn(ax),\n labelFns: Axes.makeLabelFns(ax, shift)\n });\n }\n\n // wait for the axis & title to finish rendering before\n // continuing positioning\n // TODO: why are we redrawing multiple times now with this?\n // I guess autoMargin doesn't like being post-promise?\n function positionCB() {\n var bb;\n var innerThickness = thickPx + outlinewidth / 2;\n if(ticklabelposition.indexOf('inside') === -1) {\n bb = Drawing.bBox(axLayer.node());\n innerThickness += isVertical ? bb.width : bb.height;\n }\n\n titleEl = titleCont.select('text');\n\n var titleWidth = 0;\n\n var topSideVertical = isVertical && titleSide === 'top';\n var rightSideHorizontal = !isVertical && titleSide === 'right';\n\n var moveY = 0;\n\n if(titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) {\n var _titleHeight;\n\n var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node();\n if(mathJaxNode && (\n (isVertical && topOrBottom) ||\n (!isVertical && !topOrBottom)\n )) {\n bb = Drawing.bBox(mathJaxNode);\n titleWidth = bb.width;\n _titleHeight = bb.height;\n } else {\n // note: the formula below works for all title sides,\n // (except for top/bottom mathjax, above)\n // but the weird gs.l is because the titleunshift\n // transform gets removed by Drawing.bBox\n bb = Drawing.bBox(titleCont.node());\n titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx);\n _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx);\n\n if(\n !isVertical && titleSide === 'top'\n ) {\n innerThickness += bb.height;\n moveY = bb.height;\n }\n }\n\n if(rightSideHorizontal) {\n titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0));\n\n titleWidth *= 2;\n }\n\n innerThickness = Math.max(innerThickness,\n isVertical ? titleWidth : _titleHeight\n );\n }\n\n var outerThickness = (isVertical ?\n xpad :\n ypad\n ) * 2 + innerThickness + borderwidth + outlinewidth / 2;\n\n var hColorbarMoveTitle = 0;\n if(!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) {\n hColorbarMoveTitle = outerThickness / 2;\n\n outerThickness += hColorbarMoveTitle;\n moveY += hColorbarMoveTitle;\n }\n fullLayout._hColorbarMoveTitle = hColorbarMoveTitle;\n fullLayout._hColorbarMoveCBTitle = moveY;\n\n var extraW = borderwidth + outlinewidth;\n\n // TODO - are these the correct positions?\n var lx = (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0);\n var ly = (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle);\n\n g.select('.' + cn.cbbg)\n .attr('x', lx)\n .attr('y', ly)\n .attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2))\n .attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2))\n .call(Color.fill, bgcolor)\n .call(Color.stroke, opts.bordercolor)\n .style('stroke-width', borderwidth);\n\n var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0;\n\n g.selectAll('.' + cn.cboutline)\n .attr('x', (isVertical ? uPx : vPx + xpad) + moveX)\n .attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0))\n .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))\n .attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ?\n 2 * ypad + titleHeight :\n 2 * xpad + moveX\n ), 2))\n .call(Color.stroke, opts.outlinecolor)\n .style({\n fill: 'none',\n 'stroke-width': outlinewidth\n });\n\n var xShift = ((isVertical ? xRatio * outerThickness : 0));\n var yShift = ((isVertical ? 0 : (1 - yRatio) * outerThickness - moveY));\n xShift = isPaperX ? gs.l - xShift : -xShift;\n yShift = isPaperY ? gs.t - yShift : -yShift;\n\n g.attr('transform', strTranslate(\n xShift,\n yShift\n ));\n\n if(!isVertical && (\n borderwidth || (\n tinycolor(bgcolor).getAlpha() &&\n !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor)\n )\n )) {\n // for horizontal colorbars when there is a border line or having different background color\n // hide/adjust x positioning for the first/last tick labels if they go outside the border\n var tickLabels = axLayer.selectAll('text');\n var numTicks = tickLabels[0].length;\n\n var border = g.select('.' + cn.cbbg).node();\n var oBb = Drawing.bBox(border);\n var oTr = Drawing.getTranslate(g);\n\n var TEXTPAD = 2;\n\n tickLabels.each(function(d, i) {\n var first = 0;\n var last = numTicks - 1;\n if(i === first || i === last) {\n var iBb = Drawing.bBox(this);\n var iTr = Drawing.getTranslate(this);\n var deltaX;\n\n if(i === last) {\n var iRight = iBb.right + iTr.x;\n var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX;\n\n deltaX = oRight - iRight;\n if(deltaX > 0) deltaX = 0;\n } else if(i === first) {\n var iLeft = iBb.left + iTr.x;\n var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD;\n\n deltaX = oLeft - iLeft;\n if(deltaX < 0) deltaX = 0;\n }\n\n if(deltaX) {\n if(numTicks < 3) { // adjust position\n this.setAttribute('transform',\n 'translate(' + deltaX + ',0) ' +\n this.getAttribute('transform')\n );\n } else { // hide\n this.setAttribute('visibility', 'hidden');\n }\n }\n }\n });\n }\n\n // auto margin adjustment\n var marginOpts = {};\n var lFrac = FROM_TL[xanchor];\n var rFrac = FROM_BR[xanchor];\n var tFrac = FROM_TL[yanchor];\n var bFrac = FROM_BR[yanchor];\n\n var extraThickness = outerThickness - thickPx;\n if(isVertical) {\n if(lenmode === 'pixels') {\n marginOpts.y = optsY;\n marginOpts.t = lenPx * tFrac;\n marginOpts.b = lenPx * bFrac;\n } else {\n marginOpts.t = marginOpts.b = 0;\n marginOpts.yt = optsY + len * tFrac;\n marginOpts.yb = optsY - len * bFrac;\n }\n\n if(thicknessmode === 'pixels') {\n marginOpts.x = optsX;\n marginOpts.l = outerThickness * lFrac;\n marginOpts.r = outerThickness * rFrac;\n } else {\n marginOpts.l = extraThickness * lFrac;\n marginOpts.r = extraThickness * rFrac;\n marginOpts.xl = optsX - thickness * lFrac;\n marginOpts.xr = optsX + thickness * rFrac;\n }\n } else { // horizontal colorbars\n if(lenmode === 'pixels') {\n marginOpts.x = optsX;\n marginOpts.l = lenPx * lFrac;\n marginOpts.r = lenPx * rFrac;\n } else {\n marginOpts.l = marginOpts.r = 0;\n marginOpts.xl = optsX + len * lFrac;\n marginOpts.xr = optsX - len * rFrac;\n }\n\n if(thicknessmode === 'pixels') {\n marginOpts.y = 1 - optsY;\n marginOpts.t = outerThickness * tFrac;\n marginOpts.b = outerThickness * bFrac;\n } else {\n marginOpts.t = extraThickness * tFrac;\n marginOpts.b = extraThickness * bFrac;\n marginOpts.yt = optsY - thickness * tFrac;\n marginOpts.yb = optsY + thickness * bFrac;\n }\n }\n var sideY = opts.y < 0.5 ? 'b' : 't';\n var sideX = opts.x < 0.5 ? 'l' : 'r';\n\n gd._fullLayout._reservedMargin[opts._id] = {};\n var possibleReservedMargins = {\n r: (fullLayout.width - lx - xShift),\n l: lx + marginOpts.r,\n b: (fullLayout.height - ly - yShift),\n t: ly + marginOpts.b\n };\n\n if(isPaperX && isPaperY) {\n Plots.autoMargin(gd, opts._id, marginOpts);\n } else if(isPaperX) {\n gd._fullLayout._reservedMargin[opts._id][sideY] = possibleReservedMargins[sideY];\n } else if(isPaperY) {\n gd._fullLayout._reservedMargin[opts._id][sideX] = possibleReservedMargins[sideX];\n } else {\n if(isVertical) {\n gd._fullLayout._reservedMargin[opts._id][sideX] = possibleReservedMargins[sideX];\n } else {\n gd._fullLayout._reservedMargin[opts._id][sideY] = possibleReservedMargins[sideY];\n }\n }\n }\n\n return Lib.syncOrAsync([\n Plots.previousPromises,\n drawDummyTitle,\n drawAxis,\n drawCbTitle,\n Plots.previousPromises,\n positionCB\n ], gd);\n}\n\nfunction makeEditable(g, opts, gd) {\n var isVertical = opts.orientation === 'v';\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var t0, xf, yf;\n\n dragElement.init({\n element: g.node(),\n gd: gd,\n prepFn: function() {\n t0 = g.attr('transform');\n setCursor(g);\n },\n moveFn: function(dx, dy) {\n g.attr('transform', t0 + strTranslate(dx, dy));\n\n xf = dragElement.align(\n (isVertical ? opts._uFrac : opts._vFrac) + (dx / gs.w),\n isVertical ? opts._thickFrac : opts._lenFrac,\n 0, 1, opts.xanchor);\n yf = dragElement.align(\n (isVertical ? opts._vFrac : (1 - opts._uFrac)) - (dy / gs.h),\n isVertical ? opts._lenFrac : opts._thickFrac,\n 0, 1, opts.yanchor);\n\n var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);\n setCursor(g, csr);\n },\n doneFn: function() {\n setCursor(g);\n\n if(xf !== undefined && yf !== undefined) {\n var update = {};\n update[opts._propPrefix + 'x'] = xf;\n update[opts._propPrefix + 'y'] = yf;\n if(opts._traceIndex !== undefined) {\n Registry.call('_guiRestyle', gd, update, opts._traceIndex);\n } else {\n Registry.call('_guiRelayout', gd, update);\n }\n }\n }\n });\n}\n\nfunction calcLevels(gd, opts, zrange) {\n var levelsIn = opts._levels;\n var lineLevels = [];\n var fillLevels = [];\n var l;\n var i;\n\n var l0 = levelsIn.end + levelsIn.size / 100;\n var ls = levelsIn.size;\n var zr0 = (1.001 * zrange[0] - 0.001 * zrange[1]);\n var zr1 = (1.001 * zrange[1] - 0.001 * zrange[0]);\n\n for(i = 0; i < 1e5; i++) {\n l = levelsIn.start + i * ls;\n if(ls > 0 ? (l >= l0) : (l <= l0)) break;\n if(l > zr0 && l < zr1) lineLevels.push(l);\n }\n\n if(opts._fillgradient) {\n fillLevels = [0];\n } else if(typeof opts._fillcolor === 'function') {\n var fillLevelsIn = opts._filllevels;\n\n if(fillLevelsIn) {\n l0 = fillLevelsIn.end + fillLevelsIn.size / 100;\n ls = fillLevelsIn.size;\n for(i = 0; i < 1e5; i++) {\n l = fillLevelsIn.start + i * ls;\n if(ls > 0 ? (l >= l0) : (l <= l0)) break;\n if(l > zrange[0] && l < zrange[1]) fillLevels.push(l);\n }\n } else {\n fillLevels = lineLevels.map(function(v) {\n return v - levelsIn.size / 2;\n });\n fillLevels.push(fillLevels[fillLevels.length - 1] + levelsIn.size);\n }\n } else if(opts._fillcolor && typeof opts._fillcolor === 'string') {\n // doesn't matter what this value is, with a single value\n // we'll make a single fill rect covering the whole bar\n fillLevels = [0];\n }\n\n if(levelsIn.size < 0) {\n lineLevels.reverse();\n fillLevels.reverse();\n }\n\n return {line: lineLevels, fill: fillLevels};\n}\n\nfunction mockColorBarAxis(gd, opts, zrange) {\n var fullLayout = gd._fullLayout;\n\n var isVertical = opts.orientation === 'v';\n\n var cbAxisIn = {\n type: 'linear',\n range: zrange,\n tickmode: opts.tickmode,\n nticks: opts.nticks,\n tick0: opts.tick0,\n dtick: opts.dtick,\n tickvals: opts.tickvals,\n ticktext: opts.ticktext,\n ticks: opts.ticks,\n ticklen: opts.ticklen,\n tickwidth: opts.tickwidth,\n tickcolor: opts.tickcolor,\n showticklabels: opts.showticklabels,\n labelalias: opts.labelalias,\n ticklabelposition: opts.ticklabelposition,\n ticklabeloverflow: opts.ticklabeloverflow,\n ticklabelstep: opts.ticklabelstep,\n tickfont: opts.tickfont,\n tickangle: opts.tickangle,\n tickformat: opts.tickformat,\n exponentformat: opts.exponentformat,\n minexponent: opts.minexponent,\n separatethousands: opts.separatethousands,\n showexponent: opts.showexponent,\n showtickprefix: opts.showtickprefix,\n tickprefix: opts.tickprefix,\n showticksuffix: opts.showticksuffix,\n ticksuffix: opts.ticksuffix,\n title: opts.title,\n showline: true,\n anchor: 'free',\n side: isVertical ? 'right' : 'bottom',\n position: 1\n };\n\n var letter = isVertical ? 'y' : 'x';\n\n var cbAxisOut = {\n type: 'linear',\n _id: letter + opts._id\n };\n\n var axisOptions = {\n letter: letter,\n font: fullLayout.font,\n noAutotickangles: letter === 'y',\n noHover: true,\n noTickson: true,\n noTicklabelmode: true,\n noInsideRange: true,\n calendar: fullLayout.calendar // not really necessary (yet?)\n };\n\n function coerce(attr, dflt) {\n return Lib.coerce(cbAxisIn, cbAxisOut, axisLayoutAttrs, attr, dflt);\n }\n\n handleAxisDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions, fullLayout);\n handleAxisPositionDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions);\n\n return cbAxisOut;\n}\n\nmodule.exports = {\n draw: draw\n};\n","'use strict';\n\nvar Lib = require('../../lib');\n\n\nmodule.exports = function hasColorbar(container) {\n return Lib.isPlainObject(container.colorbar);\n};\n","'use strict';\n\nmodule.exports = {\n moduleType: 'component',\n name: 'colorbar',\n\n attributes: require('./attributes'),\n supplyDefaults: require('./defaults'),\n\n draw: require('./draw').draw,\n hasColorbar: require('./has_colorbar')\n};\n","'use strict';\n\nvar colorbarAttrs = require('../colorbar/attributes');\nvar counterRegex = require('../../lib/regex').counter;\nvar sortObjectKeys = require('../../lib/sort_object_keys');\n\nvar palettes = require('./scales.js').scales;\nvar paletteStr = sortObjectKeys(palettes);\n\nfunction code(s) {\n return '`' + s + '`';\n}\n\n/**\n * Make colorscale attribute declarations for\n *\n * - colorscale,\n * - (c|z)auto, (c|z)min, (c|z)max,\n * - autocolorscale, reversescale,\n * - showscale (optionally)\n * - color (optionally)\n *\n * @param {string} context (dflt: '', i.e. from trace root):\n * the container this is in ('', *marker*, *marker.line* etc)\n *\n * @param {object} opts:\n * - cLetter {string} (dflt: 'c'):\n * leading letter for 'min', 'max and 'auto' attribute (either 'z' or 'c')\n *\n * - colorAttr {string} (dflt: 'z' if `cLetter: 'z'`, 'color' if `cLetter: 'c'`):\n * (for descriptions) sets the name of the color attribute that maps to the colorscale.\n *\n * N.B. if `colorAttr: 'color'`, we include the `color` declaration here.\n *\n * - onlyIfNumerical {string} (dflt: false' if `cLetter: 'z'`, true if `cLetter: 'c'`):\n * (for descriptions) set to true if colorscale attribute only\n *\n * - colorscaleDflt {string}:\n * overrides the colorscale dflt\n *\n * - autoColorDflt {boolean} (dflt true):\n * normally autocolorscale.dflt is `true`, but pass `false` to override\n *\n * - noScale {boolean} (dflt: true if `context: 'marker.line'`, false otherwise):\n * set to `false` to not include showscale attribute (e.g. for 'marker.line')\n *\n * - showScaleDflt {boolean} (dflt: true if `cLetter: 'z'`, false otherwise)\n *\n * - editTypeOverride {boolean} (dflt: ''):\n * most of these attributes already require a recalc, but the ones that do not\n * have editType *style* or *plot* unless you override (presumably with *calc*)\n *\n * - anim {boolean) (dflt: undefined): is 'color' animatable?\n *\n * @return {object}\n */\nmodule.exports = function colorScaleAttrs(context, opts) {\n context = context || '';\n opts = opts || {};\n\n var cLetter = opts.cLetter || 'c';\n var onlyIfNumerical = ('onlyIfNumerical' in opts) ? opts.onlyIfNumerical : Boolean(context);\n var noScale = ('noScale' in opts) ? opts.noScale : context === 'marker.line';\n var showScaleDflt = ('showScaleDflt' in opts) ? opts.showScaleDflt : cLetter === 'z';\n var colorscaleDflt = typeof opts.colorscaleDflt === 'string' ? palettes[opts.colorscaleDflt] : null;\n var editTypeOverride = opts.editTypeOverride || '';\n var contextHead = context ? (context + '.') : '';\n\n var colorAttr, colorAttrFull;\n\n if('colorAttr' in opts) {\n colorAttr = opts.colorAttr;\n colorAttrFull = opts.colorAttr;\n } else {\n colorAttr = {z: 'z', c: 'color'}[cLetter];\n colorAttrFull = 'in ' + code(contextHead + colorAttr);\n }\n\n var effectDesc = onlyIfNumerical ?\n ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' :\n '';\n\n var auto = cLetter + 'auto';\n var min = cLetter + 'min';\n var max = cLetter + 'max';\n var mid = cLetter + 'mid';\n var autoFull = code(contextHead + auto);\n var minFull = code(contextHead + min);\n var maxFull = code(contextHead + max);\n var minmaxFull = minFull + ' and ' + maxFull;\n var autoImpliedEdits = {};\n autoImpliedEdits[min] = autoImpliedEdits[max] = undefined;\n var minmaxImpliedEdits = {};\n minmaxImpliedEdits[auto] = false;\n\n var attrs = {};\n\n if(colorAttr === 'color') {\n attrs.color = {\n valType: 'color',\n arrayOk: true,\n editType: editTypeOverride || 'style',\n description: [\n 'Sets the', context, 'color.',\n 'It accepts either a specific color',\n 'or an array of numbers that are mapped to the colorscale',\n 'relative to the max and min values of the array or relative to',\n minmaxFull, 'if set.'\n ].join(' ')\n };\n\n if(opts.anim) {\n attrs.color.anim = true;\n }\n }\n\n attrs[auto] = {\n valType: 'boolean',\n dflt: true,\n editType: 'calc',\n impliedEdits: autoImpliedEdits,\n description: [\n 'Determines whether or not the color domain is computed',\n 'with respect to the input data (here ' + colorAttrFull + ') or the bounds set in',\n minmaxFull + effectDesc,\n 'Defaults to `false` when', minmaxFull, 'are set by the user.'\n ].join(' ')\n };\n\n attrs[min] = {\n valType: 'number',\n dflt: null,\n editType: editTypeOverride || 'plot',\n impliedEdits: minmaxImpliedEdits,\n description: [\n 'Sets the lower bound of the color domain.' + effectDesc,\n 'Value should have the same units as', colorAttrFull,\n 'and if set,', maxFull, 'must be set as well.'\n ].join(' ')\n };\n\n attrs[max] = {\n valType: 'number',\n dflt: null,\n editType: editTypeOverride || 'plot',\n impliedEdits: minmaxImpliedEdits,\n description: [\n 'Sets the upper bound of the color domain.' + effectDesc,\n 'Value should have the same units as', colorAttrFull,\n 'and if set,', minFull, 'must be set as well.'\n ].join(' ')\n };\n\n attrs[mid] = {\n valType: 'number',\n dflt: null,\n editType: 'calc',\n impliedEdits: autoImpliedEdits,\n description: [\n 'Sets the mid-point of the color domain by scaling', minFull,\n 'and/or', maxFull, 'to be equidistant to this point.' + effectDesc,\n 'Value should have the same units as', colorAttrFull + '.',\n 'Has no effect when', autoFull, 'is `false`.'\n ].join(' ')\n };\n\n attrs.colorscale = {\n valType: 'colorscale',\n editType: 'calc',\n dflt: colorscaleDflt,\n impliedEdits: {autocolorscale: false},\n description: [\n 'Sets the colorscale.' + effectDesc,\n 'The colorscale must be an array containing',\n 'arrays mapping a normalized value to an',\n 'rgb, rgba, hex, hsl, hsv, or named color string.',\n 'At minimum, a mapping for the lowest (0) and highest (1)',\n 'values are required. For example,',\n '`[[0, \\'rgb(0,0,255)\\'], [1, \\'rgb(255,0,0)\\']]`.',\n 'To control the bounds of the colorscale in color space,',\n 'use', minmaxFull + '.',\n 'Alternatively, `colorscale` may be a palette name string',\n 'of the following list: ' + paletteStr + '.'\n ].join(' ')\n };\n\n attrs.autocolorscale = {\n valType: 'boolean',\n // gets overrode in 'heatmap' & 'surface' for backwards comp.\n dflt: opts.autoColorDflt === false ? false : true,\n editType: 'calc',\n impliedEdits: {colorscale: undefined},\n description: [\n 'Determines whether the colorscale is a default palette (`autocolorscale: true`)',\n 'or the palette determined by', code(contextHead + 'colorscale') + '.' + effectDesc,\n 'In case `colorscale` is unspecified or `autocolorscale` is true, the default',\n 'palette will be chosen according to whether numbers in the `color` array are',\n 'all positive, all negative or mixed.'\n ].join(' ')\n };\n\n attrs.reversescale = {\n valType: 'boolean',\n dflt: false,\n editType: 'plot',\n description: [\n 'Reverses the color mapping if true.' + effectDesc,\n 'If true,', minFull, 'will correspond to the last color',\n 'in the array and', maxFull, 'will correspond to the first color.'\n ].join(' ')\n };\n\n if(!noScale) {\n attrs.showscale = {\n valType: 'boolean',\n dflt: showScaleDflt,\n editType: 'calc',\n description: [\n 'Determines whether or not a colorbar is displayed for this trace.' + effectDesc\n ].join(' ')\n };\n\n attrs.colorbar = colorbarAttrs;\n }\n\n if(!opts.noColorAxis) {\n attrs.coloraxis = {\n valType: 'subplotid',\n regex: counterRegex('coloraxis'),\n dflt: null,\n editType: 'calc',\n description: [\n 'Sets a reference to a shared color axis.',\n 'References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc.',\n 'Settings for these shared color axes are set in the layout, under',\n '`layout.coloraxis`, `layout.coloraxis2`, etc.',\n 'Note that multiple color scales can be linked to the same color axis.'\n ].join(' ')\n };\n }\n\n return attrs;\n};\n","'use strict';\n\nvar isNumeric = require('fast-isnumeric');\n\nvar Lib = require('../../lib');\nvar extractOpts = require('./helpers').extractOpts;\n\nmodule.exports = function calc(gd, trace, opts) {\n var fullLayout = gd._fullLayout;\n var vals = opts.vals;\n var containerStr = opts.containerStr;\n\n var container = containerStr ?\n Lib.nestedProperty(trace, containerStr).get() :\n trace;\n\n var cOpts = extractOpts(container);\n var auto = cOpts.auto !== false;\n var min = cOpts.min;\n var max = cOpts.max;\n var mid = cOpts.mid;\n\n var minVal = function() { return Lib.aggNums(Math.min, null, vals); };\n var maxVal = function() { return Lib.aggNums(Math.max, null, vals); };\n\n if(min === undefined) {\n min = minVal();\n } else if(auto) {\n if(container._colorAx && isNumeric(min)) {\n min = Math.min(min, minVal());\n } else {\n min = minVal();\n }\n }\n\n if(max === undefined) {\n max = maxVal();\n } else if(auto) {\n if(container._colorAx && isNumeric(max)) {\n max = Math.max(max, maxVal());\n } else {\n max = maxVal();\n }\n }\n\n if(auto && mid !== undefined) {\n if(max - mid > mid - min) {\n min = mid - (max - mid);\n } else if(max - mid < mid - min) {\n max = mid + (mid - min);\n }\n }\n\n if(min === max) {\n min -= 0.5;\n max += 0.5;\n }\n\n cOpts._sync('min', min);\n cOpts._sync('max', max);\n\n if(cOpts.autocolorscale) {\n var scl;\n if(min * max < 0) scl = fullLayout.colorscale.diverging;\n else if(min >= 0) scl = fullLayout.colorscale.sequential;\n else scl = fullLayout.colorscale.sequentialminus;\n cOpts._sync('colorscale', scl);\n }\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar hasColorscale = require('./helpers').hasColorscale;\nvar extractOpts = require('./helpers').extractOpts;\n\nmodule.exports = function crossTraceDefaults(fullData, fullLayout) {\n function replace(cont, k) {\n var val = cont['_' + k];\n if(val !== undefined) {\n cont[k] = val;\n }\n }\n\n function relinkColorAttrs(outerCont, cbOpt) {\n var cont = cbOpt.container ?\n Lib.nestedProperty(outerCont, cbOpt.container).get() :\n outerCont;\n\n if(cont) {\n if(cont.coloraxis) {\n // stash ref to color axis\n cont._colorAx = fullLayout[cont.coloraxis];\n } else {\n var cOpts = extractOpts(cont);\n var isAuto = cOpts.auto;\n\n if(isAuto || cOpts.min === undefined) {\n replace(cont, cbOpt.min);\n }\n if(isAuto || cOpts.max === undefined) {\n replace(cont, cbOpt.max);\n }\n if(cOpts.autocolorscale) {\n replace(cont, 'colorscale');\n }\n }\n }\n }\n\n for(var i = 0; i < fullData.length; i++) {\n var trace = fullData[i];\n var cbOpts = trace._module.colorbar;\n\n if(cbOpts) {\n if(Array.isArray(cbOpts)) {\n for(var j = 0; j < cbOpts.length; j++) {\n relinkColorAttrs(trace, cbOpts[j]);\n }\n } else {\n relinkColorAttrs(trace, cbOpts);\n }\n }\n\n if(hasColorscale(trace, 'marker.line')) {\n relinkColorAttrs(trace, {\n container: 'marker.line',\n min: 'cmin',\n max: 'cmax'\n });\n }\n }\n\n for(var k in fullLayout._colorAxes) {\n relinkColorAttrs(fullLayout[k], {min: 'cmin', max: 'cmax'});\n }\n};\n","'use strict';\n\nvar isNumeric = require('fast-isnumeric');\n\nvar Lib = require('../../lib');\nvar hasColorbar = require('../colorbar/has_colorbar');\nvar colorbarDefaults = require('../colorbar/defaults');\n\nvar isValidScale = require('./scales').isValid;\nvar traceIs = require('../../registry').traceIs;\n\nfunction npMaybe(parentCont, prefix) {\n var containerStr = prefix.slice(0, prefix.length - 1);\n return prefix ?\n Lib.nestedProperty(parentCont, containerStr).get() || {} :\n parentCont;\n}\n\n/**\n * Colorscale / colorbar default handler\n *\n * @param {object} parentContIn : user (input) parent container (e.g. trace or layout coloraxis object)\n * @param {object} parentContOut : full parent container\n * @param {object} layout : (full) layout object\n * @param {fn} coerce : Lib.coerce wrapper\n * @param {object} opts :\n * - prefix {string} : attr string prefix to colorscale container from parent root\n * - cLetter {string} : 'c or 'z' color letter\n */\nmodule.exports = function colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts) {\n var prefix = opts.prefix;\n var cLetter = opts.cLetter;\n var inTrace = '_module' in parentContOut;\n var containerIn = npMaybe(parentContIn, prefix);\n var containerOut = npMaybe(parentContOut, prefix);\n var template = npMaybe(parentContOut._template || {}, prefix) || {};\n\n // colorScaleDefaults wrapper called if-ever we need to reset the colorscale\n // attributes for containers that were linked to invalid color axes\n var thisFn = function() {\n delete parentContIn.coloraxis;\n delete parentContOut.coloraxis;\n return colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts);\n };\n\n if(inTrace) {\n var colorAxes = layout._colorAxes || {};\n var colorAx = coerce(prefix + 'coloraxis');\n\n if(colorAx) {\n var colorbarVisuals = (\n traceIs(parentContOut, 'contour') &&\n Lib.nestedProperty(parentContOut, 'contours.coloring').get()\n ) || 'heatmap';\n\n var stash = colorAxes[colorAx];\n\n if(stash) {\n stash[2].push(thisFn);\n\n if(stash[0] !== colorbarVisuals) {\n stash[0] = false;\n Lib.warn([\n 'Ignoring coloraxis:', colorAx, 'setting',\n 'as it is linked to incompatible colorscales.'\n ].join(' '));\n }\n } else {\n // stash:\n // - colorbar visual 'type'\n // - colorbar options to help in Colorbar.draw\n // - list of colorScaleDefaults wrapper functions\n colorAxes[colorAx] = [colorbarVisuals, parentContOut, [thisFn]];\n }\n return;\n }\n }\n\n var minIn = containerIn[cLetter + 'min'];\n var maxIn = containerIn[cLetter + 'max'];\n var validMinMax = isNumeric(minIn) && isNumeric(maxIn) && (minIn < maxIn);\n var auto = coerce(prefix + cLetter + 'auto', !validMinMax);\n\n if(auto) {\n coerce(prefix + cLetter + 'mid');\n } else {\n coerce(prefix + cLetter + 'min');\n coerce(prefix + cLetter + 'max');\n }\n\n // handles both the trace case (autocolorscale is false by default) and\n // the marker and marker.line case (autocolorscale is true by default)\n var sclIn = containerIn.colorscale;\n var sclTemplate = template.colorscale;\n var autoColorscaleDflt;\n if(sclIn !== undefined) autoColorscaleDflt = !isValidScale(sclIn);\n if(sclTemplate !== undefined) autoColorscaleDflt = !isValidScale(sclTemplate);\n coerce(prefix + 'autocolorscale', autoColorscaleDflt);\n\n coerce(prefix + 'colorscale');\n coerce(prefix + 'reversescale');\n\n if(prefix !== 'marker.line.') {\n // handles both the trace case where the dflt is listed in attributes and\n // the marker case where the dflt is determined by hasColorbar\n var showScaleDflt;\n if(prefix && inTrace) showScaleDflt = hasColorbar(containerIn);\n\n var showScale = coerce(prefix + 'showscale', showScaleDflt);\n if(showScale) {\n if(prefix && template) containerOut._template = template;\n colorbarDefaults(containerIn, containerOut, layout);\n }\n }\n};\n","'use strict';\n\nvar d3 = require('@plotly/d3');\nvar tinycolor = require('tinycolor2');\nvar isNumeric = require('fast-isnumeric');\n\nvar Lib = require('../../lib');\nvar Color = require('../color');\n\nvar isValidScale = require('./scales').isValid;\n\nfunction hasColorscale(trace, containerStr, colorKey) {\n var container = containerStr ?\n Lib.nestedProperty(trace, containerStr).get() || {} :\n trace;\n\n var color = container[colorKey || 'color'];\n if(color && color._inputArray) color = color._inputArray;\n\n var isArrayWithOneNumber = false;\n if(Lib.isArrayOrTypedArray(color)) {\n for(var i = 0; i < color.length; i++) {\n if(isNumeric(color[i])) {\n isArrayWithOneNumber = true;\n break;\n }\n }\n }\n\n return (\n Lib.isPlainObject(container) && (\n isArrayWithOneNumber ||\n container.showscale === true ||\n (isNumeric(container.cmin) && isNumeric(container.cmax)) ||\n isValidScale(container.colorscale) ||\n Lib.isPlainObject(container.colorbar)\n )\n );\n}\n\nvar constantAttrs = ['showscale', 'autocolorscale', 'colorscale', 'reversescale', 'colorbar'];\nvar letterAttrs = ['min', 'max', 'mid', 'auto'];\n\n/**\n * Extract 'c' / 'z', trace / color axis colorscale options\n *\n * Note that it would be nice to replace all z* with c* equivalents in v3\n *\n * @param {object} cont : attribute container\n * @return {object}:\n * - min: cmin or zmin\n * - max: cmax or zmax\n * - mid: cmid or zmid\n * - auto: cauto or zauto\n * - *scale: *scale attrs\n * - colorbar: colorbar\n * - _sync: function syncing attr and underscore dual (useful when calc'ing min/max)\n */\nfunction extractOpts(cont) {\n var colorAx = cont._colorAx;\n var cont2 = colorAx ? colorAx : cont;\n var out = {};\n var cLetter;\n var i, k;\n\n for(i = 0; i < constantAttrs.length; i++) {\n k = constantAttrs[i];\n out[k] = cont2[k];\n }\n\n if(colorAx) {\n cLetter = 'c';\n for(i = 0; i < letterAttrs.length; i++) {\n k = letterAttrs[i];\n out[k] = cont2['c' + k];\n }\n } else {\n var k2;\n for(i = 0; i < letterAttrs.length; i++) {\n k = letterAttrs[i];\n k2 = 'c' + k;\n if(k2 in cont2) {\n out[k] = cont2[k2];\n continue;\n }\n k2 = 'z' + k;\n if(k2 in cont2) {\n out[k] = cont2[k2];\n }\n }\n cLetter = k2.charAt(0);\n }\n\n out._sync = function(k, v) {\n var k2 = letterAttrs.indexOf(k) !== -1 ? cLetter + k : k;\n cont2[k2] = cont2['_' + k2] = v;\n };\n\n return out;\n}\n\n/**\n * Extract colorscale into numeric domain and color range.\n *\n * @param {object} cont colorscale container (e.g. trace, marker)\n * - colorscale {array of arrays}\n * - cmin/zmin {number}\n * - cmax/zmax {number}\n * - reversescale {boolean}\n *\n * @return {object}\n * - domain {array}\n * - range {array}\n */\nfunction extractScale(cont) {\n var cOpts = extractOpts(cont);\n var cmin = cOpts.min;\n var cmax = cOpts.max;\n\n var scl = cOpts.reversescale ?\n flipScale(cOpts.colorscale) :\n cOpts.colorscale;\n\n var N = scl.length;\n var domain = new Array(N);\n var range = new Array(N);\n\n for(var i = 0; i < N; i++) {\n var si = scl[i];\n domain[i] = cmin + si[0] * (cmax - cmin);\n range[i] = si[1];\n }\n\n return {domain: domain, range: range};\n}\n\nfunction flipScale(scl) {\n var N = scl.length;\n var sclNew = new Array(N);\n\n for(var i = N - 1, j = 0; i >= 0; i--, j++) {\n var si = scl[i];\n sclNew[j] = [1 - si[0], si[1]];\n }\n return sclNew;\n}\n\n/**\n * General colorscale function generator.\n *\n * @param {object} specs output of Colorscale.extractScale or precomputed domain, range.\n * - domain {array}\n * - range {array}\n *\n * @param {object} opts\n * - noNumericCheck {boolean} if true, scale func bypasses numeric checks\n * - returnArray {boolean} if true, scale func return 4-item array instead of color strings\n *\n * @return {function}\n */\nfunction makeColorScaleFunc(specs, opts) {\n opts = opts || {};\n\n var domain = specs.domain;\n var range = specs.range;\n var N = range.length;\n var _range = new Array(N);\n\n for(var i = 0; i < N; i++) {\n var rgba = tinycolor(range[i]).toRgb();\n _range[i] = [rgba.r, rgba.g, rgba.b, rgba.a];\n }\n\n var _sclFunc = d3.scale.linear()\n .domain(domain)\n .range(_range)\n .clamp(true);\n\n var noNumericCheck = opts.noNumericCheck;\n var returnArray = opts.returnArray;\n var sclFunc;\n\n if(noNumericCheck && returnArray) {\n sclFunc = _sclFunc;\n } else if(noNumericCheck) {\n sclFunc = function(v) {\n return colorArray2rbga(_sclFunc(v));\n };\n } else if(returnArray) {\n sclFunc = function(v) {\n if(isNumeric(v)) return _sclFunc(v);\n else if(tinycolor(v).isValid()) return v;\n else return Color.defaultLine;\n };\n } else {\n sclFunc = function(v) {\n if(isNumeric(v)) return colorArray2rbga(_sclFunc(v));\n else if(tinycolor(v).isValid()) return v;\n else return Color.defaultLine;\n };\n }\n\n // colorbar draw looks into the d3 scale closure for domain and range\n sclFunc.domain = _sclFunc.domain;\n sclFunc.range = function() { return range; };\n\n return sclFunc;\n}\n\nfunction makeColorScaleFuncFromTrace(trace, opts) {\n return makeColorScaleFunc(extractScale(trace), opts);\n}\n\nfunction colorArray2rbga(colorArray) {\n var colorObj = {\n r: colorArray[0],\n g: colorArray[1],\n b: colorArray[2],\n a: colorArray[3]\n };\n\n return tinycolor(colorObj).toRgbString();\n}\n\nmodule.exports = {\n hasColorscale: hasColorscale,\n extractOpts: extractOpts,\n extractScale: extractScale,\n flipScale: flipScale,\n makeColorScaleFunc: makeColorScaleFunc,\n makeColorScaleFuncFromTrace: makeColorScaleFuncFromTrace\n};\n","'use strict';\n\nvar scales = require('./scales');\nvar helpers = require('./helpers');\n\nmodule.exports = {\n moduleType: 'component',\n name: 'colorscale',\n\n attributes: require('./attributes'),\n layoutAttributes: require('./layout_attributes'),\n\n supplyLayoutDefaults: require('./layout_defaults'),\n handleDefaults: require('./defaults'),\n crossTraceDefaults: require('./cross_trace_defaults'),\n\n calc: require('./calc'),\n\n // ./scales.js is required in lib/coerce.js ;\n // it needs to be a separate module to avoid a circular dependency\n scales: scales.scales,\n defaultScale: scales.defaultScale,\n getScale: scales.get,\n isValidScale: scales.isValid,\n\n hasColorscale: helpers.hasColorscale,\n extractOpts: helpers.extractOpts,\n extractScale: helpers.extractScale,\n flipScale: helpers.flipScale,\n makeColorScaleFunc: helpers.makeColorScaleFunc,\n makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace\n};\n","'use strict';\n\nvar extendFlat = require('../../lib/extend').extendFlat;\n\nvar colorScaleAttrs = require('./attributes');\nvar scales = require('./scales').scales;\n\nvar msg = 'Note that `autocolorscale` must be true for this attribute to work.';\n\nmodule.exports = {\n editType: 'calc',\n\n colorscale: {\n editType: 'calc',\n\n sequential: {\n valType: 'colorscale',\n dflt: scales.Reds,\n editType: 'calc',\n description: [\n 'Sets the default sequential colorscale for positive values.',\n msg\n ].join(' ')\n },\n sequentialminus: {\n valType: 'colorscale',\n dflt: scales.Blues,\n editType: 'calc',\n description: [\n 'Sets the default sequential colorscale for negative values.',\n msg\n ].join(' ')\n },\n diverging: {\n valType: 'colorscale',\n dflt: scales.RdBu,\n editType: 'calc',\n description: [\n 'Sets the default diverging colorscale.',\n msg\n ].join(' ')\n }\n },\n\n coloraxis: extendFlat({\n // not really a 'subplot' attribute container,\n // but this is the flag we use to denote attributes that\n // support yaxis, yaxis2, yaxis3, ... counters\n _isSubplotObj: true,\n editType: 'calc',\n description: [\n ''\n ].join(' ')\n }, colorScaleAttrs('', {\n colorAttr: 'corresponding trace color array(s)',\n noColorAxis: true,\n showScaleDflt: true\n }))\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Template = require('../../plot_api/plot_template');\n\nvar colorScaleAttrs = require('./layout_attributes');\nvar colorScaleDefaults = require('./defaults');\n\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, colorScaleAttrs, attr, dflt);\n }\n\n coerce('colorscale.sequential');\n coerce('colorscale.sequentialminus');\n coerce('colorscale.diverging');\n\n var colorAxes = layoutOut._colorAxes;\n var colorAxIn, colorAxOut;\n\n function coerceAx(attr, dflt) {\n return Lib.coerce(colorAxIn, colorAxOut, colorScaleAttrs.coloraxis, attr, dflt);\n }\n\n for(var k in colorAxes) {\n var stash = colorAxes[k];\n\n if(stash[0]) {\n colorAxIn = layoutIn[k] || {};\n colorAxOut = Template.newContainer(layoutOut, k, 'coloraxis');\n colorAxOut._name = k;\n colorScaleDefaults(colorAxIn, colorAxOut, layoutOut, coerceAx, {prefix: '', cLetter: 'c'});\n } else {\n // re-coerce colorscale attributes w/o coloraxis\n for(var i = 0; i < stash[2].length; i++) {\n stash[2][i]();\n }\n delete layoutOut._colorAxes[k];\n }\n }\n};\n","'use strict';\n\nvar tinycolor = require('tinycolor2');\n\nvar scales = {\n Greys: [\n [0, 'rgb(0,0,0)'], [1, 'rgb(255,255,255)']\n ],\n\n YlGnBu: [\n [0, 'rgb(8,29,88)'], [0.125, 'rgb(37,52,148)'],\n [0.25, 'rgb(34,94,168)'], [0.375, 'rgb(29,145,192)'],\n [0.5, 'rgb(65,182,196)'], [0.625, 'rgb(127,205,187)'],\n [0.75, 'rgb(199,233,180)'], [0.875, 'rgb(237,248,217)'],\n [1, 'rgb(255,255,217)']\n ],\n\n Greens: [\n [0, 'rgb(0,68,27)'], [0.125, 'rgb(0,109,44)'],\n [0.25, 'rgb(35,139,69)'], [0.375, 'rgb(65,171,93)'],\n [0.5, 'rgb(116,196,118)'], [0.625, 'rgb(161,217,155)'],\n [0.75, 'rgb(199,233,192)'], [0.875, 'rgb(229,245,224)'],\n [1, 'rgb(247,252,245)']\n ],\n\n YlOrRd: [\n [0, 'rgb(128,0,38)'], [0.125, 'rgb(189,0,38)'],\n [0.25, 'rgb(227,26,28)'], [0.375, 'rgb(252,78,42)'],\n [0.5, 'rgb(253,141,60)'], [0.625, 'rgb(254,178,76)'],\n [0.75, 'rgb(254,217,118)'], [0.875, 'rgb(255,237,160)'],\n [1, 'rgb(255,255,204)']\n ],\n\n Bluered: [\n [0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']\n ],\n\n // modified RdBu based on\n // http://www.kennethmoreland.com/color-maps/\n RdBu: [\n [0, 'rgb(5,10,172)'], [0.35, 'rgb(106,137,247)'],\n [0.5, 'rgb(190,190,190)'], [0.6, 'rgb(220,170,132)'],\n [0.7, 'rgb(230,145,90)'], [1, 'rgb(178,10,28)']\n ],\n\n // Scale for non-negative numeric values\n Reds: [\n [0, 'rgb(220,220,220)'], [0.2, 'rgb(245,195,157)'],\n [0.4, 'rgb(245,160,105)'], [1, 'rgb(178,10,28)']\n ],\n\n // Scale for non-positive numeric values\n Blues: [\n [0, 'rgb(5,10,172)'], [0.35, 'rgb(40,60,190)'],\n [0.5, 'rgb(70,100,245)'], [0.6, 'rgb(90,120,245)'],\n [0.7, 'rgb(106,137,247)'], [1, 'rgb(220,220,220)']\n ],\n\n Picnic: [\n [0, 'rgb(0,0,255)'], [0.1, 'rgb(51,153,255)'],\n [0.2, 'rgb(102,204,255)'], [0.3, 'rgb(153,204,255)'],\n [0.4, 'rgb(204,204,255)'], [0.5, 'rgb(255,255,255)'],\n [0.6, 'rgb(255,204,255)'], [0.7, 'rgb(255,153,255)'],\n [0.8, 'rgb(255,102,204)'], [0.9, 'rgb(255,102,102)'],\n [1, 'rgb(255,0,0)']\n ],\n\n Rainbow: [\n [0, 'rgb(150,0,90)'], [0.125, 'rgb(0,0,200)'],\n [0.25, 'rgb(0,25,255)'], [0.375, 'rgb(0,152,255)'],\n [0.5, 'rgb(44,255,150)'], [0.625, 'rgb(151,255,0)'],\n [0.75, 'rgb(255,234,0)'], [0.875, 'rgb(255,111,0)'],\n [1, 'rgb(255,0,0)']\n ],\n\n Portland: [\n [0, 'rgb(12,51,131)'], [0.25, 'rgb(10,136,186)'],\n [0.5, 'rgb(242,211,56)'], [0.75, 'rgb(242,143,56)'],\n [1, 'rgb(217,30,30)']\n ],\n\n Jet: [\n [0, 'rgb(0,0,131)'], [0.125, 'rgb(0,60,170)'],\n [0.375, 'rgb(5,255,255)'], [0.625, 'rgb(255,255,0)'],\n [0.875, 'rgb(250,0,0)'], [1, 'rgb(128,0,0)']\n ],\n\n Hot: [\n [0, 'rgb(0,0,0)'], [0.3, 'rgb(230,0,0)'],\n [0.6, 'rgb(255,210,0)'], [1, 'rgb(255,255,255)']\n ],\n\n Blackbody: [\n [0, 'rgb(0,0,0)'], [0.2, 'rgb(230,0,0)'],\n [0.4, 'rgb(230,210,0)'], [0.7, 'rgb(255,255,255)'],\n [1, 'rgb(160,200,255)']\n ],\n\n Earth: [\n [0, 'rgb(0,0,130)'], [0.1, 'rgb(0,180,180)'],\n [0.2, 'rgb(40,210,40)'], [0.4, 'rgb(230,230,50)'],\n [0.6, 'rgb(120,70,20)'], [1, 'rgb(255,255,255)']\n ],\n\n Electric: [\n [0, 'rgb(0,0,0)'], [0.15, 'rgb(30,0,100)'],\n [0.4, 'rgb(120,0,100)'], [0.6, 'rgb(160,90,0)'],\n [0.8, 'rgb(230,200,0)'], [1, 'rgb(255,250,220)']\n ],\n\n Viridis: [\n [0, '#440154'], [0.06274509803921569, '#48186a'],\n [0.12549019607843137, '#472d7b'], [0.18823529411764706, '#424086'],\n [0.25098039215686274, '#3b528b'], [0.3137254901960784, '#33638d'],\n [0.3764705882352941, '#2c728e'], [0.4392156862745098, '#26828e'],\n [0.5019607843137255, '#21918c'], [0.5647058823529412, '#1fa088'],\n [0.6274509803921569, '#28ae80'], [0.6901960784313725, '#3fbc73'],\n [0.7529411764705882, '#5ec962'], [0.8156862745098039, '#84d44b'],\n [0.8784313725490196, '#addc30'], [0.9411764705882353, '#d8e219'],\n [1, '#fde725']\n ],\n\n Cividis: [\n [0.000000, 'rgb(0,32,76)'], [0.058824, 'rgb(0,42,102)'],\n [0.117647, 'rgb(0,52,110)'], [0.176471, 'rgb(39,63,108)'],\n [0.235294, 'rgb(60,74,107)'], [0.294118, 'rgb(76,85,107)'],\n [0.352941, 'rgb(91,95,109)'], [0.411765, 'rgb(104,106,112)'],\n [0.470588, 'rgb(117,117,117)'], [0.529412, 'rgb(131,129,120)'],\n [0.588235, 'rgb(146,140,120)'], [0.647059, 'rgb(161,152,118)'],\n [0.705882, 'rgb(176,165,114)'], [0.764706, 'rgb(192,177,109)'],\n [0.823529, 'rgb(209,191,102)'], [0.882353, 'rgb(225,204,92)'],\n [0.941176, 'rgb(243,219,79)'], [1.000000, 'rgb(255,233,69)']\n ]\n};\n\nvar defaultScale = scales.RdBu;\n\nfunction getScale(scl, dflt) {\n if(!dflt) dflt = defaultScale;\n if(!scl) return dflt;\n\n function parseScale() {\n try {\n scl = scales[scl] || JSON.parse(scl);\n } catch(e) {\n scl = dflt;\n }\n }\n\n if(typeof scl === 'string') {\n parseScale();\n // occasionally scl is double-JSON encoded...\n if(typeof scl === 'string') parseScale();\n }\n\n if(!isValidScaleArray(scl)) return dflt;\n return scl;\n}\n\n\nfunction isValidScaleArray(scl) {\n var highestVal = 0;\n\n if(!Array.isArray(scl) || scl.length < 2) return false;\n\n if(!scl[0] || !scl[scl.length - 1]) return false;\n\n if(+scl[0][0] !== 0 || +scl[scl.length - 1][0] !== 1) return false;\n\n for(var i = 0; i < scl.length; i++) {\n var si = scl[i];\n\n if(si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) {\n return false;\n }\n\n highestVal = +si[0];\n }\n\n return true;\n}\n\nfunction isValidScale(scl) {\n if(scales[scl] !== undefined) return true;\n else return isValidScaleArray(scl);\n}\n\nmodule.exports = {\n scales: scales,\n defaultScale: defaultScale,\n\n get: getScale,\n isValid: isValidScale\n};\n","'use strict';\n\n\n// for automatic alignment on dragging, <1/3 means left align,\n// >2/3 means right, and between is center. Pick the right fraction\n// based on where you are, and return the fraction corresponding to\n// that position on the object\nmodule.exports = function align(v, dv, v0, v1, anchor) {\n var vmin = (v - v0) / (v1 - v0);\n var vmax = vmin + dv / (v1 - v0);\n var vc = (vmin + vmax) / 2;\n\n // explicitly specified anchor\n if(anchor === 'left' || anchor === 'bottom') return vmin;\n if(anchor === 'center' || anchor === 'middle') return vc;\n if(anchor === 'right' || anchor === 'top') return vmax;\n\n // automatic based on position\n if(vmin < (2 / 3) - vc) return vmin;\n if(vmax > (4 / 3) - vc) return vmax;\n return vc;\n};\n","'use strict';\n\nvar Lib = require('../../lib');\n\n\n// set cursors pointing toward the closest corner/side,\n// to indicate alignment\n// x and y are 0-1, fractions of the plot area\nvar cursorset = [\n ['sw-resize', 's-resize', 'se-resize'],\n ['w-resize', 'move', 'e-resize'],\n ['nw-resize', 'n-resize', 'ne-resize']\n];\n\nmodule.exports = function getCursor(x, y, xanchor, yanchor) {\n if(xanchor === 'left') x = 0;\n else if(xanchor === 'center') x = 1;\n else if(xanchor === 'right') x = 2;\n else x = Lib.constrain(Math.floor(x * 3), 0, 2);\n\n if(yanchor === 'bottom') y = 0;\n else if(yanchor === 'middle') y = 1;\n else if(yanchor === 'top') y = 2;\n else y = Lib.constrain(Math.floor(y * 3), 0, 2);\n\n return cursorset[y][x];\n};\n","'use strict';\n\nexports.selectMode = function(dragmode) {\n return (\n dragmode === 'lasso' ||\n dragmode === 'select'\n );\n};\n\nexports.drawMode = function(dragmode) {\n return (\n dragmode === 'drawclosedpath' ||\n dragmode === 'drawopenpath' ||\n dragmode === 'drawline' ||\n dragmode === 'drawrect' ||\n dragmode === 'drawcircle'\n );\n};\n\nexports.openMode = function(dragmode) {\n return (\n dragmode === 'drawline' ||\n dragmode === 'drawopenpath'\n );\n};\n\nexports.rectMode = function(dragmode) {\n return (\n dragmode === 'select' ||\n dragmode === 'drawline' ||\n dragmode === 'drawrect' ||\n dragmode === 'drawcircle'\n );\n};\n\nexports.freeMode = function(dragmode) {\n return (\n dragmode === 'lasso' ||\n dragmode === 'drawclosedpath' ||\n dragmode === 'drawopenpath'\n );\n};\n\nexports.selectingOrDrawing = function(dragmode) {\n return (\n exports.freeMode(dragmode) ||\n exports.rectMode(dragmode)\n );\n};\n","'use strict';\n\nvar mouseOffset = require('mouse-event-offset');\nvar hasHover = require('has-hover');\nvar supportsPassive = require('has-passive-events');\n\nvar removeElement = require('../../lib').removeElement;\nvar constants = require('../../plots/cartesian/constants');\n\nvar dragElement = module.exports = {};\n\ndragElement.align = require('./align');\ndragElement.getCursor = require('./cursor');\n\nvar unhover = require('./unhover');\ndragElement.unhover = unhover.wrapped;\ndragElement.unhoverRaw = unhover.raw;\n\n/**\n * Abstracts click & drag interactions\n *\n * During the interaction, a \"coverSlip\" element - a transparent\n * div covering the whole page - is created, which has two key effects:\n * - Lets you drag beyond the boundaries of the plot itself without\n * dropping (but if you drag all the way out of the browser window the\n * interaction will end)\n * - Freezes the cursor: whatever mouse cursor the drag element had when the\n * interaction started gets copied to the coverSlip for use until mouseup\n *\n * If the user executes a drag bigger than MINDRAG, callbacks will fire as:\n * prepFn, moveFn (1 or more times), doneFn\n * If the user does not drag enough, prepFn and clickFn will fire.\n *\n * Note: If you cancel contextmenu, clickFn will fire even with a right click\n * (unlike native events) so you'll get a `plotly_click` event. Cancel context eg:\n * gd.addEventListener('contextmenu', function(e) { e.preventDefault(); });\n * TODO: we should probably turn this into a `config` parameter, so we can fix it\n * such that if you *don't* cancel contextmenu, we can prevent partial drags, which\n * put you in a weird state.\n *\n * If the user clicks multiple times quickly, clickFn will fire each time\n * but numClicks will increase to help you recognize doubleclicks.\n *\n * @param {object} options with keys:\n * element (required) the DOM element to drag\n * prepFn (optional) function(event, startX, startY)\n * executed on mousedown\n * startX and startY are the clientX and clientY pixel position\n * of the mousedown event\n * moveFn (optional) function(dx, dy)\n * executed on move, ONLY after we've exceeded MINDRAG\n * (we keep executing moveFn if you move back to where you started)\n * dx and dy are the net pixel offset of the drag,\n * dragged is true/false, has the mouse moved enough to\n * constitute a drag\n * doneFn (optional) function(e)\n * executed on mouseup, ONLY if we exceeded MINDRAG (so you can be\n * sure that moveFn has been called at least once)\n * numClicks is how many clicks we've registered within\n * a doubleclick time\n * e is the original mouseup event\n * clickFn (optional) function(numClicks, e)\n * executed on mouseup if we have NOT exceeded MINDRAG (ie moveFn\n * has not been called at all)\n * numClicks is how many clicks we've registered within\n * a doubleclick time\n * e is the original mousedown event\n * clampFn (optional, function(dx, dy) return [dx2, dy2])\n * Provide custom clamping function for small displacements.\n * By default, clamping is done using `minDrag` to x and y displacements\n * independently.\n */\ndragElement.init = function init(options) {\n var gd = options.gd;\n var numClicks = 1;\n var doubleClickDelay = gd._context.doubleClickDelay;\n var element = options.element;\n\n var startX,\n startY,\n newMouseDownTime,\n cursor,\n dragCover,\n initialEvent,\n initialTarget,\n rightClick;\n\n if(!gd._mouseDownTime) gd._mouseDownTime = 0;\n\n element.style.pointerEvents = 'all';\n\n element.onmousedown = onStart;\n\n if(!supportsPassive) {\n element.ontouchstart = onStart;\n } else {\n if(element._ontouchstart) {\n element.removeEventListener('touchstart', element._ontouchstart);\n }\n element._ontouchstart = onStart;\n element.addEventListener('touchstart', onStart, {passive: false});\n }\n\n function _clampFn(dx, dy, minDrag) {\n if(Math.abs(dx) < minDrag) dx = 0;\n if(Math.abs(dy) < minDrag) dy = 0;\n return [dx, dy];\n }\n\n var clampFn = options.clampFn || _clampFn;\n\n function onStart(e) {\n // make dragging and dragged into properties of gd\n // so that others can look at and modify them\n gd._dragged = false;\n gd._dragging = true;\n var offset = pointerOffset(e);\n startX = offset[0];\n startY = offset[1];\n initialTarget = e.target;\n initialEvent = e;\n rightClick = e.buttons === 2 || e.ctrlKey;\n\n // fix Fx.hover for touch events\n if(typeof e.clientX === 'undefined' && typeof e.clientY === 'undefined') {\n e.clientX = startX;\n e.clientY = startY;\n }\n\n newMouseDownTime = (new Date()).getTime();\n if(newMouseDownTime - gd._mouseDownTime < doubleClickDelay) {\n // in a click train\n numClicks += 1;\n } else {\n // new click train\n numClicks = 1;\n gd._mouseDownTime = newMouseDownTime;\n }\n\n if(options.prepFn) options.prepFn(e, startX, startY);\n\n if(hasHover && !rightClick) {\n dragCover = coverSlip();\n dragCover.style.cursor = window.getComputedStyle(element).cursor;\n } else if(!hasHover) {\n // document acts as a dragcover for mobile, bc we can't create dragcover dynamically\n dragCover = document;\n cursor = window.getComputedStyle(document.documentElement).cursor;\n document.documentElement.style.cursor = window.getComputedStyle(element).cursor;\n }\n\n document.addEventListener('mouseup', onDone);\n document.addEventListener('touchend', onDone);\n\n if(options.dragmode !== false) {\n e.preventDefault();\n document.addEventListener('mousemove', onMove);\n document.addEventListener('touchmove', onMove, {passive: false});\n }\n\n return;\n }\n\n function onMove(e) {\n e.preventDefault();\n\n var offset = pointerOffset(e);\n var minDrag = options.minDrag || constants.MINDRAG;\n var dxdy = clampFn(offset[0] - startX, offset[1] - startY, minDrag);\n var dx = dxdy[0];\n var dy = dxdy[1];\n\n if(dx || dy) {\n gd._dragged = true;\n dragElement.unhover(gd, e);\n }\n\n if(gd._dragged && options.moveFn && !rightClick) {\n gd._dragdata = {\n element: element,\n dx: dx,\n dy: dy\n };\n options.moveFn(dx, dy);\n }\n\n return;\n }\n\n function onDone(e) {\n delete gd._dragdata;\n\n if(options.dragmode !== false) {\n e.preventDefault();\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('touchmove', onMove);\n }\n\n document.removeEventListener('mouseup', onDone);\n document.removeEventListener('touchend', onDone);\n\n if(hasHover) {\n removeElement(dragCover);\n } else if(cursor) {\n dragCover.documentElement.style.cursor = cursor;\n cursor = null;\n }\n\n if(!gd._dragging) {\n gd._dragged = false;\n return;\n }\n gd._dragging = false;\n\n // don't count as a dblClick unless the mouseUp is also within\n // the dblclick delay\n if((new Date()).getTime() - gd._mouseDownTime > doubleClickDelay) {\n numClicks = Math.max(numClicks - 1, 1);\n }\n\n if(gd._dragged) {\n if(options.doneFn) options.doneFn();\n } else {\n if(options.clickFn) options.clickFn(numClicks, initialEvent);\n\n // If we haven't dragged, this should be a click. But because of the\n // coverSlip changing the element, the natural system might not generate one,\n // so we need to make our own. But right clicks don't normally generate\n // click events, only contextmenu events, which happen on mousedown.\n if(!rightClick) {\n var e2;\n\n try {\n e2 = new MouseEvent('click', e);\n } catch(err) {\n var offset = pointerOffset(e);\n e2 = document.createEvent('MouseEvents');\n e2.initMouseEvent('click',\n e.bubbles, e.cancelable,\n e.view, e.detail,\n e.screenX, e.screenY,\n offset[0], offset[1],\n e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n e.button, e.relatedTarget);\n }\n\n initialTarget.dispatchEvent(e2);\n }\n }\n\n gd._dragging = false;\n gd._dragged = false;\n return;\n }\n};\n\nfunction coverSlip() {\n var cover = document.createElement('div');\n\n cover.className = 'dragcover';\n var cStyle = cover.style;\n cStyle.position = 'fixed';\n cStyle.left = 0;\n cStyle.right = 0;\n cStyle.top = 0;\n cStyle.bottom = 0;\n cStyle.zIndex = 999999999;\n cStyle.background = 'none';\n\n document.body.appendChild(cover);\n\n return cover;\n}\n\ndragElement.coverSlip = coverSlip;\n\nfunction pointerOffset(e) {\n return mouseOffset(\n e.changedTouches ? e.changedTouches[0] : e,\n document.body\n );\n}\n","'use strict';\n\nvar Events = require('../../lib/events');\nvar throttle = require('../../lib/throttle');\nvar getGraphDiv = require('../../lib/dom').getGraphDiv;\n\nvar hoverConstants = require('../fx/constants');\n\nvar unhover = module.exports = {};\n\nunhover.wrapped = function(gd, evt, subplot) {\n gd = getGraphDiv(gd);\n\n // Important, clear any queued hovers\n if(gd._fullLayout) {\n throttle.clear(gd._fullLayout._uid + hoverConstants.HOVERID);\n }\n\n unhover.raw(gd, evt, subplot);\n};\n\n\n// remove hover effects on mouse out, and emit unhover event\nunhover.raw = function raw(gd, evt) {\n var fullLayout = gd._fullLayout;\n var oldhoverdata = gd._hoverdata;\n\n if(!evt) evt = {};\n if(evt.target && !gd._dragged &&\n Events.triggerHandler(gd, 'plotly_beforehover', evt) === false) {\n return;\n }\n\n fullLayout._hoverlayer.selectAll('g').remove();\n fullLayout._hoverlayer.selectAll('line').remove();\n fullLayout._hoverlayer.selectAll('circle').remove();\n gd._hoverdata = undefined;\n\n if(evt.target && oldhoverdata) {\n gd.emit('plotly_unhover', {\n event: evt,\n points: oldhoverdata\n });\n }\n};\n","'use strict';\n\nexports.dash = {\n valType: 'string',\n // string type usually doesn't take values... this one should really be\n // a special type or at least a special coercion function, from the GUI\n // you only get these values but elsewhere the user can supply a list of\n // dash lengths in px, and it will be honored\n values: ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'],\n dflt: 'solid',\n editType: 'style',\n description: [\n 'Sets the dash style of lines. Set to a dash type string',\n '(*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*)',\n 'or a dash length list in px (eg *5px,10px,2px,2px*).'\n ].join(' ')\n};\n\nexports.pattern = {\n shape: {\n valType: 'enumerated',\n values: ['', '/', '\\\\', 'x', '-', '|', '+', '.'],\n dflt: '',\n arrayOk: true,\n editType: 'style',\n description: [\n 'Sets the shape of the pattern fill.',\n 'By default, no pattern is used for filling the area.',\n ].join(' ')\n },\n fillmode: {\n valType: 'enumerated',\n values: ['replace', 'overlay'],\n dflt: 'replace',\n editType: 'style',\n description: [\n 'Determines whether `marker.color` should be used',\n 'as a default to `bgcolor` or a `fgcolor`.'\n ].join(' ')\n },\n bgcolor: {\n valType: 'color',\n arrayOk: true,\n editType: 'style',\n description: [\n 'When there is no colorscale sets the color of background pattern fill.',\n 'Defaults to a `marker.color` background when `fillmode` is *overlay*.',\n 'Otherwise, defaults to a transparent background.'\n ].join(' ')\n },\n fgcolor: {\n valType: 'color',\n arrayOk: true,\n editType: 'style',\n description: [\n 'When there is no colorscale sets the color of foreground pattern fill.',\n 'Defaults to a `marker.color` background when `fillmode` is *replace*.',\n 'Otherwise, defaults to dark grey or white',\n 'to increase contrast with the `bgcolor`.',\n ].join(' ')\n },\n fgopacity: {\n valType: 'number',\n editType: 'style',\n min: 0,\n max: 1,\n description: [\n 'Sets the opacity of the foreground pattern fill.',\n 'Defaults to a 0.5 when `fillmode` is *overlay*.',\n 'Otherwise, defaults to 1.'\n ].join(' ')\n },\n size: {\n valType: 'number',\n min: 0,\n dflt: 8,\n arrayOk: true,\n editType: 'style',\n description: [\n 'Sets the size of unit squares of the pattern fill in pixels,',\n 'which corresponds to the interval of repetition of the pattern.',\n ].join(' ')\n },\n solidity: {\n valType: 'number',\n min: 0,\n max: 1,\n dflt: 0.3,\n arrayOk: true,\n editType: 'style',\n description: [\n 'Sets the solidity of the pattern fill.',\n 'Solidity is roughly the fraction of the area filled by the pattern.',\n 'Solidity of 0 shows only the background color without pattern',\n 'and solidty of 1 shows only the foreground color without pattern.',\n ].join(' ')\n },\n editType: 'style',\n description: [\n 'Sets the pattern within the marker.'\n ].join(' '),\n};\n","'use strict';\n\nvar d3 = require('@plotly/d3');\nvar Lib = require('../../lib');\nvar numberFormat = Lib.numberFormat;\nvar isNumeric = require('fast-isnumeric');\nvar tinycolor = require('tinycolor2');\n\nvar Registry = require('../../registry');\nvar Color = require('../color');\nvar Colorscale = require('../colorscale');\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = require('../../lib/svg_text_utils');\n\nvar xmlnsNamespaces = require('../../constants/xmlns_namespaces');\nvar alignment = require('../../constants/alignment');\nvar LINE_SPACING = alignment.LINE_SPACING;\nvar DESELECTDIM = require('../../constants/interactions').DESELECTDIM;\n\nvar subTypes = require('../../traces/scatter/subtypes');\nvar makeBubbleSizeFn = require('../../traces/scatter/make_bubble_size_func');\nvar appendArrayPointValue = require('../../components/fx/helpers').appendArrayPointValue;\n\nvar drawing = module.exports = {};\n\n// -----------------------------------------------------\n// styling functions for plot elements\n// -----------------------------------------------------\n\ndrawing.font = function(s, family, size, color) {\n // also allow the form font(s, {family, size, color})\n if(Lib.isPlainObject(family)) {\n color = family.color;\n size = family.size;\n family = family.family;\n }\n if(family) s.style('font-family', family);\n if(size + 1) s.style('font-size', size + 'px');\n if(color) s.call(Color.fill, color);\n};\n\n/*\n * Positioning helpers\n * Note: do not use `setPosition` with nodes modified by\n * `svgTextUtils.convertToTspans`. Use `svgTextUtils.positionText`\n * instead, so that elements get updated to match.\n */\ndrawing.setPosition = function(s, x, y) { s.attr('x', x).attr('y', y); };\ndrawing.setSize = function(s, w, h) { s.attr('width', w).attr('height', h); };\ndrawing.setRect = function(s, x, y, w, h) {\n s.call(drawing.setPosition, x, y).call(drawing.setSize, w, h);\n};\n\n/** Translate node\n *\n * @param {object} d : calcdata point item\n * @param {sel} sel : d3 selction of node to translate\n * @param {object} xa : corresponding full xaxis object\n * @param {object} ya : corresponding full yaxis object\n *\n * @return {boolean} :\n * true if selection got translated\n * false if selection could not get translated\n */\ndrawing.translatePoint = function(d, sel, xa, ya) {\n var x = xa.c2p(d.x);\n var y = ya.c2p(d.y);\n\n if(isNumeric(x) && isNumeric(y) && sel.node()) {\n // for multiline text this works better\n if(sel.node().nodeName === 'text') {\n sel.attr('x', x).attr('y', y);\n } else {\n sel.attr('transform', strTranslate(x, y));\n }\n } else {\n return false;\n }\n\n return true;\n};\n\ndrawing.translatePoints = function(s, xa, ya) {\n s.each(function(d) {\n var sel = d3.select(this);\n drawing.translatePoint(d, sel, xa, ya);\n });\n};\n\ndrawing.hideOutsideRangePoint = function(d, sel, xa, ya, xcalendar, ycalendar) {\n sel.attr(\n 'display',\n (xa.isPtWithinRange(d, xcalendar) && ya.isPtWithinRange(d, ycalendar)) ? null : 'none'\n );\n};\n\ndrawing.hideOutsideRangePoints = function(traceGroups, subplot) {\n if(!subplot._hasClipOnAxisFalse) return;\n\n var xa = subplot.xaxis;\n var ya = subplot.yaxis;\n\n traceGroups.each(function(d) {\n var trace = d[0].trace;\n var xcalendar = trace.xcalendar;\n var ycalendar = trace.ycalendar;\n var selector = Registry.traceIs(trace, 'bar-like') ? '.bartext' : '.point,.textpoint';\n\n traceGroups.selectAll(selector).each(function(d) {\n drawing.hideOutsideRangePoint(d, d3.select(this), xa, ya, xcalendar, ycalendar);\n });\n });\n};\n\ndrawing.crispRound = function(gd, lineWidth, dflt) {\n // for lines that disable antialiasing we want to\n // make sure the width is an integer, and at least 1 if it's nonzero\n\n if(!lineWidth || !isNumeric(lineWidth)) return dflt || 0;\n\n // but not for static plots - these don't get antialiased anyway.\n if(gd._context.staticPlot) return lineWidth;\n\n if(lineWidth < 1) return 1;\n return Math.round(lineWidth);\n};\n\ndrawing.singleLineStyle = function(d, s, lw, lc, ld) {\n s.style('fill', 'none');\n var line = (((d || [])[0] || {}).trace || {}).line || {};\n var lw1 = lw || line.width || 0;\n var dash = ld || line.dash || '';\n\n Color.stroke(s, lc || line.color);\n drawing.dashLine(s, dash, lw1);\n};\n\ndrawing.lineGroupStyle = function(s, lw, lc, ld) {\n s.style('fill', 'none')\n .each(function(d) {\n var line = (((d || [])[0] || {}).trace || {}).line || {};\n var lw1 = lw || line.width || 0;\n var dash = ld || line.dash || '';\n\n d3.select(this)\n .call(Color.stroke, lc || line.color)\n .call(drawing.dashLine, dash, lw1);\n });\n};\n\ndrawing.dashLine = function(s, dash, lineWidth) {\n lineWidth = +lineWidth || 0;\n\n dash = drawing.dashStyle(dash, lineWidth);\n\n s.style({\n 'stroke-dasharray': dash,\n 'stroke-width': lineWidth + 'px'\n });\n};\n\ndrawing.dashStyle = function(dash, lineWidth) {\n lineWidth = +lineWidth || 1;\n var dlw = Math.max(lineWidth, 3);\n\n if(dash === 'solid') dash = '';\n else if(dash === 'dot') dash = dlw + 'px,' + dlw + 'px';\n else if(dash === 'dash') dash = (3 * dlw) + 'px,' + (3 * dlw) + 'px';\n else if(dash === 'longdash') dash = (5 * dlw) + 'px,' + (5 * dlw) + 'px';\n else if(dash === 'dashdot') {\n dash = (3 * dlw) + 'px,' + dlw + 'px,' + dlw + 'px,' + dlw + 'px';\n } else if(dash === 'longdashdot') {\n dash = (5 * dlw) + 'px,' + (2 * dlw) + 'px,' + dlw + 'px,' + (2 * dlw) + 'px';\n }\n // otherwise user wrote the dasharray themselves - leave it be\n\n return dash;\n};\n\nfunction setFillStyle(sel, trace, gd) {\n var markerPattern = trace.fillpattern;\n var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');\n if(patternShape) {\n var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);\n var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);\n var patternFGOpacity = markerPattern.fgopacity;\n var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);\n var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);\n var patternID = trace.uid;\n drawing.pattern(sel, 'point', gd, patternID,\n patternShape, patternSize, patternSolidity,\n undefined, markerPattern.fillmode,\n patternBGColor, patternFGColor, patternFGOpacity\n );\n } else if(trace.fillcolor) {\n sel.call(Color.fill, trace.fillcolor);\n }\n}\n\n// Same as fillGroupStyle, except in this case the selection may be a transition\ndrawing.singleFillStyle = function(sel, gd) {\n var node = d3.select(sel.node());\n var data = node.data();\n var trace = ((data[0] || [])[0] || {}).trace || {};\n setFillStyle(sel, trace, gd);\n};\n\ndrawing.fillGroupStyle = function(s, gd) {\n s.style('stroke-width', 0)\n .each(function(d) {\n var shape = d3.select(this);\n // N.B. 'd' won't be a calcdata item when\n // fill !== 'none' on a segment-less and marker-less trace\n if(d[0].trace) {\n setFillStyle(shape, d[0].trace, gd);\n }\n });\n};\n\nvar SYMBOLDEFS = require('./symbol_defs');\n\ndrawing.symbolNames = [];\ndrawing.symbolFuncs = [];\ndrawing.symbolBackOffs = [];\ndrawing.symbolNeedLines = {};\ndrawing.symbolNoDot = {};\ndrawing.symbolNoFill = {};\ndrawing.symbolList = [];\n\nObject.keys(SYMBOLDEFS).forEach(function(k) {\n var symDef = SYMBOLDEFS[k];\n var n = symDef.n;\n drawing.symbolList.push(\n n,\n String(n),\n k,\n\n n + 100,\n String(n + 100),\n k + '-open'\n );\n drawing.symbolNames[n] = k;\n drawing.symbolFuncs[n] = symDef.f;\n drawing.symbolBackOffs[n] = symDef.backoff || 0;\n\n if(symDef.needLine) {\n drawing.symbolNeedLines[n] = true;\n }\n if(symDef.noDot) {\n drawing.symbolNoDot[n] = true;\n } else {\n drawing.symbolList.push(\n n + 200,\n String(n + 200),\n k + '-dot',\n\n n + 300,\n String(n + 300),\n k + '-open-dot'\n );\n }\n if(symDef.noFill) {\n drawing.symbolNoFill[n] = true;\n }\n});\n\nvar MAXSYMBOL = drawing.symbolNames.length;\n// add a dot in the middle of the symbol\nvar DOTPATH = 'M0,0.5L0.5,0L0,-0.5L-0.5,0Z';\n\ndrawing.symbolNumber = function(v) {\n if(isNumeric(v)) {\n v = +v;\n } else if(typeof v === 'string') {\n var vbase = 0;\n if(v.indexOf('-open') > 0) {\n vbase = 100;\n v = v.replace('-open', '');\n }\n if(v.indexOf('-dot') > 0) {\n vbase += 200;\n v = v.replace('-dot', '');\n }\n v = drawing.symbolNames.indexOf(v);\n if(v >= 0) { v += vbase; }\n }\n\n return (v % 100 >= MAXSYMBOL || v >= 400) ?\n 0 : Math.floor(Math.max(v, 0));\n};\n\nfunction makePointPath(symbolNumber, r, t, s) {\n var base = symbolNumber % 100;\n return drawing.symbolFuncs[base](r, t, s) + (symbolNumber >= 200 ? DOTPATH : '');\n}\n\nvar HORZGRADIENT = {x1: 1, x2: 0, y1: 0, y2: 0};\nvar VERTGRADIENT = {x1: 0, x2: 0, y1: 1, y2: 0};\nvar stopFormatter = numberFormat('~f');\nvar gradientInfo = {\n radial: {node: 'radialGradient'},\n radialreversed: {node: 'radialGradient', reversed: true},\n horizontal: {node: 'linearGradient', attrs: HORZGRADIENT},\n horizontalreversed: {node: 'linearGradient', attrs: HORZGRADIENT, reversed: true},\n vertical: {node: 'linearGradient', attrs: VERTGRADIENT},\n verticalreversed: {node: 'linearGradient', attrs: VERTGRADIENT, reversed: true}\n};\n\n/**\n * gradient: create and apply a gradient fill\n *\n * @param {object} sel: d3 selection to apply this gradient to\n * You can use `selection.call(Drawing.gradient, ...)`\n * @param {DOM element} gd: the graph div `sel` is part of\n * @param {string} gradientID: a unique (within this plot) identifier\n * for this gradient, so that we don't create unnecessary definitions\n * @param {string} type: 'radial', 'horizontal', or 'vertical', optionally with\n * 'reversed' at the end. Normally radial goes center to edge,\n * horizontal goes right to left, and vertical goes bottom to top\n * @param {array} colorscale: as in attribute values, [[fraction, color], ...]\n * @param {string} prop: the property to apply to, 'fill' or 'stroke'\n */\ndrawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {\n var len = colorscale.length;\n var info = gradientInfo[type];\n var colorStops = new Array(len);\n for(var i = 0; i < len; i++) {\n if(info.reversed) {\n colorStops[len - 1 - i] = [stopFormatter((1 - colorscale[i][0]) * 100), colorscale[i][1]];\n } else {\n colorStops[i] = [stopFormatter(colorscale[i][0] * 100), colorscale[i][1]];\n }\n }\n\n var fullLayout = gd._fullLayout;\n var fullID = 'g' + fullLayout._uid + '-' + gradientID;\n\n var gradient = fullLayout._defs.select('.gradients')\n .selectAll('#' + fullID)\n .data([type + colorStops.join(';')], Lib.identity);\n\n gradient.exit().remove();\n\n gradient.enter()\n .append(info.node)\n .each(function() {\n var el = d3.select(this);\n if(info.attrs) el.attr(info.attrs);\n\n el.attr('id', fullID);\n\n var stops = el.selectAll('stop')\n .data(colorStops);\n stops.exit().remove();\n stops.enter().append('stop');\n\n stops.each(function(d) {\n var tc = tinycolor(d[1]);\n d3.select(this).attr({\n offset: d[0] + '%',\n 'stop-color': Color.tinyRGB(tc),\n 'stop-opacity': tc.getAlpha()\n });\n });\n });\n\n sel.style(prop, getFullUrl(fullID, gd))\n .style(prop + '-opacity', null);\n\n sel.classed('gradient_filled', true);\n};\n\n/**\n * pattern: create and apply a pattern fill\n *\n * @param {object} sel: d3 selection to apply this pattern to\n * You can use `selection.call(Drawing.pattern, ...)`\n * @param {string} calledBy: option to know the caller component\n * @param {DOM element} gd: the graph div `sel` is part of\n * @param {string} patternID: a unique (within this plot) identifier\n * for this pattern, so that we don't create unnecessary definitions\n * @param {number} size: size of unit squares for repetition of this pattern\n * @param {number} solidity: how solid lines of this pattern are\n * @param {string} mcc: color when painted with colorscale\n * @param {string} fillmode: fillmode for this pattern\n * @param {string} bgcolor: background color for this pattern\n * @param {string} fgcolor: foreground color for this pattern\n * @param {number} fgopacity: foreground opacity for this pattern\n */\ndrawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity, mcc, fillmode, bgcolor, fgcolor, fgopacity) {\n var isLegend = calledBy === 'legend';\n\n if(mcc) {\n if(fillmode === 'overlay') {\n bgcolor = mcc;\n fgcolor = Color.contrast(bgcolor);\n } else {\n bgcolor = undefined;\n fgcolor = mcc;\n }\n }\n\n var fullLayout = gd._fullLayout;\n var fullID = 'p' + fullLayout._uid + '-' + patternID;\n var width, height;\n\n // linear interpolation\n var linearFn = function(x, x0, x1, y0, y1) {\n return y0 + (y1 - y0) * (x - x0) / (x1 - x0);\n };\n\n var path, linewidth, radius;\n var patternTag;\n var patternAttrs = {};\n\n var fgC = tinycolor(fgcolor);\n var fgRGB = Color.tinyRGB(fgC);\n var fgAlpha = fgC.getAlpha();\n var opacity = fgopacity * fgAlpha;\n\n switch(shape) {\n case '/':\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) +\n 'M0,' + height + 'L' + width + ',0' +\n 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2);\n linewidth = solidity * size;\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case '\\\\':\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) +\n 'M0,0L' + width + ',' + height +\n 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2);\n linewidth = solidity * size;\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case 'x':\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) +\n 'M0,' + height + 'L' + width + ',0' +\n 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2) +\n 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) +\n 'M0,0L' + width + ',' + height +\n 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2);\n linewidth = size - size * Math.sqrt(1.0 - solidity);\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case '|':\n width = size;\n height = size;\n patternTag = 'path';\n path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height;\n linewidth = solidity * size;\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case '-':\n width = size;\n height = size;\n patternTag = 'path';\n path = 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2);\n linewidth = solidity * size;\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case '+':\n width = size;\n height = size;\n patternTag = 'path';\n path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height +\n 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2);\n linewidth = size - size * Math.sqrt(1.0 - solidity);\n patternTag = 'path';\n patternAttrs = {\n d: path,\n opacity: opacity,\n stroke: fgRGB,\n 'stroke-width': linewidth + 'px'\n };\n break;\n case '.':\n width = size;\n height = size;\n if(solidity < Math.PI / 4) {\n radius = Math.sqrt(solidity * size * size / Math.PI);\n } else {\n radius = linearFn(solidity, Math.PI / 4, 1.0, size / 2, size / Math.sqrt(2));\n }\n patternTag = 'circle';\n patternAttrs = {\n cx: width / 2,\n cy: height / 2,\n r: radius,\n opacity: opacity,\n fill: fgRGB\n };\n break;\n }\n\n var str = [\n shape || 'noSh',\n bgcolor || 'noBg',\n fgcolor || 'noFg',\n size,\n solidity\n ].join(';');\n\n var pattern = fullLayout._defs.select('.patterns')\n .selectAll('#' + fullID)\n .data([str], Lib.identity);\n\n pattern.exit().remove();\n\n pattern.enter()\n .append('pattern')\n .each(function() {\n var el = d3.select(this);\n\n el.attr({\n id: fullID,\n width: width + 'px',\n height: height + 'px',\n patternUnits: 'userSpaceOnUse',\n // for legends scale down patterns just a bit so that default size (i.e 8) nicely fit in small icons\n patternTransform: isLegend ? 'scale(0.8)' : ''\n });\n\n if(bgcolor) {\n var bgC = tinycolor(bgcolor);\n var bgRGB = Color.tinyRGB(bgC);\n var bgAlpha = bgC.getAlpha();\n\n var rects = el.selectAll('rect').data([0]);\n rects.exit().remove();\n rects.enter()\n .append('rect')\n .attr({\n width: width + 'px',\n height: height + 'px',\n fill: bgRGB,\n 'fill-opacity': bgAlpha,\n });\n }\n\n var patterns = el.selectAll(patternTag).data([0]);\n patterns.exit().remove();\n patterns.enter()\n .append(patternTag)\n .attr(patternAttrs);\n });\n\n sel.style('fill', getFullUrl(fullID, gd))\n .style('fill-opacity', null);\n\n sel.classed('pattern_filled', true);\n};\n\n/*\n * Make the gradients container and clear out any previous gradients.\n * We never collect all the gradients we need in one place,\n * so we can't ever remove gradients that have stopped being useful,\n * except all at once before a full redraw.\n * The upside of this is arbitrary points can share gradient defs\n */\ndrawing.initGradients = function(gd) {\n var fullLayout = gd._fullLayout;\n\n var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');\n gradientsGroup.selectAll('linearGradient,radialGradient').remove();\n\n d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);\n};\n\ndrawing.initPatterns = function(gd) {\n var fullLayout = gd._fullLayout;\n\n var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');\n patternsGroup.selectAll('pattern').remove();\n\n d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);\n};\n\ndrawing.getPatternAttr = function(mp, i, dflt) {\n if(mp && Lib.isArrayOrTypedArray(mp)) {\n return i < mp.length ? mp[i] : dflt;\n }\n return mp;\n};\n\ndrawing.pointStyle = function(s, trace, gd, pt) {\n if(!s.size()) return;\n\n var fns = drawing.makePointStyleFns(trace);\n\n s.each(function(d) {\n drawing.singlePointStyle(d, d3.select(this), trace, fns, gd, pt);\n });\n};\n\ndrawing.singlePointStyle = function(d, sel, trace, fns, gd, pt) {\n var marker = trace.marker;\n var markerLine = marker.line;\n\n if(pt && pt.i >= 0 && d.i === undefined) d.i = pt.i;\n\n sel.style('opacity',\n fns.selectedOpacityFn ? fns.selectedOpacityFn(d) :\n (d.mo === undefined ? marker.opacity : d.mo)\n );\n\n if(fns.ms2mrc) {\n var r;\n\n // handle multi-trace graph edit case\n if(d.ms === 'various' || marker.size === 'various') {\n r = 3;\n } else {\n r = fns.ms2mrc(d.ms);\n }\n\n // store the calculated size so hover can use it\n d.mrc = r;\n\n if(fns.selectedSizeFn) {\n r = d.mrc = fns.selectedSizeFn(d);\n }\n\n // turn the symbol into a sanitized number\n var x = drawing.symbolNumber(d.mx || marker.symbol) || 0;\n\n // save if this marker is open\n // because that impacts how to handle colors\n d.om = x % 200 >= 100;\n\n var angle = getMarkerAngle(d, trace);\n var standoff = getMarkerStandoff(d, trace);\n\n sel.attr('d', makePointPath(x, r, angle, standoff));\n }\n\n var perPointGradient = false;\n var fillColor, lineColor, lineWidth;\n\n // 'so' is suspected outliers, for box plots\n if(d.so) {\n lineWidth = markerLine.outlierwidth;\n lineColor = markerLine.outliercolor;\n fillColor = marker.outliercolor;\n } else {\n var markerLineWidth = (markerLine || {}).width;\n\n lineWidth = (\n d.mlw + 1 ||\n markerLineWidth + 1 ||\n // TODO: we need the latter for legends... can we get rid of it?\n (d.trace ? (d.trace.marker.line || {}).width : 0) + 1\n ) - 1 || 0;\n\n if('mlc' in d) lineColor = d.mlcc = fns.lineScale(d.mlc);\n // weird case: array wasn't long enough to apply to every point\n else if(Lib.isArrayOrTypedArray(markerLine.color)) lineColor = Color.defaultLine;\n else lineColor = markerLine.color;\n\n if(Lib.isArrayOrTypedArray(marker.color)) {\n fillColor = Color.defaultLine;\n perPointGradient = true;\n }\n\n if('mc' in d) {\n fillColor = d.mcc = fns.markerScale(d.mc);\n } else {\n fillColor = marker.color || marker.colors || 'rgba(0,0,0,0)';\n }\n\n if(fns.selectedColorFn) {\n fillColor = fns.selectedColorFn(d);\n }\n }\n\n if(d.om) {\n // open markers can't have zero linewidth, default to 1px,\n // and use fill color as stroke color\n sel.call(Color.stroke, fillColor)\n .style({\n 'stroke-width': (lineWidth || 1) + 'px',\n fill: 'none'\n });\n } else {\n sel.style('stroke-width', (d.isBlank ? 0 : lineWidth) + 'px');\n\n var markerGradient = marker.gradient;\n\n var gradientType = d.mgt;\n if(gradientType) perPointGradient = true;\n else gradientType = markerGradient && markerGradient.type;\n\n // for legend - arrays will propagate through here, but we don't need\n // to treat it as per-point.\n if(Lib.isArrayOrTypedArray(gradientType)) {\n gradientType = gradientType[0];\n if(!gradientInfo[gradientType]) gradientType = 0;\n }\n\n var markerPattern = marker.pattern;\n var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, d.i, '');\n\n if(gradientType && gradientType !== 'none') {\n var gradientColor = d.mgc;\n if(gradientColor) perPointGradient = true;\n else gradientColor = markerGradient.color;\n\n var gradientID = trace.uid;\n if(perPointGradient) gradientID += '-' + d.i;\n\n drawing.gradient(sel, gd, gradientID, gradientType,\n [[0, gradientColor], [1, fillColor]], 'fill');\n } else if(patternShape) {\n var perPointPattern = false;\n var fgcolor = markerPattern.fgcolor;\n if(!fgcolor && pt && pt.color) {\n fgcolor = pt.color;\n perPointPattern = true;\n }\n var patternFGColor = drawing.getPatternAttr(fgcolor, d.i, (pt && pt.color) || null);\n\n var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, d.i, null);\n var patternFGOpacity = markerPattern.fgopacity;\n var patternSize = drawing.getPatternAttr(markerPattern.size, d.i, 8);\n var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, d.i, 0.3);\n perPointPattern = perPointPattern || d.mcc ||\n Lib.isArrayOrTypedArray(markerPattern.shape) ||\n Lib.isArrayOrTypedArray(markerPattern.bgcolor) ||\n Lib.isArrayOrTypedArray(markerPattern.fgcolor) ||\n Lib.isArrayOrTypedArray(markerPattern.size) ||\n Lib.isArrayOrTypedArray(markerPattern.solidity);\n\n var patternID = trace.uid;\n if(perPointPattern) patternID += '-' + d.i;\n\n drawing.pattern(\n sel, 'point', gd, patternID,\n patternShape, patternSize, patternSolidity,\n d.mcc, markerPattern.fillmode,\n patternBGColor, patternFGColor, patternFGOpacity\n );\n } else {\n Lib.isArrayOrTypedArray(fillColor) ? Color.fill(sel, fillColor[d.i]) : Color.fill(sel, fillColor);\n }\n\n if(lineWidth) {\n Color.stroke(sel, lineColor);\n }\n }\n};\n\ndrawing.makePointStyleFns = function(trace) {\n var out = {};\n var marker = trace.marker;\n\n // allow array marker and marker line colors to be\n // scaled by given max and min to colorscales\n out.markerScale = drawing.tryColorscale(marker, '');\n out.lineScale = drawing.tryColorscale(marker, 'line');\n\n if(Registry.traceIs(trace, 'symbols')) {\n out.ms2mrc = subTypes.isBubble(trace) ?\n makeBubbleSizeFn(trace) :\n function() { return (marker.size || 6) / 2; };\n }\n\n if(trace.selectedpoints) {\n Lib.extendFlat(out, drawing.makeSelectedPointStyleFns(trace));\n }\n\n return out;\n};\n\ndrawing.makeSelectedPointStyleFns = function(trace) {\n var out = {};\n\n var selectedAttrs = trace.selected || {};\n var unselectedAttrs = trace.unselected || {};\n\n var marker = trace.marker || {};\n var selectedMarker = selectedAttrs.marker || {};\n var unselectedMarker = unselectedAttrs.marker || {};\n\n var mo = marker.opacity;\n var smo = selectedMarker.opacity;\n var usmo = unselectedMarker.opacity;\n var smoIsDefined = smo !== undefined;\n var usmoIsDefined = usmo !== undefined;\n\n if(Lib.isArrayOrTypedArray(mo) || smoIsDefined || usmoIsDefined) {\n out.selectedOpacityFn = function(d) {\n var base = d.mo === undefined ? marker.opacity : d.mo;\n\n if(d.selected) {\n return smoIsDefined ? smo : base;\n } else {\n return usmoIsDefined ? usmo : DESELECTDIM * base;\n }\n };\n }\n\n var mc = marker.color;\n var smc = selectedMarker.color;\n var usmc = unselectedMarker.color;\n\n if(smc || usmc) {\n out.selectedColorFn = function(d) {\n var base = d.mcc || mc;\n\n if(d.selected) {\n return smc || base;\n } else {\n return usmc || base;\n }\n };\n }\n\n var ms = marker.size;\n var sms = selectedMarker.size;\n var usms = unselectedMarker.size;\n var smsIsDefined = sms !== undefined;\n var usmsIsDefined = usms !== undefined;\n\n if(Registry.traceIs(trace, 'symbols') && (smsIsDefined || usmsIsDefined)) {\n out.selectedSizeFn = function(d) {\n var base = d.mrc || ms / 2;\n\n if(d.selected) {\n return smsIsDefined ? sms / 2 : base;\n } else {\n return usmsIsDefined ? usms / 2 : base;\n }\n };\n }\n\n return out;\n};\n\ndrawing.makeSelectedTextStyleFns = function(trace) {\n var out = {};\n\n var selectedAttrs = trace.selected || {};\n var unselectedAttrs = trace.unselected || {};\n\n var textFont = trace.textfont || {};\n var selectedTextFont = selectedAttrs.textfont || {};\n var unselectedTextFont = unselectedAttrs.textfont || {};\n\n var tc = textFont.color;\n var stc = selectedTextFont.color;\n var utc = unselectedTextFont.color;\n\n out.selectedTextColorFn = function(d) {\n var base = d.tc || tc;\n\n if(d.selected) {\n return stc || base;\n } else {\n if(utc) return utc;\n else return stc ? base : Color.addOpacity(base, DESELECTDIM);\n }\n };\n\n return out;\n};\n\ndrawing.selectedPointStyle = function(s, trace) {\n if(!s.size() || !trace.selectedpoints) return;\n\n var fns = drawing.makeSelectedPointStyleFns(trace);\n var marker = trace.marker || {};\n var seq = [];\n\n if(fns.selectedOpacityFn) {\n seq.push(function(pt, d) {\n pt.style('opacity', fns.selectedOpacityFn(d));\n });\n }\n\n if(fns.selectedColorFn) {\n seq.push(function(pt, d) {\n Color.fill(pt, fns.selectedColorFn(d));\n });\n }\n\n if(fns.selectedSizeFn) {\n seq.push(function(pt, d) {\n var mx = d.mx || marker.symbol || 0;\n var mrc2 = fns.selectedSizeFn(d);\n\n pt.attr('d', makePointPath(drawing.symbolNumber(mx), mrc2, getMarkerAngle(d, trace), getMarkerStandoff(d, trace)));\n\n // save for Drawing.selectedTextStyle\n d.mrc2 = mrc2;\n });\n }\n\n if(seq.length) {\n s.each(function(d) {\n var pt = d3.select(this);\n for(var i = 0; i < seq.length; i++) {\n seq[i](pt, d);\n }\n });\n }\n};\n\ndrawing.tryColorscale = function(marker, prefix) {\n var cont = prefix ? Lib.nestedProperty(marker, prefix).get() : marker;\n\n if(cont) {\n var colorArray = cont.color;\n if((cont.colorscale || cont._colorAx) && Lib.isArrayOrTypedArray(colorArray)) {\n return Colorscale.makeColorScaleFuncFromTrace(cont);\n }\n }\n return Lib.identity;\n};\n\nvar TEXTOFFSETSIGN = {\n start: 1, end: -1, middle: 0, bottom: 1, top: -1\n};\n\nfunction textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) {\n var group = d3.select(s.node().parentNode);\n\n var v = textPosition.indexOf('top') !== -1 ?\n 'top' :\n textPosition.indexOf('bottom') !== -1 ? 'bottom' : 'middle';\n var h = textPosition.indexOf('left') !== -1 ?\n 'end' :\n textPosition.indexOf('right') !== -1 ? 'start' : 'middle';\n\n // if markers are shown, offset a little more than\n // the nominal marker size\n // ie 2/1.6 * nominal, bcs some markers are a bit bigger\n var r = markerRadius ? markerRadius / 0.8 + 1 : 0;\n\n var numLines = (svgTextUtils.lineCount(s) - 1) * LINE_SPACING + 1;\n var dx = TEXTOFFSETSIGN[h] * r;\n var dy = fontSize * 0.75 + TEXTOFFSETSIGN[v] * r +\n (TEXTOFFSETSIGN[v] - 1) * numLines * fontSize / 2;\n\n // fix the overall text group position\n s.attr('text-anchor', h);\n if(!dontTouchParent) {\n group.attr('transform', strTranslate(dx, dy));\n }\n}\n\nfunction extracTextFontSize(d, trace) {\n var fontSize = d.ts || trace.textfont.size;\n return (isNumeric(fontSize) && fontSize > 0) ? fontSize : 0;\n}\n\n// draw text at points\ndrawing.textPointStyle = function(s, trace, gd) {\n if(!s.size()) return;\n\n var selectedTextColorFn;\n if(trace.selectedpoints) {\n var fns = drawing.makeSelectedTextStyleFns(trace);\n selectedTextColorFn = fns.selectedTextColorFn;\n }\n\n var texttemplate = trace.texttemplate;\n var fullLayout = gd._fullLayout;\n\n s.each(function(d) {\n var p = d3.select(this);\n\n var text = texttemplate ?\n Lib.extractOption(d, trace, 'txt', 'texttemplate') :\n Lib.extractOption(d, trace, 'tx', 'text');\n\n if(!text && text !== 0) {\n p.remove();\n return;\n }\n\n if(texttemplate) {\n var fn = trace._module.formatLabels;\n var labels = fn ? fn(d, trace, fullLayout) : {};\n var pointValues = {};\n appendArrayPointValue(pointValues, trace, d.i);\n var meta = trace._meta || {};\n text = Lib.texttemplateString(text, labels, fullLayout._d3locale, pointValues, d, meta);\n }\n\n var pos = d.tp || trace.textposition;\n var fontSize = extracTextFontSize(d, trace);\n var fontColor = selectedTextColorFn ?\n selectedTextColorFn(d) :\n (d.tc || trace.textfont.color);\n\n p.call(drawing.font,\n d.tf || trace.textfont.family,\n fontSize,\n fontColor)\n .text(text)\n .call(svgTextUtils.convertToTspans, gd)\n .call(textPointPosition, pos, fontSize, d.mrc);\n });\n};\n\ndrawing.selectedTextStyle = function(s, trace) {\n if(!s.size() || !trace.selectedpoints) return;\n\n var fns = drawing.makeSelectedTextStyleFns(trace);\n\n s.each(function(d) {\n var tx = d3.select(this);\n var tc = fns.selectedTextColorFn(d);\n var tp = d.tp || trace.textposition;\n var fontSize = extracTextFontSize(d, trace);\n\n Color.fill(tx, tc);\n var dontTouchParent = Registry.traceIs(trace, 'bar-like');\n textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent);\n });\n};\n\n// generalized Catmull-Rom splines, per\n// http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\nvar CatmullRomExp = 0.5;\ndrawing.smoothopen = function(pts, smoothness) {\n if(pts.length < 3) { return 'M' + pts.join('L');}\n var path = 'M' + pts[0];\n var tangents = [];\n var i;\n for(i = 1; i < pts.length - 1; i++) {\n tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n }\n path += 'Q' + tangents[0][0] + ' ' + pts[1];\n for(i = 2; i < pts.length - 1; i++) {\n path += 'C' + tangents[i - 2][1] + ' ' + tangents[i - 1][0] + ' ' + pts[i];\n }\n path += 'Q' + tangents[pts.length - 3][1] + ' ' + pts[pts.length - 1];\n return path;\n};\n\ndrawing.smoothclosed = function(pts, smoothness) {\n if(pts.length < 3) { return 'M' + pts.join('L') + 'Z'; }\n var path = 'M' + pts[0];\n var pLast = pts.length - 1;\n var tangents = [makeTangent(pts[pLast], pts[0], pts[1], smoothness)];\n var i;\n for(i = 1; i < pLast; i++) {\n tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n }\n tangents.push(\n makeTangent(pts[pLast - 1], pts[pLast], pts[0], smoothness)\n );\n\n for(i = 1; i <= pLast; i++) {\n path += 'C' + tangents[i - 1][1] + ' ' + tangents[i][0] + ' ' + pts[i];\n }\n path += 'C' + tangents[pLast][1] + ' ' + tangents[0][0] + ' ' + pts[0] + 'Z';\n return path;\n};\n\nvar lastDrawnX, lastDrawnY;\n\nfunction roundEnd(pt, isY, isLastPoint) {\n if(isLastPoint) pt = applyBackoff(pt);\n\n return isY ? roundY(pt[1]) : roundX(pt[0]);\n}\n\nfunction roundX(p) {\n var v = d3.round(p, 2);\n lastDrawnX = v;\n return v;\n}\n\nfunction roundY(p) {\n var v = d3.round(p, 2);\n lastDrawnY = v;\n return v;\n}\n\nfunction makeTangent(prevpt, thispt, nextpt, smoothness) {\n var d1x = prevpt[0] - thispt[0];\n var d1y = prevpt[1] - thispt[1];\n var d2x = nextpt[0] - thispt[0];\n var d2y = nextpt[1] - thispt[1];\n var d1a = Math.pow(d1x * d1x + d1y * d1y, CatmullRomExp / 2);\n var d2a = Math.pow(d2x * d2x + d2y * d2y, CatmullRomExp / 2);\n var numx = (d2a * d2a * d1x - d1a * d1a * d2x) * smoothness;\n var numy = (d2a * d2a * d1y - d1a * d1a * d2y) * smoothness;\n var denom1 = 3 * d2a * (d1a + d2a);\n var denom2 = 3 * d1a * (d1a + d2a);\n return [\n [\n roundX(thispt[0] + (denom1 && numx / denom1)),\n roundY(thispt[1] + (denom1 && numy / denom1))\n ], [\n roundX(thispt[0] - (denom2 && numx / denom2)),\n roundY(thispt[1] - (denom2 && numy / denom2))\n ]\n ];\n}\n\n// step paths - returns a generator function for paths\n// with the given step shape\nvar STEPPATH = {\n hv: function(p0, p1, isLastPoint) {\n return 'H' +\n roundX(p1[0]) + 'V' +\n roundEnd(p1, 1, isLastPoint);\n },\n vh: function(p0, p1, isLastPoint) {\n return 'V' +\n roundY(p1[1]) + 'H' +\n roundEnd(p1, 0, isLastPoint);\n },\n hvh: function(p0, p1, isLastPoint) {\n return 'H' +\n roundX((p0[0] + p1[0]) / 2) + 'V' +\n roundY(p1[1]) + 'H' +\n roundEnd(p1, 0, isLastPoint);\n },\n vhv: function(p0, p1, isLastPoint) {\n return 'V' +\n roundY((p0[1] + p1[1]) / 2) + 'H' +\n roundX(p1[0]) + 'V' +\n roundEnd(p1, 1, isLastPoint);\n }\n};\nvar STEPLINEAR = function(p0, p1, isLastPoint) {\n return 'L' +\n roundEnd(p1, 0, isLastPoint) + ',' +\n roundEnd(p1, 1, isLastPoint);\n};\ndrawing.steps = function(shape) {\n var onestep = STEPPATH[shape] || STEPLINEAR;\n return function(pts) {\n var path = 'M' + roundX(pts[0][0]) + ',' + roundY(pts[0][1]);\n var len = pts.length;\n for(var i = 1; i < len; i++) {\n path += onestep(pts[i - 1], pts[i], i === len - 1);\n }\n return path;\n };\n};\n\nfunction applyBackoff(pt, start) {\n var backoff = pt.backoff;\n var trace = pt.trace;\n var d = pt.d;\n var i = pt.i;\n\n if(backoff && trace &&\n trace.marker &&\n trace.marker.angle % 360 === 0 &&\n trace.line &&\n trace.line.shape !== 'spline'\n ) {\n var arrayBackoff = Lib.isArrayOrTypedArray(backoff);\n var end = pt;\n\n var x1 = start ? start[0] : lastDrawnX || 0;\n var y1 = start ? start[1] : lastDrawnY || 0;\n\n var x2 = end[0];\n var y2 = end[1];\n\n var dx = x2 - x1;\n var dy = y2 - y1;\n\n var t = Math.atan2(dy, dx);\n\n var b = arrayBackoff ? backoff[i] : backoff;\n\n if(b === 'auto') {\n var endI = end.i;\n if(trace.type === 'scatter') endI--; // Why we need this hack?\n\n var endMarker = end.marker;\n var endMarkerSymbol = endMarker.symbol;\n if(Lib.isArrayOrTypedArray(endMarkerSymbol)) endMarkerSymbol = endMarkerSymbol[endI];\n\n var endMarkerSize = endMarker.size;\n if(Lib.isArrayOrTypedArray(endMarkerSize)) endMarkerSize = endMarkerSize[endI];\n\n b = endMarker ? drawing.symbolBackOffs[drawing.symbolNumber(endMarkerSymbol)] * endMarkerSize : 0;\n b += drawing.getMarkerStandoff(d[endI], trace) || 0;\n }\n\n var x = x2 - b * Math.cos(t);\n var y = y2 - b * Math.sin(t);\n\n if(\n ((x <= x2 && x >= x1) || (x >= x2 && x <= x1)) &&\n ((y <= y2 && y >= y1) || (y >= y2 && y <= y1))\n ) {\n pt = [x, y];\n }\n }\n\n return pt;\n}\n\ndrawing.applyBackoff = applyBackoff;\n\n// off-screen svg render testing element, shared by the whole page\n// uses the id 'js-plotly-tester' and stores it in drawing.tester\ndrawing.makeTester = function() {\n var tester = Lib.ensureSingleById(d3.select('body'), 'svg', 'js-plotly-tester', function(s) {\n s.attr(xmlnsNamespaces.svgAttrs)\n .style({\n position: 'absolute',\n left: '-10000px',\n top: '-10000px',\n width: '9000px',\n height: '9000px',\n 'z-index': '1'\n });\n });\n\n // browsers differ on how they describe the bounding rect of\n // the svg if its contents spill over... so make a 1x1px\n // reference point we can measure off of.\n var testref = Lib.ensureSingle(tester, 'path', 'js-reference-point', function(s) {\n s.attr('d', 'M0,0H1V1H0Z')\n .style({\n 'stroke-width': 0,\n fill: 'black'\n });\n });\n\n drawing.tester = tester;\n drawing.testref = testref;\n};\n\n/*\n * use our offscreen tester to get a clientRect for an element,\n * in a reference frame where it isn't translated (or transformed) and\n * its anchor point is at (0,0)\n * always returns a copy of the bbox, so the caller can modify it safely\n *\n * @param {SVGElement} node: the element to measure. If possible this should be\n * a or MathJax element that's already passed through\n * `convertToTspans` because in that case we can cache the results, but it's\n * possible to pass in any svg element.\n *\n * @param {boolean} inTester: is this element already in `drawing.tester`?\n * If you are measuring a dummy element, rather than one you really intend\n * to use on the plot, making it in `drawing.tester` in the first place\n * allows us to test faster because it cuts out cloning and appending it.\n *\n * @param {string} hash: for internal use only, if we already know the cache key\n * for this element beforehand.\n *\n * @return {object}: a plain object containing the width, height, left, right,\n * top, and bottom of `node`\n */\ndrawing.savedBBoxes = {};\nvar savedBBoxesCount = 0;\nvar maxSavedBBoxes = 10000;\n\ndrawing.bBox = function(node, inTester, hash) {\n /*\n * Cache elements we've already measured so we don't have to\n * remeasure the same thing many times\n * We have a few bBox callers though who pass a node larger than\n * a or a MathJax , such as an axis group containing many labels.\n * These will not generate a hash (unless we figure out an appropriate\n * hash key for them) and thus we will not hash them.\n */\n if(!hash) hash = nodeHash(node);\n var out;\n if(hash) {\n out = drawing.savedBBoxes[hash];\n if(out) return Lib.extendFlat({}, out);\n } else if(node.childNodes.length === 1) {\n /*\n * If we have only one child element, which is itself hashable, make\n * a new hash from this element plus its x,y,transform\n * These bounding boxes *include* x,y,transform - mostly for use by\n * callers trying to avoid overlaps (ie titles)\n */\n var innerNode = node.childNodes[0];\n\n hash = nodeHash(innerNode);\n if(hash) {\n var x = +innerNode.getAttribute('x') || 0;\n var y = +innerNode.getAttribute('y') || 0;\n var transform = innerNode.getAttribute('transform');\n\n if(!transform) {\n // in this case, just varying x and y, don't bother caching\n // the final bBox because the alteration is quick.\n var innerBB = drawing.bBox(innerNode, false, hash);\n if(x) {\n innerBB.left += x;\n innerBB.right += x;\n }\n if(y) {\n innerBB.top += y;\n innerBB.bottom += y;\n }\n return innerBB;\n }\n /*\n * else we have a transform - rather than make a complicated\n * (and error-prone and probably slow) transform parser/calculator,\n * just continue on calculating the boundingClientRect of the group\n * and use the new composite hash to cache it.\n * That said, `innerNode.transform.baseVal` is an array of\n * `SVGTransform` objects, that *do* seem to have a nice matrix\n * multiplication interface that we could use to avoid making\n * another getBoundingClientRect call...\n */\n hash += '~' + x + '~' + y + '~' + transform;\n\n out = drawing.savedBBoxes[hash];\n if(out) return Lib.extendFlat({}, out);\n }\n }\n var testNode, tester;\n if(inTester) {\n testNode = node;\n } else {\n tester = drawing.tester.node();\n\n // copy the node to test into the tester\n testNode = node.cloneNode(true);\n tester.appendChild(testNode);\n }\n\n // standardize its position (and newline tspans if any)\n d3.select(testNode)\n .attr('transform', null)\n .call(svgTextUtils.positionText, 0, 0);\n\n var testRect = testNode.getBoundingClientRect();\n var refRect = drawing.testref\n .node()\n .getBoundingClientRect();\n\n if(!inTester) tester.removeChild(testNode);\n\n var bb = {\n height: testRect.height,\n width: testRect.width,\n left: testRect.left - refRect.left,\n top: testRect.top - refRect.top,\n right: testRect.right - refRect.left,\n bottom: testRect.bottom - refRect.top\n };\n\n // make sure we don't have too many saved boxes,\n // or a long session could overload on memory\n // by saving boxes for long-gone elements\n if(savedBBoxesCount >= maxSavedBBoxes) {\n drawing.savedBBoxes = {};\n savedBBoxesCount = 0;\n }\n\n // cache this bbox\n if(hash) drawing.savedBBoxes[hash] = bb;\n savedBBoxesCount++;\n\n return Lib.extendFlat({}, bb);\n};\n\n// capture everything about a node (at least in our usage) that\n// impacts its bounding box, given that bBox clears x, y, and transform\nfunction nodeHash(node) {\n var inputText = node.getAttribute('data-unformatted');\n if(inputText === null) return;\n return inputText +\n node.getAttribute('data-math') +\n node.getAttribute('text-anchor') +\n node.getAttribute('style');\n}\n\n/**\n * Set clipPath URL in a way that work for all situations.\n *\n * In details, graphs on pages with HTML tags need to prepend\n * the clip path ids with the page's base url EXCEPT during toImage exports.\n *\n * @param {d3 selection} s : node to add clip-path attribute\n * @param {string} localId : local clip-path (w/o base url) id\n * @param {DOM element || object} gd\n * - context._baseUrl {string}\n * - context._exportedPlot {boolean}\n */\ndrawing.setClipUrl = function(s, localId, gd) {\n s.attr('clip-path', getFullUrl(localId, gd));\n};\n\nfunction getFullUrl(localId, gd) {\n if(!localId) return null;\n\n var context = gd._context;\n var baseUrl = context._exportedPlot ? '' : (context._baseUrl || '');\n return baseUrl ?\n 'url(\\'' + baseUrl + '#' + localId + '\\')' :\n 'url(#' + localId + ')';\n}\n\ndrawing.getTranslate = function(element) {\n // Note the separator [^\\d] between x and y in this regex\n // We generally use ',' but IE will convert it to ' '\n var re = /.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/;\n var getter = element.attr ? 'attr' : 'getAttribute';\n var transform = element[getter]('transform') || '';\n\n var translate = transform.replace(re, function(match, p1, p2) {\n return [p1, p2].join(' ');\n })\n .split(' ');\n\n return {\n x: +translate[0] || 0,\n y: +translate[1] || 0\n };\n};\n\ndrawing.setTranslate = function(element, x, y) {\n var re = /(\\btranslate\\(.*?\\);?)/;\n var getter = element.attr ? 'attr' : 'getAttribute';\n var setter = element.attr ? 'attr' : 'setAttribute';\n var transform = element[getter]('transform') || '';\n\n x = x || 0;\n y = y || 0;\n\n transform = transform.replace(re, '').trim();\n transform += strTranslate(x, y);\n transform = transform.trim();\n\n element[setter]('transform', transform);\n\n return transform;\n};\n\ndrawing.getScale = function(element) {\n var re = /.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/;\n var getter = element.attr ? 'attr' : 'getAttribute';\n var transform = element[getter]('transform') || '';\n\n var translate = transform.replace(re, function(match, p1, p2) {\n return [p1, p2].join(' ');\n })\n .split(' ');\n\n return {\n x: +translate[0] || 1,\n y: +translate[1] || 1\n };\n};\n\ndrawing.setScale = function(element, x, y) {\n var re = /(\\bscale\\(.*?\\);?)/;\n var getter = element.attr ? 'attr' : 'getAttribute';\n var setter = element.attr ? 'attr' : 'setAttribute';\n var transform = element[getter]('transform') || '';\n\n x = x || 1;\n y = y || 1;\n\n transform = transform.replace(re, '').trim();\n transform += 'scale(' + x + ',' + y + ')';\n transform = transform.trim();\n\n element[setter]('transform', transform);\n\n return transform;\n};\n\nvar SCALE_RE = /\\s*sc.*/;\n\ndrawing.setPointGroupScale = function(selection, xScale, yScale) {\n xScale = xScale || 1;\n yScale = yScale || 1;\n\n if(!selection) return;\n\n // The same scale transform for every point:\n var scale = (xScale === 1 && yScale === 1) ?\n '' :\n 'scale(' + xScale + ',' + yScale + ')';\n\n selection.each(function() {\n var t = (this.getAttribute('transform') || '').replace(SCALE_RE, '');\n t += scale;\n t = t.trim();\n this.setAttribute('transform', t);\n });\n};\n\nvar TEXT_POINT_LAST_TRANSLATION_RE = /translate\\([^)]*\\)\\s*$/;\n\ndrawing.setTextPointsScale = function(selection, xScale, yScale) {\n if(!selection) return;\n\n selection.each(function() {\n var transforms;\n var el = d3.select(this);\n var text = el.select('text');\n\n if(!text.node()) return;\n\n var x = parseFloat(text.attr('x') || 0);\n var y = parseFloat(text.attr('y') || 0);\n\n var existingTransform = (el.attr('transform') || '').match(TEXT_POINT_LAST_TRANSLATION_RE);\n\n if(xScale === 1 && yScale === 1) {\n transforms = [];\n } else {\n transforms = [\n strTranslate(x, y),\n 'scale(' + xScale + ',' + yScale + ')',\n strTranslate(-x, -y),\n ];\n }\n\n if(existingTransform) {\n transforms.push(existingTransform);\n }\n\n el.attr('transform', transforms.join(''));\n });\n};\n\nfunction getMarkerStandoff(d, trace) {\n var standoff;\n\n if(d) standoff = d.mf;\n\n if(standoff === undefined) {\n standoff = trace.marker ? trace.marker.standoff || 0 : 0;\n }\n\n if(!trace._geo && !trace._xA) {\n // case of legends\n return -standoff;\n }\n\n return standoff;\n}\n\ndrawing.getMarkerStandoff = getMarkerStandoff;\n\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar sin = Math.sin;\n\nfunction rotate(t, xy) {\n var x = xy[0];\n var y = xy[1];\n return [\n x * cos(t) - y * sin(t),\n x * sin(t) + y * cos(t)\n ];\n}\n\nvar previousLon;\nvar previousLat;\nvar previousX;\nvar previousY;\nvar previousI;\nvar previousTraceUid;\n\nfunction getMarkerAngle(d, trace) {\n var angle = d.ma;\n\n if(angle === undefined) {\n angle = trace.marker.angle;\n if(!angle || Lib.isArrayOrTypedArray(angle)) {\n angle = 0;\n }\n }\n\n var x, y;\n var ref = trace.marker.angleref;\n if(ref === 'previous' || ref === 'north') {\n if(trace._geo) {\n var p = trace._geo.project(d.lonlat);\n x = p[0];\n y = p[1];\n } else {\n var xa = trace._xA;\n var ya = trace._yA;\n if(xa && ya) {\n x = xa.c2p(d.x);\n y = ya.c2p(d.y);\n } else {\n // case of legends\n return 90;\n }\n }\n\n if(trace._geo) {\n var lon = d.lonlat[0];\n var lat = d.lonlat[1];\n\n var north = trace._geo.project([\n lon,\n lat + 1e-5 // epsilon\n ]);\n\n var east = trace._geo.project([\n lon + 1e-5, // epsilon\n lat\n ]);\n\n var u = atan2(\n east[1] - y,\n east[0] - x\n );\n\n var v = atan2(\n north[1] - y,\n north[0] - x\n );\n\n var t;\n if(ref === 'north') {\n t = angle / 180 * Math.PI;\n // To use counter-clockwise angles i.e.\n // East: 90, West: -90\n // to facilitate wind visualisations\n // in future we should use t = -t here.\n } else if(ref === 'previous') {\n var lon1 = lon / 180 * Math.PI;\n var lat1 = lat / 180 * Math.PI;\n var lon2 = previousLon / 180 * Math.PI;\n var lat2 = previousLat / 180 * Math.PI;\n\n var dLon = lon2 - lon1;\n\n var deltaY = cos(lat2) * sin(dLon);\n var deltaX = sin(lat2) * cos(lat1) - cos(lat2) * sin(lat1) * cos(dLon);\n\n t = -atan2(\n deltaY,\n deltaX\n ) - Math.PI;\n\n previousLon = lon;\n previousLat = lat;\n }\n\n var A = rotate(u, [cos(t), 0]);\n var B = rotate(v, [sin(t), 0]);\n\n angle = atan2(\n A[1] + B[1],\n A[0] + B[0]\n ) / Math.PI * 180;\n\n if(ref === 'previous' && !(\n previousTraceUid === trace.uid &&\n d.i === previousI + 1\n )) {\n angle = null;\n }\n }\n\n if(ref === 'previous' && !trace._geo) {\n if(\n previousTraceUid === trace.uid &&\n d.i === previousI + 1 &&\n isNumeric(x) &&\n isNumeric(y)\n ) {\n var dX = x - previousX;\n var dY = y - previousY;\n\n var shape = trace.line ? trace.line.shape || '' : '';\n\n var lastShapeChar = shape.slice(shape.length - 1);\n if(lastShapeChar === 'h') dY = 0;\n if(lastShapeChar === 'v') dX = 0;\n\n angle += atan2(dY, dX) / Math.PI * 180 + 90;\n } else {\n angle = null;\n }\n }\n }\n\n previousX = x;\n previousY = y;\n previousI = d.i;\n previousTraceUid = trace.uid;\n\n return angle;\n}\n\ndrawing.getMarkerAngle = getMarkerAngle;\n","'use strict';\n\nvar parseSvgPath = require('parse-svg-path');\nvar round = require('@plotly/d3').round;\n\n/** Marker symbol definitions\n * users can specify markers either by number or name\n * add 100 (or '-open') and you get an open marker\n * open markers have no fill and use line color as the stroke color\n * add 200 (or '-dot') and you get a dot in the middle\n * add both and you get both\n */\n\n\nvar emptyPath = 'M0,0Z';\nvar sqrt2 = Math.sqrt(2);\nvar sqrt3 = Math.sqrt(3);\nvar PI = Math.PI;\nvar cos = Math.cos;\nvar sin = Math.sin;\n\nmodule.exports = {\n circle: {\n n: 0,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n var circle = 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs + 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z';\n return standoff ? align(angle, standoff, circle) : circle;\n }\n },\n square: {\n n: 1,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n }\n },\n diamond: {\n n: 2,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rd = round(r * 1.3, 2);\n return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z');\n }\n },\n cross: {\n n: 3,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rc = round(r * 0.4, 2);\n var rc2 = round(r * 1.2, 2);\n return align(angle, standoff, 'M' + rc2 + ',' + rc + 'H' + rc + 'V' + rc2 + 'H-' + rc +\n 'V' + rc + 'H-' + rc2 + 'V-' + rc + 'H-' + rc + 'V-' + rc2 +\n 'H' + rc + 'V-' + rc + 'H' + rc2 + 'Z');\n }\n },\n x: {\n n: 4,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r * 0.8 / sqrt2, 2);\n var ne = 'l' + rx + ',' + rx;\n var se = 'l' + rx + ',-' + rx;\n var sw = 'l-' + rx + ',-' + rx;\n var nw = 'l-' + rx + ',' + rx;\n return align(angle, standoff, 'M0,' + rx + ne + se + sw + se + sw + nw + sw + nw + ne + nw + ne + 'Z');\n }\n },\n 'triangle-up': {\n n: 5,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, 'M-' + rt + ',' + r2 + 'H' + rt + 'L0,-' + rs + 'Z');\n }\n },\n 'triangle-down': {\n n: 6,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, 'M-' + rt + ',-' + r2 + 'H' + rt + 'L0,' + rs + 'Z');\n }\n },\n 'triangle-left': {\n n: 7,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, 'M' + r2 + ',-' + rt + 'V' + rt + 'L-' + rs + ',0Z');\n }\n },\n 'triangle-right': {\n n: 8,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, 'M-' + r2 + ',-' + rt + 'V' + rt + 'L' + rs + ',0Z');\n }\n },\n 'triangle-ne': {\n n: 9,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, 'M-' + r2 + ',-' + r1 + 'H' + r1 + 'V' + r2 + 'Z');\n }\n },\n 'triangle-se': {\n n: 10,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, 'M' + r1 + ',-' + r2 + 'V' + r1 + 'H-' + r2 + 'Z');\n }\n },\n 'triangle-sw': {\n n: 11,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, 'M' + r2 + ',' + r1 + 'H-' + r1 + 'V-' + r2 + 'Z');\n }\n },\n 'triangle-nw': {\n n: 12,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, 'M-' + r1 + ',' + r2 + 'V-' + r1 + 'H' + r2 + 'Z');\n }\n },\n pentagon: {\n n: 13,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x1 = round(r * 0.951, 2);\n var x2 = round(r * 0.588, 2);\n var y0 = round(-r, 2);\n var y1 = round(r * -0.309, 2);\n var y2 = round(r * 0.809, 2);\n return align(angle, standoff, 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2 + 'H-' + x2 +\n 'L-' + x1 + ',' + y1 + 'L0,' + y0 + 'Z');\n }\n },\n hexagon: {\n n: 14,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var y0 = round(r, 2);\n var y1 = round(r / 2, 2);\n var x = round(r * sqrt3 / 2, 2);\n return align(angle, standoff, 'M' + x + ',-' + y1 + 'V' + y1 + 'L0,' + y0 +\n 'L-' + x + ',' + y1 + 'V-' + y1 + 'L0,-' + y0 + 'Z');\n }\n },\n hexagon2: {\n n: 15,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x0 = round(r, 2);\n var x1 = round(r / 2, 2);\n var y = round(r * sqrt3 / 2, 2);\n return align(angle, standoff, 'M-' + x1 + ',' + y + 'H' + x1 + 'L' + x0 +\n ',0L' + x1 + ',-' + y + 'H-' + x1 + 'L-' + x0 + ',0Z');\n }\n },\n octagon: {\n n: 16,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var a = round(r * 0.924, 2);\n var b = round(r * 0.383, 2);\n return align(angle, standoff, 'M-' + b + ',-' + a + 'H' + b + 'L' + a + ',-' + b + 'V' + b +\n 'L' + b + ',' + a + 'H-' + b + 'L-' + a + ',' + b + 'V-' + b + 'Z');\n }\n },\n star: {\n n: 17,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = r * 1.4;\n var x1 = round(rs * 0.225, 2);\n var x2 = round(rs * 0.951, 2);\n var x3 = round(rs * 0.363, 2);\n var x4 = round(rs * 0.588, 2);\n var y0 = round(-rs, 2);\n var y1 = round(rs * -0.309, 2);\n var y3 = round(rs * 0.118, 2);\n var y4 = round(rs * 0.809, 2);\n var y5 = round(rs * 0.382, 2);\n return align(angle, standoff, 'M' + x1 + ',' + y1 + 'H' + x2 + 'L' + x3 + ',' + y3 +\n 'L' + x4 + ',' + y4 + 'L0,' + y5 + 'L-' + x4 + ',' + y4 +\n 'L-' + x3 + ',' + y3 + 'L-' + x2 + ',' + y1 + 'H-' + x1 +\n 'L0,' + y0 + 'Z');\n }\n },\n hexagram: {\n n: 18,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var y = round(r * 0.66, 2);\n var x1 = round(r * 0.38, 2);\n var x2 = round(r * 0.76, 2);\n return align(angle, standoff, 'M-' + x2 + ',0l-' + x1 + ',-' + y + 'h' + x2 +\n 'l' + x1 + ',-' + y + 'l' + x1 + ',' + y + 'h' + x2 +\n 'l-' + x1 + ',' + y + 'l' + x1 + ',' + y + 'h-' + x2 +\n 'l-' + x1 + ',' + y + 'l-' + x1 + ',-' + y + 'h-' + x2 + 'Z');\n }\n },\n 'star-triangle-up': {\n n: 19,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * sqrt3 * 0.8, 2);\n var y1 = round(r * 0.8, 2);\n var y2 = round(r * 1.6, 2);\n var rc = round(r * 4, 2);\n var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n return align(angle, standoff, 'M-' + x + ',' + y1 + aPart + x + ',' + y1 +\n aPart + '0,-' + y2 + aPart + '-' + x + ',' + y1 + 'Z');\n }\n },\n 'star-triangle-down': {\n n: 20,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * sqrt3 * 0.8, 2);\n var y1 = round(r * 0.8, 2);\n var y2 = round(r * 1.6, 2);\n var rc = round(r * 4, 2);\n var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n return align(angle, standoff, 'M' + x + ',-' + y1 + aPart + '-' + x + ',-' + y1 +\n aPart + '0,' + y2 + aPart + x + ',-' + y1 + 'Z');\n }\n },\n 'star-square': {\n n: 21,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rp = round(r * 1.1, 2);\n var rc = round(r * 2, 2);\n var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n return align(angle, standoff, 'M-' + rp + ',-' + rp + aPart + '-' + rp + ',' + rp +\n aPart + rp + ',' + rp + aPart + rp + ',-' + rp +\n aPart + '-' + rp + ',-' + rp + 'Z');\n }\n },\n 'star-diamond': {\n n: 22,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rp = round(r * 1.4, 2);\n var rc = round(r * 1.9, 2);\n var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n return align(angle, standoff, 'M-' + rp + ',0' + aPart + '0,' + rp +\n aPart + rp + ',0' + aPart + '0,-' + rp +\n aPart + '-' + rp + ',0' + 'Z');\n }\n },\n 'diamond-tall': {\n n: 23,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * 0.7, 2);\n var y = round(r * 1.4, 2);\n return align(angle, standoff, 'M0,' + y + 'L' + x + ',0L0,-' + y + 'L-' + x + ',0Z');\n }\n },\n 'diamond-wide': {\n n: 24,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * 1.4, 2);\n var y = round(r * 0.7, 2);\n return align(angle, standoff, 'M0,' + y + 'L' + x + ',0L0,-' + y + 'L-' + x + ',0Z');\n }\n },\n hourglass: {\n n: 25,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M' + rs + ',' + rs + 'H-' + rs + 'L' + rs + ',-' + rs + 'H-' + rs + 'Z');\n },\n noDot: true\n },\n bowtie: {\n n: 26,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M' + rs + ',' + rs + 'V-' + rs + 'L-' + rs + ',' + rs + 'V-' + rs + 'Z');\n },\n noDot: true\n },\n 'circle-cross': {\n n: 27,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M0,' + rs + 'V-' + rs + 'M' + rs + ',0H-' + rs +\n 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs +\n 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z');\n },\n needLine: true,\n noDot: true\n },\n 'circle-x': {\n n: 28,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n var rc = round(r / sqrt2, 2);\n return align(angle, standoff, 'M' + rc + ',' + rc + 'L-' + rc + ',-' + rc +\n 'M' + rc + ',-' + rc + 'L-' + rc + ',' + rc +\n 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs +\n 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z');\n },\n needLine: true,\n noDot: true\n },\n 'square-cross': {\n n: 29,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M0,' + rs + 'V-' + rs + 'M' + rs + ',0H-' + rs +\n 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n },\n needLine: true,\n noDot: true\n },\n 'square-x': {\n n: 30,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rs = round(r, 2);\n return align(angle, standoff, 'M' + rs + ',' + rs + 'L-' + rs + ',-' + rs +\n 'M' + rs + ',-' + rs + 'L-' + rs + ',' + rs +\n 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n },\n needLine: true,\n noDot: true\n },\n 'diamond-cross': {\n n: 31,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rd = round(r * 1.3, 2);\n return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z' +\n 'M0,-' + rd + 'V' + rd + 'M-' + rd + ',0H' + rd);\n },\n needLine: true,\n noDot: true\n },\n 'diamond-x': {\n n: 32,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rd = round(r * 1.3, 2);\n var r2 = round(r * 0.65, 2);\n return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z' +\n 'M-' + r2 + ',-' + r2 + 'L' + r2 + ',' + r2 +\n 'M-' + r2 + ',' + r2 + 'L' + r2 + ',-' + r2);\n },\n needLine: true,\n noDot: true\n },\n 'cross-thin': {\n n: 33,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, 'M0,' + rc + 'V-' + rc + 'M' + rc + ',0H-' + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'x-thin': {\n n: 34,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n return align(angle, standoff, 'M' + rx + ',' + rx + 'L-' + rx + ',-' + rx +\n 'M' + rx + ',-' + rx + 'L-' + rx + ',' + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n asterisk: {\n n: 35,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rc = round(r * 1.2, 2);\n var rs = round(r * 0.85, 2);\n return align(angle, standoff, 'M0,' + rc + 'V-' + rc + 'M' + rc + ',0H-' + rc +\n 'M' + rs + ',' + rs + 'L-' + rs + ',-' + rs +\n 'M' + rs + ',-' + rs + 'L-' + rs + ',' + rs);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n hash: {\n n: 36,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var r1 = round(r / 2, 2);\n var r2 = round(r, 2);\n\n return align(angle, standoff, 'M' + r1 + ',' + r2 + 'V-' + r2 +\n 'M' + (r1 - r2) + ',-' + r2 + 'V' + r2 +\n 'M' + r2 + ',' + r1 + 'H-' + r2 +\n 'M-' + r2 + ',' + (r1 - r2) + 'H' + r2);\n },\n needLine: true,\n noFill: true\n },\n 'y-up': {\n n: 37,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * 1.2, 2);\n var y0 = round(r * 1.6, 2);\n var y1 = round(r * 0.8, 2);\n return align(angle, standoff, 'M-' + x + ',' + y1 + 'L0,0M' + x + ',' + y1 + 'L0,0M0,-' + y0 + 'L0,0');\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'y-down': {\n n: 38,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var x = round(r * 1.2, 2);\n var y0 = round(r * 1.6, 2);\n var y1 = round(r * 0.8, 2);\n return align(angle, standoff, 'M-' + x + ',-' + y1 + 'L0,0M' + x + ',-' + y1 + 'L0,0M0,' + y0 + 'L0,0');\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'y-left': {\n n: 39,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var y = round(r * 1.2, 2);\n var x0 = round(r * 1.6, 2);\n var x1 = round(r * 0.8, 2);\n return align(angle, standoff, 'M' + x1 + ',' + y + 'L0,0M' + x1 + ',-' + y + 'L0,0M-' + x0 + ',0L0,0');\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'y-right': {\n n: 40,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var y = round(r * 1.2, 2);\n var x0 = round(r * 1.6, 2);\n var x1 = round(r * 0.8, 2);\n return align(angle, standoff, 'M-' + x1 + ',' + y + 'L0,0M-' + x1 + ',-' + y + 'L0,0M' + x0 + ',0L0,0');\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'line-ew': {\n n: 41,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, 'M' + rc + ',0H-' + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'line-ns': {\n n: 42,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, 'M0,' + rc + 'V-' + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'line-ne': {\n n: 43,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n return align(angle, standoff, 'M' + rx + ',-' + rx + 'L-' + rx + ',' + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'line-nw': {\n n: 44,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n return align(angle, standoff, 'M' + rx + ',' + rx + 'L-' + rx + ',-' + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n 'arrow-up': {\n n: 45,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, 'M0,0L-' + rx + ',' + ry + 'H' + rx + 'Z');\n },\n backoff: 1,\n noDot: true\n },\n 'arrow-down': {\n n: 46,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, 'M0,0L-' + rx + ',-' + ry + 'H' + rx + 'Z');\n },\n noDot: true\n },\n 'arrow-left': {\n n: 47,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, 'M0,0L' + rx + ',-' + ry + 'V' + ry + 'Z');\n },\n noDot: true\n },\n 'arrow-right': {\n n: 48,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, 'M0,0L-' + rx + ',-' + ry + 'V' + ry + 'Z');\n },\n noDot: true\n },\n 'arrow-bar-up': {\n n: 49,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, 'M-' + rx + ',0H' + rx + 'M0,0L-' + rx + ',' + ry + 'H' + rx + 'Z');\n },\n backoff: 1,\n needLine: true,\n noDot: true\n },\n 'arrow-bar-down': {\n n: 50,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, 'M-' + rx + ',0H' + rx + 'M0,0L-' + rx + ',-' + ry + 'H' + rx + 'Z');\n },\n needLine: true,\n noDot: true\n },\n 'arrow-bar-left': {\n n: 51,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, 'M0,-' + ry + 'V' + ry + 'M0,0L' + rx + ',-' + ry + 'V' + ry + 'Z');\n },\n needLine: true,\n noDot: true\n },\n 'arrow-bar-right': {\n n: 52,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, 'M0,-' + ry + 'V' + ry + 'M0,0L-' + rx + ',-' + ry + 'V' + ry + 'Z');\n },\n needLine: true,\n noDot: true\n },\n arrow: {\n n: 53,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var headAngle = PI / 2.5; // 36 degrees - golden ratio\n var x = 2 * r * cos(headAngle);\n var y = 2 * r * sin(headAngle);\n\n return align(angle, standoff,\n 'M0,0' +\n 'L' + -x + ',' + y +\n 'L' + x + ',' + y +\n 'Z'\n );\n },\n backoff: 0.9,\n noDot: true\n },\n 'arrow-wide': {\n n: 54,\n f: function(r, angle, standoff) {\n if(skipAngle(angle)) return emptyPath;\n\n var headAngle = PI / 4; // 90 degrees\n var x = 2 * r * cos(headAngle);\n var y = 2 * r * sin(headAngle);\n\n return align(angle, standoff,\n 'M0,0' +\n 'L' + -x + ',' + y +\n 'A ' + 2 * r + ',' + 2 * r + ' 0 0 1 ' + x + ',' + y +\n 'Z'\n );\n },\n backoff: 0.4,\n noDot: true\n }\n};\n\nfunction skipAngle(angle) {\n return angle === null;\n}\n\nvar lastPathIn, lastPathOut;\nvar lastAngle, lastStandoff;\n\nfunction align(angle, standoff, path) {\n if((!angle || angle % 360 === 0) && !standoff) return path;\n\n if(\n lastAngle === angle &&\n lastStandoff === standoff &&\n lastPathIn === path\n ) return lastPathOut;\n\n lastAngle = angle;\n lastStandoff = standoff;\n lastPathIn = path;\n\n function rotate(t, xy) {\n var cosT = cos(t);\n var sinT = sin(t);\n\n var x = xy[0];\n var y = xy[1] + (standoff || 0);\n return [\n x * cosT - y * sinT,\n x * sinT + y * cosT\n ];\n }\n\n var t = angle / 180 * PI;\n\n var x = 0;\n var y = 0;\n var cmd = parseSvgPath(path);\n var str = '';\n\n for(var i = 0; i < cmd.length; i++) {\n var cmdI = cmd[i];\n var op = cmdI[0];\n\n var x0 = x;\n var y0 = y;\n\n if(op === 'M' || op === 'L') {\n x = +cmdI[1];\n y = +cmdI[2];\n } else if(op === 'm' || op === 'l') {\n x += +cmdI[1];\n y += +cmdI[2];\n } else if(op === 'H') {\n x = +cmdI[1];\n } else if(op === 'h') {\n x += +cmdI[1];\n } else if(op === 'V') {\n y = +cmdI[1];\n } else if(op === 'v') {\n y += +cmdI[1];\n } else if(op === 'A') {\n x = +cmdI[1];\n y = +cmdI[2];\n\n var E = rotate(t, [+cmdI[6], +cmdI[7]]);\n cmdI[6] = E[0];\n cmdI[7] = E[1];\n cmdI[3] = +cmdI[3] + angle;\n }\n\n // change from H, V, h, v to L or l\n if(op === 'H' || op === 'V') op = 'L';\n if(op === 'h' || op === 'v') op = 'l';\n\n if(op === 'm' || op === 'l') {\n x -= x0;\n y -= y0;\n }\n\n var B = rotate(t, [x, y]);\n\n if(op === 'H' || op === 'V') op = 'L';\n\n\n if(\n op === 'M' || op === 'L' ||\n op === 'm' || op === 'l'\n ) {\n cmdI[1] = B[0];\n cmdI[2] = B[1];\n }\n cmdI[0] = op;\n\n str += cmdI[0] + cmdI.slice(1).join(',');\n }\n\n lastPathOut = str;\n\n return str;\n}\n","'use strict';\n\n\nmodule.exports = {\n visible: {\n valType: 'boolean',\n editType: 'calc',\n description: [\n 'Determines whether or not this set of error bars is visible.'\n ].join(' ')\n },\n type: {\n valType: 'enumerated',\n values: ['percent', 'constant', 'sqrt', 'data'],\n editType: 'calc',\n description: [\n 'Determines the rule used to generate the error bars.',\n\n 'If *constant`, the bar lengths are of a constant value.',\n 'Set this constant in `value`.',\n\n 'If *percent*, the bar lengths correspond to a percentage of',\n 'underlying data. Set this percentage in `value`.',\n\n 'If *sqrt*, the bar lengths correspond to the square of the',\n 'underlying data.',\n\n 'If *data*, the bar lengths are set with data set `array`.'\n ].join(' ')\n },\n symmetric: {\n valType: 'boolean',\n editType: 'calc',\n description: [\n 'Determines whether or not the error bars have the same length',\n 'in both direction',\n '(top/bottom for vertical bars, left/right for horizontal bars.'\n ].join(' ')\n },\n array: {\n valType: 'data_array',\n editType: 'calc',\n description: [\n 'Sets the data corresponding the length of each error bar.',\n 'Values are plotted relative to the underlying data.'\n ].join(' ')\n },\n arrayminus: {\n valType: 'data_array',\n editType: 'calc',\n description: [\n 'Sets the data corresponding the length of each error bar in the',\n 'bottom (left) direction for vertical (horizontal) bars',\n 'Values are plotted relative to the underlying data.'\n ].join(' ')\n },\n value: {\n valType: 'number',\n min: 0,\n dflt: 10,\n editType: 'calc',\n description: [\n 'Sets the value of either the percentage',\n '(if `type` is set to *percent*) or the constant',\n '(if `type` is set to *constant*) corresponding to the lengths of',\n 'the error bars.'\n ].join(' ')\n },\n valueminus: {\n valType: 'number',\n min: 0,\n dflt: 10,\n editType: 'calc',\n description: [\n 'Sets the value of either the percentage',\n '(if `type` is set to *percent*) or the constant',\n '(if `type` is set to *constant*) corresponding to the lengths of',\n 'the error bars in the',\n 'bottom (left) direction for vertical (horizontal) bars'\n ].join(' ')\n },\n traceref: {\n valType: 'integer',\n min: 0,\n dflt: 0,\n editType: 'style'\n },\n tracerefminus: {\n valType: 'integer',\n min: 0,\n dflt: 0,\n editType: 'style'\n },\n copy_ystyle: {\n valType: 'boolean',\n editType: 'plot'\n },\n copy_zstyle: {\n valType: 'boolean',\n editType: 'style'\n },\n color: {\n valType: 'color',\n editType: 'style',\n description: 'Sets the stoke color of the error bars.'\n },\n thickness: {\n valType: 'number',\n min: 0,\n dflt: 2,\n editType: 'style',\n description: 'Sets the thickness (in px) of the error bars.'\n },\n width: {\n valType: 'number',\n min: 0,\n editType: 'plot',\n description: [\n 'Sets the width (in px) of the cross-bar at both ends',\n 'of the error bars.'\n ].join(' ')\n },\n editType: 'calc',\n\n _deprecated: {\n opacity: {\n valType: 'number',\n editType: 'style',\n description: [\n 'Obsolete.',\n 'Use the alpha channel in error bar `color` to set the opacity.'\n ].join(' ')\n }\n }\n};\n","'use strict';\n\nvar isNumeric = require('fast-isnumeric');\n\nvar Registry = require('../../registry');\nvar Axes = require('../../plots/cartesian/axes');\nvar Lib = require('../../lib');\n\nvar makeComputeError = require('./compute_error');\n\nmodule.exports = function calc(gd) {\n var calcdata = gd.calcdata;\n\n for(var i = 0; i < calcdata.length; i++) {\n var calcTrace = calcdata[i];\n var trace = calcTrace[0].trace;\n\n if(trace.visible === true && Registry.traceIs(trace, 'errorBarsOK')) {\n var xa = Axes.getFromId(gd, trace.xaxis);\n var ya = Axes.getFromId(gd, trace.yaxis);\n calcOneAxis(calcTrace, trace, xa, 'x');\n calcOneAxis(calcTrace, trace, ya, 'y');\n }\n }\n};\n\nfunction calcOneAxis(calcTrace, trace, axis, coord) {\n var opts = trace['error_' + coord] || {};\n var isVisible = (opts.visible && ['linear', 'log'].indexOf(axis.type) !== -1);\n var vals = [];\n\n if(!isVisible) return;\n\n var computeError = makeComputeError(opts);\n\n for(var i = 0; i < calcTrace.length; i++) {\n var calcPt = calcTrace[i];\n\n var iIn = calcPt.i;\n\n // for types that don't include `i` in each calcdata point\n if(iIn === undefined) iIn = i;\n\n // for stacked area inserted points\n // TODO: errorbars have been tested cursorily with stacked area,\n // but not thoroughly. It's not even really clear what you want to do:\n // Should it just be calculated based on that trace's size data?\n // Should you add errors from below in quadrature?\n // And what about normalization, where in principle the errors shrink\n // again when you get up to the top end?\n // One option would be to forbid errorbars with stacking until we\n // decide how to handle these questions.\n else if(iIn === null) continue;\n\n var calcCoord = calcPt[coord];\n\n if(!isNumeric(axis.c2l(calcCoord))) continue;\n\n var errors = computeError(calcCoord, iIn);\n if(isNumeric(errors[0]) && isNumeric(errors[1])) {\n var shoe = calcPt[coord + 's'] = calcCoord - errors[0];\n var hat = calcPt[coord + 'h'] = calcCoord + errors[1];\n vals.push(shoe, hat);\n }\n }\n\n var axId = axis._id;\n var baseExtremes = trace._extremes[axId];\n var extremes = Axes.findExtremes(\n axis,\n vals,\n Lib.extendFlat({tozero: baseExtremes.opts.tozero}, {padded: true})\n );\n baseExtremes.min = baseExtremes.min.concat(extremes.min);\n baseExtremes.max = baseExtremes.max.concat(extremes.max);\n}\n","'use strict';\n\n\n/**\n * Error bar computing function generator\n *\n * N.B. The generated function does not clean the dataPt entries. Non-numeric\n * entries result in undefined error magnitudes.\n *\n * @param {object} opts error bar attributes\n *\n * @return {function} :\n * @param {numeric} dataPt data point from where to compute the error magnitude\n * @param {number} index index of dataPt in its corresponding data array\n * @return {array}\n * - error[0] : error magnitude in the negative direction\n * - error[1] : \" \" \" \" positive \"\n */\nmodule.exports = function makeComputeError(opts) {\n var type = opts.type;\n var symmetric = opts.symmetric;\n\n if(type === 'data') {\n var array = opts.array || [];\n\n if(symmetric) {\n return function computeError(dataPt, index) {\n var val = +(array[index]);\n return [val, val];\n };\n } else {\n var arrayminus = opts.arrayminus || [];\n return function computeError(dataPt, index) {\n var val = +array[index];\n var valMinus = +arrayminus[index];\n // in case one is present and the other is missing, fill in 0\n // so we still see the present one. Mostly useful during manual\n // data entry.\n if(!isNaN(val) || !isNaN(valMinus)) {\n return [valMinus || 0, val || 0];\n }\n return [NaN, NaN];\n };\n }\n } else {\n var computeErrorValue = makeComputeErrorValue(type, opts.value);\n var computeErrorValueMinus = makeComputeErrorValue(type, opts.valueminus);\n\n if(symmetric || opts.valueminus === undefined) {\n return function computeError(dataPt) {\n var val = computeErrorValue(dataPt);\n return [val, val];\n };\n } else {\n return function computeError(dataPt) {\n return [\n computeErrorValueMinus(dataPt),\n computeErrorValue(dataPt)\n ];\n };\n }\n }\n};\n\n/**\n * Compute error bar magnitude (for all types except data)\n *\n * @param {string} type error bar type\n * @param {numeric} value error bar value\n *\n * @return {function} :\n * @param {numeric} dataPt\n */\nfunction makeComputeErrorValue(type, value) {\n if(type === 'percent') {\n return function(dataPt) {\n return Math.abs(dataPt * value / 100);\n };\n }\n if(type === 'constant') {\n return function() {\n return Math.abs(value);\n };\n }\n if(type === 'sqrt') {\n return function(dataPt) {\n return Math.sqrt(Math.abs(dataPt));\n };\n }\n}\n","'use strict';\n\nvar isNumeric = require('fast-isnumeric');\n\nvar Registry = require('../../registry');\nvar Lib = require('../../lib');\nvar Template = require('../../plot_api/plot_template');\n\nvar attributes = require('./attributes');\n\n\nmodule.exports = function(traceIn, traceOut, defaultColor, opts) {\n var objName = 'error_' + opts.axis;\n var containerOut = Template.newContainer(traceOut, objName);\n var containerIn = traceIn[objName] || {};\n\n function coerce(attr, dflt) {\n return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n }\n\n var hasErrorBars = (\n containerIn.array !== undefined ||\n containerIn.value !== undefined ||\n containerIn.type === 'sqrt'\n );\n\n var visible = coerce('visible', hasErrorBars);\n\n if(visible === false) return;\n\n var type = coerce('type', 'array' in containerIn ? 'data' : 'percent');\n var symmetric = true;\n\n if(type !== 'sqrt') {\n symmetric = coerce('symmetric',\n !((type === 'data' ? 'arrayminus' : 'valueminus') in containerIn));\n }\n\n if(type === 'data') {\n coerce('array');\n coerce('traceref');\n if(!symmetric) {\n coerce('arrayminus');\n coerce('tracerefminus');\n }\n } else if(type === 'percent' || type === 'constant') {\n coerce('value');\n if(!symmetric) coerce('valueminus');\n }\n\n var copyAttr = 'copy_' + opts.inherit + 'style';\n if(opts.inherit) {\n var inheritObj = traceOut['error_' + opts.inherit];\n if((inheritObj || {}).visible) {\n coerce(copyAttr, !(containerIn.color ||\n isNumeric(containerIn.thickness) ||\n isNumeric(containerIn.width)));\n }\n }\n if(!opts.inherit || !containerOut[copyAttr]) {\n coerce('color', defaultColor);\n coerce('thickness');\n coerce('width', Registry.traceIs(traceOut, 'gl3d') ? 0 : 4);\n }\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar overrideAll = require('../../plot_api/edit_types').overrideAll;\n\nvar attributes = require('./attributes');\n\nvar xyAttrs = {\n error_x: Lib.extendFlat({}, attributes),\n error_y: Lib.extendFlat({}, attributes)\n};\ndelete xyAttrs.error_x.copy_zstyle;\ndelete xyAttrs.error_y.copy_zstyle;\ndelete xyAttrs.error_y.copy_ystyle;\n\nvar xyzAttrs = {\n error_x: Lib.extendFlat({}, attributes),\n error_y: Lib.extendFlat({}, attributes),\n error_z: Lib.extendFlat({}, attributes)\n};\ndelete xyzAttrs.error_x.copy_ystyle;\ndelete xyzAttrs.error_y.copy_ystyle;\ndelete xyzAttrs.error_z.copy_ystyle;\ndelete xyzAttrs.error_z.copy_zstyle;\n\nmodule.exports = {\n moduleType: 'component',\n name: 'errorbars',\n\n schema: {\n traces: {\n scatter: xyAttrs,\n bar: xyAttrs,\n histogram: xyAttrs,\n scatter3d: overrideAll(xyzAttrs, 'calc', 'nested'),\n scattergl: overrideAll(xyAttrs, 'calc', 'nested')\n }\n },\n\n supplyDefaults: require('./defaults'),\n\n calc: require('./calc'),\n makeComputeError: require('./compute_error'),\n\n plot: require('./plot'),\n style: require('./style'),\n hoverInfo: hoverInfo\n};\n\nfunction hoverInfo(calcPoint, trace, hoverPoint) {\n if((trace.error_y || {}).visible) {\n hoverPoint.yerr = calcPoint.yh - calcPoint.y;\n if(!trace.error_y.symmetric) hoverPoint.yerrneg = calcPoint.y - calcPoint.ys;\n }\n if((trace.error_x || {}).visible) {\n hoverPoint.xerr = calcPoint.xh - calcPoint.x;\n if(!trace.error_x.symmetric) hoverPoint.xerrneg = calcPoint.x - calcPoint.xs;\n }\n}\n","'use strict';\n\nvar d3 = require('@plotly/d3');\nvar isNumeric = require('fast-isnumeric');\n\nvar Drawing = require('../drawing');\nvar subTypes = require('../../traces/scatter/subtypes');\n\nmodule.exports = function plot(gd, traces, plotinfo, transitionOpts) {\n var isNew;\n\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n\n var hasAnimation = transitionOpts && transitionOpts.duration > 0;\n var isStatic = gd._context.staticPlot;\n\n traces.each(function(d) {\n var trace = d[0].trace;\n // || {} is in case the trace (specifically scatterternary)\n // doesn't support error bars at all, but does go through\n // the scatter.plot mechanics, which calls ErrorBars.plot\n // internally\n var xObj = trace.error_x || {};\n var yObj = trace.error_y || {};\n\n var keyFunc;\n\n if(trace.ids) {\n keyFunc = function(d) {return d.id;};\n }\n\n var sparse = (\n subTypes.hasMarkers(trace) &&\n trace.marker.maxdisplayed > 0\n );\n\n if(!yObj.visible && !xObj.visible) d = [];\n\n var errorbars = d3.select(this).selectAll('g.errorbar')\n .data(d, keyFunc);\n\n errorbars.exit().remove();\n\n if(!d.length) return;\n\n if(!xObj.visible) errorbars.selectAll('path.xerror').remove();\n if(!yObj.visible) errorbars.selectAll('path.yerror').remove();\n\n errorbars.style('opacity', 1);\n\n var enter = errorbars.enter().append('g')\n .classed('errorbar', true);\n\n if(hasAnimation) {\n enter.style('opacity', 0).transition()\n .duration(transitionOpts.duration)\n .style('opacity', 1);\n }\n\n Drawing.setClipUrl(errorbars, plotinfo.layerClipId, gd);\n\n errorbars.each(function(d) {\n var errorbar = d3.select(this);\n var coords = errorCoords(d, xa, ya);\n\n if(sparse && !d.vis) return;\n\n var path;\n\n var yerror = errorbar.select('path.yerror');\n if(yObj.visible && isNumeric(coords.x) &&\n isNumeric(coords.yh) &&\n isNumeric(coords.ys)) {\n var yw = yObj.width;\n\n path = 'M' + (coords.x - yw) + ',' +\n coords.yh + 'h' + (2 * yw) + // hat\n 'm-' + yw + ',0V' + coords.ys; // bar\n\n\n if(!coords.noYS) path += 'm-' + yw + ',0h' + (2 * yw); // shoe\n\n isNew = !yerror.size();\n\n if(isNew) {\n yerror = errorbar.append('path')\n .style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke')\n .classed('yerror', true);\n } else if(hasAnimation) {\n yerror = yerror\n .transition()\n .duration(transitionOpts.duration)\n .ease(transitionOpts.easing);\n }\n\n yerror.attr('d', path);\n } else yerror.remove();\n\n var xerror = errorbar.select('path.xerror');\n if(xObj.visible && isNumeric(coords.y) &&\n isNumeric(coords.xh) &&\n isNumeric(coords.xs)) {\n var xw = (xObj.copy_ystyle ? yObj : xObj).width;\n\n path = 'M' + coords.xh + ',' +\n (coords.y - xw) + 'v' + (2 * xw) + // hat\n 'm0,-' + xw + 'H' + coords.xs; // bar\n\n if(!coords.noXS) path += 'm0,-' + xw + 'v' + (2 * xw); // shoe\n\n isNew = !xerror.size();\n\n if(isNew) {\n xerror = errorbar.append('path')\n .style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke')\n .classed('xerror', true);\n } else if(hasAnimation) {\n xerror = xerror\n .transition()\n .duration(transitionOpts.duration)\n .ease(transitionOpts.easing);\n }\n\n xerror.attr('d', path);\n } else xerror.remove();\n });\n });\n};\n\n// compute the coordinates of the error-bar objects\nfunction errorCoords(d, xa, ya) {\n var out = {\n x: xa.c2p(d.x),\n y: ya.c2p(d.y)\n };\n\n // calculate the error bar size and hat and shoe locations\n if(d.yh !== undefined) {\n out.yh = ya.c2p(d.yh);\n out.ys = ya.c2p(d.ys);\n\n // if the shoes go off-scale (ie log scale, error bars past zero)\n // clip the bar and hide the shoes\n if(!isNumeric(out.ys)) {\n out.noYS = true;\n out.ys = ya.c2p(d.ys, true);\n }\n }\n\n if(d.xh !== undefined) {\n out.xh = xa.c2p(d.xh);\n out.xs = xa.c2p(d.xs);\n\n if(!isNumeric(out.xs)) {\n out.noXS = true;\n out.xs = xa.c2p(d.xs, true);\n }\n }\n\n return out;\n}\n","'use strict';\n\nvar d3 = require('@plotly/d3');\n\nvar Color = require('../color');\n\n\nmodule.exports = function style(traces) {\n traces.each(function(d) {\n var trace = d[0].trace;\n var yObj = trace.error_y || {};\n var xObj = trace.error_x || {};\n\n var s = d3.select(this);\n\n s.selectAll('path.yerror')\n .style('stroke-width', yObj.thickness + 'px')\n .call(Color.stroke, yObj.color);\n\n if(xObj.copy_ystyle) xObj = yObj;\n\n s.selectAll('path.xerror')\n .style('stroke-width', xObj.thickness + 'px')\n .call(Color.stroke, xObj.color);\n });\n};\n","'use strict';\n\nvar fontAttrs = require('../../plots/font_attributes');\nvar hoverLabelAttrs = require('./layout_attributes').hoverlabel;\nvar extendFlat = require('../../lib/extend').extendFlat;\n\nmodule.exports = {\n hoverlabel: {\n bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, {\n arrayOk: true,\n description: 'Sets the background color of the hover labels for this trace'\n }),\n bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, {\n arrayOk: true,\n description: 'Sets the border color of the hover labels for this trace.'\n }),\n font: fontAttrs({\n arrayOk: true,\n editType: 'none',\n description: 'Sets the font used in hover labels.'\n }),\n align: extendFlat({}, hoverLabelAttrs.align, {arrayOk: true}),\n namelength: extendFlat({}, hoverLabelAttrs.namelength, {arrayOk: true}),\n editType: 'none'\n }\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar Registry = require('../../registry');\n\nmodule.exports = function calc(gd) {\n var calcdata = gd.calcdata;\n var fullLayout = gd._fullLayout;\n\n function makeCoerceHoverInfo(trace) {\n return function(val) {\n return Lib.coerceHoverinfo({hoverinfo: val}, {_module: trace._module}, fullLayout);\n };\n }\n\n for(var i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n var trace = cd[0].trace;\n\n // don't include hover calc fields for pie traces\n // as calcdata items might be sorted by value and\n // won't match the data array order.\n if(Registry.traceIs(trace, 'pie-like')) continue;\n\n var fillFn = Registry.traceIs(trace, '2dMap') ? paste : Lib.fillArray;\n\n fillFn(trace.hoverinfo, cd, 'hi', makeCoerceHoverInfo(trace));\n\n if(trace.hovertemplate) fillFn(trace.hovertemplate, cd, 'ht');\n\n if(!trace.hoverlabel) continue;\n\n fillFn(trace.hoverlabel.bgcolor, cd, 'hbg');\n fillFn(trace.hoverlabel.bordercolor, cd, 'hbc');\n fillFn(trace.hoverlabel.font.size, cd, 'hts');\n fillFn(trace.hoverlabel.font.color, cd, 'htc');\n fillFn(trace.hoverlabel.font.family, cd, 'htf');\n fillFn(trace.hoverlabel.namelength, cd, 'hnl');\n fillFn(trace.hoverlabel.align, cd, 'hta');\n }\n};\n\nfunction paste(traceAttr, cd, cdAttr, fn) {\n fn = fn || Lib.identity;\n\n if(Array.isArray(traceAttr)) {\n cd[0][cdAttr] = fn(traceAttr);\n }\n}\n","'use strict';\n\nvar Registry = require('../../registry');\nvar hover = require('./hover').hover;\n\nmodule.exports = function click(gd, evt, subplot) {\n var annotationsDone = Registry.getComponentMethod('annotations', 'onClick')(gd, gd._hoverdata);\n\n // fallback to fail-safe in case the plot type's hover method doesn't pass the subplot.\n // Ternary, for example, didn't, but it was caught because tested.\n if(subplot !== undefined) {\n // The true flag at the end causes it to re-run the hover computation to figure out *which*\n // point is being clicked. Without this, clicking is somewhat unreliable.\n hover(gd, evt, subplot, true);\n }\n\n function emitClick() { gd.emit('plotly_click', {points: gd._hoverdata, event: evt}); }\n\n if(gd._hoverdata && evt && evt.target) {\n if(annotationsDone && annotationsDone.then) {\n annotationsDone.then(emitClick);\n } else emitClick();\n\n // why do we get a double event without this???\n if(evt.stopImmediatePropagation) evt.stopImmediatePropagation();\n }\n};\n","'use strict';\n\nmodule.exports = {\n // hover labels for multiple horizontal bars get tilted by this angle\n YANGLE: 60,\n\n // size and display constants for hover text\n\n // pixel size of hover arrows\n HOVERARROWSIZE: 6,\n // pixels padding around text\n HOVERTEXTPAD: 3,\n // hover font\n HOVERFONTSIZE: 13,\n HOVERFONT: 'Arial, sans-serif',\n\n // minimum time (msec) between hover calls\n HOVERMINTIME: 50,\n\n // ID suffix (with fullLayout._uid) for hover events in the throttle cache\n HOVERID: '-hover'\n};\n","'use strict';\n\nvar Lib = require('../../lib');\nvar attributes = require('./attributes');\nvar handleHoverLabelDefaults = require('./hoverlabel_defaults');\n\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n\n var opts = Lib.extendFlat({}, layout.hoverlabel);\n if(traceOut.hovertemplate) opts.namelength = -1;\n\n handleHoverLabelDefaults(traceIn, traceOut, coerce, opts);\n};\n","'use strict';\n\nvar Lib = require('../../lib');\n\n// look for either subplot or xaxis and yaxis attributes\n// does not handle splom case\nexports.getSubplot = function(trace) {\n return trace.subplot || (trace.xaxis + trace.yaxis) || trace.geo;\n};\n\n// is trace in given list of subplots?\n// does handle splom case\nexports.isTraceInSubplots = function(trace, subplots) {\n if(trace.type === 'splom') {\n var xaxes = trace.xaxes || [];\n var yaxes = trace.yaxes || [];\n for(var i = 0; i < xaxes.length; i++) {\n for(var j = 0; j < yaxes.length; j++) {\n if(subplots.indexOf(xaxes[i] + yaxes[j]) !== -1) {\n return true;\n }\n }\n }\n return false;\n }\n\n return subplots.indexOf(exports.getSubplot(trace)) !== -1;\n};\n\n// convenience functions for mapping all relevant axes\nexports.flat = function(subplots, v) {\n var out = new Array(subplots.length);\n for(var i = 0; i < subplots.length; i++) {\n out[i] = v;\n }\n return out;\n};\n\nexports.p2c = function(axArray, v) {\n var out = new Array(axArray.length);\n for(var i = 0; i < axArray.length; i++) {\n out[i] = axArray[i].p2c(v);\n }\n return out;\n};\n\nexports.getDistanceFunction = function(mode, dx, dy, dxy) {\n if(mode === 'closest') return dxy || exports.quadrature(dx, dy);\n return mode.charAt(0) === 'x' ? dx : dy;\n};\n\nexports.getClosest = function(cd, distfn, pointData) {\n // do we already have a point number? (array mode only)\n if(pointData.index !== false) {\n if(pointData.index >= 0 && pointData.index < cd.length) {\n pointData.distance = 0;\n } else pointData.index = false;\n } else {\n // apply the distance function to each data point\n // this is the longest loop... if this bogs down, we may need\n // to create pre-sorted data (by x or y), not sure how to\n // do this for 'closest'\n for(var i = 0; i < cd.length; i++) {\n var newDistance = distfn(cd[i]);\n if(newDistance <= pointData.distance) {\n pointData.index = i;\n pointData.distance = newDistance;\n }\n }\n }\n return pointData;\n};\n\n/*\n * pseudo-distance function for hover effects on areas: inside the region\n * distance is finite (`passVal`), outside it's Infinity.\n *\n * @param {number} v0: signed difference between the current position and the left edge\n * @param {number} v1: signed difference between the current position and the right edge\n * @param {number} passVal: the value to return on success\n */\nexports.inbox = function(v0, v1, passVal) {\n return (v0 * v1 < 0 || v0 === 0) ? passVal : Infinity;\n};\n\nexports.quadrature = function(dx, dy) {\n return function(di) {\n var x = dx(di);\n var y = dy(di);\n return Math.sqrt(x * x + y * y);\n };\n};\n\n/** Fill event data point object for hover and selection.\n * Invokes _module.eventData if present.\n *\n * N.B. note that point 'index' corresponds to input data array index\n * whereas 'number' is its post-transform version.\n *\n * If the hovered/selected pt corresponds to an multiple input points\n * (e.g. for histogram and transformed traces), 'pointNumbers` and 'pointIndices'\n * are include in the event data.\n *\n * @param {object} pt\n * @param {object} trace\n * @param {object} cd\n * @return {object}\n */\nexports.makeEventData = function(pt, trace, cd) {\n // hover uses 'index', select uses 'pointNumber'\n var pointNumber = 'index' in pt ? pt.index : pt.pointNumber;\n\n var out = {\n data: trace._input,\n fullData: trace,\n curveNumber: trace.index,\n pointNumber: pointNumber\n };\n\n if(trace._indexToPoints) {\n var pointIndices = trace._indexToPoints[pointNumber];\n\n if(pointIndices.length === 1) {\n out.pointIndex = pointIndices[0];\n } else {\n out.pointIndices = pointIndices;\n }\n } else {\n out.pointIndex = pointNumber;\n }\n\n if(trace._module.eventData) {\n out = trace._module.eventData(out, pt, trace, cd, pointNumber);\n } else {\n if('xVal' in pt) out.x = pt.xVal;\n else if('x' in pt) out.x = pt.x;\n\n if('yVal' in pt) out.y = pt.yVal;\n else if('y' in pt) out.y = pt.y;\n\n if(pt.xa) out.xaxis = pt.xa;\n if(pt.ya) out.yaxis = pt.ya;\n if(pt.zLabelVal !== undefined) out.z = pt.zLabelVal;\n }\n\n exports.appendArrayPointValue(out, trace, pointNumber);\n\n return out;\n};\n\n/** Appends values inside array attributes corresponding to given point number\n *\n * @param {object} pointData : point data object (gets mutated here)\n * @param {object} trace : full trace object\n * @param {number|Array(number)} pointNumber : point number. May be a length-2 array\n * [row, col] to dig into 2D arrays\n */\nexports.appendArrayPointValue = function(pointData, trace, pointNumber) {\n var arrayAttrs = trace._arrayAttrs;\n\n if(!arrayAttrs) {\n return;\n }\n\n for(var i = 0; i < arrayAttrs.length; i++) {\n var astr = arrayAttrs[i];\n var key = getPointKey(astr);\n\n if(pointData[key] === undefined) {\n var val = Lib.nestedProperty(trace, astr).get();\n var pointVal = getPointData(val, pointNumber);\n\n if(pointVal !== undefined) pointData[key] = pointVal;\n }\n }\n};\n\n/**\n * Appends values inside array attributes corresponding to given point number array\n * For use when pointData references a plot entity that arose (or potentially arose)\n * from multiple points in the input data\n *\n * @param {object} pointData : point data object (gets mutated here)\n * @param {object} trace : full trace object\n * @param {Array(number)|Array(Array(number))} pointNumbers : Array of point numbers.\n * Each entry in the array may itself be a length-2 array [row, col] to dig into 2D arrays\n */\nexports.appendArrayMultiPointValues = function(pointData, trace, pointNumbers) {\n var arrayAttrs = trace._arrayAttrs;\n\n if(!arrayAttrs) {\n return;\n }\n\n for(var i = 0; i < arrayAttrs.length; i++) {\n var astr = arrayAttrs[i];\n var key = getPointKey(astr);\n\n if(pointData[key] === undefined) {\n var val = Lib.nestedProperty(trace, astr).get();\n var keyVal = new Array(pointNumbers.length);\n\n for(var j = 0; j < pointNumbers.length; j++) {\n keyVal[j] = getPointData(val, pointNumbers[j]);\n }\n pointData[key] = keyVal;\n }\n }\n};\n\nvar pointKeyMap = {\n ids: 'id',\n locations: 'location',\n labels: 'label',\n values: 'value',\n 'marker.colors': 'color',\n parents: 'parent'\n};\n\nfunction getPointKey(astr) {\n return pointKeyMap[astr] || astr;\n}\n\nfunction getPointData(val, pointNumber) {\n if(Array.isArray(pointNumber)) {\n if(Array.isArray(val) && Array.isArray(val[pointNumber[0]])) {\n return val[pointNumber[0]][pointNumber[1]];\n }\n } else {\n return val[pointNumber];\n }\n}\n\nvar xyHoverMode = {\n x: true,\n y: true\n};\n\nvar unifiedHoverMode = {\n 'x unified': true,\n 'y unified': true\n};\n\nexports.isUnifiedHover = function(hovermode) {\n if(typeof hovermode !== 'string') return false;\n return !!unifiedHoverMode[hovermode];\n};\n\nexports.isXYhover = function(hovermode) {\n if(typeof hovermode !== 'string') return false;\n return !!xyHoverMode[hovermode];\n};\n","'use strict';\n\nvar d3 = require('@plotly/d3');\nvar isNumeric = require('fast-isnumeric');\nvar tinycolor = require('tinycolor2');\n\nvar Lib = require('../../lib');\nvar strTranslate = Lib.strTranslate;\nvar strRotate = Lib.strRotate;\nvar Events = require('../../lib/events');\nvar svgTextUtils = require('../../lib/svg_text_utils');\nvar overrideCursor = require('../../lib/override_cursor');\nvar Drawing = require('../drawing');\nvar Color = require('../color');\nvar dragElement = require('../dragelement');\nvar Axes = require('../../plots/cartesian/axes');\nvar Registry = require('../../registry');\n\nvar helpers = require('./helpers');\nvar constants = require('./constants');\n\nvar legendSupplyDefaults = require('../legend/defaults');\nvar legendDraw = require('../legend/draw');\n\n// hover labels for multiple horizontal bars get tilted by some angle,\n// then need to be offset differently if they overlap\nvar YANGLE = constants.YANGLE;\nvar YA_RADIANS = Math.PI * YANGLE / 180;\n\n// expansion of projected height\nvar YFACTOR = 1 / Math.sin(YA_RADIANS);\n\n// to make the appropriate post-rotation x offset,\n// you need both x and y offsets\nvar YSHIFTX = Math.cos(YA_RADIANS);\nvar YSHIFTY = Math.sin(YA_RADIANS);\n\n// size and display constants for hover text\nvar HOVERARROWSIZE = constants.HOVERARROWSIZE;\nvar HOVERTEXTPAD = constants.HOVERTEXTPAD;\n\nvar multipleHoverPoints = {\n box: true,\n ohlc: true,\n violin: true,\n candlestick: true\n};\n\nvar cartesianScatterPoints = {\n scatter: true,\n scattergl: true,\n splom: true\n};\n\n// fx.hover: highlight data on hover\n// evt can be a mousemove event, or an object with data about what points\n// to hover on\n// {xpx,ypx[,hovermode]} - pixel locations from top left\n// (with optional overriding hovermode)\n// {xval,yval[,hovermode]} - data values\n// [{curveNumber,(pointNumber|xval and/or yval)}] -\n// array of specific points to highlight\n// pointNumber is a single integer if gd.data[curveNumber] is 1D,\n// or a two-element array if it's 2D\n// xval and yval are data values,\n// 1D data may specify either or both,\n// 2D data must specify both\n// subplot is an id string (default \"xy\")\n// makes use of gl.hovermode, which can be:\n// x (find the points with the closest x values, ie a column),\n// closest (find the single closest point)\n// internally there are two more that occasionally get used:\n// y (pick out a row - only used for multiple horizontal bar charts)\n// array (used when the user specifies an explicit\n// array of points to hover on)\n//\n// We wrap the hovers in a timer, to limit their frequency.\n// The actual rendering is done by private function _hover.\nexports.hover = function hover(gd, evt, subplot, noHoverEvent) {\n gd = Lib.getGraphDiv(gd);\n // The 'target' property changes when bubbling out of Shadow DOM.\n // Throttling can delay reading the target, so we save the current value.\n var eventTarget = evt.target;\n Lib.throttle(\n gd._fullLayout._uid + constants.HOVERID,\n constants.HOVERMINTIME,\n function() { _hover(gd, evt, subplot, noHoverEvent, eventTarget); }\n );\n};\n\n/*\n * Draw a single hover item or an array of hover item in a pre-existing svg container somewhere\n * hoverItem should have keys:\n * - x and y (or x0, x1, y0, and y1):\n * the pixel position to mark, relative to opts.container\n * - xLabel, yLabel, zLabel, text, and name:\n * info to go in the label\n * - color:\n * the background color for the label.\n * - idealAlign (optional):\n * 'left' or 'right' for which side of the x/y box to try to put this on first\n * - borderColor (optional):\n * color for the border, defaults to strongest contrast with color\n * - fontFamily (optional):\n * string, the font for this label, defaults to constants.HOVERFONT\n * - fontSize (optional):\n * the label font size, defaults to constants.HOVERFONTSIZE\n * - fontColor (optional):\n * defaults to borderColor\n * opts should have keys:\n * - bgColor:\n * the background color this is against, used if the trace is\n * non-opaque, and for the name, which goes outside the box\n * - container:\n * a