{"version":3,"file":"static/js/application.initial~250859eb.92680b40.js","mappings":"8KAAA,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,WAChD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,sHEVA,0J,kCCAM,SAAUC,EAAaC,GAS5B,MAEGC,EACED,EADFC,MAAOC,EACLF,EADKE,OAAQC,EACbH,EADaG,QAASC,EACtBJ,EADsBI,KAAMC,EAC5BL,EAD4BK,OAAQC,EACpCN,EADoCM,OAFzC,EAGKN,EAD4CO,OAAAA,OAFjD,SAEgEC,EAC3DR,EAD2DQ,SAI/D,MAAO,CACL,GAAGP,KAHSM,EAASE,mBAAmBP,GAAUA,IAIlDC,EAAU,WAAWA,EAAQO,gBAAkB,GAC/CN,EAAO,QAAQA,IAAS,GACxBC,EAAS,UAAUA,IAAW,GAC9BC,EAAS,SAAW,GACpBE,EAAW,YAAYA,IAAa,IACpCG,QAAQC,KAAWA,IAAMC,KAAK,KACjC,C,wEAEK,SACJZ,EACAC,EACAC,EACAC,EACAC,EACAC,EACAE,GAEAM,SAASC,OAAShB,EAAa,CAC7BE,QACAC,SACAC,UACAC,OACAC,SACAC,SACAC,QAAQ,EACRC,YAEH,E,MAEK,SAAcP,EAAee,GACjC,MAAMC,EAAaH,SAASC,OAAOG,MAAM,MAEzC,IAAK,IAAInD,EAAI,EAAGA,EAAIkD,EAAWE,OAAQpD,GAAK,EAAG,CAC7C,IAAIqD,EAAIH,EAAWlD,GAAGsD,OAAO,EAAGJ,EAAWlD,GAAGuD,QAAQ,MACtD,MAAMC,EAAIN,EAAWlD,GAAGsD,OAAOJ,EAAWlD,GAAGuD,QAAQ,KAAO,GAE5D,GADAF,EAAIA,EAAEI,QAAQ,aAAc,IACxBJ,IAAMnB,EAOR,OAAIe,EACKO,EAEFE,mBAAmBF,EAE7B,CAED,OAAO,IACR,C,KHlECzD,EAAOD,QAAUJ,G,+TIGnB,MAAMiE,EAAiB,CACrB,QAAS,UACT,QAAS,UACT,QAAS,WAQJ,MAAMC,EAWX,WAAAC,CAAYC,EAAoCC,EAAgBC,EAAiCC,GAC/FC,KAAKH,OAASA,EACdG,KAAKJ,gBAAkBA,EACvBI,KAAKC,sBAAwBD,KAAKE,2BAClCF,KAAKF,YAAcA,EAGnBE,KAAKD,aAAeA,CACtB,CAEQ,wBAAAG,GACN,GAAIF,KAAKJ,gBAAgBI,KAAKH,QAC5B,OAAOG,KAAKH,OAGd,GAAIJ,EAAUO,KAAKH,QACjB,OAAOJ,EAAUO,KAAKH,QAGxB,MAAOM,GAAYH,KAAKH,OAAOZ,MAAM,KACrC,OAAIe,KAAKJ,gBAAgBO,GAChBA,EAGF,EACT,CAEA,SAAAC,GACE,OAAOJ,KAAKH,MACd,CAEA,SAAAQ,CAAUhD,EAAaiD,G,MACrB,IAAIC,GAAsD,QAAhD,EAAAP,KAAKJ,gBAAgBI,KAAKC,8BAAsB,eAAG5C,KAAQA,EACrE,KAAK,IAAAmD,SAAQF,IAAUC,EAAK,CAE1BA,GADiB,IAAAE,UAASF,EACpBG,CAASJ,E,CAGjB,OAAOC,CACT,CAEA,cAAAI,GACE,OAAOX,KAAKF,YAAaa,gBAC3B,CAEA,cAAAC,CAAeC,EAAgBC,EAAmBC,GAChD,OAAOf,KAAKF,YAAac,eAAeC,EAAQC,GAAYd,KAAKD,aAAcgB,EACjF,CAEA,eAAAC,CAAgBC,EAAoBF,GAClC,OAAOf,KAAKF,YAAakB,gBAAgBC,EAAYF,EACvD,CAEA,UAAAG,CAAWC,EAAYJ,GACrB,OAAOf,KAAKF,YAAaoB,WAAWC,EAAMJ,EAC5C,CAEA,aAAAK,CAAcP,EAAgBE,GAC5B,OAAOf,KAAKF,YAAasB,cAAcP,EAAQE,EACjD,CAEA,oBAAAM,CAAqBR,EAAgBE,GACnC,OAAOf,KAAKF,YAAauB,qBAAqBR,EAAQE,EACxD,CAEA,aAAAO,CAAcT,EAAgBE,GAC5B,OAAOf,KAAKF,YAAawB,cAAcT,EAAQE,EACjD,CAEA,cAAAQ,CAAexE,EAAegE,GAC5B,OAAOf,KAAKF,YAAayB,eAAexE,EAAOgE,EACjD,CAEA,UAAAS,CAAWT,GACT,OAAOf,KAAKF,YAAa0B,WAAWT,EACtC,E,4BC5FK,MAAMU,EAAiB,QAUjBC,EAAc,gBAAsC,MACpDC,EAAiB,KAAM,IAAAC,YAAWF,GAElCG,GAAsC,IAAAC,OAAMC,IACvD,MAAM,YACJjC,EAAW,SACXkC,EAAQ,aACRjC,EAAY,OACZF,EAAS4B,EAAc,kBACvBQ,EAAoB,KAClBF,EAEEG,GAAY,IAAAC,UAChB,IAAM,IAAIzC,EAAUuC,EAAwCpC,EAAQC,EAAaC,IACjF,CAACkC,EAAmBpC,EAAQC,EAAaC,IAG3C,OACE,gBAAC2B,EAAYU,SAAQ,CAACrF,MAAOmF,GAC1BF,EAEJ,ICtCI,SAASK,EAAiBC,GAO/B,OANaP,GACX,gBAACF,EAAY,iBAAKE,GAChB,gBAACO,EAAS,iBAAKP,IAKrB,CDiCAF,EAAaU,YAAc,c,uSJ3CzB,IAAI7G,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,sBMlFrDhC,EAAOD,QAAU4G,C,kBCAjB3G,EAAOD,QAAU6G,C,sBCAjB5G,EAAOD,QAAU8G,C,gBCAjB7G,EAAOD,QAAU+G,C,kBCAjB9G,EAAOD,QAAUgH,C,uBCAjB/G,EAAOD,QAAUiH,C,gCCAjBhH,EAAOD,QAAUkH,C,iDCAjBjH,EAAOD,QAAUmH,C,yCCAjBlH,EAAOD,QAAUoH,C,qCCAjBnH,EAAOD,QAAUqH,C,6HCAjB,2J,gFCAA,4JACA,4JACA,4JACA,4JACA,2J,gFCJA,4JACA,2J,uGCDA,M,uSAAA,OAOA,QAQA,QACA,SAEA,QAGA,SACA,SAEA,SAWO,MAAMC,EAA6C,UAAMpB,MAAMC,IACpE,MAAM,UACJoB,EADI,SAEJC,EAFI,UAGJC,EAHI,WAIJC,EAJI,OAKJC,EALI,sBAMJC,GACEzB,EAEE0B,GAAO,IAAA7B,YAAW,EAAAF,cAChBgC,OAAQC,IAAiB,IAAA/B,YAAW,EAAAgC,gBACrC,CAAEC,IAAc,IAAAC,WAAS,IAE1B,0BAAEC,EAAF,kBAA6BC,IAAsB,IAAAC,wBAAuBd,GAE1Ee,GAAa,IAAA/B,UAAQ,K,MACzB,GAAI6B,GAAqBD,EAA2B,CAClD,MAAMI,EAA8C,wBAA3BH,EAAkBI,KACrCC,EAA4C,QAA7B,EAAiB,OAAjBL,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBM,kBAAU,eAAEC,aAEpD,OAAW,OAAJd,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UACX8D,EAAmB,kCAA0C,+BAC7D,CAAEE,gBAEL,CAED,OAAW,OAAJZ,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,eAAvB,GACC,CAAC0D,EAA2BC,EAAmBP,IAE5Ce,GAAe,IAAAC,kBACfC,GAAa,IAAAC,cAAY,KAC7BhB,EAAa,CAAEiB,QAAS,CAAE3H,KAAM,EAAA4H,KAAKC,OAAQC,QAAS,OAAtD,GACC,CAACpB,IAYJ,OAVA,IAAAqB,YAAU,KACRnB,GAAYoB,IACNA,GAA4C,MAA7BlB,GAEjBmB,YAAW,IAAMR,KAAc,GAEG,MAA7BX,IALT,GAOC,CAACA,IAGF,wBAAC,EAAAoB,KAAI,CAACC,WAAW,IAAAC,cAAa,gBAAiBb,EAAac,MAAOC,KAAK,SACtE,wBAAC,EAAAC,WAAU,CACTJ,UAAWZ,EAAaiB,OACxBA,OACE,wBAAC,EAAAC,UAAS,CAACN,WAAW,IAAAC,cAAa,4BAA6Bb,EAAaN,aAC1EA,EACD,wBAAC,EAAAyB,QAAO,CAACZ,QAAStB,EAAMpD,UAAU,gFAAuFuF,aAAa,eACpI,wBAAC,EAAAC,OAAM,CAACN,KAAK,QAAQO,WAAW,cAAcC,KAAM,wBAAC,EAAAC,cAAa,UAIxEC,OACE,wBAAC,EAAAJ,OAAM,CACLT,WAAW,IAAAC,cAAa,gBACxBS,WAAW,cACXC,KAAM,wBAAC,EAAAG,eAAc,MAAG,aACR,OAAJzC,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,SAC5B8F,QAASzB,MAIf,wBAAC,EAAA0B,aAAY,CACXjD,UAAWA,EACXM,KAAMA,EACNL,SAAUA,EACVE,WAAYA,EACZD,UAAWA,EACXE,OAAQA,EACRC,sBAAuBA,IA7B7B,I,iCChFF3H,EAAOD,QAAUyK,C,wGCAjB,YAEO,MAAM5B,GAAiB,IAAA6B,YAAW,CACvChB,KAAM,OAAF,QACFiB,SAAU,MACVC,UAAW,OACR,EAAAC,WAAWC,QAAQ,EAAAC,OAAOC,mBAAoB,EAAAD,OAAOE,uBAE1DpB,OAAQ,CACNqB,QAAS,OACTC,WAAY,SACZC,eAAgB,iBAElB9C,WAAY,CACV6C,WAAY,Y,wHCdhB,I,EAAA,G,EAAA,O,2BACA,E,uSAAA,OACA,QAQA,QACA,SAMA,SAEA,SACA,SAEA,MAAME,GAAY,IAAAX,YAAW,CAC3BY,mBAAoB,OAAF,sBAChBJ,QAAS,OACTK,SAAU,QACP,EAAAV,WAAWW,IAAI,EAAAT,OAAOE,uBAAqB,CAC9CQ,UAAW,OACXC,UAAW,SACXC,OAAQ,UAEVC,0BAA2B,OAAF,wBACpB,EAAAf,WAAWgB,KAAK,EAAG,EAAG,UAAQ,CACjClB,SAAU,OACVC,UAAW,OACXe,OAAQ,OACRF,UAAW,SACXC,UAAW,SACXI,aAAc,EAAAf,OAAOgB,iBACrBb,QAAS,OACTc,cAAe,WAEjBC,kBAAmB,CACjBf,QAAS,OACTc,cAAe,MACfb,WAAY,UAEde,gBAAiB,CACfhB,QAAS,OACTC,WAAY,SACZgB,WAAY,OACZR,OAAQ,QAEVS,iBAAkB,OAAF,oDACX,EAAAvB,WAAWgB,KAAK,EAAG,EAAG,UAAQ,CACjClB,SAAU,OACVO,QAAS,OACTO,UAAW,OACXE,OAAQ,OACRU,gBAAiB,EAAAtB,OAAOuB,0BACrB,EAAAzB,WAAW0B,aAAa,EAAAxB,OAAOyB,qBAAmB,CACrD,6CAA8C,CAC5Cb,OAAQ,QACRF,UAAW,e,eA4DuC,EACtDlE,YACAM,OACAL,WACAC,YACAC,aACAC,SACAC,4BAEA,MAAO6E,EAAYC,IAAiB,IAAAxE,UAAS,IAEvC,kBACJE,EADI,0BACeD,EADf,sBAC0CwE,EAD1C,YACiEC,IACnE,IAAAvE,wBAAuBd,GAErBsF,EAAY,UAAEC,QAAyB,OAAjB1E,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,QAAU3E,EAAkB2E,OAAOzJ,OAAS,EAErF0J,GAAgC,OAAjB5E,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,SAAU,GAC5CE,EAAU5B,IACV6B,EA9DS,EAACC,EAA0BtF,KAC1C,IAAKsF,EACH,MAAO,GAGT,IAAIC,EAAS,GACb,OAAQD,EAAYE,YAClB,IAAK,aACHD,EAASvF,EAAKpD,UAAU,eACxB,MACF,IAAK,QACH2I,EAASvF,EAAKpD,UAAU,UACxB,MAEF,QACE2I,EAASvF,EAAKpD,UAAU,eAI5B,IAAI6I,EAAkB,GAGlBA,EADG,aADCH,EAAYI,eAEE1F,EAAKpD,UAAU,aAIfoD,EAAKpD,UAAU,aAIrC,MAGM+I,EAHS3F,EAAKjC,WAAW,CAC7B6H,IAAK,cAEYC,CAAOP,EAAYQ,gBAChCpI,EAAOsC,EAAKvC,WAAWkI,GAE7B,OAAO,IAAAI,eAAc/F,EAAKpD,UAAU,8CAA7B,CAAkF,CACvF2I,SACAE,kBACA/H,QAHF,EA0BcsI,CAASb,EAAaP,GAAa5E,GAE3CiG,GAAY,IAAAvH,UAAQ,MAA4B,OAArBoG,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBrJ,UAAWsJ,GAAa,CAACD,EAAuBC,IAClGmB,EAAyBlB,EAAY,EAE3C,IAAK1E,EAEH,OADM,OAANR,QAAM,IAANA,GAAAA,EAAQqG,MAAR,uGAA8GzG,IACvG,MAGT,IAAA6B,YAAU,KACJwD,GAAemB,IACX,OAANpG,QAAM,IAANA,GAAAA,EAAQqG,MAAR,sFAA6FnB,EAA7F,wBAAsHtF,KAEpHqF,IAAgBmB,IACZ,OAANpG,QAAM,IAANA,GAAAA,EAAQqG,MAAR,0FAAiGnB,EAAjG,wBAA0HtF,IAC3H,GACA,CACDI,EACAJ,EACAwG,IAYF,OACE,+BAAKvE,WAAW,IAAAC,cAAa,sBAAuBwD,EAAQ3B,qBAC1D,+BAAK9B,WAAW,IAAAC,cAAa,kBAAmBwD,EAAQrB,4BACtD,+BAAKpC,WAAW,IAAAC,cAAa,qBAAsBwD,EAAQhB,oBACzD,wBAAC,EAAAgC,YAAW,CAACzE,UAAU,qBAAqB0D,IACzCY,GAAaC,GACd,+BAAKvE,WAAW,IAAAC,cAAa,8BAA+BwD,EAAQf,kBAClE,oCACG,IAAA0B,eAAc/F,EAAKpD,UAAU,6BAA7B,CAAiE,CAChEyJ,KAAMzB,EAAa,EACnBI,eAGJ,wBAAC,EAAA5C,OAAM,CACLT,UAAU,gBACVW,KAAM,wBAAC,EAAAgE,mBAAkB,MACzBC,SAAyB,IAAf3B,EACVvC,WAAW,cACXK,QA3Ba,KACnB,OAAN5C,QAAM,IAANA,GAAAA,EAAQqG,MAAR,iGAAwGzG,IACjGmF,EAAcD,EAAa,IAyBK,aACf5E,EAAKpD,UAAU,mBAE7B,wBAAC,EAAAwF,OAAM,CACLT,UAAU,iBACVW,KAAM,wBAAC,EAAAkE,oBAAmB,MAC1BnE,WAAW,cACXkE,SAAU3B,IAAeI,EAAY,EACrCtC,QA/BY,KAClB,OAAN5C,QAAM,IAANA,GAAAA,EAAQqG,MAAR,gGAAuGzG,IAChGmF,EAAcD,EAAa,IA6BI,aACd5E,EAAKpD,UAAU,iBAKnC,wBAAC,EAAA6J,cAAa,CACZ9E,UAAU,oBACVsE,UAAWA,EACXS,sBAA4C,OAArB5B,QAAqB,IAArBA,OAAqB,EAArBA,EAAwBF,GAC/CjF,SAAUA,KAGd,+BAAKgC,WAAW,IAAAC,cAAa,oBAAqBwD,EAAQb,mBACxD,wBAAC,EAAAoC,QAAO,CACNC,QAAStG,EACTgF,YAAaH,EAAaP,GAC1B/E,WAAYA,EACZD,UAAWA,EACXE,OAAQA,EACRJ,UAAWA,EACXK,sBAAuBA,KA/C/B,C,gBC9KF3H,EAAOD,QAAU0O,C,yGCyDX,SAAiCnH,GACrC,MAAM,WAAEoH,IAAe,IAAAC,yBAA0B,CAAC,EAmDlD,OAjDY,IAAArI,UAAQ,K,QAClB,IAAIsI,EACAzG,EACAD,EA0BAwE,EAzBAC,GAAc,EAElB,GAAI+B,GAAcpH,EAAW,CAC3B,IAAIrH,EAAIyO,EAAWrL,OAAS,EAG5B,KAAOpD,GAAK,KAAO2O,IAAgCzG,IAAsBD,IAA4B,CACnG,MAAM2G,EAAWH,EAAWzO,GACvB4O,EAAiBvH,YAAcA,IACZ,YAAlBuH,EAASC,OAA6C,QAAtB,EAAAD,EAAS3N,aAAa,eAAE6N,eAE1D7G,EAA4B2G,EACD,UAAlBA,EAASC,MAAsC,kBAAlBD,EAASrO,OAE/C2H,EAAoB,UAAE6G,KAAKH,EAAS3N,OAAQ+N,GAAuC,uBAAtBA,EAAa1G,MAAuD,wBAAtB0G,EAAa1G,OAGxHqG,EAA8B,UAAEI,KAAKH,EAAS3N,OAAQ+N,GAAuC,0BAAtBA,EAAa1G,SAIxFtI,GAAK,CACN,CACF,CAaD,OAVI2O,GAA+BzG,IACjCuE,EAAwBwC,EAAyBN,EAA6BzG,KAI5EyG,GAA+BzG,KAEjCwE,EAA6E,eAAtB,QAAzC,EAA0B,OAAzBzE,QAAyB,IAAzBA,OAAyB,EAAzBA,EAA2BhH,aAAa,eAAEiO,kBAGpD,CACLxC,cACAxE,oBACAD,4BACAwE,wBACAkC,8BALF,GAOC,CAACF,EAAYpH,GAGjB,E,kCA9GD,I,EAAA,G,EAAA,O,2BACA,OAEA,SACA,QAEA,SAIO,MAAM4H,EAA2B,CAACN,EAA0DzG,KACjG,MAAMiH,EAA2B,UAAEvC,QAAmC,OAA3B+B,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6B9B,SAAW8B,EAA4B9B,OAAOuC,QAAO,CAACC,EAAUxM,KACtIwM,EAAIxM,EAAKyM,YAAczM,EAChBwM,IACN,CAAC,GAWJ,MAAME,EAAa,CAACpC,EAAyBqC,K,UAC3C,MAAMnB,EAAgD,OAAxBc,QAAwB,IAAxBA,OAAwB,EAAxBA,EAA4B,EAAAM,oBAA4BtC,IACtF,IAAKkB,GAAwE,KAAb,QAAlC,EAAA3N,OAAOgP,KAAKrB,UAAsB,eAAEjL,UAAiB,UAAEwJ,QAAQyB,EAAsBsB,aACjH,MAAO,GAGT,MAAMC,EAA8H,QAAxG,EAAkC,QAAlC,EAAqB,OAArBvB,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBsB,mBAAW,eAAEE,WAAWhN,IAAa,MAAC,OAAa,QAAb,EAAAA,EAAKiN,gBAAQ,eAAExM,OAAO,EAAG,OAAQkM,CAAjC,WAA2C,SAAK,EAMzI,IAAIO,EAAWC,KAAKC,IAAI,EAAGL,EAJF,GAMzB,MAAMM,EAAWF,KAAKG,IAAIJ,EALD,EAK8B1B,EAAsBsB,YAAYvM,QAKzF,OAFI8M,EAAWH,EARU,IAQmBA,EAAWC,KAAKC,IAAI,EAAGC,EAR1C,IAUlB,UAAEE,MAAML,EAAUG,GAAUG,KAAKC,GA5B1C,SAAyBA,EAAejC,EAA4BuB,GAClE,MAAM,SAAEE,EAAF,MAAY7O,GAAUoN,EAAsBsB,YAAYW,IAAU,CAAC,EACzE,MAAO,CACLC,SAAUT,EACVU,MAAOvP,EACPwP,UAAWH,IAAUV,EAExB,CAqBmDc,CAAgBJ,EAAOjC,EAAuBuB,IAAhG,EAGF,GAAI,UAAEhD,QAAyB,OAAjB1E,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,QAC/B,OAAO3E,EAAkB2E,OAAOwD,KAAKxN,IAAD,CAClC8N,UAAU,UACVC,WAAY,EAAAnB,oBAAoB5M,EAAKsK,YACrC0D,WAAYtB,EAAW1M,EAAKsK,WAA2BtK,EAAK4K,mBAGhE,E,+JCgBiC,CACjCqD,WAAY,cACZC,MAAO,SACPC,WAAY,c,iGCzEd,I,EAAA,E,uSAAA,OACA,G,EAAA,Q,2BACA,QAUA,QAIA,SAQA,QAEA,SACA,SACA,SACA,SAKA,MAAM7F,GAAY,IAAAX,YAAW,CAC3BhB,KAAM,OAAF,UACC,EAAAmB,WAAWC,QAAQ,EAAAC,OAAOoG,iBAAkB,EAAApG,OAAOqG,qBAExDC,MAAO,CACLnG,QAAS,SAEXoG,QAAS,OAAF,UACF,EAAAzG,WAAW0G,OAAO,EAAAxG,OAAOyG,sBAAuB,IAErDC,OAAQ,CACNC,UAAW,EAAA3G,OAAOgB,kBAEpB4F,KAAM,CACJC,MAAO,QAETC,SAAU,CACR1F,WAAY,OACZ2F,WAAY,GAEdC,OAAQ,CACN7G,QAAS,OACTwG,UAAW,EAAA3G,OAAOoG,kBAEpBa,QAAS,CACPC,UAAW,oBAEX,mBAAkB,2CAChBL,MAAO,OACPjG,OAAQ,QACL,EAAAd,WAAW0B,aAAa,EAAAxB,OAAOmH,uBAC/B,EAAArH,WAAWsH,OAAO,MAAO,UAAQ,CACpCC,gBAAiB,EAAArH,OAAOsH,sBACxBC,iBAAkB,EAAAvH,OAAOwH,kCACzBC,eAAgB,EAAAzH,OAAOwH,kCACvBE,kBAAmB,EAAA1H,OAAOwH,kCAC1BG,YAAa,EAAA3H,OAAO4H,mBACpBC,wBAAyB,WACzBC,kBAAmB,KACnBC,cAAe,CACbC,GAAI,CAAEC,UAAW,wBAgBnBC,EAAqB,CACzBzK,KAAM,qCACN0K,KAAM,CACJzR,IAAK,EACLN,MAAO,CACLgS,MAAO,QAKPC,EAAuB,CAC3B5K,KAAM,uCACN0K,KAAM,CACJzR,IAAK,EACLN,MAAO,CACLgS,MAAO,Q,UAKkC,EAC7C1E,UACAtB,cACAzF,aACAD,YACAE,SACAJ,YACAK,4BAEA,MAAMyL,EAAShI,IACTiI,GAAoB,IAAAtN,YAAW,EAAAuN,oBAC9BC,EAAkBC,GAAuB,UAAMvL,UAAS,GACzDL,GAAO,IAAA9B,kBAQP2N,GAA0B,IAAA3K,cAAa4K,IACvC/L,IAHgC+L,KAAe,OAANhM,QAAM,IAANA,GAAAA,EAAQqG,MAAR,uHAAkI,OAAJ2F,QAAI,IAAJA,OAAI,EAAJA,EAAMC,aAApI,8BAA0K,OAAJD,QAAI,IAAJA,OAAI,EAAJA,EAAME,gBAA5K,wBAA2MtM,GAA1P,EAIIuM,CAA6BH,GAC7B/L,EAAsB+L,EAAMlF,GAC7B,GACA,CAACA,EAAS7G,KAEP,MAAEmM,IAAU,IAAA/N,YAAW,EAAAgO,cACvBC,GAAsB,IAAAlL,cAAY,KACtC,MAAM,IAAEmL,GAAQH,EAAMI,OAEhBC,EAAS,IAAIC,gBAQnB,OAPAD,EAAOE,OAAO,MAAOJ,GACrBE,EAAOE,OAAO,MAAd,UAAwBnH,EAAYoH,YAEhCpH,EAAYqH,YACdJ,EAAOE,OAAO,aAAd,UAA+BnH,EAAYqH,aAG7C,UAAUC,OAAOC,SAASC,OAA1B,yCAAiEP,EAAOQ,WAAxE,GACC,CAACzH,EAAa4G,IAkEjB,OACE,+BAAKvK,UAAW6J,EAAO3J,MACrB,wBAAC,EAAAuE,YAAW,CAACzE,UAAW6J,EAAOhC,OAAQxJ,EAAKpD,UAAU,aACtD,wBAAC,UAAQ,CACP+E,UAAU,WAETiF,EAAQoG,MAAQ,IAEnB,wBAAC,EAAAC,QAAO,CAACtL,UAAW6J,EAAO/B,UAC3B,wBAAC,EAAAyD,UAAS,CACRC,SAAUxB,EACVyB,YAAapN,EAAKpD,UAAU,iCAC5BwI,QAAS,CACPiI,iBAAkB7B,EAAOrB,UAG3B,wBAAC,EAAA/D,YAAW,CAACzE,UAAW6J,EAAOhC,OAAQxJ,EAAKpD,UAAU,mBACtD,wBAAC,EAAA0Q,MAAK,CAAC3L,UAAW6J,EAAOhC,OAAQxJ,EAAKpD,UAAU,4IAChD,wBAAC,EAAAwF,OAAM,CACLM,QAnFe,KACrBkJ,GAAoB,GACpB,MAAM2B,EAAmB,IAAIC,SAASC,IACpChC,EAAkBiC,eAAetC,GAAoBuC,MAAK,EAAGC,SAC3DnC,EAAkBoC,iBAAiBD,GAAID,MAAK,KAC1CF,EAAQG,EAAR,GADF,GADF,IAOIE,EAAqB,IAAIN,SAASC,IACtChC,EAAkBiC,eAAenC,GAAsBoC,MAAK,EAAGC,SAC7DnC,EAAkBoC,iBAAiBD,GAAID,MAAK,KAC1CF,EAAQG,EAAR,GADF,GADF,IAOF,IAAIG,EACJ,IAEE,MAAMC,EAAgB,CACpBC,OAAO,IAAAnQ,gBAAe,CAAEkC,OAAMkO,WAAY5I,EAAYQ,eAAgBjG,WAAY,eAClFsO,KAAK,IAAArQ,gBAAe,CAAEkC,OAAMkO,WAAY5I,EAAY8I,aAAcvO,WAAY,gBAI1EwO,GAA0B,IAAAC,kBAC9BtO,EACA,CACEgO,gBACAO,UAAW,CAAEC,QAAS,GACtBC,WAAY,EACZC,WAAW,IAAAC,iBAAgBX,IAE7BnO,EACAD,EAAUgP,WAIZb,EAAgB,IAAIP,SAASC,IAC3BhC,EAAkBiC,eAAe,CAC/BrC,KAAMgD,EACN1N,KAAM,iCAELgN,MAAK,EAAGC,SACPnC,EAAkBoC,iBAAiBD,GAAID,MAAK,KAC1CF,EAAQG,EAAR,GADF,GALJ,GAUH,CAAC,MAAOiB,GACD,OAAN/O,QAAM,IAANA,GAAAA,EAAQqG,MAAR,yFAAgGzG,EAAhG,4BAA6H4F,EAAYQ,eAAzI,0BAAyKR,EAAY8I,eACrLL,EAAgBP,QAAQC,SAAQ,EACjC,CAlF6C,OAAN3N,QAAM,IAANA,GAAAA,EAAQqG,MAAR,0FAAiGzG,IAsFzI8N,QAAQsB,IAAI,CAACvB,EAAkBO,EAAoBC,IAAgBgB,SAAQ,KACzEnD,GAAoB,GACpBgB,OAAOoC,KAAK5C,IAAuB,SAAnC,GAFF,EA0BM/J,WAAW,YACXV,WAAW,IAAAC,cAAa4J,EAAO5B,OAAQ,oBACvCtH,KAAM,wBAAC,EAAA2M,cAAa,MACpBC,KAAK,QAEJlP,EAAKpD,UAAU,sBAGpB,wBAAC,EAAAqQ,QAAO,CAACtL,UAAW6J,EAAO/B,UAC3B,wBAAC,EAAArD,YAAW,CAACzE,UAAW6J,EAAOhC,OAAQxJ,EAAKpD,UAAU,0BACtD,wBAAC,EAAAwF,OAAM,CACL+M,GAAG,IACH9M,WAAW,YACXV,WAAW,IAAAC,cAAa,YAAa4J,EAAO1B,KAAM0B,EAAO5B,QACzDtH,KAAM,wBAAC,EAAA8M,cAAa,MACpBF,KAAK,OACLG,OAAO,SACPC,KAAK,kDACL5M,QAjIkC,IAAY,OAAN5C,QAAM,IAANA,OAAM,EAANA,EAAQqG,MAAR,8GAAqHzG,KAmI5JM,EAAKpD,UAAU,yCAChB,wBAAC,EAAAqS,cAAa,CAACtN,UAAW6J,EAAOxB,YAEnC,wBAAC,EAAA5H,OAAM,CACL+M,GAAG,IACH9M,WAAW,YACXV,WAAW,IAAAC,cAAa,YAAa4J,EAAO1B,KAAM0B,EAAO5B,QACzDtH,KAAM,wBAAC,EAAA8M,cAAa,MACpBF,KAAK,OACLG,OAAO,SACPC,KAAK,kDACL5M,QA7I+B,IAAY,OAAN5C,QAAM,IAANA,OAAM,EAANA,EAAQqG,MAAR,uJAA8JzG,KA+IlMM,EAAKpD,UAAU,kFAChB,wBAAC,EAAAqS,cAAa,CAACtN,UAAW6J,EAAOxB,YAEnC,wBAAC,EAAA5H,OAAM,CACL+M,GAAG,IACH9M,WAAW,YACXV,WAAW,IAAAC,cAAa,YAAa4J,EAAO1B,KAAM0B,EAAO5B,QACzDtH,KAAM,wBAAC,EAAA8M,cAAa,MACpBF,KAAK,OACLG,OAAO,SACPC,KAAK,kDACL5M,QAzJ0B,IAAY,OAAN5C,QAAM,IAANA,OAAM,EAANA,EAAQqG,MAAR,0IAAiJzG,KA2JhLM,EAAKpD,UAAU,qEAChB,wBAAC,EAAAqS,cAAa,CAACtN,UAAW6J,EAAOxB,YAEnC,+BAAKrI,UAAW6J,EAAOtB,QACrB,wBAAC,EAAAqF,gBAAe,CAACC,iBAAkB3D,EAAyB4D,wBAAwB,IACpF,wBAAC,EAAAC,WAAU,CAACC,YAAa/I,EAAQoG,MAAQ,GAAIyC,wBAAwB,KAvE3E,C,gBCxNFrX,EAAOD,QAAUyX,C,gBCAjBxX,EAAOD,QAAU0X,C,gBCAjBzX,EAAOD,QAAU2X,C,gBCAjB1X,EAAOD,QAAU4X,C,gFCAjB,2J,uGCAA,M,uSAAA,OACA,QACA,SACA,QAIA,MAAMvM,GAAY,IAAAX,YAAW,CAC3BhB,KAAM,CACJmO,YAAa,EAAA9M,OAAO4H,mBACpB7G,aAAc,EAAAf,OAAO4H,mBACrBlH,UAAW,SACXE,OAAQ,QAEVmM,QAAS,CACPnM,OAAQ,QAAF,OAAU,EAAAZ,OAAOgN,kBAAjB,aAYGzJ,EAA8C,UAAMpI,MAAMC,IACrE,MAAM,UACJqD,EADI,sBAEJ+E,EAFI,UAGJT,EAHI,UAIJkK,EAJI,SAKJxQ,GACErB,EAEE8G,EAAU5B,IACVxD,GAAO,IAAA7B,YAAW,EAAAF,aAExB,OACE,+BAAK0D,WAAW,IAAAC,cAAa,iBAAkBwD,EAAQvD,KAAMsO,GAAa/K,EAAQ6K,QAAStO,IACzF,wBAAC,EAAAyO,kBAAiB,CAChBzQ,SAAUA,EACV+G,sBAAuBA,EACvBT,UAAWA,EACXnE,KAAMqO,EAAY,QAAU,QAC5BnQ,KAAMA,IAPZ,I,iCCvCF5H,EAAOD,QAAUkY,C,6GCAjB,I,EAAA,G,EAAA,O,2BACA,QACA,SAGA,SAcA,MAAMC,EAAkE,UAAMjS,MAAMC,IAClF,MAAM,WACJuB,EADI,UAEJD,EAFI,kBAGJ2Q,EAHI,sBAIJxQ,EAJI,UAKJL,EALI,SAMJC,EANI,OAOJG,EACAE,KAAM3D,GACJiC,EAEJ,OACE,wBAAC,EAAAF,aAAY,eAAC/B,YAAaA,GAAiBkU,GAC1C,wBAAC,EAAA9Q,cAAa,CACZI,WAAYA,EACZD,UAAWA,EACXG,sBAAuBA,EACvBL,UAAWA,EACXI,OAAQA,EACRH,SAAUA,IARhB,IAcW6Q,GAAsB,IAAAC,kBAAiBH,G,uCC7CpDlY,EAAOD,QAAUuY,C,gFCAjB,2J,kICAA,I,EAAA,E,uSAAA,OACA,G,EAAA,O,2BACA,QAOA,QACA,SAQO,MAAMC,GAA0B,IAAA9N,YAAW,CAChD+G,OAAQ,OAAF,QACJ9F,OAAQ,OACR8M,WAAY,EAAA1N,OAAO2N,mBACnBC,cAAe,EAAA5N,OAAO2N,mBACtBb,YAAa,EAAA9M,OAAO6N,oBACpB9M,aAAc,EAAAf,OAAO6N,oBACrBC,WAAY,EAAA9N,OAAO+N,kBACnBC,SAAU,EAAAhO,OAAOiO,gBACjBC,UAAW,UACR,EAAApO,WAAWqO,YAAY,qBAE5BC,YAAa,CACXtB,YAAa,kB,6CAI4C,EAAGuB,QAAO7O,UAASf,gBAC9E,MAAM6J,EAASmF,IACTa,GAAc,IAAArT,YAAW,EAAAsT,oBAE/B,OACE,wBAAC,EAAArP,OAAM,CACLM,QAASA,EACTf,WAAW,IAAAC,cAAa,kBAAmB4J,EAAO5B,OAAQjI,IAE1D,wBAAC,EAAA+P,YAAW,CACV5P,KAAK,QACL6P,MAAO,UAAEzY,IAAIsY,EAAa,CAAC,UAAW,6BAA+B,aAAe,OACpFI,WAAYpG,EAAO8F,cAEpBC,EAVL,C,gBCvCFnZ,EAAOD,QAAU0Z,C,gFCAjB,2J,iHCAA,cACA,UAEA,SAGA,SACA,S,mDAEO,MAAMC,EAA6CxT,IACxD,MAAM,SACJ2I,EADI,aAEJ8K,EAFI,OAGJjS,EAHI,sBAIJC,EAJI,sBAKJiS,EALI,sBAMJC,EANI,6BAOJC,GACE5T,EAEJ,MAAsB,UAAlB2I,EAASC,KACP,UAAEiL,IAAIlL,EAAS3N,OAAQ+N,GAAyC,sBAAxBA,EAAa+K,SAErD,wBAAC,EAAAC,sBAAqB,CACpBN,aAAcA,EACdjS,OAAQA,EACRJ,UAAYuH,EAAiBvH,UAC7BsS,sBAAuBA,EACvBM,WAAY,EAAAC,gBAAgBC,YAK3B,KAIP,wBAAC,EAAAC,UAAS,CACR9Q,UAAU,4BACViF,QAASK,EACTlH,sBAAuBA,EACvB2S,oBAAkB,GAElB,wBAAC,EAAAC,yBAAwB,CACvB7S,OAAQA,EACRJ,UAAYuH,EAAiBvH,UAC7BuS,sBAAuBA,EACvBC,6BAA8BA,IAXpC,E,4BAiBFJ,EAAwBc,UAAa3L,I,MACnC,MAAsB,YAAlBA,EAASC,KAEJ,UAAEiL,IAA2B,QAAtB,EAAAlL,EAAS3N,aAAa,eAAEuZ,UAAWC,GAAYA,IAAY,EAAAC,gBAAgBC,+BAGrE,UAAlB/L,EAASC,MAAsC,kBAAlBD,EAASrO,MACjC,UAAEuZ,IAAIlL,EAAS3N,OAAQ+N,GAAiBA,EAAa1G,OAAS,EAAA4R,gBAAgBC,WAGvF,C,gFC/DF,2J,kHCAA,I,EAAA,E,uSAAA,OAMA,G,EAAA,Q,2BACA,QACA,SAEA,SACA,SACA,SACA,SASA,MAKaG,EAAoE,UAAMtU,MAAMC,IAC3F,MAAM,OACJwB,EADI,UAEJJ,EAFI,sBAGJuS,GAAwB,EAHpB,6BAIJC,GACE5T,GAEG2U,EAA2BC,IAAgC,IAAA7S,WAAS,GACrEL,GAAO,IAAA9B,kBACPkH,GAAU,IAAA+N,sCAEV,UACJC,EADI,qCAEJC,EAFI,iBAGJC,EAHI,sBAIJC,IACE,IAAAC,qBAAoB9T,IAExB,IAAA6B,YAAU,KACJzB,GAAUyT,IAEN,OAANzT,QAAM,IAANA,GAAAA,EAAQqG,MAAR,+CAAsDzG,EAAtD,wBAA+E0T,EAA/E,mDAAmIC,IACpI,GACA,CACDD,EACAtT,EACAJ,EACA2T,EACAE,IAGF,MAAME,GAAY,IAAAvS,cAA2CgN,GAClClO,EAAKjC,WAAW,CAAE6H,IAAK,cAEzC8N,EADqB,IAAAC,iCAAgCzF,KAE3D,CAAClO,KAEJ,IAAAuB,YAAU,K,UACR,IAAK0Q,IAA0BgB,GAA6BI,EAAsC,CAChG,MAAMO,EAAmD,QAAjC,EAAqB,OAArBL,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB1S,kBAAU,eAAEgT,UACrDC,EAAiD,QAAjC,EAAqB,OAArBP,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB1S,kBAAU,eAAEkT,QAEzD,IAEE,MAAMC,EAAe,IAAIC,KAAKA,KAAKC,MA/Cb,QAgDhBC,EAA0BV,EAAUG,GAEpC/L,EAAYsM,EAA0BH,EAAeG,EAA0BH,EAC/EI,EAAUX,EAAUK,GAGpBlT,GAAgD,QAAjC,EAAqB,OAArB2S,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB1S,kBAAU,eAAEC,eAAgB,GAClE8F,EAAc,OAAJ5G,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UACpBgE,EA1DsC,uGADF,sFA4DpC,CACEA,eACAiH,UAAW7H,EAAKvC,WAAWoK,GAC3BuM,QAASpU,EAAKvC,WAAW2W,KAI7B,GAAIA,GAAWvM,EAAW,CAExB,MAAMwM,EAAc,IAAI,EAAAC,yBAAyB,CAC/CC,OAAQ,CACNC,UAAW,UACXC,YAAa,2BACbC,UAAW,CACTC,UAAU,EACV/N,UACA0L,WAAY1R,EAAe,sBAAwB,qBACnDiH,UAAW7H,EAAKvC,WAAWoK,EAAW,CAAEjC,IAAK,eAC7CwO,QAASpU,EAAKvC,WAAW2W,EAAS,CAAExO,IAAK,mBAKzC,OAAN9F,QAAM,IAANA,GAAAA,EAAQqG,MAAR,6EAAoFzG,EAApF,aAAkGkH,IAClGxL,SAASwZ,cAAcP,GACvBnB,GAA6B,EAC9B,MACO,OAANpT,QAAM,IAANA,GAAAA,EAAQqG,MAAR,6CAAoDiO,EAApD,kCAAqFvM,EAArF,mCAEH,CAAC,MAAOgH,GACD,OAAN/O,QAAM,IAANA,GAAAA,EAAQqG,MAAR,yEAAgFyN,EAAhF,2BAAkHE,EAAlH,mBAA0IjF,GAC3I,CACF,IACA,CACD7O,EACAF,EACA2T,EACA/T,EACA2T,EACAE,EACAtB,IAGF,MAAM4C,GAAgB,IAAAnW,UAA4B,KAChD,GAAK4U,EAGL,OAAkB,IAAdF,EACF,YAAgB,OAAJpT,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,YAA5B,iBAAsD0W,EAAiBtG,MAElEsG,EAAiBtG,IAAxB,GACC,CAACoG,EAAWpT,EAAsB,OAAhBsT,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBtG,OAEvC,OAAKsG,EAKH,iDACIF,GACA,wBAAC,EAAA0B,8BAA6B,CAC5BnT,UAAWyD,EAAQiC,aACnBkM,sBAAuBA,EACvBrB,6BAA8BA,IAGlC,wBAAC,UAAQ,CAACvQ,UAAU,WACjBkT,IAbE,IAGT,I,+IC1HI,SAA8BnV,GAClC,MAAM,WAAEoH,IAAe,IAAAC,yBAA0B,CAAC,GAE5C,iBAAEuM,EAAF,eAAoByB,IAAmB,IAAArW,UAAQ,K,MACnD,IAAIsW,EACAC,EAEJ,GAAInO,EAAY,CACd,IAAIzO,EAAIyO,EAAWrL,OAAS,EAG5B,KAAOpD,GAAK,KAAO2c,IAAwBC,IAAoB,CAC7D,MAAMhO,EAAWH,EAAWzO,GACvB4O,EAAiBvH,YAAcA,IACZ,YAAlBuH,EAASC,KACP,UAAEiL,IAA2B,QAAtB,EAAAlL,EAAS3N,aAAa,eAAEuZ,UAAWC,GAAwB,iCAAZA,MAExDkC,EAAsB/N,GAEG,UAAlBA,EAASC,MAAsC,kBAAlBD,EAASrO,MAE3C,UAAEuZ,IAAIlL,EAAS3N,OAAQ+N,GAAwC,eAAX,OAAZA,QAAY,IAAZA,OAAY,EAAZA,EAAc1G,UACxDsU,EAAoBhO,IAK1B5O,GAAK,CACN,CACF,CAED,MAAO,CACLib,iBAAkB0B,EAClBD,eAAgBE,EAFlB,GAIC,CAACnO,EAAYpH,IAEVwV,GAAoC,IAAAxW,UAAQ,K,QAChD,QAAI4U,GAE8D,eAAX,QAA9C,EAA+B,QAA/B,EAACA,EAAiBha,aAAa,eAAE6N,qBAAa,eAAExG,KAEzD,GACC,CAAC2S,IAEEC,EAAwB,UAAEnM,KAAmB,OAAd2N,QAAc,IAAdA,OAAc,EAAdA,EAAgBzb,OAAQ+N,GAAuC,cAAtBA,EAAa1G,OACrFyS,GAAY,IAAA1U,UAAQ,K,MACxB,GAAI6U,EACF,OAAOA,EAAsBnB,SAAW+C,GAAmD,kBAAjC5B,EAAsBnB,SAA0D,QAA5B,EAAAmB,EAAsBrO,cAAM,eAAEG,SAAU8P,CAExJ,GACC,CAAC5B,IAEEF,GAAuC,IAAA3U,UAAQ,KAEnD,GAAIqW,IAAmB3B,GAAa8B,EAAmC,CACrE,IAAIE,EAA8B,IAAInB,KAAKc,EAAeM,WAAWC,UACjE,EAAaF,KAEfA,EAAsBG,SAASR,EAAeM,UAAW,KAK3D,OADyBpB,KAAKC,MAAQkB,EACbI,CAC1B,CACD,OAAO,CAAP,GACC,CAACpC,EAAW8B,EAAmCH,IAclD,OAZY,IAAArW,UAAgC,KAAM,CAChD0U,YACAC,uCACAC,mBACAC,2BACE,CACFH,EACAC,EACAC,EACAC,GAIH,EAnGD,I,EAAA,G,EAAA,O,2BACA,OAEA,SAIA,MAAMiC,EAA4B,IAC5BL,EAAiB,iB,+ICRvB,M,uSAAA,OACA,QACA,QACA,SACA,SAEA,S,gCAQ4F7W,I,yIAC1F,MAAM,UAAEqD,GAAF,sBAAa4R,GAAb,6BAAoCrB,IAAiC5T,EAErE0B,IAAO,IAAA9B,kBACPuX,IAAc,IAAAC,0BAAyB,CAAExD,gCAA8BqB,2BAEvE9S,IAAa,IAAA/B,UAAQ,K,MACzB,MAAMkC,EAAoE,QAAjC,EAAqB,OAArB2S,SAAqB,IAArBA,QAAqB,EAArBA,GAAuB1S,kBAAU,eAAEC,aAC5E,OAAIF,EACS,OAAJZ,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,wCAA+C,CAAEgE,iBAG/D,OAAJZ,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gCAAvB,GACC,CAACoD,GAAMuT,KAEJlW,IAAW,IAAAqB,UAAQ,KAAK,MAAC,OAA6B,QAA7B,EAAqB,OAArB6U,SAAqB,IAArBA,QAAqB,EAArBA,GAAuBrO,cAAM,eAAEyQ,eAA/B,GAAgD,CAACpC,KAE1EqC,IAAmB,IAAAlX,UAAQ,IAAMwT,KAAgC,IAAA2D,yBAAwB,CAAE7V,QAAMuT,4BAA0B,CAACvT,GAAMuT,KAExI,OAAKA,GAKH,+BAAK5R,WAAW,IAAAC,cAAa,2BAA4BD,KACvD,mCAAK,sCAASlB,KACbyR,IAEC,6BAAGvQ,UAAU,+BACViU,IAGL,wBAAC,EAAAE,aAAY,CACXnU,UAAU,cACVL,QAAiC,QAAxB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaM,mBAAW,eAAEC,aACnC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBqZ,OAAgC,QAAxB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaM,mBAAW,eAAEE,OAClCC,aAAsC,QAAxB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaM,mBAAW,eAAEG,eAE1C,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,SACVL,QAA4B,QAAnB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaU,cAAM,eAAEH,aAC9B3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,WACvBqZ,OAA2B,QAAnB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaU,cAAM,eAAEF,OAC7BC,aAAiC,QAAnB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaU,cAAM,eAAED,eAErC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,MACVL,QAAyB,QAAhB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaW,WAAG,eAAEJ,aAC3B3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,QACvBsK,KAAK,UACL+O,OAAwB,QAAhB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaW,WAAG,eAAEH,OAC1BC,aAA8B,QAAhB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaW,WAAG,eAAEF,eAElC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,QACVL,QAA2B,QAAlB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaY,aAAK,eAAEL,aAC7B3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,UACvBsK,KAAK,WACL7J,SAAUA,GACV4Y,OAA0B,QAAlB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaY,aAAK,eAAEJ,OAC5BC,aAAgC,QAAlB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaY,aAAK,eAAEH,eAEpC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAiC,QAAxB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaa,mBAAW,eAAEN,aACnC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBqZ,OAAgC,QAAxB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaa,mBAAW,eAAEL,OAClCC,aAAsC,QAAxB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaa,mBAAW,eAAEJ,eAE1C,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,MACVL,QAAyB,QAAhB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAac,WAAG,eAAEP,aAC3B3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,QACvBsK,KAAK,WACL+O,OAAwB,QAAhB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAac,WAAG,eAAEN,OAC1BC,aAA8B,QAAhB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAac,WAAG,eAAEL,eAElC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,OACVL,QAA0B,QAAjB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAae,YAAI,eAAER,aAC5B3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,SACvBsK,KAAK,UACL+O,OAAyB,QAAjB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAae,YAAI,eAAEP,OAC3BC,aAA+B,QAAjB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAae,YAAI,eAAEN,eAEnC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAgC,QAAvB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAagB,kBAAU,eAAET,aAClC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBsK,KAAK,WACL+O,OAA+B,QAAvB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAagB,kBAAU,eAAER,OACjCC,aAAqC,QAAvB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAagB,kBAAU,eAAEP,eAEzC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAgC,QAAvB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaiB,kBAAU,eAAEV,aAClC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBsK,KAAK,WACL+O,OAA+B,QAAvB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaiB,kBAAU,eAAET,OACjCC,aAAqC,QAAvB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaiB,kBAAU,eAAER,eAEzC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,mBACVL,QAAqC,QAA5B,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAakB,uBAAe,eAAEX,aACvC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,qBACvBsK,KAAK,UACL+O,OAAoC,QAA5B,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAakB,uBAAe,eAAEV,OACtCC,aAA0C,QAA5B,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAakB,uBAAe,eAAET,eAE9C,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,eACVL,QAAiC,QAAxB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAamB,mBAAW,eAAEZ,aACnC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,iBACvBqZ,OAAgC,QAAxB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAamB,mBAAW,eAAEX,OAClCC,aAAsC,QAAxB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAamB,mBAAW,eAAEV,eAE1C,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAgC,QAAvB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaoB,kBAAU,eAAEb,aAClC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBsK,KAAK,WACL+O,OAA+B,QAAvB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaoB,kBAAU,eAAEZ,OACjCC,aAAqC,QAAvB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaoB,kBAAU,eAAEX,eAEzC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAgC,QAAvB,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAaqB,kBAAU,eAAEd,aAClC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBqZ,OAA+B,QAAvB,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAaqB,kBAAU,eAAEb,OACjCC,aAAqC,QAAvB,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAaqB,kBAAU,eAAEZ,eAEzC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,wBACVL,QAAyC,QAAhC,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAasB,2BAAmB,eAAEf,aAC3C3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,0BACvBsK,KAAK,UACL+O,OAAwC,QAAhC,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAasB,2BAAmB,eAAEd,OAC1CC,aAA8C,QAAhC,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAasB,2BAAmB,eAAEb,eAElD,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,4BACVL,QAA2C,QAAlC,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAauB,6BAAqB,eAAEhB,aAC7C3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,uBACvBqZ,OAA0C,QAAlC,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAauB,6BAAqB,eAAEf,OAC5CC,aAAgD,QAAlC,EAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAauB,6BAAqB,eAAEd,eAEpD,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,4BACVL,QAA2C,QAAlC,EAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAawB,6BAAqB,eAAEjB,aAC7C3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,uBACvBqZ,OAA0C,QAAlC,EAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAawB,6BAAqB,eAAEhB,OAC5CC,aAAgD,QAAlC,GAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAawB,6BAAqB,iBAAEf,eAEpD,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,4BACVL,QAA2C,QAAlC,GAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAayB,6BAAqB,iBAAElB,aAC7C3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,uBACvBqZ,OAA0C,QAAlC,GAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAayB,6BAAqB,iBAAEjB,OAC5CC,aAAgD,QAAlC,GAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAayB,6BAAqB,iBAAEhB,eAEpD,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,WACVL,QAA8B,QAArB,GAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAa0B,gBAAQ,iBAAEnB,aAChC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,aACvBqZ,OAA6B,QAArB,GAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAa0B,gBAAQ,iBAAElB,OAC/BC,aAAmC,QAArB,GAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAa0B,gBAAQ,iBAAEjB,eAEvC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,YACVL,QAA+B,QAAtB,GAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAa2B,iBAAS,iBAAEpB,aACjC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,cACvBqZ,OAA8B,QAAtB,GAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAa2B,iBAAS,iBAAEnB,OAChCC,aAAoC,QAAtB,GAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAa2B,iBAAS,iBAAElB,eAExC,wBAAC,EAAAJ,aAAY,CACXnU,UAAU,cACVL,QAAgC,QAAvB,GAAW,OAAXmU,SAAW,IAAXA,QAAW,EAAXA,GAAa4B,kBAAU,iBAAErB,aAClC3Q,MAAW,OAAJrF,SAAI,IAAJA,QAAI,EAAJA,GAAMpD,UAAU,gBACvBsK,KAAK,WACL+O,OAA+B,QAAvB,GAAW,OAAXR,SAAW,IAAXA,QAAW,EAAXA,GAAa4B,kBAAU,iBAAEpB,OACjCC,aAAqC,QAAvB,GAAW,OAAXT,SAAW,IAAXA,QAAW,EAAXA,GAAa4B,kBAAU,iBAAEnB,gBAjKpC,IAGT,C,sGCrCF,I,EAAA,E,uSAAA,OACA,G,EAAA,O,2BACA,QAWA,MAEaJ,EAA4C,UAAMzX,MAAMC,IACnE,MAAM,UACJqD,EADI,SAEJtE,EAFI,MAGJgI,EAHI,QAIJ/D,EAJI,KAKJ4F,EAAO,SALH,OAMJ+O,EANI,aAOJC,GACE5X,EAEE0B,GAAO,IAAA9B,kBAEPoZ,GAAmB,IAAA5Y,UAA4B,KACnD,QAAgB6Y,IAAZjW,GAAqC,OAAZA,EAI7B,OAAQ4F,GACN,IAAK,WACH,OAAW,OAAJlH,QAAI,IAAJA,OAAI,EAAJA,EAAM7C,eAAemE,EAASjE,GACvC,IAAK,UACH,OAAW,OAAJ2C,QAAI,IAAJA,OAAI,EAAJA,EAAMpC,qBAAqB0D,GACpC,IAAK,UACH,OAAW,OAAJtB,QAAI,IAAJA,OAAI,EAAJA,EAAMnC,cAAcyD,EAAU,IAAK,CAAEkW,sBAAuB,EAAGC,sBAAuB,IAE/F,QACE,OAAW,OAAJzX,QAAI,IAAJA,OAAI,EAAJA,EAAMrC,cAAc2D,GAT/B,GAWC,CAACA,EAASjE,EAAU2C,IAEjB0X,GAAwB,IAAAhZ,UAA4B,KACxD,GAAKiZ,OAAOC,SAAS1B,GAGrB,OAAqB,IAAjBA,EACK,QAET,YAAYlW,EAAKnC,cAAcqY,EAAe,IAAK,CAAE2B,SAAU,SAAUL,sBAAuB,EAAGC,sBAAuB,IAA1H,OACC,CAACvB,IAEJ,OAAKoB,EAKH,+BAAK3V,UAAWA,GACd,sCAAS0D,GACR,IACD,gCAAM1D,UAAU,qBAAqB2V,GACpC,UAAEQ,SAAS5B,IAAiBA,EApDG,MAqD9B,gCAAMvU,UAAWsU,GAASyB,IATvB,IAGT,I,0HCzDI,UAAkC,KAAE1X,EAAF,sBAAQuT,IAC9C,MAAMjW,EAAU,CAAEI,KAAM,OAAQqa,SAAU,OACpCC,EAA8B,OAArBzE,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBrO,OAEhC2C,EAAY7H,EAAKvC,WAAW,IAAIwW,KAAW,OAAN+D,QAAM,IAANA,OAAM,EAANA,EAAQnQ,WAAYvK,GACzD8W,EAAUpU,EAAKvC,WAAW,IAAIwW,KAAW,OAAN+D,QAAM,IAANA,OAAM,EAANA,EAAQ5D,SAAU9W,GACrD2a,EAAsBjY,EAAKvC,WAAW,IAAIwW,KAAW,OAAN+D,QAAM,IAANA,OAAM,EAANA,EAAQC,qBAAsB3a,GAC7E4a,EAAoBlY,EAAKvC,WAAW,IAAIwW,KAAW,OAAN+D,QAAM,IAANA,OAAM,EAANA,EAAQE,mBAAoB5a,GAE/E,OAAO0C,EAAKpD,UACV,4FACA,CACEiL,YAAWuM,UAAS6D,sBAAqBC,qBAG9C,C,2GCfK,UAAmC,6BAAEhG,EAAF,sBAAgCqB,IAoCvE,OAnCqB,IAAA7U,UAAoE,KACvF,MAAMsZ,EAA8B,OAArBzE,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBrO,OACtC,GAAK8S,EAIL,OAAI9F,GAAgC8F,EAAOG,8BAClCH,EAAOG,8BAIT,CACLpC,YAAa,CAAEC,aAAcgC,EAAOI,iBACpCjC,OAAQ,CAAEH,aAAcgC,EAAOK,YAC/BjC,IAAK,CAAEJ,aAAcgC,EAAO5B,KAC5BC,MAAO,CAAEL,aAAcgC,EAAO3B,OAC9BC,YAAa,CAAEN,aAAcgC,EAAOM,iBACpC/B,IAAK,CAAEP,aAAcgC,EAAOzB,KAC5BC,KAAM,CAAER,aAAcgC,EAAOxB,MAC7BC,WAAY,CAAET,aAAcgC,EAAOvB,YACnCC,WAAY,CAAEV,aAAcgC,EAAOtB,YACnCC,gBAAiB,CAAEX,aAAcgC,EAAOrB,iBACxCC,YAAa,CAAEZ,aAAcgC,EAAOpB,aACpCC,WAAY,CAAEb,aAAcgC,EAAOnB,YACnCC,WAAY,CAAEd,aAAcgC,EAAOlB,YACnCC,oBAAqB,CAAEf,aAAcgC,EAAOjB,qBAC5CC,sBAAuB,CAAEhB,aAAcgC,EAAOhB,uBAC9CC,sBAAuB,CAAEjB,aAAcgC,EAAOf,uBAC9CC,sBAAuB,CAAElB,aAAcgC,EAAOd,uBAC9CC,SAAU,CAAEnB,aAAcgC,EAAOb,UACjCC,UAAW,CAAEpB,aAAcgC,EAAOZ,WAClCC,WAAY,CAAErB,aAAcgC,EAAOX,YApBrC,GAsBC,CAACnF,EAA8BqB,GAGnC,EAxCD,U,2HCAA,YAEO,MAAMJ,GAAoC,IAAAtQ,YAAW,CAC1DwE,aAAc,CACZkR,aAAc,EAAArV,OAAOsV,kBACrB,cAAe,CACb7G,MAAO,EAAAzO,OAAOuV,8BAEhB,cAAe,CACb9G,MAAO,c,uJCPP,SAA0CzD,GAC9C,MAAMwK,EAAQxK,EAAWwK,MAAMC,GAC/B,GAAID,EAAO,CACT,MAAO,CAAEE,EAAMC,EAAOC,GAAOJ,EAC7B,gBAAUE,EAAV,YAAkBC,EAAME,SAAS,EAAG,KAApC,YAA4CD,EAAIC,SAAS,EAAG,KAC7D,CACD,MAAM,IAAIC,MAAJ,uCAA0C9K,GACjD,EATD,MAAMyK,EAA6B,gC,gFCAnC,2J,+GCAA,M,uSAAA,OACA,SACA,Q,wBAY4Era,IAC1E,MAAM0B,GAAO,IAAA7B,YAAW,EAAAF,cAClB,aACJ8T,EADI,OAEJjS,EAFI,sBAGJkS,EAHI,UAIJtS,EAJI,WAKJ4S,EALI,SAMJ2G,GACE3a,GAEJ,IAAAiD,YAAU,KACF,OAANzB,QAAM,IAANA,GAAAA,EAAQqG,MAAR,4CAAmDzG,GAAnD,GACC,CAACI,EAAQJ,IAEZ,MAAMwZ,GAAS,IAAAhY,cAAY,CAACiY,EAAarN,KACvC,MAAMsN,EAAS9G,IAAe,EAAAC,gBAAgB8G,oBAAsB,8FAChE,6FAEErM,EAAOhN,EAAKpD,UAAUwc,EAAQ,CAClCxY,aAAkB,OAAJkL,QAAI,IAAJA,OAAI,EAAJA,EAAMwN,iBAAiB1gB,KACrCiP,WAAe,OAAJiE,QAAI,IAAJA,OAAI,EAAJA,EAAMjE,WAAY7H,EAAKvC,WAAWqO,EAAKjE,gBAAa0P,EAC/DnD,SAAa,OAAJtI,QAAI,IAAJA,OAAI,EAAJA,EAAMsI,SAAUpU,EAAKvC,WAAWqO,EAAKsI,cAAWmD,IAGrD,OAANzX,QAAM,IAANA,GAAAA,EAAQqG,MAAR,4CAAmDzG,EAAnD,oBAAwEsN,EAAxE,oBAAwFsF,IACxFN,EAAsBhF,EAAtB,GACC,CAAChN,EAAMF,EAAQJ,IAElB,OACE,wBAAC,EAAA6Z,wBAAuB,CACtBxH,aAAcA,EACdmH,OAAQA,EACRM,sBAAoB,EACpBC,kBAAgB,EAChBR,SAAUA,GANd,C,gFC3CF,2J,4ICAA,I,EAAA,G,EAAA,O,2BACA,E,uSAAA,OAEA,QACA,SACA,QAGA,SACA,SAEO,MAAMS,GAAwB,IAAA7W,YAAW,CAC9C+D,QAAS,CACP9D,SAAU,U,0BAIP,MAAM6W,EAA+C,UAAMtb,MAAMC,I,MACtE,MAAM,SACJ2I,EADI,OAEJnH,EAFI,sBAGJC,EAHI,oBAIJ6Z,EACArN,QAAQ,OACN/J,EADM,iBAENqX,GAPE,sBASJ7H,EATI,6BAUJE,GACE5T,EAEE0B,GAAO,IAAA9B,kBACPsN,EAASkO,IAETI,GAA0B,IAAA5Y,cAAY,CAAC6Y,EAAyCra,KAEjE,OAAnBka,QAAmB,IAAnBA,GAAAA,EAAsBG,EAAIra,EAAW,CAAEK,wBAAuBC,QAA9D,GACC,CAACA,EAAMD,EAAuB6Z,IAE3BI,GAAuB,IAAA9Y,cAAa+Y,IACxC,IACE,MAAM1F,EAAS,UAAErb,IAAI+gB,EAAK,CAAC,SAAU,WAC/BC,EAAe3F,GAAU4F,KAAKC,MAAM7F,GAEpC8F,EAAoB,UAAEnhB,IAAIghB,EAAc,CAAC,sBAC/C,OAAO,UAAExR,IAAI2R,GAAmB3hB,IAAK,CAAG4hB,GAAI5hB,EAAE4hB,IAAM5hB,EAAEkV,GAAIhV,KAAMF,EAAEE,MAAQF,EAAEiI,QAC7E,CAAC,MAAOkO,GAEP,OADM,OAAN/O,QAAM,IAANA,GAAAA,EAAQqG,MAAR,8BAAqC0I,IAC9B,EACR,IACA,IAEG0L,GAA6B,IAAA7b,UAAiB,KAG3C,CACLsO,KAHe,OAAJhN,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,8RAI3BtD,MAAO,CACLiO,gBAAiB,gBAGpB,CAACvH,IAEJ,GAAsB,UAAlBiH,EAASC,KAAkB,CAC7B,GAAIgL,EAA8B,CAChC,MAAMsI,EAAwB,UAAEpT,KAAKH,EAAS3N,OAAQ+N,GAAyC,sBAAxBA,EAAa+K,SACpF,IAAK,UAAErV,QAAQyd,GAAwB,CACrC,MAAMH,EAAoBL,EAAqBQ,GACzCzI,EAAe,IAAMvE,QAAQC,QAAQ4M,GAE3C,OAAK,UAAEtd,QAAQsd,GAab,wBAAC,EAAA5H,UAAS,CACR9Q,UAAU,wBACViF,QAAS2T,EACTE,gBAAgB,EAChBC,cAAY,IAfZ,wBAAC,EAAArI,sBAAqB,CACpBN,aAAcA,EACdjS,OAAQA,EACRJ,UAAYuH,EAAiBvH,UAC7BsS,sBAAuBA,EACvBM,WAAY,EAAAC,gBAAgB8G,oBAC5BJ,SAAc,OAAJjZ,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,iHAYjC,CACF,CAGD,OAAO,IACR,CAED,GAAsB,YAAlBqK,EAASC,KAAoB,CAE/B,MAAMyT,EAAkC,QAAtB,EAAA1T,EAAS3N,aAAa,eAAEuZ,SAC1C,IAAK,UAAEV,IAAIwI,GAAW7H,GAAYA,IAAY,EAAAC,gBAAgB6H,wBAA0B9H,IAAY,EAAAC,gBAAgB8H,0BAClH,OAAO,IAEV,CAED,OACE,wBAAC,EAAApI,UAAS,CACR9Q,UAAW6J,EAAO5E,QAClBA,QAASK,EACTlH,sBAAuBA,EACvByC,OAAQA,EACRqX,iBAAkBA,EAClBiB,gBAAgB,EAChBpI,oBAAkB,GAElB,iCACE,sCAAa,OAAJ1S,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,kBAE3B,wBAAC,EAAAme,qBAAoB,CACnB9T,SAAUA,EACVnH,OAAQA,EACR8Z,oBAAqBE,IAhB3B,I,+BAsBFH,EAA2B/G,UAAa3L,I,QACtC,GAAsB,YAAlBA,EAASC,KAAoB,CAC/B,MAAMoL,EAAmD,QAArC,EAAsB,QAAvB,EAACrL,EAAS3N,aAAa,eAAE6N,qBAAa,eAAExG,KAG3D,OAAO2R,IAAe,EAAAC,gBAAgByI,oBAAsB1I,IAAe,EAAAC,gBAAgB8G,mBAC5F,CAED,MAAsB,UAAlBpS,EAASC,MAAsC,kBAAlBD,EAASrO,MACjC,UAAEuZ,IAAIlL,EAAS3N,OAAQ+N,GAAiBA,EAAa1G,OAAS,EAAA4R,gBAAgByI,oBAAsB3T,EAAa1G,OAAS,EAAA4R,gBAAgB8G,qBAAuBhS,EAAa1G,OAAS,EAAA4R,gBAAgB0I,uBAGhN,C,gFC3IF,2J,8GCAA,cACA,E,uSAAA,OAOA,WACA,QACA,QACA,QAGA,SACA,SACA,S,mDAaO,MAAMF,EAA4D,UAAM1c,MAAMC,IACnF,MAAM0B,GAAO,IAAA7B,YAAW,EAAAF,aAClBmH,GAAU,IAAA8V,kCAEV,SAAEjU,EAAF,OAAYnH,EAAZ,oBAAoB8Z,GAAwBtb,EAC5CsI,EAAUK,EAEVvH,EAAgD,OAAfkH,QAAO,IAAPA,OAAO,EAAPA,EAAiBlH,WAElD,sBAAEoF,EAAF,kBAAyBvE,EAAzB,YAA4CwE,IAAgB,IAAAvE,wBAAuBd,IAEzF,IAAA6B,YAAU,KACJzB,GAAUiF,IACN,OAANjF,QAAM,IAANA,GAAAA,EAAQqG,MAAR,2CAAkDzG,EAAlD,8CAAiG,UAAEoC,KAAsB,OAAjBvB,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,QAA3H,sCAAgKJ,IACjK,GACA,CACgB,OAAjBvE,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,OACnBJ,EACAC,EACAjF,EACAJ,IAGF,MAAM+T,GAAY,IAAA/U,UAAQ,IAAMsB,EAAKjC,WAAW,CAAE6H,IAAK,gBAAiB,CAAC5F,IAEnES,GAAa,IAAA/B,UAA4B,KAC7C,GAAqB,OAAjB6B,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmB2E,OAAQ,CAC7B,MAAMI,EAAc/E,EAAkB2E,OAAO,GAE7C,GAAII,EAAa,CACf,IAAI5H,EAAO,GACX,IACE,MAAMyd,EAAU1H,EAAUnO,EAAYQ,gBACtCpI,EAAOsC,EAAKvC,WAAW0d,EACxB,CAAC,MAAOtM,GAER,CAED,MAAMuM,EAA4C,aAA/B9V,EAAYI,eAE/B,IAAI2V,EACJ,OAAQ/V,EAAYE,YAClB,IAAK,aACH6V,EAAQD,EAAa,oCAA4C,oCACjE,MACF,IAAK,aACHC,EAAQD,EAAa,oCAA4C,oCACjE,MACF,QACEC,EAAQD,EAAa,+BAAuC,+BAIhE,OAAW,OAAJpb,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAUye,EAAO,CAAE3d,QACjC,CACF,CACD,GACC,CAAC6C,EAAmBP,EAAMyT,IAEvBqG,GAA0B,IAAA5Y,cAAa6Y,IACrC,OAANja,QAAM,IAANA,GAAAA,EAAQqG,MAAR,kEAAyEzG,IACzEka,EAAoBG,EAAIra,EAAxB,GACC,CAACI,EAAQ8Z,EAAqBla,IAEjC,OACE,+BAAKiC,WAAW,IAAAC,cAAawD,EAAQvD,KAAM,2BACzC,+BAAKF,WAAW,IAAAC,cAAawD,EAAQkW,IAAK,+BACxC,+BAAK3Z,WAAW,IAAAC,cAAawD,EAAQpD,OAAQ,kCACtC,OAAJhC,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,kBAKrB,+BAAK+E,UAAWyD,EAAQmW,OACrB9a,GACC,+BAAKkB,WAAW,IAAAC,cAAawD,EAAQoW,YAAa,wCAAyC/a,GAE7F,wBAAC,EAAAgG,cAAa,CACZ0J,WAAS,EACTlK,WAAYnB,IAA0BC,EACtC2B,sBAA4C,OAArB5B,QAAqB,IAArBA,OAAqB,EAArBA,EAAwB,GAC/CnF,SAAU,MAId,+BAAKgC,WAAW,IAAAC,cAAawD,EAAQqW,QAAS,mCAC5C,wBAAC,UAAQ,CACP9Z,WAAW,IAAAC,cAAawD,EAAQsW,eAAgB,0CAChDpe,QAAS,CAAEqe,aAAa,IAEvB/U,EAAQoG,MAAQ,KAIrB,+BAAKrL,UAAU,kCACb,wBAAC,EAAAS,OAAM,CACLT,WAAW,IAAAC,cAAawD,EAAQwW,aAAc,yCAC9C9Z,KAAK,QACLyE,SAAuB,MAAb7G,IAAsBoF,EAChCpC,QAASoX,EACTxX,KAAM,wBAAC,EAAAuZ,0BAAyB,OAE3B,OAAJ7b,QAAI,IAAJA,OAAI,EAAJA,EAAMpD,UAAU,kBAtCzB,I,+IC7FF,YAOA,MAAMkf,EAA8B,OAAH,sBAC/BtX,gBAAiB,EAAAtB,OAAO6Y,yBACrB,EAAA/Y,WAAW0B,aAAa,EAAAxB,OAAOyB,qBAAmB,CACrDqL,YAAa,EAAA9M,OAAO4H,mBACpB7G,aAAc,EAAAf,OAAO4H,mBACrB8F,WAAY,EAAA1N,OAAOgB,iBACnB4M,cAAe,EAAA5N,OAAOgB,mBAGXgX,GAAgC,IAAArY,YAAW,CACtDhB,KAAM,OAAF,oCACFwB,QAAS,OACTwG,UAAW,EAAA3G,OAAOoG,iBAClB0G,YAAa,EAAA9M,OAAO4H,mBACpB7G,aAAc,EAAAf,OAAO4H,mBACrB8F,WAAY,EAAA1N,OAAOgB,iBACnB4M,cAAe,EAAA5N,OAAOgB,iBAEtBC,cAAe,UACZ,EAAAnB,WAAWW,IAAI,EAAAT,OAAOgB,mBACtB,EAAAlB,WAAW0B,aAAa,EAAAxB,OAAOyB,qBAAmB,CACrDH,gBAAiB,EAAAtB,OAAO8Y,wBACxBC,UAAW,EAAA/Y,OAAOgZ,UAEpBZ,IAAK,CACHjY,QAAS,QAEXrB,OAAQ,OAAF,oCACJgO,YAAa,EAAA9M,OAAO4H,mBACpB7G,aAAc,EAAAf,OAAO4H,mBACrB8F,WAAY,EAAA1N,OAAOiZ,kBACnBrL,cAAe,EAAA5N,OAAOiZ,mBAEnB,EAAAnZ,WAAW0B,aAAa,EAAAxB,OAAOyB,qBAAmB,CACrDyX,QAAS,MACT5X,gBAAiB,EAAAtB,OAAO6Y,wBACxBM,eAAgB,cAEb,EAAAC,iBAAiBC,gBAEtBf,YAAa,CACXtK,SAAU,EAAAhO,OAAOiO,gBACjBH,WAAY,EAAA9N,OAAOsZ,mBACnBjE,aAAc,EAAArV,OAAOiZ,mBAEvBZ,MAAO,OAAF,UACAO,GAELL,QAAS,OAAF,wBACFK,GAA2B,CAC9B5K,SAAU,EAAAhO,OAAOiO,gBACjBsL,WAAY,EAAAvZ,OAAOgN,oBAErBwL,eAAgB,CAEdrY,QAAS,cACT,qBAAsB,WACtB,qBAAsB,EACtBO,UAAW,SACXb,UAAW,QAAF,OAAU,EAAAG,OAAOgN,kBAAjB,UAEX0L,aAAc,CAAC,I,kKCnEiB,CAChC,yBACA,2EACA,QACA,QACA,S,uGzDLA,IAAI3jB,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,2M0DlFrD,Y,mCCcA,SAASsiB,EAAgB9V,EAAS+V,EAAUC,EAAO/P,GACjDtQ,KAAKqK,QAAWA,EAChBrK,KAAKogB,SAAWA,EAChBpgB,KAAKqgB,MAAWA,EAChBrgB,KAAKsQ,SAAWA,EAChBtQ,KAAK3D,KAAW,cAEuB,oBAA5BogB,MAAM6D,mBACf7D,MAAM6D,kBAAkBtgB,KAAMmgB,EAElC,EAhBA,SAAsBI,EAAOC,GAC3B,SAASC,IAASzgB,KAAKL,YAAc4gB,CAAO,CAC5CE,EAAK/iB,UAAY8iB,EAAO9iB,UACxB6iB,EAAM7iB,UAAY,IAAI+iB,CACxB,CAcAC,CAAaP,EAAiB1D,OAE9B0D,EAAgBQ,aAAe,SAASP,EAAUC,GAChD,IAAIO,EAA2B,CACzBC,QAAS,SAASC,GAChB,MAAO,IAAOC,EAAcD,EAAYrQ,MAAQ,GAClD,EAEA,MAAS,SAASqQ,GAChB,IACIhlB,EADAklB,EAAe,GAGnB,IAAKllB,EAAI,EAAGA,EAAIglB,EAAYG,MAAM/hB,OAAQpD,IACxCklB,GAAgBF,EAAYG,MAAMnlB,aAAcolB,MAC5CC,EAAYL,EAAYG,MAAMnlB,GAAG,IAAM,IAAMqlB,EAAYL,EAAYG,MAAMnlB,GAAG,IAC9EqlB,EAAYL,EAAYG,MAAMnlB,IAGpC,MAAO,KAAOglB,EAAYM,SAAW,IAAM,IAAMJ,EAAe,GAClE,EAEApL,IAAK,SAASkL,GACZ,MAAO,eACT,EAEAlP,IAAK,SAASkP,GACZ,MAAO,cACT,EAEAO,MAAO,SAASP,GACd,OAAOA,EAAYQ,WACrB,GAGN,SAASC,EAAIC,GACX,OAAOA,EAAGC,WAAW,GAAGjR,SAAS,IAAIkR,aACvC,CAEA,SAASX,EAAcljB,GACrB,OAAOA,EACJ0B,QAAQ,MAAO,QACfA,QAAQ,KAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAyB,SAASiiB,GAAM,MAAO,OAASD,EAAIC,EAAK,IACzEjiB,QAAQ,yBAAyB,SAASiiB,GAAM,MAAO,MAASD,EAAIC,EAAK,GAC9E,CAEA,SAASL,EAAYtjB,GACnB,OAAOA,EACJ0B,QAAQ,MAAO,QACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,KAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAyB,SAASiiB,GAAM,MAAO,OAASD,EAAIC,EAAK,IACzEjiB,QAAQ,yBAAyB,SAASiiB,GAAM,MAAO,MAASD,EAAIC,EAAK,GAC9E,CA4CA,MAAO,YAtCP,SAA0BpB,GACxB,IACItkB,EAAG6lB,EANoBb,EAKvBc,EAAe,IAAIV,MAAMd,EAASlhB,QAGtC,IAAKpD,EAAI,EAAGA,EAAIskB,EAASlhB,OAAQpD,IAC/B8lB,EAAa9lB,IATYglB,EASaV,EAAStkB,GAR1C8kB,EAAyBE,EAAYnW,MAAMmW,IAalD,GAFAc,EAAaC,OAETD,EAAa1iB,OAAS,EAAG,CAC3B,IAAKpD,EAAI,EAAG6lB,EAAI,EAAG7lB,EAAI8lB,EAAa1iB,OAAQpD,IACtC8lB,EAAa9lB,EAAI,KAAO8lB,EAAa9lB,KACvC8lB,EAAaD,GAAKC,EAAa9lB,GAC/B6lB,KAGJC,EAAa1iB,OAASyiB,CACxB,CAEA,OAAQC,EAAa1iB,QACnB,KAAK,EACH,OAAO0iB,EAAa,GAEtB,KAAK,EACH,OAAOA,EAAa,GAAK,OAASA,EAAa,GAEjD,QACE,OAAOA,EAAaE,MAAM,GAAI,GAAGljB,KAAK,MAClC,QACAgjB,EAAaA,EAAa1iB,OAAS,GAE7C,CAMqB6iB,CAAiB3B,GAAY,QAJlD,SAAuBC,GACrB,OAAOA,EAAQ,IAAOU,EAAcV,GAAS,IAAO,cACtD,CAE4D2B,CAAc3B,GAAS,SACrF,EAmnCAxkB,EAAOD,QAAU,CACfqmB,YAAa9B,EACbtC,MAnnCF,SAAmBqE,EAAOnhB,GACxBA,OAAsB,IAAZA,EAAqBA,EAAU,CAAC,EAE1C,IAoDIohB,EApDAC,EAAa,CAAC,EAEdC,EAAyB,CAAEC,WAAYC,IACvCC,EAAyBD,GAEzBE,EAAS,SAASC,GAAQ,OAAOA,CAAM,EACvCC,EAAS,IACTC,EAASC,EAAuB,KAAK,GACrCC,EAAS,IACTC,EAASF,EAAuB,KAAK,GACrCG,EAAS,SAASjmB,EAAOkmB,GAAiB,OA8hC5C,SAAkBlmB,EAAOkmB,GACvB,OAAO/B,MAAMxjB,UAAUwN,OAAOjP,KAAKgnB,GAAiB,IAAI,SAASnhB,EAAMohB,GACrE,IAZaC,EAYTC,GAZSD,EAYUD,EAXlBhC,MAAMxjB,UAAUgB,OAAOzC,KAAKknB,GAAM,SAASE,GAAK,QAASA,CAAG,KAajE,MAAO,CACL1Y,KAAM,OACN2Y,SAAUF,EAAS,GACnBG,KAAMzhB,EACN0hB,MAAOJ,EAAS,GAEpB,GAAGrmB,EACL,CAziCmD0mB,CAAS1mB,EAAOkmB,EAAgB,EACjFS,EAAS,IACTC,EAASd,EAAuB,KAAK,GACrCe,EAAS,IACTC,EAAShB,EAAuB,KAAK,GACrCiB,EAAU,SAASpB,GAAQ,OAyjC7B,SAAoBA,GAClB,OAAQA,EAAK/X,MACX,IAAK,SACH+X,EAAK3lB,OAAS2lB,EAAK3lB,MACnB,MACF,IAAK,SACH2lB,EAAKqB,YAAa,EAClB,MACF,IAAK,OACHrB,EAAKsB,cAAe,EACpB,MACF,QACE,MAAM,IAAIvH,MAAM,4CAGpB,OAAOiG,CACT,CAzkCoCuB,CAAWvB,EAAO,EACpDwB,EAAU,SACVC,EAAUC,EAAqB,CAAC,CAAC,IAAK,OAAO,GAAO,GACpDC,EAAU,IACVC,EAAUzB,EAAuB,KAAK,GACtC0B,EAAU,SAASC,GAAgB,MAkiC5B,CACL7Z,KAAM,SACN5N,MAAO0nB,WAAWC,GApiCmCF,IAAe,EACtEG,EAAU,IACVC,EAAU/B,EAAuB,KAAK,GACtCgC,EAAU,IACVC,EAAUjC,EAAuB,KAAK,GACtCkC,EAAU,SAAS1oB,EAAM2oB,GAAW,OAmiCtC,SAAoB3oB,EAAM4oB,GACxB,MAAO,CACLta,KAAM,SACNtO,KAAMqoB,GAAgBroB,GACtB4oB,SAAU/D,MAAMxjB,UAAUokB,MAAM7lB,KAAKgpB,GAAY,GAAI,GAAI,GAAG,GAEhE,CAziC6CC,CAAW7oB,EAAM2oB,EAAU,EACtEG,EAAU,YACVC,EAAUhB,EAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,OAAO,GAAO,GAChEiB,EAAU,KACVC,EAAUzC,EAAuB,MAAM,GACvC0C,EAAU,SAASlpB,GAAQ,OAAOA,CAAM,EACxCmpB,EAAU,IACVC,EAAU5C,EAAuB,KAAK,GACtC6C,EAAU,IACVC,EAAU9C,EAAuB,KAAK,GACtC+C,EAAU,SAASX,GAAY,OAiiCjC,SAA4BA,GAC1B,OAAOP,GAAgBO,EACzB,CAniCwCY,CAAmBZ,EAAW,EACpEa,EAAU,WAA+B,EACzCC,EAAU,IACVC,EAAUnD,EAAuB,KAAK,GACtCoD,EAAU,IACVC,EAAUrD,EAAuB,KAAK,GACtCsD,EAAUC,EAAqB,cAC/BC,EAAU,aACVC,EAAUlC,EAAqB,CAAC,IAAK,KAAM,KAAM,OAAO,GAAO,GAE/DmC,EAAuB,EAEvBC,EAAuB,CAAC,CAAEC,KAAM,EAAGC,OAAQ,IAC3CC,EAAuB,EACvBC,EAAuB,GACvBC,EAAuB,EAI3B,GAAI,cAAe9lB,EAAS,CAC1B,KAAMA,EAAQ+lB,aAAazE,GACzB,MAAM,IAAI5F,MAAM,mCAAqC1b,EAAQ+lB,UAAY,MAG3EtE,EAAwBH,EAAuBthB,EAAQ+lB,UACzD,CA0BA,SAASjE,EAAuBpS,EAAMsW,GACpC,MAAO,CAAEpc,KAAM,UAAW8F,KAAMA,EAAMsW,WAAYA,EACpD,CAEA,SAAS3C,EAAqBnD,EAAOG,EAAU2F,GAC7C,MAAO,CAAEpc,KAAM,QAASsW,MAAOA,EAAOG,SAAUA,EAAU2F,WAAYA,EACxE,CAUA,SAASX,EAAqB9E,GAC5B,MAAO,CAAE3W,KAAM,QAAS2W,YAAaA,EACvC,CAEA,SAAS0F,GAAsBC,GAC7B,IAAwCrpB,EAApCspB,EAAUV,EAAoBS,GAElC,GAAIC,EACF,OAAOA,EAGP,IADAtpB,EAAIqpB,EAAM,GACFT,EAAoB5oB,IAC1BA,IASF,IALAspB,EAAU,CACRT,MAFFS,EAAUV,EAAoB5oB,IAEZ6oB,KAChBC,OAAQQ,EAAQR,QAGX9oB,EAAIqpB,GACmB,KAAxB/E,EAAMT,WAAW7jB,IACnBspB,EAAQT,OACRS,EAAQR,OAAS,GAEjBQ,EAAQR,SAGV9oB,IAIF,OADA4oB,EAAoBS,GAAOC,EACpBA,CAEX,CAEA,SAASC,GAAoBC,EAAUC,GACrC,IAAIC,EAAkBN,GAAsBI,GACxCG,EAAkBP,GAAsBK,GAE5C,MAAO,CACL3V,MAAO,CACL8V,OAAQJ,EACRX,KAAQa,EAAgBb,KACxBC,OAAQY,EAAgBZ,QAE1B9U,IAAK,CACH4V,OAAQH,EACRZ,KAAQc,EAAcd,KACtBC,OAAQa,EAAcb,QAG5B,CAEA,SAASe,GAASrH,GACZmG,EAAcI,IAEdJ,EAAcI,IAChBA,EAAiBJ,EACjBK,EAAsB,IAGxBA,EAAoBc,KAAKtH,GAC3B,CAMA,SAASuH,GAAyBvH,EAAUC,EAAO/P,GACjD,OAAO,IAAI6P,EACTA,EAAgBQ,aAAaP,EAAUC,GACvCD,EACAC,EACA/P,EAEJ,CAEA,SAASiS,KACP,IAAIqF,EAAQC,EAyBZ,OAvBAD,EAAKrB,EACAuB,OACM1F,GACTyF,EAuBJ,WACE,IAAID,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAAIC,EAAIC,EAIhC,GAFAR,EAAKrB,EACLwB,EAAKM,KACDN,IAAO3F,EAAY,CA4CrB,IA3CAyF,EAAK,GACLG,EAAKzB,GACL0B,EAAKH,QACM1F,GAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKvF,EACL4D,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS7E,IAEpCsF,IAAO9F,IAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKpF,EACLyD,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS1E,KAGtCmF,IAAO9F,IACT+F,EAAKL,QACM1F,IACTgG,EAAKC,QACMjG,EAET4F,EADAC,EAAK,CAACA,EAAIC,EAAIC,EAAIC,IAWtB7B,EAAcyB,EACdA,EAAK5F,KAGPmE,EAAcyB,EACdA,EAAK5F,GAEA4F,IAAO5F,GACZyF,EAAGH,KAAKM,GACRA,EAAKzB,GACL0B,EAAKH,QACM1F,GAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKvF,EACL4D,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS7E,IAEpCsF,IAAO9F,IAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKpF,EACLyD,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS1E,KAGtCmF,IAAO9F,IACT+F,EAAKL,QACM1F,IACTgG,EAAKC,QACMjG,EAET4F,EADAC,EAAK,CAACA,EAAIC,EAAIC,EAAIC,IAWtB7B,EAAcyB,EACdA,EAAK5F,KAGPmE,EAAcyB,EACdA,EAAK5F,GAGLyF,IAAOzF,EAGTwF,EADAG,EAAK/E,EAAO+E,EAAIF,IAGhBtB,EAAcqB,EACdA,EAAKxF,EAET,MACEmE,EAAcqB,EACdA,EAAKxF,EAGP,OAAOwF,CACT,CAnISU,GACDT,IAAOzF,GACJ0F,OACM1F,EAGTwF,EADKnF,EAAOoF,IAOdtB,EAAcqB,EACdA,EAAKxF,KAGPmE,EAAcqB,EACdA,EAAKxF,GAGAwF,CACT,CAgHA,SAASS,KACP,IAAIT,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAAIC,EAAIC,EAIhC,GAFAR,EAAKrB,GACLwB,EAAKQ,QACMnG,EAAY,CA4CrB,IA3CAyF,EAAK,GACLG,EAAKzB,GACL0B,EAAKH,QACM1F,GAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKxE,EACL6C,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS9D,IAEpCuE,IAAO9F,IAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKtE,EACL2C,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS5D,KAGtCqE,IAAO9F,IACT+F,EAAKL,QACM1F,IACTgG,EAAKG,QACMnG,EAET4F,EADAC,EAAK,CAACA,EAAIC,EAAIC,EAAIC,IAWtB7B,EAAcyB,EACdA,EAAK5F,KAGPmE,EAAcyB,EACdA,EAAK5F,GAEA4F,IAAO5F,GACZyF,EAAGH,KAAKM,GACRA,EAAKzB,GACL0B,EAAKH,QACM1F,GAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKxE,EACL6C,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS9D,IAEpCuE,IAAO9F,IAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKtE,EACL2C,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS5D,KAGtCqE,IAAO9F,IACT+F,EAAKL,QACM1F,IACTgG,EAAKG,QACMnG,EAET4F,EADAC,EAAK,CAACA,EAAIC,EAAIC,EAAIC,IAWtB7B,EAAcyB,EACdA,EAAK5F,KAGPmE,EAAcyB,EACdA,EAAK5F,GAGLyF,IAAOzF,EAGTwF,EADAG,EAAK/E,EAAO+E,EAAIF,IAGhBtB,EAAcqB,EACdA,EAAKxF,EAET,MACEmE,EAAcqB,EACdA,EAAKxF,EAGP,OAAOwF,CACT,CAEA,SAASW,KACP,IAAIX,EAAIG,EAAIF,EAAIG,EAAIC,EAoGpB,OAlGAL,EAAKrB,GACLwB,EAAKS,QACMpG,IACT2F,EAAKU,MAEHV,IAAO3F,IAET2F,EAAKtF,EAAOsF,KAEdH,EAAKG,KACM3F,IACTwF,EAAKrB,GACLwB,EAAKW,QACMtG,IACTyF,EAAKC,QACM1F,IACT4F,EAAKQ,QACMpG,IACT4F,EAAKS,MAEHT,IAAO5F,EAGTwF,EADAG,EAAKjE,EAAQkE,IAGbzB,EAAcqB,EACdA,EAAKxF,KAOTmE,EAAcqB,EACdA,EAAKxF,GAEHwF,IAAOxF,IACTwF,EAAKrB,GACLwB,EAAKY,QACMvG,IACTyF,EAAKtF,QACMH,IACT4F,EAAKY,QACMxG,EAGTwF,EADAG,EAAKtF,EAAOoF,IAWhBtB,EAAcqB,EACdA,EAAKxF,GAEHwF,IAAOxF,IACTwF,EAAKrB,GACLwB,EAAKW,QACMtG,IACTyF,EAAKC,QACM1F,IACT4F,EAAKW,QACMvG,IACT6F,EAAK1F,QACMH,GACJwG,OACMxG,EAGTwF,EADAG,EAAKjE,EAAQmE,IAmBrB1B,EAAcqB,EACdA,EAAKxF,MAMNwF,CACT,CAEA,SAASY,KACP,IAAIZ,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAAIC,EAY5B,GAVAP,EAAKrB,EACLwB,EAAKxB,EACLsB,EAAK,GACD3D,EAAQ2E,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAAStD,IAEpC6D,IAAO5F,EACT,KAAO4F,IAAO5F,GACZyF,EAAGH,KAAKM,GACJ9D,EAAQ2E,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAAStD,SAI1C0D,EAAKzF,EAEP,GAAIyF,IAAOzF,EAAY,CASrB,GARA4F,EAAKzB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnB0B,EAAK5D,EACLkC,MAEA0B,EAAK7F,EACmB,IAApByE,GAAyBY,GAASnD,IAEpC2D,IAAO7F,EAAY,CASrB,GARA8F,EAAK,GACDhE,EAAQ2E,KAAK3G,EAAM4G,OAAOvC,KAC5B4B,EAAKjG,EAAM4G,OAAOvC,GAClBA,MAEA4B,EAAK/F,EACmB,IAApByE,GAAyBY,GAAStD,IAEpCgE,IAAO/F,EACT,KAAO+F,IAAO/F,GACZ8F,EAAGR,KAAKS,GACJjE,EAAQ2E,KAAK3G,EAAM4G,OAAOvC,KAC5B4B,EAAKjG,EAAM4G,OAAOvC,GAClBA,MAEA4B,EAAK/F,EACmB,IAApByE,GAAyBY,GAAStD,SAI1C+D,EAAK9F,EAEH8F,IAAO9F,EAET4F,EADAC,EAAK,CAACA,EAAIC,IAGV3B,EAAcyB,EACdA,EAAK5F,EAET,MACEmE,EAAcyB,EACdA,EAAK5F,EAEH4F,IAAO5F,IACT4F,EAAK,MAEHA,IAAO5F,EAET2F,EADAF,EAAK,CAACA,EAAIG,IAGVzB,EAAcwB,EACdA,EAAK3F,EAET,MACEmE,EAAcwB,EACdA,EAAK3F,EAQP,OANI2F,IAAO3F,IAET2F,EAAKxD,EAAQwD,IAEfH,EAAKG,CAGP,CAEA,SAASU,KACP,IAAIb,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAsDxB,OApDAN,EAAKrB,EACLwB,EAsDF,WACE,IAAIH,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAAIC,EAE5BP,EAAKrB,EACLwB,EAAKxB,EACLsB,EAAK,GACD1C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAASrC,IAExC,GAAI4C,IAAO5F,EACT,KAAO4F,IAAO5F,GACZyF,EAAGH,KAAKM,GACJ7C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAASrC,SAI1CyC,EAAKzF,EAEP,GAAIyF,IAAOzF,EAAY,CASrB,GARA4F,EAAKzB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnB0B,EAAK5C,EACLkB,MAEA0B,EAAK7F,EACmB,IAApByE,GAAyBY,GAASnC,IAEpC2C,IAAO7F,EAAY,CASrB,GARA8F,EAAK,GACD/C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B4B,EAAKjG,EAAM4G,OAAOvC,GAClBA,MAEA4B,EAAK/F,EACmB,IAApByE,GAAyBY,GAASrC,IAEpC+C,IAAO/F,EACT,KAAO+F,IAAO/F,GACZ8F,EAAGR,KAAKS,GACJhD,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B4B,EAAKjG,EAAM4G,OAAOvC,GAClBA,MAEA4B,EAAK/F,EACmB,IAApByE,GAAyBY,GAASrC,SAI1C8C,EAAK9F,EAEH8F,IAAO9F,EAET4F,EADAC,EAAK,CAACA,EAAIC,IAGV3B,EAAcyB,EACdA,EAAK5F,EAET,MACEmE,EAAcyB,EACdA,EAAK5F,EAEH4F,IAAO5F,IACT4F,EAAK,MAEHA,IAAO5F,EAET2F,EADAF,EAAK,CAACA,EAAIG,IAGVzB,EAAcwB,EACdA,EAAK3F,EAET,MACEmE,EAAcwB,EACdA,EAAK3F,EAEH2F,IAAO3F,IAET2F,EAAKxC,EAAQwC,IAIf,OAFAH,EAAKG,EAEEH,CACT,CAjJOmB,GACDhB,IAAO3F,GACTyF,EAAKtB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnByB,EAAKrD,EACL4B,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAAS7C,IAEpCoD,IAAO5F,GACT6F,EAwIN,WACE,IAAIL,EAAIG,EAAIF,EAAIG,EAAIC,EAAIC,EAAIC,EAAIC,EAAIY,EAAIC,EAExCrB,EAAKrB,EACLwB,EAAKxB,EACLsB,EAAK,GACD1C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAASrC,IAExC,GAAI4C,IAAO5F,EACT,KAAO4F,IAAO5F,GACZyF,EAAGH,KAAKM,GACJ7C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5ByB,EAAK9F,EAAM4G,OAAOvC,GAClBA,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAASrC,SAI1CyC,EAAKzF,EAEP,GAAIyF,IAAOzF,EAQT,GAPsC,KAAlCF,EAAMT,WAAW8E,IACnByB,EAAKxC,EACLe,MAEAyB,EAAK5F,EACmB,IAApByE,GAAyBY,GAAShC,IAEpCuC,IAAO5F,EAAY,CASrB,GARA6F,EAAK,GACD9C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B2B,EAAKhG,EAAM4G,OAAOvC,GAClBA,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAASrC,IAEpC8C,IAAO9F,EACT,KAAO8F,IAAO9F,GACZ6F,EAAGP,KAAKQ,GACJ/C,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B2B,EAAKhG,EAAM4G,OAAOvC,GAClBA,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAASrC,SAI1C6C,EAAK7F,EAEP,GAAI6F,IAAO7F,EAAY,CAUrB,GATA8F,EAAK,GACLC,EAAK5B,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnB6B,EAAK1C,EACLa,MAEA6B,EAAKhG,EACmB,IAApByE,GAAyBY,GAAS9B,IAEpCyC,IAAOhG,EAAY,CASrB,GARA4G,EAAK,GACD7D,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B0C,EAAK/G,EAAM4G,OAAOvC,GAClBA,MAEA0C,EAAK7G,EACmB,IAApByE,GAAyBY,GAASrC,IAEpC6D,IAAO7G,EACT,KAAO6G,IAAO7G,GACZ4G,EAAGtB,KAAKuB,GACJ9D,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B0C,EAAK/G,EAAM4G,OAAOvC,GAClBA,MAEA0C,EAAK7G,EACmB,IAApByE,GAAyBY,GAASrC,SAI1C4D,EAAK5G,EAEH4G,IAAO5G,EAET+F,EADAC,EAAK,CAACA,EAAIY,IAGVzC,EAAc4B,EACdA,EAAK/F,EAET,MACEmE,EAAc4B,EACdA,EAAK/F,EAEP,KAAO+F,IAAO/F,GAUZ,GATA8F,EAAGR,KAAKS,GACRA,EAAK5B,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnB6B,EAAK1C,EACLa,MAEA6B,EAAKhG,EACmB,IAApByE,GAAyBY,GAAS9B,IAEpCyC,IAAOhG,EAAY,CASrB,GARA4G,EAAK,GACD7D,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B0C,EAAK/G,EAAM4G,OAAOvC,GAClBA,MAEA0C,EAAK7G,EACmB,IAApByE,GAAyBY,GAASrC,IAEpC6D,IAAO7G,EACT,KAAO6G,IAAO7G,GACZ4G,EAAGtB,KAAKuB,GACJ9D,EAAQ0D,KAAK3G,EAAM4G,OAAOvC,KAC5B0C,EAAK/G,EAAM4G,OAAOvC,GAClBA,MAEA0C,EAAK7G,EACmB,IAApByE,GAAyBY,GAASrC,SAI1C4D,EAAK5G,EAEH4G,IAAO5G,EAET+F,EADAC,EAAK,CAACA,EAAIY,IAGVzC,EAAc4B,EACdA,EAAK/F,EAET,MACEmE,EAAc4B,EACdA,EAAK/F,EAGL8F,IAAO9F,EAET2F,EADAF,EAAK,CAACA,EAAIG,EAAIC,EAAIC,IAGlB3B,EAAcwB,EACdA,EAAK3F,EAET,MACEmE,EAAcwB,EACdA,EAAK3F,CAET,MACEmE,EAAcwB,EACdA,EAAK3F,OAGPmE,EAAcwB,EACdA,EAAK3F,EAEH2F,IAAO3F,IAET2F,EAAKnC,EAAQmC,IAIf,OAFAH,EAAKG,EAEEH,CACT,CArTWsB,GACDjB,IAAO7F,GAC6B,KAAlCF,EAAMT,WAAW8E,IACnB2B,EAAKrD,EACL0B,MAEA2B,EAAK9F,EACmB,IAApByE,GAAyBY,GAAS3C,IAEpCoD,IAAO9F,EAETyF,EADAG,EAAK,CAACA,EAAIC,EAAIC,IAGd3B,EAAcsB,EACdA,EAAKzF,KAGPmE,EAAcsB,EACdA,EAAKzF,KAGPmE,EAAcsB,EACdA,EAAKzF,GAEHyF,IAAOzF,IACTyF,EAAK,MAEHA,IAAOzF,EAGTwF,EADAG,EAAKhD,EAAQgD,EAAIF,IAGjBtB,EAAcqB,EACdA,EAAKxF,KAGPmE,EAAcqB,EACdA,EAAKxF,GAGAwF,CACT,CA8QA,SAASc,KACP,IAAId,EAAIG,EAgBR,OAdAH,EAAKrB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnBwB,EAAKjF,EACLyD,MAEAwB,EAAK3F,EACmB,IAApByE,GAAyBY,GAAS1E,IAEpCgF,IAAO3F,IAET2F,EAAKjC,KAEP8B,EAAKG,CAGP,CAEA,SAASY,KACP,IAAIf,EAAIG,EAgBR,OAdAH,EAAKrB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnBwB,EAAKhC,EACLQ,MAEAwB,EAAK3F,EACmB,IAApByE,GAAyBY,GAASzB,IAEpC+B,IAAO3F,IAET2F,EAAKjC,KAEP8B,EAAKG,CAGP,CAEA,SAASa,KACP,IAAIhB,EAAIG,EAgBR,OAdAH,EAAKrB,EACiC,KAAlCrE,EAAMT,WAAW8E,IACnBwB,EAAK9B,EACLM,MAEAwB,EAAK3F,EACmB,IAApByE,GAAyBY,GAASvB,IAEpC6B,IAAO3F,IAET2F,EAAKjC,KAEP8B,EAAKG,CAGP,CAEA,SAASD,KACP,IAAIF,EAAIG,EAAIF,EAYZ,IAVAhB,IACAe,EAAKrB,EACLwB,EAAK,GACD1B,EAAQwC,KAAK3G,EAAM4G,OAAOvC,KAC5BsB,EAAK3F,EAAM4G,OAAOvC,GAClBA,MAEAsB,EAAKzF,EACmB,IAApByE,GAAyBY,GAASnB,IAEjCuB,IAAOzF,GACZ2F,EAAGL,KAAKG,GACJxB,EAAQwC,KAAK3G,EAAM4G,OAAOvC,KAC5BsB,EAAK3F,EAAM4G,OAAOvC,GAClBA,MAEAsB,EAAKzF,EACmB,IAApByE,GAAyBY,GAASnB,IAc1C,OAXIyB,IAAO3F,IAET2F,EAAKjC,KAGPe,KADAe,EAAKG,KAEM3F,IACT2F,EAAK3F,EACmB,IAApByE,GAAyBY,GAAStB,IAGjCyB,CACT,CAUE,SAASlD,GAAgByE,GACvB,OAAOjI,MAAMxjB,UAAUwN,OAAOjP,KAAKktB,GAAO,IAAI,SAASC,EAAMC,GAC3D,OAAOD,EAAKE,OAAOpI,MAAMxY,QAAQ2gB,GAAa3E,GAAgB2E,GAAaA,EAC7E,GAAG,IAAIzqB,KAAK,GACd,CAuDF,IAFAujB,EAAaK,OAEMJ,GAAcmE,IAAgBrE,EAAMhjB,OACrD,OAAOijB,EAMP,MAJIA,IAAeC,GAAcmE,EAAcrE,EAAMhjB,QACnDuoB,GA9/BK,CAAE9c,KAAM,QAigCTgd,GACJf,EACAD,EAAiBzE,EAAMhjB,OAASgjB,EAAM4G,OAAOnC,GAAkB,KAC/DA,EAAiBzE,EAAMhjB,OACnBioB,GAAoBR,EAAgBA,EAAiB,GACrDQ,GAAoBR,EAAgBA,GAG9C,E,uI3DrvCE,IAAIjrB,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,2H4DlFrD,2J,gHCAA,I,EAAA,G,EAAA,O,2BACA,S,uaA8CO,MAKL8B,WAAAA,EAAY,iBAAE4pB,EAAmB,GAArB,kBAAyBC,EAAoB,IAAO,CAAC,EAAGC,EAAe,CAAE5L,MAAAA,EAAAA,QACnF7d,KAAK0pB,aAAeC,EAAAA,QAAEC,QAAQD,EAAAA,QAAExd,IAAIod,GAAkB,EAAGM,aACvDF,EAAAA,QAAEG,MAAMD,EAAS,aACnB7pB,KAAKwpB,kBAAoBA,EACzBxpB,KAAKypB,aAAeA,CACrB,CAEDM,cAAAA,CAAetZ,EAAO,IAAI,UACgBA,EAAKxR,MAAM,KAD3B,GACjB+qB,EADiB,YACPC,OADO,MACU,GADV,EAElBC,EAAgBP,EAAAA,QAAEQ,UAAUnqB,KAAKwpB,kBAAmB,CAAEQ,aACtDI,EAAgBT,EAAAA,QAAEG,MAAMI,EAAcjF,SAAU,WAEtD,IAAKiF,EACH,OAAO,EAGT,MAAMG,EAAaJ,EAAehrB,MAAM,KAExC,OAAI0qB,EAAAA,QAAEnpB,QAAQmpB,EAAAA,QAAEW,MAAMD,KAIfA,EAAWnrB,SAAWyqB,EAAAA,QAAEY,aAAaF,EAAYD,GAAelrB,MACxE,CAEDsrB,yBAAAA,CAA0BllB,GACxB,MAAMmlB,EAAS,GAcf,MAZkB,WAAdnlB,EAAKqF,OACFgf,EAAAA,QAAEnpB,QAAQR,KAAK0pB,eAAkBC,EAAAA,QAAEe,SAAS1qB,KAAK0pB,aAAcpkB,EAAKjJ,OACvEouB,EAAO/C,KAAK,CAAEiD,MAAO,sBAAuBC,SAAUtlB,EAAKjJ,QAGxDstB,EAAAA,QAAEnpB,QAAQR,KAAKwpB,oBAAsBlkB,EAAK2f,WACxCjlB,KAAK+pB,eAAezkB,EAAK2f,WAC5BwF,EAAO/C,KAAK,CAAEiD,MAAO,kBAAmBC,SAAUtlB,EAAK2f,aAKtDwF,EACJnB,OAAOhkB,EAAKie,KAAOvjB,KAAKwqB,0BAA0BllB,EAAKie,MAAQ,IAC/D+F,OAAOhkB,EAAKke,MAAQxjB,KAAKwqB,0BAA0BllB,EAAKke,OAAS,GACrE,CAED3F,KAAAA,CAAMgN,GACJ,IACE,MAAMC,EAAY9qB,KAAKypB,aAAa5L,MAAMgN,GACpCJ,EAASzqB,KAAKwqB,0BAA0BM,GAE9C,OAAKnB,EAAAA,QAAEnpB,QAAQiqB,GAIRK,EAHE,IAIV,CAAC,MAAOxY,GACP,OAAO,IACR,CACF,CAEDyY,OAAAA,CAAQF,GACN,IACE,OAAOG,QAAQhrB,KAAK6d,MAAMgN,GAC3B,CAAC,MAAOvY,GACP,OAAO,CACR,CACF,E,oBCtHHzW,EAAOD,QAAUqvB,C,kBxDAjBpvB,EAAOD,QAAU,C,yHNCf,IAAIF,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,2H+DjFrD,4JACA,4JACA,2J,oGCmFO,SAAuB0rB,GAC5B,MAAM2B,EAAa,GAMnB,OAJAvB,EAAAA,QAAEwB,KAAK5B,GAAmBS,IACxBL,EAAAA,QAAEwB,KAAKnB,EAASH,SAAS7gB,GAAUkiB,EAAWxD,KAAK1e,EAAOA,SAA1D,IAGKkiB,CACR,E,qDA9FD,I,EAAA,G,EAAA,O,2BACA,SASA,SAWO,MAAME,EAAU,CACrBC,OAAAA,EAAAA,OACAC,YAAAA,EAAAA,YACAC,IAAAA,EAAAA,IACAC,WAAAA,EAAAA,WACAC,WAAAA,EAAAA,WACAC,MAAAA,EAAAA,MACAC,WAAAA,EAAAA,WACAC,IAAAA,EAAAA,IACAC,qBAAAA,EAAAA,qBACAC,YAAAA,EAAAA,YACAC,kBAAAA,EAAAA,kBACAC,eAAAA,EAAAA,eACAC,sBAAAA,EAAAA,sBACAC,0BAAAA,EAAAA,0BACAC,iBAAAA,EAAAA,kB,YAGF,MAAMC,EAA4B,CAChCf,EAAAA,OACAC,EAAAA,YACAC,EAAAA,IACAC,EAAAA,WACAE,EAAAA,OAGIW,EAA4B,CAChCT,EAAAA,IACAE,EAAAA,YACAE,EAAAA,eACAE,EAAAA,0BACAC,EAAAA,kBAQWG,EAAiB,CAACC,EAAU1C,EAAU,MAArB,CAA+B0C,WAAU1C,Y,mBAMvE,MAAM2C,EAAsB,CAAC3C,EAAUuC,IACrCE,EAAe,cAAezC,GAM1B4C,EAAsB,CAAC5C,EAAUwC,IACrCC,EAAe,cAAezC,G,mBAOA,CAAC3Q,EAAawT,IAAgB,CAC5DF,EAAoBtT,GACpBuT,EAAoBC,G,gLClFA,CACpB1jB,OAAQ,6BACRujB,SAAU,qB,cAGe,CACzBvjB,OAAQ,kCACRujB,SAAU,0B,MAGO,CACjBvjB,OAAQ,0BACRujB,SAAU,4B,aAGc,CACxBvjB,OAAQ,iCACRujB,SAAU,kB,aAGc,CACxBvjB,OAAQ,iCACRujB,SAAU,gC,QAGS,CACnBvjB,OAAQ,4BACRujB,SAAU,oB,aAGc,CACxBvjB,OAAQ,8CACRujB,SAAU,uB,wPCjCO,CACjBvjB,OAAQ,0BACRujB,SAAU,kB,uBAGwB,CAClCvjB,OAAQ,2CACRujB,SAAU,kB,cAGe,CACzBvjB,OAAQ,kCACRujB,SAAU,0B,oBAGqB,CAC/BvjB,OAAQ,wCACRujB,SAAU,0B,iBAGkB,CAC5BvjB,OAAQ,qCACRujB,SAAU,6B,wBAGyB,CACnCvjB,OAAQ,4CACRujB,SAAU,6B,4BAG6B,CACvCvjB,OAAQ,gDACRujB,SAAU,sB,mBAGoB,CAC9BvjB,OAAQ,uCACRujB,SAAU,8B,qGCGL,SAAwBI,GAC7B,MAAMC,EAAc,GAMpB,OAJAjD,EAAAA,QAAEwB,KAAKwB,GAAgBE,IACrBlD,EAAAA,QAAEwB,KAAK0B,EAAY5H,UAAUD,GAAW4H,EAAYlF,KAAK1C,EAAQA,UAAjE,IAGK4H,CACR,E,2BAhDD,I,EAAA,G,EAAA,O,2BACA,SACA,SACA,SAOO,MAAMpD,EAAoB,CAC/B,CACEQ,SAAU,aACVuC,SAAU,+BACVtH,SAAU,CACR6H,EAAAA,SACAC,EAAAA,WACAC,EAAAA,SAGJ,CACEhD,SAAU,UACVuC,SAAU,2BACVtH,SAAU,CACRgI,EAAAA,mBACAC,EAAAA,YAGJ,CACElD,SAAU,aACVuC,SAAU,6BACVtH,SAAU,CACRkI,EAAAA,sBACAC,EAAAA,wBACAC,EAAAA,aACAC,EAAAA,kB,4JCnCkB,CACtBtI,QAAS,WACTuH,SAAU,gC,aAGc,CACxBvH,QAAS,aACTuH,SAAU,kC,SAGU,CACpBvH,QAAS,SACTuH,SAAU,6B,iJCZsB,CAChCvH,QAAS,qBACTuH,SAAU,gC,YAGa,CACvBvH,QAAS,YACTuH,SAAU,sB,qMCPyB,CACnCvH,QAAS,wBACTuH,SAAU,sC,0BAG2B,CACrCvH,QAAS,0BACTuH,SAAU,wC,eAGgB,CAC1BvH,QAAS,eACTuH,SAAU,iC,iBAGkB,CAC5BvH,QAAS,iBACTuH,SAAU,kC,wGC4ML,UAA2B,WAChCgB,EADgC,WAEhC1C,EAFgC,YAGhC5V,EAAc,CAAC,IAEf,IAAIsU,EACAoD,EAEJ,OAAQY,GACN,IAAK,UAAL,MAEIC,EAA+BvY,GAA2B,GADzDsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,WAAL,MAEIiE,EAAgCxY,GAA2B,GAD1DsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,UAAL,MAEIkE,EAA+BzY,GAAa,GAD3CsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,KAAL,MAEImE,EAA2B1Y,GAAa,GADvCsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,UAAL,MAEIoE,EAA+B3Y,GAAa,GAD3CsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,aAAL,MAEIqE,EAAkC5Y,GAAa,GAD9CsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,IAAK,yBAAL,MAEImE,EAA2B1Y,GAAa,GADvCsU,EADL,EACKA,iBAAqCoD,EAD1C,EACuBnD,kBAErB,MACF,QACE,OAAO,EAGX,MAAMsE,GAAmB,IAAAC,eAAcxE,GACjCyE,GAAoB,IAAAC,gBAAetB,GAtCxC,EAzBH,SAAmC9B,GACjC,IAAIqD,EAAc,GACdC,EAAe,GACnB,MAAMtE,EAAUF,EAAAA,QAAEjrB,OAAOmsB,GAAYuD,GACM,IAAzCA,EAAO/uB,QAAQ,uBAA6E,IAA9C+uB,EAAO/uB,QAAQ,6BACzDgvB,EAAY,2FAUlB,OARA1E,EAAAA,QAAEwB,KAAKtB,GAAU7gB,IAAW,QAC8BA,EAAOmT,MAAMkS,GAA7DC,OAAkBC,EADA,EACRvlB,OAAuBic,EADf,EACeA,SAEzCiJ,EAAcA,EAAY5E,OAAOiF,GAC7BtJ,IACFkJ,EAAeA,EAAa7E,OAAOrE,EAAShmB,MAAM,MACnD,IAEI,CACLivB,YAAavE,EAAAA,QAAE6E,KAAKN,GACpBC,aAAcxE,EAAAA,QAAE6E,KAAKL,GAExB,CA8CuCM,CAA0B5D,GAAxDqD,EAxCP,EAwCOA,YAAaC,EAxCpB,EAwCoBA,aAErB,IAAKxE,EAAAA,QAAE+E,MAAMR,GAAaS,WAAWb,GAAkBttB,UAAUzD,QAC/D,OAAO,EAGT,IAAK4sB,EAAAA,QAAE+E,MAAMP,GAAcQ,WAAWX,GAAmBxtB,UAAUzD,QACjE,OAAO,EAGT,OAAO,CACR,E,8PApRD,I,EAAA,G,EAAA,O,2BACA,SACA,S,QAuCqB,CACnB6xB,SAAS,EACTrF,iBAAkB,GAClBC,kBAAmB,IASd,MAAMqF,EAAW,CACtBD,SAAS,EACTrF,kBAAkB,IAAAuF,oBAClBtF,kBAAAA,EAAAA,mB,aAGF,MAAMuF,EAAuB,CAAC9Z,EAAc,CAAE+Z,QAAS,CAAC,GAAKC,KAAY,QAMnEha,EAJF+Z,QAFqE,aAKjE,CAAC,EALgE,EAG/CE,EAH+C,EAGnEC,mBAKJ,IARuE,EAInEC,iBAI4B,OAEhC,MAAMC,EAAa,CACjBjE,EAAAA,QAAQS,qBACRT,EAAAA,QAAQW,kBACRX,EAAAA,QAAQa,sBACRb,EAAAA,QAAQc,0BACRd,EAAAA,QAAQe,kBAEJmD,EAAa,CACjBlE,EAAAA,QAAQQ,IACRR,EAAAA,QAAQU,YACRV,EAAAA,QAAQY,eACRZ,EAAAA,QAAQc,0BACRd,EAAAA,QAAQe,kBAGV,IAAIoD,EAAe,GACfN,IACFM,EAAeL,EAA8BI,EAAaD,GAQ5D,MALoB,IANIH,EAA8BG,EAAaC,KAQ9DC,EAGL,EAGW7B,EAAiC,CAACzY,EAAaga,GAAU,KACpE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACL1F,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQK,WACRL,EAAAA,QAAQM,MACRN,EAAAA,QAAQO,YACPe,GACHlD,kBAAAA,EAAAA,kBAVF,E,mCAcK,MAAMmE,EAA6B,CAAC1Y,EAAaga,GAAU,KAChE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACL1F,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQM,OACPgB,GACHlD,kBAAAA,EAAAA,kBARF,E,+BAYK,MAAMiE,EAAkC,CAACxY,EAAaga,GAAU,KACrE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACL1F,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQK,WACRL,EAAAA,QAAQM,MACRN,EAAAA,QAAQO,YACPe,GACHlD,kBAAAA,EAAAA,kBAVF,E,oCAcK,MAAMoE,EAAiC,CAAC3Y,EAAaga,GAAU,KACpE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACL1F,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQK,WACRL,EAAAA,QAAQM,OACPgB,GACHlD,kBAAAA,EAAAA,kBATF,E,mCAaK,MAAMqE,EAAoC,CAAC5Y,EAAaga,GAAU,KACvE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACLL,SAAS,EACTrF,kBAAkB,IAAAuF,uBAAiB9T,EAAW0R,GAC9ClD,kBAAAA,EAAAA,kBAHF,E,sCAOK,MAAMgE,EAAiC,CAACvY,EAAaga,GAAU,KACpE,MAAMvC,EAAcqC,EAAqB9Z,EAAaga,GAEtD,MAAO,CACL1F,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQK,WACRL,EAAAA,QAAQM,OACPgB,GACHlD,kBAAAA,EAAAA,kBATF,E,mCAaK,MAAMgG,EAA8B,CACzCjG,kBAAkB,IAAAuF,kBAAiB,CACjC1D,EAAAA,QAAQC,OACRD,EAAAA,QAAQE,YACRF,EAAAA,QAAQG,IACRH,EAAAA,QAAQI,WACRJ,EAAAA,QAAQK,WACRL,EAAAA,QAAQM,QAEVlC,kBAAAA,EAAAA,mB,iDjErMF3tB,EAAOD,QAAU,C,yKNCf,IAAIF,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,E,2MwEhFrD,U,oGCFA,WACA,OAEA,KACA,I,EAAA,OAEA,G,EAAA,O,snCAaa4xB,E,8cAkBR,IADDC,EACC,EADDA,QAASC,EACR,EADQA,QAASC,EACjB,EADiBA,aAAcC,EAC/B,EAD+BA,UAAWC,EAC1C,EAD0CA,0BAA2BC,EACrE,EADqEA,wBAEhEC,GAAkB,IAAAC,mBAAkBP,EAASC,EAASC,GAC5D,GAAII,EAAgB9wB,OAClB,MAAM,IAAIud,MAAMuT,EAAgBpxB,KAAK,MAGvCoB,KAAKM,MAAM4vB,IAAI,CACbR,QAAAA,EAASC,QAAAA,EAASC,aAAAA,EAAcC,UAAAA,EAAWC,0BAAAA,EAA2BC,wBAAAA,GAEzE,G,gCAkBC,OAAO/vB,KAAKmwB,WAAWP,cAAgB,IACxC,G,wCAMiB,aAC2B5vB,KAAKM,MAAM8vB,WAA9CV,EADQ,EACRA,QAASC,EADD,EACCA,QAEX5uB,EAAU,CACdhE,MAJc,EACU6yB,aAIxBS,WAAW,EACX1iB,QAAQ,EACRjK,OAAQ,SAAC4sB,GACP,IAAMC,EAAUD,EAAME,OAAOzzB,QACzBwzB,GACF,EAAKjwB,MAAM4vB,IAAI,CAAEN,aAAcW,GAAW,CAAEE,QAAQ,IACpD,EAAKC,QAAQ,cAAe,EAAKC,YAIjCL,EAAME,OAAOzzB,MAAM,EAAK4zB,UAE3B,EACDle,KAAM,WACJ,EAAKme,WAAWC,SAASC,IAAIC,OAAM,SAACT,GAClCA,EAAMU,iBACP,IAHS,IAKFC,EAAa,EAAKL,WAAWC,SAA7BI,SACJA,GAAYA,EAASC,YACvBD,EAASC,WAAW,CAAEb,WAAW,IAG/B,EAAK/vB,MAAM8vB,WAAWL,yBAExBkB,EAASE,WAAWC,KAAK,aAAc,EAAK9wB,MAAM8vB,WAAWL,yBAE3D,EAAKzvB,MAAM8vB,WAAWN,2BAExBmB,EAASI,WAAWD,KAAK,aAAc,EAAK9wB,MAAM8vB,WAAWN,0BAEhE,EACDxT,MAAO,CACLgV,MAAO,0DAcX,OARI5B,IACF3uB,EAAQkL,IAAMyjB,GAGZC,IACF5uB,EAAQgL,IAAM4jB,GAGT5uB,CACR,G,oCAQCf,KAAKuxB,IAAIC,MAAK,aAAS,CAAE3B,UAAW7vB,KAAKM,MAAM8vB,WAAWP,aAC1D7vB,KAAKyxB,kBAAoBzxB,KAAK0xB,EAAE,0BAEhC1xB,KAAKyxB,kBAAkBE,gBAAgB3xB,KAAK4xB,mBAE5C5xB,KAAKyxB,kBAAkBI,WAAW,iBAElC7xB,KAAK0xB,EAAE,2BAA2BI,OAE9B9xB,KAAK4wB,YACP5wB,KAAK4wB,WAAWmB,UAElB/xB,KAAK4wB,WAAa5wB,KAAKyxB,kBAAkBliB,KAAK,kBAC/C,G,+BAaC,OALIvP,KAAK4wB,YACP5wB,KAAK4wB,WAAWmB,UAGlB/xB,KAAK4wB,WAAa,KAClB,0CACD,G,oCAQaN,GACPA,EAAM0B,UAAYA,EAAAA,QAAQC,OAAW3B,EAAM0B,UAAYA,EAAAA,QAAQE,QAClE5B,EAAM6B,iBACN7B,EAAMU,kBACNhxB,KAAK4wB,WAAWne,OAEnB,G,6BAzHY,WACX,MAAO,CACL,oCAAqC,kBAAM,EAAKme,WAAWne,MAAtB,EACrC,sCAAuCzS,KAAKoyB,cAE/C,M,8BAtC6BC,EAAAA,mB,8BCnBhCx2B,EAAOD,QAAU02B,C,gBCAjBz2B,EAAOD,QAAU22B,C,gBCAjB12B,EAAOD,QAAU4G,C,gBrDAjB3G,EAAOD,QAAU,C,kBsDAjB,IAAI42B,EAAMC,EAAQ,GAGlB52B,EAAOD,QADP,SAAkB82B,GAAS,IAAIC,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EAAyR,OAArR,SAAU7C,GAAY8C,EAAWA,yCAA+DH,EAAIpB,KAAK,aAAcvB,GAAW,GAAM,GAAS,GAAjJ,EAA4J5zB,KAAK+D,KAAK,cAAe4yB,EAAgBA,EAAgB/C,UAA6B,qBAAZA,UAAwBA,eAAU7U,GAAoB2X,CAAU,C,gBCFvZ92B,EAAOD,QAAU6G,C,yH9ECf,IAAI/G,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,oB+ElFrDhC,EAAOD,QAAUi3B,C,0HCEjB,2J,uGC0BO,SAA0B9xB,EAAS+xB,GAAS,QAG7C/xB,EADFgyB,QAAAA,OAF+C,MAErC,IAFqC,IAG7ChyB,EADaiyB,SAAAA,OAFgC,MAErB,IAFqB,EAEhBC,EAC7BlyB,EAD6BkyB,GAFgB,EAG7ClyB,EADiCmyB,SAAAA,OAFY,MAED,OAFC,EAIjD,IAAIC,EACJ,MAAMC,EAAkB,IAAIniB,EAAAA,SAASC,IACnCiiB,EAAyBjiB,CAAzB,IAEF,IAAImiB,EAAM,KACNC,GAAe,EACnB,MAAMC,EAAUC,IAEhBN,EAAU,cAAaK,wBAA8BR,iBAAuBC,KA6B5E,OAAOF,EACJtgB,QA5BW,MAEZ,MAAMihB,EAAYvuB,YAAW,KAC3BguB,EAAU,cAAaK,gBAEvBD,GAAe,EACfD,EAAMJ,IAGN/tB,YAAW,KACTguB,EAAU,cAAaK,iBACvBJ,GAAwB,GACvBH,EAHH,GAICD,GAEH,MAAO,KACLG,EAAU,cAAaK,wCAA8CD,KAIhEA,IACHI,aAAaD,GACbN,IACD,CARH,EAaSQ,IACRnhB,SAAQ,IAAM4gB,IACd5gB,SAAQ,KACP0gB,EAAU,cAAaK,6CAAmDD,KAEtED,GACFA,GACD,GAEN,EA/ED,I,EAAA,G,EAAA,Q,2BAEA,IAAIG,EAAgB,C,iJjFDlB,IAAI93B,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,E,oBMlFrDhC,EAAOD,QAAU,C,gB4EAjBC,EAAOD,QAAU22B,C,0OCAjB,M,uSAAA,O,YACA,WACA,K,6FCUO,SAAoBqB,EAAMC,GAC/B,GAAIlK,EAAAA,QAAEmK,WAAWD,GACf,OAAOD,EAAKG,SAASF,EAAMD,EAAKzD,aAElC,OAAOyD,EAAKG,SAASpK,EAAAA,QAAEqK,OAAO,CAAC,EAAGJ,EAAKzD,WAAY0D,GACpD,E,kBA4BM,SAAyBD,EAAMK,EAAKC,GAAwC,IAA3BnzB,EAA2B,uDAAjB,CAAC,EAAGozB,EAAa,uDAAJ,CAAC,EAC1EC,EAAYR,EAAKS,SAASJ,GAE9B,IAAKG,GA7BP,SAAoBR,GAClB,OAAOA,EAAKU,WAAaV,EAAKW,UAC/B,CA2BmBC,CAAWJ,KAAeF,EAAa,CACvD,GAAIvK,EAAAA,QAAEmK,WAAWI,GACf,GAAIA,IAAgB7B,EAAAA,mBACf6B,EAAYx2B,qBAAqB20B,EAAAA,kBAEpC+B,EAAY,IADYF,EACQnzB,QAEhCqzB,EAAYF,EAAYnzB,GAI5B,KAAMqzB,aAAqB/B,EAAAA,mBACzB,MAAM,IAAI5V,MAAM,wBArCtB,SAAoBmX,EAAMa,GACjB9K,EAAAA,QAAEqK,OAAOJ,EAAM,CAAEU,UAAWG,GACpC,CAsCGC,CAAWN,EAAWF,GAEtBvK,EAAAA,QAAEwB,KAAKgJ,GAAQ,SAACQ,EAASrE,GACvB,IAAMsE,EAAkBjL,EAAAA,QAAEkL,SAASF,GAAWf,EAAKe,GAAWA,EAC9D,IAAKhL,EAAAA,QAAEmK,WAAWc,GAChB,MAAM,IAAInY,MAAM,yBAElBmX,EAAKkB,SAASV,EAAW9D,EAAOsE,EACjC,IACDhB,EAAKmB,SAASd,EAAKG,EACpB,CAED,OAAOA,CACR,EA5ED,I,EAAA,G,EAAA,O,2BACA,M,2GCDA,cACA,UACA,Q,mDAGA,IAAMY,EAAsB,IAF5B,MAEgCC,cAY1BC,EAAiB,iBAAM,EAAN,EAEjBC,EAAoB,CACxB,QACA,aACA,KACA,KACA,YACA,UACA,aACA,UAGW9C,EAAoB+C,EAAAA,SAASpB,OAAO,CAqB/Cr0B,YAAa,SAAqBoB,GAAS,WACzC4oB,EAAAA,QAAEwB,KAAKgK,GAAmB,SAAC94B,GACzB,GAAIstB,EAAAA,QAAE0L,IAAIt0B,EAAS1E,GACjB,MAAM,IAAIogB,MAAJ,kBAAqBpgB,EAArB,wCAET,IAED,IACMiE,EAAQ,IAAIg1B,EADOt1B,KAAKu1B,OAG9B,KAAMj1B,aAAiBk1B,EAAAA,QAASD,OAC9B,MAAM,IAAI9Y,MAAM,sBAGlB2Y,EAAAA,SAASn5B,KAAK+D,KAAM2pB,EAAAA,QAAE8L,SAAS,CAAEn1B,MAAAA,GAASS,IAKrCf,KAAKe,UACRf,KAAKe,QAAU,CAAC,GAElB4oB,EAAAA,QAAE8L,SAASz1B,KAAKe,QAASA,GAGzBf,KAAK80B,SAASx0B,EAAO,UAAU,WAC7B,EAAKo1B,aAAaC,mBAAmB,EACtC,IACD31B,KAAK01B,aAAaC,mBAAmB31B,KACtC,EAQD,gBAAI01B,GACF,OAAOV,CACR,EAQD,YAAIv0B,GACF,OAAOy0B,CACR,EAQD,SAAIK,GACF,OAAOC,EAAAA,QAASD,KACjB,EAUDxB,SA1F+C,SA0FtC6B,GAEP,OADA51B,KAAKM,MAAM4vB,IAAI0F,GACR51B,IACR,EASDmwB,SAtG+C,WAuG7C,OAAOnwB,KAAKM,MAAMu1B,QACnB,EAUDC,YAlH+C,WAmH7C91B,KAAKuxB,IAAIC,KAAKxxB,KAAKS,SAAS,CAC1BH,MAAON,KAAKM,MAAM8vB,WAClBwD,KAAM5zB,OAET,EAOD+1B,OA9H+C,WAgI7C,OADA/1B,KAAK01B,aAAaM,WAAWh2B,MACtBA,IACR,GACA,CAMDg1B,oBAAAA,I,qCCtKFn5B,EAAOD,QAAUq6B,C,sGCGjB,I,EAAA,G,EAAA,O,2BACA,Q,0KAaQC,EAAiBd,EAAAA,SAAjBc,a,IAoBKjB,E,WACX,c,4FAAc,SACZj1B,KAAKm2B,eAAiB,KACtBn2B,KAAKo2B,YAAc,IAAIC,GACxB,C,0DAOUzC,GAMTsC,EAAaxF,QAAQ,iBAAkBkD,GAOlCwB,EAAAA,SAASkB,UAAU1C,IAAUA,EAAK2C,GAAGC,YAGxCN,EAAaxF,QACX,UACA/G,EAAAA,QAAEqK,OAAO,IAAIvX,MAAM,0BAA2B,CAAEmX,KAAAA,KAMpD,IAAM6C,EAAS53B,SAAS63B,cAAc,OACtC9C,EAAKrC,IAAIvvB,WAAW20B,SAASF,GAG7B7C,EAAKkC,cAGL,IAtDmBS,EAsDbK,EAAe,CAAC,EAEtBhD,EAAKlC,EAAE,cAAcvG,MAAK,SAAC/e,EAAOmqB,GAAO,IAC/BtC,EAAQsC,EAAGM,QAAX5C,IACR2C,EAAa3C,GAAOsC,EACfnB,EAAAA,SAASf,SAAST,EAAMK,IAG3BiC,EAAaxF,QACX,UACA/G,EAAAA,QAAEqK,OAAO,IAAIvX,MAAM,wBAAyB,CAAEmX,KAAAA,EAAMK,IAAAA,IAGzD,IAIDtK,EAAAA,QAAEwB,KAAKiK,EAAAA,SAAS0B,gBAAgBlD,IAAO,SAACK,GACtC,IA9EkB8C,EAAOC,EA8EnBzW,EAAQ6U,EAAAA,SAASf,SAAST,EAAMK,GAElCtK,EAAAA,QAAE0L,IAAIuB,EAAc3C,IAhFN8C,EAiFDxW,EAAMgW,IAjFES,EAiFEJ,EAAa3C,KAhF/B+C,EAAMR,YACjBQ,EAAMR,WAAWS,aAAaF,EAAOC,IAiFjCzW,EAAM2W,QAET,KA/EkBX,EAiFLE,IA9ENF,EAAGC,YACXD,EAAGC,WAAWW,YAAYZ,GAoF1BL,EAAaxF,QAAQ,gBAAiBkD,GAMtCA,EAAKlD,QAAQ,WACd,G,oCAOa,WACN0G,EAAQp3B,KAAKm2B,eACbkB,EAAQr3B,KAAKo2B,YAEnBp2B,KAAKm2B,eAAiB,KACtBn2B,KAAKo2B,YAAc,KAOnBF,EAAaxF,QAAQ,kBAAmB0G,GAExCC,EAAMC,SAAQ,SAAA1D,GAAI,OAAIwB,EAAAA,SAASrK,QAAQ6I,IAAS,EAAKoC,WAAWpC,EAA9C,IAOlBsC,EAAaxF,QAAQ,iBAAkB0G,EACxC,G,yCAOkBxD,GACbA,EAAK7yB,SAAW6yB,EAAK7yB,QAAQw2B,aAG/Bv3B,KAAKg2B,WAAWpC,IAIb5zB,KAAKo2B,cACRp2B,KAAKo2B,YAAc,IAAIC,KAGzBr2B,KAAKo2B,YAAYoB,IAAI5D,GAEhB5zB,KAAKm2B,iBACRn2B,KAAKm2B,eAAiBsB,sBAAsBz3B,KAAK03B,YAAYp6B,KAAK0C,QAErE,M,+EC1KH,WAGM23B,EAAQ,CAEZ/D,KAAM,KAGN7V,GAAI,MAINsU,EAAAA,kBAAkB6D,aAAajD,GAAG,mBAAmB,WAAM,IACjD2E,EAAkB/4B,SAAlB+4B,cAERD,EAAM/D,KAAOvB,EAAAA,kBAAkBwF,kBAAkBD,GACjDD,EAAM5Z,GAAM6Z,GAAiBA,EAAcf,SAAWe,EAAcf,QAAQiB,SAAY,IACzF,IAIDzF,EAAAA,kBAAkB6D,aAAajD,GAAG,kBAAkB,WAClD,GAAIZ,EAAAA,kBAAkBtH,QAAQ4M,EAAM/D,OAAS+D,EAAM5Z,GAAI,CACrD,IAAMga,EAAW,kBAAH,OAAqBna,KAAKoa,UAAUL,EAAM5Z,IAA1C,KACRka,EAAUN,EAAM/D,KAAKlC,EAAEqG,GAAUp7B,IAAI,GAEvCs7B,GAAWA,IAAYp5B,SAAS+4B,eAClCK,EAAQN,OAEX,CACF,G,qIxFhCC,IAAIj8B,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,E,oBMlFrDhC,EAAOD,QAAU,C,oemFEjB,WACA,QACA,O,2VCJA,I,EAAA,G,EAAA,O,64BAQas8B,E,2cACAn3B,GACTf,KAAK4zB,KAAO5zB,KAAKk0B,YAAYnzB,GAC7Bf,KAAK80B,SAAS90B,KAAK4zB,KAAM,MAAO5zB,KAAK0wB,SACrC1wB,KAAKm4B,UAAW,CACjB,G,oCAGC,MAAM,IAAI1b,MAAM,6BACjB,G,oCASC,OANKzc,KAAKm4B,WACRn4B,KAAKm4B,UAAW,EAChBn4B,KAAK4zB,KAAKmC,UAGZ/1B,KAAKuxB,IAAIrhB,OAAOlQ,KAAK4zB,KAAKrC,KACnBvxB,IACR,G,+BAIC,OADAA,KAAK4zB,KAAKsD,SACV,0CACD,G,+BAQQtB,GAKP,OAJA,4CAAeA,GACX51B,KAAK4zB,MAAQjK,EAAAA,QAAEmK,WAAW9zB,KAAK4zB,KAAKG,WACtC/zB,KAAK4zB,KAAKG,SAAS6B,GAEd51B,IACR,G,gCAOiB,MAAO,4BAA+B,M,8BApD1D,KAO8CqyB,mB,4ChBR9Cx2B,EAAOD,QAAU,C,o6BiBOJw8B,E,8cACU,IAAR5G,EAAQ,EAARA,KACXxxB,KAAK+zB,SAAS,CAAEvC,KAAAA,GACjB,G,iCAGC,OAAOxxB,KAAKM,MAAM3D,IAAI,OACvB,M,8BAdH,KAO8C01B,mB,w8BCCjCgG,E,+cAET,OADoB,EAARzE,IAEb,M,8BAXH,KAQsDsE,0B,yN5FPpD,IAAIx8B,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,oB8ElFrDhC,EAAOD,QAAU,C,kSeEjB,aACA,Q,oGCHA,cACA,WACA,MACA,cACA,Y,mDAUO,MAAM08B,UAAe9C,EAAAA,QAAS+C,KAenCC,UAAAA,EAAW,GAETza,EAFS,SAGT0a,EAHS,SAITC,EAJS,WAKTC,GAAa,EALJ,SAMTC,GAAW,EANF,gBAOTC,GAAkB,GAChB,CAAC,GACH74B,KAAK84B,YAAc,KACnB94B,KAAKy4B,SAAW9O,EAAAA,QAAEoP,UAAUN,GAAYA,EAAW,SACnDz4B,KAAK04B,WAAW/O,EAAAA,QAAEoP,UAAUL,IAAYA,EACxC14B,KAAK44B,SAAWA,EAChB54B,KAAK24B,WAAaA,EAClB34B,KAAK64B,gBAAkBA,CACxB,CAKD,UAAI1E,GACF,MAAO,CACL,6BAA8B,gBAC9B,kBAAmB,SAEtB,CAMD,MAAIpW,CAAGib,GACDA,IACFh5B,KAAKg5B,SAAWA,EAEnB,CAED,MAAIjb,GAIF,OAHK/d,KAAKg5B,WACRh5B,KAAKg5B,SAAWrP,EAAAA,QAAEsP,SAAS,YAEtBj5B,KAAKg5B,QACb,CAODE,aAAAA,CAAc5mB,GACZ,MAAMjW,GAAO,aAAEiW,EAAEQ,QAAQse,KAAK,eAC9BpxB,KAAK0wB,QAAQ,gBAAiBr0B,EAC/B,CAOD88B,UAAAA,CAAWvF,GAWT,OAVI5zB,KAAK84B,aACP94B,KAAK84B,YAAY5B,SAEnBl3B,KAAK84B,YAAclF,EAEf5zB,KAAKu2B,GAAGC,aACVx2B,KAAK84B,YAAY/C,SACjB/1B,KAAK0xB,EAAE,eAAexhB,OAAOlQ,KAAK84B,YAAYvC,KAGzCv2B,IACR,CASD+zB,QAAAA,CAAS6B,GAGP,OAFA51B,KAAK8I,MAAQ8sB,EAAM9sB,MACnB9I,KAAKo5B,QAAUxD,EAAMwD,QACdp5B,IACR,CAED+1B,MAAAA,GAeE,OAdA/1B,KAAKuxB,IAAIC,MAAK,aAAS,CACrB1oB,MAAO9I,KAAK8I,MACZiV,GAAI/d,KAAK+d,GACTqb,QAASp5B,KAAKo5B,SAAW,GACzBT,WAAY34B,KAAK24B,aAAe34B,KAAK8I,OAAS9I,KAAK64B,iBACnDA,gBAAiB74B,KAAK64B,gBACtBD,SAAU54B,KAAK44B,YAGb54B,KAAK84B,cACP94B,KAAK84B,YAAY/C,SACjB/1B,KAAK0xB,EAAE,eAAexhB,OAAOlQ,KAAK84B,YAAYvC,KAGzCv2B,IACR,CAMDq5B,IAAAA,GAOE,OANAr5B,KAAK+1B,SAEL/1B,KAAK0xB,EAAE,UAAU4H,MAAM,CACrBb,SAAUz4B,KAAKy4B,SACfC,SAAU14B,KAAK04B,WAEV14B,IACR,CAMDk3B,MAAAA,GAOE,OANAl3B,KAAK0wB,QAAQ,aACT1wB,KAAK84B,cACP94B,KAAK84B,YAAY5B,SACjBl3B,KAAK84B,YAAc,MAErB94B,KAAK0xB,EAAE,UAAU4H,MAAM,QAChBC,MAAMrC,QACd,E,gCC/JH,IAAI1E,EAAMC,EAAQ,IA4ClB52B,EAAOD,QA1CP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EAyCsmB,OAzClmB,SAAU0G,EAASrb,EAAI6a,EAAUC,EAAiBF,EAAY7vB,GAAQ6pB,EAAWA,mDAAgFH,EAAIpB,KAAK,kBAAmB,iCAAmCrT,GAAI,GAAM,GAAS,yDAChW4a,GACJhG,GAAsB,6BAClBkG,IACJlG,GAAsB,kHAElB7pB,IACJ6pB,EAAWA,4BAAkDH,EAAIpB,KAAK,KAAM,iCAAmCrT,GAAI,GAAM,GAAS,IAAYyU,EAAIiH,OAAO,OAASD,EAAa1wB,GAAS,GAAK0wB,GAAe,SAE5M7G,GAAsB,UAGtBA,GAAsB,yCAElBiG,IACJjG,GAAsB,kCAElByG,EAAQl6B,OAAS,IACrByzB,GAAsB,6BAErB,WACC,IAAI+G,EAAQN,EACZ,GAAI,iBAAmBM,EAAMx6B,OACzB,IAAK,IAAIy6B,EAAa,EAAGC,EAAMF,EAAMx6B,OAAQy6B,EAAaC,EAAKD,IAAc,CAC3E,IACJE,GADQxsB,EAASqsB,EAAMC,IACVG,OAAS,GAC1BnH,EAAWA,EAAW,UAAkBH,EAAIpB,KAAK,QAASoB,EAAI3pB,QAAQ,CAAC,MAAM,cAAcgxB,GAAM,EAAC,GAAM,GAAM,KAAQ,GAAO,GAAM,iBAAmBrH,EAAIpB,KAAK,cAAe/jB,EAAOhR,MAAM,GAAM,GAAMm2B,EAAIpB,KAAK,WAAY/jB,EAAOrD,UAAU,GAAM,GAAS,IAAYwoB,EAAIiH,OAAO,OAASD,EAAansB,EAAOoD,MAAQ,GAAK+oB,GAAe,WACrU,KACE,CACDI,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACA,IAAIvsB,EACNwsB,GADMxsB,EAASqsB,EAAMC,IACRG,OAAS,GAC1BnH,EAAWA,EAAW,UAAkBH,EAAIpB,KAAK,QAASoB,EAAI3pB,QAAQ,CAAC,MAAM,cAAcgxB,GAAM,EAAC,GAAM,GAAM,KAAQ,GAAO,GAAM,iBAAmBrH,EAAIpB,KAAK,cAAe/jB,EAAOhR,MAAM,GAAM,GAAMm2B,EAAIpB,KAAK,WAAY/jB,EAAOrD,UAAU,GAAM,GAAS,IAAYwoB,EAAIiH,OAAO,OAASD,EAAansB,EAAOoD,MAAQ,GAAK+oB,GAAe,WACvU,CACF,CAhBF,EAiBEv9B,KAAK+D,MAER2yB,GAAsB,UAEtBA,GAAsB,oBAzC2F,EAyCvB12B,KAAK+D,KAAK,YAAa4yB,EAAgBA,EAAgBwG,QAAyB,qBAAVA,QAAsBA,aAAQpe,EAAU,OAAQ4X,EAAgBA,EAAgB7U,GAAe,qBAALA,GAAiBA,QAAG/C,EAAU,aAAc4X,EAAgBA,EAAgBgG,SAA2B,qBAAXA,SAAuBA,cAAS5d,EAAU,oBAAqB4X,EAAgBA,EAAgBiG,gBAAyC,qBAAlBA,gBAA8BA,qBAAgB7d,EAAU,eAAgB4X,EAAgBA,EAAgB+F,WAA+B,qBAAbA,WAAyBA,gBAAW3d,EAAU,UAAW4X,EAAgBA,EAAgB9pB,MAAqB,qBAARA,MAAoBA,WAAMkS,GAAoB2X,CAAU,C,+FClB7tB,SAAkBiB,EAAMmG,GAuH7B,OAtHA,cAA4BnG,EAC1B4E,UAAAA,CAAWz3B,GACTf,KAAKe,QAAUA,EACff,KAAK+xB,QAAU/xB,KAAKk3B,OACfvN,EAAAA,QAAE0L,IAAIzB,EAAKl2B,UAAW,WACzBsC,KAAKq5B,OAEPW,EAAcpG,EAAKl2B,UAAU86B,WAAYx4B,KAAMA,KAAKe,QACrD,CAEDg1B,MAAAA,GAKE,OAJA/1B,KAAKq5B,OACLW,EAAcpG,EAAKl2B,UAAUq4B,OAAQ/1B,KAAMA,KAAKe,SAChDf,KAAKi6B,cAEEj6B,IACR,CAEDi6B,WAAAA,GACsC,WAAhCj6B,KAAK+5B,cAAcG,UACrBl6B,KAAKm6B,QAER,CAEDd,IAAAA,GACE,MAAMt4B,EAAU4oB,EAAAA,QAAE8L,SAAS,CACzB3sB,MAAO9I,KAAKe,QAAQ+H,MACpBsxB,WAAW,EACX/J,WAAW,GACVrwB,KAAKe,QAAQg5B,cAAeA,EAAeM,GAEzCr6B,KAAKqQ,SACRrQ,KAAKqQ,OAASrQ,KAAKuxB,IAChB+I,YAAYv5B,GACZwO,KAAK,gBAGVvP,KAAKqQ,OAAOkqB,QAAQnJ,KAAK,OAAQ,UACjCpxB,KAAKqQ,OAAOkqB,QAAQnJ,KAAK,aAAcrwB,EAAQ+H,OAC/C9I,KAAKqQ,OAAOkqB,QAAQC,SAAS,0BAC7Bx6B,KAAKqQ,OAAO8pB,SACZn6B,KAAKqQ,OAAOoC,OAEZ,MAAM3J,GAAQ,aAAE,kBAAmB9I,KAAKqQ,OAAOkqB,SAC3Cx5B,EAAQ05B,mBACV3xB,EAAMsoB,KAAK,CACTze,KAAM,UACN,aAAc5R,EAAQ05B,oBAI1B,MAAMC,GAAc,aAAE,0BAA2B16B,KAAKqQ,OAAOkqB,SAiB7D,GAhBAG,EAAYF,SAAS,aACrBE,EAAYtJ,KAAK,aAAcrwB,EAAQ45B,uBAErB,aAAE,wBAAyB36B,KAAKqQ,OAAOkqB,SAC/C/I,KAAK,IAAIT,MAAMpH,EAAAA,QAAErsB,KAAK0C,KAAKk3B,OAAQl3B,OAE7CA,KAAKqQ,OAAOuqB,QAAQxJ,KAAK,YAAa,GAEtCzH,EAAAA,QAAEwB,KAAKpqB,EAAQ85B,eAAgBz1B,IAC7BpF,KAAKqQ,OAAOuqB,QAAQJ,SAASp1B,EAA7B,GACCpF,MAECe,EAAQ+5B,QACV96B,KAAKuxB,IAAIwJ,IAAI,UAAWh6B,EAAQ+5B,SAG7BnR,EAAAA,QAAEnpB,QAAQO,EAAQi6B,YAAa,CAClC,MAAMJ,GAAU,aAAE75B,EAAQi6B,YAC1B,GAAIJ,GAAWA,EAAQ17B,OAAS,EAAG,CACjC,MAAM+7B,EAAYjiB,SAAS4hB,EAAQG,IAAI,WAAY,IAAM,EACnDG,GAAU,aAAE,aACZC,GAAW,aAAE,cAEfD,GAAWA,EAAQh8B,OAAS,GAC9Bg8B,EAAQH,IAAI,UAAWE,GAErBE,GAAYA,EAASj8B,OAAS,GAChCi8B,EAASJ,IAAI,UAAWE,EAAY,EAEvC,CACF,CAID,OAFAj7B,KAAK+5B,cAAgBh5B,EAEdf,IACR,CAEDm6B,MAAAA,GAIE,OAHIn6B,KAAKqQ,QACPrQ,KAAKqQ,OAAO8pB,SAEPn6B,IACR,CAED8xB,IAAAA,GAIE,OAHI9xB,KAAKqQ,QACPrQ,KAAKqQ,OAAO+qB,QAEPp7B,IACR,CAEDk3B,MAAAA,CAAO5kB,GACDA,GACFA,EAAE6f,iBAGJ6H,EAAcpG,EAAKl2B,UAAUw5B,OAAQl3B,KAAMA,KAAKe,SAChDi5B,EAAcpG,EAAKl2B,UAAUq0B,QAAS/xB,KAAMA,KAAKe,SAE7Cf,KAAKqQ,SACPrQ,KAAKqQ,OAAO+qB,QACZp7B,KAAKqQ,OAAO0hB,UACZ/xB,KAAKqQ,OAAS,KAEjB,EAGJ,EAjJD,cACA,W,mDACA,OAEA,MAAMgqB,EAAiB,CACrBf,OAAO,EACP/yB,SAAU,IACV80B,WAAW,EACXC,SAAS,EACTxyB,MAAO,IAGT,SAASkxB,EAAcuB,EAAMC,EAASC,GACpC,GAAI9R,EAAAA,QAAEmK,WAAWyH,GAAO,CACtB,MAAMG,EAAa/R,EAAAA,QAAEgS,QAAQ,CAAE,EAAGF,IAClCF,EAAKK,MAAMJ,EAASE,EACrB,CACF,C,oBCjBD7/B,EAAOD,QAAUigC,C,mBCAjBhgC,EAAOD,QAAUkgC,C,mBCAjBjgC,EAAOD,QAAUmgC,C,kB7FAjBlgC,EAAOD,QAAU,C,kB4EAjBC,EAAOD,QAAU,C,kEnFAjB,IAAiDJ,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,OACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBqGVAhC,EAAOD,QAAUq6B,C,isBCAjB,YACA,QACA,O,iJCsDO,SAA4B+F,GACjC,OAAO,SAAqBj6B,GAC1B,MAAMk6B,EAA+BC,IACrC,OAAQ,wBAACF,EAAD,KAAUj6B,EAAV,CAAiBo6B,eAAgBF,IAC1C,CACF,EA7DD,M,uSAAA,QACA,Q,gNAEA,IAAIG,EAUG,SAASD,EAAeE,EAAKC,GAClC,IAAKF,EAAK,CAGR,GAFAA,EAAMv9B,SAAS63B,cAAc,UAC7B0F,EAAIG,MAAMz1B,QAAU,OAChBw1B,EAAe,CACjB,MAAME,EAAQC,aAAY,KACxB,IACE,MAAMC,EAAYN,EAAIO,iBAAmBP,EAAIQ,cAAc/9B,SAC9B,aAAzB69B,EAAUG,aACZC,cAAcN,GACdF,EAAcI,EAAUG,aAE1BC,cAAcN,EACf,CAAC,MAAOlqB,GACPwqB,cAAcN,GACdF,EAAc,OAAQhqB,EACvB,IACA,IACJ,CAEDzT,SAASk+B,KAAKC,YAAYZ,EAC3B,CACDA,EAAIa,IAAMZ,CACX,CAEM,SAASH,IACd,MACM34B,GADkB,IAAA3B,YAAWs7B,EAAAA,wBACJC,0BAA0B,CACvDC,aAAc,yBACdC,aAAc,2BACb3yB,SAEH,OAAO,SAAsC2xB,GAC3CF,EAAeE,GAAK,CAACiB,EAAQC,KACZ,aAAXD,EACF/5B,EAAOqG,MAAO,kCAAiC0zB,SAAcjB,KAE7D94B,EAAOi6B,MAAO,+BAA8BF,SAAcjB,WAAaze,KAAKoa,UAAUuF,KACvF,GAEJ,CACF,C,mB/FtDD1hC,EAAOD,QAAU,C,mBgGAjBC,EAAOD,QAAU6hC,C,8FCeV,SAAkBpB,EAAKqB,GAAW,aAAIrB,GAAKsB,YAChD,OAAO,IAAI1sB,EAAAA,SAASC,IAClB,MAAM0sB,EAAM,IAAIC,eAChBD,EAAInrB,KAAK,MAAO4pB,GAChBuB,EAAIE,aAAe,OACnBF,EAAIG,OAAS,MACX,IAAAC,iBAAgBJ,EAAIK,SAAUP,GAC9BxsB,GAAS,EAEX0sB,EAAIM,MAAJ,GAEH,EA1BD,cACA,WACA,Q,qFCWO,SAASF,EAAgBG,EAAMT,GAChCU,UAAUC,WAdhB,SAA6BX,EAAUS,GACrCC,UAAUC,WAAWF,EAAMT,EAC5B,CAaGY,CAAoBZ,EAAUS,GAXlC,SAAiCT,EAAUS,GACzC,MAAMI,EAAeluB,OAAOxR,SAAS63B,cAAc,KACnD6H,EAAaC,SAAWd,EACxBa,EAAaxrB,KAAO1C,OAAOouB,IAAIC,gBAAgBP,GAC/Ct/B,SAASk+B,KAAKC,YAAYuB,GAC1BA,EAAaxN,QACblyB,SAASk+B,KAAK5F,YAAYoH,EAC3B,CAMGI,CAAwBjB,EAAUS,EAErC,C,mFAEM,SAAqBT,EAAU34B,EAAS4F,GAE7CqzB,EADa,IAAIY,KAAK,CAAC75B,GAAU4F,GACX+yB,EACvB,C,kB1BxBD7hC,EAAOD,QAAU,C,KhFEfC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAa,EAAQ,QAAU,EAAQ,QAAU,EAAQ,Q,4ICD1F,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,oB8ElFrDhC,EAAOD,QAAU,C,oB4BAjBC,EAAOD,QAAUijC,C,mBhCAjBhjC,EAAOD,QAAU,C,0NiCEjB,Y,2GCFA,cACA,WACA,QACA,QACA,SAEA,Y,yDAEQkjC,EAAgCC,EAAAA,QAAhCD,WAAYE,EAAoBD,EAAAA,QAApBC,gBAEdC,EAAO,CACXC,SAAU,IACVC,QAAS,UACTC,UAAW,YACXC,WAAY,cAKd,SAASC,EAAOC,EAAUC,EAAWC,EAASC,GAAY,GACxD,MAAMC,EAAgBJ,GAAY,GAC5BK,EAAiBJ,GAAa,EAC9BK,EAAeJ,GAAW,EAC1B16B,EAAU4kB,EAAAA,QAAE8L,SAAS,CACzBiK,aACCC,EAAcC,IAEjB,OAAIA,EAAiBC,EACZlW,EAAAA,QAAEC,QAAQ,CACf+V,EAAc7d,MAAM,EAAG8d,GACvBD,EAAc7d,MAAM8d,EAAiB,EAAGC,EAAe,GACvD96B,EACA46B,EAAc7d,MAAM+d,EAAe,KAInCD,EAAiBC,EACZlW,EAAAA,QAAEC,QAAQ,CACf+V,EAAc7d,MAAM,EAAG+d,GACvB96B,EACA46B,EAAc7d,MAAM+d,EAAcD,GAClCD,EAAc7d,MAAM8d,EAAiB,KAIlCL,CACR,CAED,MAAMO,EACJngC,WAAAA,GACEK,KAAK+/B,WAAaC,EAAAA,QAAGC,YAAY,EAClC,EAiBI,MAAMC,UAAsBC,EAAAA,aACjC3H,UAAAA,CAAWz3B,GACTw4B,MAAMf,WAAWz3B,GACjBf,KAAKi5B,SAAWtP,EAAAA,QAAEsP,SAAS,mBAC3Bj5B,KAAKogC,gBAAkBr/B,EAAQq/B,gBAC/BpgC,KAAKqgC,UAAYt/B,EAAQs/B,WAAa1W,EAAAA,QAAE2W,KACxCtgC,KAAK6vB,UAAY9uB,EAAQ8uB,UACzB7vB,KAAKugC,gBAAkBx/B,EAAQw/B,iBAAmB5W,EAAAA,QAAE2W,MACpD,IAAAE,0BAAyBxgC,KAAM,mBAC/BA,KAAKygC,+BAAiCzgC,KAAKygC,+BAA+BnjC,KAAK0C,KAChF,CAED,aAAI0gC,GAAc,OAAOZ,CAAyB,CAElD,aAAI16B,GACF,MAAO,qBACR,CAED,YAAI3E,GAAa,OAAOkgC,EAAAA,OAAwB,CAEhD,UAAIxM,GACF,MAAO,CACL,2CAA4C,aAC5C,4CAA6C,cAC7C,uCAAwC,SACxC,0CAA2C,YAC3C,4CAA6C,cAC7C,0CAA2C,YAC3C,2DAA4D,6BAE/D,CAEDJ,QAAAA,EAAS,YACP6M,EAAc,GADP,eAEPC,EAAiB,GAFV,WAGPd,GAAa,GACX,CAAC,GAgBH,OAfApW,EAAAA,QAAEwB,KAAKyV,GAAa,CAACE,EAAQ10B,KAC3B4yB,EAAgBh/B,KAAO,oBAAmBoM,IAASpM,KAAKogC,iBAAiBrM,SAAS+M,EAAlF,IAEFnX,EAAAA,QAAEwB,KAAK0V,GAAgB,CAACC,EAAQ10B,KAC9B4yB,EAAgBh/B,KAAO,uBAAsBoM,IAASpM,KAAKogC,iBAAiBrM,SAAS+M,EAArF,IAGF9gC,KAAKM,MAAM4vB,IAAI,CACb6Q,kBAAmBH,EAAY1hC,OAC/B8hC,qBAAsBH,EAAe3hC,OACrC+5B,SAAUj5B,KAAKi5B,WAGjBj5B,KAAKihC,UAAUlB,WAAWA,GAEnB//B,IACR,CAEDmwB,QAAAA,GACE,MAAM4Q,EAAoB/gC,KAAKM,MAAM3D,IAAI,qBACnCqkC,EAAuBhhC,KAAKM,MAAM3D,IAAI,wBAK5C,MAAO,CACLikC,YAJkBjX,EAAAA,QAAEuX,MAAMH,GAAmB30B,GAASpM,KAAKq0B,SAAU,oBAAmBjoB,KAAS+jB,aAKjG0Q,eAJqBlX,EAAAA,QAAEuX,MAAMF,GAAsB50B,GAASpM,KAAKq0B,SAAU,uBAAsBjoB,KAAS+jB,aAM7G,CASDsQ,8BAAAA,CAA+BnuB,GAC7B,MACM6uB,EADcnhC,KAAKu2B,GAAG6K,cAAc,mBACdC,wBAEtBC,EAAahvB,EAAEivB,MACfC,EAAYnxB,OAAOoxB,SAAW5iC,SAAS6iC,gBAAgBF,UACvDG,EAAiBR,EAAQpiB,IAAMyiB,EAC/BI,EAAoBT,EAAQU,OAASL,EAEvCF,GAAcK,EAChB3hC,KAAK8hC,YAAY,CAAE/iB,KAxIA,IAyIVuiB,GAAcM,EACvB5hC,KAAK8hC,YAAY,CAAE/iB,IA1IA,IA4InB/e,KAAK+hC,YAER,CAEDC,WAAAA,CAAY1vB,GACNA,EAAE2vB,cAAcC,cAElB5vB,EAAE2vB,cAAcC,aAAaC,QAAQ,OAAS,QAAO7vB,EAAEQ,OAAO+jB,QAAQzqB,SAAW,UAGnFpM,KAAK6gC,eAAiB7gC,KAAKmwB,WAAW0Q,eACtC7gC,KAAKw/B,UAAYxmB,SAAS1G,EAAEQ,OAAO+jB,QAAQzqB,MAAO,IAClDpM,KAAKoiC,mBACN,CAED,cAAIC,GACF,YAA0BrnB,IAAnBhb,KAAKw/B,SACb,CAED8C,UAAAA,CAAWhwB,GACTA,EAAE6f,iBACF7f,EAAE0e,kBACF,MAAMuR,EAAaviC,KAAK0xB,EAAEpf,EAAEQ,QAAQ0vB,QAAS,MAAKxiC,KAAKi5B,gDAAgD,GACvG,GAAIsJ,EAAY,CACd,MAAM9C,EAAUzmB,SAASupB,EAAW1L,QAAQzqB,MAAO,IACnD0yB,EAAW9+B,KAAM,CACf6gC,eAAgBvB,EAAOt/B,KAAK6gC,eAAgB7gC,KAAKw/B,UAAWC,GAAS,GACrEM,WAAYN,GAEf,CACF,CAEDgD,MAAAA,CAAOnwB,GACLA,EAAE6f,iBACF7f,EAAE0e,kBACF,MAAMuR,EAAaviC,KAAK0xB,EAAEpf,EAAEQ,QAAQ0vB,QAAS,MAAKxiC,KAAKi5B,gDAAgD,GACvG,GAAIsJ,EAAY,CACd,MAAM9C,EAAUzmB,SAASupB,EAAW1L,QAAQzqB,MAAO,IACnD0yB,EAAW9+B,KAAM,CACf6gC,eAAgBvB,EAAOt/B,KAAK6gC,eAAgB7gC,KAAKw/B,UAAWC,KAE9Dz/B,KAAK0iC,YAAYjD,EAASz/B,KAAKw/B,UAChC,QAEMx/B,KAAKw/B,iBACLx/B,KAAK6gC,cACb,CAED8B,SAAAA,CAAUrwB,GACRA,EAAE6f,iBACF7f,EAAE0e,kBACFhxB,KAAKihC,UAAUlB,YAAY,GAC3B//B,KAAK4iC,mBACL5iC,KAAKqgC,WACN,CAEDwC,WAAAA,CAAYvwB,GACV,MAAMiwB,EAAaviC,KAAK0xB,EAAEpf,EAAEwwB,eAEQ,MAAhCP,EAAWnR,KAAK,cAClBpxB,KAAKw/B,WAAa,EAElBx/B,KAAK0xB,EAAG,MAAK1xB,KAAKi5B,mEAAmE8J,YAAY,YAAYlR,WAAW,iBACxH7xB,KAAK0xB,EAAG,MAAK1xB,KAAKi5B,8DAA8D7H,KAAK,WAAY,MACjGmR,EAAWnR,KAAK,WAAY,KAE/B,CAQD4R,MAAAA,CAAOjiC,GACef,KAAKu2B,GAAG6K,cAAc,mBAC9B6B,SAASliC,EACtB,CASD+gC,WAAAA,CAAY/gC,EAASmiC,EAAsB,IACzC,QAA2BloB,IAAvBhb,KAAKmjC,cACP,OAEF,MAAMC,EAAU3G,aAAY,KAC1Bz8B,KAAKgjC,OAAOjiC,EAAZ,GACCmiC,GACHljC,KAAKmjC,cAAgBC,CACtB,CAEDrB,UAAAA,GACM/hC,KAAKmjC,gBACPrG,cAAc98B,KAAKmjC,eACnBnjC,KAAKmjC,mBAAgBnoB,EAExB,CAEDonB,iBAAAA,GACEvjC,SAASwkC,iBAAiB,WAAYrjC,KAAKygC,+BAC5C,CAEDmC,gBAAAA,GACE5iC,KAAK+hC,aACLljC,SAASykC,oBAAoB,WAAYtjC,KAAKygC,+BAC/C,CAQD8C,SAAAA,CAAUjxB,GACR,GAAIA,EAAEQ,SAAWR,EAAEwwB,cACjB,OAGF,MAAMU,EAAoB,IAAIC,OAAQ,IAAGjnC,OAAOuT,OAAOkvB,GAAMrgC,KAAK,SAC5D8kC,EAAapxB,EAAEjV,IACrB,IAAKmmC,EAAkB3a,KAAK6a,GAC1B,OAGFpxB,EAAE6f,iBACF7f,EAAE0e,kBAEF,MAAMuR,EAAaviC,KAAK0xB,EAAEpf,EAAEQ,QACtB1G,EAAQ4M,SAAS1G,EAAEQ,OAAO+jB,QAAQzqB,MAAO,IAC/C,OAAQs3B,GACN,KAAKzE,EAAKC,SACJqD,EAAWoB,SAAS,aACtBpB,EAAWQ,YAAY,YACvBR,EAAW1Q,WAAW,iBACtBlI,EAAAA,QAAEia,OAAM,KACN5jC,KAAK6jC,SAAS,CACZ59B,OAAQ,WACR69B,aAAc9jC,KAAKw/B,UACnBuE,WAAY33B,IAEdpM,KAAKw/B,WAAa,CAAlB,MAGFx/B,KAAKw/B,UAAYpzB,EACjBm2B,EAAW/H,SAAS,YACpB+H,EAAWnR,KAAK,gBAAiB,QACjCzH,EAAAA,QAAEia,OAAM,IAAM5jC,KAAK6jC,SAAS,CAC1B59B,OAAQ,WACR69B,aAAc9jC,KAAKw/B,eAGvB,MACF,KAAKP,EAAKG,UACRp/B,KAAK6gC,eAAiB7gC,KAAKmwB,WAAW0Q,eAClCz0B,EAAQpM,KAAK6gC,eAAe3hC,OAAS,IACnCc,KAAKw/B,WAAa,GACpBV,EAAW9+B,KAAM,CACf6gC,eAAgBvB,EAAOt/B,KAAK6gC,eAAgBz0B,EAAOA,EAAQ,KAE7DpM,KAAK0iC,YAAYt2B,EAAQ,EAAGA,GAAO,GACnCud,EAAAA,QAAEia,OAAM,IAAM5jC,KAAK6jC,SAAS,CAC1B59B,OAAQ,WACR69B,aAAc9jC,KAAKw/B,UACnBuE,WAAY33B,EAAQ,OAGtBpM,KAAK0iC,YAAYt2B,EAAQ,EAAGA,IAGhC,MACF,KAAK6yB,EAAKE,QACRn/B,KAAK6gC,eAAiB7gC,KAAKmwB,WAAW0Q,eAClCz0B,EAAQ,IACNpM,KAAKw/B,WAAa,GACpBV,EAAW9+B,KAAM,CACf6gC,eAAgBvB,EAAOt/B,KAAK6gC,eAAgBz0B,EAAOA,EAAQ,KAE7DpM,KAAK0iC,YAAYt2B,EAAQ,EAAGA,GAAO,GACnCud,EAAAA,QAAEia,OAAM,IAAM5jC,KAAK6jC,SAAS,CAC1B59B,OAAQ,WACR69B,aAAc9jC,KAAKw/B,UACnBuE,WAAY33B,EAAQ,OAGtBpM,KAAK0iC,YAAYt2B,EAAQ,EAAGA,IAGhC,MACF,KAAK6yB,EAAKI,WACRr/B,KAAKgkC,eACFC,GAAG73B,GACHvB,KAAK,cACL6lB,QAAQ,SAKhB,CAQDwT,0BAAAA,CAA2B5xB,GACzBA,EAAE6f,iBACF7f,EAAE0e,kBACF,MAAM5kB,EAAQ4M,SAAS1G,EAAEwwB,cAAcjM,QAAQzqB,MAAO,IACtDpM,KAAK0iC,YAAYt2B,EAClB,CAED43B,YAAAA,GACE,OAAOhkC,KAAK0xB,EAAG,MAAK1xB,KAAKi5B,+CAC1B,CAEDyJ,WAAAA,CAAYjD,EAASD,EAAW2E,GAAW,GACzC,MAAMC,EAAQpkC,KAAKgkC,eACnB,QAAkBhpB,IAAdwkB,EAAyB,CAC3B,MAAM6E,EAAWD,EAAMH,GAAGzE,GAC1B6E,EAASjT,KAAK,WAAY,MACtB+S,IACFE,EAAStB,YAAY,YACrBsB,EAASxS,WAAW,iBAEvB,CACD,MAAMyS,EAASF,EAAMH,GAAGxE,GACpB0E,IACFG,EAAO9J,SAAS,YAChB8J,EAAOlT,KAAK,gBAAiB,SAE/BkT,EAAOlT,KAAK,WAAY,KACxBkT,EAAO5T,QAAQ,QAChB,CAEDmT,QAAAA,EAAS,OACP59B,EADO,aAEP69B,EAFO,WAGPC,IAEmB/jC,KAAK0xB,EAAG,MAAK1xB,KAAKi5B,2BAC1BxoB,KAAKzQ,KAAKugC,gBAAgB,CACnCt6B,SACA69B,eACAC,eAEH,E,uCCxZH,IAAIvR,EAAMC,EAAQ,IAYlB52B,EAAOD,QAVP,SAAkB82B,GAAS,IAAIC,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EASkQ,OAT9P,SAAUpyB,EAAOszB,GAAOjB,EAAWA,+BAAqDH,EAAIpB,KAAK,KAAM9wB,EAAM24B,UAAU,GAAM,GAAM,kBAAoBzG,EAAIpB,KAAK,aAAcwC,EAAK/D,WAAW,GAAM,GAAS,IAE9T,IADA,IAAIzjB,EAAQ,EACLA,EAAQ9L,EAAMygC,mBACrBpO,EAAWA,EAAW,iFAAuGH,EAAIpB,KAAK,WAAa,oBAAmBhlB,KAAW,GAAM,GAAS,eAGhM,IADAA,EAAQ,EACDA,EAAQ9L,EAAM0gC,sBACrBrO,EAAWA,oFAA+GH,EAAIpB,KAAK,aAAchlB,GAAO,GAAM,GAAMomB,EAAIpB,KAAK,WAAuB,IAAVhlB,EAAc,GAAK,GAAI,GAAM,GAAMomB,EAAIpB,KAAK,YAAc,2DAA0DhlB,MAAU,GAAM,GAAnTumB,sBAAoWH,EAAIpB,KAAK,WAAa,uBAAsBhlB,KAAW,GAAM,GAAS,eAErbumB,GAAsB,qGAT2F,EAS6D12B,KAAK+D,KAAK,UAAW4yB,EAAgBA,EAAgBtyB,MAAqB,qBAARA,MAAoBA,WAAM0a,EAAU,SAAU4X,EAAgBA,EAAgBgB,KAAmB,qBAAPA,KAAmBA,UAAK5Y,GAAoB2X,CAAU,C,mBCXhY92B,EAAOD,QAAU2oC,C,kBxGAjB1oC,EAAOD,QAAU,C,mByGAjBC,EAAOD,QAAU4oC,C,kEhHAjB,IAAiDhpC,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,aACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,qBgFVAhC,EAAOD,QAAU,C,gBzEAjBC,EAAOD,QAAU,C,gBiBAjBC,EAAOD,QAAU,C,2IyFAjB,0J,gFCAA,0J,wGC4BO,SAA+B6oC,GAAK,YACzCC,EADyC,UAEzCC,EAFyC,qBAGzCC,EAHyC,iBAIzCC,GACE,CAAC,GAAG,eACNC,EAAiBnb,EAAAA,QAAEob,UACjB,CAAC,GAKH,SAASC,GAAO,KAAE7mC,EAAF,QAAQ4C,IACtB,GAAI5C,EAAM,CACR,MAAM8mC,EAAS9mC,EAAKge,MAAM,6CAC1B,IAAKwN,EAAAA,QAAEnpB,QAAQykC,GACb,OAAO,IAAArmC,MAAK8lC,EAAc,GAAEO,EAAO,MAAM3O,EAAUv1B,uBAA6BmkC,EAAQnkC,KAE3F,CACD,OAAO,IAAAnC,MAAK8lC,EAAc,cAAaE,eAAkCD,MAAcrO,EAAUv1B,uBAA6BmkC,EAAQnkC,KACvI,CAED,SAASokC,EAAgBC,EAAYC,EAAKC,EAAsB,MAC1Db,EAAI,iBACNA,EAAI,eAAec,oBAAoBH,EAAY,KAAM,GAAIE,GAC7D3b,EAAAA,QAAEwB,KAAKka,GAAKtnB,GAAM0mB,EAAI,eAAec,oBAAoBH,EAAYrnB,EAAI,GAAIunB,KAEhF,CAED,SAASE,EAAkB/a,EAAQhP,EAAQ2pB,EAAYC,EAAKC,GAC1D,OAAK3b,EAAAA,QAAEnpB,QAAQiqB,IAOf0a,EAAgBC,EAAYC,EAAKC,GAE1B7pB,GARExK,EAAAA,QAAQw0B,OAAO,CACpBC,OAAQjqB,EACRgP,UAOL,EAhCG,IAAA9sB,gBAAe8mC,EAAK,sBAkCxB9a,EAAAA,QAAEwB,KAAK0Z,GAAkB,CAACc,EAAStpC,MACjC,IAAAupC,OAAMnB,EAAIoB,OAAOC,QAAS,SAAQzpC,KAASspC,EAA3C,KAGF,IAAAI,qBAAoBtB,EAAK,mBAAoB,MAAO,MAEhDuB,EACEvB,EAAIwB,oBADND,mBAqIF,OAlIAA,EAAmBtoC,UAAUwoC,WAAa,SAAoBC,EAAOplC,EAAU,CAAC,GAAG,MACzE8kC,EAAW7lC,KAAK2K,KAAhBk7B,OAER,GAAI9kC,EAAQqlC,MAAO,CACjB,GAAIzc,EAAAA,QAAE0c,YAAYF,EAAMG,MACtB,MAAM,IAAI7pB,MAAM,iDAGlB,MAAM6pB,EAAO3c,EAAAA,QAAExd,IAAIg6B,EAAMG,MAAOC,IAC9B,MAAMC,GAAU,IAAAC,WAAUZ,E,uUAAV,EAAoBx0B,GAAI80B,EAAM90B,IAAOk1B,EAAMh3B,OAG3D,MAAO,CACL5E,KAAM,OACN0xB,IAJU2I,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAKpCwO,KAAM,CAAEm3B,QAASF,GAHnB,IAOF,OAAOG,EAAAA,MAAMP,MAAMzc,EAAAA,QAAE8L,SAAS,CAAE6Q,OAAMnoC,KAAM4C,EAAQ5C,MAAQ4C,IAAUqQ,MAAKw1B,GACzE31B,EAAAA,QAAQ9E,IAAIy6B,GAAW,CAAC3I,EAAU7xB,KAAU,SACd,IAAAyR,OAAMogB,EAAS1uB,MAAnCs3B,EADkC,EAClCA,QAGR,OAAOrB,EAJmC,EACzB/a,QACL,IAAAqc,aAAYD,EAASV,EAAMG,KAAKl6B,GAAOmD,MAKjDxO,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,KAChC,CAAC8pC,EAAM90B,IAAM80B,EAAMG,KAAK,GAAG/2B,KAAK8B,IAJlC,MAQDD,MAAK21B,GAAmBpd,EAAAA,QAAEmK,WAAW/yB,EAAQimC,iBAC1CjmC,EAAQimC,gBAAgBD,GACxBA,GACP,CAED,MAAME,GAAc,IAAAC,qBAAoBf,EAAM90B,GAAI80B,EAAON,GACnDa,GAAU,IAAAD,WAAUZ,EAAQoB,GAElC,OAAON,EAAAA,MAAMQ,KAAKnC,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAAY+jC,EAAe,CAAEv1B,KAAM,CAAEm3B,cAC9Et1B,MAAMg2B,IAAQ,SACe,IAAAvpB,OAAMupB,GAA1BP,EADK,EACLA,QAASpc,EADJ,EACIA,OACX4c,GAAM,IAAAP,aAAYD,EAASV,GAMjC,OAJIU,GAAWA,EAAQ3nC,SAAU,IAAAooC,mBAAkBnB,EAAON,EAAO0B,cAC/DF,EAAIh2B,GAAKw1B,EAAQ,GAAGx1B,IAGfm0B,EAAkB/a,EAAQ4c,EAAKtmC,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,KAAM,CAAC8pC,EAAM90B,IAAnF,GAEL,EAED20B,EAAmBtoC,UAAU8pC,eAAiB,SAC5CC,EACAC,EACA3mC,EAAU,CAAC,GACX,MACQ8kC,EAAW7lC,KAAK2K,KAAhBk7B,OACFoB,EAActd,EAAAA,QAAExd,IACpBs7B,GACA,CAAC1pB,EAAI3R,KAAU,IAAA86B,qBAAoBnpB,EAAI2pB,EAAUt7B,GAAQy5B,KAErDa,GAAU,IAAAD,WAAUZ,EAAQoB,GAElC,OAAON,EAAAA,MACJQ,KAAKnC,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAAY4oB,EAAAA,QAAE8L,SAASqP,EAAe,CAAEv1B,KAAM,CAAEm3B,aAAc3lC,IAC7FqQ,MAAMg2B,IAAQ,SACe,IAAAvpB,OAAMupB,GAA1BP,EADK,EACLA,QAASpc,EADJ,EACIA,OACXkd,GAAmB,IAAAb,aAAYD,EAASa,GAI9C,OAFAvC,EAAgBpkC,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,KAAMorC,GAE/C9d,EAAAA,QAAExd,IAAIw7B,GAAkB,CAACxB,EAAO/5B,KAAR,CAC7Bs5B,OAAQS,EACR1b,QAAQ,IAAAmd,qBAAoBnd,EAAQre,MAFtC,GAKL,EAED45B,EAAmBtoC,UAAUmqC,WAAa,SAAoB1B,EAAOplC,EAAU,CAAC,GAAG,MACzE8kC,EAAW7lC,KAAK2K,KAAhBk7B,OACFa,GAAU,IAAAD,WAAUZ,EAAQM,GAElC,OAAOQ,EAAAA,MACJQ,KAAKnC,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAAY4oB,EAAAA,QAAE8L,SAASqP,EAAe,CAAEv1B,KAAM,CAAEm3B,aAAc3lC,IAC7FqQ,MAAMg2B,IAAQ,SACe,IAAAvpB,OAAMupB,GAA1BP,EADK,EACLA,QAGR,OAAOrB,EAJM,EACI/a,QACL,IAAAqc,aAAYD,EAASV,GAEKplC,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,KAAM,CAAC,MAA7E,GAEL,EAED2pC,EAAmBtoC,UAAUoqC,eAAiB,SAAwBJ,EAAW3mC,EAAU,CAAC,GAAG,MACrF8kC,EAAW7lC,KAAK2K,KAAhBk7B,OACFa,GAAU,IAAAD,WAAUZ,EAAQ6B,GAElC,OAAOf,EAAAA,MACJQ,KAAKnC,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAAY4oB,EAAAA,QAAE8L,SAASqP,EAAe,CAAEv1B,KAAM,CAAEm3B,aAAc3lC,IAC7FqQ,MAAMg2B,IAAQ,SACe,IAAAvpB,OAAMupB,GAA1BP,EADK,EACLA,QAASpc,EADJ,EACIA,OACXkd,GAAmB,IAAAb,aAAYD,EAASa,GAI9C,OAFAvC,EAAgBpkC,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,MAEzCstB,EAAAA,QAAExd,IAAIw7B,GAAkB,CAACxB,EAAO/5B,KAAR,CAC7Bs5B,OAAQS,EACR1b,QAAQ,IAAAmd,qBAAoBnd,EAAQre,MAFtC,GAKL,EAED45B,EAAmBtoC,UAAUqqC,YAAc,SAAqBhqB,EAAIhd,EAAU,CAAC,GAAG,MACxE8kC,EAAW7lC,KAAK2K,KAAhBk7B,OACFM,GAAQ,IAAA6B,oBAAmBnC,EAAOrlB,OAAQzC,EAAIhd,EAAQknC,UACtDvB,GAAU,IAAAD,WAAUZ,EAAQM,GAElC,OAAOQ,EAAAA,MACJQ,KAAKnC,EAAO,CAAE7mC,KAAM6B,KAAK7B,KAAM4C,YAAY4oB,EAAAA,QAAE8L,SAASqP,EAAe,CAAEv1B,KAAM,CAAEm3B,aAAc3lC,IAC7FqQ,MAAMg2B,IAAQ,SACe,IAAAvpB,OAAMupB,GAA1BP,EADK,EACLA,QAASpc,EADJ,EACIA,OACX4c,GAAM,IAAAP,aAAYD,EAASV,GAC3Bf,EAAarkC,EAAQqkC,YAAcplC,KAAK2K,KAAKtO,KAEnD,OAAOmpC,EAAkB/a,EAAQ4c,EAAKjC,EAAY,CAACrnB,IAAK,IAAAmqB,wBAAuB9C,EAAY,CAACrnB,IAA5F,GAEL,EAGM,CAAC,CAvImC,MAyI9C,EAnND,cACA,UACA,QAIA,QASA,QACA,OACA,QACA,Q,2KAEA,SAASmnB,EAAQnkC,GACf,OAAQA,IAAY4oB,EAAAA,QAAEnpB,QAAQO,EAAQonC,MAAW,IAAGpnC,EAAQonC,OAAU,EACvE,CAED,SAAS7R,EAAUv1B,GACjB,OAAQA,IAAY4oB,EAAAA,QAAEnpB,QAAQO,EAAQyf,QAAa,GAAEzf,EAAQyf,UAAa,EAC3E,C,gBC1BD3kB,EAAOD,QAAUwsC,C,gBCAjBvsC,EAAOD,QAAUysC,C,gBCAjBxsC,EAAOD,QAAU0sC,C,gBCAjBzsC,EAAOD,QAAU2sC,C,gHCAjB,MAAMC,EAAmB,CACvB,yBAA0B,YAC1B,iBAAkB,YAClB,gBAAiB,Y,yBAGmB,CAACpD,EAAYC,KACjD,MAAMoD,EAAarD,EAAWsD,SAAS,SAAWF,EAAiBpD,GAAe,GAAEA,KACpF,OAAKqD,EAGEpD,EAAIl5B,KAAI4R,GAAO,GAAE0qB,KAAc1qB,OAF7B,EAET,C,KxHTAliB,EAAOD,QAAUJ,EAAQ,EAAQ,QAAa,EAAQ,QAAe,EAAQ,QAAiD,EAAQ,QAA8B,EAAQ,QAAqC,EAAQ,QAA6B,EAAQ,M,yBAFhQ,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,OACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBKAjBvsC,EAAOD,QAAU+sC,C,mBCAjB9sC,EAAOD,QAAUgtC,C,mMCAjB,W,gGCIA,eACA,W,yDAEO,MACLjpC,WAAAA,CAAYoB,IACV,aAAYf,MACRe,IACF,aAAaf,KAAMe,EAEtB,E,oGCTH,I,EAAA,G,EAAA,O,2BAEA,QAKA,QAEA,Q,UAgBgB0jC,IACd,GAAIA,EAAIoE,MACN,OAIF,MAAMC,EAAa,IAAIC,KAcvB,IAAAhD,qBAAoBtB,EAAK,QAAS,MAChC,MAAMoE,EAAQ,IAAIG,EAAAA,SACZC,GAAO,IAAAC,YAAWL,GAClBM,GAAgB,IAAAC,qBAAoBH,GAQ1C,MAAMI,UAAkBJ,EAQtBtpC,WAAAA,EAAY,UACV2pC,IAEA/P,MAAM,CACJl9B,KAAMgtC,EAAUE,cAAcD,MAGhC,IAAAvD,qBAAoB/lC,KAAM,YAAaspC,IAEvC,IAAAvD,qBAAoB/lC,KAAM,QAASspC,EAAUn9B,KAAIq9B,GAAYC,EAAYD,EAAUxpC,KAAK0pC,aACzF,CAOD,oBAAOH,CAAcD,GAEnB,MAAMK,EAAcL,EAAUn9B,KAAI9P,GAChCwsC,EAAMe,qBAAqBvtC,EAAM2D,KAAK0pC,aAAY7nB,OAEpD,MAAQ,GAAEgoB,EAAAA,qBAAqBF,EAAY/qC,KAAK,OACjD,EAGH,MAAM6qC,GAAc,IAAAK,mBAAkBhB,EAAYD,EAAOQ,GACnDU,GAAW,IAAAC,gBAAeP,GAC1BQ,GAAY,IAAAC,iBAAgBT,GASlC,MAAMU,UAAmBlB,EASvBtpC,WAAAA,EAAY,KACVtD,EADU,WAEVkrC,EAFU,aAGV6C,IAEA7Q,MAAM,CAAEl9B,UAER,IAAA0pC,qBAAoB/lC,KAAM,aAAcqqC,EAAAA,kBAAkBpuC,KAAK+D,KAAMunC,EAAYwC,IAC7EK,GACFzgB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,eAAgBqE,GACpCE,uBAAuB,YAAY,IAAMb,EAAYzpC,KAAKoqC,aAAcpqC,KAAK0pC,aAC7E3sC,OAEN,CAEDwtC,aAAAA,CAAchD,GACZ5d,EAAAA,QAAEqK,OAAOh0B,KAAKunC,WAAY8C,EAAAA,kBAAkBpuC,KAAK+D,KAAMunC,EAAYwC,GACpE,EAyDH,MAAMS,GAAiB,IAAAC,sBAAqBN,EAAYV,IAgBxD,IAAAiB,+BAA8BzB,EAAM,kBATpC,WACE,OAAO,IAAIuB,EAAe,CAAEG,gBAAiB3qC,KAAK3D,MACnD,IAeD,MAAMuuC,UAAqB3B,EASzBtpC,WAAAA,EAAY,KACVtD,EADU,WAEVq/B,EAFU,eAGVmP,IAEAtR,MAAM,CAAEl9B,SAERstB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,aAAc+E,EAAAA,kBAAkB7uC,KAAK+D,KAAM07B,EAAYuO,IAC3ElE,oBAAoB,iBAAkB8E,GACtCP,uBAAuB,cAAc,IAAMb,EAAYoB,EAAgB7qC,KAAK0pC,aAC5E3sC,OACJ,EAqDH,OAAO4sB,EAAAA,QAAE+E,MAAMma,GACZ9C,oBAAoB,WAAYgE,GAChChE,oBAAoB,YAAakE,GACjClE,oBAAoB,OAAQkD,GAC5BlD,oBAAoB,gBAAiBoD,GACrCpD,oBAAoB,YAAasD,GACjCtD,oBAAoB,aAAcoE,GAClCpE,oBAAoB,cA3JvB,cAA0BoE,KA4JvBpE,oBAAoB,aAjJvB,cAAyBoE,EAUvBxqC,WAAAA,EAAY,KACVtD,EADU,WAEVkrC,EAFU,aAGV6C,EAHU,IAIV/sC,IAQA,GANAk8B,MAAM,CACJl9B,OACAkrC,aACA6C,iBAGE/sC,EACFssB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,MAAO1oC,GAC3B0oC,oBAAoB,cAAe/lC,KAAKunC,WAAWvnC,KAAK3C,MACxDN,YACE,KAAIqtC,EAOT,MAAM,IAAI3tB,MAAM,oDALhBkN,EAAAA,QAAE+E,MAAM1uB,MACLsqC,uBAAuB,OAAO,IAAMtqC,KAAK+qC,SAAS1tC,MAClDitC,uBAAuB,eAAe,IAAMtqC,KAAK+qC,SAASC,cAC1DjuC,OAGJ,CACF,IA8GAgpC,oBAAoB,iBAAkByE,GACtCzE,oBAAoB,eAAgB6E,GACpC7E,oBAAoB,aAvDvB,cAAyB6E,EASvBjrC,WAAAA,EAAY,KACVtD,EADU,WAEVq/B,EAFU,eAGVmP,IAEAtR,MAAM,CAAEl9B,OAAMq/B,aAAYmP,kBAC3B,IAyCA9E,oBAAoB,eAhCvB,cAA2B6E,EASzBjrC,WAAAA,EAAY,KACVtD,EADU,WAEVq/B,EAFU,eAGVmP,IAEAtR,MAAM,CAAEl9B,OAAMq/B,aAAYmP,kBAC3B,IAkBA9tC,OA3P6B,KAAlC,C,oGC7CF,cACA,QAIA,QAEA,W,mDAgBA,SAASkuC,EAAkBpF,GAAQ,MACzBqF,EAAkCrF,EAAlCqF,iBAAkBC,EAAgBtF,EAAhBsF,YAC1B,OAAID,EACKA,EAAiBE,SAQnBD,CACR,CAED,SAASE,EAAaxF,GAAQ,MACpBqF,EAA0BrF,EAA1BqF,iBAAkB7tC,EAAQwoC,EAARxoC,IAC1B,OAAI6tC,EACKA,EAAiBI,IAQnBjuC,CACR,C,UAEc,CAAConC,GACdqB,UAAU,CAAC,EAGX4D,YAAY,MACV,CAAC,KACH,IAAI,IAAA/rC,gBAAe8mC,EAAK,UACtB,QAGF,aAAYA,GALH,QAaLA,EAAIoE,MALN2B,EARO,EAQPA,eACAe,EATO,EASPA,WACApC,EAVO,EAUPA,cACAqC,EAXO,EAWPA,YACAnC,EAZO,EAYPA,WAGF,IAAAtD,qBAAoBtB,EAAK,SAAU,MACjC,SAASgH,EAAkB5F,GACzB,OAAOA,EAAO6F,KACZ7F,EAAO6F,KAAKnsC,QAAQ,MAAO,KAC3BypC,EAAAA,SAAS2C,iBAlEjB,SAAuB9F,GAAQ,MACrBqF,EAA2BrF,EAA3BqF,iBAAkB7uC,EAASwpC,EAATxpC,KAC1B,OAAI6uC,EACKA,EAAiB9mC,KAQnB/H,CACR,CAsDiCuvC,CAAc/F,GAAS6D,EACpD,CAQD,SAASmC,EAAYC,EAAcC,GACjC,IAAIlG,EAAS,KACT2D,EAAW,KAEf,MAAsB,UAAlBuC,EAASphC,KACJ6/B,EAAewB,mBAAmBH,EAAYC,EAAcC,EAAS3H,QACnE2H,EAASE,MACX5C,EAAUE,cAAcwC,EAASE,MAAM9/B,KAAIxN,GAAQktC,EAAYC,EAAcntC,OACzD,WAAlBotC,EAASphC,MACfk7B,EAAWkG,EAAXlG,OAEH2D,EAAWiC,EAAkB5F,GAAUkG,IAGvCvC,EAAWuC,EAASphC,KAGlBk7B,GACFiG,EAAapkB,KAAKme,GAGb2D,EACR,CAsDD,OAnBA7f,EAAAA,QAAEwB,KAAK,CACL+gB,OAAQC,OACRC,QAAShxB,OACTva,OAAQua,OACRixB,SAAU30B,KACV40B,QAASthB,QACTuhB,KAAM,OACL,CAACC,EAAQnwC,IAAS,IAAI8sC,EAAc,CAAE9sC,OAAMmwC,aAK/C,IAAIhB,EAAY,CACdnvC,KAAM,SACNkrC,WAAY,CAAC,IAGf5d,EAAAA,QAAEwB,KAAK2a,GA5CP,SAAS2G,EAAiB5G,GACxB,MAAM6G,EAAgBjB,EAAkB5F,GAExC,IAAKpB,EAAIoE,MAAM33B,QAAQw7B,GAAgB,CACrC,MAAMZ,EAAe,GACfvE,EAAa5d,EAAAA,QAAE+E,MAAMmX,EAAO0B,YAC/Bp7B,KAAI,CAAC4/B,EAAU1vC,IAAS,CACvBA,EACA,CAAEmtC,SAAUqC,EAAYC,EAAcC,OAEvCvuC,SACAT,QAEG4N,EAAO,IAAI4gC,EAAW,CAC1BlvC,KAAMqwC,EACNtC,aAAca,EAAkBpF,IAAW,SAC3CxoC,IAAKguC,EAAaxF,GAClB0B,gBAGF,IAAAxB,qBAAoBp7B,EAAM,SAAUk7B,GAEpClc,EAAAA,QAAEwB,KAAK2gB,EAAcW,EACtB,CACF,IAsBM9iB,EAAAA,QAAE+E,MAAM,CAAC,GACbqX,oBAAoB,UAAWD,GAC/BC,oBAAoB,YAAa2D,GACjC3sC,OA5F8B,KAAnC,C,kBvH3EFlB,EAAOD,QAAU,C,KPEfC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,QAA4B,EAAQ,Q,wBAFpI,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,SACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mMWAjB,W,gGCGA,eACA,W,yDAEO,MACLzoC,WAAAA,CAAYoB,IACV,aAAYf,MACRe,IACF,aAAaf,KAAMe,EAEtB,E,oGCTH,I,EAAA,G,EAAA,O,2BAEA,QAMA,QAEA,Q,UAgBgB0jC,IACd,GAAIA,EAAIoE,MACN,OAIF,MAAMC,EAAa,IAAIC,KAcvB,IAAAhD,qBAAoBtB,EAAK,QAAS,MAChC,MAAMoE,EAAQ,IAAIG,EAAAA,SACZC,GAAO,IAAAC,YAAWL,GAClBM,GAAgB,IAAAC,qBAAoBH,GAQ1C,MAAMI,UAAkBJ,EAQtBtpC,WAAAA,EAAY,UACV2pC,IAEA/P,MAAM,CACJl9B,KAAMgtC,EAAUE,cAAcD,MAGhC,IAAAvD,qBAAoB/lC,KAAM,YAAaspC,IAEvC,IAAAvD,qBAAoB/lC,KAAM,QAASspC,EAAUn9B,KAAIq9B,GAAYC,EAAYD,EAAUxpC,KAAK0pC,aACzF,CAOD,oBAAOH,CAAcD,GAEnB,MAAMK,EAAcL,EAAUn9B,KAAI9P,GAChCwsC,EAAMe,qBAAqBvtC,EAAM2D,KAAK0pC,aAAY7nB,OAEpD,MAAQ,GAAEgoB,EAAAA,qBAAqBF,EAAY/qC,KAAK,OACjD,EAGH,MAAM6qC,GAAc,IAAAK,mBAAkBhB,EAAYD,EAAOQ,GACnDU,GAAW,IAAAC,gBAAeP,GAC1BQ,GAAY,IAAAC,iBAAgBT,GASlC,MAAMU,UAAmBlB,EAUvBtpC,WAAAA,EAAY,KACVtD,EADU,WAEVkrC,EAFU,wBAGVoF,EAA0B,GAHhB,aAIVvC,IAEA7Q,MAAM,CAAEl9B,UAER,IAAA0pC,qBAAoB/lC,KAAM,aAAcqqC,EAAAA,kBAAkBpuC,KAAK+D,KAAMunC,EAAYwC,KACjF,IAAAhE,qBAAoB/lC,KAAM,0BAA2B2sC,EAAwB7qB,UAC7E,IAAAwoB,wBAAuBtqC,KAAM,wBAAwB,IAAM2pB,EAAAA,QAAEijB,KAAK5sC,KAAKunC,YAAY,CAAC9pC,EAAUovC,IAAiBljB,EAAAA,QAAEe,SAAS1qB,KAAK2sC,wBAAyBE,OACpJzC,KACF,IAAArE,qBAAoB/lC,KAAM,eAAgBoqC,IAC1C,IAAAE,wBAAuBtqC,KAAM,YAAY,IAAMypC,EAAYzpC,KAAKoqC,aAAcpqC,KAAK0pC,aAEtF,CAEDa,aAAAA,CAAchD,GACZ5d,EAAAA,QAAEqK,OAAOh0B,KAAKunC,WAAY8C,EAAAA,kBAAkBpuC,KAAK+D,KAAMunC,EAAYwC,IAEnE/pC,KAAK2sC,wBAAwBjlB,QAAQiC,EAAAA,QAAEne,KAAK+7B,GAC7C,CAEDuF,uBAAAA,CAAwBvF,GACtBvnC,KAAKuqC,cAAchD,EACpB,EAuDH,MAAMiD,GAAiB,IAAAC,sBAAqBN,EAAYV,IAgBxD,IAAAiB,+BAA8BzB,EAAM,kBATpC,WACE,OAAO,IAAIuB,EAAe,CAAEG,gBAAiB3qC,KAAK3D,MACnD,IAeD,MAAMuuC,UAAqB3B,EASzBtpC,WAAAA,EAAY,KACVtD,EADU,aAEV0wC,EAFU,WAGVrR,EAHU,eAIVmP,IAEAtR,MAAM,CAAEl9B,UAER,IAAA0pC,qBAAoB/lC,KAAM,eAAgB+sC,IAC1C,IAAAhH,qBAAoB/lC,KAAM,aAAc8qC,EAAAA,kBAAkB7uC,KAAK+D,KAAM07B,EAAYuO,KACjF,IAAAlE,qBAAoB/lC,KAAM,iBAAkB6qC,IAC5C,IAAAP,wBAAuBtqC,KAAM,cAAc,IAAMypC,EAAYoB,EAAgB7qC,KAAK0pC,YACnF,EA8EH,OAbA,IAAA3D,qBAAoB8C,EAAO,WAAYkB,IACvC,IAAAhE,qBAAoB8C,EAAO,YAAaoB,IACxC,IAAAlE,qBAAoB8C,EAAO,OAAQI,IACnC,IAAAlD,qBAAoB8C,EAAO,gBAAiBM,IAC5C,IAAApD,qBAAoB8C,EAAO,YAAaQ,IACxC,IAAAtD,qBAAoB8C,EAAO,aAAcsB,IACzC,IAAApE,qBAAoB8C,EAAO,cApK3B,cAA0BsB,MAqK1B,IAAApE,qBAAoB8C,EAAO,aA1J3B,cAAyBsB,EAUvBxqC,WAAAA,EAAY,KACVtD,EADU,WAEVkrC,EAFU,wBAGVoF,EAHU,aAIVvC,EAJU,IAKV/sC,IASA,GAPAk8B,MAAM,CACJl9B,OACAkrC,aACAoF,0BACAvC,iBAGE/sC,GACF,IAAA0oC,qBAAoB/lC,KAAM,MAAO3C,IACjC,IAAA0oC,qBAAoB/lC,KAAM,cAAeA,KAAKunC,WAAWvnC,KAAK3C,UACzD,KAAI+sC,EAKT,MAAM,IAAI3tB,MAAM,qDAHhB,IAAA6tB,wBAAuBtqC,KAAM,OAAO,IAAMA,KAAK+qC,SAAS1tC,OACxD,IAAAitC,wBAAuBtqC,KAAM,eAAe,IAAMA,KAAK+qC,SAASC,aAGjE,CACF,KAyHH,IAAAjF,qBAAoB8C,EAAO,iBAAkB2B,IAC7C,IAAAzE,qBAAoB8C,EAAO,eAAgB+B,IAC3C,IAAA7E,qBAAoB8C,EAAO,aAlE3B,cAAyB+B,EASvBjrC,WAAAA,EAAY,KACVtD,EADU,aAEV0wC,EAFU,WAGVrR,EAHU,eAIVmP,IAEAtR,MAAM,CACJl9B,OACA0wC,eACArR,aACAmP,kBAEH,KA8CH,IAAA9E,qBAAoB8C,EAAO,eArC3B,cAA2B+B,EASzBjrC,WAAAA,EAAY,KACVtD,EADU,aAEV0wC,EAFU,WAGVrR,EAHU,eAIVmP,IAEAtR,MAAM,CACJl9B,OACA0wC,eACArR,aACAmP,kBAEH,IAkBIhC,CA7QyB,KAAlC,C,mBRjDFhtC,EAAOD,QAAU+sC,C,mBCAjB9sC,EAAOD,QAAUgtC,C,oGQGjB,cACA,OACA,QAIA,QAEA,W,mDAgBA,SAASoE,EAAsBnH,GAAQ,MAC7BqF,EAAkCrF,EAAlCqF,iBAAkBC,EAAgBtF,EAAhBsF,YAC1B,OAAID,EACKA,EAAiBE,UAAYF,EAAiBE,SAASM,KAQzDP,CACR,CAED,SAASE,EAAaxF,GAAQ,MACpBqF,EAA0BrF,EAA1BqF,iBAAkB7tC,EAAQwoC,EAARxoC,IAC1B,OAAI6tC,EACKA,EAAiBI,IAQnBjuC,CACR,CAED,SAAS4vC,EAAiCpH,GAAQ,MACxCqF,EAAqBrF,EAArBqF,iBACR,OAAIA,EACKA,EAAiBgC,mBAGnB,EACR,C,UAEc,CAACzI,GACdqB,UAAU,CAAC,EAGX4D,YAAY,MACV,CAAC,KACH,IAAI,IAAA/rC,gBAAe8mC,EAAK,UACtB,QAGF,aAAYA,GALH,QAeLA,EAAIoE,MAPN2B,EARO,EAQPA,eACAe,EATO,EASPA,WACApC,EAVO,EAUPA,cACAqC,EAXO,EAWPA,YACAnC,EAZO,EAYPA,UACA8D,EAbO,EAaPA,WACAC,EAdO,EAcPA,cAGF,IAAArH,qBAAoBtB,EAAK,SAAU,MACjC,SAASgH,EAAkB5F,EAAQ1nC,GAEjC,MAAMkvC,EAAgB1jB,EAAAA,QAAEkL,SAAS12B,IAASA,GAAS0nC,EAAOyH,OAASzH,EAAO6F,KAC1E,OAAO2B,EACLA,EAAa9tC,QAAQ,MAAO,KAC5BypC,EAAAA,SAAS2C,iBA/EjB,SAAuB9F,GAAQ,MACrBqF,EAA2BrF,EAA3BqF,iBAAkB7uC,EAASwpC,EAATxpC,KAC1B,OAAI6uC,EACKA,EAAiB9mC,KAQnB/H,CACR,CAmEiCuvC,CAAc/F,GAAS6D,EACpD,CAQD,SAASmC,EAAYC,EAAcC,GACjC,IAAIlG,EAAS,KACT2D,EAAW,KAEf,OAAKuC,EAIiB,UAAlBA,EAASphC,KACJ6/B,EAAewB,mBAAmBH,EAAYC,EAAcC,EAAS3H,QACnE2H,EAASE,MACX5C,EAAUE,cAAcwC,EAASE,MAAM9/B,KAAIxN,GAAQktC,EAAYC,EAAcntC,OACzD,WAAlBotC,EAASphC,MACfk7B,EAAWkG,EAAXlG,OAEH2D,EAAWiC,EAAkB5F,GAAUkG,IAIvCvC,EAH2B,WAAlBuC,EAASphC,MAAqBohC,EAASwB,MAGpCxB,EAASuB,OAAS,UAAUruC,MAAM,KAAKL,KAAK,KAG7CmtC,EAASphC,KAGlBk7B,GACFiG,EAAapkB,KAAKme,GAGb2D,GAxBE,IAyBV,CAED,SAASgE,EAAqBC,EAAMC,EAAO/iC,EAAM+hC,EAAeiB,GAAgB,GAC9E,MAAMC,EAAU,GACVC,EAAY,GAElB,SAASC,EAAoBzwC,GAC3B,MAAQ,GAAEA,MAAQqvC,IAAgBiB,EAAgB,GAAK,UACxD,CAEDhkB,EAAAA,QAAEwB,KAAKxB,EAAAA,QAAEne,KAAKiiC,IAAQpwC,IACpB,MAAMmsC,EAAWsE,EAAoBzwC,GAC/Bq+B,EAAa/R,EAAAA,QAAEokB,UACnBN,EAAKpwC,GAAK4sC,WACV+D,GAAanC,EAAY,GAAImC,KAG/BJ,EAAQlmB,KAAK,IAAIylB,EAAW,CAC1B9wC,KAAMmtC,EACNuD,aAAc1vC,EACdq+B,aACAmP,eAAgBgB,EAAY,GAAI4B,EAAKpwC,GAAK4wC,cAJ5C,IAQFtkB,EAAAA,QAAEwB,KAAKxB,EAAAA,QAAEne,KAAKkiC,IAASrwC,IACrB,MAAMmsC,EAAWsE,EAAoBzwC,GAC/Bq+B,EAAa/R,EAAAA,QAAEokB,UACnBL,EAAMrwC,GAAK4sC,WACX+D,GAAanC,EAAY,GAAImC,KAG/BH,EAAUnmB,KAAK,IAAI0lB,EAAa,CAC9B/wC,KAAMmtC,EACNuD,aAAc1vC,EACdq+B,aACAmP,eAAgBgB,EAAY,GAAI6B,EAAMrwC,GAAK4wC,cAJ7C,KAQF,IAAAlI,qBAAoBp7B,EAAM,WAAY,CACpCijC,UACAC,aAEH,CASD,SAASpB,EAAiB5G,EAAQ1nC,GAChC,MAAMuuC,EAAgBjB,EAAkB5F,EAAQ1nC,GAEhD,IAAKsmC,EAAIoE,MAAM33B,QAAQw7B,GAAgB,CACrC,MAAMZ,EAAe,GACfvE,EAAa5d,EAAAA,QAAEokB,UAAUlI,EAAO0B,YAAYwE,IAAY,CAC5DvC,SAAUqC,EAAYC,EAAcC,OAGhCphC,EAAO,IAAI4gC,EAAW,CAC1BlvC,KAAMqwC,EACNtC,aAAc4C,EAAsBnH,IAAW,SAC/CxoC,IAAKguC,EAAaxF,GAClB0B,aACAoF,wBAAyBM,EAAiCpH,MAG5D,IAAAE,qBAAoBp7B,EAAM,SAAUk7B,GAEpClc,EAAAA,QAAEwB,KAAK2gB,EAAcW,GAErB,MAAMyB,GAAgB,IAAAvxC,KAAIkpC,EAAQ,0BAA2B,MACvDsI,GAAkB,IAAAxxC,KAAIkpC,EAAQ,4BAA6B,OAE7DqI,GAAiBC,IACnBX,EAAqBU,EAAeC,EAAiBxjC,EAAM+hC,GAG7D,MAAM0B,GAAe,IAAAzxC,KAAIkpC,EAAQ,8BAA+B,MAE5DuI,GACFZ,EACEY,EAAaC,OACbD,EAAaE,SACb3jC,EAAK4jC,eACL7B,GACA,EAGL,CACF,CA2BD,OAxBA/iB,EAAAA,QAAEwB,KAAK,CACL+gB,OAAQC,OACRC,QAAShxB,OACTva,OAAQua,OACRixB,SAAU30B,KACV40B,QAASthB,QACTuhB,KAAM,OACL,CAACC,EAAQnwC,IAAS,IAAI8sC,EAAc,CAAE9sC,OAAMmwC,aAI/C,IAAIhB,EAAY,CACdnvC,KAAM,SACNkrC,WAAY,CAAC,IAGf5d,EAAAA,QAAEwB,KAAK2a,GAAS,CAACD,EAAQz5B,KACnBud,EAAAA,QAAEkL,SAASzoB,GACbqgC,EAAiB5G,EAAQz5B,GAEzBqgC,EAAiB5G,EAClB,IAGIlc,EAAAA,QAAE+E,MAAM,CAAC,GACbqX,oBAAoB,UAAWD,GAC/BC,oBAAoB,YAAa2D,GACjC3sC,OAxK8B,KAAnC,C,kB3HtFFlB,EAAOD,QAAU,C,kBiBAjBC,EAAOD,QAAU,C,KxBEfC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAAiD,EAAQ,QAA8B,EAAQ,QAA4B,EAAQ,Q,yBAF7L,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,OACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,qNeAjB,W,kGCmBO,SAAsB3D,EAAKn/B,GAChC,GAAIm/B,EAAI+J,OACN,OAGF,IAAK/J,EAAIoB,OACP,MAAM,IAAIppB,MAAM,6DAGlB,MAAMgyB,EAAQ,IAAIC,EAAAA,QAAOC,GAAG,CAAEC,eAAe,IACvCC,EAAY,IAAIC,EAAAA,QAmEtB,IA1DA,IAAA/I,qBAAoBtB,EAAK,SAAU,MACjC,MAAMsK,EAAY,CAAC,EAuBnB,OArBAtK,EAAIoE,MAAM1d,MAAMxgB,IACd,GAAIA,EAAKk7B,OAAQ,CACf,MAAM,KAAExpC,GAASsO,EAAKk7B,QAEtB,IAAAyE,wBAAuByE,EAAW1yC,GAAM,KAAM,IAAA2yC,gBAAe,CAC3DnJ,OAAQl7B,EAAKk7B,OACb4I,QACAI,YACApK,MACAwK,0BAA2B3pC,OAQ7B,IAAAglC,wBAAuB3/B,EAAM,kBAAkB,IAAMokC,EAAU1yC,IAChE,KAGIstB,EAAAA,QAAE+E,MAAM,CAAC,GACbqX,oBAAoB,QAAS0I,GAC7B1I,oBAAoB,YAAagJ,GACjChJ,oBAAoB,YAAa8I,GACjC9xC,OA5B8B,MA0D/B0nC,EAAIwB,oBAAqB,CAC3B,MAAM,mBACJD,GACEvB,EAAIwB,qBAER,IAAAyE,+BAA8B1E,EAAoB,kBA3BpD,WACE,GAAIrc,EAAAA,QAAE0L,IAAIoZ,EAAMS,YAAalvC,KAAK7B,MAChC,OAAOswC,EAAMS,YAAYlvC,KAAK7B,MAGhC,GAAI6B,KAAK2K,gBAAgB85B,EAAIoE,MAAM2B,kBAE/BxqC,KAAKmvC,WAAWC,OAAOzkC,gBAAgB85B,EAAIoE,MAAMsE,YACnD,OAAO,IAAA6B,gBAAe,CACpBnJ,OAAQ7lC,KAAK2K,KAAK0kC,YAAYxJ,OAC9B4I,QACAI,YACAxyC,KAAM2D,KAAK7B,KACXmxC,UAAWtvC,KACXykC,MACAwK,0BAA2B3pC,IAI/B,MAAM,IAAImX,MAAM,qDACjB,GAQA,CACF,EAnGD,cACA,WACA,WACA,QAKA,Q,sECZA5gB,EAAOD,QAAU2zC,C,mBCAjB1zC,EAAOD,QAAU4zC,C,kB/HAjB3zC,EAAOD,QAAU,C,oGgI+BV,UAAwB,OAC7BiqC,EAD6B,MAE7B4I,EAF6B,UAG7BI,EAH6B,KAI7BxyC,EAAOwpC,EAAOxpC,KAJe,UAK7BizC,EAL6B,IAM7B7K,EAN6B,0BAO7BwK,IAEA,MAAMQ,EAAWhB,EAAMO,eAAe,CAGpC3yC,OACAizC,YACA7K,MACAwK,4BACAS,YAAa/lB,EAAAA,QAAEgmB,QAAQ9J,EAAO0B,YAAYqI,IAAqB,IAAbA,EAAKvyC,OAAiB,OAa1E,OAVKwxC,EAAUgB,UAAUhK,EAAOxpC,QAE9BwyC,EAAUiB,aAAajK,EAAOxpC,KAlDlC,SAAsBwpC,GACpB,OAAOlc,EAAAA,QAAEokB,UAAUlI,EAAO0B,YAAY,EACpC58B,OACAk7B,OAAQkK,MAER,MAAMC,EAAM,CAAErlC,QAMd,OAJIolC,IACFC,EAAIrlC,KAAOolC,EAAe1zC,MAGrB2zC,CAAP,GAEH,CAqCuCC,CAAapK,IAGjDqK,EAAqBrK,EAAQgJ,IAKxBllB,EAAAA,QAAEqK,OAAOyb,EAAU,CAAE5J,UAC7B,EA7DD,I,EAAA,G,EAAA,O,2BAiBA,SAASqK,EAAqBrK,EAAQiJ,GACpCnlB,EAAAA,QAAEwB,KAAK0a,EAAO0B,YAAY,EAAG1B,OAAQkK,MAC/BA,IAAmBjB,EAAUqB,YAAYJ,EAAe1zC,OAOhE,SAAoBwpC,EAAQiJ,GAC1BA,EAAUsB,eAAevK,EAAOxpC,KAAMstB,EAAAA,QAAE2W,MACxC4P,EAAqBrK,EAAQiJ,EAC9B,CARKuB,CAAWN,EAAgBjB,EAC5B,GAEJ,C,KvItBCjzC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,QAAY,EAAQ,Q,yBAFpH,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,SACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBEAjBvsC,EAAOD,QAAU0sC,C,mBCAjBzsC,EAAOD,QAAU2sC,C,kBhHAjB1sC,EAAOD,QAAU,C,mNiIAjB,W,iGCoBO,SAAqB6oC,EAAK6L,GAAS,aACxCC,EAAe5mB,EAAAA,QAAEob,SADuB,eAExCD,EAAiBnb,EAAAA,QAAEob,UACjB,CAAC,GACH,MAAMyL,EAAeF,EAAQ/wC,QAAQ,OAAQ,IAC7C,IAAI,IAAA5B,gBAAe8mC,EAAK,SACtB,OAEF,MAAMgM,EAAgBlT,IACpB,MAAMgT,EAAahT,EAAnB,GAGF,IAAAmT,cAAajM,IAMb,IAAAsB,qBAAoBtB,EAAK,QAAS,MAAO,QAInCA,EAAIwB,oBAFND,EAFqC,EAErCA,mBACA2K,EAHqC,EAGrCA,WAeF,SAASC,GAAc,IACrB7xB,EAAM,GADe,MAErB8xB,GAAQ,GAKN,CAAC,GACH,OAAOlK,EAAAA,MAAMhqC,IAAIqD,KAAK8wC,SAAUhM,EAAe,CAC7Cv1B,KAAM,CACJwhC,KAAMhyB,EACNiyB,OAAQH,MAERI,MAAMR,EACX,CAED,SAASS,IACP,OAAOvK,EAAAA,MAAMhqC,IAAIqD,KAAK8wC,SAAUhM,KAAkBmM,MAAMR,EACzD,CAqCD,OAnEA,IAAA/F,+BACE1E,EAAoB,YAMpB,WACE,OAAO3J,EAAIz9B,KAAK4xC,EAAcxwC,KAAK7B,KACpC,IA8BH6nC,EAAmBtoC,UAAUf,IAAM,SAAaoE,GAC9C,OAAOf,KAAK2K,gBAAgB85B,EAAIoE,MAAM2B,eACpCoG,EAAc30C,KAAK+D,KAAMe,GACzBmwC,EAAQj1C,KAAK+D,KAAMe,EACtB,EAODilC,EAAmBtoC,UAAUyzC,QAAU,SAAiBpiC,GACtD,OAAO/O,KAAKrD,IAAI,CAAEoiB,IAAKhQ,EAAMqiC,OAC9B,GAED,IAAA1G,+BACEiG,EAAY,YAMZ,WACE,OAAOtU,EAAIz9B,KAAK4xC,EAAcxwC,KAAK7B,KACpC,IAII,CAAC,CAzEwB,KA2EnC,EA7GD,I,EAAA,G,EAAA,O,2BACA,QAMA,QACA,E,uSAAA,QACA,O,mBCbAtC,EAAOD,QAAUy1C,C,K1IEfx1C,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,QAA6B,EAAQ,MAA4B,EAAQ,Q,yBAFzK,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,mBACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBEAjBvsC,EAAOD,QAAU0sC,C,mBCAjBzsC,EAAOD,QAAU2sC,C,kBvCAjB1sC,EAAOD,QAAU,C,mB2DAjBC,EAAOD,QAAU01C,C,kBpIAjBz1C,EAAOD,QAAU,C,mNqIAjB,W,iGCgIO,SAAqB6oC,EAAK6L,EAASiB,EAAa,CAAC,GAAG,gBACzDvK,EAAkBrd,EAAAA,QAAEob,SADqC,aAEzDwL,EAAe5mB,EAAAA,QAAEob,SAFwC,eAGzDD,EAAiBnb,EAAAA,QAAEob,UACjB,CAAC,GACH,MAAMyL,EAAeF,EAAQ/wC,QAAQ,OAAQ,IAC7C,IAAI,IAAA5B,gBAAe8mC,EAAK,SACtB,OAGF,MAAM+M,EAAkB,CAACC,EAAQhC,IAC/B,SAA4BqB,EAAU/vC,GACpC,OAAO0wC,EAAOX,EAAUhM,EAAe/jC,EAAS0uC,IAC7Cr+B,MAAK6sB,GAAY+I,EAAgB/I,EAAUwR,KAC3CwB,OAAOzT,IACN,MAAM+S,EAAa/S,EAAOiS,EAA1B,GAEL,GAEH,IAAAiC,kBAAiBjN,EAAK8M,EAAY,CAChCI,YAAa,CAAClC,GACZmC,YACIJ,EAAgB7K,EAAAA,MAAMhqC,IAAK8yC,EAA3B+B,CAAqC/B,EAASqB,SAAU,CAC5DvhC,KAAM,EAAF,GACCsiC,EAAYD,EAAQnC,MAG3BqC,YAAa,CAACrC,GACZmC,UACCG,IAAWP,EAAgB7K,EAAAA,MAAM9S,MAAO4b,EAA7B+B,CAAuC/B,EAASqB,SAAU,CACtEvhC,KAAMwiC,EACNC,cAAe,EAAF,GACRH,EAAYD,EAAQnC,MAG3BwC,aAAc,CAACC,GACbN,UACCriC,IAASiiC,EAAgB7K,EAAAA,MAAMQ,KAAM+K,EAA5BV,CAAgDU,EAAmBpB,SAAU,CACvFvhC,OACAyiC,cAAe,EAAF,GACRH,EAAYD,EAAQM,MAG3BC,aAAc1C,GAAY+B,EAAgB7K,EAAAA,MAAMyL,OAAQ3C,EAA9B+B,CAAwC/B,EAASqB,UAC3EuB,gBAAiB,CAACH,EAAD,SACfnzB,EADe,EACfA,IACAuzB,EAFe,EAEfA,KACAzB,EAHe,EAGfA,MACA0B,EAJe,EAIfA,QACA7zC,EALe,EAKfA,OACAkzC,EANe,EAMfA,OACAY,EAPe,EAOfA,OACGC,EARY,wEASXjB,EAAgB7K,EAAAA,MAAMhqC,IAAKu1C,EAA3BV,CAA+CU,EAAmBpB,SAAU,CAChFvhC,KAAM,EAAF,CACFwhC,KAAMhyB,EACN2zB,MAAOJ,EACPtB,OAAQH,GACL8B,EAAaJ,GACbK,EAAYl0C,GACZmzC,EAAYD,EAAQM,GACpBW,EAAYL,GACZC,IAlBU,EAqBjBxsC,OAAQ,CAACisC,GACPnzB,MACAuzB,OACAzB,QACA0B,UACA7zC,SACAkzC,SACAkB,aACItB,EAAgB7K,EAAAA,MAAMQ,KAAM+K,EAA5BV,CAAgDU,EAAmBpB,SAAU,CACjFvhC,KAAMujC,EACNd,cAAe,EAAF,GACRe,EAASh0B,GACTi0B,EAAUV,GACVW,EAAWpC,GACX8B,EAAaJ,GACbK,EAAYl0C,GACZmzC,EAAYD,EAAQM,QA7EvB,QAyFFzN,EAAI,eANNyO,EAnFI,EAmFJA,UACAC,EApFI,EAoFJA,WACAC,EArFI,EAqFJA,uBACAC,EAtFI,EAsFJA,aACAzC,EAvFI,EAuFJA,cACA0C,EAxFI,EAwFJA,kBAGF,IAAA5C,cAAajM,IAMb,IAAAsB,qBAAoBtB,EAAK,QAAS,MAAO,QAKnCA,EAAIwB,oBAHND,EAFqC,EAErCA,mBACAuN,EAHqC,EAGrCA,6BACA5C,EAJqC,EAIrCA,WAgNF,OA7MA,IAAAjG,+BACE1E,EAAoB,YAMpB,WACE,OAAO3J,EAAIz9B,KAAK4xC,EAAcxwC,KAAK7B,KACpC,IAUHo1C,EAA6B71C,UAAUf,IAAM,SAAa,EAYtD,CAAC,EAAG62C,EAAeC,GAAa,QAXlC10B,IAAAA,OAWkC,MAX5B,GAW4B,MAVlCuzB,KAAAA,OAUkC,MAV3B,EAU2B,MATlCzB,MAAAA,OASkC,aANlCe,OAAAA,OAMkC,MANzB,KAMyB,MAJlClzC,OAAAA,OAIkC,MAJzB,KAIyB,MAHlC6zC,QAAAA,OAGkC,MAHxB,KAGwB,MAFlCC,OAAAA,OAEkC,MAFzB,KAEyB,EAD/BC,EAC+B,iEAClC,OAAO7B,EAAc5wC,KAAD,GAClB+e,MACAuzB,OACAzB,QACAe,SACAlzC,SACA6zC,UACAC,UACGC,GACFe,EAAeC,EACnB,EAEDzN,EAAmBtoC,UAAUf,IAAM,UAAa,OAG9Ci1C,EAAS,MACP,CAAC,EAAG4B,EAAeC,GACrB,OAAOP,EAAUlzC,KAAM,CACrB4xC,UACC4B,EAAeC,EACnB,EAEDzN,EAAmBtoC,UAAUm2B,MAAQ,SAAetkB,GAAM,OACxDqiC,EAAS,MACP,CAAC,EAAG6B,GAIN,OAHkBP,EAAUlzC,KAAM,CAChC4xC,UACC6B,GACc1B,OAAOxiC,EACzB,EAIDy2B,EAAmBtoC,UAAUg2C,iBAAmB,WAC9C,OAAON,EAAuBpzC,KAC/B,EAEDgmC,EAAmBtoC,UAAUi2C,mBAAqB,UAA2B,IAC3E50B,EAD2E,KAE3EuzB,EAF2E,MAG3EzB,EAH2E,QAI3E0B,EAAU,KAJiE,OAK3E7zC,EAAS,KALkE,OAM3EkzC,EAAS,KANkE,QAO3EkB,EAP2E,cAQ3EU,EAR2E,YAS3EC,EAT2E,UAW3EnoC,EAX2E,QAY3EuM,GACE,CAAC,GACH,GAAI7X,KAAK2K,gBAAgB85B,EAAIoE,MAAM2B,eAAgB,CACjD,GAAIxqC,KAAKmvC,WAAWC,OAAOzkC,gBAAgB85B,EAAIoE,MAAMsE,WACnD,OAAOmG,EAAiBtzC,KAAM,CAC5B+e,IAAKA,GAAO,GACZuzB,KAAMA,GAAQ,EACdzB,WAAiB71B,IAAV61B,GAA6BA,EACpC0B,UACA7zC,SACAkzC,SACAkB,WACCW,GACE,GAAIzzC,KAAKmvC,WAAWC,OAAOzkC,gBAAgB85B,EAAIoE,MAAMuE,aAC1D,OAAOwD,EAAc5wC,KAAM,CACzB+e,IAAKA,GAAO,GACZuzB,KAAMA,GAAQ,EACdzB,WAAiB71B,IAAV61B,GAA6BA,EACpC0B,UACA7zC,SACAkzC,SACAtmC,YACAuM,WACC27B,EAAeC,EAErB,CAKD,OAAIzzC,KAAKmvC,WAAWC,OAAOzkC,gBAAgB85B,EAAIoE,MAAMsE,WAC5CkG,EAAarzC,KAAM,CACxB+e,MACAuzB,OACAzB,QACA0B,UACA7zC,SACAkzC,SACAkB,WACCW,GAGEP,EAAUlzC,KAAM,CACrB+e,MACAuzB,OACAzB,QACA0B,UACA7zC,SACAkzC,UACC4B,EAAeC,EACnB,EAEDzN,EAAmBtoC,UAAUk2C,UAAY,UAAmB,MAC1D7kC,EAD0D,eAE1D8kC,EAF0D,QAG1Df,EAH0D,cAI1DU,EAJ0D,YAK1DC,GACE,CAAC,GACH,OAAOzzC,KAAK8zC,MAAMD,GAAgBF,mBAA3B,KACF5kC,EADE,CAEL+jC,UACAU,gBACAC,gBAEH,EAGDzN,EAAmBtoC,UAAUyzC,QAAU,SAAiBpiC,EAAQ,CAAC,GAC/D,GAAI/O,KAAK2K,gBAAgB85B,EAAIoE,MAAMsE,WACjC,OAAOntC,KAAK4zC,UAAU,CACpB7kC,MAAO,CACLgQ,IAAKhQ,EAAMqiC,OAAS,GACpBkB,KAAMvjC,EAAMyY,QAAU,EACtBqpB,OAAO,EACP0B,QAASxjC,EAAMglC,QACfr1C,OAAQqQ,EAAMrQ,OACdkzC,OAAQ7iC,EAAM6iC,QAEhBkB,QAAS/jC,EAAMA,QACdilC,YAAY5iC,KAAK6iC,GAEtB,MAAM,IAAIx3B,MAAM,6CACjB,GAED,IAAAiuB,+BAA8B6I,EAA8B,eAAe,WACzE,OAAOvzC,KAAK2K,KAAK0kC,YAAYhyC,GAC9B,IAEDk2C,EAA6B71C,UAAUypC,KAAO,SAAc53B,GAAM,OAChEqiC,EAAS,MACP,CAAC,GACH,OAAOuB,EAAWnzC,KAAM,CACtB4xC,UACCriC,EACJ,EAMDgkC,EAA6B71C,UAAUyzC,QAAU,SAAiBpiC,EAAQ,CAAC,GACzE,OAAO/O,KAAKrD,IAAI,CAAEoiB,IAAKhQ,EAAMqiC,QAAS4C,YAAY5iC,KAAK6iC,EACxD,EAIDV,EAA6B71C,UAAUq0C,OAAS,SAAgBh0B,EAAIxO,GAClE,OAAOvP,KAAKk0C,SAASn2B,GAAI8V,MAAMtkB,GAAMykC,WACtC,GAED,IAAAtJ,+BACEiG,EAAY,YAMZ,WACE,OAAOtU,EAAIz9B,KAAK4xC,EAAcxwC,KAAK7B,KACpC,IAII,CACLqyC,eArN8B,KAwNnC,EAzbD,I,EAAA,G,EAAA,O,2BACA,QAMA,QACA,E,uSAAA,QACA,QACA,Q,qzBAIA,SAASmC,EAAaJ,GAKpB,GAAI5oB,EAAAA,QAAEnpB,QAAQ+xC,GACZ,MAAO,CAAC,EAGV,IAAI4B,EAOJ,OALEA,EADExqB,EAAAA,QAAEjhB,QAAQ6pC,GACD5oB,EAAAA,QAAExd,IAAIomC,GAASx1C,GAV5B,SAA6BA,GAC3B,OAAO4sB,EAAAA,QAAExd,IAAIpP,GAAO,CAACsmB,EAAGjX,IAAqB,IAAVA,EAAciX,EAAE+wB,cAAgB/wB,GACpE,CAQoCgxB,CAAoBt3C,GAAO6B,KAAK,OAAMA,KAAK,KAEnE+qB,EAAAA,QAAExd,IAAIomC,GAAS,CAACx1C,EAAOM,IAAS,GAAEA,KAAON,EAAQ,EAAI,MAAQ,WAAU6B,KAAK,KAGlF,CACLu1C,WAEH,CAGD,SAASvB,EAAYl0C,GACnB,OAAIirB,EAAAA,QAAEnpB,QAAQ9B,IAAWirB,EAAAA,QAAEnpB,QAAQ9B,EAAO41C,OACjC,CAAC,EAGH,CACLC,QAAS71C,EAAO41C,MAEnB,CAED,SAASvB,EAASh0B,GAChB,OAAKA,EAIE,CACLgyB,KAAMhyB,GAJC,CAAC,CAMX,CAED,SAASi0B,EAAUV,GACjB,OAAKA,EAIE,CACLI,MAAOJ,GAJA,CAAC,CAMX,CAED,SAASW,EAAWpC,GAClB,YAAc71B,IAAV61B,EACK,CAAC,EAGH,CACLG,OAAQH,EAEX,CAED,SAASgB,EAAYD,EAAQnC,GAC3B,IAAKmC,EAAQ,MAAO,CAAC,EACrB,MAAM4C,EAAS,CAAC,EAER7H,GADY8C,EAAS9kC,KAAK0kC,YAAcI,EAAS9kC,KAAK0kC,YAAcI,EAAS9kC,MAC7EgiC,wBACF8H,EAAU7C,EAAOlzC,QAAOC,IAASgrB,EAAAA,QAAEe,SAASiiB,EAAyBhuC,KAAOC,KAAK,KACjF81C,EAAU9C,EAAOlzC,QAAOC,GAAQgrB,EAAAA,QAAEe,SAASiiB,EAAyBhuC,KAAOC,KAAK,KAUtF,OARI61C,EAAQv1C,SACVs1C,EAAOC,QAAUA,GAGfC,EAAQx1C,SACVs1C,EAAOE,QAAUA,GAGZF,CACR,CAED,SAAS3B,EAAYL,GACnB,OAAKA,EAGE,CAAEmC,QAASnC,GAFT,CAAC,CAGX,CAID,MAAMyB,EAA6BhW,IACjC,MAAMxiB,EAASwiB,EAASlhC,MAAM+kB,QAS9B,OARAtlB,OAAOC,eAAegf,EAAQ,aAAc,CAC1C1e,MAAOkhC,EAAS,gBAChBvhC,YAAY,IAEdF,OAAOC,eAAegf,EAAQ,MAAO,CACnC1e,MAAOkhC,EACPvhC,YAAY,IAEP+e,CAAP,C,sGC5GK,SAA0BgpB,EAAK8M,GAAY,YAChDI,EADgD,YAEhDG,EAFgD,aAGhDG,EAHgD,aAIhDE,EAJgD,gBAKhDE,EALgD,OAMhDpsC,IAEA,MAAM2uC,EAAarD,GAAc,CAAC,GAElC,IAAAxL,qBAAoBtB,EAAK,cAAe,MAEtC,MAAMoQ,EAAkB,IAAIC,EAAAA,gBACtBC,EAAa,IAAIC,EAAAA,WA0CjBC,EAAc,IAAIH,EAAAA,gBAYxB,SAASI,EAAsB1L,EAAUzrB,EAAIo3B,EAAoB7P,GAC/D,MAAM8P,GAAUr3B,EAEZk3B,EAAYI,cAAc7L,KACxB4L,EACFH,EAAYK,wBAAwB9L,EAAUlE,GAE9C2P,EAAYM,4BAA4B/L,EAAUzrB,EAAIo3B,EAAoB7P,IAI9E9oC,OAAOgP,KAAKypC,EAAYO,YAAYC,SAASne,SAASj6B,IAAQ,QAC1BugB,KAAKC,MAAMxgB,GADe,G,EAAA,E,4CAAA,I,8UACrDsN,EADqD,KAC/C+qC,EAD+C,KACrC30C,EADqC,K,QAGxD4J,IAAS6+B,IACP4L,GAAWM,IAAa33B,GAAMhd,IAAYo0C,IAC9CF,EAAYU,0BAA0Bt4C,EACvC,GAEJ,CAED,SAASu4C,EAAWpM,EAAUzrB,EAAIo3B,EAAoB3Z,EAAS8J,EAAsB,MAEnF9J,EAAQgO,IAAY,EAjCtB,SAAmCA,EAAUlE,GAC3CuP,EAAgBS,wBAAwB9L,EAAUlE,GAElD9oC,OAAOgP,KAAKqpC,EAAgBW,YAAYC,SAASne,SAASj6B,IACpDugB,KAAKC,MAAMxgB,GAAK,KAAOmsC,GACzBqL,EAAgBc,0BAA0Bt4C,EAC3C,GAEJ,CA0BCw4C,CAA0BrM,EAAUlE,GACpC4P,EAAsB1L,EAAUzrB,EAAIo3B,EAAoB7P,GAExD3b,EAAAA,QAAEwB,KAAKypB,EAAWpL,IAAY7+B,IACvB6wB,EAAQ7wB,KAEX6wB,EAAQ7wB,IAAQ,EAChBirC,EAAWjrC,EAAM,KAAM,GAAI6wB,EAAS8J,GACrC,IAEHyP,EAAWe,OAAO,aAActM,EACjC,CAED,SAASjE,EAAoBiE,EAAUzrB,EAAK,KAAMo3B,EAAqB,GAAI7P,EAAsB,MAC/FsQ,EAAWpM,EAAUzrB,EAAIo3B,EAAoB,CAAC,EAAG7P,EAClD,CAoGD,MAAO,CACL4N,UAnGF,SAAmBzD,EAAU1uC,EAASg1C,EAAoBtC,GACxD,MAAMjK,EAAWiG,EAAS9kC,KAAKtO,KAEzB25C,EAAWvG,EAASN,WAAW9xC,KAAOoyC,EAAStxC,KAC/Cg3C,GAAqB,aAAUp0C,GAC/Bk1C,EAAe,CAACzM,EAAUwM,EAAUb,GACpCx2C,EAAOs2C,EAAYt4C,IAAIs5C,GAC7B,GAAIt3C,IAAS80C,EAIX,OAHIsC,GACFp3C,EAAKwjC,QAAQ4T,GAERp3C,EAET,MAAMu3C,EAAU,IAAIC,EAAAA,gBAAgB,CAClCC,MAAO,IAAMzE,EAAYlC,EAAU1uC,GACnC8yB,MAAOke,GAAUD,EAAYrC,EAAU1uC,EAASgxC,GAC7CsE,KAAI,IAAM9Q,EAAoBiE,EAAUwM,EAAUb,KACrDmB,eAAgBC,GAAStB,EAAYuB,cAAcD,EAAON,GAC1DQ,iBAAkBF,GAAStB,EAAYyB,gBAAgBH,EAAON,GAC9DF,uBAGF,OADAd,EAAY/kB,IAAI+lB,EAAcC,GACvBA,CACR,EA6EC/C,WAzDF,SAAoBjB,EAAoBnxC,EAASwO,GAC/C,MAAM4lC,GAAqB,aAAUp0C,GAC/B41C,EAAgB1E,EAAaC,EAAoBnxC,EAASwO,GAC1Dy7B,EAAckH,EAAmBvnC,KAAK0kC,YAAYhyC,IAClDmsC,EAAW0I,EAAmBvnC,KAAK0kC,YAAYhzC,KAC/Cu6C,EAAkBD,EACrBvlC,MAAKs0B,GAAUwM,EAAmBgC,SAASxO,EAAOsF,MACrD,IAAI6L,GAAoC,EACxC,MAAMX,EAAU,IAAIC,EAAAA,gBAAgB,CAClCC,MAAO,IACDS,GACFA,GAAoC,EAC7BF,GAEFC,EAAgBxlC,MAAKq+B,GAAYkC,EAAYlC,EAAU1uC,KAEhE8yB,MAAQke,IACN8E,GAAoC,EAC7BD,EACJP,KAAI5G,GAAYlK,EACfiE,EACAiG,EAASN,WAAW9xC,IACpB83C,KAED/jC,MAAKq+B,GAAYqC,EAAYrC,EAAU1uC,EAASgxC,QAYvD,OATA6E,EAAgBxlC,MAAMq+B,IACpB,MAAM1xB,EAAK0xB,EAASN,WAAW9xC,IACzB44C,EAAe,CAACzM,EAAUzrB,EAAIo3B,GAEpCe,EAAQI,eAAiBC,GAAStB,EAAYuB,cAAcD,EAAON,GACnEC,EAAQO,iBAAmBF,GAAStB,EAAYyB,gBAAgBH,EAAON,GACvEhB,EAAY/kB,IAAI+lB,EAAcC,GAC9B3Q,EAAoBiE,EAAUzrB,EAAIo3B,EAAlC,IAEKe,CACR,EAqBC9C,uBAnBF,SAAgC3D,GAC9B,MAAMjG,EAAWiG,EAAS9kC,KAAKtO,KACzB0hB,EAAK0xB,EAASN,WAAW9xC,IAI/B,OAAO,IAAI4T,EAAAA,SAAQ,CAACC,EAASu0B,KAC3B0M,EAAa1C,GACVr+B,MAAK,KACJm0B,EAAoBiE,EAAUzrB,EAAI,IAClC7M,GAAS,IAEV+/B,OAAM1T,GAAOkI,EAAOlI,IALvB,GAOH,EAMC8V,aA7EF,SAAsB5D,EAAU1uC,EAAS0yC,GACvC,MAGMwC,EAAe,CAHJxG,EAAS9kC,KAAKtO,KACdozC,EAASN,WAAlBhxC,MACmB,aAAU4C,IAE/BpC,EAAOs2C,EAAYt4C,IAAIs5C,GAC7B,GAAIt3C,IAAS80C,EACX,OAAO90C,EAET,MAAMu3C,EAAU,IAAIC,EAAAA,gBAAgB,CAClCC,MAAO,IAAMnwC,EAAOwpC,EAAU1uC,GAC9Bu1C,eAAgBC,GAAStB,EAAYuB,cAAcD,EAAON,GAC1DQ,iBAAkBF,GAAStB,EAAYyB,gBAAgBH,EAAON,KAGhE,OADAhB,EAAY/kB,IAAI+lB,EAAcC,GACvBA,CACR,EA8DCtF,cApMF,SAAuBsB,EAAoBnxC,EAASg1C,EAAoBtC,GACtE,MAGMwC,EAAe,CAHJ/D,EAAmBvnC,KAAK0kC,YAAYhzC,KACpC61C,EAAT/zC,MACmB,aAAU4C,IAE/BpC,EAAOk2C,EAAgBl4C,IAAIs5C,GACjC,GAAIt3C,IAAS80C,EAIX,OAHIsC,GACFp3C,EAAKwjC,QAAQ4T,GAERp3C,EAET,MAAMu3C,EAAU,IAAIY,EAAAA,oBAAoB,CACtCV,MAAO,IAAM/D,EAAgBH,EAAoBnxC,GACjDu1C,eAAgBC,GAAS1B,EAAgB2B,cAAcD,EAAON,GAC9DQ,iBAAkBF,GAAS1B,EAAgB6B,gBAAgBH,EAAON,GAClEF,uBAGF,OADAlB,EAAgB3kB,IAAI+lB,EAAcC,GAC3BA,CACR,EAiLC5C,iBA/KF,SAA0BpB,EAAoBnxC,EAAS0yC,GACrD,MAGMwC,EAAe,CAHJ/D,EAAmBvnC,KAAK0kC,YAAYhzC,KACpC61C,EAAT/zC,MACmB,aAAU4C,IAE/BpC,EAAOk2C,EAAgBl4C,IAAIs5C,GACjC,GAAIt3C,IAAS80C,EACX,OAAO90C,EAET,MAAMu3C,EAAU,IAAIY,EAAAA,oBAAoB,CACtCV,MAAO,IAAMnwC,EAAOisC,EAAoBnxC,GACxCu1C,eAAgBC,GAAS1B,EAAgB2B,cAAcD,EAAON,GAC9DQ,iBAAkBF,GAAS1B,EAAgB6B,gBAAgBH,EAAON,KAGpE,OADApB,EAAgB3kB,IAAI+lB,EAAcC,GAC3BA,CACR,EAgKC3Q,sBACAwP,aA5MoC,KA+MzC,EAnOD,YAGA,WACA,UACA,UACA,QACA,QACA,Q,sECRAl5C,EAAOD,QAAUm7C,C,kICAjB,WACA,QAOA,SAASC,EAAS/6C,GAEhB,OADA+D,KAAK41B,MAAM0H,OAAS,UACbrhC,IACJmV,MAAM7B,IACLvP,KAAKmiC,QAAQ5yB,GAEN,QAER0hC,OAAO1T,IACNv9B,KAAKi3C,UAAU3f,SAAS34B,IACtBA,EAAK6+B,MAAMD,EAAX,IAEFv9B,KAAK41B,MAAM0H,OAAS,QACpBt9B,KAAK41B,MAAM4H,MAAQD,CAAnB,GAEL,CAED,MAAM2Z,UAAkBC,EAAAA,WACtBx3C,WAAAA,EAAY,MACVy2C,EADU,eAEVE,EAAiBhW,EAAAA,KAFP,iBAGVmW,EAAmBnW,EAAAA,KAHT,mBAIVyV,IAEAxc,OAAO6d,IACLp3C,KAAKi3C,UAAUzf,IAAI4f,GACnBp3C,KAAKs2C,eAAet2C,MACM,YAAtBA,KAAK41B,MAAM0H,OACTyY,EACF/1C,KAAKmiC,QAAQ4T,GAEb/1C,KAAK41C,aAEwB,UAAtB51C,KAAK41B,MAAM0H,OACpB8Z,EAASC,KAAKr3C,KAAK41B,MAAMrmB,MACM,UAAtBvP,KAAK41B,MAAM0H,QACpB8Z,EAAS5Z,MAAMx9B,KAAK41B,MAAM4H,OAErB,KACLx9B,KAAKi3C,UAAU7E,OAAOgF,GACtBp3C,KAAKy2C,iBAAiBz2C,KAAtB,KAGJA,KAAKo2C,MAAQA,EAEbp2C,KAAKi3C,UAAY,IAAI5gB,IACrBr2B,KAAKs2C,eAAiBA,EACtBt2C,KAAKy2C,iBAAmBA,EACxBz2C,KAAK41B,MAAQ,CAKX0H,OAAQ,UACR/tB,KAAM,KACNiuB,MAAO,KAEV,CAED2E,OAAAA,CAAQ5yB,GAON,OANAvP,KAAKi3C,UAAU3f,SAAS34B,IACtBA,EAAK04C,KAAK9nC,EAAV,IAEFvP,KAAK41B,MAAM0H,OAAS,QACpBt9B,KAAK41B,MAAMrmB,KAAOA,EAEX,IACR,CAEDqmC,UAAAA,GAC8B,IAAxB51C,KAAKi3C,UAAU1xC,KACjBvF,KAAK41B,MAAM0H,OAAS,UAEpB0Z,EAAS/6C,KAAK+D,MAAM,IAAMA,KAAKo2C,SAElC,CAEDkB,YAAAA,GACE,OAAOt3C,KAAKi3C,UAAU1xC,KAAO,CAC9B,E,sBAGI,cAAkC2xC,IAGzC,MAAMK,UAA6BJ,EAAAA,WACjCx3C,WAAAA,GACE45B,OAAO6d,IACLp3C,KAAKi3C,UAAUzf,IAAI4f,GACO,UAAtBp3C,KAAK41B,MAAM0H,OACb8Z,EAASC,KAAKr3C,KAAK41B,MAAMrmB,MACM,UAAtBvP,KAAK41B,MAAM0H,QACpB8Z,EAAS5Z,MAAMx9B,KAAK41B,MAAM4H,OAErB,KACLx9B,KAAKi3C,UAAU7E,OAAOgF,EAAtB,KAIJp3C,KAAKi3C,UAAY,IAAI5gB,IACrBr2B,KAAK41B,MAAQ,CAIX0H,OAAQ,UACR/tB,KAAM,KACNiuB,MAAO,KAEV,CAED6Z,IAAAA,CAAK9nC,GACHvP,KAAKi3C,UAAU3f,SAAS34B,IACtBA,EAAK04C,KAAK9nC,EAAV,IAEFvP,KAAK41B,MAAM0H,OAAS,QACpBt9B,KAAK41B,MAAMrmB,KAAOA,CACnB,CAEDiuB,KAAAA,CAAMD,GACJv9B,KAAKi3C,UAAU3f,SAAS34B,IACtBA,EAAK6+B,MAAMD,EAAX,IAEFv9B,KAAK41B,MAAM0H,OAAS,QACpBt9B,KAAK41B,MAAM4H,MAAQD,CACpB,E,kBAGI,cAA8B2Z,EACnCv3C,WAAAA,EAAY,MACVy2C,EADU,MAEVviB,EAFU,eAGVyiB,EAAiBhW,EAAAA,KAHP,iBAIVmW,EAAmBnW,EAAAA,KAJT,mBAKVyV,IAEAxc,MAAM,CACJ6c,QACAE,iBACAG,mBACAV,uBAEF/1C,KAAK6zB,MAAQA,CACd,CAEDke,MAAAA,CAAOA,GACL,MAAMyF,EAAuB,IAAID,EAE3BE,EAAiBz3C,KAAK41B,MAAM0H,OAoBlC,OAnBAt9B,KAAK41B,MAAM0H,OAAS,UACpBt9B,KAAK6zB,MAAMke,GACR3gC,MAAM7B,IACLvP,KAAKi3C,UAAU3f,SAAS34B,IACtBA,EAAK04C,KAAK9nC,EAAV,IAEFvP,KAAK41B,MAAM0H,OAAS,QACpBt9B,KAAK41B,MAAMrmB,KAAOA,CAAlB,IAED0hC,OAAO1T,IACNia,EAAqBha,MAAMD,GAC3Bv9B,KAAK41B,MAAM0H,OAASma,CAApB,IAGJz3C,KAAK03C,UAAU,CACbL,KAAM9nC,GAAQioC,EAAqBH,KAAK9nC,GACxCiuB,MAAOD,GAAOia,EAAqBha,MAAMD,KAGpCia,CACR,E,mBChLH37C,EAAOD,QAAU+7C,C,4GCAjB,cACA,OACA,WACA,QACA,Q,6LAeO,MAAsB,qCACX,CAAC,GADU,qBAEb,IAAIC,EAAAA,eAAe,CAC/BC,IAAKC,EAAAA,YACLC,SAAU,IAAIC,EAAAA,uBAAuB,CAAE5G,MAAO6G,EAAAA,eAJrB,CAO3B/nB,GAAAA,CAAI/xB,EAAMQ,GACJA,EAAK24C,gBACP,IAAApnB,KAAIlwB,KAAKq1C,cAAel3C,EAAMQ,GAE9BqB,KAAKw1C,YAAYtlB,KAAI,aAAU/xB,GAAOQ,EAEzC,CAEDhC,GAAAA,CAAIwB,GACF,OAAO,IAAAxB,KAAIqD,KAAKq1C,cAAel3C,IAAS6B,KAAKw1C,YAAY74C,KAAI,aAAUwB,GACxE,CAEDq4C,aAAAA,CAAc73C,EAAMR,GACU,IAAxBQ,EAAKs4C,UAAU1xC,OACjBvF,KAAKw1C,YAAY0C,KAAI,aAAU/5C,KAC/B,IAAA+xB,KAAIlwB,KAAKq1C,cAAel3C,EAAMQ,GAEjC,CAED+3C,eAAAA,CAAgB/3C,EAAMR,GACQ,IAAxBQ,EAAKs4C,UAAU1xC,OAxCvB,SAA4ByqC,EAAK7xC,GAC/B,IAAI5B,EAAIyzC,EAD6B,MAE7B9wC,EAAWf,EAAXe,OACR,IAAK,IAAIpD,EAAI,EAAGA,EAAIoD,EAAS,EAAGpD,GAAK,EAGnC,GAFAS,EAAIA,EAAE4B,EAAKrC,IAEM,qBAANS,EACT,cAGGA,EAAE4B,EAAKe,EAAS,GACxB,CA8BKi5C,CAAmBn4C,KAAKq1C,cAAel3C,GACvC6B,KAAKw1C,YAAYtlB,KAAI,aAAU/xB,GAAOQ,GAEzC,CAED22C,uBAAAA,CAAwB9L,EAAUlE,EAAsB,MACtD,MAAM8S,EAAiB,GACvBzuB,EAAAA,QAAExd,IAAInM,KAAKq1C,cAAc7L,IAAW,CAAC6O,EAAYC,KAC9BhT,GAAuB3b,EAAAA,QAAE9e,KAAKy6B,GAAqBnnC,GAAQm6C,EAAO5P,SAASvqC,IAAU,GAAEqrC,MAAa8O,KAAU5P,SAASvqC,KAEtIi6C,EAAe1wB,KAAK4wB,GAEpB3uB,EAAAA,QAAEwB,KAAKktB,GAAaE,IAClBA,EAAU3C,YAAV,GAEH,IAEHwC,EAAe9gB,SAASj6B,WACf2C,KAAKq1C,cAAc7L,GAAUnsC,EAApC,GAEH,CAEDk4C,2BAAAA,CAA4B/L,EAAUzrB,EAAIo3B,EAAoB7P,EAAsB,MACjEA,GAAuB3b,EAAAA,QAAE9e,KAAKy6B,GAAqBnnC,GAAS,GAAEqrC,MAAazrB,KAAM2qB,SAASvqC,YAElG6B,KAAKq1C,cAAc7L,GAAUzrB,GAEpC4L,EAAAA,QAAEwB,KAAKnrB,KAAKq1C,cAAc7L,GAAUzrB,IAAK,CAACw6B,EAAWx3C,KAC/CA,IAAYo0C,GACdoD,EAAU3C,YACX,GAGN,CAEDD,yBAAAA,CAA0Bt4C,GACxB,MAAMk5C,EAAQv2C,KAAKw1C,YAAY74C,IAAIU,GAE/Bk5C,GACFA,EAAMX,YAET,E,mBCxFH/5C,EAAOD,QAAU48C,C,kB3HAjB38C,EAAOD,QAAU,C,gJ4HAS,I,eACE,E,cAED,I,uGCH3B,YAEO,MAAMo5C,UAAmBmC,EAAAA,WAC9Bx3C,WAAAA,GACE45B,OAAO6d,IACLp3C,KAAKi3C,UAAUzf,IAAI4f,GACZ,KACLp3C,KAAKi3C,UAAU7E,OAAOgF,EAAtB,KAKJp3C,KAAKi3C,UAAY,IAAI5gB,GACtB,CAEDyf,MAAAA,CAAOnrC,EAAM+6B,GACX1lC,KAAKi3C,UAAU3f,SAASmhB,IACtBA,EAAGpB,KAAK,CACN1sC,OACA+6B,UAFF,GAKH,E,mBrJpBD7pC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAa,EAAQ,QAAe,EAAQ,QAAiD,EAAQ,QAA8B,EAAQ,QAA6B,EAAQ,MAA4B,EAAQ,QAA4C,EAAQ,MAA0B,EAAQ,QAAwC,EAAQ,O,yBAF7X,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,SACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBGAjBvsC,EAAOD,QAAU2sC,C,mBEAjB1sC,EAAOD,QAAU+sC,C,mBCAjB9sC,EAAOD,QAAUgtC,C,kBnHAjB/sC,EAAOD,QAAU,C,qN+IAjB,W,kGCiBO,SAAsB6oC,GACvBA,EAAIwB,sBAgBR,IAAAF,qBAAoBtB,EAAK,sBAAuB,MAC9C,MAAMwB,EAAsB,IAAI+C,EAAAA,SAC1B2H,GAAa,IAAA+H,oBAOnB,MAAMC,UAA2BhI,EAC/BhxC,WAAAA,EAAY,OACVyvC,EADU,SAEV3xC,EAFU,KAGVpB,IAEAk9B,MAAM,CACJ6V,YAEF,IAAArJ,qBAAoB/lC,KAAM,WAAYvC,IACtC,IAAAsoC,qBAAoB/lC,KAAM,OAAQ3D,IAClC,IAAA0pC,qBAAoB/lC,KAAM,OAAQq8B,EAAIz9B,KAAKwwC,EAAOjxC,KAAM9B,GACzD,CAEDu8C,UAAAA,GACE,MAAO,CACLjuC,KAAM,WACNtO,KAAM2D,KAAK3D,KAEd,CAED,eAAOw8C,CAASC,EAAWvR,GACzB5d,EAAAA,QAAEwB,KAAKoc,GAAY,CAAC9pC,EAAUpB,MAa5B,IAAAquC,+BAA8BoO,EAAWz8C,GANzC,WACE,OAAO,IAAIoB,EAASkN,KAAKq7B,mBAAmB,CAC1CmJ,WAAY,IAAIwJ,EAAmB,CAAEvJ,OAAQpvC,KAAMvC,WAAUpB,UAEhE,GAED,GAEH,EAIH,MAAM08C,GAAiB,IAAAC,sBAAqBrI,EAAYtU,EAAKoI,GACvDwU,GAAoB,IAAAC,yBAAwBvI,GAC5CwI,GAAiB,IAAAC,sBAAqBzI,EAAYlM,GAClDuB,GAAqB,IAAAqT,4BAO3B,SAASC,EAA0B3uC,GAEjC,MAAM4uC,EAAO5uC,EAAKogC,SAAWpgC,EAAKogC,SAAS/E,mBAAqBA,EAE1DwT,EAAe,cAAcD,IAYnC,OAJA,IAAAxT,qBAAoByT,EAAa97C,UAAW,OAAQiN,GAEpDs7B,EAAoBwT,SAASD,EAAc7uC,EAAKtO,MAEzCm9C,CACR,CAyGD,OArGA7vB,EAAAA,QAAEwB,KAAK,CAKLge,cAAe,CAQb3tC,OAAAA,GAGE,OAF2B89C,EAA0Bt5C,KAGtD,GAGHmqC,WAAY,CAQV3uC,OAAAA,GACE,MAAMk+C,EAAkBJ,EAA0Bt5C,MAKlD,OAHA+4C,EAAeF,SAASa,GACxBf,EAAmBE,SAASa,EAAiB15C,KAAKunC,YAE3CmS,CACR,GASHlP,eAAgB,CAQdhvC,OAAAA,GACE,MAAMm+C,EAAsBL,EAA0Bt5C,MAStD,OAPA+4C,EAAeF,SAASc,GAEpB35C,KAAKqvC,uBAAuB5K,EAAIoE,MAAM0C,YACxC0N,EAAkBJ,SAASc,GAE7BhB,EAAmBE,SAASc,EAAqB35C,KAAKunC,YAE/CoS,CACR,GAGH/O,aAAc,CAQZpvC,OAAAA,GACE,MAAMo+C,EAAoBN,EAA0Bt5C,MAIpD,OAFAm5C,EAAeN,SAASe,GAEjBA,CACR,KAGF,CAACC,EAAKrQ,MAMP,IAAAkB,+BAA8BjG,EAAIoE,MAAMW,GAAW,qBAAsBqQ,EAAIr+C,QAA7E,IAGFmuB,EAAAA,QAAE+E,MAAMuX,GACLF,oBAAoB,qBAAsBC,GAC1CD,oBAAoB,aAAc4K,GAClC5K,oBAAoB,qBAAsB4S,GAC1C5S,oBAAoB,iBAAkBgT,GACtChT,oBAAoB,oBAAqBkT,GACzClT,oBAAoB,iBAAkBoT,GACtCp8C,QAEIkpC,CAtLuC,KAwLjD,EAtND,I,EAAA,G,EAAA,O,2BACA,QAIA,E,uSAAA,QACA,QACA,O,KvJTEpqC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,MAA4B,EAAQ,QAA4B,EAAQ,Q,yBAFxK,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,SACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBGAjBvsC,EAAOD,QAAU2sC,C,mBEAjB1sC,EAAOD,QAAU+sC,C,mBCAjB9sC,EAAOD,QAAUgtC,C,kBnHAjB/sC,EAAOD,QAAU,C,qNiJAjB,W,kGCiBO,SAAsB6oC,GACvBA,EAAIwB,sBAgBR,IAAAF,qBAAoBtB,EAAK,sBAAuB,MAC9C,MAAMwB,EAAsB,IAAI+C,EAAAA,SAC1B2H,GAAa,IAAA+H,oBAOnB,MAAMC,UAA2BhI,EAC/BhxC,WAAAA,EAAY,OACVyvC,EADU,SAEV3xC,EAFU,KAGVpB,IAEAk9B,MAAM,CACJ6V,YAEF,IAAArJ,qBAAoB/lC,KAAM,WAAYvC,IACtC,IAAAsoC,qBAAoB/lC,KAAM,OAAQ3D,IAClC,IAAA0pC,qBAAoB/lC,KAAM,OAAQq8B,EAAIz9B,KAAKwwC,EAAOjxC,KAAM9B,GACzD,CAEDu8C,UAAAA,GACE,MAAO,CACLjuC,KAAM,WACNtO,KAAM2D,KAAK3D,KAEd,CAED,eAAOw8C,CAASC,EAAWgB,GACzBnwB,EAAAA,QAAEwB,KAAK2uB,GAAsB,CAACr8C,EAAUpB,MAatC,IAAAquC,+BAA8BoO,EAAWz8C,GANzC,WACE,OAAO,IAAIoB,EAASkN,KAAKq7B,mBAAmB,CAC1CmJ,WAAY,IAAIwJ,EAAmB,CAAEvJ,OAAQpvC,KAAMvC,WAAUpB,UAEhE,GAED,GAEH,EAGH,MAAM09C,UAA2BpJ,EAC/BhxC,WAAAA,EAAY,OACVyvC,EADU,KAEV/yC,IAEAk9B,MAAM,CACJ6V,YAEF,IAAArJ,qBAAoB/lC,KAAM,OAAQ3D,IAClC,IAAA0pC,qBAAoB/lC,KAAM,OAAQq8B,EAAIz9B,KAAKwwC,EAAOjxC,KAAM9B,GACzD,CAED,eAAOw8C,CAASC,EAAWkB,GACzB,SAASC,EAAiBC,EAAOC,GAC/BxwB,EAAAA,QAAEwB,KAAKgvB,GAAgBxvC,KAYrB,IAAA+/B,+BAA8BwP,EAAOvvC,EAAKoiC,cAL1C,WACE,OAAO,IAAIpiC,EAAKq7B,mBAAmB,CACjCmJ,WAAY,IAAI4K,EAAmB,CAAE3K,OAAQpvC,KAAM3D,KAAMsO,EAAKoiC,gBAEjE,GACD,GAEH,CACDkN,EAAiBnB,EAAWkB,EAASpM,SACrCqM,EAAiBnB,EAAWkB,EAASnM,UACtC,EAGH,MAAMkL,GAAiB,IAAAC,sBAAqBrI,EAAYtU,EAAKoI,GACvDwU,GAAoB,IAAAC,yBAAwBvI,GAC5CwI,GAAiB,IAAAC,sBAAqBzI,EAAYlM,GAClDuB,GAAqB,IAAAqT,4BAO3B,MAAM9F,UAAqCvN,EAQzCrmC,WAAAA,EAAY,WACVwvC,GACE,CAAC,GACH5V,MAAM,CAAE4V,cACT,EAQH,SAASmK,EAA0B3uC,GAEjC,MAAMyvC,EAAczvC,aAAgB85B,EAAIoE,MAAM2B,eAC5C+I,EACAvN,EACIuT,EAAO5uC,EAAKogC,SAAWpgC,EAAKogC,SAAS/E,mBAAqBoU,EAE1DZ,EAAe,cAAcD,IAYnC,OAJA,IAAAxT,qBAAoByT,EAAa97C,UAAW,OAAQiN,GAEpDs7B,EAAoBwT,SAASD,EAAc7uC,EAAKtO,MAEzCm9C,CACR,CAgHD,OA5GA7vB,EAAAA,QAAEwB,KAAK,CAKLge,cAAe,CAQb3tC,OAAAA,GAGE,OAF2B89C,EAA0Bt5C,KAGtD,GAGHmqC,WAAY,CAQV3uC,OAAAA,GACE,MAAMk+C,EAAkBJ,EAA0Bt5C,MAOlD,OALA+4C,EAAeF,SAASa,GACxBf,EAAmBE,SAASa,EAAiB15C,KAAK85C,sBAC9C95C,KAAKg6C,UACPD,EAAmBlB,SAASa,EAAiB15C,KAAKg6C,UAE7CN,CACR,GASHlP,eAAgB,CAQdhvC,OAAAA,GACE,MAAMm+C,EAAsBL,EAA0Bt5C,MAYtD,OAVA+4C,EAAeF,SAASc,GAEpB35C,KAAKqvC,uBAAuB5K,EAAIoE,MAAM0C,YACxC0N,EAAkBJ,SAASc,GAE7BhB,EAAmBE,SAASc,EAAqB35C,KAAK85C,sBAClD95C,KAAKg6C,UACPD,EAAmBlB,SAASc,EAAqB35C,KAAKg6C,UAGjDL,CACR,GAGH/O,aAAc,CAQZpvC,OAAAA,GACE,MAAMo+C,EAAoBN,EAA0Bt5C,MAIpD,OAFAm5C,EAAeN,SAASe,GAEjBA,CACR,KAGF,CAACC,EAAKrQ,MAMP,IAAAkB,+BAA8BjG,EAAIoE,MAAMW,GAAW,qBAAsBqQ,EAAIr+C,QAA7E,IAGFmuB,EAAAA,QAAE+E,MAAMuX,GACLF,oBAAoB,qBAAsBC,GAC1CD,oBAAoB,+BAAgCwN,GACpDxN,oBAAoB,aAAc4K,GAClC5K,oBAAoB,qBAAsB4S,GAC1C5S,oBAAoB,iBAAkBgT,GACtChT,oBAAoB,oBAAqBkT,GACzClT,oBAAoB,iBAAkBoT,GACtCpT,oBAAoB,qBAAsBgU,GAC1Ch9C,QAEIkpC,CArPuC,KAuPjD,EArRD,I,EAAA,G,EAAA,O,2BACA,QAIA,E,uSAAA,QACA,QACA,O,KzJTEpqC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,MAA4B,EAAQ,QAA4B,EAAQ,Q,yBAFxK,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,EAAxD,OACD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBoHVAhC,EAAOD,QAAUwsC,C,mBGAjBvsC,EAAOD,QAAU2sC,C,mBEAjB1sC,EAAOD,QAAU+sC,C,kBlHAjB9sC,EAAOD,QAAU,C,6jDmJAjB,YAEA,O,uGCiBO,SAA2BktC,EAAYD,EAAOQ,GACnD,OAAO,SAASI,EAAYptC,EAAMqtC,GAChC,GAVqB2Q,EAUAC,EAANj+C,EATNylB,OAAOu4B,EAAQn7C,UAAYm7C,EAUlC,OAAO5Q,EAPb,SAAuBlpC,EAAK85C,GAC1B,OAAO95C,EAAIuhB,MAAM,GAAIu4B,EAAQn7C,OAC9B,CAKwBq7C,CAAcl+C,EAAMi+C,GAA0B5Q,GAAW6E,eAXlF,IAAyB8L,EAcrB,GAjB6C,IAiB7Bh+C,EAjBFgD,QAAQwqC,GAiBC,CACrB,IAAKf,EAAWzT,IAAIh5B,GAAO,CACzB,MAAMm+C,EAAe3Q,EAAkB3qC,OAAS,EAC1CoqC,EAAYjtC,EAAK+C,OAAOo7C,EAAcn+C,EAAK6C,OAASs7C,EAAe,GAAGv7C,MAAM,KAElF6pC,EAAW5Y,IAAI7zB,EAAM,IAAIgtC,EAAU,CAAEC,cACtC,CAED,OAAOR,EAAWnsC,IAAIN,EACvB,CAED,OAAOwsC,EAAM33B,QAAQ7U,EAAMqtC,EAC5B,CACF,E,oBAYM,SAA2BhO,EAAYuO,EAAYztC,QAAQ,MACxDktC,EAAc1pC,KAAd0pC,UAER,OAAO/f,EAAAA,QAAEokB,UAAUrS,GAAY,EAAG8N,YAAYntC,IAC5C,IAAI4tC,EAAU,CAAE5tC,OAAMqtC,YAAWF,cACpC,E,oBAYM,SAA2BjC,EAAYwC,EAAWvtC,QAAQ,MACvDktC,EAAc1pC,KAAd0pC,UAER,OAAO/f,EAAAA,QAAEokB,UAAUxG,GAAY,EAC7BiC,YACCntC,IACD,IAAI0tC,EAAS,CACX1tC,OACAmtC,WACAE,eAEL,E,aAEM,SAAoBb,GAQzB,OAAO,MAQLlpC,WAAAA,EAAY,KACVtD,IAEAstB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,OAAQ1pC,GAC5B0pC,oBAAoB,YAAaiD,EAAAA,SAASyR,aAAap+C,IACvD0pC,oBAAoB,YAAaiD,EAAAA,SAAS0R,aAAar+C,IACvDU,QACH8rC,EAAM4Q,SAASz5C,KAChB,EAEJ,E,sBAEM,SAA6B26C,EAAan+C,QAM/C,OAAO,cAA4Bm+C,EAQjCh7C,WAAAA,EAAY,KACVtD,EADU,OAEVmwC,IAEAjT,MAAM,CAAEl9B,UACR,IAAA0pC,qBAAoB/lC,KAAM,SAAUwsC,EACrC,EAEJ,E,iBAGM,SAAwB/C,GAO7B,OAAO,MASL9pC,WAAAA,EAAY,KACVtD,EADU,SAEVmtC,EAFU,UAGVE,IAEA/f,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,OAAQ1pC,GAC5B0pC,oBAAoB,WAAYyD,GAChCc,uBAAuB,QAAQ,IAAMb,EAAYD,EAAUE,KAC3D3sC,OACJ,EAEJ,E,kBAEM,SAAyB0sC,GAO9B,OAAO,MASL9pC,WAAAA,EAAY,KACVtD,EADU,SAEVmtC,EAFU,UAGVE,IAEA/f,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,OAAQ1pC,GAC5B0pC,oBAAoB,WAAYyD,GAChCc,uBAAuB,QAAQ,IAAMb,EAAYD,EAAUE,KAC3D3sC,OACJ,EAEJ,E,uBAEM,SAA8B49C,EAAan+C,OAAQitC,GAOxD,OAAO,MAAMe,UAAuBmQ,EASlCh7C,WAAAA,EAAY,WACV4nC,EADU,aAEV6C,EAFU,gBAGVO,IAEApR,MAAM,CACJl9B,KAAMmuC,EAAewB,mBAAmBrB,GACxCpD,aACA6C,iBAEFzgB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,kBAAmB4E,GACvCL,uBAAuB,eAAe,IAAMb,EAAYzpC,KAAK2qC,gBAAiB3qC,KAAK0pC,aACnF3sC,OACJ,CAOD,yBAAOivC,CAAmBxC,GACxB,MAAQ,GAAEA,IAAW8Q,GACtB,EAEJ,E,2BA3OD,I,EAAA,G,EAAA,O,2BACA,QACA,QAEO,MAAMzQ,EAAoB,S,sBACjC,MAAMyQ,EAA0B,O,sGCDzB,WAKL,OAAO,MACL36C,WAAAA,EAAY,OACVyvC,KAEA,IAAArJ,qBAAoB/lC,KAAM,SAAUovC,EACrC,CAEDvZ,MAAAA,GACE,MAAO,IAAI71B,KAAKovC,OAAOvZ,SAAU71B,KAAK44C,aACvC,CAEDA,UAAAA,GACE,MAAM,IAAIn8B,MAAM,eACjB,EAEJ,E,uBAEM,SAA8Bk+B,EAAan+C,OAAQ6/B,EAAKoI,GAO7D,OAAO,MAAMsU,UAAuB4B,EAClCh7C,WAAAA,EAAY,OACVyvC,EADU,KAEVzkC,EAFU,KAGVtO,EAAOsO,EAAKtO,OAEZk9B,MAAM,CACJ6V,WAGFzlB,EAAAA,QAAE+E,MAAM1uB,MACL+lC,oBAAoB,OAAQp7B,GAC5Bo7B,oBAAoB,OAAQ1pC,GAC5BU,SAEH,IAAAgpC,qBAAoB/lC,KAAM,OAAQq8B,EAAIz9B,KAAKwwC,EAAOjxC,KAAM9B,GACzD,CAEDu8C,UAAAA,GACE,MAAO,CACLjuC,KAAM,WACNtO,KAAM08C,EAAe6B,eACrBlf,WAAY,CAAC17B,KAAK3D,MAErB,CAED,yBAAWu+C,GACT,MAAO,OACR,CAED,eAAO/B,CAASC,IAkBd,IAAA/S,qBAAoB+S,EAAUp7C,UAAWq7C,EAAe6B,gBAVxD,SAAuBv+C,GACrB,MAAMw+C,EAAapW,EAAIoE,MAAM33B,QAAQ7U,EAAM2D,KAAK2K,KAAK++B,WAC/C/+B,EAAOmuC,EAAUp7C,UAAUiN,gBAAgB85B,EAAIoE,MAAM2B,eACzDqQ,EAAWtM,eACXsM,EACI1L,EAAa,IAAI4J,EAAe,CAAE3J,OAAQpvC,KAAM2K,KAAMkwC,EAAYx+C,SAExE,OAAO,IAAIsO,EAAKq7B,mBAAmB,CAAEmJ,cACtC,GAGF,EAEJ,E,0BAEM,SAAiCwL,EAAan+C,QAOnD,OAAO,MAAMy8C,UAA0B0B,EACrCh7C,WAAAA,EAAY,OACVyvC,EADU,IAEV/xC,EAFU,oBAGVy9C,IAEAvhB,MAAM,CACJ6V,YAGF,IAAArJ,qBAAoB/lC,KAAM,MAAO3C,IACjC,IAAA0oC,qBAAoB/lC,KAAM,OAAQ,MAIhC,GAAI2pB,EAAAA,QAAEkL,SAASx3B,GAAM,CACnB,GAAIy9C,EACF,OAAOC,EAAQn8C,KAAKwwC,EAAOjxC,KAAMd,GAEnC,MAAM29C,EAAUrxB,EAAAA,QAAE+E,MAAM0gB,GACrB3zB,OAAO,QACPA,OAAO,eACPA,OAAO,eACPA,OAAO,YACP1e,QAEH,GAAgB,YAAZi+C,GACE39C,EAAI8e,MAAM,0BACZ,MAAQ,GAAEizB,EAAOjxC,QAAQd,KAG7B,GAAgB,WAAZ29C,EACF,MAAQ,GAAE5L,EAAOjxC,SAASd,KAE7B,CAED,MAAQ,GAAE+xC,EAAOjxC,QAAQyf,KAAKoa,UAAU36B,KAzBR,KA2BnC,CAEDu7C,UAAAA,GACE,MAAO,CACLjuC,KAAM,WACNtO,KAAM48C,EAAkB2B,eACxBlf,WAAY,CAAC17B,KAAK3C,KAErB,CAED,yBAAWu9C,GACT,MAAO,UACR,CAED,eAAO/B,CAASC,IAgBd,IAAA/S,qBACE+S,EAAUp7C,UACVu7C,EAAkB2B,gBARpB,SAA0Bv9C,EAAKy9C,GAAsB,GACnD,MAAM3L,EAAa,IAAI8J,EAAkB,CAAE7J,OAAQpvC,KAAM3C,MAAKy9C,wBAE9D,OAAO,IAAI96C,KAAK2K,KAAK0kC,YAAYrJ,mBAAmB,CAAEmJ,cACvD,GAOF,EAEJ,E,uBAEM,SAA8BwL,EAAan+C,OAAQioC,GAMxD,OAAO,MAAM0U,UAAuBwB,EAClCh7C,WAAAA,EAAY,OACVyvC,EADU,WAEV1T,EAAa,CAAC,IAEdnC,MAAM,CACJ6V,YAEF,IAAArJ,qBAAoB/lC,KAAM,aAAc07B,GAExC,MAAMv9B,EAAOixC,EAAOzkC,gBAAgB85B,EAAIoE,MAAMsE,WAC5CiC,EAAOjxC,KAAQ,GAAEixC,EAAOjxC,QAAQwrB,EAAAA,QAAExd,IAAIuvB,GAAY,CAAC3+B,EAAOV,IAAU,GAAEA,KAAQU,MAAS6B,KAAK,SAE9F,IAAAmnC,qBAAoB/lC,KAAM,OAAQ7B,EACnC,CAEDy6C,UAAAA,GACE,MAAO,CACLjuC,KAAM,WACNtO,KAAM88C,EAAeyB,eAErBlf,WAAY,CAAC17B,KAAK07B,YAErB,CAED,yBAAWkf,GACT,MAAO,OACR,CAED,eAAO/B,CAASC,IAed,IAAA/S,qBAAoB+S,EAAUp7C,UAAWy7C,EAAeyB,gBANxD,SAAuBlf,GACrB,MAAMyT,EAAa,IAAIgK,EAAe,CAAE/J,OAAQpvC,KAAM07B,eAEtD,OAAO,IAAI17B,KAAK2K,KAAKswC,WAAWjV,mBAAmB,CAAEmJ,cACtD,GAGF,EAEJ,E,2BAGM,WAML,OAAO,MAQLxvC,WAAAA,EAAY,WACVwvC,GACE,CAAC,GACCA,IACF,IAAApJ,qBAAoB/lC,KAAM,aAAcmvC,IACxC,IAAApJ,qBAAoB/lC,KAAM,OAAQmvC,EAAWhxC,QAE7C,IAAA4nC,qBAAoB/lC,KAAM,OAAQ,GAErC,CAED61B,MAAAA,GACE,OAAI71B,KAAKmvC,WACAnvC,KAAKmvC,WAAWtZ,SAGlB,EACR,CAGDqlB,iBAAAA,CAAkBC,GAEhB,IAAI7L,EAAYtvC,KAIhB,IAAK,MAAMlE,KAAKq/C,EAAM,CACpB,MAAMx8C,EAAOw8C,EAAKr/C,GAQlB,GANkB,aAAd6C,EAAKgM,KACP2kC,EAAYA,EAAU3wC,EAAKtC,MACJ,aAAdsC,EAAKgM,OACd2kC,EAAYA,EAAU3wC,EAAKtC,SAASsC,EAAK+8B,cAGtC4T,EACH,OAAO,IAEV,CAED,OAAOA,CACR,EAEJ,EA3RD,I,EAAA,G,EAAA,O,2BACA,QACA,E,uSAAA,O,K5JAEzzC,EAAOD,QAAUJ,EAAQ,EAAQ,QAAe,EAAQ,QAA8B,EAAQ,MAA4B,EAAQ,Q,yBAFpI,IAAiDA,EAS7B,qBAATC,MAAuBA,KATeD,EASD,SAAS,GACzD,mBCTE,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,CDxErD,C,kBOVAhC,EAAOD,QAAU,C,iOsJAjB,W,0GCAA,YACA,QAEA,IAAIw/C,E,mBAEG,MAML,WAAOC,CAAKC,GACVF,EAAkBE,CACnB,CAOD,mBAAOC,CAAal/C,GAClB,IAAIqO,EAAW,KAIf,OAHI0wC,IACF1wC,GAAW,IAAA8wC,gBAAeJ,IAErB,IAAIK,EAAAA,UAAUp/C,EAAMqO,EAC5B,E,iGCQI,SAAwB0wC,GAG7B,OAjBF,SAAqBA,GAMnB,OALIzxB,EAAAA,QAAEnpB,QAAQk7C,KACZN,EAAgBO,YAAY9V,GAC5B6V,EAAoBN,EAAgBQ,UAAUx+C,UAGzCs+C,CACR,CAQkBG,CAAYT,GAEbU,QAAQ1+C,QACzB,EAtCD,I,EAAA,G,EAAA,O,2BAEA,MAAMyoC,EAAS,CACbkW,SAAU,CACR,CACE1/C,KAAM,YACNU,MAAO,YACPi/C,QAAS,CAAC,EACVtxC,SAAU,CACR,CACErO,KAAM,UACNU,MAAO,eAOjB,IAAI2+C,EAAoB,I,+GChBjB,MACL/7C,WAAAA,CAAYtD,EAAMqO,GAChB1K,KAAK3D,KAAOA,EACZ2D,KAAK0K,SAAWA,CACjB,CAQDuxC,GAAAA,CAAIh2C,EAAQi2C,GACV,IAAKl8C,KAAK0K,SAAU,OAEpB,MAAML,EAAU,CACd8xC,QAlBU,mBAmBVC,WAAYp8C,KAAK3D,KACjBgyC,OAAQpoC,EACRo2C,OAAQH,GAGVl8C,KAAK0K,SAASd,MAAMgU,KAAKoa,UAAU3tB,GAAUrK,KAAK3D,KACnD,E,KhKvBDR,EAAOD,QAAUJ,EAAQ,EAAQ,Q,4ICDjC,IAAIE,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,I,oB8ElFrDhC,EAAOD,QAAU,C,mBCAjBC,EAAOD,QAAUi3B,C,sSiFAjB,gBACA,Y,iyBCDA,cACA,WACA,UACA,YACA,Y,2KAEe,MAAMypB,UAAmB9mB,EAAAA,QAAS+C,KAwB/CC,UAAAA,EAAW,SACT+jB,GAAW,EADF,sBAETC,EAAwB,GAFf,oCAGTC,EAHS,UAITC,EAAY/yB,EAAAA,QAAE2W,KAJL,KAKT78B,EAAO,CAAC,EALC,gBAMTk5C,EAAkB,OANT,eAOTC,GAAiB,EAPR,UAQTC,GAAY,IAYZ,GAVA78C,KAAKu8C,SAAWA,EAChBv8C,KAAKyD,KAAOA,EACZzD,KAAKw8C,sBAAwB,GAC7Bx8C,KAAK48C,eAAiBA,EACtB58C,KAAK68C,UAAYA,EAEZlzB,EAAAA,QAAEmK,WAAWrwB,EAAKpD,aACrBL,KAAKyD,KAAO,CAAEpD,UAAWspB,EAAAA,QAAEob,YAGxBpb,EAAAA,QAAEnpB,QAAQg8C,GAAwB,CACrC,IAAI7yB,EAAAA,QAAEjhB,QAAQ8zC,GAGZ,MAAM,IAAI//B,MAAM,wDAFhBzc,KAAKw8C,sBAAwBA,CAIhC,CAEDx8C,KAAKihC,UAAY,IAAIP,EAAAA,QAAU,CAC7Bj9B,KAAMzD,KAAKyD,KACXi5C,YACAF,sBAAuBx8C,KAAKw8C,sBAC5BC,sCACAK,cAAe,IAAM98C,KAAK+8C,WAC1BC,eAAgB,IAAMh9C,KAAKi9C,YAC3BvsB,QAAS1wB,KAAK0wB,QAAQpzB,KAAK0C,MAC3B28C,kBACAC,eAAgB58C,KAAK48C,iBAGvB58C,KAAKk9C,eAAiBvzB,EAAAA,QAAEsP,SAAS,gBAClC,CAEDlD,MAAAA,GAUE,OATA/1B,KAAKuxB,IAAIC,MAAK,aAAS,CACrB0rB,eAAgBl9C,KAAKk9C,eACrBz5C,KAAMzD,KAAKyD,KACX84C,SAAUv8C,KAAKu8C,SACfY,aAAcn9C,KAAKw8C,sBAAsB59C,OACzCg+C,eAAgB58C,KAAK48C,eACrBC,UAAW78C,KAAK68C,aAElB7c,EAAAA,QAAGod,cAAcp9C,KAAKihC,UAAWjhC,KAAKu2B,IAC/Bv2B,IACR,CAED,UAAIm0B,GAIF,O,uUAAA,EACE,qBAAsB,cAJFn0B,KAAd68C,UACwB,CAAE,yBAA0B,yBAA4B,CAAC,EAM1F,CAKD,YAAIQ,GACF,OAAOr9C,KAAKihC,UAAUoc,UACvB,CAcD,cAAIN,GACF,OAAOpzB,EAAAA,QAAEW,MAAMtqB,KAAKi9C,YACrB,CAED,eAAIA,GACF,OAAOtzB,EAAAA,QAAEW,MAAMtqB,KAAK0xB,EAAG,IAAG1xB,KAAKk9C,mBAAmBI,KACnD,CAEDC,UAAAA,GACEv9C,KAAKihC,UAAUoc,SAAS,GACzB,CAEDG,qBAAAA,GACEx9C,KAAK0xB,EAAG,IAAG1xB,KAAKk9C,kBAAkBxsB,QAAQ,QAC3C,CAED+sB,2BAAAA,CAA4BC,GAC1B19C,KAAKihC,UAAUxW,OAAO/C,KAAKg2B,EAC5B,CAEDC,SAAAA,GACE,OAAO39C,KAAKihC,UAAU0c,WACvB,E,gHCzIH,cACA,WACA,YACA,W,mDAEA,SAASC,EACPlB,EACAmB,EACAC,EACAtiB,GAEA,OAAOvqB,EAAAA,QAAQC,QAAQwrC,EAAUoB,IAAO1sC,MAAK2sC,GAC3C,IAAI9sC,EAAAA,SAAQ,CAACC,EAASu0B,KAChBsY,EACFtY,EAAO,IAAIhpB,MAAMkN,EAAAA,QAAEkL,SAASkpB,GAAiBA,EAAgBF,IAE7D3sC,EAAQ4sC,EACT,MACCxgD,KAAKk+B,EACZ,C,UAEc,MACb77B,WAAAA,EAAY,KACV8D,EADU,sBAEV+4C,EAFU,oCAGVC,EAHU,UAIVC,EAJU,cAKVI,EALU,eAMVE,EANU,QAOVtsB,EAPU,gBAQVisB,EARU,eASVC,IAEA58C,KAAKyD,KAAOA,EACZzD,KAAKw8C,sBAAwB7yB,EAAAA,QAAExd,IAAIqwC,GAAuBwB,GAAOA,EAAIt8B,gBACrE1hB,KAAKy8C,oCAAsCA,EAE3Cz8C,KAAK08C,UAAYA,EACjB18C,KAAK88C,cAAgBA,EACrB98C,KAAKg9C,eAAiBA,EACtBh9C,KAAK0wB,QAAUA,EACf1wB,KAAK48C,eAAiBA,EAEtB58C,KAAKq9C,SAAWrd,EAAAA,QAAGC,WAAW,IAC9BjgC,KAAKyqB,OAASuV,EAAAA,QAAGie,kBACjBj+C,KAAK29C,UAAY3d,EAAAA,QAAGke,UAAS,IAAMl+C,KAAKyqB,SAASvrB,OAAS,GAAGc,MAC7DA,KAAK28C,gBAAkB3c,EAAAA,QAAGke,UAAS,KACjC,MAAMC,EAAWn+C,KAAKq9C,WAEtB,OAAO1zB,EAAAA,QAAElO,OAAO,CACd2iC,KAAMD,EACNxgB,SAAU,IAAMwgB,EAAS5+C,QAAQ,YAAa,KAC7Co9C,EAHH,IAMEC,EAGF58C,KAAKq+C,cAAgB,KACnBr+C,KAAKs+C,mBAAL,EAGFt+C,KAAKq9C,SAAS3F,WAAW6G,IACvBv+C,KAAKs+C,kBAAkBC,EAAvB,GAGL,CAEDD,iBAAAA,CAAkBC,GAGhB,IAAIjB,EAAQ,GACZ,GAAIt9C,KAAK48C,eACPU,EAAQt9C,KAAKg9C,qBACR,CACL,MAAMc,EAAO99C,KAAK88C,gBACdgB,GACFR,EAAM51B,KAAKo2B,EAEd,CAMD,GAJA99C,KAAKw+C,cAELx+C,KAAK0wB,QAAQ,UAAW6tB,GAEpB50B,EAAAA,QAAEnpB,QAAQ88C,GACZt9C,KAAK0wB,QAAQ,eACR,CACL,MAAM+tB,EAAuB,GAC7B90B,EAAAA,QAAEwB,KAAKmyB,GAAQQ,IACbW,EAAqB/2B,KAAK1nB,KAAK0+C,kBAAkBZ,GAAM1sC,MAAK,KAC1DpR,KAAK2+C,aAAab,EAAlB,IADF,IAKF7sC,EAAAA,QAAQsB,IAAIksC,GACTrtC,MAAK,IAAMpR,KAAK0wB,QAAQ,eACxBugB,OAAO2N,IACN5+C,KAAK6+C,kBAAkBD,EAAvB,GAEL,CACF,CAED,sBAAIE,GACF,OAAQhB,IACN,GAAIn0B,EAAAA,QAAEnpB,QAAQR,KAAKw8C,uBACjB,OAAO,EAGT,MAAMuC,EAAY5gD,EAAAA,QAAK6gD,QAAQlB,EAAKzhD,MAAMqlB,cAC1C,OAA0D,IAAtDiI,EAAAA,QAAEtqB,QAAQW,KAAKw8C,sBAAuBuC,IACxC/+C,KAAK0wB,QAAQ,mBAEN1wB,KAAKy8C,sCAAuC,GAG9C,IAAP,CAEH,CAEDiC,iBAAAA,CAAkBZ,GAChB,OAAOF,EACL59C,KAAK8+C,mBAAmBxhD,KAAK0C,MAC7BA,KAAKyD,KAAKpD,UAAU,kCAAmC,CAAEm8C,sBAAuBx8C,KAAKw8C,wBACrFsB,EACA99C,KAEH,CAED2+C,YAAAA,CAAab,GACX,OAAOF,EAAmB59C,KAAK08C,UAAW18C,KAAKyD,KAAKpD,UAAU,0BAA2By9C,EAAM99C,KAChG,CAED6+C,iBAAAA,CAAkBD,GAChB5+C,KAAKyqB,OAAO/C,KAAKk3B,EAAOv0C,QACzB,CAEDm0C,WAAAA,GACEx+C,KAAKyqB,OAAO,GACb,E,oBC3IH5uB,EAAOD,QAAUqjD,C,sBCAjB,IAAIzsB,EAAMC,EAAQ,IAiBlB52B,EAAOD,QAfP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EAc0vB,OAdtvB,SAAUyqB,EAAcP,EAAgBM,EAAgBz5C,EAAM84C,EAAUM,GAAYlqB,EAAWA,EAAW,OAAeH,EAAIpB,KAAK,QAASoB,EAAI3pB,QAAQ,CAAC0zC,EAAW,SAAW,IAAK,EAAC,KAAQ,GAAO,GAAS,IAO7T5pB,GALAA,EADIkqB,EACOlqB,EAAW,8GAA+HH,EAAIiH,OAAO,OAASD,EAAa/1B,EAAKpD,UAAU,qCAAuC,GAAKm5B,GAAe,YAGrP7G,6DAAmFH,EAAIpB,KAAK,MAAO8rB,GAAgB,GAAM,GAAzHvqB,gFAAmOH,EAAIiH,OAAO,OAASD,EAAa/1B,EAAKpD,UAAU,qCAAuC,GAAKm5B,GAAe,YAEnU,2LAA6OhH,EAAIiH,OAAO,OAASD,EAAa/1B,EAAKpD,UAAU,qCAAuC,GAAKm5B,GAAe,aAE9W7G,EADIiqB,EACOjqB,EAAW,SAAiBH,EAAIpB,KAAK,QAASoB,EAAI3pB,QAAQ,CAAC,oBAAoB0zC,EAAW,GAAK,UAAW,EAAC,GAAM,KAAQ,GAAO,GAAM,uFAA2F/pB,EAAIpB,KAAK,KAAM8rB,GAAgB,GAAM,GAAM1qB,EAAIpB,KAAK,SAAU+rB,GAAc,GAAM,GAAM3qB,EAAIpB,KAAK,YAAY,GAAM,GAAM,GAAS,IAGnWuB,EAAW,SAAiBH,EAAIpB,KAAK,QAASoB,EAAI3pB,QAAQ,CAAC,oBAAoB0zC,EAAW,GAAK,UAAW,EAAC,GAAM,KAAQ,GAAO,GAAM,sEAA0E/pB,EAAIpB,KAAK,KAAM8rB,GAAgB,GAAM,GAAM1qB,EAAIpB,KAAK,SAAU+rB,GAAc,GAAM,GAAS,IAEtTxqB,GAAsB,iHAd2F,EAcqE12B,KAAK+D,KAAK,iBAAkB4yB,EAAgBA,EAAgBuqB,aAAmC,qBAAfA,aAA2BA,kBAAaniC,EAAU,mBAAoB4X,EAAgBA,EAAgBgqB,eAAuC,qBAAjBA,eAA6BA,oBAAe5hC,EAAU,mBAAoB4X,EAAgBA,EAAgBsqB,eAAuC,qBAAjBA,eAA6BA,oBAAeliC,EAAU,SAAU4X,EAAgBA,EAAgBnvB,KAAmB,qBAAPA,KAAmBA,UAAKuX,EAAU,aAAc4X,EAAgBA,EAAgB2pB,SAA2B,qBAAXA,SAAuBA,cAASvhC,EAAU,cAAe4X,EAAgBA,EAAgBiqB,UAA6B,qBAAZA,UAAwBA,eAAU7hC,GAAoB2X,CAAU,C,mBtDhBx3B92B,EAAOD,QAAU2oC,C,kBxGAjB1oC,EAAOD,QAAU,C,kB4EAjBC,EAAOD,QAAU,C,qOlFCf,IAAIF,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,E,mSqKhFrD,WACA,O,qGCHA,cACA,UAEA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,Q,6NAaaqhD,E,WAwBX,aAA0B,IAAdn+C,EAAc,uDAAJ,CAAC,G,4FAAG,SACxBf,KAAKe,QAAUA,EACXA,EAAQo+C,cACVn/C,KAAKm/C,cAAgBp+C,EAAQo+C,cAE7Bn/C,KAAKm/C,cAAgB,IAAIC,EAAAA,cAAcr+C,GAEzCf,KAAKe,QAAQo+C,cAAgBn/C,KAAKm/C,cAClCn/C,KAAKe,QAAQs+C,cAAe,IAAAC,UAC1Bt/C,KAAKm/C,cAAcE,aACnBr/C,KAAKe,QAAQw+C,WACbv/C,KAAKe,QAAQ0C,MAEfzD,KAAKw/C,gBAAkB,IAAIC,EAAAA,gBAAgB1+C,GAC3Cf,KAAK0/C,eAAiB,IAAIC,EAAAA,eAAe5+C,GAEzC4oB,EAAAA,QAAEqK,OAAOh0B,KAAMw1B,EAAAA,QAASoqB,QACxB5/C,KAAK6/C,cACN,C,8DASc,WACTl2B,EAAAA,QAAEe,SAAS1qB,KAAKe,QAAQ6tB,QAAS,YACnC5uB,KAAK8/C,kBAAoB,IAAIC,EAAAA,kBAAkB//C,KAAKe,SAEpDf,KAAK80B,SAAS90B,KAAKw/C,gBAAiB,qBAAqB,WACvD,EAAKQ,aAAc,EACnB,EAAKC,kBACN,IACDjgD,KAAK80B,SAAS90B,KAAK0/C,eAAgB,qBAAqB,WACtD,EAAKM,aAAc,EACnB,EAAKC,kBACN,IACDjgD,KAAK80B,SAAS90B,KAAK8/C,kBAAmB,eAAe,WACnD,EAAKI,kBACN,IACDlgD,KAAK80B,SAAS90B,KAAK8/C,kBAAmB,wBAAwB,WAC5D,EAAKN,gBAAgBW,UACrB,EAAKzvB,QAAQ,uBACd,IACD1wB,KAAK80B,SAAS90B,KAAKw/C,gBAAiB,0BAA0B,WAC5D,EAAK9uB,QAAQ,yBACd,IACD1wB,KAAK80B,SAAS90B,KAAK8/C,kBAAmB,sBAAsB,WAC1D,EAAKI,mBACL,EAAKxvB,QAAQ,qBACd,KAIH1wB,KAAKm/C,cAAciB,cAAchvC,MAAK,WAAyB,MAIzD,EAAK+tC,cAFPkB,EAF2D,EAE3DA,eACAC,EAH2D,EAG3DA,YAGE32B,EAAAA,QAAEe,SAAS,EAAK3pB,QAAQ6tB,QAAS,cACnC,EAAK2xB,oBACL,IAAIC,EAAAA,oBAAoB72B,EAAAA,QAAEqK,OAAO,EAAKjzB,QAAS,CAAErC,OAAQ4hD,MAEtD32B,EAAAA,QAAEnpB,QAAQ6/C,IACb,EAAKI,eAER,IAGG92B,EAAAA,QAAEe,SAAS1qB,KAAKe,QAAQ6tB,QAAS,eACnC5uB,KAAK0gD,qBAAuB,IAAIC,EAAAA,qBAAqB3gD,KAAKe,UAG5Df,KAAK80B,SAAS90B,KAAKm/C,cAAe,2BAA2B,WAC3D,EAAKsB,eACN,IACDzgD,KAAK80B,SAAS90B,KAAKm/C,cAAe,wBAAwB,SAACyB,EAAgBC,GACvD,4BAAdA,GACF,EAAKJ,gBAEW,4BAAdI,IACE,EAAKH,sBACP,EAAKA,qBAAqBI,QAE5B,EAAKC,eAEP,EAAKrwB,QAAQ,uBAAwBkwB,EAAgBC,EACtD,GAAE7gD,MAEHA,KAAK80B,SAAS90B,KAAKm/C,cAAe,2BAA2B,SAAC3hB,GAC5D,EAAK9M,QAAQ,0BAA2B8M,EACzC,GAAEx9B,MAEHA,KAAKw/C,gBAAgBW,SACtB,G,yCAGKngD,KAAKm/C,cAAc6B,oBACrBhhD,KAAKygD,gBAELzgD,KAAK+gD,aAER,G,uCAEgBhyC,GACf/O,KAAKihD,kBAAoBlyC,EACzB/O,KAAK0wB,QAAQ,mBAAoB,CAC/BuvB,kBAAkB,EAClBc,aAAa,EACbN,eAAe,GAElB,G,sCAGKzgD,KAAK0/C,eAAewB,kBACtBlhD,KAAK0/C,eAAe3N,OAAO/xC,KAAKm/C,cAAc6B,qBAE9ChhD,KAAK0wB,QAAQ,mBAAoB,CAC/BqwB,aAAa,EACbN,eAAe,EACfR,kBAAkB,GAGvB,G,oCAGCjgD,KAAK0wB,QAAQ,mBAAoB,CAC/BqwB,aAAa,EACbN,eAAe,EACfR,kBAAkB,GAErB,G,wCAGC,GAAIjgD,KAAKihD,kBAAmB,CAC1B,IAAME,EAAenhD,KAAKm/C,cAAciC,mBAAmBphD,KAAKihD,mBAEhE,cADOjhD,KAAKihD,kBACLjhD,KAAK8/C,kBAAkB1iD,OAAO+jD,EACtC,CACD,GAAInhD,KAAKggD,YACP,OAAOhgD,KAAK8/C,kBAAkB1iD,SAEhC,IAAMijD,EAAiBrgD,KAAKm/C,cAAc6B,oBAC1C,OAAOX,EAAiBrgD,KAAK8/C,kBAC1B1iD,OAAO4C,KAAKm/C,cAAciC,oBACzB,IAAAC,WAAUhB,EAAetxC,OACzBsxC,EAAehkD,OACZ2D,KAAK8/C,kBAAkB1iD,OAAOijD,EACtC,G,qCAGC,OAAOrgD,KAAK0/C,eAAetiD,OAAO4C,KAAKm/C,cAAc6B,oBACtD,G,wCAEiBjyC,EAAO1S,GACvB2D,KAAKm/C,cAAcmC,kBAAkBvyC,EAAO1S,EAC7C,M,+DhK9MHR,EAAOD,QAAU,C,gB4EAjBC,EAAOD,QAAU22B,C,gB3DAjB12B,EAAOD,QAAU,C,gBgJAjBC,EAAOD,QAAU2lD,C,+5BCOJf,E,YACX,WAAYz/C,GAAS,O,4FAAA,SAEnB,IAAMygD,EAAe,CACnBzjC,GAAI,kBACJqmB,OAHF,wBAAMrjC,KAGQA,QAAQ0gD,SAASrd,MAC7Bsd,SAAU,SAAA/iD,GAAI,OAAI,EAAKi9B,MAAMj9B,EAAf,EACdgjD,0BAA2B,EAAK5gD,QAAQ0gD,SAASE,4BAA6B,GAGhF,GAAI5gD,EAAQrC,QAAUqC,EAAQrC,OAAOrB,IACnCmkD,EAAaI,YAAc7gD,EAAQrC,OAAOrB,QACrC,CACL,IAAMwkD,EAAsB,EAAK9gD,QAAQ0gD,SAASrd,MAAM,GACpDyd,EAAoB9kD,OAAS8kD,EAAoB9kD,MAAMgS,QACzDyyC,EAAaI,YAAcC,EAAoBxkD,IAC/C,EAAKu+B,MAAMimB,GAEd,CAjBkB,OAmBf,EAAK9gD,QAAQ+gD,YAAY3pB,SAC3B,EAAKp3B,QAAQ+gD,YAAYluB,KAAKme,OAAOyP,GAErC,EAAKzgD,QAAQ+gD,YAAYC,KAAK,YAAY,WACxC,EAAKhhD,QAAQ+gD,YAAYluB,KAAKme,OAAOyP,EACtC,IAxBgB,CA0BpB,C,8RAUK7iD,GACJqB,KAAKe,QAAQo+C,cAAc6C,eAAerjD,EAAKtB,IAAKsB,EAAK5B,MAC1D,M,8BA9CH,KAOyCklD,iB,gICPzC,cACA,U,6NAQaA,E,WACX,aAA0B,IAAdlhD,EAAc,uDAAJ,CAAC,G,4FAAG,SACxBf,KAAKe,QAAUA,EACf4oB,EAAAA,QAAEqK,OAAOh0B,KAAMw1B,EAAAA,QAASoqB,OACzB,C,qDASK7wC,EAAO1S,GACX2D,KAAKe,QAAQo+C,cAAcmC,kBAAkBvyC,EAAO1S,EACrD,M,0YCxBH,I,EAAA,G,EAAA,O,w0BAQaskD,E,YACX,WAAY5/C,GAAS,O,4FAAA,SAEnB,IAAMm1C,EAAU,CACdn4B,GAAI,oBACJ2jC,UAHF,E,sEAAA,qBAAM3gD,KAGW66B,MAAMt+B,KAAX,MACV4kD,YAAa,EAAKnhD,QAAQohD,UAAUD,YACpCE,UAAW,EAAKrhD,QAAQohD,UAAUC,WANjB,OAQf,EAAKrhD,QAAQ+gD,YAAY3pB,SAC3B,EAAKp3B,QAAQ+gD,YAAYluB,KAAKme,OAAOmE,GAErC,EAAKn1C,QAAQ+gD,YAAYC,KAAK,YAAY,WACxC,EAAKhhD,QAAQ+gD,YAAYluB,KAAKme,OAAOmE,EACtC,IAbgB,CAepB,C,8RAQKn5C,GACJ,GAAIA,EAAO,CACT,IAAMgS,EAAQ4a,EAAAA,QAAEnsB,OACd,CAACwC,KAAKe,QAAQohD,UAAUE,gBACxB,CAAC14B,EAAAA,QAAEnsB,OAAO,CAACwC,KAAKe,QAAQohD,UAAUG,gBAAkB,aAAc,CAACvlD,MAGrE,yCAAYgS,EACb,CACF,G,8BAOC/O,KAAKe,QAAQ+gD,YAAYluB,KAAKme,OAAO,CACnCh0B,GAAI,oBACJhhB,MAAO,IAEV,M,8BAnDH,KAO0CklD,iB,4WCR1C,I,EAAA,G,EAAA,O,2BACA,QACA,QACA,O,8uCAEMM,E,kIACQxhD,GACV,OAAO,IAAIyhD,EAAAA,aAAazhD,EACzB,K,GAHqCm3B,EAAAA,0BAa3B6nB,E,6HAOJrhD,GAAQ,WACTylC,EAAWzlC,EAEXsB,KAAKe,QAAQ0hD,2BACfte,EAAWnkC,KAAKe,QAAQ0hD,yBAAyBte,IAGnD,IAAMvQ,EAAO,IAAI2uB,EAA0B,CACzCpe,SAAAA,EACAue,gBAAiB1iD,KAAKe,QAAQ2hD,gBAC9BrD,aAAcr/C,KAAKe,QAAQs+C,aAC3BE,WAAYv/C,KAAKe,QAAQw+C,WACzBx4B,WAAY/mB,KAAKe,QAAQ4lC,MAAM5f,WAC/B47B,mBAAoBh5B,EAAAA,QAAEmK,WAAW9zB,KAAKe,QAAQ6hD,OAAOD,oBACnD3iD,KAAKe,QAAQ6hD,OAAOD,qBAAuB3iD,KAAKe,QAAQ6hD,OAAOD,mBACjEE,mBAAoB7iD,KAAKe,QAAQ6hD,OAAOC,mBACxCC,eAAgB9iD,KAAKe,QAAQ6hD,OAAOE,eACpCC,cAAe/iD,KAAKe,QAAQ6hD,OAAOG,cACnCC,SAAUhjD,KAAKe,QAAQ6hD,OAAOI,SAC9Bv/C,KAAMzD,KAAKe,QAAQ0C,OAQrB,OALAzD,KAAK80B,SAASlB,EAAM,QAAS5zB,KAAK47B,OAClC57B,KAAK80B,SAASlB,EAAM,UAAU,WAC5B,EAAKlD,QAAQ,cACd,IAEMkD,CAOR,G,4BASK7kB,EAAO1S,GAAM,WACjB,GAAIA,EAAM,KACA4mD,EAAiBjjD,KAAKe,QAAQo+C,cAA9B8D,aACR,GAAIt5B,EAAAA,QAAEpO,SAASvb,KAAKe,QAAQmiD,sBACzBD,EAAa/jD,QAAUc,KAAKe,QAAQmiD,oBAAqB,CAC1D,IAAMC,EAAcx5B,EAAAA,QAAEG,MAAMm5B,EAAc,QAC1C,IAAKt5B,EAAAA,QAAEe,SAASy4B,EAAa9mD,GAE3B,YADA2D,KAAK0wB,QAAQ,qBAGhB,CACD1wB,KAAKe,QAAQo+C,cAAciE,qBAAqBr0C,EAAO1S,GAAM+U,MAAK,SAACiyC,GAC5DA,EAAU7lB,OACb,EAAK9M,QAAQ,uBAEhB,GACF,MACC,yCAAY3hB,EAAO1S,EAEtB,K,GArEoC4lD,EAAAA,iB,qCClBvCpmD,EAAOD,QAAU0nD,C,gBCAjBznD,EAAOD,QAAU2nD,C,iVCAjB,I,EAAA,G,EAAA,O,2BACA,QACA,QACA,O,q8BAEMC,E,kIACQziD,GACV,OAAO,IAAI0iD,EAAAA,UAAU1iD,EACtB,K,GAHkCm3B,EAAAA,0BAaxBynB,E,6HAOJjhD,GAAQ,WACPglD,EAAiB/5B,EAAAA,QAAEqK,OAAOt1B,EAAQ,CACtCqC,QAAS,CACP2hD,gBAAiB1iD,KAAKe,QAAQ2hD,mBAI5B3hD,EAAU4oB,EAAAA,QAAEqK,OAChB,CAAC,EACDh0B,KAAKe,QAAQ4iD,UACb,CACEjlD,OAAQglD,EACRnE,WAAYv/C,KAAKe,QAAQw+C,aAe7B,OAXAv/C,KAAKkhD,kBAAoB,IAAIsC,EAAuB,CAClDziD,QAAAA,EACA0C,KAAMzD,KAAKe,QAAQ0C,OAGrBzD,KAAK80B,SAAS90B,KAAKkhD,kBAAmB,WAAW,WAC/C,EAAKA,kBAAoB,IAC1B,IACDlhD,KAAK80B,SAAS90B,KAAKkhD,kBAAmB,SAAUlhD,KAAKk3B,QACrDl3B,KAAK80B,SAAS90B,KAAKkhD,kBAAmB,QAAQ,kBAAM,EAAKxwB,QAAQ,oBAAnB,IAEvC1wB,KAAKkhD,iBACb,G,6BAEMxiD,GACL,IAAMglD,EAAiB/5B,EAAAA,QAAEqK,OAAOt1B,EAAQ,CACtCqC,QAAS,CACP2hD,gBAAiB1iD,KAAKe,QAAQ2hD,mBAGlC1iD,KAAKkhD,kBAAkBttB,KAAKgwB,aAAaF,EAC1C,G,+BAUC1jD,KAAKe,QAAQo+C,cAAc0E,uBAC3B7jD,KAAK0wB,QAAQ,qBACd,K,GAxDiCuxB,EAAAA,iB,kCClBpCpmD,EAAOD,QAAUkoD,C,kVCAjB,cACA,UACA,QACA,OACA,W,60CAEMC,E,oIAC6B,IAApBC,EAAoB,EAApBA,WAAYvgD,EAAQ,EAARA,KACvBzD,KAAKgkD,WAAaA,EAClBhkD,KAAKyD,KAAOA,CACb,G,+BAKC,OAHAzD,KAAKuxB,IAAIC,MAAK,aAAW,CACvByyB,WAAYjkD,KAAKyD,KAAKpD,UAAU,kCAAkCd,QAAQ,MAAOS,KAAKgkD,eAEjFhkD,IACR,K,GAVwBw1B,EAAAA,QAAS+C,MAoBvBknB,E,mIASEpjD,GAAM,WACjB2D,KAAKe,QAAQo+C,cAAc+E,gBAAgB7nD,GAAM+U,MAAK,SAAC1S,GACrD,IAAMylD,EAAc,IAAI7rB,EAAAA,OAAO,CAC7BK,YAAY,IACX5E,SAAS,CACVqF,QAAS,CAAC,CACR3oB,KAAM,EAAK1P,QAAQ0C,KAAKpD,UAAU,iBAClChE,KAAM,SACNy9B,MAAO,eACN,CACDrpB,KAAM,EAAK1P,QAAQ0C,KAAKpD,UAAU,UAClChE,KAAM,aAEP88B,WAAW,IAAI4qB,EAAa,CAC7BC,WAAY3nD,EACZoH,KAAM,EAAK1C,QAAQ0C,QAElBsyB,SAEH,EAAKh1B,QAAQ+gD,YAAYluB,KAAKrC,IAAIrhB,OAAOi0C,EAAY5tB,IACrD4tB,EAAY9qB,OACZ8qB,EAAYlxB,GAAG,iBAAiB,SAACmxB,GACZ,WAAfA,GACF,EAAKrjD,QAAQo+C,cAAckF,kBAAkB3lD,GAAQ0S,MAAK,YAAe,EAAZosB,QAEzD,EAAK9M,QAAQ,0BACb,EAAKyvB,UAER,IAGHgE,EAAYjtB,QACb,GACF,GACF,G,kCAQW76B,GACV2D,KAAKe,QAAQo+C,cAAcmF,wBAAwBjoD,EACpD,G,gCAMS,WACR2D,KAAKe,QAAQo+C,cAAcoF,kBAAkBnzC,MAAK,SAACozC,GACjD,IAAMrB,EAAcx5B,EAAAA,QAAEG,MAAM06B,EAAa,QACnCC,EAAY,CAAC,CACjBh0C,KAAM,EAAK1P,QAAQ0C,KAAKpD,UAAU,wBAClC8F,QAAS,kBAAM,EAAKuqB,QAAQ,oBAAnB,IAGP,EAAK3vB,QAAQ2jD,MAAQ,EAAK3jD,QAAQ2jD,KAAKC,aACzCF,EAAU/8B,KAAV,MAAA+8B,EAAS,EAAS,EAAK1jD,QAAQ2jD,KAAKC,cAGlCxB,EAAYjkD,OAAS,IACvBulD,EAAU/8B,KAAK,CAAE/c,KAAM,qBACvB85C,EAAU/8B,KAAK,CACb/c,KAAM,uBACNoT,GAAI,qCACJjV,MAAO,EAAK/H,QAAQ0C,KAAKpD,UAAU,8BACnC+jC,MAAOza,EAAAA,QAAExd,IAAIg3C,GAAa,SAAA9mD,GAAI,MAAK,CACjCoU,KAAMpU,EACNU,MAAOV,EAFqB,IAI9BuoD,UAAW,KACXX,WAAY,EAAKljD,QAAQ0C,KAAKpD,UAAU,iBACxCwkD,SAAU,EAAKC,YAAYxnD,KAAK,GAChCynD,SAAU,EAAKC,aAAa1nD,KAAK,MAGrC,IAAM2nD,EAAgB,CAAC,YAAa,eAAgB,qBAC9C/O,EAAU,CACdn4B,GAAI,cACJ1Q,OAAQ,CACNoD,KAAM,EAAK1P,QAAQ0C,KAAKpD,UAAU,WAClC6kD,SAAUD,EAAc37B,OAAO,sBAC/B67B,UAAWF,EAAc37B,OAAO,8BAElCo7B,KAAM,CACJtgB,MAAOqgB,IAIP,EAAK1jD,QAAQ+gD,YAAY3pB,SAC3B,EAAKp3B,QAAQ+gD,YAAYluB,KAAKme,OAAOmE,GAErC,EAAKn1C,QAAQ+gD,YAAYC,KAAK,YAAY,WACxC,EAAKhhD,QAAQ+gD,YAAYluB,KAAKme,OAAOmE,EACtC,GAEJ,GACF,K,GA5GkC+L,EAAAA,iB,mCC1BrCpmD,EAAOD,QAAU+G,C,kBCAjB,IAAI6vB,EAAMC,EAAQ,IAGlB52B,EAAOD,QADP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EAAkS,OAA9R,SAAUuxB,GAAatxB,EAAWA,EAAW,SAAsBH,EAAIiH,OAAO,OAASD,EAAayqB,GAAc,GAAKzqB,GAAe,SAAtI,EAAiKv9B,KAAK+D,KAAK,eAAgB4yB,EAAgBA,EAAgBqxB,WAA+B,qBAAbA,WAAyBA,gBAAWjpC,GAAoB2X,CAAU,C,gBpGFha92B,EAAOD,QAAU,C,2FqGGV,SAAkBiqC,EAAQ0Z,EAAY97C,GAwE3C,OAvEAkmB,EAAAA,QAAEwB,KAAK0a,EAAO0B,YAAY,SAACqI,EAAMvzC,GAC/B,I,IAAM+oD,EAAgBxV,EAClBriB,EAAasY,EAAOxpC,KACpBgpD,EAAWhpD,EACf,GAAIuzC,EAAKnyC,SAAU,CACjB,IAAM6nD,EAAQ1V,EAAKnyC,SAASwB,MAAM,KAClC,GAAIqmD,EAAMpmD,OAAS,EAAG,OACKyqB,EAAAA,QAAE47B,KAAKD,EAAO,GADnB,G,EAAA,E,4CAAA,I,8UACnB/3B,EADmB,KACP83B,EADO,IAErB,CACF,CAMD,GALKD,EAAct8C,QACjBs8C,EAAct8C,MAAQy2C,EAAW9hD,SAAS8vB,EAAY83B,IAInD17B,EAAAA,QAAEnpB,QAAQovC,EAAKrC,OAwCb,GAAkB,YAAdqC,EAAKjlC,OAAuBilC,EAAK4V,UAAW,CACrD77B,EAAAA,QAAE87B,UAAUL,EAAe,CAAEI,UAAW,CAAC,GAAK77B,EAAAA,QAAEijB,KAAKgD,EAAM,eAE3D,IAAM8V,EAAqBjiD,EAAKpD,UAAL,UAAkBuvC,EAAKnyC,WAC5CkoD,EAAsBliD,EAAKpD,UAAL,wBAAgCuvC,EAAKnyC,SAArC,WAE5B2nD,EAAcI,UAAUI,KAAOF,EAC/BN,EAAcI,UAAUK,MAAQF,EAC3Bh8B,EAAAA,QAAEnpB,QAAQklD,KACbN,EAAc9jC,YAAcokC,EAE/B,MAnD0B,CACzB/7B,EAAAA,QAAE8L,SAAS2vB,EAAe,CAAEI,UAAW,CAAC,IAExC,IAAMM,EAAWV,EAAcU,SAAWV,EAAcU,SAAWV,EAAc/oD,KAGjFstB,EAAAA,QAAEwB,KAAKykB,EAAKrC,MAAM,SAACwY,GACjB,IAAIC,EAAiB,GACfC,EAAoBrW,EAAKsW,aAAaH,GAE5C,IAEE,GAAInW,EAAK4V,UAAUO,GACjBC,EAAiBpW,EAAK4V,UAAUO,QAC3B,IAAI,IAAAI,SAAQF,EAAmB,KAAM,CAC1C,IAAMG,EAAsBH,EAAkBhnD,MAAM,KAC9ConD,EAAsB,GAC5B18B,EAAAA,QAAEwB,KAAKi7B,GAAqB,SAACE,GAC3BD,EAAoB3+B,KAAKjkB,EAAKpD,UAAL,UAAkBylD,EAAlB,YAA8BQ,IACxD,IACDN,EAAiBK,EAAoBznD,KAAK,KAC3C,MACConD,EAAiBviD,EAAKpD,UAAL,UAAkBylD,EAAlB,YAA8BG,GAElD,CAAC,MAAO3zC,GAER,CAEGqX,EAAAA,QAAEnpB,QAAQwlD,KAEZA,EAAiBzG,EAAWxiD,MAC1BwwB,EACA83B,EAAUY,IAITt8B,EAAAA,QAAEnpB,QAAQwlD,KACbZ,EAAcI,UAAUO,GAAaC,EAExC,GACF,CAcD,OADAZ,EAAc/oD,KAAO+oD,EAAct8C,MAC5Bs8C,CACR,IACMvf,CACR,EA5ED,I,EAAA,G,EAAA,O,2BACA,O,gBCDAhqC,EAAOD,QAAU2qD,C,qLpLCf,IAAI7qD,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,qBMlFrDhC,EAAOD,QAAU,C,gB4EAjBC,EAAOD,QAAU,C,gB3DAjBC,EAAOD,QAAU,C,4BuDAjBC,EAAOD,QAAU,C,yMuGAjB,I,EAAA,G,EAAA,Q,2HCAA,cACA,UACA,WACA,QACA,E,uSAAA,OACA,WACA,WACA,W,mDAMA,MAAM6nD,UAAkBjuB,EAAAA,QAAS+C,KAI/B,aAAInzB,GACF,MAAO,YACR,CAKD,UAAI+uB,GACF,MAAO,CACL,sCAAuCn0B,KAAKwmD,OAC5C,wCAAyCxmD,KAAK+kD,SAEjD,CAEDvsB,UAAAA,EAAW,QACTz3B,EAAU,CAAC,EADF,KAET0C,IAEAzD,KAAKyD,KAAOA,EACZzD,KAAKe,QAAU4oB,EAAAA,QAAE8L,SAAS10B,GAAW,CAAC,EAAG,CACvC+H,MAAOrF,EAAKpD,UAAU,+BACtBomD,SAAUhjD,EAAKpD,UAAU,8BACzB4jD,WAAYxgD,EAAKpD,UAAU,gCAC3BwQ,YAAapN,EAAKpD,UAAU,iCAC5BqmD,iBAAkBjjD,EAAKpD,UAAU,sCACjCsmD,SAAS,EACTnpB,WAAOxiB,EACP4rC,oBAAqB,GACrBC,UAAU,EACVC,YAAY,IAEd9mD,KAAK+mD,UAAYC,EAAMC,gBAAgB,CACrCC,eAAgBv9B,EAAAA,QAAErsB,MAAMoB,IACtBsB,KAAKe,QAAQy8B,WAAQxiB,EACrBhb,KAAKe,QAAQ4lD,SAAU,EACvB3mD,KAAK+1B,SACD/1B,KAAKe,QAAQomD,oBACRnnD,KAAKe,QAAQomD,oBAAoBnnD,KAAMtB,GAEzCsB,KAAKonD,cAAc1oD,KACzBsB,MACHqnD,OAAQ19B,EAAAA,QAAErsB,MAAMspD,IACd5mD,KAAKe,QAAQ4lD,SAAU,EACvB3mD,KAAKe,QAAQ6lD,oBAAsBA,EACnC5mD,KAAK+1B,QAAL,GACC/1B,MACHsnD,KAAM39B,EAAAA,QAAErsB,MAAMkgC,IACZx9B,KAAKe,QAAQ4lD,SAAU,EACvB3mD,KAAKe,QAAQy8B,MAAQA,EACrBx9B,KAAKe,QAAQ6lD,oBAAsB,GACnC5mD,KAAK+1B,QAAL,GACC/1B,QAELA,KAAK4jD,aAAa5jD,KAAKe,QAAQrC,OAChC,CAEDklD,YAAAA,CAAallD,GACNA,GAULsB,KAAKe,QAAQrC,OAASA,EACtBsB,KAAKunD,iBAAmBvnD,KAAK+mD,UAAUroD,IAPrCirB,EAAAA,QAAEia,OAAM,KACN5jC,KAAK+kD,UAAL,GAOL,CAEDyB,MAAAA,GACExmD,KAAK0wB,QAAQ,OAAQ1wB,KACtB,CAED+kD,QAAAA,GACE/kD,KAAKe,QAAQrC,OAAS,KACtBsB,KAAK0wB,QAAQ,SAAU1wB,KACxB,CAED+1B,MAAAA,GAGE,OAFA/1B,KAAKuxB,IAAIC,MAAK,aAAkBxxB,KAAKe,UAE9Bf,IACR,CAEDk3B,MAAAA,GACMl3B,KAAKunD,mBACPvnD,KAAKunD,iBAAiBC,SACtBxnD,KAAKunD,iBAAmB,MAG1B/xB,EAAAA,QAAS+C,KAAK76B,UAAUw5B,OAAOj7B,KAAK+D,KACrC,CAEDynD,+BAAAA,CAAgCC,EAAejqD,GAG7C,IAAIkqD,EAUJ,OAPEA,EAFElqD,EAASmqD,aAAej+B,EAAAA,QAAEnpB,QAAQknD,GAErBjqD,EAASmqD,WAAWC,SAASH,EAAc5lC,MAAM,EAAGgmC,IAC1DrqD,EAAS2mC,MACHnzB,EAAAA,QAAQC,QAAQzT,EAAS2mC,OAEzBnzB,EAAAA,QAAQC,QAAQ,IAG1By2C,EACJv2C,MAAMgzB,IACL,MAAM2jB,EAAYp+B,EAAAA,QAAEq+B,QAAQ5jB,EAAO,MAC3BkhB,EAAU37B,EAAAA,QAAEze,OAAOw8C,GAAe,CAAC5lD,EAAMic,KAC/C,MAAMkqC,EAAWnmD,EAOjB,OANI6nB,EAAAA,QAAEpkB,KAAK0iD,EAAS3C,OAjBA,GAkBjB2C,EAASC,YAjBO,KAkBjBD,EAAS3C,MAAM59B,KAAKiC,EAAAA,QAAE0L,IAAI0yB,EAAWhqC,GAAMgqC,EAAUhqC,GAAI3Z,KAAOpE,KAAKyD,KAAKpD,UAAU,wBACpF4nD,EAASC,aAAev+B,EAAAA,QAAEpkB,KAAKokB,EAAAA,QAAE47B,KAAK0C,EAAS3C,SAG1C2C,CAAP,GACC,CAAEC,YAAa,EAAG5C,MAAO,KATpBA,MAWF6C,EAAkBx+B,EAAAA,QAAEpkB,KAAKmiD,GAAiB/9B,EAAAA,QAAEpkB,KAAK+/C,GAEvD,MAAO,CACLv1C,OAAQu1C,EACR8C,SAAUD,EAAkBnoD,KAAKyD,KAAKpD,UAAU,WAAY,CAC1DgoD,OAAQF,IACL,KAJP,GAOL,CAEDG,eAAAA,CAAgBC,GACd,MAAM9qD,EAAWksB,EAAAA,QAAEne,KAAK+8C,GAAW,GAC7BC,EAAWxoD,KAAKyoD,WAAW5iB,OAAO6iB,kBAAkBjrD,GAC1D,IAAK+qD,EACH,MAAM,IAAI/rC,MAAO,YAAWhf,uBAE9B,MAAMkrD,EAAUh/B,EAAAA,QAAE5Z,OAAOw4C,GAAW,GAC9BjlC,EAAWqG,EAAAA,QAAEne,KAAKm9C,GAAS,GAAGppD,QAAQ,MAAO,IAC7CxC,EAAQ4sB,EAAAA,QAAE5Z,OAAO44C,GAAS,GAC1BpJ,EAAa,CACjB9hD,SAAU+qD,EAAS1/C,MAAQ0/C,EAAS1/C,MAAQ9I,KAAKyoD,WAAWG,YAAYnrD,GACxE6lB,SAAUtjB,KAAKyoD,WAAWI,gBAAgBvlC,EAAUklC,EAASM,wBAC7D/4C,OAAQ4Z,EAAAA,QAAExd,IACRwd,EAAAA,QAAEjhB,QAAQ3L,GAASA,EAAQ,CAACA,IAC5BgsD,GAAO/oD,KAAKyoD,WAAWO,aAAaD,EAAKtrD,MAI7C,IAAIwrD,EAQJ,OANEA,EADoB,OAAlBT,EAAS79C,KACG3K,KAAKynD,gCAAgC1qD,EAAOyrD,GACvDp3C,MAAK83C,GAAOv/B,EAAAA,QAAEqK,OAAOurB,EAAY2J,KAEtBj4C,EAAAA,QAAQC,QAAQquC,GAGzB0J,EAAY73C,MAAK3N,GAAQkmB,EAAAA,QAAEqK,OAAO,CAAC,EAAGu0B,EAAW,CACtD9kD,UAEH,CAED0lD,YAAAA,CAAazqD,GACX,OAAIA,EAAO0qD,KACFn4C,EAAAA,QAAQ9E,IAAIzN,EAAO0qD,KAAMz/B,EAAAA,QAAErsB,KAAK0C,KAAKmpD,aAAcnpD,OACvDoR,MAAKg4C,IAAQ,CAAGA,WACV1qD,EAAO2qD,IACTp4C,EAAAA,QAAQ9E,IAAIzN,EAAO2qD,IAAK1/B,EAAAA,QAAErsB,KAAK0C,KAAKmpD,aAAcnpD,OACtDoR,MAAKi4C,IAAO,CAAGA,UAEbrpD,KAAKsoD,gBAAgB5pD,EAC7B,CAED0oD,aAAAA,CAAc1oD,GACZ,IAAKA,EAAOqQ,QAAUrQ,EAAO4qD,MAC3B,MAAM,IAAI7sC,MAAM,2BAGlB,GAAI/d,EAAO4qD,MAAQ,GAAK5qD,EAAO4qD,MAAQ,EACrC,MAAM,IAAI7sC,MAAM,gCAGlBzc,KAAKyoD,WAAa,IAAIc,EAAAA,WACpB7qD,EAAOmnC,OACP7lC,KAAKyD,KACLzD,KAAKe,QAAQw+C,WACb7gD,EAAOqC,QAAQ2hD,iBAGjB,MAAM8G,EAAmB,CACvB,EAAGC,EAAAA,QACH,EAAGC,EAAAA,SAGL,OAAO1pD,KAAKmpD,aAAazqD,EAAOqQ,OAC7BqC,MAAMu4C,IAGElpD,EAFU+oD,EAAiB9qD,EAAO4qD,QAEzB,CACd5qD,OAAQirD,KAGf,E,MAGYlG,E,2BvGhOf5nD,EAAOD,QAAU,C,gBwGAjBC,EAAOD,QAAUguD,C,kBCAjB,IAAIp3B,EAAMC,EAAQ,IAqBlB52B,EAAOD,QAnBP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAqCC,EAAmBF,GAAU,CAAC,EAkBslC,OAlBllC,SAAU+zB,EAAUjpB,EAAOqpB,EAAUC,EAAYF,EAAqBD,EAASD,EAAkB71C,EAAaozC,EAAYn7C,GAAQ6pB,EAAWA,EAAW,4FAAmIH,EAAIiH,OAAO,OAASD,EAAa1wB,GAAS,GAAK0wB,GAAe,SAE1c7G,EADIg0B,EACOh0B,EAAW,oCAAmDH,EAAIiH,OAAO,OAASD,EAAa3oB,GAAe,GAAK2oB,GAAe,SAGzIgE,EACO7K,EAAW,oCAAmDH,EAAIiH,OAAO,OAASD,EAAaktB,GAAoB,GAAKltB,GAAe,SAGvI7G,EAAW,qCAAmD,OAAS6G,EAAaotB,GAAuB,GAAKptB,GAAc,SAEzI7G,GAAsB,6BACjBk0B,IACLl0B,EAAWA,gHAAkJH,EAAIpB,KAAK,QAASq1B,GAAU,GAAM,GAAS,gGAAoJj0B,EAAIiH,OAAO,OAASD,EAAaitB,GAAY,GAAKjtB,GAAe,QAExZstB,IACLn0B,EAAWA,8HAAgKH,EAAIpB,KAAK,QAAS6yB,GAAY,GAAM,GAAS,oGAAwJzxB,EAAIiH,OAAO,OAASD,EAAayqB,GAAc,GAAKzqB,GAAe,QAEnb7G,GAAsB,oBAlB2F,EAkBvB12B,KAAK+D,KAAK,aAAc4yB,EAAgBA,EAAgB6zB,SAA2B,qBAAXA,SAAuBA,cAASzrC,EAAU,UAAW4X,EAAgBA,EAAgB4K,MAAqB,qBAARA,MAAoBA,WAAMxiB,EAAU,aAAc4X,EAAgBA,EAAgBi0B,SAA2B,qBAAXA,SAAuBA,cAAS7rC,EAAU,eAAgB4X,EAAgBA,EAAgBk0B,WAA+B,qBAAbA,WAAyBA,gBAAW9rC,EAAU,wBAAyB4X,EAAgBA,EAAgBg0B,oBAAiD,qBAAtBA,oBAAkCA,yBAAoB5rC,EAAU,YAAa4X,EAAgBA,EAAgB+zB,QAAyB,qBAAVA,QAAsBA,aAAQ3rC,EAAU,qBAAsB4X,EAAgBA,EAAgB8zB,iBAA2C,qBAAnBA,iBAA+BA,sBAAiB1rC,EAAU,gBAAiB4X,EAAgBA,EAAgB/hB,YAAiC,qBAAdA,YAA0BA,iBAAYmK,EAAU,eAAgB4X,EAAgBA,EAAgBqxB,WAA+B,qBAAbA,WAAyBA,gBAAWjpC,EAAU,UAAW4X,EAAgBA,EAAgB9pB,MAAqB,qBAARA,MAAoBA,WAAMkS,GAAoB2X,CAAU,C,kBCpBptC,IAAIH,EAAMC,EAAQ,IAwClB52B,EAAOD,QAtCP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAIk3B,EAAa,CAAC,EAAmBj3B,EAAmBF,GAAU,CAAC,EAqCiD,OArC7C,SAAUh0B,GAASmrD,EAAU,UAAgBrwB,EAAa,SAAS+uB,EAAWuB,GAClL9pD,MAAQA,KAAKiN,MAAsBjN,MAAQA,KAAKowB,WAC7DuC,GAAsB,wBAChBm3B,IACNn3B,GAAsB,mCAEtBA,EAAWA,EAAYH,EAAIiH,OAAO,OAASD,EAAa+uB,EAAU9kD,KAAKhG,UAAY,GAAK+7B,GAAe,wCAAsEhH,EAAIiH,OAAO,OAASD,EAAa+uB,EAAU9kD,KAAK6f,UAAY,GAAKkW,GAAe,UAE5P,WACC,IAAIE,EAAQ6uB,EAAU9kD,KAAKsM,OAC3B,GAAI,iBAAmB2pB,EAAMx6B,OACzB,IAAK,IAAIkN,EAAQ,EAAGwtB,EAAMF,EAAMx6B,OAAQkN,EAAQwtB,EAAKxtB,IAAS,CAC5D,IAAI28C,EAAMrvB,EAAMttB,GACV,GAATA,IACLumB,GAAsB,KAEtBA,EAAWA,EAAW,6BAA4CH,EAAIiH,OAAO,OAASD,EAAa,IAAIuvB,GAAO,GAAKvvB,GAAe,SAC3H,KACE,CACDI,EAAM,EACV,IAAK,IAAIxtB,KAASstB,EAAO,CACvBE,IACImvB,EAAMrvB,EAAMttB,GACR,GAATA,IACLumB,GAAsB,KAEtBA,EAAWA,EAAW,6BAA4CH,EAAIiH,OAAO,OAASD,EAAa,IAAIuvB,GAAO,GAAKvvB,GAAe,SAC7H,CACF,CApBF,EAqBEv9B,KAAK+D,MAEDuoD,EAAU9kD,KAAK2kD,WACtBz1B,EAAWA,EAAW,4BAA2CH,EAAIiH,OAAO,OAASD,EAAa,IAAI+uB,EAAU9kD,KAAK2kD,UAAY,GAAK5uB,GAAe,UAEpJ,EACD7G,GAAsB,2BACtBk3B,EAAU,UAAcnrD,GAAQ,GAChCi0B,GAAsB,SArC2F,EAqChE12B,KAAK+D,KAAK,WAAY4yB,EAAgBA,EAAgBl0B,OAAuB,qBAATA,OAAqBA,YAAOsc,GAAoB2X,CAAU,C,kBCvC/K,IAAIH,EAAMC,EAAQ,IA0DlB52B,EAAOD,QAxDP,SAAkB82B,GAAS,IAAoC8G,EAAhC7G,EAAW,GAAIk3B,EAAa,CAAC,EAAmBj3B,EAAmBF,GAAU,CAAC,EAuDiD,OAvD7C,SAAUh0B,GAASmrD,EAAU,UAAgBrwB,EAAa,SAAS+uB,EAAWuB,GAClL9pD,MAAQA,KAAKiN,MAAsBjN,MAAQA,KAAKowB,WAC7DuC,GAAsB,wBAChBm3B,IACNn3B,GAAsB,mCAEtBA,EAAWA,EAAYH,EAAIiH,OAAO,OAASD,EAAa+uB,EAAU9kD,KAAKhG,UAAY,GAAK+7B,GAAe,wCAAsEhH,EAAIiH,OAAO,OAASD,EAAa+uB,EAAU9kD,KAAK6f,UAAY,GAAKkW,GAAe,UAE5P,WACC,IAAIE,EAAQ6uB,EAAU9kD,KAAKsM,OAC3B,GAAI,iBAAmB2pB,EAAMx6B,OACzB,IAAK,IAAIkN,EAAQ,EAAGwtB,EAAMF,EAAMx6B,OAAQkN,EAAQwtB,EAAKxtB,IAAS,CAC5D,IAAI28C,EAAMrvB,EAAMttB,GACV,GAATA,IACLumB,GAAsB,KAEtBA,EAAWA,EAAW,6BAA4CH,EAAIiH,OAAO,OAASD,EAAa,IAAIuvB,GAAO,GAAKvvB,GAAe,SAC3H,KACE,CACDI,EAAM,EACV,IAAK,IAAIxtB,KAASstB,EAAO,CACvBE,IACImvB,EAAMrvB,EAAMttB,GACR,GAATA,IACLumB,GAAsB,KAEtBA,EAAWA,EAAW,6BAA4CH,EAAIiH,OAAO,OAASD,EAAa,IAAIuvB,GAAO,GAAKvvB,GAAe,SAC7H,CACF,CApBF,EAqBEv9B,KAAK+D,MAEDuoD,EAAU9kD,KAAK2kD,WACtBz1B,EAAWA,EAAW,4BAA2CH,EAAIiH,OAAO,OAASD,EAAa,IAAI+uB,EAAU9kD,KAAK2kD,UAAY,GAAK5uB,GAAe,UAEpJ,EACD,IAAIuwB,EAAarrD,EAAO0qD,MAAQ1qD,EAAO2qD,IACvC12B,GAAsB,2BAErB,WACC,IAAI+G,EAAQqwB,EACZ,GAAI,iBAAmBrwB,EAAMx6B,OACzB,IAAK,IAAIkN,EAAQ,EAAGwtB,EAAMF,EAAMx6B,OAAQkN,EAAQwtB,EAAKxtB,IAAS,CAC5D,IAAIm8C,EAAY7uB,EAAMttB,GAC9By9C,EAAU,UAActB,EAAqB,IAAVn8C,EAC5B,KACE,CACDwtB,EAAM,EACV,IAAK,IAAIxtB,KAASstB,EAAO,CACvBE,IACI2uB,EAAY7uB,EAAMttB,GAC5By9C,EAAU,UAActB,EAAqB,IAAVn8C,EAC9B,CACF,CAdF,EAeEnQ,KAAK+D,MAER2yB,GAAsB,SAvD2F,EAuDhE12B,KAAK+D,KAAK,WAAY4yB,EAAgBA,EAAgBl0B,OAAuB,qBAATA,OAAqBA,YAAOsc,GAAoB2X,CAAU,C,iP1LxD7K,IAAIj3B,EAAmB,CAAC,EAGxB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAUC,QAGnC,IAAIC,EAASH,EAAiBC,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAyDA,OArDA,EAAoBM,EAAIF,EAGxB,EAAoBG,EAAIT,EAGxB,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3C,EAAoBC,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGA,EAAoBM,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOA,EAAoBC,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQ,EAAoBA,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA,EAAoBR,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAO,EAAoBX,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGA,EAAoBI,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADA,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGA,EAAoBC,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH,EAAoBG,EAAI,GAIjB,EAAoB,EAAoBC,EAAI,G,qBMlFrDhC,EAAOD,QAAU,C,iBiBAjBC,EAAOD,QAAU,C,8B6JAjBC,EAAOD,QAAU,C,2BOAjBC,EAAOD,QAAUouD,C,gBpLAjBnuD,EAAOD,QAAU,C,gBqLAjBC,EAAOD,QAAUquD,C,iBCAjBpuD,EAAOD,QAAUsuD,C,gBCAjBruD,EAAOD,QAAUuuD,C,wHCAjB,2JACA,2JACA,2JACA,2JACA,2JACA,2JACA,2JACA,2JACA,0J,sSCR+B,CAC7BC,SAAU,EACVC,OAAQ,EACRC,SAAU,G,gBAGiB,CAC3BlvC,OAAQ,SACRmvC,QAAS,UACTv/B,QAAS,UACTw/B,SAAU,WACVJ,SAAU,KACVje,OAAQ,SACRse,OAAQ,SACR/yC,KAAM,Y,uBAG4B,CAClCgzC,SAAU,WACVC,MAAO,QACPC,OAAQ,SACRC,SAAU,Y,oBAGqB,CAC/BC,iBAAkB,mBAClBC,eAAgB,kB,wBAGmB,G,2BAEG,G,uCAEY,kC,sBAEjB,CACjCC,aAAc,EACdC,eAAgB,EAChBC,cAAe,EACfC,WAAY,E,8KCyBP,SAAkCpB,GAEvC,OAAOqB,GADkB,IAAAj/C,KAAI49C,GAAYxB,GAAaA,EAAU8C,YAEjE,E,uBAEM,SAA8BC,GACnC,MACMC,EAAaH,EADMI,EAAiCF,IAE1D,IAAI,IAAA9qD,SAAQ+qD,GACV,OAAO,KAGT,OADAD,EAAaG,YAAYF,GAClBD,CACR,E,kCAEM,SAAyCA,GAC9C,OAAOE,EAAiCF,GACrCn/C,KAAIu/C,GAAmBC,EAAAA,UAAUC,oBAAoB,CACpD78C,MAAO28C,MAERv/C,KAAK0/C,IACJ,MAAM,WAAEtkB,GAAe+jB,EAAazlB,OAAOwZ,aAC3C,GAAIwM,EAAkBpuD,YAAY8pC,EAAY,CAC5C,GAAIA,EAAWskB,EAAkBpuD,UAAUquD,kBACzC,OAAO,IAAA93B,QAAO63B,EAAmB,CAC/BC,mBAAmB,IAIvB,GAAIvkB,EAAWskB,EAAkBpuD,UAAUsuD,kBACzC,OAAO,IAAA/3B,QAAO63B,EAAmB,CAC/BE,mBAAmB,GAGxB,CAED,OAAOF,CAAP,GAEL,EArGD,WACA,QAqBO,SAASL,EAAiCF,GAC/C,MAAMU,EAAmB,GAEzB,IAAKV,EACH,OAAOU,EAGT,GAAIV,EAAahC,MAAQ,EACvB,MAAM,IAAI7sC,MAAM,gEAalB,OAX2B,IAAvB6uC,EAAahC,MACf0C,EAAiBtkC,KAAK4jC,EAAav8C,OAC1Bu8C,EAAahC,MAAQ,KAC1B,IAAA5gD,SAAQ4iD,EAAav8C,MAAMq6C,OAC7B4C,EAAiBtkC,QAAQ4jC,EAAav8C,MAAMq6C,OAE1C,IAAA1gD,SAAQ4iD,EAAav8C,MAAMs6C,MAC7B2C,EAAiBtkC,QAAQ4jC,EAAav8C,MAAMs6C,OAIzC,IAAA3qD,QACLstD,GACAN,GA1CJ,SAAgCA,EAAiBO,GAC/C,MAAMC,GAAc,IAAA1gD,MAAKkgD,GAAiB,GAC1C,IAAI3gC,GAAU,EAcd,OAbiBkhC,EAAaE,cAAcD,GAW1CnhC,GAAU,GARV,IAAAI,MAAK8gC,EAAaE,eAAe,CAACpvD,EAAOM,KACnC6uD,IAAgBnvD,EAAMqvD,mBACxBV,EAAgBruD,GAAOquD,EAAgBQ,UAChCR,EAAgBQ,GACvBnhC,GAAU,EACX,IAKEA,CACR,CAyBsBshC,CAAuBX,EAAiBJ,EAAazlB,SAE3E,CAEM,SAASulB,EAA0BkB,GACxC,IAAIv9C,EAUJ,OARI,IAAAvO,SAAQ8rD,GACVv9C,EAAQ,CAAC,EACuB,IAAvBu9C,EAAYptD,QACpB6P,GAASu9C,EAEVv9C,GAAQ,IAAAvR,QAAO,CAAC,QAAS,CAAC8uD,IAGrBv9C,CACR,C,mGC9DD,WACA,QAEO,MAAM48C,EACXhsD,WAAAA,EAAY,OACV4sD,EAASC,EAAAA,gBAAgBnC,OADf,UAEVoC,EAFU,SAGVhvD,EAHU,SAIV6lB,EAJU,MAKVvmB,EALU,MAMVqnC,IAEApkC,KAAKusD,OAASA,EACdvsD,KAAKysD,aAAY,IAAApmB,aAAYomB,IAAoBA,EACjDzsD,KAAKvC,SAAWA,EAChBuC,KAAKsjB,SAAWA,EAChBtjB,KAAKjD,MAAQA,EACbiD,KAAKokC,MAAQA,CACd,CAEDsoB,iBAAAA,GACE,OAAI1sD,KAAKokC,OAASpkC,KAAKokC,MAAMllC,OAAS,IAC5B,IAAA2L,MAAK7K,KAAKokC,OAAOzlC,IAAQ,IAAAguD,SAAQhuD,EAAK5B,MAAOiD,KAAKjD,UAAW,CAAC,GAAG0T,KAEpEzQ,KAAKjD,KACb,CAEDsuD,OAAAA,GACE,OAAO,IAAA7tD,QAAO,CAACwC,KAAKvC,UAAW,EAAC,IAAAD,QAAO,CAAC,IAAD,OAAKwC,KAAKsjB,WAAa,CAACtjB,KAAKjD,SACrE,CAED,0BAAO6uD,EAAoB,MACzB78C,EADyB,UAEzB09C,IAEA,MAAMhvD,GAAW,IAAA+N,MAAKuD,GAAO,GACvBw5C,EAAYx5C,EAAMtR,GAClB6lB,GAAW,IAAA9X,MAAK+8C,GAAW,GAAGhpD,QAAQ,MAAO,IAC7CxC,GAAQ,IAAAgT,QAAOw4C,GAAW,GAEhC,OAAO,IAAIoD,EAAU,CACnBc,YACAhvD,WACA6lB,WACAvmB,SAEH,E,kIC1CI,SAA4C0kD,EAAUsI,GAC3D,MAAM6C,GACF,IAAAzgD,KAAIs1C,GAAUoL,GAAqB,IAAIlB,EAAAA,WAAU,IAAAl2B,UACjD,CACE82B,OAAQC,EAAAA,gBAAgBpC,SACxBqC,WAAW,EACXroB,MAAOyoB,EAAkBzoB,MACzB3mC,SAAUovD,EAAkBpvD,SAC5B6lB,SAAU,OAEZ,IAAAzY,MACEk/C,GACAxB,GAAaA,EAAU9qD,WAAaovD,EAAkBpvD,YACnD,CACHV,MAAO8vD,EAAkBC,kBAGzBC,GAAiB,IAAAruD,QAAOqrD,GAAYxB,KAAc,IAAA79B,WAAS,IAAAZ,OAAM23B,EAAU,YAAa8G,EAAU9qD,YAExG,OAAO,IAAAuvD,OAAMJ,EAAoBG,EAClC,E,wBAEM,SAA+Bh+C,EAAOk+C,EAAUC,GAAmB,GACxE,IAAIC,GAAU,EAEd,IAAKp+C,IAAS,IAAAvO,SAAQuO,GACpB,OAAOo+C,EAGT,MAAMC,EAAc,MAAH,OAASH,GACpBI,EAAoB,MAAH,OAASJ,EAAT,UACjBK,EAA2B,MAAH,OAASL,EAAT,iBAE9B,IAAIxlB,EAAS,CAACwlB,GAEVC,IACFzlB,EAASA,EAAOne,OAAO,CAAC8jC,EAAaC,EAAmBC,KAoC1D,OAjCA,IAAAniC,OAAK,IAAA3f,MAAKuD,IAAS1R,IACjB,MAAMd,EAAIwS,EAAM1R,GAEhB,GAAIoqC,EAAOpoC,QAAQhC,IAAQ,SAClB0R,EAAM1R,GACb8vD,GAAU,OACL,IAAI,IAAAzkD,SAAQnM,GAAI,CACrB,MAAMgxD,EAAMhxD,EAAE2C,OACd6P,EAAM1R,GAAO6vD,GACX,IAAAxuD,QAAOnC,GAAG+V,IAAMA,EAAE26C,KACf36C,EAAE86C,KACF96C,EAAE+6C,KACF/6C,EAAEg7C,MACL,IAAA5uD,QAAOnC,GAAG+V,IAAMA,EAAE26C,KACpB,MAAMO,EAASz+C,EAAM1R,GAAK6B,OAEtBquD,IAAQC,IACVL,GAAU,GAGG,IAAXK,GAAgBL,UACXp+C,EAAM1R,EAEhB,MAAU,IAAAowD,UAASlxD,KAClB,IAAA4uB,MAAKsc,GAAS1pB,IACRxhB,EAAEwhB,YACGxhB,EAAEwhB,GACTovC,GAAU,EACX,GAEJ,IAGIA,CACR,EA7ED,WACA,QACA,O,yGCFA,eACA,WACA,WACA,QACA,Q,mDAsCA,MAAMO,UAAgCC,EAAAA,QAAMC,cAC1C73B,MAAAA,GACE,OACE,wBAAC,EAAAlwB,OAAD,CACEmE,SAAUhK,KAAK+B,MAAM8rD,WACrBxwD,IAAI,aACJ8I,QAASnG,KAAK+B,MAAMoE,QACpBf,WAAW,aACT,oBACApF,KAAK+B,MAAM8G,QAAQwE,OACnBrN,KAAK+B,MAAM+rD,iBAAmB9tD,KAAK+B,MAAM8G,QAAQklD,WAAa,OAGhE,wBAAC,EAAAC,UAAD,CAAWC,MAAM,WAChBjuD,KAAK+B,MAAM0B,KAAKpD,UAAU6tD,cAGhC,EAGHR,EAAwBS,UAAY,CAClC1qD,KAAM2qD,EAAAA,QAAUC,MAAM,CACpBhuD,UAAW+tD,EAAAA,QAAU7yB,OACpB+yB,WACHzlD,QAASulD,EAAAA,QAAUC,MAAM,CACvBhhD,OAAQ+gD,EAAAA,QAAUliB,OAAOoiB,WACzBP,WAAYK,EAAAA,QAAUliB,OAAOoiB,aAC5BA,WACHnoD,QAASioD,EAAAA,QAAU7yB,KAAK+yB,WACxBT,WAAYO,EAAAA,QAAUG,KACtBT,iBAAkBM,EAAAA,QAAUG,MAG9Bb,EAAwBc,aAAe,CACrCX,YAAY,EACZC,kBAAkB,GAIb,MAAMW,GACX,IAAAC,mBAAkBhB,GA5EF,CAAC/jC,GAAKglC,UAAU,CAAC,MAAjB,CAChBthD,OAAQ,CACN,QAAS,CACPsH,SAAU,OACV5G,OAAQ,OACRxG,OAAQ,GACRkM,YAAa,EACb/L,aAAc,EACdK,WAAY,EACZN,KAAM,WAEN,YAAa,CACXkN,SAAU,OACVS,MAAOu5C,EAAQC,aACftgD,YAAa,MACbiG,cAAe,SAIrBw5C,WAAY,CACV,QAAS,CACP9lD,gBAAiB0mD,EAAQE,eAEzB,UAAW,CACT5mD,gBAAiB0mD,EAAQG,cAE3B,UAAW,CACT7mD,gBAAiB0mD,EAAQI,qBACzB,UAAW,CACT9mD,gBAAiB0mD,EAAQK,0B,wHCnCnC,eACA,WACA,WACA,QACA,Q,iEAE4BC,IAC1B,MAAMC,EAAOntD,IACX,MAAM,KACJs3B,EADI,QAEJ81B,EAFI,QAGJtmD,EAHI,SAIJ7G,EAJI,GAKJ+b,EALI,UAMJqxC,EANI,YAOJ10B,EAPI,MAQJ5xB,EARI,iBASJumD,EATI,UAUJC,EAVI,iBAWJC,GACExtD,EAEJ,OACE,wBAAC,EAAAytD,QAAD,CACEzqD,QAAS,wBAACkqD,EAAqBltD,GAC/BqtD,UAAWA,EACXK,UAAW1xC,EACXsb,KAAMA,EACNxwB,QAASA,EACTsmD,QAASA,EACTz0B,YAAaA,EACb5xB,MAAOA,EACPumD,iBAAkBA,EAClBC,UAAWA,EACXC,iBAAkBA,GAEjBvtD,EAdL,EAkDF,OA/BAktD,EAAI3sD,YAAJ,uBAAiC,IAAAmtD,gBAAeT,GAAhD,MAEA,aAAqBC,EAAKD,GAE1BC,EAAIV,aAAe,CACjB3lD,QAAS,CAAC,EACVkV,GAAI,WACJqxC,UAAW,SACX10B,aAAa,EACb5xB,MAAO,KACPqmD,QAAS,KACT91B,KAAM,KACNg2B,iBAAkB,KAClBC,UAAW,KACXC,kBAAkB,GAGpBL,EAAIf,UAAY,CACdnsD,SAAUosD,EAAAA,QAAUxzB,QAAQ0zB,WAC5Ba,QAASf,EAAAA,QAAU7yB,KACnBlC,KAAM+0B,EAAAA,QAAUG,KAChB1lD,QAASulD,EAAAA,QAAUC,MAAM,CAAC,GAC1BtwC,GAAIqwC,EAAAA,QAAUliB,OACdkjB,UAAWhB,EAAAA,QAAUliB,OACrBxR,YAAa0zB,EAAAA,QAAUG,KACvBzlD,MAAOslD,EAAAA,QAAUliB,OACjBmjB,iBAAkBjB,EAAAA,QAAUliB,OAC5BojB,UAAWlB,EAAAA,QAAUC,QACrBkB,iBAAkBnB,EAAAA,QAAUG,MAGvBW,CAAP,C,gBCxEFrzD,EAAOD,QAAU+zD,C,gBCAjB9zD,EAAOD,QAAUg0D,C,gBCAjB/zD,EAAOD,QAAUi0D,C,2FCGV,SAAkBhqB,EAAQ0Z,EAAY97C,GAwE3C,OAvEAkmB,EAAAA,QAAEwB,KAAK0a,EAAO0B,YAAY,CAACqI,EAAMvzC,KAC/B,MAAM+oD,EAAgBxV,EACtB,IAAIriB,EAAasY,EAAOxpC,KACpBgpD,EAAWhpD,EACf,GAAIuzC,EAAKnyC,SAAU,CACjB,MAAM6nD,EAAQ1V,EAAKnyC,SAASwB,MAAM,KAC9BqmD,EAAMpmD,OAAS,KAChBquB,EAAY83B,GAAY17B,EAAAA,QAAE47B,KAAKD,EAAO,GAE1C,CAMD,GALKF,EAAct8C,QACjBs8C,EAAct8C,MAAQy2C,EAAW9hD,SAAS8vB,EAAY83B,IAInD17B,EAAAA,QAAEnpB,QAAQovC,EAAKrC,OAwCb,GAAkB,YAAdqC,EAAKjlC,OAAuBilC,EAAK4V,UAAW,CACrD77B,EAAAA,QAAE87B,UAAUL,EAAe,CAAEI,UAAW,CAAC,GAAK77B,EAAAA,QAAEijB,KAAKgD,EAAM,eAE3D,MAAM8V,EAAqBjiD,EAAKpD,UAAL,UAAkBuvC,EAAKnyC,WAC5CkoD,EAAsBliD,EAAKpD,UAAL,wBAAgCuvC,EAAKnyC,SAArC,WAE5B2nD,EAAcI,UAAUI,KAAOF,EAC/BN,EAAcI,UAAUK,MAAQF,EAC3Bh8B,EAAAA,QAAEnpB,QAAQklD,KACbN,EAAc9jC,YAAcokC,EAE/B,MAnD0B,CACzB/7B,EAAAA,QAAE8L,SAAS2vB,EAAe,CAAEI,UAAW,CAAC,IAExC,MAAMM,EAAWV,EAAcU,SAAWV,EAAcU,SAAWV,EAAc/oD,KAGjFstB,EAAAA,QAAEwB,KAAKykB,EAAKrC,MAAOwY,IACjB,IAAIC,EAAiB,GACrB,MAAMC,EAAoBrW,EAAKsW,aAAaH,GAE5C,IAEE,GAAInW,EAAK4V,UAAUO,GACjBC,EAAiBpW,EAAK4V,UAAUO,QAC3B,IAAI,IAAAI,SAAQF,EAAmB,KAAM,CAC1C,MAAMG,EAAsBH,EAAkBhnD,MAAM,KAC9ConD,EAAsB,GAC5B18B,EAAAA,QAAEwB,KAAKi7B,GAAsBE,IAC3BD,EAAoB3+B,KAAKjkB,EAAKpD,UAAL,UAAkBylD,EAAlB,YAA8BQ,IAAvD,IAEFN,EAAiBK,EAAoBznD,KAAK,KAC3C,MACConD,EAAiBviD,EAAKpD,UAAL,UAAkBylD,EAAlB,YAA8BG,GAElD,CAAC,MAAO3zC,GAER,CAEGqX,EAAAA,QAAEnpB,QAAQwlD,KAEZA,EAAiBzG,EAAWxiD,MAC1BwwB,EACA83B,EAAUY,IAITt8B,EAAAA,QAAEnpB,QAAQwlD,KACbZ,EAAcI,UAAUO,GAAaC,EACtC,GAEJ,CAcD,OADAZ,EAAc/oD,KAAO+oD,EAAc3nD,UAAY2nD,EAAct8C,MACtDs8C,CAAP,IAEKvf,CACR,EA5ED,I,EAAA,G,EAAA,O,2BACA,O,iGCwIO,SAAwBnnC,GAC7B,MAAMoxD,EAA0B,SAAU/gD,GACxC,MAAMghD,EAAYpmC,EAAAA,QAAEqmC,MAAMjhD,GAAO,GAAG,GAC9BuU,EAAWqG,EAAAA,QAAEqmC,MAAMD,GAAW,GAAG,GACvC,IAAIhzD,EAAQ4sB,EAAAA,QAAEqmC,MAAMD,GAAW,GAAG,GAMlC,OAJKpmC,EAAAA,QAAEjhB,QAAQ3L,KACbA,EAAQ,CAACA,IAGJ,CACLkzD,eAAgBtmC,EAAAA,QAAEqmC,MAAMjhD,GAAO,GAAG,GAClCmhD,iBAAkB5sC,EAClB6sC,OAAQpzD,EAEX,EAED,IAAI8oC,EACAuqB,EAGA1xD,GAAUA,EAAOqQ,QAAU4a,EAAAA,QAAEnpB,QAAQ9B,EAAOqQ,SAC9C82B,EAASnnC,EAAOmnC,QAAUnnC,EAAOmnC,OAAOwZ,aACtC3gD,EAAOmnC,OAAOwZ,aACd3gD,EAAOqC,QAAQs+C,aAEb3gD,EAAOqQ,MAAMq6C,MAAQ1qD,EAAOqQ,MAAMq6C,KAAKlqD,OAAS,GAClDkxD,EAAgB,GAEhBzmC,EAAAA,QAAEwB,KAAKzsB,EAAOqQ,MAAMq6C,MAAOr6C,IACrBA,EAAMq6C,KACRgH,EAAgBA,EAAc9mC,OAAOK,EAAAA,QAAExd,IAAI4C,EAAMq6C,MAAMiH,GAAYP,EAAwBO,MAE3FD,EAAc1oC,KAAKooC,EAAwB/gD,GAC5C,KAGHqhD,EAAgB,CAACN,EAAwBpxD,EAAOqQ,SAIpD,IAAK4a,EAAAA,QAAEjhB,QAAQ0nD,GACb,OAAO,KAGT,OAAOzmC,EAAAA,QAAExd,IAAIikD,GAAgBE,IAC3B,IAAIC,EAAMD,EAAaL,eAkBvB,OAf0B,IAAtBM,EAAIlxD,QAAQ,OACdkxD,EAAMA,EAAItxD,MAAM,KAAKL,KAAK,KAIhB,yBAAR2xD,GACFA,EAAM,wBACND,EAAaJ,iBAAmBI,EAAaH,OAAO,GAAK,MAAQ,MACjEG,EAAaH,OAAS,CAAC,IACN,uBAARI,EACTA,EAAM,uBACW,uBAARA,IACTA,EAAM,uBAGD,CACLN,eAAgBO,EAAeD,EAAK7xD,EAAOmnC,QAC3CqqB,iBAAkBO,EAAiBH,EAAaJ,iBAAkBK,EAAK1qB,GACvEsqB,OAAQO,EAAcJ,EAAaH,OAAQI,EAAK1qB,GAHlD,GAMH,EA7MD,I,EAAA,G,EAAA,O,2BACA,QAEA,MAAM8qB,EAA4B,CAChCC,eAAgB,CAAC,0BACjBC,UAAW,CAAC,iBACZC,QAAS,CAAC,WACV9F,aAAc,CAAC,gBACf+F,mBAAoB,CAAC,6BACrBC,eAAgB,CAAC,kBACjBC,iBAAkB,CAAC,oBACnBC,2BAA4B,CAAC,uBAC7BC,SAAU,CAAC,YACXC,OAAQ,CAAC,UACTv7C,OAAQ,CAAC,iBAAkB,gBAAiB,iBAAkB,YAC9DozB,KAAM,CAAC,WAEHooB,EAAkC,CACtC,eACA,OAEIC,EAAoC,CACxC,aACA,iBACA,kBACA,uBACA,yBAEIC,EAA6B,CACjC,mBA6BF,SAASd,EAAiBe,EAAIjB,EAAK1qB,GACjC,IAAIwB,EAAMmqB,GAAM,MAEhB,OAAQnqB,GACN,IAAK,YACHA,EAAM,WACN,MACF,IAAK,kBACHA,EAAM,iBACN,MACF,IAAK,cACHA,EAAM,aACN,MACF,IAAK,YACHA,EAAM,WACN,MACF,IAAK,MACHA,EAAM,QACN,MACF,IAAK,OACHA,EAAM,WACN,MACF,IAAK,MACHA,EAAM,UACN,MACF,IAAK,OACHA,EAAM,iBACN,MACF,IAAK,MACHA,EAAM,OACN,MACF,IAAK,OACHA,EAAM,cACN,MACF,IAAK,MAEDA,EADExB,EAAO0B,WAAWgpB,IAAQ5mC,EAAAA,QAAEnpB,QAAQqlC,EAAO0B,WAAWgpB,GAAKhjB,OAAS5jB,EAAAA,QAAEnpB,QAAQqlC,EAAO0B,WAAWgpB,GAAKkB,cACjG,QAEA,gBAER,MACF,IAAK,eACHpqB,EAAM,cACN,MACF,IAAK,eACHA,EAAM,cACN,MACF,IAAK,gBACHA,EAAM,eAMV,OAAOA,CACR,CAED,SAASmpB,EAAeD,EAAKtE,GAC3B,OAAOA,EAAeA,EAAayF,QAAQnB,EAAK,UAAYA,CAC7D,CAED,SAASG,EAAc3gD,EAAQwgD,EAAK1qB,GAClC,GAAIlc,EAAAA,QAAEe,SAAS6mC,EAA4BhB,GACzC,OAAO5mC,EAAAA,QAAExd,IAAI4D,GAAQhT,IAAoB,IAAVA,EAAiB,OAAS,UAG3D,GAAI8oC,EAAO0B,WAAWgpB,GAAM,CAC1B,IAAK5mC,EAAAA,QAAEnpB,QAAQqlC,EAAO0B,WAAWgpB,GAAKhjB,QAAU5jB,EAAAA,QAAEnpB,QAAQqlC,EAAO0B,WAAWgpB,GAAKkB,cAC/E,OAAO9nC,EAAAA,QAAExd,IAAI4D,GAAQhT,GA9F3B,SAAsBA,EAAOU,GAC3B,GAAIksB,EAAAA,QAAEe,SAAS2mC,EAAiC5zD,GAAW,CACzD,MAAMk0D,GAAc,IAAAC,gBAAe70D,GAEnC,GAAI40D,EACF,OAAOA,CAEV,CAED,GAAIhoC,EAAAA,QAAEe,SAAS4mC,EAAmC7zD,GAChD,OAAOV,EAGT,MAAM8rC,EAAQ8nB,EAA0BlzD,IAAa,CAACA,GAEtD,GAAIksB,EAAAA,QAAEpkB,KAAKsjC,GAAS,EAAG,CACrB,MAAM8oB,GAAc,IAAAE,UAAS90D,GAE7B,GAAI40D,EACF,OAAOA,CAEV,CAED,OAAO,IACR,CAsEmCG,CAAa/0D,EAAOwzD,KAC7C,GAAoC,YAAhC1qB,EAAO0B,WAAWgpB,GAAK5lD,KAChC,OAAOgf,EAAAA,QAAExd,IAAI4D,GAAQhT,IAAoB,IAAVA,EAAiB,EAAI,GAEvD,CAED,OAAOgT,CACR,C,6FC+HM,SAAoB4hD,EAAahnD,GACtC,GAAIonD,EAASJ,GACX,OAAOA,EAET,MAAM50D,EAAQ4sB,EAAAA,QAAEgmB,QAAQqiB,EAAMrnD,IAAOo+C,GAAO5c,OAAO4c,KAAS4I,IAE5D,OAAO50D,EAAQ,QAAH,OAAW4N,EAAX,YAAmB5N,EAAnB,KAA8B,IAC3C,E,WAEM,SAAkBk1D,GACvB,IAAKA,EACH,OAAOA,EAET,MAAO,CAAEtnD,EAAM5N,GAASk1D,EAAU91C,MAAM,wBAClCw1C,GAAc,IAAAh1D,KAAIq1D,EAAO,CAACrnD,EAAM5N,IAEtC,OAAO4sB,EAAAA,QAAEpO,SAASo2C,GAAexlB,OAAOwlB,IAAe,IAAAh1D,KAAIu1D,EAAa,CAACvnD,EAAM5N,GAChF,E,iBAEM,SAAwBk1D,GAC7B,IAAKA,EACH,OAAOA,EAET,MAAO,CAAC,CAAGl1D,GAASk1D,EAAU91C,MAAM,wBAEpC,OAAOpf,CACR,EAhSD,I,EAAA,G,EAAA,O,2BACA,OAGA,MAAMi1D,EAAQ,CACZG,uBAAwB,CACtBC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,SAAU,KAEZC,0BAA2B,CACzBC,cAAe,EACfC,SAAU,EACVC,YAAa,EACbC,oBAAqB,EACrBC,YAAa,GAEf3H,cAAe,CACb4H,mBAAoB,IACpBC,qBAAsB,IACtBC,yBAA0B,IAC1BC,MAAO,IACPb,OAAQ,IACRE,QAAS,IACTD,OAAQ,IACRa,QAAS,KAEXC,SAAU,CACRC,SAAU,EACVhB,OAAQ,EACRC,OAAQ,EACRC,QAAS,GAEXe,OAAQ,CACNC,KAAM,EACNC,QAAS,IACTC,WAAY,IACZC,cAAe,IACfC,aAAc,KACdC,MAAO,KACPC,WAAY,KACZC,iBAAkB,MAEpBC,WAAY,CACVC,QAAS,EACTC,KAAM,EACNC,QAAS,EACTC,KAAM,EACNC,UAAW,GAEbC,cAAe,CACbC,QAAS,EACTC,gBAAiB,GACjBC,KAAM,IAERzD,QAAS,CACP0D,QAAS,EACTC,aAAc,GAEhB1D,mBAAoB,CAClB0B,cAAe,EACfC,SAAU,EACVC,YAAa,EACbC,oBAAqB,EACrBC,YAAa,GAEf5H,eAAgB,CACdyJ,UAAW,EACXtC,OAAQ,IACRE,QAAS,IACTqC,WAAY,IACZC,aAAc,IACdC,iBAAkB,KAEpB5D,iBAAkB,CAChB6D,IAAK,EACLC,OAAQ,GAEV/J,aAAc,CACZgK,QAAS,EACTC,SAAU,EACVC,iBAAkB,EAClBC,SAAU,EACVC,MAAO,GACPzB,MAAO,GACP0B,eAAgB,IAElBrE,eAAgB,CACdsE,kBAAmB,GACnBC,WAAY,GACZC,0BAA2B,GAC3BC,4BAA6B,GAC7BC,gBAAiB,GACjBC,gBAAiB,GACjBC,kBAAmB,GACnB7C,qBAAsB,GACtB8C,eAAgB,GAChBC,aAAc,GACdC,eAAgB,GAChBC,iBAAkB,GAClBC,gBAAiB,GACjBC,0BAA2B,GAC3BC,kBAAmB,GACnBC,wBAAyB,GACzBC,uCAAwC,GACxCC,qBAAsB,GACtBC,WAAY,GACZC,oBAAqB,GACrBC,kCAAmC,GACnCC,oBAAqB,GACrBC,iBAAkB,GAClBC,mBAAoB,GACpB9D,mBAAoB,GACpB+D,sBAAuB,GACvBC,kBAAmB,IACnBC,aAAc,IACdC,gDAAiD,IACjDC,kBAAmB,IACnBC,yBAA0B,IAC1BC,gCAAiC,IACjCC,yBAA0B,IAC1BC,UAAW,IACXC,WAAY,IACZC,qBAAsB,IACtBC,WAAY,IACZC,kBAAmB,KACnBC,kBAAmB,KACnBC,oBAAqB,KACrBC,wBAAyB,KACzBC,sBAAuB,KACvBC,mBAAoB,KACpBC,8BAA+B,KAC/BC,qBAAsB,KACtBC,iCAAkC,KAClCC,mCAAoC,KACpCC,aAAc,KACdC,YAAa,KACbC,8CAA+C,KAC/CC,iCAAkC,KAClCC,oCAAqC,KACrCC,oCAAqC,KACrCC,qCAAsC,KACtCC,8CAA+C,KAC/ChG,SAAU,WACViG,IAAK,IACLC,yCAA0C,IAC1CC,cAAe,IACfC,mBAAoB,IACpBC,mBAAoB,KAEtBC,oBAAqB,CACnBC,kBAAmB,EACnBC,UAAW,EACXC,UAAW,EACXC,eAAgB,EAChBC,UAAW,EACXC,YAAa,EACbC,WAAY,EACZC,QAAS,EACTC,mBAAoB,EACpBC,sBAAuB,EACvBC,UAAW,GACXC,UAAW,GACXC,WAAY,GACZC,WAAY,GACZC,YAAa,IAEf5I,SAAU,CACR6I,OAAQ,EACRC,mBAAoB,GACpBC,OAAQ,GACRC,MAAO,GACPC,QAAS,GACTC,QAAS,GACTC,OAAQ,GACRC,OAAQ,GACRC,QAAS,GACTC,UAAW,GACXC,WAAY,GACZC,QAAS,IACTC,QAAS,IACTC,kBAAmB,IACnBC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,SAAU,GACVC,SAAU,GACVC,UAAW,GACXC,WAAY,GACZC,QAAS,GACTC,QAAS,GACTC,SAAU,GACVC,OAAQ,IACRC,UAAW,IACXC,QAAS,IACTC,QAAS,GACTC,QAAS,IACTC,SAAU,EACVC,WAAY,GACZC,UAAW,GACXC,SAAU,GACVlH,IAAK,KAEP1D,OAAQ,CACN6K,OAAQ,EACRC,QAAS,EACTC,iBAAkB,EAClBhH,SAAU,IAEZiH,gBAAiB,CACfhK,OAAQ,IACRC,OAAQ,IACRC,QAAS,KAEX+J,UAAW,CACTC,MAAO,EACPC,OAAQ,EACRC,MAAO,IAILtK,EAAc,CAClBuK,aAAc,CACZC,YAAa,cACbjS,OAAQ,SACRkS,SAAU,WACVpJ,QAAS,UACTqJ,mBAAoB,qBACpBC,aAAc,eACdC,aAAc,gBAEhBjnD,OAAQ,CACNu8C,OAAQ,SACRG,SAAU,YAEZwK,8BAA+B,CAC7BC,qBAAsB,uBACtBC,uBAAwB,yBACxBC,kBAAmB,oBACnBC,iBAAkB,mBAClBC,kBAAmB,oBACnBC,QAAS,WAEXC,mCAAoC,CAClCC,KAAM,OACNC,OAAQ,SACRH,QAAS,WAEXI,uBAAwB,CACtBC,QAAS,UACTC,SAAU,YAEZC,YAAa,CACXC,UAAW,YACXC,eAAgB,iBAChBT,QAAS,YAIPtL,EAAWE,GAAc,uBAAwBppC,KAAKopC,E,iGC9PrD,SAAwBT,GAC7B,IAAInqB,EAAOmqB,GAAM,QAEjB,OAAQnqB,GACR,IAAK,WACHA,EAAM,WACN,MACF,IAAK,iBACHA,EAAM,iBACN,MACF,IAAK,aACHA,EAAM,aACN,MACF,IAAK,WACHA,EAAM,WACN,MACF,IAAK,QAkBL,IAAK,gBACHA,EAAM,KACN,MAjBF,IAAK,WACHA,EAAM,MACN,MACF,IAAK,UACHA,EAAM,KACN,MACF,IAAK,iBACHA,EAAM,MACN,MACF,IAAK,OACHA,EAAM,KACN,MACF,IAAK,cACHA,EAAM,MACN,MAIF,IAAK,UACHA,EAAM,CAAC,MAAM,OAIf,OAAOA,CACR,E,mBAEM,SAA0BhrC,EAAMw+C,GACrC,IAAIxT,EAAMhrC,EAEV,GAAI,gBAAgBwsB,KAAKxsB,GACvB,MAAO,sBAAwBA,EAGjC,OAAQA,GACR,IAAK,6BACH,MAAO,6BACT,IAAK,oBACL,IAAK,sCACHgrC,EAAM,uCACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,2BACL,IAAK,6CACHA,EAAM,8CACN,MACF,IAAK,yBACL,IAAK,2CACHA,EAAM,4CACN,MACF,IAAK,oCACL,IAAK,sDACHA,EAAM,uDACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,iCACL,IAAK,mDACHA,EAAM,oDACN,MACF,IAAK,SACL,IAAK,aACL,IAAK,2BACL,IAAK,+BACHA,EAAM,4BACN,MACF,IAAK,cACL,IAAK,gCACL,IAAK,kBACL,IAAK,oCACHA,EAAM,iCACN,MACF,IAAK,kBACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,mBACL,IAAK,qBACL,IAAK,QACL,IAAK,qCACL,IAAK,uCACL,IAAK,0BACHA,EAAM,2BACN,MACF,IAAK,kBACL,IAAK,cACL,IAAK,oCACL,IAAK,gCACHA,EAAM,iCACN,MACF,IAAK,oBACL,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,iBACL,IAAK,mCACHA,EAAM,oCACN,MACF,IAAK,uBACL,IAAK,yCACHA,EAAM,0CACN,MACF,IAAK,yBACL,IAAK,2CACHA,EAAM,4CACN,MACF,IAAK,+BACL,IAAK,iDACHA,EAAM,kDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,6BACL,IAAK,+CACHA,EAAM,gDACN,MACF,IAAK,oCACL,IAAK,sDACHA,EAAM,uDACN,MACF,IAAK,gCACL,IAAK,kDACHA,EAAM,mDACN,MACF,IAAK,wCACL,IAAK,0DACHA,EAAM,2DACN,MACF,IAAK,aACL,IAAK,+BACHA,EAAM,gCACN,MACF,IAAK,aACL,IAAK,+BACHA,EAAM,gCACN,MACF,IAAK,MACL,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,uBACL,IAAK,yCACHA,EAAM,0CACN,MACF,IAAK,mBACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,0BACL,IAAK,4CACHA,EAAM,6CACN,MACF,IAAK,iBACL,IAAK,mCACHA,EAAM,oCACN,MACF,IAAK,wBACL,IAAK,0CACHA,EAAM,2CACN,MACF,IAAK,oBACL,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,2BACL,IAAK,6CACHA,EAAM,8CACN,MACF,IAAK,mBACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,gCACL,IAAK,kDACHA,EAAM,mDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,yCACL,IAAK,2DACHA,EAAM,4DACN,MACF,IAAK,eACL,IAAK,MACL,IAAK,iCACL,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,WACL,IAAK,6BA+BL,IAAK,oBACL,IAAK,sCACHA,EAAK,uCACL,MA/BF,IAAK,uBACL,IAAK,yCA+BL,IAAK,6BACL,IAAK,+CACHA,EAAK,gDACL,MA/BF,IAAK,oBACL,IAAK,sCA+BL,IAAK,0BACL,IAAK,4CACHA,EAAK,6CACL,MA/BF,IAAK,4BACL,IAAK,8CA+BL,IAAK,gCACL,IAAK,kDACHA,EAAK,mDACL,MA/BF,IAAK,qBACL,IAAK,uCA+BL,IAAK,2BACL,IAAK,6CACHA,EAAK,8CACL,MA/BF,IAAK,4BACL,IAAK,8CA+BL,IAAK,8BACL,IAAK,gDACHA,EAAK,iDACL,MA/BF,IAAK,aACL,IAAK,+BAGL,IAAK,oBACL,IAAK,sCA2BL,IAAK,oBACL,IAAK,sCACHA,EAAK,uCACL,MACF,IAAK,yBACL,IAAK,eACHA,EAAM,qCACN,MACF,IAAK,wBACL,IAAK,cACHA,EAAM,oCACN,MACF,IAAK,4BACL,IAAK,kBACHA,EAAM,wCACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,cACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,mBACL,IAAK,0CACHA,EAAM,2CACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,YACL,IAAK,qBACL,IAAK,mCACL,IAAK,4CACHA,EAAM,6CACN,MACF,IAAK,mBACL,IAAK,0CACL,IAAK,6BACHA,EAAM,8BACN,MACF,IAAK,YACL,IAAK,aACL,IAAK,mCACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,cACHA,EAAM,OACN,MACF,IAAK,iBACH,OAAQwT,GACR,IAAK,WACHxT,EAAM,SACN,MACF,IAAK,eACHA,EAAM,iBACN,MACF,QACEA,EAAM,kBAGR,MACF,IAAK,gBACH,OAAQwT,GACR,IAAK,UACL,IAAK,WACHxT,EAAM,SACN,MACF,QACEA,EAAM,iBAGR,MACF,IAAK,aACL,IAAK,gBACL,IAAK,oBAkOL,IAAK,iBACHA,EAAM,SACN,MAjOF,IAAK,KACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,eACL,IAAK,wBACL,IAAK,cACHA,EAAM,KACN,MACF,IAAK,aACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,+BAGV,MACF,IAAK,eACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,iCAGV,MACF,IAAK,eACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,iCAGV,MACF,IAAK,gBACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,kCAGV,MACF,IAAK,gBACHA,EAAM,iBACN,MACF,IAAK,qBACL,IAAK,iBACL,GACO,2BADCwT,EAEJxT,EAAM,4BAGNA,EAAM,iBAGR,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,eACHA,EAAM,mCACN,MACF,IAAK,MACL,IAAK,eACHA,EAAM,aACN,MACF,IAAK,WACL,IAAK,eACL,IAAK,0BACH,OAAQwT,GACN,IAAK,WACHxT,EAAM,OACN,MACF,IAAK,UACL,IAAK,KACL,IAAK,UACL,IAAK,WACL,IAAK,sBACL,IAAK,6BACL,IAAK,yBACHA,EAAM,gBAGV,MACF,IAAK,uCACL,IAAK,+BAmJL,IAAK,mBACHA,EAAM,qBACN,MAlJF,IAAK,UACL,IAAK,qBACP,IAAK,gBACH,IAAK,yBACHA,EAAM,eACN,MACF,IAAK,wBACL,IAAK,yBACL,IAAK,wBACL,IAAK,mBACHA,EAAM,sBACN,MACF,IAAK,aACHA,EAAM,cACN,MACF,IAAK,uBACL,IAAK,iBACL,IAAK,SACHA,EAAM,gBACN,MACF,IAAK,yBACHA,EAAM,0BACN,MACF,IAAK,uBACHA,EAAM,wBACN,MACF,IAAK,8BACHA,EAAM,+BACN,MACF,IAAK,4BACHA,EAAM,6BACN,MACF,IAAK,0BACHA,EAAM,2BACN,MACF,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,gCACHA,EAAM,iCACN,MACF,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,SACHA,EAAM,OACN,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,aACHA,EAAM,aACN,MACF,IAAK,UACH,GACK,2BADGwT,EAENxT,EAAM,mBAGNA,EAAM,QAGR,MACF,IAAK,gBACHA,EAAM,cACN,MACF,IAAK,mBACHA,EAAM,iBACN,MACF,IAAK,eACHA,EAAM,aACN,MACF,IAAK,kBACHA,EAAM,SACN,MACF,IAAK,cACH,OAAQwT,GACN,IAAK,UACL,IAAK,WACHxT,EAAM,OACN,MACF,QACEA,EAAM,eAGV,MACF,IAAK,mBACL,IAAK,0BACHA,EAAM,YACN,MACF,IAAK,qBACL,IAAK,2BACHA,EAAM,aACN,MACF,IAAK,4BACHA,EAAM,qBACN,MACF,IAAK,iBACH,GACO,2BADCwT,EAEJxT,EAAM,sCAGNA,EAAM,UAGV,MACF,IAAK,mBACH,GACO,2BADCwT,EAEJxT,EAA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","sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/cookie/index.ts","../webpack-src:/cookie/src/index.ts","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/I18nModel.ts","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/I18nProvider.tsx","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/with-i18n-provider.tsx","../../../../../../../../external/underscore","../../../../../../../../external/react","../../../../../../../../external/@fluentui/react-components","../../../../../../../../external/@bingads-webui/copilot-i18n","../../../../../../../../external/@bingads-webui-react/copilot-ui-base","../../../../../../../../external/@fluentui/react-icons","../../../../../../../../external/markdown-to-jsx","../../../../../../../../external/uuid","../../../../../../../../external/@bingads-webui/ads-copilot-ui","../../../../../../../../external/@bingads-webui-react/msa-copilot-common","../webpack-src:/copilot-insights/index.ts","../webpack-src:/copilot-insights/src/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel/insights-panel.tsx","../../../../../../../../external/@bingads-webui-react/app-layout-container","../webpack-src:/copilot-insights/src/components/insights-panel/styles.ts","../webpack-src:/copilot-insights/src/components/insights-panel/fluctuations.tsx","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/copilot-insights/src/hooks/use-fluctuations-message.ts","../webpack-src:/copilot-insights/src/types.ts","../webpack-src:/copilot-insights/src/components/insights-panel/summary.tsx","../../../../../../../../external/@bingads-webui-react/ui-blocker","../../../../../../../../external/@bingads-webui-react/preference-context","../../../../../../../../external/@bingads-webui-universal/temporal-utitlities","../../../../../../../../external/@bingads-webui-react/scope-service","../webpack-src:/copilot-insights/src/components/insights-chart/index.ts","../webpack-src:/copilot-insights/src/components/insights-chart/insights-chart.tsx","../../../../../../../../external/@bingads-webui-react/fluctuations-chart","../webpack-src:/copilot-insights/src/components/insights-panel/insights-panel-loader.tsx","../../../../../../../../external/@bingads-webui-react/i18n-context","../webpack-src:/copilot-insights/src/components/insights-button/index.ts","../webpack-src:/copilot-insights/src/components/insights-button/insights-button.tsx","../../../../../../../../external/@bingads-webui-react/hoc-with-permissions","../webpack-src:/copilot-insights/src/components/summarize-plugin-renderer/index.ts","../webpack-src:/copilot-insights/src/components/summarize-plugin-renderer/summarize-plugin-renderer.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/index.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/insights-summarize-message.tsx","../webpack-src:/copilot-insights/src/hooks/use-summarize-message.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/insights-summarize-plugin-result.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/single-result.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/get-comparison-date-period.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/use-normalized-perf-metrics.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/use-insights-summarize-message-styles.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/sanitize-date-from-summarize-plugin.ts","../webpack-src:/copilot-insights/src/components/insights-missing-params/index.ts","../webpack-src:/copilot-insights/src/components/insights-missing-params/insights-missing-params.tsx","../webpack-src:/copilot-insights/src/components/fluctuations-plugin-renderer/index.ts","../webpack-src:/copilot-insights/src/components/fluctuations-plugin-renderer/fluctuations-plugin-renderer.tsx","../webpack-src:/copilot-insights/src/components/insights-panel-preview/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel-preview/insights-panel-preview.tsx","../webpack-src:/copilot-insights/src/components/insights-panel-preview/use-insights-panel-preview-styles.ts","../webpack-src:/copilot-insights/src/i18n-keys.ts","../webpack-src:/custom-column-parser-pegjs/index.js","../webpack-src:/custom-column-parser-pegjs/src/parser.pegjs","../webpack-src:/custom-column-parser/index.js","../webpack-src:/custom-column-parser/src/custom-column-parser.js","../../../../../../../../external/@bingads-webui/custom-column-parser-pegjs","../webpack-src:/custom-columns-shared-config/index.js","../webpack-src:/custom-columns-shared-config/src/metrics/index.js","../webpack-src:/custom-columns-shared-config/src/metrics/performance.js","../webpack-src:/custom-columns-shared-config/src/metrics/conversions.js","../webpack-src:/custom-columns-shared-config/src/segments/index.js","../webpack-src:/custom-columns-shared-config/src/segments/device-type.js","../webpack-src:/custom-columns-shared-config/src/segments/network.js","../webpack-src:/custom-columns-shared-config/src/segments/top-vs-other.js","../webpack-src:/custom-columns-shared-config/src/config.js","../webpack-src:/date-picker/index.js","../webpack-src:/date-picker/src/date-picker-view.es","../../../../../../../../external/@bingads-webui/deterministic-view","../../../../../../../../external/@bingads-webui/keycode","../../../../../../../../external/@bingads-webui/kendo/kendo.datepicker","../webpack-src:/date-picker/src/date-picker-template.pug","../../../../../../../../external/pug-runtime","../../../../../../../../external/bluebird","../webpack-src:/deflicker/index.js","../webpack-src:/deflicker/src/promise.es","../../../../../../../../external/backbone","../webpack-src:/deterministic-view/index.js","../webpack-src:/deterministic-view/src/helpers.es","../webpack-src:/deterministic-view/src/deterministic-view.es","../../../../../../../../external/@bingads-webui/base-view","../webpack-src:/deterministic-view/src/render-engine.es","../webpack-src:/deterministic-view/src/focus-keeper.es","../webpack-src:/deterministic-wrapper-view/index.js","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-view.es","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-for-html.es","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-for-backbone-view.es","../webpack-src:/dialog/index.js","../webpack-src:/dialog/src/index.es","../webpack-src:/dialog/src/template/index.pug","../webpack-src:/dialog/src/dialog-decorator/dialog-decorator.es","../../../../../../../../external/@bingads-webui/kendo/kendo.window","../../../../../../../../external/bootstrap","../../../../../../../../external/jquery","../../../../../../../../external/urijs","../webpack-src:/download-service/index.js","../webpack-src:/download-service/src/iframe-download.js","../../../../../../../../external/@bingads-webui-react/hoc-with-instrumentation","../webpack-src:/download-service/src/index.js","../webpack-src:/download-service/src/downloadify.js","../../../../../../../../external/@bingads-webui/restore-scroll-bar","../webpack-src:/draggable-list/index.js","../webpack-src:/draggable-list/src/draggable-list.es","../webpack-src:/draggable-list/src/template.pug","../../../../../../../../external/knockout","../../../../../../../../external/@bingads-webui/knockout-view","../webpack-src:/edm-bulk/index.js","../webpack-src:/edm-bulk/src/index.js","../webpack-src:/edm-bulk/src/bulk-upsert.js","../../../../../../../../external/@bingads-webui/reflection","../../../../../../../../external/@bingads-webui/odata-bulk-upsert","../../../../../../../../external/@bingads-webui/http-util","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/edm-bulk/src/constants.js","../../../../../../../../external/@bingads-webui/registry","../../../../../../../../external/@bingads-webui/edm-shared","../webpack-src:/edm-core-legacy/index.js","../webpack-src:/edm-core-legacy/src/index.js","../webpack-src:/edm-core-legacy/src/types-plugin.js","../webpack-src:/edm-core-legacy/src/schema-plugin.js","../webpack-src:/edm-core/index.js","../webpack-src:/edm-core/src/index.js","../webpack-src:/edm-core/src/types-plugin.js","../webpack-src:/edm-core/src/schema-plugin.js","../webpack-src:/edm-js-data/index.js","../webpack-src:/edm-js-data/src/index.js","../../../../../../../../external/js-data","../../../../../../../../external/js-data-schema","../webpack-src:/edm-js-data/src/js-data.js","../webpack-src:/edm-odata-legacy/index.js","../webpack-src:/edm-odata-legacy/src/index.js","../../../../../../../../external/@bingads-webui/edm-resource-identifiers-legacy","../../../../../../../../external/@bingads-webui/edm-resource-identifiers","../webpack-src:/edm-odata/index.js","../webpack-src:/edm-odata/src/index.js","../webpack-src:/edm-odata/src/cache.js","../../../../../../../../external/json-stable-stringify","../webpack-src:/edm-odata/src/server-call-cache-item.js","../../../../../../../../external/@bingads-webui-universal/observable","../webpack-src:/edm-odata/src/observable-cache.js","../../../../../../../../external/@bingads-webui-universal/time-aware-cache","../webpack-src:/edm-odata/src/constants.js","../webpack-src:/edm-odata/src/cache-event.js","../webpack-src:/edm-resource-identifiers-legacy/index.js","../webpack-src:/edm-resource-identifiers-legacy/src/index.js","../webpack-src:/edm-resource-identifiers/index.js","../webpack-src:/edm-resource-identifiers/src/index.js","../webpack-src:/edm-shared/index.js","../webpack-src:/edm-shared/src/types-plugin-shared.js","../webpack-src:/edm-shared/src/resource-identifiers-shared.js","../webpack-src:/experiment-logger/index.js","../webpack-src:/experiment-logger/src/exp-logger-factory.js","../webpack-src:/experiment-logger/src/activity.js","../webpack-src:/experiment-logger/src/exp-logger.js","../webpack-src:/file-picker/index.js","../webpack-src:/file-picker/src/view/index.es","../webpack-src:/file-picker/src/viewmodel/index.es","../../../../../../../../external/path-browserify","../webpack-src:/file-picker/src/template/index.pug","../webpack-src:/filter-agent/index.js","../webpack-src:/filter-agent/src/filter-agent.js","../../../../../../../../external/@bingads-webui/filter-service","../webpack-src:/filter-agent/src/selector-filter-agent.es","../webpack-src:/filter-agent/src/base-filter-agent.es","../webpack-src:/filter-agent/src/searchbox-filter-agent.es","../webpack-src:/filter-agent/src/filter-editor-agent.es","../../../../../../../../external/@bingads-webui/filter-editor","../../../../../../../../external/@bingads-webui/deterministic-wrapper-view","../webpack-src:/filter-agent/src/filter-bar-agent.es","../../../../../../../../external/@bingads-webui/filter-bar","../webpack-src:/filter-agent/src/filter-menu-agent.es","../../../../../../../../external/@bingads-webui/dialog","../webpack-src:/filter-agent/src/template/removeDialog.pug","../webpack-src:/filter-agent/src/schema-localizer.es","../../../../../../../../external/underscore.string","../webpack-src:/filter-bar/index.js","../webpack-src:/filter-bar/src/filter-bar-view.es","../../../../../../../../external/@bingads-webui/filter-i18n","../webpack-src:/filter-bar/src/filter-bar-template.pug","../webpack-src:/filter-bar/src/single.pug","../webpack-src:/filter-bar/src/list.pug","../../../../../../../../external/classnames","../../../../../../../../external/prop-types","../../../../../../../../external/@bingads-webui-react/with-default-styles","../../../../../../../../external/@bingads-webui-react/primitive","../webpack-src:/filter-commons/index.js","../webpack-src:/filter-commons/src/constants.js","../webpack-src:/filter-commons/src/converter.js","../webpack-src:/filter-commons/src/predicate.js","../webpack-src:/filter-commons/src/util.js","../webpack-src:/filter-commons/src/add-filter-button.js","../webpack-src:/filter-commons/src/with-popover.js","../../../../../../../../external/hoist-non-react-statics","../../../../../../../../external/@bingads-webui-react/hoc-utils","../../../../../../../../external/@bingads-webui-react/callout","../webpack-src:/filter-commons/src/schema-localizer.js","../webpack-src:/filter-commons/src/filterMetadataToLegacy.js","../webpack-src:/filter-commons/src/enum.js","../webpack-src:/filter-commons/src/filterMetadata.js","../webpack-src:/filter-editor/index.js","../webpack-src:/filter-editor/src/index.es","../../../../../../../../external/@bingads-webui/predicate-list","../webpack-src:/filter-editor/src/template/index.pug","../webpack-src:/filter-entity/index.js","../webpack-src:/filter-entity/src/index.es","../../../../../../../../external/@bingads-webui/filter-schema","../webpack-src:/filter-entity/src/converter/normalize.js","../webpack-src:/filter-entity/src/converter/legacy.es","../webpack-src:/filter-entity/src/converter/enum.es","../webpack-src:/filter-entity/src/converter/odata-4.es","../../../../../../../../external/@bingads-webui/kendo/kendo.data.odata","../webpack-src:/filter-entity/src/converter/kendo.es","../webpack-src:/filter-i18n/index.js","../webpack-src:/filter-i18n/src/index.es","../webpack-src:/filter-i18n/src/schema-i18n.es","../webpack-src:/filter-schema/index.js","../webpack-src:/filter-schema/src/index.es","../webpack-src:/filter-schema/src/schema-utils.es","../../../../../../../../external/@bingads-webui/filter-commons","../webpack-src:/filter-service/index.js","../webpack-src:/filter-service/src/filter-service.js","../../../../../../../../external/@bingads-webui/filter-entity","../../../../../../../../external/@bingads-webui/safe-json","../webpack-src:/filter-service/src/filter-service-util.js","../../../../../../../../external/react-dom","../webpack-src:/focus-lock-decorator/index.js","../webpack-src:/focus-lock-decorator/src/index.js","../webpack-src:/focus-lock-decorator/src/focus-lock-instance-decorator.js","../webpack-src:/focus-lock-decorator/src/focus-lock-backbone-instance-wrapper.js","../../../../../../../../external/@bingads-webui-react/focus-lock","../../../../../../../../external/@bingads-webui-react/backbone-instance-wrapper","../webpack-src:/focus-lock-decorator/src/focus-lock-decorator.js","../webpack-src:/focus-lock-decorator/src/focus-lock-backbone-wrapper.js","../../../../../../../../external/@bingads-webui-react/backbone-view-wrapper","../webpack-src:/global-search-copilot/index.ts","../webpack-src:/global-search-copilot/src/index.tsx","../webpack-src:/global-search-copilot/src/CopilotResultView.tsx","../../../../../../../../external/@bingads-webui-react/with-site-map","../../../../../../../../external/@bingads-webui-react/list-selector","../webpack-src:/global-search-copilot/src/utils.ts","../../../../../../../../external/@bingads-webui/search-utils","../webpack-src:/global-search-copilot/src/CopilotResultView.styles.ts","../webpack-src:/http-util/src/util/url.ts","../webpack-src:/http-util/src/channel/odata-core.ts","../webpack-src:/http-util/src/channel/odata-batch.ts","../webpack-src:/http-util/src/util/multipart.ts","../webpack-src:/http-util/index.ts","../webpack-src:/http-util/src/channel/odata.ts","../webpack-src:/http-util/src/channel/core.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 25);\n","export * from './src/index';\r\n","export function createCookie(configs: {\r\n  cName: string,\r\n  cValue: string,\r\n  expires?: Date,\r\n  path?: string,\r\n  domain?: string,\r\n  secure?: boolean,\r\n  encode?: boolean,\r\n  samesite?: string,\r\n}) {\r\n  const {\r\n    cName, cValue, expires, path, domain, secure, encode = true, samesite,\r\n  } = configs;\r\n  const value = encode ? encodeURIComponent(cValue) : cValue;\r\n\r\n  return [\r\n    `${cName}=${value}`,\r\n    expires ? `expires=${expires.toUTCString()}` : '',\r\n    path ? `path=${path}` : '',\r\n    domain ? `domain=${domain}` : '',\r\n    secure ? 'secure' : '',\r\n    samesite ? `samesite=${samesite}` : '',\r\n  ].filter((item) => !!item).join('; ');\r\n}\r\n\r\nexport function set(\r\n  cName: string,\r\n  cValue: string,\r\n  expires?: Date,\r\n  path?: string,\r\n  domain?: string,\r\n  secure?: boolean,\r\n  samesite?: string,\r\n) {\r\n  document.cookie = createCookie({\r\n    cName,\r\n    cValue,\r\n    expires,\r\n    path,\r\n    domain,\r\n    secure,\r\n    encode: true,\r\n    samesite,\r\n  });\r\n}\r\n\r\nexport function get(cName: string, skipDecode?: boolean) {\r\n  const ARRcookies = document.cookie.split('; ');\r\n\r\n  for (let i = 0; i < ARRcookies.length; i += 1) {\r\n    let x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));\r\n    const y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);\r\n    x = x.replace(/^\\s+|\\s+$/g, '');\r\n    if (x === cName) {\r\n      // Use case: ImportFileSaSUrl is only valid with specific arguments containing encoded html\r\n      // But some portions of the Url with encodable characters are not encoded\r\n      // (e.g. &arg_name=.....)\r\n      // It would be impossible to re-encode the Url\r\n      // after getting from cookie b/c body of an argument\r\n      // could contain some of the characters that should get encoded\r\n      if (skipDecode) {\r\n        return y;\r\n      }\r\n      return decodeURIComponent(y);\r\n    }\r\n  }\r\n\r\n  return null;\r\n}\r\n","import { isEmpty, template } from 'underscore';\r\nimport { TranslatedStrings } from './translatedStrings';\r\nimport { IBingAdsI18nModel } from './types';\r\n\r\n// maps locale to a @bingads-webui/localization json file\r\nconst localeMap: any = {\r\n  'zh-CN': 'zh-Hans',\r\n  'zh-HK': 'zh-Hant',\r\n  'zh-TW': 'zh-Hant',\r\n};\r\n\r\nexport interface II18nModel extends IBingAdsI18nModel {\r\n  getLocale(): string;\r\n  getString(key: string, model?: Record<string, string>): string;\r\n}\r\n\r\nexport class I18nModel implements II18nModel {\r\n  private locale: string;\r\n\r\n  private translationData: TranslatedStrings;\r\n\r\n  private translationDataLocale: string;\r\n\r\n  private bingAdsI18n?: IBingAdsI18nModel;\r\n\r\n  private currencyCode?: string;\r\n\r\n  constructor(translationData: TranslatedStrings, locale: string, bingAdsI18n?: IBingAdsI18nModel, currencyCode?: string) {\r\n    this.locale = locale;\r\n    this.translationData = translationData;\r\n    this.translationDataLocale = this.getTranslationDataLocale();\r\n    this.bingAdsI18n = bingAdsI18n;\r\n\r\n    // need to support having a default currency code here because it's not set in the CCUI i18n object by default\r\n    this.currencyCode = currencyCode;\r\n  }\r\n\r\n  private getTranslationDataLocale() {\r\n    if (this.translationData[this.locale]) {\r\n      return this.locale;\r\n    }\r\n\r\n    if (localeMap[this.locale]) {\r\n      return localeMap[this.locale];\r\n    }\r\n\r\n    const [language] = this.locale.split('-');\r\n    if (this.translationData[language]) {\r\n      return language;\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  getLocale() {\r\n    return this.locale;\r\n  }\r\n\r\n  getString(key: string, model?: Record<string, string>) {\r\n    let str = this.translationData[this.translationDataLocale]?.[key] || key;\r\n    if (!isEmpty(model) && str) {\r\n      const compiled = template(str);\r\n      str = compiled(model);\r\n    }\r\n\r\n    return str;\r\n  }\r\n\r\n  getDateFormats() {\r\n    return this.bingAdsI18n!.getDateFormats();\r\n  }\r\n\r\n  formatCurrency(number: number, currency?: string, options?: any) {\r\n    return this.bingAdsI18n!.formatCurrency(number, currency || this.currencyCode, options);\r\n  }\r\n\r\n  formatCivilDate(dateObject: object, options?: any) {\r\n    return this.bingAdsI18n!.formatCivilDate(dateObject, options);\r\n  }\r\n\r\n  formatDate(date: Date, options?: any) {\r\n    return this.bingAdsI18n!.formatDate(date, options);\r\n  }\r\n\r\n  formatDecimal(number: number, options?: any) {\r\n    return this.bingAdsI18n!.formatDecimal(number, options);\r\n  }\r\n\r\n  formatDecimalToFixed(number: number, options?: any) {\r\n    return this.bingAdsI18n!.formatDecimalToFixed(number, options);\r\n  }\r\n\r\n  formatPercent(number: number, options?: any): string {\r\n    return this.bingAdsI18n!.formatPercent(number, options);\r\n  }\r\n\r\n  parseCivilDate(value: string, options?: any) {\r\n    return this.bingAdsI18n!.parseCivilDate(value, options);\r\n  }\r\n\r\n  dateParser(options?: any) {\r\n    return this.bingAdsI18n!.dateParser(options);\r\n  }\r\n}\r\n","import React, {\r\n  FC,\r\n  memo,\r\n  useContext,\r\n  useMemo,\r\n} from 'react';\r\nimport { translatedStrings as defaultTranslatedStrings, TranslatedStrings } from './translatedStrings';\r\nimport { I18nModel } from './I18nModel';\r\nimport { IBingAdsI18nModel } from './types';\r\n\r\nexport const DEFAULT_LOCALE = 'en-us';\r\n\r\nexport type I18nProviderProps = {\r\n  translatedStrings?: TranslatedStrings;\r\n  locale?: string;\r\n  children?: React.ReactNode;\r\n  bingAdsI18n?: IBingAdsI18nModel;\r\n  currencyCode?: string;\r\n};\r\n\r\nexport const I18nContext = React.createContext<I18nModel | null>(null);\r\nexport const useI18nContext = () => useContext(I18nContext);\r\n\r\nexport const I18nProvider: FC<I18nProviderProps> = memo((props) => {\r\n  const {\r\n    bingAdsI18n,\r\n    children,\r\n    currencyCode,\r\n    locale = DEFAULT_LOCALE,\r\n    translatedStrings = defaultTranslatedStrings,\r\n  } = props;\r\n\r\n  const i18nModel = useMemo(\r\n    () => new I18nModel(translatedStrings as TranslatedStrings, locale, bingAdsI18n, currencyCode),\r\n    [translatedStrings, locale, bingAdsI18n, currencyCode],\r\n  );\r\n\r\n  return (\r\n    <I18nContext.Provider value={i18nModel}>\r\n      {children}\r\n    </I18nContext.Provider>\r\n  );\r\n});\r\n\r\nI18nProvider.displayName = 'I18nProvider';\r\n","import React from 'react';\r\nimport { I18nProvider } from './I18nProvider';\r\n\r\nexport function withI18nProvider(Component: React.ComponentType<any>) {\r\n  const HOC = (props: any) => (\r\n    <I18nProvider {...props}>\r\n      <Component {...props} />\r\n    </I18nProvider>\r\n  );\r\n\r\n  return HOC;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","module.exports = __WEBPACK_EXTERNAL_MODULE__16__;","module.exports = __WEBPACK_EXTERNAL_MODULE__19__;","module.exports = __WEBPACK_EXTERNAL_MODULE__27__;","module.exports = __WEBPACK_EXTERNAL_MODULE__44__;","module.exports = __WEBPACK_EXTERNAL_MODULE__78__;","module.exports = __WEBPACK_EXTERNAL_MODULE__104__;","module.exports = __WEBPACK_EXTERNAL_MODULE__126__;","export * from './src';\r\n","export * from './components/insights-panel';\r\nexport * from './components/insights-button';\r\nexport * from './components/summarize-plugin-renderer';\r\nexport * from './components/fluctuations-plugin-renderer';\r\nexport * from './i18n-keys';\r\n","export * from './insights-panel';\r\nexport * from './insights-panel-loader';\r\n","import React, {\r\n  useCallback,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from 'react';\r\nimport {\r\n  Button,\r\n  Card,\r\n  CardHeader,\r\n  mergeClasses,\r\n  Tooltip,\r\n  Subtitle1,\r\n} from '@fluentui/react-components';\r\nimport { DismissRegular, Info16Regular } from '@fluentui/react-icons';\r\nimport { Mode, LayoutContext } from '@bingads-webui-react/app-layout-container';\r\nimport { IAIMessage } from '@bingads-webui/ads-copilot-ui';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { usePanelStyles } from './styles';\r\nimport { Fluctuations } from './fluctuations';\r\nimport { IDateRange } from './types';\r\nimport { useFluctuationsMessage } from '../../hooks/use-fluctuations-message';\r\n\r\nexport type InsightPanelProps = {\r\n  replyToId: string,\r\n  TimeZone: number,\r\n  dateRange: IDateRange,\r\n  dateFormat: string,\r\n  logger?: ILogger,\r\n  onFeedbackButtonClick: IAIMessage['onFeedbackButtonClick'];\r\n};\r\n\r\nexport const InsightsPanel: React.FC<InsightPanelProps> = React.memo((props) => {\r\n  const {\r\n    replyToId,\r\n    TimeZone,\r\n    dateRange,\r\n    dateFormat,\r\n    logger,\r\n    onFeedbackButtonClick,\r\n  } = props;\r\n\r\n  const i18n = useContext(I18nContext);\r\n  const { change: changeLayout } = useContext(LayoutContext) as any;\r\n  const [, setHasData] = useState(false);\r\n\r\n  const { fluctuationSummaryMessage, fluctuationResult } = useFluctuationsMessage(replyToId);\r\n\r\n  const headerText = useMemo(() => {\r\n    if (fluctuationResult && fluctuationSummaryMessage) {\r\n      const isSingleCampaign = fluctuationResult.Name === 'CampaignFluctuation';\r\n      const campaignName = fluctuationResult?.Parameters?.CampaignName;\r\n\r\n      return i18n?.getString(\r\n        isSingleCampaign ? _TL_('Fluctuations - {{campaignName}}') : _TL_('Fluctuations - All Campaigns'),\r\n        { campaignName },\r\n      );\r\n    }\r\n\r\n    return i18n?.getString(_TL_('Fluctuations'));\r\n  }, [fluctuationSummaryMessage, fluctuationResult, i18n]);\r\n\r\n  const panelClasses = usePanelStyles();\r\n  const closePanel = useCallback(() => {\r\n    changeLayout({ overlay: { mode: Mode.Hidden, content: null } });\r\n  }, [changeLayout]);\r\n\r\n  useEffect(() => {\r\n    setHasData((prevHasData) => {\r\n      if (prevHasData && fluctuationSummaryMessage == null) {\r\n        // data was previously available but it has been removed, close the panel\r\n        setTimeout(() => closePanel(), 0);\r\n      }\r\n      return fluctuationSummaryMessage != null;\r\n    });\r\n  }, [fluctuationSummaryMessage]);\r\n\r\n  return (\r\n    <Card className={mergeClasses('insight-panel', panelClasses.root)} size=\"large\">\r\n      <CardHeader\r\n        className={panelClasses.header}\r\n        header={(\r\n          <Subtitle1 className={mergeClasses('insight-panel-header-text', panelClasses.headerText)}>\r\n            {headerText}\r\n            <Tooltip content={i18n!.getString(_TL_('Fluctuations are detected from the last 90 days of your selected date range.'))} relationship=\"description\">\r\n              <Button size=\"small\" appearance=\"transparent\" icon={<Info16Regular />} />\r\n            </Tooltip>\r\n          </Subtitle1>\r\n        )}\r\n        action={(\r\n          <Button\r\n            className={mergeClasses('close-button')}\r\n            appearance=\"transparent\"\r\n            icon={<DismissRegular />}\r\n            aria-label={i18n?.getString(_TL_('Close'))}\r\n            onClick={closePanel}\r\n          />\r\n        )}\r\n      />\r\n      <Fluctuations\r\n        replyToId={replyToId}\r\n        i18n={i18n!}\r\n        TimeZone={TimeZone}\r\n        dateFormat={dateFormat}\r\n        dateRange={dateRange}\r\n        logger={logger}\r\n        onFeedbackButtonClick={onFeedbackButtonClick}\r\n      />\r\n    </Card>\r\n  );\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__143__;","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const usePanelStyles = makeStyles({\r\n  root: {\r\n    maxWidth: '85%',\r\n    maxHeight: '79%',\r\n    ...shorthands.padding(tokens.spacingVerticalXXL, tokens.spacingHorizontalXXL),\r\n  },\r\n  header: {\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n    justifyContent: 'space-between',\r\n  },\r\n  headerText: {\r\n    alignItems: 'center',\r\n  },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\nimport {\r\n  Button,\r\n  makeStyles,\r\n  mergeClasses,\r\n  shorthands,\r\n  tokens,\r\n  Body1Strong,\r\n} from '@fluentui/react-components';\r\nimport { ChevronLeftRegular, ChevronRightRegular } from '@fluentui/react-icons';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { IAIMessage } from '@bingads-webui/ads-copilot-ui';\r\n\r\nimport { Fluctuation } from '../../types';\r\nimport { useFluctuationsMessage } from '../../hooks/use-fluctuations-message';\r\nimport { IDateRange } from './types';\r\nimport { Summary } from './summary';\r\nimport { InsightsChart } from '../insights-chart';\r\n\r\nconst useStyles = makeStyles({\r\n  fluctuationContent: {\r\n    display: 'flex',\r\n    flexWrap: 'wrap',\r\n    ...shorthands.gap(tokens.spacingHorizontalXXL),\r\n    overflowY: 'auto',\r\n    overflowX: 'hidden',\r\n    height: '100vh',\r\n  },\r\n  fluctuationChartContainer: {\r\n    ...shorthands.flex(1, 0, '400px'),\r\n    maxWidth: '100%',\r\n    maxHeight: '100%',\r\n    height: '100%',\r\n    overflowY: 'hidden',\r\n    overflowX: 'hidden',\r\n    paddingRight: tokens.spacingVerticalS,\r\n    display: 'flex',\r\n    flexDirection: 'column',\r\n  },\r\n  fluctuationHeader: {\r\n    display: 'flex',\r\n    flexDirection: 'row',\r\n    alignItems: 'center',\r\n  },\r\n  carouselControl: {\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n    marginLeft: 'auto',\r\n    height: '100%',\r\n  },\r\n  summaryContainer: {\r\n    ...shorthands.flex(1, 0, '400px'),\r\n    maxWidth: '100%',\r\n    display: 'flex',\r\n    overflowY: 'auto',\r\n    height: '100%',\r\n    backgroundColor: tokens.colorNeutralBackground2,\r\n    ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n    '@media only screen and (max-width: 1400px)': {\r\n      height: 'unset',\r\n      overflowY: 'visible',\r\n    },\r\n  },\r\n});\r\n\r\nexport type FluctuationProps = {\r\n  i18n: {\r\n    getString: (key: string) => string,\r\n  },\r\n  replyToId?: string,\r\n  TimeZone: number,\r\n  dateRange: IDateRange,\r\n  dateFormat: string,\r\n  logger?: ILogger,\r\n  onFeedbackButtonClick: IAIMessage['onFeedbackButtonClick'];\r\n};\r\n\r\nconst getTitle = (fluctuation: Fluctuation, i18n: any) => {\r\n  if (!fluctuation) {\r\n    return '';\r\n  }\r\n\r\n  let metric = '';\r\n  switch (fluctuation.metricType) {\r\n    case 'Impression':\r\n      metric = i18n.getString(_TL_('Impressions'));\r\n      break;\r\n    case 'Click':\r\n      metric = i18n.getString(_TL_('Clicks'));\r\n      break;\r\n    case 'Conversion':\r\n    default:\r\n      metric = i18n.getString(_TL_('Conversions'));\r\n      break;\r\n  }\r\n\r\n  let changeDirection = '';\r\n  switch (fluctuation.shiftDirection) {\r\n    case 'Increase':\r\n      changeDirection = i18n.getString(_TL_('increased'));\r\n      break;\r\n    case 'Decrease':\r\n    default:\r\n      changeDirection = i18n.getString(_TL_('decreased'));\r\n      break;\r\n  }\r\n\r\n  const parser = i18n.dateParser({\r\n    raw: 'yyyy-MM-dd',\r\n  });\r\n  const parsedDate = parser(fluctuation.shiftStartDate);\r\n  const date = i18n.formatDate(parsedDate);\r\n\r\n  return curlyTemplate(i18n.getString(_TL_('{{metric}} {{changeDirection}} on {{date}}')))({\r\n    metric,\r\n    changeDirection,\r\n    date,\r\n  });\r\n};\r\n\r\nexport const Fluctuations: React.FC<FluctuationProps> = ({\r\n  replyToId,\r\n  i18n,\r\n  TimeZone,\r\n  dateRange,\r\n  dateFormat,\r\n  logger,\r\n  onFeedbackButtonClick,\r\n}) => {\r\n  const [pageNumber, setPageNumber] = useState(0);\r\n\r\n  const {\r\n    fluctuationResult, fluctuationSummaryMessage, fluctuationsChartData, isCompleted,\r\n  } = useFluctuationsMessage(replyToId);\r\n\r\n  const pageCount = _.isArray(fluctuationResult?.Result) ? fluctuationResult.Result.length : 0;\r\n\r\n  const fluctuations = fluctuationResult?.Result || [];\r\n  const classes = useStyles();\r\n  const title = getTitle(fluctuations[pageNumber], i18n);\r\n\r\n  const isLoading = useMemo(() => !fluctuationsChartData?.length && !isCompleted, [fluctuationsChartData, isCompleted]);\r\n  const shouldRenderNavigation = pageCount > 1;\r\n\r\n  if (!fluctuationSummaryMessage) {\r\n    logger?.trace(`[Insights Fluctuations]: No fluctuationSummaryMessage, Fluctuations not rendered. replyToId: ${replyToId}`);\r\n    return null;\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (isCompleted && shouldRenderNavigation) {\r\n      logger?.trace(`[Insights Fluctuations]: Fluctuation Navigation rendered. fluctuationCount: ${pageCount}, replyToId: ${replyToId}`);\r\n    }\r\n    if (isCompleted && !shouldRenderNavigation) {\r\n      logger?.trace(`[Insights Fluctuations]: Fluctuation Navigation not rendered. fluctuationCount: ${pageCount}, replyToId: ${replyToId}`);\r\n    }\r\n  }, [\r\n    logger,\r\n    replyToId,\r\n    shouldRenderNavigation,\r\n  ]);\r\n\r\n  const handlePageBackward = () => {\r\n    logger?.trace(`[Insights Fluctuations]: User navigates backward in Fluctuation Navigation. replyToId: ${replyToId}`);\r\n    return setPageNumber(pageNumber - 1);\r\n  };\r\n  const handlePageForward = () => {\r\n    logger?.trace(`[Insights Fluctuations]: User navigates forward in Fluctuation Navigation. replyToId: ${replyToId}`);\r\n    return setPageNumber(pageNumber + 1);\r\n  };\r\n\r\n  return (\r\n    <div className={mergeClasses('fluctuation-content', classes.fluctuationContent)}>\r\n      <div className={mergeClasses('chart-container', classes.fluctuationChartContainer)}>\r\n        <div className={mergeClasses('fluctuation-header', classes.fluctuationHeader)}>\r\n          <Body1Strong className=\"fluctuation-title\">{title}</Body1Strong>\r\n          { !isLoading && shouldRenderNavigation && (\r\n            <div className={mergeClasses('fluctuation-carousel-arrows', classes.carouselControl)}>\r\n              <div>\r\n                {curlyTemplate(i18n.getString(_TL_('{{page}} of {{pageCount}}')))({\r\n                  page: pageNumber + 1,\r\n                  pageCount,\r\n                })}\r\n              </div>\r\n              <Button\r\n                className=\"carousel-left\"\r\n                icon={<ChevronLeftRegular />}\r\n                disabled={pageNumber === 0}\r\n                appearance=\"transparent\"\r\n                onClick={handlePageBackward}\r\n                aria-label={i18n.getString(_TL_('previous page'))}\r\n              />\r\n              <Button\r\n                className=\"carousel-right\"\r\n                icon={<ChevronRightRegular />}\r\n                appearance=\"transparent\"\r\n                disabled={pageNumber === pageCount - 1}\r\n                onClick={handlePageForward}\r\n                aria-label={i18n.getString(_TL_('next page'))}\r\n              />\r\n            </div>\r\n          )}\r\n        </div>\r\n        <InsightsChart\r\n          className=\"fluctuation-chart\"\r\n          isLoading={isLoading}\r\n          performanceTimeSeries={fluctuationsChartData?.[pageNumber]}\r\n          TimeZone={TimeZone}\r\n        />\r\n      </div>\r\n      <div className={mergeClasses('summary-container', classes.summaryContainer)}>\r\n        <Summary\r\n          message={fluctuationSummaryMessage}\r\n          fluctuation={fluctuations[pageNumber]}\r\n          dateFormat={dateFormat}\r\n          dateRange={dateRange}\r\n          logger={logger}\r\n          replyToId={replyToId}\r\n          onFeedbackButtonClick={onFeedbackButtonClick}\r\n        />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__146__;","import _ from 'underscore';\r\nimport { useMemo } from 'react';\r\nimport { Message } from 'botframework-directlinejs';\r\nimport { useAdsCopilotContext } from '@bingads-webui/ads-copilot-ui';\r\nimport { v4 as uuidV4 } from 'uuid';\r\n\r\nimport {\r\n  FluctuationResult, IPerformanceTimeSeries, matchingMetricTypes, MetricTypes, PerformanceTimeSeriesResult,\r\n} from '../types';\r\n\r\nexport const getFluctuationsChartData = (performanceTimeSeriesResult: PerformanceTimeSeriesResult, fluctuationResult: FluctuationResult): IPerformanceTimeSeries[] | undefined => {\r\n  const performanceTimeSeriesMap = _.isArray(performanceTimeSeriesResult?.Result) && performanceTimeSeriesResult.Result.reduce((acc: any, item) => {\r\n    acc[item.metricName] = item;\r\n    return acc;\r\n  }, {});\r\n\r\n  function createDataPoint(index: number, performanceTimeSeries: any, fluctuatedDateIndex: number) {\r\n    const { dateTime, value } = performanceTimeSeries.metricValue[index] || {};\r\n    return {\r\n      DateTime: dateTime,\r\n      Value: value,\r\n      Fluctuate: index === fluctuatedDateIndex,\r\n    };\r\n  }\r\n\r\n  const buildDates = (metricType: MetricTypes, startDate: any) => {\r\n    const performanceTimeSeries = performanceTimeSeriesMap?.[(matchingMetricTypes as any)[metricType]];\r\n    if (!performanceTimeSeries || Object.keys(performanceTimeSeries)?.length === 0 || !_.isArray(performanceTimeSeries.metricValue)) {\r\n      return [];\r\n    }\r\n\r\n    const fluctuatedDateIndex = performanceTimeSeries?.metricValue?.findIndex((item: any) => item.dateTime?.substr(0, 10) === startDate) ?? -1;\r\n    // buffer to ensure fluctuation date is the 6th date in the 7 date chart data array, for consistency and to show previous context\r\n    const rangeStartBuffer = 5;\r\n    const indexArrayLength = 7;\r\n\r\n    // start index 5 below fluctuation date, but if below 0 prevent negative indexes\r\n    let minIndex = Math.max(0, fluctuatedDateIndex - rangeStartBuffer);\r\n    // end index at minIndex + 7 to ensure full data array, but prevent going past the available performanceTimeSeries data\r\n    const maxIndex = Math.min(minIndex + indexArrayLength, performanceTimeSeries.metricValue.length);\r\n\r\n    // if minInde to maxIndex isn't 7 items, decrease minIndex to add more items to the beginning of array to fill chart data\r\n    if (maxIndex - minIndex < indexArrayLength) minIndex = Math.max(0, maxIndex - indexArrayLength);\r\n\r\n    return _.range(minIndex, maxIndex).map((index) => createDataPoint(index, performanceTimeSeries, fluctuatedDateIndex));\r\n  };\r\n\r\n  if (_.isArray(fluctuationResult?.Result)) {\r\n    return fluctuationResult.Result.map((item) => ({\r\n      UniqueId: uuidV4(),\r\n      MetricName: matchingMetricTypes[item.metricType] as MetricTypes,\r\n      DataPoints: buildDates(item.metricType as MetricTypes, item.shiftStartDate),\r\n    }));\r\n  }\r\n  return undefined;\r\n};\r\n\r\nexport function useFluctuationsMessage(replyToId?: string) {\r\n  const { activities } = useAdsCopilotContext() || {};\r\n\r\n  const ret = useMemo(() => {\r\n    let performanceTimeSeriesResult: PerformanceTimeSeriesResult | undefined;\r\n    let fluctuationResult: FluctuationResult | undefined;\r\n    let fluctuationSummaryMessage: Message | undefined;\r\n    let isCompleted = false;\r\n\r\n    if (activities && replyToId) {\r\n      let i = activities.length - 1;\r\n\r\n      // find all the fluctuations messages that where a reply to the given replyToId\r\n      while (i >= 0 && (!performanceTimeSeriesResult || !fluctuationResult || !fluctuationSummaryMessage)) {\r\n        const activity = activities[i];\r\n        if ((activity as any).replyToId === replyToId) {\r\n          if (activity.type === 'message' && (activity.value as any)?.PluginContext) {\r\n            // found the natural language summary\r\n            fluctuationSummaryMessage = activity;\r\n          } else if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n            // find the fluctuations data\r\n            fluctuationResult = _.find(activity.value, (pluginResult) => pluginResult.Name === 'AccountFluctuation' || pluginResult.Name === 'CampaignFluctuation');\r\n\r\n            // find the chart data\r\n            performanceTimeSeriesResult = _.find(activity.value, (pluginResult) => pluginResult.Name === 'PerformanceTimeSeries');\r\n          }\r\n        }\r\n\r\n        i -= 1;\r\n      }\r\n    }\r\n\r\n    let fluctuationsChartData: IPerformanceTimeSeries[] | undefined;\r\n    if (performanceTimeSeriesResult && fluctuationResult) {\r\n      fluctuationsChartData = getFluctuationsChartData(performanceTimeSeriesResult, fluctuationResult);\r\n    }\r\n\r\n    // performance time series and fluctuation data are expected to arrive at the same time\r\n    if (performanceTimeSeriesResult || fluctuationResult) {\r\n      // check if natural language summary has completed streaming\r\n      isCompleted = (fluctuationSummaryMessage?.value as any)?.StreamingStatus === 'Completed';\r\n    }\r\n\r\n    return {\r\n      isCompleted,\r\n      fluctuationResult,\r\n      fluctuationSummaryMessage,\r\n      fluctuationsChartData,\r\n      performanceTimeSeriesResult,\r\n    };\r\n  }, [activities, replyToId]);\r\n\r\n  return ret;\r\n}\r\n","type PerfMetricWithComparison = {\r\n  currentValue: number,\r\n  percentShift?: number,\r\n  impact?: string,\r\n};\r\n\r\n// https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCommon%2FShared.Plugin%2FShared.Plugin%2FModels%2FSummarizeCampaignResponse.cs\r\nexport type SummarizeCampaignResponse = {\r\n  accountCurrency?: string;\r\n\r\n  impressionCount?: number;\r\n  clickCount?: number;\r\n  ctr?: number;\r\n  spend?: number;\r\n  conversionCount?: number;\r\n  cpa?: number;\r\n  roas?: number;\r\n  averageCPC?: number;\r\n  averageCPM?: number;\r\n  impressionShare?: number;\r\n  uniqueReach?: number;\r\n  // Missing: Audience Campaign - Average Impression frequency per user\r\n  averageCPV?: number;\r\n  videoViews?: number;\r\n  videoCompletionRate?: number;\r\n  videoViewsAt25Percent?: number;\r\n  videoViewsAt50Percent?: number;\r\n  videoViewsAt75Percent?: number;\r\n  installs?: number;\r\n  downloads?: number;\r\n  averageCPI?: number;\r\n\r\n  perfMetricsWithComparisonData?: {\r\n    conversions?: PerfMetricWithComparison;\r\n    clicks?: PerfMetricWithComparison;\r\n    impressions?: PerfMetricWithComparison;\r\n    spend?: PerfMetricWithComparison;\r\n    ctr?: PerfMetricWithComparison;\r\n    averageCPC?: PerfMetricWithComparison;\r\n    cpa?: PerfMetricWithComparison;\r\n    roas?: PerfMetricWithComparison;\r\n    averageCPM?: PerfMetricWithComparison;\r\n    impressionShare?: PerfMetricWithComparison;\r\n    uniqueReach?: PerfMetricWithComparison;\r\n    averageCPV?: PerfMetricWithComparison;\r\n    videoViews?: PerfMetricWithComparison;\r\n    videoCompletionRate?: PerfMetricWithComparison;\r\n    videoViewsAt25Percent?: PerfMetricWithComparison;\r\n    videoViewsAt50Percent?: PerfMetricWithComparison;\r\n    videoViewsAt75Percent?: PerfMetricWithComparison;\r\n    installs?: PerfMetricWithComparison;\r\n    downloads?: PerfMetricWithComparison;\r\n    averageCPI?: PerfMetricWithComparison;\r\n  }\r\n\r\n  comparisonStartDate?:string,\r\n  comparisonEndDate?:string,\r\n  startDate?:string,\r\n  endDate?:string,\r\n};\r\n\r\nexport type SummarizePluginResult = {\r\n  Result?: SummarizeCampaignResponse;\r\n  Parameters?: {\r\n    CampaignName?: string;\r\n    StartDate?: string;\r\n    EndDate?: string;\r\n  };\r\n};\r\n\r\nexport const matchingMetricTypes = {\r\n  Impression: 'Impressions',\r\n  Click: 'Clicks',\r\n  Conversion: 'Conversions',\r\n};\r\n\r\nexport type MetricTypes = 'Conversions' | 'Impressions' | 'Clicks';\r\nexport type MetricTypesSingular = 'Conversion' | 'Impression' | 'Click';\r\nexport type ShiftDirectionTypes = 'Increase' | 'Decrease';\r\n\r\nexport type Fluctuation = {\r\n  accountId: number;\r\n  campaignId?: number;\r\n  metricType: MetricTypesSingular;\r\n  shiftStartDate: string;\r\n  shiftEndDate: string;\r\n  shiftSummary: string;\r\n  shiftDirection: ShiftDirectionTypes;\r\n};\r\n\r\nexport type Parameters = {\r\n  CampaignName?: string,\r\n  Granularity?: string,\r\n  StartDate?: string,\r\n  EndDate?: string,\r\n};\r\n\r\nexport type PluginResult = {\r\n  Name: string;\r\n  Status: string;\r\n  Parameters?: Parameters;\r\n};\r\n\r\nexport type FluctuationResult = PluginResult & {\r\n  Result?: Fluctuation[] | { Type: string, Title: string, Status: number };\r\n};\r\n\r\nexport interface IDataPoint {\r\n  DateTime: string;\r\n  Value: number;\r\n  Fluctuate?: boolean;\r\n}\r\n\r\nexport type IPerformanceTimeSeries = {\r\n  UniqueId: string;\r\n  MetricName: MetricTypes;\r\n  DataPoints: IDataPoint[];\r\n};\r\n\r\nexport type PerformanceTimeSeriesResult = PluginResult & {\r\n  Result?: {\r\n    metricName: string;\r\n    metricValue: {\r\n      dateTime: string;\r\n      value: number;\r\n    }[];\r\n  }[];\r\n};\r\n","import React, { useCallback, useContext } from 'react';\r\nimport Markdown from 'markdown-to-jsx';\r\nimport {\r\n  makeStyles,\r\n  Divider,\r\n  shorthands,\r\n  tokens,\r\n  mergeClasses,\r\n  Button,\r\n  Body1Strong,\r\n  Body1,\r\n} from '@fluentui/react-components';\r\nimport {\r\n  Open20Regular,\r\n  Link20Regular,\r\n} from '@fluentui/react-icons';\r\nimport {\r\n  FeedbackButtons,\r\n  CopyButton,\r\n  IFeedbackData,\r\n  IAIMessage,\r\n} from '@bingads-webui/ads-copilot-ui';\r\nimport { Message } from 'botframework-directlinejs';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\n\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { generateDateData, getDaysOfARange, parseCivilDate } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { IDateRange } from './types';\r\nimport { Fluctuation } from '../../types';\r\n\r\nconst useStyles = makeStyles({\r\n  root: {\r\n    ...shorthands.padding(tokens.spacingVerticalL, tokens.spacingHorizontalL),\r\n  },\r\n  block: {\r\n    display: 'block',\r\n  },\r\n  divider: {\r\n    ...shorthands.margin(tokens.spacingVerticalMNudge, 0),\r\n  },\r\n  button: {\r\n    marginTop: tokens.spacingVerticalS,\r\n  },\r\n  link: {\r\n    width: '100%',\r\n  },\r\n  linkIcon: {\r\n    marginLeft: 'auto',\r\n    flexShrink: 0,\r\n  },\r\n  footer: {\r\n    display: 'flex',\r\n    marginTop: tokens.spacingVerticalL,\r\n  },\r\n  blocker: {\r\n    minHeight: 'initial!important',\r\n\r\n    '& .blocker-image': {\r\n      width: '28px',\r\n      height: '28px',\r\n      ...shorthands.borderRadius(tokens.borderRadiusCircular),\r\n      ...shorthands.border('2px', 'solid'),\r\n      borderLeftColor: tokens.colorBrandForeground1,\r\n      borderRightColor: tokens.colorBrandBackgroundInvertedHover,\r\n      borderTopColor: tokens.colorBrandBackgroundInvertedHover,\r\n      borderBottomColor: tokens.colorBrandBackgroundInvertedHover,\r\n      marginRight: tokens.spacingHorizontalS,\r\n      animationIterationCount: 'infinite',\r\n      animationDuration: '1s',\r\n      animationName: {\r\n        to: { transform: 'rotate(360deg)' },\r\n      },\r\n    },\r\n  },\r\n});\r\n\r\ntype SummaryProps = {\r\n  message: Message;\r\n  fluctuation: Fluctuation,\r\n  dateRange: IDateRange,\r\n  dateFormat: string,\r\n  logger: ILogger,\r\n  replyToId: string,\r\n  onFeedbackButtonClick: IAIMessage['onFeedbackButtonClick'];\r\n};\r\n\r\nconst campaignTypeFilter = {\r\n  Name: 'WebApp.CampaignUI.New.CampaignType',\r\n  Data: {\r\n    key: 0,\r\n    value: {\r\n      query: null,\r\n    },\r\n  },\r\n};\r\n\r\nconst campaignStatusFilter = {\r\n  Name: 'WebApp.CampaignUI.New.CampaignStatus',\r\n  Data: {\r\n    key: 1,\r\n    value: {\r\n      query: null,\r\n    },\r\n  },\r\n};\r\n\r\nexport const Summary: React.FC<SummaryProps> = ({\r\n  message,\r\n  fluctuation,\r\n  dateFormat,\r\n  dateRange,\r\n  logger,\r\n  replyToId,\r\n  onFeedbackButtonClick,\r\n}) => {\r\n  const styles = useStyles();\r\n  const preferenceService = useContext(PreferenceContext) as any;\r\n  const [savingPreference, setSavingPreference] = React.useState(false);\r\n  const i18n = useI18nContext();\r\n\r\n  const handleLogButtonClickChanges = () => logger?.trace(`[Insights Fluctuations Summary]: Button pressed: \"View all changes\". replyToId: ${replyToId}`);\r\n  const handleLogButtonClickPerformance = () => logger?.trace(`[Insights Fluctuations Summary]: Button pressed: \"Improve your ad campaign performance\". replyToId: ${replyToId}`);\r\n  const handleLogButtonClickOptimize = () => logger?.trace(`[Insights Fluctuations Summary]: Button pressed: \"Optimize your ad campaigns with the help of Microsoft Advertising suggestions\". replyToId: ${replyToId}`);\r\n  const handleLogButtonClickROI = () => logger?.trace(`[Insights Fluctuations Summary]: Button pressed: \"Increase your ROI with quality score and quality impact in depth\". replyToId: ${replyToId}`);\r\n  const handleLogButtonClickFeedback = (data) => logger?.trace(`[Insights Fluctuations Summary]: Button pressed: User pressed feedback on Fluctuation Summary. prevFeedback: ${data?.prevFeedback}, currentFeedback: ${data?.currentFeedback}. replyToId: ${replyToId}`);\r\n\r\n  const onFeedbackButtonClickCb = useCallback((data: IFeedbackData) => {\r\n    if (onFeedbackButtonClick) {\r\n      handleLogButtonClickFeedback(data);\r\n      onFeedbackButtonClick(data, message);\r\n    }\r\n  }, [message, onFeedbackButtonClick]);\r\n\r\n  const { scope } = useContext(ScopeContext);\r\n  const getChangeHistoryUrl = useCallback(() => {\r\n    const { cid } = scope.values;\r\n\r\n    const params = new URLSearchParams();\r\n    params.append('cid', cid);\r\n    params.append('aid', `${fluctuation.accountId}`);\r\n\r\n    if (fluctuation.campaignId) {\r\n      params.append('campaignId', `${fluctuation.campaignId}`);\r\n    }\r\n\r\n    return `${window.location.origin}/campaign/vnext/changehistory?${params.toString()}`;\r\n  }, [fluctuation, scope]);\r\n\r\n  const viewAllChanges = () => {\r\n    setSavingPreference(true);\r\n    const saveCampaignType = new Promise((resolve) => {\r\n      preferenceService.setAtUserLevel(campaignTypeFilter).then(({ Id }: any) => {\r\n        preferenceService.onRemoteSyncDone(Id).then(() => {\r\n          resolve(Id);\r\n        });\r\n      });\r\n    });\r\n\r\n    const saveCampaignStatus = new Promise((resolve) => {\r\n      preferenceService.setAtUserLevel(campaignStatusFilter).then(({ Id }: any) => {\r\n        preferenceService.onRemoteSyncDone(Id).then(() => {\r\n          resolve(Id);\r\n        });\r\n      });\r\n    });\r\n\r\n    let saveDateRange: Promise<any>;\r\n    try {\r\n      // parse the start/end dates from the fluctuation\r\n      const selectedRange = {\r\n        start: parseCivilDate({ i18n, dateString: fluctuation.shiftStartDate, dateFormat: 'yyyy-MM-dd' }),\r\n        end: parseCivilDate({ i18n, dateString: fluctuation.shiftEndDate, dateFormat: 'yyyy-MM-dd' }),\r\n      };\r\n\r\n      // generate the new date filter preference value\r\n      const dateRangePreferenceData = generateDateData(\r\n        i18n,\r\n        {\r\n          selectedRange,\r\n          rangeType: { rangeId: 4 },\r\n          rangeIndex: 0,\r\n          rangeDays: getDaysOfARange(selectedRange),\r\n        },\r\n        dateFormat,\r\n        dateRange.Rangelcid,\r\n      );\r\n\r\n      // write the new date filter preference value\r\n      saveDateRange = new Promise((resolve) => {\r\n        preferenceService.setAtUserLevel({\r\n          Data: dateRangePreferenceData,\r\n          Name: 'WebApp.CampaignUI.dateFilter',\r\n        })\r\n          .then(({ Id }: any) => {\r\n            preferenceService.onRemoteSyncDone(Id).then(() => {\r\n              resolve(Id);\r\n            });\r\n          });\r\n      });\r\n    } catch (e) {\r\n      logger?.trace(`[Insights Fluctuations Summary]: Failed to parse fluctuation dates: replyToId: ${replyToId}, shiftStartDate=${fluctuation.shiftStartDate}, shiftEndDate=${fluctuation.shiftEndDate}`);\r\n      saveDateRange = Promise.resolve(true);\r\n    }\r\n\r\n    handleLogButtonClickChanges();\r\n\r\n    Promise.all([saveCampaignType, saveCampaignStatus, saveDateRange]).finally(() => {\r\n      setSavingPreference(false);\r\n      window.open(getChangeHistoryUrl(), '_blank');\r\n    });\r\n  };\r\n\r\n  return (\r\n    <div className={styles.root}>\r\n      <Body1Strong className={styles.block}>{i18n.getString(_TL_('Analysis'))}</Body1Strong>\r\n      <Markdown\r\n        className=\"content\"\r\n      >\r\n        {message.text || ''}\r\n      </Markdown>\r\n      <Divider className={styles.divider} />\r\n      <UiBlocker\r\n        blocking={savingPreference}\r\n        loadingText={i18n.getString(_TL_('Loading change history report'))}\r\n        classes={{\r\n          blockerIndicator: styles.blocker,\r\n        }}\r\n      >\r\n        <Body1Strong className={styles.block}>{i18n.getString(_TL_('Change history'))}</Body1Strong>\r\n        <Body1 className={styles.block}>{i18n.getString(_TL_('In addition to using our fluctuation analysis, reviewing your change history during this period can help you pinpoint the exact causes.'))}</Body1>\r\n        <Button\r\n          onClick={viewAllChanges}\r\n          appearance=\"secondary\"\r\n          className={mergeClasses(styles.button, 'view-all-changes')}\r\n          icon={<Open20Regular />}\r\n          role=\"link\"\r\n        >\r\n          {i18n.getString(_TL_('View all changes'))}\r\n        </Button>\r\n      </UiBlocker>\r\n      <Divider className={styles.divider} />\r\n      <Body1Strong className={styles.block}>{i18n.getString(_TL_('More ways to improve:'))}</Body1Strong>\r\n      <Button\r\n        as=\"a\"\r\n        appearance=\"secondary\"\r\n        className={mergeClasses('help-link', styles.link, styles.button)}\r\n        icon={<Link20Regular />}\r\n        role=\"link\"\r\n        target=\"_blank\"\r\n        href=\"https://go.microsoft.com/fwlink/?linkid=2283830\"\r\n        onClick={handleLogButtonClickPerformance}\r\n      >\r\n        {i18n.getString(_TL_('Improve your ad campaign performance.'))}\r\n        <Open20Regular className={styles.linkIcon} />\r\n      </Button>\r\n      <Button\r\n        as=\"a\"\r\n        appearance=\"secondary\"\r\n        className={mergeClasses('help-link', styles.link, styles.button)}\r\n        icon={<Link20Regular />}\r\n        role=\"link\"\r\n        target=\"_blank\"\r\n        href=\"https://go.microsoft.com/fwlink/?linkid=2283833\"\r\n        onClick={handleLogButtonClickOptimize}\r\n      >\r\n        {i18n.getString(_TL_('Optimize your ad campaigns with the help of Microsoft Advertising suggestions.'))}\r\n        <Open20Regular className={styles.linkIcon} />\r\n      </Button>\r\n      <Button\r\n        as=\"a\"\r\n        appearance=\"secondary\"\r\n        className={mergeClasses('help-link', styles.link, styles.button)}\r\n        icon={<Link20Regular />}\r\n        role=\"link\"\r\n        target=\"_blank\"\r\n        href=\"https://go.microsoft.com/fwlink/?linkid=2283834\"\r\n        onClick={handleLogButtonClickROI}\r\n      >\r\n        {i18n.getString(_TL_('Increase your ROI with quality score and quality impact in depth.'))}\r\n        <Open20Regular className={styles.linkIcon} />\r\n      </Button>\r\n      <div className={styles.footer}>\r\n        <FeedbackButtons onFeedbackChange={onFeedbackButtonClickCb} ariaHiddenWhileLoading={false} />\r\n        <CopyButton messageText={message.text || ''} ariaHiddenWhileLoading={false} />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__150__;","module.exports = __WEBPACK_EXTERNAL_MODULE__151__;","module.exports = __WEBPACK_EXTERNAL_MODULE__152__;","module.exports = __WEBPACK_EXTERNAL_MODULE__153__;","export * from './insights-chart';\r\n","import React, { useContext } from 'react';\r\nimport { makeStyles, mergeClasses, tokens } from '@fluentui/react-components';\r\nimport { FluctuationsChart } from '@bingads-webui-react/fluctuations-chart';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\n\r\nimport { IPerformanceTimeSeries } from '../../types';\r\n\r\nconst useStyles = makeStyles({\r\n  root: {\r\n    paddingLeft: tokens.spacingHorizontalS,\r\n    paddingRight: tokens.spacingHorizontalS,\r\n    overflowY: 'hidden',\r\n    height: '100%',\r\n  },\r\n  preview: {\r\n    height: `calc(${tokens.lineHeightBase200} * 10)`,\r\n  },\r\n});\r\n\r\nexport type InsightsChartProps = {\r\n  className?: string;\r\n  performanceTimeSeries: IPerformanceTimeSeries;\r\n  isLoading?: boolean;\r\n  isPreview?: boolean;\r\n  TimeZone: number;\r\n};\r\n\r\nexport const InsightsChart: React.FC<InsightsChartProps> = React.memo((props) => {\r\n  const {\r\n    className,\r\n    performanceTimeSeries,\r\n    isLoading,\r\n    isPreview,\r\n    TimeZone,\r\n  } = props;\r\n\r\n  const classes = useStyles();\r\n  const i18n = useContext(I18nContext);\r\n\r\n  return (\r\n    <div className={mergeClasses('insights-chart', classes.root, isPreview && classes.preview, className)}>\r\n      <FluctuationsChart\r\n        TimeZone={TimeZone}\r\n        performanceTimeSeries={performanceTimeSeries}\r\n        isLoading={isLoading}\r\n        size={isPreview ? 'small' : 'large'}\r\n        i18n={i18n}\r\n      />\r\n    </div>\r\n  );\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__156__;","import React from 'react';\r\nimport { I18nProvider, I18nProviderProps } from '@bingads-webui/copilot-i18n';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsPanel, InsightPanelProps } from './insights-panel';\r\n\r\ntype InsightsPanelLoaderProps = InsightPanelProps & {\r\n  i18nProviderProps: Omit<I18nProviderProps, 'bingAdsI18n'>;\r\n  i18n: any;\r\n  logger?: ILogger;\r\n};\r\n\r\n/**\r\n * InsightsPanel will be rendered outside of the <MSAdsCopilot> DOM tree so it won't have automatically get all of the expected context providers.\r\n * This Loader component will set up any necessary context providers so that InsightsPanel and all its descendants can function correctly.\r\n *\r\n * NOTE: Any useContext calls here need to be available in both CMUI and CCUI.\r\n */\r\nconst InsightsPanelLoaderInternal: React.FC<InsightsPanelLoaderProps> = React.memo((props) => {\r\n  const {\r\n    dateFormat,\r\n    dateRange,\r\n    i18nProviderProps,\r\n    onFeedbackButtonClick,\r\n    replyToId,\r\n    TimeZone,\r\n    logger,\r\n    i18n: bingAdsI18n,\r\n  } = props;\r\n\r\n  return (\r\n    <I18nProvider bingAdsI18n={bingAdsI18n} {...i18nProviderProps}>\r\n      <InsightsPanel\r\n        dateFormat={dateFormat}\r\n        dateRange={dateRange}\r\n        onFeedbackButtonClick={onFeedbackButtonClick}\r\n        replyToId={replyToId}\r\n        logger={logger}\r\n        TimeZone={TimeZone}\r\n      />\r\n    </I18nProvider>\r\n  );\r\n});\r\n\r\nexport const InsightsPanelLoader = withI18nConsumer(InsightsPanelLoaderInternal);\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__158__;","export * from './insights-button';\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n  Button,\r\n  mergeClasses,\r\n  makeStyles,\r\n  tokens,\r\n  shorthands,\r\n} from '@fluentui/react-components';\r\nimport { CopilotIcon } from '@bingads-webui-react/copilot-ui-base';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\ntype InsightsButtonProps = {\r\n  label: string;\r\n  onClick: (event: any) => void;\r\n  className?: string;\r\n};\r\n\r\nexport const useInsightsButtonStyles = makeStyles({\r\n  button: {\r\n    height: '26px',\r\n    paddingTop: tokens.spacingVerticalXXS,\r\n    paddingBottom: tokens.spacingVerticalXXS,\r\n    paddingLeft: tokens.spacingHorizontalXS,\r\n    paddingRight: tokens.spacingHorizontalXS,\r\n    fontWeight: tokens.fontWeightRegular,\r\n    fontSize: tokens.fontSizeBase200,\r\n    textAlign: 'center',\r\n    ...shorthands.borderWidth('1.5px !important'),\r\n  },\r\n  copilotIcon: {\r\n    paddingLeft: '0 !important',\r\n  },\r\n});\r\n\r\nexport const InsightsButton: React.FC<InsightsButtonProps> = ({ label, onClick, className }) => {\r\n  const styles = useInsightsButtonStyles();\r\n  const permissions = useContext(PermissionsContext);\r\n\r\n  return (\r\n    <Button\r\n      onClick={onClick}\r\n      className={mergeClasses('insights-button', styles.button, className)}\r\n    >\r\n      <CopilotIcon\r\n        size=\"small\"\r\n        color={_.get(permissions, ['dynamic', 'AdsCopilotUxImprovements']) ? 'multicolor' : 'blue'}\r\n        iconStyles={styles.copilotIcon}\r\n      />\r\n      {label}\r\n    </Button>\r\n  );\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","export * from './summarize-plugin-renderer';\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport { AIMessage, PluginFunctions, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { type ActivityRenderer } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsSummarizeMessage } from '../insights-summarize-message';\r\nimport { InsightsMissingParams } from '../insights-missing-params';\r\n\r\nexport const SummarizePluginRenderer: ActivityRenderer = (props) => {\r\n  const {\r\n    activity,\r\n    getCampaigns,\r\n    logger,\r\n    onFeedbackButtonClick,\r\n    onMissingParamsSubmit,\r\n    isCustomizedEventBusy,\r\n    isReportingInsights15Enabled,\r\n  } = props;\r\n\r\n  if (activity.type === 'event') {\r\n    if (_.any(activity.value, (pluginResult) => pluginResult.Status === 'MissingParameters')) {\r\n      return (\r\n        <InsightsMissingParams\r\n          getCampaigns={getCampaigns}\r\n          logger={logger}\r\n          replyToId={(activity as any).replyToId}\r\n          onMissingParamsSubmit={onMissingParamsSubmit}\r\n          pluginName={PluginScenarios.Summarize}\r\n        />\r\n      );\r\n    }\r\n    // don't render the plugin results as a separate card\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <AIMessage\r\n      className=\"summarize-plugin-renderer\"\r\n      message={activity as Message}\r\n      onFeedbackButtonClick={onFeedbackButtonClick}\r\n      showDataDisclaimer\r\n    >\r\n      <InsightsSummarizeMessage\r\n        logger={logger}\r\n        replyToId={(activity as any).replyToId}\r\n        isCustomizedEventBusy={isCustomizedEventBusy}\r\n        isReportingInsights15Enabled={isReportingInsights15Enabled}\r\n      />\r\n    </AIMessage>\r\n  );\r\n};\r\n\r\nSummarizePluginRenderer.canRender = (activity: Activity) => {\r\n  if (activity.type === 'message') {\r\n    // only render message if the summarize plugin was successfully invoked by the AI\r\n    return _.any((activity.value as any)?.Features, (feature) => feature === PluginFunctions.SummarizeCampaignPerformance);\r\n  }\r\n\r\n  if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n    return _.any(activity.value, (pluginResult) => pluginResult.Name === PluginScenarios.Summarize);\r\n  }\r\n\r\n  return false;\r\n};\r\n","export * from './insights-summarize-message';\r\n","import React, {\r\n  useCallback,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from 'react';\r\nimport Markdown from 'markdown-to-jsx';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { CopilotToggleCustomEvent, type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { useSummarizeMessage } from '../../hooks/use-summarize-message';\r\nimport { InsightsSummarizePluginResult } from './insights-summarize-plugin-result';\r\nimport { useInsightsSummarizeMessageStyles } from './use-insights-summarize-message-styles';\r\nimport { sanitizeDateFromSummarizePlugin } from './sanitize-date-from-summarize-plugin';\r\n\r\nexport type InsightsSummarizeMessageProps = {\r\n  logger?: ILogger;\r\n  replyToId: string;\r\n  isCustomizedEventBusy?: boolean;\r\n  isReportingInsights15Enabled?: boolean;\r\n};\r\n\r\nconst allCampaignsFluctuationTriggerMessage = _TL_('Analyze the trends and fluctuations in my account from {{startDate}} to {{endDate}}');\r\nconst singleCampaignFluctuationTriggerMessage = _TL_('Analyze the trends and fluctuations in \"{{campaignName}}\" campaign from {{startDate}} to {{endDate}}');\r\n\r\nconst MAX_START_DATE_OFFSET = 90 * 24 * 60 * 60 * 1000; // 90 days in milliseconds\r\n\r\nexport const InsightsSummarizeMessage: React.FC<InsightsSummarizeMessageProps> = React.memo((props) => {\r\n  const {\r\n    logger,\r\n    replyToId,\r\n    isCustomizedEventBusy = false,\r\n    isReportingInsights15Enabled,\r\n  } = props;\r\n\r\n  const [isFluctuationsMessageSent, setIsFluctuationsMessageSent] = useState(false);\r\n  const i18n = useI18nContext();\r\n  const classes = useInsightsSummarizeMessageStyles();\r\n\r\n  const {\r\n    hasNoData,\r\n    shouldSendFluctuationsTriggerMessage,\r\n    summarizeMessage,\r\n    summarizePluginResult,\r\n  } = useSummarizeMessage(replyToId);\r\n\r\n  useEffect(() => {\r\n    if (logger && summarizePluginResult) {\r\n      // log only after plugin result has been received\r\n      logger?.trace(`InsightsSummarizeMessage: replyToId: ${replyToId}, hasNoData: ${hasNoData}, shouldSendFluctuationsTriggerMessage: ${shouldSendFluctuationsTriggerMessage}`);\r\n    }\r\n  }, [\r\n    hasNoData,\r\n    logger,\r\n    replyToId,\r\n    shouldSendFluctuationsTriggerMessage,\r\n    summarizePluginResult,\r\n  ]);\r\n\r\n  const parseDate = useCallback<(dateString: string) => Date>((dateString) => {\r\n    const convertISOToDate = i18n.dateParser({ raw: 'yyyy-MM-dd' });\r\n    const sanitizedDateString = sanitizeDateFromSummarizePlugin(dateString);\r\n    return convertISOToDate(sanitizedDateString);\r\n  }, [i18n]);\r\n\r\n  useEffect(() => {\r\n    if (!isCustomizedEventBusy && !isFluctuationsMessageSent && shouldSendFluctuationsTriggerMessage) {\r\n      const startDateString = summarizePluginResult?.Parameters?.StartDate;\r\n      const endDateString = summarizePluginResult?.Parameters?.EndDate;\r\n\r\n      try {\r\n        // parse the startDate and endDate from summarizePluginResult, startDate should not be more than 90 days in the past\r\n        const minStartDate = new Date(Date.now() - MAX_START_DATE_OFFSET);\r\n        const startDateFromParameters = parseDate(startDateString);\r\n\r\n        const startDate = startDateFromParameters > minStartDate ? startDateFromParameters : minStartDate;\r\n        const endDate = parseDate(endDateString);\r\n\r\n        // create the message to trigger the fluctuations plugin\r\n        const campaignName = summarizePluginResult?.Parameters?.CampaignName || '';\r\n        const message = i18n?.getString(\r\n          campaignName ? singleCampaignFluctuationTriggerMessage : allCampaignsFluctuationTriggerMessage,\r\n          {\r\n            campaignName,\r\n            startDate: i18n.formatDate(startDate),\r\n            endDate: i18n.formatDate(endDate),\r\n          },\r\n        );\r\n\r\n        if (endDate >= startDate) {\r\n          // send a user message to trigger fluctuations plugin\r\n          const customEvent = new CopilotToggleCustomEvent({\r\n            detail: {\r\n              eventType: 'message',\r\n              eventSource: 'insightsSummarizeMessage',\r\n              eventData: {\r\n                isHidden: true,\r\n                message,\r\n                pluginName: campaignName ? 'CampaignFluctuation' : 'AccountFluctuation',\r\n                startDate: i18n.formatDate(startDate, { raw: 'yyyy-MM-dd' }),\r\n                endDate: i18n.formatDate(endDate, { raw: 'yyyy-MM-dd' }),\r\n              },\r\n            },\r\n          });\r\n\r\n          logger?.trace(`InsightsSummarizeMessage: Sending fluctuations trigger message for ${replyToId}: ${message}`);\r\n          document.dispatchEvent(customEvent);\r\n          setIsFluctuationsMessageSent(true);\r\n        } else {\r\n          logger?.trace(`InsightsSummarizeMessage: endDate (${endDate}) is before startDate (${startDate}). No fluctuation message sent.`);\r\n        }\r\n      } catch (e) {\r\n        logger?.trace(`InsightsSummarizeMessage: Error parsing dates, startDateString=${startDateString}, endDateString=${endDateString}, error=${e}`);\r\n      }\r\n    }\r\n  }, [\r\n    i18n,\r\n    logger,\r\n    parseDate,\r\n    replyToId,\r\n    shouldSendFluctuationsTriggerMessage,\r\n    summarizePluginResult,\r\n    isCustomizedEventBusy,\r\n  ]);\r\n\r\n  const summarizeText = useMemo<string | undefined>(() => {\r\n    if (!summarizeMessage) {\r\n      return undefined;\r\n    }\r\n    if (hasNoData === false) {\r\n      return `**${i18n?.getString(_TL_('Analysis'))}**\\n\\n${summarizeMessage.text}`;\r\n    }\r\n    return summarizeMessage.text;\r\n  }, [hasNoData, i18n, summarizeMessage?.text]);\r\n\r\n  if (!summarizeMessage) {\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <>\r\n      {!hasNoData && (\r\n        <InsightsSummarizePluginResult\r\n          className={classes.pluginResult}\r\n          summarizePluginResult={summarizePluginResult}\r\n          isReportingInsights15Enabled={isReportingInsights15Enabled}\r\n        />\r\n      )}\r\n      <Markdown className=\"content\">\r\n        {summarizeText}\r\n      </Markdown>\r\n    </>\r\n  );\r\n});\r\n","import _ from 'underscore';\r\nimport { useMemo } from 'react';\r\nimport { EventActivity, Message } from 'botframework-directlinejs';\r\nimport { useAdsCopilotContext } from '@bingads-webui/ads-copilot-ui';\r\n\r\nimport { SummarizePluginResult } from '../types';\r\n\r\nconst MAX_AGE_FOR_TRIGGER_IN_MS = 5 * 1000;\r\nconst NO_DATA_STATUS = 'NoDataAvailable';\r\n\r\nexport type SummarizeMessageResult = {\r\n  hasNoData: boolean | undefined;\r\n  shouldSendFluctuationsTriggerMessage: boolean;\r\n  summarizeMessage?: Message;\r\n  summarizePluginResult: SummarizePluginResult;\r\n};\r\n\r\nexport function useSummarizeMessage(replyToId: string): SummarizeMessageResult {\r\n  const { activities } = useAdsCopilotContext() || {};\r\n\r\n  const { summarizeMessage, summarizeEvent } = useMemo(() => {\r\n    let newSummarizeMessage: Message | undefined;\r\n    let newSummarizeEvent: EventActivity | undefined;\r\n\r\n    if (activities) {\r\n      let i = activities.length - 1;\r\n\r\n      // find all the summarize messages with given replyToId\r\n      while (i >= 0 && (!newSummarizeMessage || !newSummarizeEvent)) {\r\n        const activity = activities[i];\r\n        if ((activity as any).replyToId === replyToId) {\r\n          if (activity.type === 'message') {\r\n            if (_.any((activity.value as any)?.Features, (feature) => feature === 'SummarizeCampaignPerformance')) {\r\n              // found the natural language summary\r\n              newSummarizeMessage = activity;\r\n            }\r\n          } else if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n            // found the summarize plugin result\r\n            if (_.any(activity.value, (pluginResult) => pluginResult?.Name === 'Summarize')) {\r\n              newSummarizeEvent = activity;\r\n            }\r\n          }\r\n        }\r\n\r\n        i -= 1;\r\n      }\r\n    }\r\n\r\n    return {\r\n      summarizeMessage: newSummarizeMessage,\r\n      summarizeEvent: newSummarizeEvent,\r\n    };\r\n  }, [activities, replyToId]);\r\n\r\n  const isSummarizeMessageFromButtonClick = useMemo(() => {\r\n    if (summarizeMessage) {\r\n      // if user clicked on Summarize button or the Summarize starter prompt, we should have PluginContext in the response\r\n      return (summarizeMessage.value as any)?.PluginContext?.Name === 'Summarize';\r\n    }\r\n    return false;\r\n  }, [summarizeMessage]);\r\n\r\n  const summarizePluginResult = _.find(summarizeEvent?.value, (pluginResult) => pluginResult.Name === 'Summarize');\r\n  const hasNoData = useMemo(() => {\r\n    if (summarizePluginResult) {\r\n      return summarizePluginResult.Status === NO_DATA_STATUS || summarizePluginResult.Status === 'InternalError' || summarizePluginResult.Result?.title === NO_DATA_STATUS;\r\n    }\r\n    return undefined;\r\n  }, [summarizePluginResult]);\r\n\r\n  const shouldSendFluctuationsTriggerMessage = useMemo(() => {\r\n    // only send trigger message if we have data and summarizeMessage is from button click\r\n    if (summarizeEvent && !hasNoData && isSummarizeMessageFromButtonClick) {\r\n      let activityTimestampMs: number = new Date(summarizeEvent.timestamp).getTime();\r\n      if (Number.isNaN(activityTimestampMs)) {\r\n        // TODO: Fix bug in ConversationThread where timestamp is modified\r\n        activityTimestampMs = parseInt(summarizeEvent.timestamp, 10);\r\n      }\r\n\r\n      // check age of plugin result, only send fluctuations trigger message if the plugin result is new\r\n      const activityAgeInMs = (Date.now() - activityTimestampMs);\r\n      return activityAgeInMs < MAX_AGE_FOR_TRIGGER_IN_MS;\r\n    }\r\n    return false;\r\n  }, [hasNoData, isSummarizeMessageFromButtonClick, summarizeEvent]);\r\n\r\n  const ret = useMemo<SummarizeMessageResult>(() => ({\r\n    hasNoData,\r\n    shouldSendFluctuationsTriggerMessage,\r\n    summarizeMessage,\r\n    summarizePluginResult,\r\n  }), [\r\n    hasNoData,\r\n    shouldSendFluctuationsTriggerMessage,\r\n    summarizeMessage,\r\n    summarizePluginResult,\r\n  ]);\r\n\r\n  return ret;\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { SingleResult } from './single-result';\r\nimport { getComparisonDatePeriod } from './get-comparison-date-period';\r\nimport { type SummarizePluginResult } from '../../types';\r\nimport { useNormalizedPerfMetrics } from './use-normalized-perf-metrics';\r\n\r\nexport type InsightsSummarizePluginResultProps = {\r\n  className?: string;\r\n  summarizePluginResult: SummarizePluginResult;\r\n  isReportingInsights15Enabled?: boolean,\r\n};\r\n\r\nexport const InsightsSummarizePluginResult: React.FC<InsightsSummarizePluginResultProps> = (props) => {\r\n  const { className, summarizePluginResult, isReportingInsights15Enabled } = props;\r\n\r\n  const i18n = useI18nContext();\r\n  const perfMetrics = useNormalizedPerfMetrics({ isReportingInsights15Enabled, summarizePluginResult });\r\n\r\n  const headerText = useMemo(() => {\r\n    const campaignName: string | undefined = summarizePluginResult?.Parameters?.CampaignName;\r\n    if (campaignName) {\r\n      return i18n?.getString(_TL_('{{campaignName}} performance overview'), { campaignName });\r\n    }\r\n\r\n    return i18n?.getString(_TL_('Campaign performance overview'));\r\n  }, [i18n, summarizePluginResult]);\r\n\r\n  const currency = useMemo(() => summarizePluginResult?.Result?.accountCurrency, [summarizePluginResult]);\r\n\r\n  const comparisonPeriod = useMemo(() => isReportingInsights15Enabled && getComparisonDatePeriod({ i18n, summarizePluginResult }), [i18n, summarizePluginResult]);\r\n\r\n  if (!summarizePluginResult) {\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <div className={mergeClasses('summarize-plugin-results', className)}>\r\n      <div><strong>{headerText}</strong></div>\r\n      {isReportingInsights15Enabled\r\n      && (\r\n        <p className=\"summarize-comparison-period\">\r\n          {comparisonPeriod}\r\n        </p>\r\n      )}\r\n      <SingleResult\r\n        className=\"impressions\"\r\n        content={perfMetrics?.impressions?.currentValue}\r\n        title={i18n?.getString(_TL_('Impressions:'))}\r\n        impact={perfMetrics?.impressions?.impact}\r\n        percentShift={perfMetrics?.impressions?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"clicks\"\r\n        content={perfMetrics?.clicks?.currentValue}\r\n        title={i18n?.getString(_TL_('Clicks:'))}\r\n        impact={perfMetrics?.clicks?.impact}\r\n        percentShift={perfMetrics?.clicks?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"ctr\"\r\n        content={perfMetrics?.ctr?.currentValue}\r\n        title={i18n?.getString(_TL_('CTR:'))}\r\n        type=\"percent\"\r\n        impact={perfMetrics?.ctr?.impact}\r\n        percentShift={perfMetrics?.ctr?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"spend\"\r\n        content={perfMetrics?.spend?.currentValue}\r\n        title={i18n?.getString(_TL_('Spend:'))}\r\n        type=\"currency\"\r\n        currency={currency}\r\n        impact={perfMetrics?.spend?.impact}\r\n        percentShift={perfMetrics?.spend?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"conversions\"\r\n        content={perfMetrics?.conversions?.currentValue}\r\n        title={i18n?.getString(_TL_('Conversions:'))}\r\n        impact={perfMetrics?.conversions?.impact}\r\n        percentShift={perfMetrics?.conversions?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"cpa\"\r\n        content={perfMetrics?.cpa?.currentValue}\r\n        title={i18n?.getString(_TL_('CPA:'))}\r\n        type=\"currency\"\r\n        impact={perfMetrics?.cpa?.impact}\r\n        percentShift={perfMetrics?.cpa?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"roas\"\r\n        content={perfMetrics?.roas?.currentValue}\r\n        title={i18n?.getString(_TL_('ROAS:'))}\r\n        type=\"percent\"\r\n        impact={perfMetrics?.roas?.impact}\r\n        percentShift={perfMetrics?.roas?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"average-cpc\"\r\n        content={perfMetrics?.averageCPC?.currentValue}\r\n        title={i18n?.getString(_TL_('Average CPC:'))}\r\n        type=\"currency\"\r\n        impact={perfMetrics?.averageCPC?.impact}\r\n        percentShift={perfMetrics?.averageCPC?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"average-cpm\"\r\n        content={perfMetrics?.averageCPM?.currentValue}\r\n        title={i18n?.getString(_TL_('Average CPM:'))}\r\n        type=\"currency\"\r\n        impact={perfMetrics?.averageCPM?.impact}\r\n        percentShift={perfMetrics?.averageCPM?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"impression-share\"\r\n        content={perfMetrics?.impressionShare?.currentValue}\r\n        title={i18n?.getString(_TL_('Impression share:'))}\r\n        type=\"percent\"\r\n        impact={perfMetrics?.impressionShare?.impact}\r\n        percentShift={perfMetrics?.impressionShare?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"unique-reach\"\r\n        content={perfMetrics?.uniqueReach?.currentValue}\r\n        title={i18n?.getString(_TL_('Unique reach:'))}\r\n        impact={perfMetrics?.uniqueReach?.impact}\r\n        percentShift={perfMetrics?.uniqueReach?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"average-cpv\"\r\n        content={perfMetrics?.averageCPV?.currentValue}\r\n        title={i18n?.getString(_TL_('Average CPV:'))}\r\n        type=\"currency\"\r\n        impact={perfMetrics?.averageCPV?.impact}\r\n        percentShift={perfMetrics?.averageCPV?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"video-views\"\r\n        content={perfMetrics?.videoViews?.currentValue}\r\n        title={i18n?.getString(_TL_('Video views:'))}\r\n        impact={perfMetrics?.videoViews?.impact}\r\n        percentShift={perfMetrics?.videoViews?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"video-completion-rate\"\r\n        content={perfMetrics?.videoCompletionRate?.currentValue}\r\n        title={i18n?.getString(_TL_('Video completion rate:'))}\r\n        type=\"percent\"\r\n        impact={perfMetrics?.videoCompletionRate?.impact}\r\n        percentShift={perfMetrics?.videoCompletionRate?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"video-views-at-25-percent\"\r\n        content={perfMetrics?.videoViewsAt25Percent?.currentValue}\r\n        title={i18n?.getString(_TL_('Video views at 25%:'))}\r\n        impact={perfMetrics?.videoViewsAt25Percent?.impact}\r\n        percentShift={perfMetrics?.videoViewsAt25Percent?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"video-views-at-50-percent\"\r\n        content={perfMetrics?.videoViewsAt50Percent?.currentValue}\r\n        title={i18n?.getString(_TL_('Video views at 50%:'))}\r\n        impact={perfMetrics?.videoViewsAt50Percent?.impact}\r\n        percentShift={perfMetrics?.videoViewsAt50Percent?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"video-views-at-75-percent\"\r\n        content={perfMetrics?.videoViewsAt75Percent?.currentValue}\r\n        title={i18n?.getString(_TL_('Video views at 75%:'))}\r\n        impact={perfMetrics?.videoViewsAt75Percent?.impact}\r\n        percentShift={perfMetrics?.videoViewsAt75Percent?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"installs\"\r\n        content={perfMetrics?.installs?.currentValue}\r\n        title={i18n?.getString(_TL_('Installs:'))}\r\n        impact={perfMetrics?.installs?.impact}\r\n        percentShift={perfMetrics?.installs?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"downloads\"\r\n        content={perfMetrics?.downloads?.currentValue}\r\n        title={i18n?.getString(_TL_('Downloads:'))}\r\n        impact={perfMetrics?.downloads?.impact}\r\n        percentShift={perfMetrics?.downloads?.percentShift}\r\n      />\r\n      <SingleResult\r\n        className=\"average-cpi\"\r\n        content={perfMetrics?.averageCPI?.currentValue}\r\n        title={i18n?.getString(_TL_('Average CPI:'))}\r\n        type=\"currency\"\r\n        impact={perfMetrics?.averageCPI?.impact}\r\n        percentShift={perfMetrics?.averageCPI?.percentShift}\r\n      />\r\n    </div>\r\n  );\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\n\r\nexport type SingleResultProps = {\r\n  className?: string;\r\n  currency?: string;\r\n  title: string;\r\n  content: any;\r\n  type?: 'number' | 'currency' | 'decimal' | 'percent';\r\n  impact?: string;\r\n  percentShift?: number;\r\n};\r\nconst MAX_DISPLAYABLE_PERCENT_SHIFT = 1000000000000000;\r\n\r\nexport const SingleResult: React.FC<SingleResultProps> = React.memo((props) => {\r\n  const {\r\n    className,\r\n    currency,\r\n    title,\r\n    content,\r\n    type = 'number',\r\n    impact,\r\n    percentShift,\r\n  } = props;\r\n\r\n  const i18n = useI18nContext();\r\n\r\n  const formattedContent = useMemo<string | undefined>(() => {\r\n    if (content === undefined || content === null) {\r\n      return undefined;\r\n    }\r\n\r\n    switch (type) {\r\n      case 'currency':\r\n        return i18n?.formatCurrency(content, currency);\r\n      case 'decimal':\r\n        return i18n?.formatDecimalToFixed(content);\r\n      case 'percent':\r\n        return i18n?.formatPercent(content / 100, { maximumFractionDigits: 2, minimumFractionDigits: 2 });\r\n      case 'number':\r\n      default:\r\n        return i18n?.formatDecimal(content);\r\n    }\r\n  }, [content, currency, i18n]);\r\n\r\n  const formattedPercentShift = useMemo<string | undefined>(() => {\r\n    if (!Number.isFinite(percentShift)) {\r\n      return undefined;\r\n    }\r\n    if (percentShift === 0) {\r\n      return ' (0%)';\r\n    }\r\n    return ` (${i18n.formatPercent(percentShift / 100, { withSign: 'always', maximumFractionDigits: 2, minimumFractionDigits: 2 })})`;\r\n  }, [percentShift]);\r\n\r\n  if (!formattedContent) {\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <div className={className}>\r\n      <strong>{title}</strong>\r\n      {' '}\r\n      <span className=\"formatted-content\">{formattedContent}</span>\r\n      {_.isNumber(percentShift) && percentShift < MAX_DISPLAYABLE_PERCENT_SHIFT && (\r\n        <span className={impact}>{formattedPercentShift}</span>\r\n      )}\r\n    </div>\r\n  );\r\n});\r\n","import { I18nModel } from '@bingads-webui/copilot-i18n';\r\nimport { type SummarizePluginResult } from '../../types';\r\n\r\nexport function getComparisonDatePeriod({ i18n, summarizePluginResult }: { i18n:I18nModel, summarizePluginResult?: SummarizePluginResult }) {\r\n  const options = { date: 'long', timeZone: 'UTC' };\r\n  const result = summarizePluginResult?.Result;\r\n\r\n  const startDate = i18n.formatDate(new Date(result?.startDate), options);\r\n  const endDate = i18n.formatDate(new Date(result?.endDate), options);\r\n  const comparisonStartDate = i18n.formatDate(new Date(result?.comparisonStartDate), options);\r\n  const comparisonEndDate = i18n.formatDate(new Date(result?.comparisonEndDate), options);\r\n\r\n  return i18n.getString(\r\n    _TL_('{{startDate}} - {{endDate}} [compared to {{comparisonStartDate}} - {{comparisonEndDate}}]'),\r\n    {\r\n      startDate, endDate, comparisonStartDate, comparisonEndDate,\r\n    },\r\n  );\r\n}\r\n","import { useMemo } from 'react';\r\nimport { type SummarizePluginResult, type SummarizeCampaignResponse } from '../../types';\r\n\r\nexport function useNormalizedPerfMetrics({ isReportingInsights15Enabled, summarizePluginResult }: { isReportingInsights15Enabled: boolean, summarizePluginResult?: SummarizePluginResult }) {\r\n  const pluginResult = useMemo<SummarizeCampaignResponse['perfMetricsWithComparisonData']>(() => {\r\n    const result = summarizePluginResult?.Result;\r\n    if (!result) {\r\n      return undefined;\r\n    }\r\n\r\n    if (isReportingInsights15Enabled && result.perfMetricsWithComparisonData) {\r\n      return result.perfMetricsWithComparisonData;\r\n    }\r\n\r\n    // pilot not enabled yet, normalize the old result to the newer format, with no comparison data\r\n    return {\r\n      impressions: { currentValue: result.impressionCount },\r\n      clicks: { currentValue: result.clickCount },\r\n      ctr: { currentValue: result.ctr },\r\n      spend: { currentValue: result.spend },\r\n      conversions: { currentValue: result.conversionCount },\r\n      cpa: { currentValue: result.cpa },\r\n      roas: { currentValue: result.roas },\r\n      averageCPC: { currentValue: result.averageCPC },\r\n      averageCPM: { currentValue: result.averageCPM },\r\n      impressionShare: { currentValue: result.impressionShare },\r\n      uniqueReach: { currentValue: result.uniqueReach },\r\n      averageCPV: { currentValue: result.averageCPV },\r\n      videoViews: { currentValue: result.videoViews },\r\n      videoCompletionRate: { currentValue: result.videoCompletionRate },\r\n      videoViewsAt25Percent: { currentValue: result.videoViewsAt25Percent },\r\n      videoViewsAt50Percent: { currentValue: result.videoViewsAt50Percent },\r\n      videoViewsAt75Percent: { currentValue: result.videoViewsAt75Percent },\r\n      installs: { currentValue: result.installs },\r\n      downloads: { currentValue: result.downloads },\r\n      averageCPI: { currentValue: result.averageCPI },\r\n    };\r\n  }, [isReportingInsights15Enabled, summarizePluginResult]);\r\n\r\n  return pluginResult;\r\n}\r\n","import { makeStyles, tokens } from '@fluentui/react-components';\r\n\r\nexport const useInsightsSummarizeMessageStyles = makeStyles({\r\n  pluginResult: {\r\n    marginBottom: tokens.spacingVerticalXL,\r\n    '& .positive': {\r\n      color: tokens.colorPaletteGreenBackground3,\r\n    },\r\n    '& .negative': {\r\n      color: '#BC4B09', // red\r\n    },\r\n  },\r\n});\r\n","const summarizePluginDatePattern = /^(\\d{4})\\W(\\d{1,2})\\W(\\d{1,2})/;\r\n\r\nexport function sanitizeDateFromSummarizePlugin(dateString: string): string {\r\n  const match = dateString.match(summarizePluginDatePattern);\r\n  if (match) {\r\n    const [, year, month, day] = match;\r\n    return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n  }\r\n  throw new Error(`Could not parse date string: ${dateString}`);\r\n}\r\n","export * from './insights-missing-params';\r\n","import React, { useCallback, useContext, useEffect } from 'react';\r\nimport { CampaignAndDateSelector, CampaignSaveData, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { I18nContext, I18nModel } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\ntype InsightsMissingParamsProps = {\r\n  getCampaigns: () => Promise<Array<{ name: string, id: string }>>;\r\n  logger?: ILogger,\r\n  onMissingParamsSubmit: (text: string) => void;\r\n  replyToId?: string;\r\n  pluginName?: string;\r\n  cardText?: string;\r\n};\r\n\r\nexport const InsightsMissingParams: React.FC<InsightsMissingParamsProps> = (props) => {\r\n  const i18n = useContext(I18nContext) as I18nModel;\r\n  const {\r\n    getCampaigns,\r\n    logger,\r\n    onMissingParamsSubmit,\r\n    replyToId,\r\n    pluginName,\r\n    cardText,\r\n  } = props;\r\n\r\n  useEffect(() => {\r\n    logger?.trace(`InsightsMissingParams: replyToId: ${replyToId}`);\r\n  }, [logger, replyToId]);\r\n\r\n  const onSave = useCallback((_event: any, data: CampaignSaveData) => {\r\n    const tlText = pluginName === PluginScenarios.CampaignFluctuation ? _TL_('Are there fluctuations for my campaign \"{{campaignName}}\" from {{startDate}} to {{endDate}}')\r\n      : _TL_('Summarize the performance of campaign \"{{campaignName}}\" from {{startDate}} to {{endDate}}');\r\n\r\n    const text = i18n.getString(tlText, {\r\n      campaignName: data?.selectedCampaign.name,\r\n      startDate: data?.startDate ? i18n.formatDate(data.startDate) : undefined,\r\n      endDate: data?.endDate ? i18n.formatDate(data.endDate) : undefined,\r\n    });\r\n\r\n    logger?.trace(`InsightsMissingParams: replyToId: ${replyToId} onSave: ${text} plugin: ${pluginName}`);\r\n    onMissingParamsSubmit(text);\r\n  }, [i18n, logger, replyToId]);\r\n\r\n  return (\r\n    <CampaignAndDateSelector\r\n      getCampaigns={getCampaigns}\r\n      onSave={onSave}\r\n      showCampaignSelector\r\n      showDateSelector\r\n      cardText={cardText}\r\n    />\r\n  );\r\n};\r\n","export * from './fluctuations-plugin-renderer';\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport { makeStyles } from '@fluentui/react-components';\r\nimport { AIMessage, PluginFunctions, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ActivityRenderer } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsPanelPreview } from '../insights-panel-preview';\r\nimport { InsightsMissingParams } from '../insights-missing-params';\r\n\r\nexport const useFluctuationsStyles = makeStyles({\r\n  message: {\r\n    maxWidth: '100%',\r\n  },\r\n});\r\n\r\nexport const FluctuationsPluginRenderer: ActivityRenderer = React.memo((props) => {\r\n  const {\r\n    activity,\r\n    logger,\r\n    onFeedbackButtonClick,\r\n    onFullInsightsClick,\r\n    params: {\r\n      action,\r\n      onReferenceClick,\r\n    },\r\n    onMissingParamsSubmit,\r\n    isReportingInsights15Enabled,\r\n  } = props;\r\n\r\n  const i18n = useI18nContext();\r\n  const styles = useFluctuationsStyles();\r\n\r\n  const handleFullInsightsClick = useCallback((ev: React.MouseEvent<HTMLButtonElement>, replyToId?: string) => {\r\n    // invoke the full insights experience, provide the feedback button handler so we can also invoke feedback from there\r\n    onFullInsightsClick?.(ev, replyToId, { onFeedbackButtonClick, i18n });\r\n  }, [i18n, onFeedbackButtonClick, onFullInsightsClick]);\r\n\r\n  const getEligibleCampaigns = useCallback((act) => {\r\n    try {\r\n      const detail = _.get(act, ['Result', 'Detail']);\r\n      const parsedDetail = detail && JSON.parse(detail);\r\n\r\n      const eligibleCampaigns = _.get(parsedDetail, ['EligibleCampaigns']);\r\n      return _.map(eligibleCampaigns, c => ({ id: c.id || c.Id, name: c.name || c.Name }));\r\n    } catch (e) {\r\n      logger?.trace(`Error parsing JSON: ${e}`);\r\n      return [];\r\n    }\r\n  }, []);\r\n\r\n  const noEligibleCampaignsMessage = useMemo<Message>(() => {\r\n    const text = i18n?.getString(_TL_('We\\'re unable to provide performance insights for this query. This feature currently supports a limited set of scenarios for performance analysis. We are actively working on enhancing this feature\\'s capabilities. For further assistance, please contact a Microsoft Advertising expert.'));\r\n\r\n    return {\r\n      text,\r\n      value: {\r\n        StreamingStatus: 'Completed',\r\n      },\r\n    } as Message;\r\n  }, [i18n]);\r\n\r\n  if (activity.type === 'event') {\r\n    if (isReportingInsights15Enabled) {\r\n      const missingParamsActivity = _.find(activity.value, (pluginResult) => pluginResult.Status === 'MissingParameters');\r\n      if (!_.isEmpty(missingParamsActivity)) {\r\n        const eligibleCampaigns = getEligibleCampaigns(missingParamsActivity);\r\n        const getCampaigns = () => Promise.resolve(eligibleCampaigns);\r\n\r\n        if (!_.isEmpty(eligibleCampaigns)) {\r\n          return (\r\n            <InsightsMissingParams\r\n              getCampaigns={getCampaigns}\r\n              logger={logger}\r\n              replyToId={(activity as any).replyToId}\r\n              onMissingParamsSubmit={onMissingParamsSubmit}\r\n              pluginName={PluginScenarios.CampaignFluctuation}\r\n              cardText={i18n?.getString(_TL_('Please confirm your campaign name (where fluctuations are detected) and the date range to view fluctuations.'))}\r\n            />\r\n          );\r\n        }\r\n        return (\r\n          <AIMessage\r\n            className=\"no-eligible-campaigns\"\r\n            message={noEligibleCampaignsMessage}\r\n            showCopyButton={false}\r\n            showFeedback\r\n          />\r\n        );\r\n      }\r\n    }\r\n\r\n    // don't render the plugin results event as a separate card, InsightsPanelPreview will handle it\r\n    return null;\r\n  }\r\n\r\n  if (activity.type === 'message') {\r\n    // don't render anything if the fluctuations plugin failed to execute\r\n    const features = (activity.value as any)?.Features;\r\n    if (!_.any(features, (feature) => feature === PluginFunctions.GetAccountFluctuations || feature === PluginFunctions.GetCampaignFluctuations)) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  return (\r\n    <AIMessage\r\n      className={styles.message}\r\n      message={activity as Message}\r\n      onFeedbackButtonClick={onFeedbackButtonClick}\r\n      action={action}\r\n      onReferenceClick={onReferenceClick}\r\n      showReferences={false}\r\n      showDataDisclaimer\r\n    >\r\n      <p>\r\n        <strong>{i18n?.getString(_TL_('Key insights'))}</strong>\r\n      </p>\r\n      <InsightsPanelPreview\r\n        activity={activity}\r\n        logger={logger}\r\n        onFullInsightsClick={handleFullInsightsClick}\r\n      />\r\n    </AIMessage>\r\n  );\r\n});\r\n\r\nFluctuationsPluginRenderer.canRender = (activity: Activity) => {\r\n  if (activity.type === 'message') {\r\n    const pluginName = (activity.value as any)?.PluginContext?.Name;\r\n\r\n    // only render fluctuations card if user intent is present\r\n    return pluginName === PluginScenarios.AccountFluctuation || pluginName === PluginScenarios.CampaignFluctuation;\r\n  }\r\n\r\n  if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n    return _.any(activity.value, (pluginResult) => pluginResult.Name === PluginScenarios.AccountFluctuation || pluginResult.Name === PluginScenarios.CampaignFluctuation || pluginResult.Name === PluginScenarios.PerformanceTimeSeries);\r\n  }\r\n\r\n  return false;\r\n};\r\n","export * from './insights-panel-preview';\r\n","import _ from 'underscore';\r\nimport React, {\r\n  useCallback,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n} from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport Markdown from 'markdown-to-jsx';\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\nimport { ArrowCircleRight20Regular } from '@fluentui/react-icons';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsChart } from '../insights-chart';\r\nimport { useInsightsPanelPreviewStyles } from './use-insights-panel-preview-styles';\r\nimport { useFluctuationsMessage } from '../../hooks/use-fluctuations-message';\r\n\r\nexport type InsightsPanelPreviewProps = {\r\n  activity: Activity;\r\n  logger?: ILogger;\r\n  onFullInsightsClick: (ev: React.MouseEvent<HTMLButtonElement>, replyToId: string | undefined) => void;\r\n};\r\n\r\n/**\r\n * InsightsPanelPreview is the smaller card insight the chat stream. It\r\n * displays a short summary of the insight data received from the bot and\r\n * provides buttons for the user to navigate to the full insights panel.\r\n */\r\nexport const InsightsPanelPreview: React.FC<InsightsPanelPreviewProps> = React.memo((props) => {\r\n  const i18n = useContext(I18nContext);\r\n  const classes = useInsightsPanelPreviewStyles();\r\n\r\n  const { activity, logger, onFullInsightsClick } = props;\r\n  const message = activity as Message;\r\n\r\n  const replyToId: string | undefined = (message as any)?.replyToId;\r\n\r\n  const { fluctuationsChartData, fluctuationResult, isCompleted } = useFluctuationsMessage(replyToId);\r\n\r\n  useEffect(() => {\r\n    if (logger && isCompleted) {\r\n      logger?.trace(`InsightsPanelPreview: replyToId: ${replyToId}, fluctuationResult.Result.length: ${_.size(fluctuationResult?.Result)}, fluctuationsChartData: ${!!fluctuationsChartData}`);\r\n    }\r\n  }, [\r\n    fluctuationResult?.Result,\r\n    fluctuationsChartData,\r\n    isCompleted,\r\n    logger,\r\n    replyToId,\r\n  ]);\r\n\r\n  const parseDate = useMemo(() => i18n.dateParser({ raw: 'yyyy-MM-dd' }), [i18n]);\r\n\r\n  const headerText = useMemo<string | undefined>(() => {\r\n    if (fluctuationResult?.Result) {\r\n      const fluctuation = fluctuationResult.Result[0];\r\n\r\n      if (fluctuation) {\r\n        let date = '';\r\n        try {\r\n          const dateObj = parseDate(fluctuation.shiftStartDate);\r\n          date = i18n.formatDate(dateObj);\r\n        } catch (e) {\r\n          // do nothing\r\n        }\r\n\r\n        const isDecrease = fluctuation.shiftDirection === 'Decrease';\r\n\r\n        let tlKey;\r\n        switch (fluctuation.metricType) {\r\n          case 'Impression':\r\n            tlKey = isDecrease ? _TL_('Impressions decreased on {{date}}') : _TL_('Impressions increased on {{date}}');\r\n            break;\r\n          case 'Conversion':\r\n            tlKey = isDecrease ? _TL_('Conversions decreased on {{date}}') : _TL_('Conversions increased on {{date}}');\r\n            break;\r\n          default:\r\n            tlKey = isDecrease ? _TL_('Clicks decreased on {{date}}') : _TL_('Clicks increased on {{date}}');\r\n            break;\r\n        }\r\n\r\n        return i18n?.getString(tlKey, { date });\r\n      }\r\n    }\r\n    return undefined;\r\n  }, [fluctuationResult, i18n, parseDate]);\r\n\r\n  const handleFullInsightsClick = useCallback((ev: React.MouseEvent<HTMLButtonElement>) => {\r\n    logger?.trace(`InsightsPanelPreview: Click on View Details, replyToId: ${replyToId}`);\r\n    onFullInsightsClick(ev, replyToId);\r\n  }, [logger, onFullInsightsClick, replyToId]);\r\n\r\n  return (\r\n    <div className={mergeClasses(classes.root, 'insights-panel-preview')}>\r\n      <div className={mergeClasses(classes.top, 'insights-panel-preview-top')}>\r\n        <div className={mergeClasses(classes.header, 'insights-panel-preview-header')}>\r\n          {i18n?.getString(_TL_('Fluctuations'))}\r\n        </div>\r\n      </div>\r\n\r\n      {/* display the chart for the first fluctuation */}\r\n      <div className={classes.chart}>\r\n        {headerText && (\r\n          <div className={mergeClasses(classes.chartHeader, 'insights-panel-preview-chart-header')}>{headerText}</div>\r\n        )}\r\n        <InsightsChart\r\n          isPreview\r\n          isLoading={!fluctuationsChartData && !isCompleted}\r\n          performanceTimeSeries={fluctuationsChartData?.[0]}\r\n          TimeZone={71}\r\n        />\r\n      </div>\r\n\r\n      <div className={mergeClasses(classes.summary, 'insights-panel-preview-summary')}>\r\n        <Markdown\r\n          className={mergeClasses(classes.summaryContent, 'insights-panel-preview-summary-content')}\r\n          options={{ forceInline: true }}\r\n        >\r\n          {message.text || ''}\r\n        </Markdown>\r\n      </div>\r\n\r\n      <div className=\"insights-panel-preview-buttons\">\r\n        <Button\r\n          className={mergeClasses(classes.goFullButton, 'insights-panel-preview-go-full-button')}\r\n          size=\"small\"\r\n          disabled={replyToId == null || !fluctuationsChartData}\r\n          onClick={handleFullInsightsClick}\r\n          icon={<ArrowCircleRight20Regular />}\r\n        >\r\n          {i18n?.getString(_TL_('View details'))}\r\n        </Button>\r\n      </div>\r\n    </div>\r\n  );\r\n});\r\n","import {\r\n  makeStyles,\r\n  shorthands,\r\n  tokens,\r\n  typographyStyles,\r\n} from '@fluentui/react-components';\r\n\r\nconst chartAndSummaryCommonStyles = {\r\n  backgroundColor: tokens.colorNeutralBackground1,\r\n  ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n  paddingLeft: tokens.spacingHorizontalS,\r\n  paddingRight: tokens.spacingHorizontalS,\r\n  paddingTop: tokens.spacingVerticalS,\r\n  paddingBottom: tokens.spacingVerticalS,\r\n};\r\n\r\nexport const useInsightsPanelPreviewStyles = makeStyles({\r\n  root: {\r\n    display: 'flex',\r\n    marginTop: tokens.spacingVerticalL,\r\n    paddingLeft: tokens.spacingHorizontalS,\r\n    paddingRight: tokens.spacingHorizontalS,\r\n    paddingTop: tokens.spacingVerticalS,\r\n    paddingBottom: tokens.spacingVerticalS,\r\n\r\n    flexDirection: 'column',\r\n    ...shorthands.gap(tokens.spacingVerticalS),\r\n    ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n    backgroundColor: tokens.colorNeutralBackground3,\r\n    boxShadow: tokens.shadow2,\r\n  },\r\n  top: {\r\n    display: 'flex',\r\n  },\r\n  header: {\r\n    paddingLeft: tokens.spacingHorizontalS,\r\n    paddingRight: tokens.spacingHorizontalS,\r\n    paddingTop: tokens.spacingVerticalXS,\r\n    paddingBottom: tokens.spacingVerticalXS,\r\n\r\n    ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n    opacity: '0.8',\r\n    backgroundColor: tokens.colorNeutralBackground1,\r\n    backdropFilter: 'blur(2px)',\r\n\r\n    ...typographyStyles.caption1Strong,\r\n  },\r\n  chartHeader: {\r\n    fontSize: tokens.fontSizeBase200,\r\n    fontWeight: tokens.fontWeightSemibold,\r\n    marginBottom: tokens.spacingVerticalXS,\r\n  },\r\n  chart: {\r\n    ...chartAndSummaryCommonStyles,\r\n  },\r\n  summary: {\r\n    ...chartAndSummaryCommonStyles,\r\n    fontSize: tokens.fontSizeBase200,\r\n    lineHeight: tokens.lineHeightBase200,\r\n  },\r\n  summaryContent: {\r\n    // restrict the height of the summary to 4 lines\r\n    display: '-webkit-box',\r\n    '-webkit-box-orient': 'vertical',\r\n    '-webkit-line-clamp': 4,\r\n    overflowY: 'hidden',\r\n    maxHeight: `calc(${tokens.lineHeightBase200} * 4)`,\r\n  },\r\n  goFullButton: {},\r\n});\r\n","// list of i18n keys that are defined outside of the ads-copilot project but need to be included in copilot-i18n\r\nexport const additionalI18nKeys = [\r\n  _TL_('Generating insights...'),\r\n  _TL_('We are unable to display the graph at this time. Please try again later.'),\r\n  _TL_('Conv.'),\r\n  _TL_('Impr.'),\r\n  _TL_('Clicks'),\r\n];\r\n","export { parse } from './src/parser.pegjs';\r\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n  function ctor() { this.constructor = child; }\n  ctor.prototype = parent.prototype;\n  child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  this.message  = message;\n  this.expected = expected;\n  this.found    = found;\n  this.location = location;\n  this.name     = \"SyntaxError\";\n\n  if (typeof Error.captureStackTrace === \"function\") {\n    Error.captureStackTrace(this, peg$SyntaxError);\n  }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n        literal: function(expectation) {\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        },\n\n        \"class\": function(expectation) {\n          var escapedParts = \"\",\n              i;\n\n          for (i = 0; i < expectation.parts.length; i++) {\n            escapedParts += expectation.parts[i] instanceof Array\n              ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n              : classEscape(expectation.parts[i]);\n          }\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        },\n\n        any: function(expectation) {\n          return \"any character\";\n        },\n\n        end: function(expectation) {\n          return \"end of input\";\n        },\n\n        other: function(expectation) {\n          return expectation.description;\n        }\n      };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g,  '\\\\\"')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\\]/g, '\\\\]')\n      .replace(/\\^/g, '\\\\^')\n      .replace(/-/g,  '\\\\-')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = new Array(expected.length),\n        i, j;\n\n    for (i = 0; i < expected.length; i++) {\n      descriptions[i] = describeExpectation(expected[i]);\n    }\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== void 0 ? options : {};\n\n  var peg$FAILED = {},\n\n      peg$startRuleFunctions = { Expression: peg$parseExpression },\n      peg$startRuleFunction  = peg$parseExpression,\n\n      peg$c0 = function(node) { return node; },\n      peg$c1 = \"+\",\n      peg$c2 = peg$literalExpectation(\"+\", false),\n      peg$c3 = \"-\",\n      peg$c4 = peg$literalExpectation(\"-\", false),\n      peg$c5 = function(value, nextOperation) { return ExprNode(value, nextOperation); },\n      peg$c6 = \"*\",\n      peg$c7 = peg$literalExpectation(\"*\", false),\n      peg$c8 = \"/\",\n      peg$c9 = peg$literalExpectation(\"/\", false),\n      peg$c10 = function(node) { return negateNode(node); },\n      peg$c11 = /^[0-9]/,\n      peg$c12 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n      peg$c13 = \".\",\n      peg$c14 = peg$literalExpectation(\".\", false),\n      peg$c15 = function(numberString) { return ConstantNode(numberString); },\n      peg$c16 = \"[\",\n      peg$c17 = peg$literalExpectation(\"[\", false),\n      peg$c18 = \"]\",\n      peg$c19 = peg$literalExpectation(\"]\", false),\n      peg$c20 = function(name, segment) { return ColumnNode(name, segment); },\n      peg$c21 = /^[A-Za-z]/,\n      peg$c22 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"]], false, false),\n      peg$c23 = \"\\\\\",\n      peg$c24 = peg$literalExpectation(\"\\\\\", false),\n      peg$c25 = function(name) { return name; },\n      peg$c26 = \":\",\n      peg$c27 = peg$literalExpectation(\":\", false),\n      peg$c28 = \",\",\n      peg$c29 = peg$literalExpectation(\",\", false),\n      peg$c30 = function(segments) { return ColumnNodeSegments(segments); },\n      peg$c31 = function() { return undefined; },\n      peg$c32 = \"(\",\n      peg$c33 = peg$literalExpectation(\"(\", false),\n      peg$c34 = \")\",\n      peg$c35 = peg$literalExpectation(\")\", false),\n      peg$c36 = peg$otherExpectation(\"whitespace\"),\n      peg$c37 = /^[ \\t\\n\\r]/,\n      peg$c38 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false),\n\n      peg$currPos          = 0,\n      peg$savedPos         = 0,\n      peg$posDetailsCache  = [{ line: 1, column: 1 }],\n      peg$maxFailPos       = 0,\n      peg$maxFailExpected  = [],\n      peg$silentFails      = 0,\n\n      peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos], p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line:   details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos),\n        endPosDetails   = peg$computePosDetails(endPos);\n\n    return {\n      start: {\n        offset: startPos,\n        line:   startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line:   endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parseExpression() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseAdditiveExpr();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseAdditiveExpr() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseMultiplicativeExpr();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 43) {\n          s5 = peg$c1;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c2); }\n        }\n        if (s5 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 45) {\n            s5 = peg$c3;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c4); }\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseMultiplicativeExpr();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 43) {\n            s5 = peg$c1;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c2); }\n          }\n          if (s5 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 45) {\n              s5 = peg$c3;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c4); }\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseMultiplicativeExpr();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c5(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMultiplicativeExpr() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseValue();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 42) {\n          s5 = peg$c6;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c7); }\n        }\n        if (s5 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 47) {\n            s5 = peg$c8;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c9); }\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseValue();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 42) {\n            s5 = peg$c6;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c7); }\n          }\n          if (s5 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 47) {\n              s5 = peg$c8;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c9); }\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseValue();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c5(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseValue() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseConstant();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseCustomColumn();\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c0(s1);\n    }\n    s0 = s1;\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseMinus();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseConstant();\n          if (s3 === peg$FAILED) {\n            s3 = peg$parseCustomColumn();\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c10(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseLParen();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseExpression();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseRParen();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c0(s2);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseMinus();\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n              s3 = peg$parseLParen();\n              if (s3 !== peg$FAILED) {\n                s4 = peg$parseExpression();\n                if (s4 !== peg$FAILED) {\n                  s5 = peg$parseRParen();\n                  if (s5 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c10(s4);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseConstant() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    if (peg$c11.test(input.charAt(peg$currPos))) {\n      s3 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c12); }\n    }\n    if (s3 !== peg$FAILED) {\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c11.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c12); }\n        }\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s4 = peg$c13;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c14); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = [];\n        if (peg$c11.test(input.charAt(peg$currPos))) {\n          s6 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c12); }\n        }\n        if (s6 !== peg$FAILED) {\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            if (peg$c11.test(input.charAt(peg$currPos))) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c12); }\n            }\n          }\n        } else {\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c15(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseCustomColumn() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseColumnName();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s3 = peg$c16;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c17); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseSegmentInfo();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s5 = peg$c18;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c19); }\n          }\n          if (s5 !== peg$FAILED) {\n            s3 = [s3, s4, s5];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c20(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseColumnName() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    if (peg$c21.test(input.charAt(peg$currPos))) {\n      s3 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c22); }\n    }\n    if (s3 !== peg$FAILED) {\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c21.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s4 = peg$c23;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c24); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = [];\n        if (peg$c21.test(input.charAt(peg$currPos))) {\n          s6 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n        if (s6 !== peg$FAILED) {\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            if (peg$c21.test(input.charAt(peg$currPos))) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c22); }\n            }\n          }\n        } else {\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c25(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseSegmentInfo() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    if (peg$c21.test(input.charAt(peg$currPos))) {\n      s3 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c22); }\n    }\n    if (s3 !== peg$FAILED) {\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c21.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s3 = peg$c26;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c27); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = [];\n        if (peg$c21.test(input.charAt(peg$currPos))) {\n          s5 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n        if (s5 !== peg$FAILED) {\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            if (peg$c21.test(input.charAt(peg$currPos))) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c22); }\n            }\n          }\n        } else {\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = [];\n          s6 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s7 = peg$c28;\n            peg$currPos++;\n          } else {\n            s7 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c29); }\n          }\n          if (s7 !== peg$FAILED) {\n            s8 = [];\n            if (peg$c21.test(input.charAt(peg$currPos))) {\n              s9 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s9 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c22); }\n            }\n            if (s9 !== peg$FAILED) {\n              while (s9 !== peg$FAILED) {\n                s8.push(s9);\n                if (peg$c21.test(input.charAt(peg$currPos))) {\n                  s9 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s9 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c22); }\n                }\n              }\n            } else {\n              s8 = peg$FAILED;\n            }\n            if (s8 !== peg$FAILED) {\n              s7 = [s7, s8];\n              s6 = s7;\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            s6 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s7 = peg$c28;\n              peg$currPos++;\n            } else {\n              s7 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c29); }\n            }\n            if (s7 !== peg$FAILED) {\n              s8 = [];\n              if (peg$c21.test(input.charAt(peg$currPos))) {\n                s9 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s9 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c22); }\n              }\n              if (s9 !== peg$FAILED) {\n                while (s9 !== peg$FAILED) {\n                  s8.push(s9);\n                  if (peg$c21.test(input.charAt(peg$currPos))) {\n                    s9 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s9 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c22); }\n                  }\n                }\n              } else {\n                s8 = peg$FAILED;\n              }\n              if (s8 !== peg$FAILED) {\n                s7 = [s7, s8];\n                s6 = s7;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            s2 = [s2, s3, s4, s5];\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c30(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseMinus() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 45) {\n      s1 = peg$c3;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c4); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c31();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseLParen() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 40) {\n      s1 = peg$c32;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c33); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c31();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseRParen() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 41) {\n      s1 = peg$c34;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c35); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c31();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c37.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c38); }\n    }\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      if (peg$c37.test(input.charAt(peg$currPos))) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c38); }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c31();\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n    }\n\n    return s0;\n  }\n\n\r\n    // ***Code in this file is not passed through Babel!***\r\n    // Take care to ensure all JavaScript is cross-compatible!\r\n\r\n    function compact(list) {\r\n      return Array.prototype.filter.call(list, function(v) { return !!v; });\r\n    }\r\n\r\n    function flattenToString(arr) {\r\n      return Array.prototype.reduce.call(arr || [], function(flat, toFlatten) {\r\n        return flat.concat(Array.isArray(toFlatten) ? flattenToString(toFlatten) : toFlatten);\r\n      }, []).join(\"\");\r\n    }\r\n\r\n    function ExprNode(value, nextOperation) {\r\n      return Array.prototype.reduce.call(nextOperation || [], function(memo, curr) {\r\n        var stripped = compact(curr);\r\n\r\n        return {\r\n          type: \"math\",\r\n          operator: stripped[0],\r\n          left: memo,\r\n          right: stripped[1],\r\n        };\r\n      }, value);\r\n    }\r\n\r\n    function ConstantNode(parsedValue) {\r\n      return {\r\n        type: \"number\",\r\n        value: parseFloat(flattenToString(parsedValue)),\r\n      };\r\n    }\r\n\r\n    function ColumnNode(name, segments) {\r\n      return {\r\n        type: \"column\",\r\n        name: flattenToString(name),\r\n        segments: Array.prototype.slice.call(segments || [], 1, -1)[0],\r\n      };\r\n    }\r\n\r\n    function ColumnNodeSegments(segments) {\r\n      return flattenToString(segments);\r\n    }\r\n\r\n    function negateNode(node) {\r\n      switch (node.type) {\r\n        case 'number':\r\n          node.value = -node.value;\r\n          break;\r\n        case 'column':\r\n          node.isNegative = true;\r\n          break;\r\n        case 'math':\r\n          node.negateResult = true;\r\n          break;\r\n        default:\r\n          throw new Error('internal parser error: invalid node.type');\r\n      }\r\n\r\n      return node;\r\n    }\r\n\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse:       peg$parse\n};\n","export * from './src/custom-column-parser';\r\n","import _ from 'underscore';\r\nimport { parse } from '@bingads-webui/custom-column-parser-pegjs';\r\n\r\n/**\r\n * @typedef {Object} SegmentDefinition\r\n * @property {string} segment internal segment name (for code)\r\n * @property {string} titleKey i18n key for segment name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} SegmentCategoryDefinition\r\n * @property {string} category internal segment category name (for code)\r\n * @property {string} titleKey i18n key for segment category name (for UI)\r\n * @property {SegmentDefinition[]} segments list of valid segment definitions\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricDefinition\r\n * @property {string} metric internal metric name (for code)\r\n * @property {string} titleKey i18n key for metric name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricCategoryDefinition\r\n * @property {string} titleKey i18n key for metric category name (for UI)\r\n * @property {MetricDefinition[]} metrics list of valid metric definitions\r\n */\r\n\r\n/**\r\n * Configuration for CustomColumnParser constructor.\r\n *\r\n * @typedef {Object} CustomColumnParserConfig\r\n * @property {MetricCategoryDefinition[]} [metricCategories=[]] whitelist of valid metrics\r\n * @property {SegmentCategoryDefinition[]} [segmentCategories=[]] whitelist of valid segments\r\n */\r\n\r\n/**\r\n * Swappable string-to-ast parsing engine.\r\n * Useful for quickly & easily swapping parse libraries/dependencies.\r\n *\r\n * @typedef {Object} CustomColumnParserEngine\r\n * @property {function} parse accepts string input, returns AST object\r\n */\r\n\r\n/**\r\n * Parse and/or validate custom column expression strings.\r\n */\r\nexport class CustomColumnParser {\r\n  /**\r\n   * @param {CustomColumnParserConfig} [config] parser configuration\r\n   * @param {CustomColumnParserEngine} [parserEngine] swappable engine for generating parse trees\r\n   */\r\n  constructor({ metricCategories = [], segmentCategories = [] } = {}, parserEngine = { parse }) {\r\n    this.validMetrics = _.flatten(_.map(metricCategories, ({ metrics }) =>\r\n      _.pluck(metrics, 'metric')));\r\n    this.segmentCategories = segmentCategories;\r\n    this.parserEngine = parserEngine;\r\n  }\r\n\r\n  isValidSegment(text = '') {\r\n    const [category, selectionsText = ''] = text.split(':');\r\n    const segmentConfig = _.findWhere(this.segmentCategories, { category });\r\n    const validSegments = _.pluck(segmentConfig.segments, 'segment');\r\n\r\n    if (!segmentConfig) {\r\n      return false;\r\n    }\r\n\r\n    const selections = selectionsText.split(',');\r\n\r\n    if (_.isEmpty(_.first(selections))) {\r\n      return false;\r\n    }\r\n\r\n    return selections.length === _.intersection(selections, validSegments).length;\r\n  }\r\n\r\n  getColumnValidationErrors(root) {\r\n    const errors = [];\r\n\r\n    if (root.type === 'column') {\r\n      if (!_.isEmpty(this.validMetrics) && !_.contains(this.validMetrics, root.name)) {\r\n        errors.push({ cause: 'Invalid column name', offender: root.name });\r\n      }\r\n\r\n      if (!_.isEmpty(this.segmentCategories) && root.segments) {\r\n        if (!this.isValidSegment(root.segments)) {\r\n          errors.push({ cause: 'Invalid segment', offender: root.segments });\r\n        }\r\n      }\r\n    }\r\n\r\n    return errors\r\n      .concat(root.left ? this.getColumnValidationErrors(root.left) : [])\r\n      .concat(root.right ? this.getColumnValidationErrors(root.right) : []);\r\n  }\r\n\r\n  parse(expression) {\r\n    try {\r\n      const parseTree = this.parserEngine.parse(expression);\r\n      const errors = this.getColumnValidationErrors(parseTree);\r\n\r\n      if (!_.isEmpty(errors)) {\r\n        return null;\r\n      }\r\n\r\n      return parseTree;\r\n    } catch (e) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  isValid(expression) {\r\n    try {\r\n      return Boolean(this.parse(expression));\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__199__;","\r\nexport * from './src/metrics/index';\r\nexport * from './src/segments/index';\r\nexport * from './src/config';\r\n","import _ from 'underscore';\r\nimport {\r\n  Clicks,\r\n  Impressions,\r\n  CTR,\r\n  AverageCPC,\r\n  AverageCPM,\r\n  Spend,\r\n  TotalSpend,\r\n} from './performance';\r\nimport {\r\n  CPA,\r\n  PartialConversionCPA,\r\n  Conversions,\r\n  ConversionsCredit,\r\n  ConversionRate,\r\n  PartialConversionRate,\r\n  AdvertiserReportedRevenue,\r\n  RevenueOnAdSpend,\r\n} from './conversions';\r\n\r\nexport const Metrics = {\r\n  Clicks,\r\n  Impressions,\r\n  CTR,\r\n  AverageCPC,\r\n  AverageCPM,\r\n  Spend,\r\n  TotalSpend,\r\n  CPA,\r\n  PartialConversionCPA,\r\n  Conversions,\r\n  ConversionsCredit,\r\n  ConversionRate,\r\n  PartialConversionRate,\r\n  AdvertiserReportedRevenue,\r\n  RevenueOnAdSpend,\r\n};\r\n\r\nconst defaultPerformanceMetrics = [\r\n  Clicks,\r\n  Impressions,\r\n  CTR,\r\n  AverageCPC,\r\n  Spend,\r\n];\r\n\r\nconst defaultConversionsMetrics = [\r\n  CPA,\r\n  Conversions,\r\n  ConversionRate,\r\n  AdvertiserReportedRevenue,\r\n  RevenueOnAdSpend,\r\n];\r\n\r\n/**\r\n * @param {string} titleKey i18n key for category title\r\n * @param {MetricDefinition[]} metrics columns to display under this category\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nexport const MetricCategory = (titleKey, metrics = []) => ({ titleKey, metrics });\r\n\r\n/**\r\n * @param {MetricDefinition[]} metrics \"Performance\" category metrics\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nconst PerformanceCategory = (metrics = defaultPerformanceMetrics) =>\r\n  MetricCategory('Performance', metrics);\r\n\r\n/**\r\n * @param {MetricDefinition[]} metrics \"Conversions\" category metrics\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nconst ConversionsCategory = (metrics = defaultConversionsMetrics) =>\r\n  MetricCategory('Conversions', metrics);\r\n\r\n/**\r\n * @param {MetricDefinition[]} [perfMetrics] metrics to group under 'Performance' category\r\n * @param {MetricDefinition[]} [convMetrics] metrics to group under 'Conversions' category\r\n * @returns {MetricCategory[]} formatted value for config(s)\r\n */\r\nexport const MetricCategories = (perfMetrics, convMetrics) => [\r\n  PerformanceCategory(perfMetrics),\r\n  ConversionsCategory(convMetrics),\r\n];\r\n\r\nexport function getAllMetrics(metricCategories) {\r\n  const allMetrics = [];\r\n\r\n  _.each(metricCategories, (category) => {\r\n    _.each(category.metrics, metric => allMetrics.push(metric.metric));\r\n  });\r\n\r\n  return allMetrics;\r\n}\r\n","\r\nexport const Clicks = {\r\n  metric: 'PerformanceMetrics\\\\Clicks',\r\n  titleKey: 'ColumnName_Clicks',\r\n};\r\n\r\nexport const Impressions = {\r\n  metric: 'PerformanceMetrics\\\\Impressions',\r\n  titleKey: 'ColumnName_Impressions',\r\n};\r\n\r\nexport const CTR = {\r\n  metric: 'PerformanceMetrics\\\\CTR',\r\n  titleKey: 'ColumnName_ClickThruRate',\r\n};\r\n\r\nexport const AverageCPC = {\r\n  metric: 'PerformanceMetrics\\\\AverageCPC',\r\n  titleKey: 'ColumnName_CPC',\r\n};\r\n\r\nexport const AverageCPM = {\r\n  metric: 'PerformanceMetrics\\\\AverageCPM',\r\n  titleKey: 'ColumnName_CostPerImpression',\r\n};\r\n\r\nexport const Spend = {\r\n  metric: 'PerformanceMetrics\\\\Spend',\r\n  titleKey: 'ColumnName_Spend',\r\n};\r\n\r\nexport const TotalSpend = {\r\n  metric: 'PhonePerformanceMetrics\\\\ClickAndPhoneSpend',\r\n  titleKey: 'ColumnName_TotalCost',\r\n};\r\n","export const CPA = {\r\n  metric: 'PerformanceMetrics\\\\CPA',\r\n  titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const PartialConversionCPA = {\r\n  metric: 'PerformanceMetrics\\\\PartialConversionCPA',\r\n  titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const Conversions = {\r\n  metric: 'PerformanceMetrics\\\\Conversions',\r\n  titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionsCredit = {\r\n  metric: 'PerformanceMetrics\\\\ConversionsCredit',\r\n  titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionRate = {\r\n  metric: 'PerformanceMetrics\\\\ConversionRate',\r\n  titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const PartialConversionRate = {\r\n  metric: 'PerformanceMetrics\\\\PartialConversionRate',\r\n  titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const AdvertiserReportedRevenue = {\r\n  metric: 'PerformanceMetrics\\\\AdvertiserReportedRevenue',\r\n  titleKey: 'ColumnName_Revenue',\r\n};\r\n\r\nexport const RevenueOnAdSpend = {\r\n  metric: 'PerformanceMetrics\\\\RevenueOnAdSpend',\r\n  titleKey: 'ColumnName_RevenueOnAdSpend',\r\n};\r\n","import _ from 'underscore';\r\nimport { Computer, SmartPhone, Tablet } from './device-type';\r\nimport { AOLSearch, BingAndYahooSearch } from './network';\r\nimport {\r\n  AOLSearchTop,\r\n  AOLSearchOther,\r\n  BingAndYahooSearchTop,\r\n  BingAndYahooSearchOther,\r\n} from './top-vs-other';\r\n\r\nexport const segmentCategories = [\r\n  {\r\n    category: 'DeviceType',\r\n    titleKey: 'Segment_Dropdown_Device_Type',\r\n    segments: [\r\n      Computer,\r\n      SmartPhone,\r\n      Tablet,\r\n    ],\r\n  },\r\n  {\r\n    category: 'Network',\r\n    titleKey: 'Segment_Dropdown_Network',\r\n    segments: [\r\n      BingAndYahooSearch,\r\n      AOLSearch,\r\n    ],\r\n  },\r\n  {\r\n    category: 'TopVsOther',\r\n    titleKey: 'Segment_Dropdown_Top_Other',\r\n    segments: [\r\n      BingAndYahooSearchTop,\r\n      BingAndYahooSearchOther,\r\n      AOLSearchTop,\r\n      AOLSearchOther,\r\n    ],\r\n  },\r\n];\r\n\r\nexport function getAllSegments(segCategories) {\r\n  const allSegments = [];\r\n\r\n  _.each(segCategories, (segCategory) => {\r\n    _.each(segCategory.segments, segment => allSegments.push(segment.segment));\r\n  });\r\n\r\n  return allSegments;\r\n}\r\n","export const Computer = {\r\n  segment: 'Computer',\r\n  titleKey: 'Segment_Device_Type_Computer',\r\n};\r\n\r\nexport const SmartPhone = {\r\n  segment: 'SmartPhone',\r\n  titleKey: 'Segment_Device_Type_Smartphone',\r\n};\r\n\r\nexport const Tablet = {\r\n  segment: 'Tablet',\r\n  titleKey: 'Segment_Device_Type_Tablet',\r\n};\r\n","export const BingAndYahooSearch = {\r\n  segment: 'BingAndYahooSearch',\r\n  titleKey: 'Segment_Network_BingAndYahoo',\r\n};\r\n\r\nexport const AOLSearch = {\r\n  segment: 'AOLSearch',\r\n  titleKey: 'Segment_Network_AOL',\r\n};\r\n","export const BingAndYahooSearchTop = {\r\n  segment: 'BingAndYahooSearchTop',\r\n  titleKey: 'Segment_Page_Position_BingYahooTop',\r\n};\r\n\r\nexport const BingAndYahooSearchOther = {\r\n  segment: 'BingAndYahooSearchOther',\r\n  titleKey: 'Segment_Page_Position_BingYahooOther',\r\n};\r\n\r\nexport const AOLSearchTop = {\r\n  segment: 'AOLSearchTop',\r\n  titleKey: 'Segment_Page_Position_AOL_Top',\r\n};\r\n\r\nexport const AOLSearchOther = {\r\n  segment: 'AOLSearchOther',\r\n  titleKey: 'Segment_Page_Position_AOL_Other',\r\n};\r\n","import _ from 'underscore';\r\nimport { MetricCategories, Metrics, getAllMetrics } from './metrics/index';\r\nimport { segmentCategories, getAllSegments } from './segments/index';\r\n\r\n/**\r\n * @typedef {Object} SegmentDefinition\r\n * @property {string} segment internal segment name (for OData)\r\n * @property {string} titleKey i18n key for segment name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} SegmentCategory\r\n * @property {string} category internal segment category name (for OData)\r\n * @property {string} titleKey i18n key for segment category name (for UI)\r\n * @property {SegmentDefinition[]} segments list of valid segment definitions\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricDefinition\r\n * @property {string} metric internal metric name (for OData)\r\n * @property {string} titleKey i18n key for metric name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricCategory\r\n * @property {string} titleKey i18n key for metric category name (for UI)\r\n * @property {MetricDefinition[]} metrics list of valid metric definitions\r\n */\r\n\r\n/**\r\n * Configuration shared between custom-columns-related constructors/components.\r\n *\r\n * @typedef {Object} CustomColumnsSharedConfig\r\n * @property {boolean} enabled whether the custom columns feature should be enabled\r\n * @property {MetricCategory[]} [metricCategories=[]] whitelist of valid metrics\r\n * @property {SegmentCategory[]} [segmentCategories=[]] whitelist of valid segments\r\n */\r\n\r\n/**\r\n * @type {CustomColumnsSharedConfig}\r\n */\r\nexport const EMPTY = {\r\n  enabled: false,\r\n  metricCategories: [],\r\n  segmentCategories: [],\r\n};\r\n\r\n/**\r\n * Sane, minimal defaults for custom columns to be enabled.\r\n * These metrics and segments are used in ALL grids.\r\n * Some grids may include additional metrics/segments.\r\n * @type {CustomColumnsSharedConfig}\r\n */\r\nexport const DEFAULTS = {\r\n  enabled: true,\r\n  metricCategories: MetricCategories(),\r\n  segmentCategories,\r\n};\r\n\r\nconst getConversionMetrics = (permissions = { dynamic: {} }, combine) => {\r\n  const {\r\n    dynamic: {\r\n      PartialConversions: IsPartialConversionsEnabled,\r\n      ColumnConversion: IsColumnConversionEnabled,\r\n    } = {},\r\n  } = permissions;\r\n\r\n  if (!IsColumnConversionEnabled) return undefined;\r\n\r\n  const newMetrics = [\r\n    Metrics.PartialConversionCPA,\r\n    Metrics.ConversionsCredit,\r\n    Metrics.PartialConversionRate,\r\n    Metrics.AdvertiserReportedRevenue,\r\n    Metrics.RevenueOnAdSpend,\r\n  ];\r\n  const oldMetrics = [\r\n    Metrics.CPA,\r\n    Metrics.Conversions,\r\n    Metrics.ConversionRate,\r\n    Metrics.AdvertiserReportedRevenue,\r\n    Metrics.RevenueOnAdSpend,\r\n  ];\r\n  const selectedMetrics = IsPartialConversionsEnabled ? newMetrics : oldMetrics;\r\n  let addedMetrics = [];\r\n  if (combine) {\r\n    addedMetrics = IsPartialConversionsEnabled ? oldMetrics : newMetrics;\r\n  }\r\n\r\n  const convMetrics = [\r\n    ...selectedMetrics,\r\n    ...addedMetrics,\r\n  ];\r\n\r\n  return convMetrics;\r\n};\r\n\r\nexport const adGroupMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    metricCategories: MetricCategories([\r\n      Metrics.Clicks,\r\n      Metrics.Impressions,\r\n      Metrics.CTR,\r\n      Metrics.AverageCPC,\r\n      Metrics.AverageCPM,\r\n      Metrics.Spend,\r\n      Metrics.TotalSpend,\r\n    ], convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const adsMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    metricCategories: MetricCategories([\r\n      Metrics.Clicks,\r\n      Metrics.Impressions,\r\n      Metrics.CTR,\r\n      Metrics.AverageCPC,\r\n      Metrics.Spend,\r\n    ], convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const campaignMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    metricCategories: MetricCategories([\r\n      Metrics.Clicks,\r\n      Metrics.Impressions,\r\n      Metrics.CTR,\r\n      Metrics.AverageCPC,\r\n      Metrics.AverageCPM,\r\n      Metrics.Spend,\r\n      Metrics.TotalSpend,\r\n    ], convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const keywordMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    metricCategories: MetricCategories([\r\n      Metrics.Clicks,\r\n      Metrics.Impressions,\r\n      Metrics.CTR,\r\n      Metrics.AverageCPC,\r\n      Metrics.AverageCPM,\r\n      Metrics.Spend,\r\n    ], convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const searchTermMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    enabled: true,\r\n    metricCategories: MetricCategories(undefined, convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const accountMetricCategoriesFactory = (permissions, combine = false) => {\r\n  const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n  return {\r\n    metricCategories: MetricCategories([\r\n      Metrics.Clicks,\r\n      Metrics.Impressions,\r\n      Metrics.CTR,\r\n      Metrics.AverageCPC,\r\n      Metrics.AverageCPM,\r\n      Metrics.Spend,\r\n    ], convMetrics),\r\n    segmentCategories,\r\n  };\r\n};\r\n\r\nexport const adExtensionMetricCategories = {\r\n  metricCategories: MetricCategories([\r\n    Metrics.Clicks,\r\n    Metrics.Impressions,\r\n    Metrics.CTR,\r\n    Metrics.AverageCPC,\r\n    Metrics.AverageCPM,\r\n    Metrics.Spend,\r\n  ]),\r\n  segmentCategories,\r\n};\r\n\r\nfunction getUsedMetricsAndSegments(expression) {\r\n  let usedMetrics = [];\r\n  let usedSegments = [];\r\n  const metrics = _.filter(expression, clause =>\r\n    clause.indexOf('PerformanceMetrics') === 0 || clause.indexOf('PhonePerformanceMetrics') === 0);\r\n  const regMetric = /(?<metric>(PerformanceMetrics|PhonePerformanceMetrics)[^[]*)(\\[[^:]*:(?<segments>.*)\\])?/;\r\n\r\n  _.each(metrics, (metric) => {\r\n    const { groups: { metric: matchedMetric, segments } } = metric.match(regMetric);\r\n\r\n    usedMetrics = usedMetrics.concat(matchedMetric);\r\n    if (segments) {\r\n      usedSegments = usedSegments.concat(segments.split(','));\r\n    }\r\n  });\r\n  return {\r\n    usedMetrics: _.uniq(usedMetrics),\r\n    usedSegments: _.uniq(usedSegments),\r\n  };\r\n}\r\n\r\nexport function isValidForFeature({\r\n  schemaName,\r\n  expression,\r\n  permissions = {},\r\n}) {\r\n  let metricCategories;\r\n  let segCategories;\r\n\r\n  switch (schemaName) {\r\n    case 'Account':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        accountMetricCategoriesFactory(permissions, /* combine */ true));\r\n      break;\r\n    case 'Campaign':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        campaignMetricCategoriesFactory(permissions, /* combine */ true));\r\n      break;\r\n    case 'AdGroup':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        adGroupMetricCategoriesFactory(permissions, true));\r\n      break;\r\n    case 'Ad':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        adsMetricCategoriesFactory(permissions, true));\r\n      break;\r\n    case 'Keyword':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        keywordMetricCategoriesFactory(permissions, true));\r\n      break;\r\n    case 'SearchTerm':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        searchTermMetricCategoriesFactory(permissions, true));\r\n      break;\r\n    case 'AdExtensionAssociation':\r\n      ({ metricCategories, segmentCategories: segCategories } =\r\n        adsMetricCategoriesFactory(permissions, true));\r\n      break;\r\n    default:\r\n      return false;\r\n  }\r\n\r\n  const supportedMetrics = getAllMetrics(metricCategories);\r\n  const supportedSegments = getAllSegments(segCategories);\r\n\r\n  const { usedMetrics, usedSegments } = getUsedMetricsAndSegments(expression);\r\n\r\n  if (!_.chain(usedMetrics).difference(supportedMetrics).isEmpty().value()) {\r\n    return false;\r\n  }\r\n\r\n  if (!_.chain(usedSegments).difference(supportedSegments).isEmpty().value()) {\r\n    return false;\r\n  }\r\n\r\n  return true;\r\n}\r\n","\r\n\r\nexport { DatePicker } from './src/date-picker-view';\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\n\r\nimport '@bingads-webui/kendo/kendo.datepicker';\r\nimport { validateDateRange } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nimport template from './date-picker-template.pug';\r\n\r\n/**\r\n * dateChanged event - When date is changed, it fires with the new date object.\r\n *\r\n * @event DatePicker#dateChanged\r\n * @type {Date}\r\n */\r\n\r\n/**\r\n * Date picker control used to select dates.\r\n * @fires DatePicker#dateChanged\r\n */\r\nexport class DatePicker extends DeterministicView {\r\n  /**\r\n   * initialize DatePicker view.\r\n   * It defaults to short date format from passed in culture if not overridden.\r\n   * @param {Object} options - options object.\r\n   * @param {Date} [options.minDate] - The minimum date that can be selected.\r\n   * @param {Date} [options.maxDate] - The maximum date that can be selected.\r\n   * @param {Date} [options.selectedDate] - The date to pre-select in the datepicker.\r\n   * @param {string} [options.ariaLabel] - The aria-label of datepicker.\r\n   * If not provided, datepicker will not have a default selection.\r\n   * @param {string} [options.navigateToFutureAriaLabel] - the aria label used on the navigate to future button\r\n   * @param {string} [options.navigateToPastAriaLabel] - the aria label used on the navigate to past button\r\n   * @throws Will throw if passed in culture has not been loaded.\r\n   * @throws Will throw if passed in date range is not valid.\r\n   * @returns {undefined}\r\n   */\r\n  initialize({\r\n    minDate, maxDate, selectedDate, ariaLabel, navigateToFutureAriaLabel, navigateToPastAriaLabel,\r\n  }) {\r\n    const dateRangeErrors = validateDateRange(minDate, maxDate, selectedDate);\r\n    if (dateRangeErrors.length) {\r\n      throw new Error(dateRangeErrors.join(','));\r\n    }\r\n\r\n    this.model.set({\r\n      minDate, maxDate, selectedDate, ariaLabel, navigateToFutureAriaLabel, navigateToPastAriaLabel,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Returns event handler callback for clicking on date filter container.\r\n   * @returns {Object} - event handlers mapping.\r\n   */\r\n  get events() {\r\n    return {\r\n      'click input.date-picker-component': () => this.datePicker.open(),\r\n      'keydown input.date-picker-component': this.handleKeyDown,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Returns the selected date.\r\n   * @returns {Date} - Date object or null if no date selected.\r\n   */\r\n  getDate() {\r\n    return this.getState().selectedDate || null;\r\n  }\r\n\r\n  /**\r\n   * Returns the options for kendo date picker\r\n   * @returns {Object} - options\r\n   */\r\n  getKendoOptions() {\r\n    const { minDate, maxDate, selectedDate } = this.model.attributes;\r\n\r\n    const options = {\r\n      value: selectedDate,\r\n      animation: false,\r\n      footer: false,\r\n      change: (event) => {\r\n        const newDate = event.sender.value();\r\n        if (newDate) {\r\n          this.model.set({ selectedDate: newDate }, { silent: true });\r\n          this.trigger('dateChanged', this.getDate());\r\n        } else {\r\n          // For invalid values, kendo might not update input box\r\n          // so have to do it manually\r\n          event.sender.value(this.getDate());\r\n        }\r\n      },\r\n      open: () => {\r\n        this.datePicker.dateView.div.click((event) => {\r\n          event.stopPropagation();\r\n        });\r\n        // Fix Bug 3084144: Bad gradient effect of the date picker\r\n        const { calendar } = this.datePicker.dateView;\r\n        if (calendar && calendar.setOptions) {\r\n          calendar.setOptions({ animation: false });\r\n        }\r\n\r\n        if (this.model.attributes.navigateToPastAriaLabel) {\r\n          // eslint-disable-next-line no-underscore-dangle\r\n          calendar._prevArrow.attr('aria-label', this.model.attributes.navigateToPastAriaLabel);\r\n        }\r\n        if (this.model.attributes.navigateToFutureAriaLabel) {\r\n          // eslint-disable-next-line no-underscore-dangle\r\n          calendar._nextArrow.attr('aria-label', this.model.attributes.navigateToFutureAriaLabel);\r\n        }\r\n      },\r\n      month: {\r\n        empty: '<span class=\"k-state-disabled\">#= data.value #</span>',\r\n      },\r\n    };\r\n\r\n    // set min and max only if they are not null\r\n    // otherwise may get error: Uncaught TypeError: Cannot read property 'getMonth' of null\r\n    if (minDate) {\r\n      options.min = minDate;\r\n    }\r\n\r\n    if (maxDate) {\r\n      options.max = maxDate;\r\n    }\r\n\r\n    return options;\r\n  }\r\n\r\n  /**\r\n   * Method to initialize and render the underlying date-picker.\r\n   * @private\r\n   * @returns {undefined}\r\n   */\r\n  renderTrunk() {\r\n    this.$el.html(template({ ariaLabel: this.model.attributes.ariaLabel }));\r\n    this.datePickerElement = this.$('.date-picker-component');\r\n\r\n    this.datePickerElement.kendoDatePicker(this.getKendoOptions());\r\n\r\n    this.datePickerElement.removeAttr('aria-readonly');\r\n\r\n    this.$('.k-datepicker .k-select').hide();\r\n\r\n    if (this.datePicker) {\r\n      this.datePicker.destroy();\r\n    }\r\n    this.datePicker = this.datePickerElement.data('kendoDatePicker');\r\n  }\r\n\r\n  /**\r\n   * Destroy the underlying date-picker object and remove all references to it.\r\n   * @private\r\n   * @returns {undefined}\r\n   */\r\n  remove() {\r\n    if (this.datePicker) {\r\n      this.datePicker.destroy();\r\n    }\r\n\r\n    this.datePicker = null;\r\n    return super.remove();\r\n  }\r\n\r\n  /**\r\n * Handles keydown event for the date picker.\r\n * @private\r\n * @param {KeyboardEvent} event - the event data\r\n * @returns {undefined}\r\n */\r\n  handleKeyDown(event) {\r\n    if ((event.keyCode === keyCode.Enter) || (event.keyCode === keyCode.Space)) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      this.datePicker.open();\r\n    }\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel) {pug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"date-picker-component\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\";}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","module.exports = __WEBPACK_EXTERNAL_MODULE__17__;","\r\n\r\nexport * from './src/promise';\r\n","import Promise from 'bluebird';\r\n\r\nlet sharedDebugId = 0;\r\n\r\n/**\r\n * Augments the behaviour of the passed in promise to help reduce flickerness\r\n * of the UI by:\r\n * - delaying the completion of the promise for it to last at least the\r\n *   specified amount of time;\r\n * - delaying calling, or not calling at all, the \"on\"/\"off\" progress callbacks,\r\n *   if the promise finishes before the \"on\" delay elapses.\r\n * @summary \"Deflickers\" a promise\r\n * @param {Object} options - the options\r\n * @param {Number} [options.onDelay=500] - the delay in milliseconds before\r\n * the \"on\" progress callback is called,\r\n * should the promise not finish by that time\r\n * @param {Number} [options.offDelay=700] - the delay in milliseconds before\r\n * the \"off\" progress callback is called, after the \"on\" callback was called\r\n * @param {Function} options.on - the \"on\" progress callback, which is called\r\n * if process runs longer than the \"on\" delay. The callback must return the \"off\"\r\n * progress callback. The \"off\" progress callback will be called after the process\r\n * finishes and the \"off\" delay elapses.\r\n * @param {Any} [options.logDebug] - If not undefined, enables trace output of the\r\n * component using window.console.log-like function. Each message from a specific instance\r\n * of the deflickered promise will have a uniqe ID logged with every message traced.\r\n * @param {Promise} promise - the promise to augment the behaviour of\r\n * @returns {Promise} a new promise with the augmented behaviour\r\n */\r\nexport function deflickerPromise(options, promise) {\r\n  const {\r\n    onDelay = 500, offDelay = 700, on, logDebug = () => { /* NOP */ },\r\n  } = options;\r\n  let resolveOffDelayPromise;\r\n  const offDelayPromise = new Promise((resolve) => {\r\n    resolveOffDelayPromise = resolve;\r\n  });\r\n  let off = null;\r\n  let onTimerFired = false;\r\n  const debugId = sharedDebugId++; // eslint-disable-line \r\n\r\n  logDebug(`Deflicker [${debugId}]: Enter. onDelay = ${onDelay}, offDelay = ${offDelay}`);\r\n\r\n  const setup = () => {\r\n    // Start the \"on\" timer\r\n    const onTimerId = setTimeout(() => {\r\n      logDebug(`Deflicker [${debugId}]: On timer`);\r\n\r\n      onTimerFired = true;\r\n      off = on();\r\n\r\n      // Start the \"off\" timer\r\n      setTimeout(() => {\r\n        logDebug(`Deflicker [${debugId}]: Off timer`);\r\n        resolveOffDelayPromise();\r\n      }, offDelay);\r\n    }, onDelay);\r\n\r\n    return () => {\r\n      logDebug(`Deflicker [${debugId}]: Process finished. onTimerFired = ${onTimerFired}`);\r\n\r\n      // If the process finishes before the \"on\" timer fires,\r\n      // cancel it and resolve the \"off\" delay promise\r\n      if (!onTimerFired) {\r\n        clearTimeout(onTimerId);\r\n        resolveOffDelayPromise();\r\n      }\r\n    };\r\n  };\r\n\r\n  return promise\r\n    .finally(setup()) // set up and start the \"on\" timer\r\n    .finally(() => offDelayPromise)\r\n    .finally(() => {\r\n      logDebug(`Deflicker [${debugId}]: Overall wait finished. onTimerFired = ${onTimerFired}`);\r\n\r\n      if (off) {\r\n        off();\r\n      }\r\n    });\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","import * as helpers from './src/helpers';\r\nimport { DeterministicView } from './src/deterministic-view';\r\nimport './src/focus-keeper';\r\n\r\n\r\nexport { DeterministicView, helpers };\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from './deterministic-view';\r\n\r\n/**\r\n * Helper function to update a view's state\r\n * @param {DeterministicView} view - The view to be updated\r\n * @param {(Function|Object)} patch -\r\n *    It could be either a function or an object.\r\n *    - If it's a funciton, new state will be patch(currentState)\r\n *    - If it's an object, new state will be _.defaults(patch, currentState)\r\n * @returns {DeterministicView} - The view being updated\r\n */\r\nexport function updateView(view, patch) {\r\n  if (_.isFunction(patch)) {\r\n    return view.setState(patch(view.getState()));\r\n  }\r\n  return view.setState(_.extend({}, view.getState(), patch));\r\n}\r\n\r\nfunction getFactory(view) {\r\n  return view.__factory || view.constructs; // eslint-disable-line\r\n}\r\n\r\nfunction setFactory(view, Factory) {\r\n  return _.extend(view, { __factory: Factory }); // eslint-disable-line\r\n}\r\n\r\n/**\r\n * Helper function to create a child view on demond. If the child exists, return\r\n * it directly, otherwise create the view with the given information\r\n * @param {DeterministicView} view - The parent view\r\n * @param {string} ref - The ref of the child view\r\n * @param {Function} viewFactory -\r\n *    The factory method or constructor of the child view\r\n *    - If the prototype of viewFactory is instance of DeterministicView, treat\r\n *      it as a construstor.\r\n *    - Otherwise, treat it as a factory method.\r\n * @param {Object} options - The constructor option of the child view\r\n * @param {Object} events -\r\n *    The event handlers to be bound to the child view.\r\n *    - The keys of the object are child view event names.\r\n *    - The values of the object could be a handler function or a method name of\r\n *      the parent view.\r\n * @returns {DeterministicView} - The child view\r\n */\r\nexport function ensureChildView(view, ref, viewFactory, options = {}, events = {}) {\r\n  let childView = view.getChild(ref);\r\n\r\n  if (!childView || getFactory(childView) !== viewFactory) {\r\n    if (_.isFunction(viewFactory)) {\r\n      if (viewFactory === DeterministicView\r\n        || viewFactory.prototype instanceof DeterministicView) {\r\n        const ViewConstructor = viewFactory;\r\n        childView = new ViewConstructor(options);\r\n      } else {\r\n        childView = viewFactory(options);\r\n      }\r\n    }\r\n\r\n    if (!(childView instanceof DeterministicView)) {\r\n      throw new Error('Invalid viewFactory');\r\n    }\r\n\r\n    setFactory(childView, viewFactory);\r\n\r\n    _.each(events, (handler, event) => {\r\n      const handlerFunction = _.isString(handler) ? view[handler] : handler;\r\n      if (!_.isFunction(handlerFunction)) {\r\n        throw new Error('Invalid event handler');\r\n      }\r\n      view.listenTo(childView, event, handlerFunction);\r\n    });\r\n    view.setChild(ref, childView);\r\n  }\r\n\r\n  return childView;\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { BaseView } from '@bingads-webui/base-view';\r\nimport { RenderEngine } from './render-engine';\r\n\r\nconst defaultRenderEngine = new RenderEngine();\r\n\r\n/**\r\n * Your template should only render the trunk of the view. For the child views,\r\n * you should put a placeholder with attribute `data-ref` being the ref of the\r\n * child view.\r\n * @callback TemplateCallback\r\n * @param {Object} options -\r\n * @param {Object} options.model - The model object\r\n * @param {DeterministicView} options.view - The view being rendered\r\n * @returns {string} - The rendered HTML\r\n */\r\nconst EMPTY_TEMPLATE = () => '';\r\n\r\nconst FORBIDDEN_OPTIONS = [\r\n  'model',\r\n  'collection',\r\n  'el',\r\n  'id',\r\n  'className',\r\n  'tagName',\r\n  'attributes',\r\n  'events',\r\n];\r\n\r\nexport const DeterministicView = BaseView.extend({\r\n  // We cannot use ES6 `extends` here, because we need to use `this` before\r\n  // calling `super(..args)`.\r\n  // This is due to the limitation of `Backbone.View`. The constructor of\r\n  // `Backbone.View` calls the `initialize` method, which is commonly used to\r\n  // initialize the view instance.\r\n  // We want give user the chance to use their own Model type instead of\r\n  // `Backbone.Model`, that requires us to access `this.Model` to create the\r\n  // instance of model, and pass it to `initialize()`\r\n\r\n  /**\r\n   * An extension of BaseView\r\n   * @constructor DeterministicView\r\n   * @param {object} options -\r\n   *    The options to create view. NOTE, the builtin options `model`,\r\n   *    `collection`, `el`, `id`, `className`, `tagName`, `attributes` and\r\n   *    `events` are forbidden for this constructor. Those can be customized\r\n   *    at class level. But for instances of the same view class, all those\r\n   *    properties MUST be consistent.\r\n   * @return {void}\r\n   */\r\n  constructor: function constructor(options) {\r\n    _.each(FORBIDDEN_OPTIONS, (name) => {\r\n      if (_.has(options, name)) {\r\n        throw new Error(`Option '${name}' is forbidden for DeterministicView`);\r\n      }\r\n    });\r\n\r\n    const ModelConstructor = this.Model;\r\n    const model = new ModelConstructor();\r\n\r\n    if (!(model instanceof Backbone.Model)) {\r\n      throw new Error('Invalid Model type');\r\n    }\r\n\r\n    BaseView.call(this, _.defaults({ model }, options));\r\n\r\n    // This is due to we are using Backbone 1.3.3 in AdsAppUISharedComponents.\r\n    // In AdsAppUI, we are using 1.0.0\r\n    // We can remove following logic about options if we downgrade all to 1.0.0\r\n    if (!this.options) {\r\n      this.options = {};\r\n    }\r\n    _.defaults(this.options, options);\r\n\r\n    // Redraw automatically on model change\r\n    this.listenTo(model, 'change', () => {\r\n      this.renderEngine.scheduleRenderView(this);\r\n    });\r\n    this.renderEngine.scheduleRenderView(this);\r\n  },\r\n\r\n  /**\r\n   * The RenderEngine to render this view. This can be overridden by the\r\n   * subclasses to change the rendering behavior (e.g. delayed rendering).\r\n   * @memberof DeterministicView#\r\n   * @type {RenderEngine}\r\n   */\r\n  get renderEngine() {\r\n    return defaultRenderEngine;\r\n  },\r\n\r\n  /**\r\n   * The template to render the view's trunk. This should be overridden by the\r\n   * subclasses to fill the content. By default, it's an empty template.\r\n   * @memberof DeterministicView#\r\n   * @type {TemplateCallback}\r\n   */\r\n  get template() {\r\n    return EMPTY_TEMPLATE;\r\n  },\r\n\r\n  /**\r\n   * The class of the model. This can be overridden by subclasses to use\r\n   * customized model type. By default, it's `Backbone.Model`.\r\n   * @memberof DeterministicView#\r\n   * @type {Class}\r\n   */\r\n  get Model() {\r\n    return Backbone.Model;\r\n  },\r\n\r\n  /**\r\n   * Set state of the view. This should be overridden by subclasses to propagate\r\n   * state to their children views. By default, it stores the whole state into\r\n   * the view's model.\r\n   * @memberof DeterministicView#\r\n   * @param {Object} state - The new state\r\n   * @returns {DeterministicView} - The view itself\r\n   */\r\n  setState(state) {\r\n    this.model.set(state);\r\n    return this;\r\n  },\r\n\r\n  /**\r\n   * Get state of the view. This should be overridden by subclasses to collect\r\n   * state from their children views. By default, it return the view's model as\r\n   * a JSON.\r\n   * @memberof DeterministicView#\r\n   * @returns {Object} - The current state of the view\r\n   */\r\n  getState() {\r\n    return this.model.toJSON();\r\n  },\r\n\r\n  /**\r\n   * Render the trunk of the view. This can be overridden by subclasses to add\r\n   * customized behaviors before/after the DOM elements are generated, without\r\n   * concerning about the children views. By default, it fills the `$el` with\r\n   * the HTML generated from template\r\n   * @memberof DeterministicView#\r\n   * @returns {void}\r\n   */\r\n  renderTrunk() {\r\n    this.$el.html(this.template({\r\n      model: this.model.attributes,\r\n      view: this,\r\n    }));\r\n  },\r\n\r\n  /**\r\n   * Render the view immediately.\r\n   * @memberof DeterministicView#\r\n   * @returns {DeterministicView} - The view itself\r\n   */\r\n  render() {\r\n    this.renderEngine.renderView(this);\r\n    return this;\r\n  },\r\n}, {\r\n  /**\r\n   * The default render engine of `DeterministicView`\r\n   * @memberof DeterministicView\r\n   * @constant\r\n   */\r\n  defaultRenderEngine,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","// TODO: Task 904718: refactor to use explicit dependency for es6 syntax rather than global variable\r\n/* global Set */\r\n\r\nimport _ from 'underscore';\r\nimport { BaseView } from '@bingads-webui/base-view';\r\n\r\n/**\r\n * @class DeterministicViewEventEmitter\r\n * @extends Backbone.Events\r\n */\r\n\r\n/**\r\n * The event emitter inherit from BaseView, it's indeed the same object as\r\n * BaseView.eventEmitter\r\n * @memberof! DeterministicView\r\n * @type DeterministicViewEventEmitter\r\n */\r\nconst { eventEmitter } = BaseView;\r\n\r\nfunction replaceElement(elNew, elOld) {\r\n  if (elOld && elOld.parentNode) {\r\n    elOld.parentNode.replaceChild(elNew, elOld);\r\n  }\r\n}\r\n\r\nfunction removeElement(el) {\r\n  // ChildNode.remove() is not supported in IE\r\n  // see: https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove\r\n  if (el && el.parentNode) {\r\n    el.parentNode.removeChild(el);\r\n  }\r\n}\r\n\r\n/**\r\n * DeterministicView render engine. It determines how a view is rendered, and\r\n * how the children views are aggregated with their parent.\r\n */\r\nexport class RenderEngine {\r\n  constructor() {\r\n    this.animationFrame = null;\r\n    this.renderQueue = new Set();\r\n  }\r\n\r\n  /**\r\n   * Render a view\r\n   * @param {DeterministicView} view - The view to be rendered\r\n   * @returns {void}\r\n   */\r\n  renderView(view) {\r\n    /**\r\n     * A view is going to be rendered\r\n     * @event DeterministicViewEventEmitter#willRenderView\r\n     * @type {DeterministicView}\r\n     */\r\n    eventEmitter.trigger('willRenderView', view);\r\n\r\n    /**\r\n     * Warn about potential bug\r\n     * @event DeterministicViewEventEmitter#warning\r\n     * @type {Error}\r\n     */\r\n    if (!BaseView.getParent(view) && !view.el.parentNode) {\r\n      // All root `DeterministicView`s should have their `el` attached to DOM\r\n      // tree. Otherwise, it could be an orphan view which never be attached.\r\n      eventEmitter.trigger(\r\n        'warning',\r\n        _.extend(new Error('Unexpected orphan view'), { view })\r\n      );\r\n    }\r\n\r\n    // Detach all children views, to protect the child views from being damaged\r\n    // by the DeterministicView#renderTrunk() method\r\n    const elTemp = document.createElement('DIV');\r\n    view.$el.children().appendTo(elTemp);\r\n\r\n    // Render the view\r\n    view.renderTrunk();\r\n\r\n    // Index the placeholders\r\n    const placeholders = {};\r\n\r\n    view.$('[data-ref]').each((index, el) => {\r\n      const { ref } = el.dataset;\r\n      placeholders[ref] = el;\r\n      if (!BaseView.getChild(view, ref)) {\r\n        // Found a placeholder cannot be fulfilled with a child view. It usually\r\n        // indicates a typo in the template\r\n        eventEmitter.trigger(\r\n          'warning',\r\n          _.extend(new Error('Dangling placeholder'), { view, ref })\r\n        );\r\n      }\r\n    });\r\n\r\n    // Attach the child views which have placeholders rendered\r\n    // Remove the child views without placeholder\r\n    _.each(BaseView.getChildrenRefs(view), (ref) => {\r\n      const child = BaseView.getChild(view, ref);\r\n\r\n      if (_.has(placeholders, ref)) {\r\n        replaceElement(child.el, placeholders[ref]);\r\n      } else {\r\n        child.remove();\r\n      }\r\n    });\r\n\r\n    removeElement(elTemp);\r\n\r\n    /**\r\n     * A view has been completely rendered\r\n     * @event DeterministicViewEventEmitter#willRenderView\r\n     * @type {DeterministicView}\r\n     */\r\n    eventEmitter.trigger('didRenderView', view);\r\n\r\n    /**\r\n     * The view has been completely rendered\r\n     * @event DeterministicView#rendered\r\n     */\r\n    view.trigger('rendered');\r\n  }\r\n\r\n  /**\r\n   * Render an animation frame\r\n   * @private\r\n   * @returns {void}\r\n   */\r\n  renderFrame() {\r\n    const frame = this.animationFrame;\r\n    const views = this.renderQueue;\r\n\r\n    this.animationFrame = null;\r\n    this.renderQueue = null;\r\n\r\n    /**\r\n     * A new animation frame will be rendered\r\n     * @event DeterministicViewEventEmitter#willRenderFrame\r\n     * @type {number}\r\n     */\r\n    eventEmitter.trigger('willRenderFrame', frame);\r\n\r\n    views.forEach(view => BaseView.isValid(view) && this.renderView(view));\r\n\r\n    /**\r\n     * An animation frame has been rendered\r\n     * @event DeterministicViewEventEmitter#didRenderFrame\r\n     * @type {number}\r\n     */\r\n    eventEmitter.trigger('didRenderFrame', frame);\r\n  }\r\n\r\n  /**\r\n   * Schedule rendering a view in next animation frame\r\n   * @param {DeterministicView} view - The view to render\r\n   * @returns {void}\r\n   */\r\n  scheduleRenderView(view) {\r\n    if (view.options && view.options.renderInSync) {\r\n      // Allow some views render without requestAnimationFrame,\r\n      // so that they can be rendered in the background tab.\r\n      this.renderView(view);\r\n      return;\r\n    }\r\n\r\n    if (!this.renderQueue) {\r\n      this.renderQueue = new Set();\r\n    }\r\n\r\n    this.renderQueue.add(view);\r\n\r\n    if (!this.animationFrame) {\r\n      this.animationFrame = requestAnimationFrame(this.renderFrame.bind(this));\r\n    }\r\n  }\r\n}\r\n","/**\r\n * @file recover the focus after views being updated\r\n */\r\nimport { DeterministicView } from './deterministic-view';\r\n\r\n// The focus state, keep track of the focused view and element\r\nconst focus = {\r\n  // The view having focus\r\n  view: null,\r\n\r\n  // The data-focus-id of the focused element\r\n  id: null,\r\n};\r\n\r\n// Before rendering a new animation frame, update the focus state.\r\nDeterministicView.eventEmitter.on('willRenderFrame', () => {\r\n  const { activeElement } = document;\r\n\r\n  focus.view = DeterministicView.getViewForElement(activeElement);\r\n  focus.id = (activeElement && activeElement.dataset && activeElement.dataset.focusId) || null;\r\n});\r\n\r\n// After rendering an animation frame, locate the element described by the focus\r\n// state, then activate it\r\nDeterministicView.eventEmitter.on('didRenderFrame', () => {\r\n  if (DeterministicView.isValid(focus.view) && focus.id) {\r\n    const selFocus = `[data-focus-id=${JSON.stringify(focus.id)}]`;\r\n    const elFocus = focus.view.$(selFocus).get(0);\r\n\r\n    if (elFocus && elFocus !== document.activeElement) {\r\n      elFocus.focus();\r\n    }\r\n  }\r\n});\r\n","\r\n\r\nexport { DeterministicWrapperView } from './src/deterministic-wrapper-view';\r\nexport { DeterministicViewForHtml } from './src/deterministic-wrapper-for-html';\r\nexport { DeterministicViewForBackBoneView } from './src/deterministic-wrapper-for-backbone-view';\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\n\r\n/**\r\n * @typedef {Object} DeterministicWrapperViewState\r\n * @property describe your properties in the state here\r\n */\r\n\r\nexport class DeterministicWrapperView extends DeterministicView {\r\n  initialize(options) {\r\n    this.view = this.viewFactory(options);\r\n    this.listenTo(this.view, 'all', this.trigger);\r\n    this.rendered = false;\r\n  }\r\n\r\n  viewFactory(/* options */) {\r\n    throw new Error('Unimplemented view factory');\r\n  }\r\n\r\n  renderTrunk() {\r\n    if (!this.rendered) {\r\n      this.rendered = true;\r\n      this.view.render();\r\n    }\r\n\r\n    this.$el.append(this.view.$el);\r\n    return this;\r\n  }\r\n\r\n  remove() {\r\n    this.view.remove();\r\n    return super.remove();\r\n  }\r\n\r\n  /**\r\n   * Set state of the view.\r\n   * Since this is a wrapper view, the state should be propagated to the wrapped view.\r\n   * @param {Object} state - The new state\r\n   * @returns {DeterministicWrapperView} - The view itself\r\n   */\r\n  setState(state) {\r\n    super.setState(state);\r\n    if (this.view && _.isFunction(this.view.setState)) {\r\n      this.view.setState(state);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Class name of the root element\r\n   * @type {string}\r\n   * @override\r\n   */\r\n  get className() { return 'deterministic-wrapper-view'; }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\n\r\n/**\r\n * Deterministic view for html content,\r\n *  generate deterministic view for input backbone view,\r\n *  so it can be used in the deterministic-only packages\r\n */\r\nexport class DeterministicViewForHtml extends DeterministicView {\r\n  initialize({ html }) {\r\n    this.setState({ html });\r\n  }\r\n\r\n  template() {\r\n    return this.model.get('html');\r\n  }\r\n}\r\n","import { DeterministicWrapperView } from './deterministic-wrapper-view';\r\n\r\n\r\n/**\r\n * Deterministic wrapper view for backbone view,\r\n *  generate deterministic view for input backbone view,\r\n *  so that it can be used in the deterministic-only packages\r\n */\r\nexport class DeterministicViewForBackBoneView extends DeterministicWrapperView {\r\n  viewFactory({ view }) {\r\n    return view;\r\n  }\r\n}\r\n","\r\n\r\nexport { Dialog } from './src/index';\r\nexport { decorate } from './src/dialog-decorator/dialog-decorator';\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport 'bootstrap';\r\nimport Backbone from 'backbone';\r\nimport template from './template/index.pug';\r\n\r\n/**\r\n * a button of dialog\r\n * @typedef {object} button\r\n * @param {string} text - text of button\r\n * @param {string} name - name of button, will trigger event 'click button.name' when click button\r\n * @param {string} class - customize class of button\r\n */\r\n\r\nexport class Dialog extends Backbone.View {\r\n  /**\r\n   * override initialize of backbone view\r\n   * @param {object} options - options\r\n   * @param {string} options.id - set custom dialog id. If not set, a unique value will be set.\r\n   * @param {string} options.backdrop - controls presence of a backdrop. Allowed values: true\r\n   * , false (no backdrop), 'static'(default) - backdrop is present but modal window is not\r\n   * closed when clicking outside of the modal window.\r\n   * @param {string} options.keyboard - Allowed values: false(default), true - closes the modal\r\n   * when escape key is pressed\r\n   * @param {boolean} options.showHeader - flag for whether or not to show .modal-header\r\n   * @param {boolean} options.showBody - flag for whether or not to show .modal-body for scenarios\r\n   * where contentView will never be set.\r\n   * @returns {undefined} - no return\r\n   */\r\n  initialize({\r\n    // eslint-disable-next-line no-unused-vars\r\n    id, // it will be auto-set by backbone\r\n    backdrop,\r\n    keyboard,\r\n    showHeader = true,\r\n    showBody = true,\r\n    showCloseButton = true,\r\n  } = {}) {\r\n    this.contentView = null;\r\n    this.backdrop = _.isBoolean(backdrop) ? backdrop : 'static';\r\n    this.keyboard = _.isBoolean(keyboard) ? keyboard : false;\r\n    this.showBody = showBody;\r\n    this.showHeader = showHeader;\r\n    this.showCloseButton = showCloseButton;\r\n  }\r\n\r\n  /**\r\n   * define events and correspond handler in Dialog\r\n   */\r\n  get events() {\r\n    return {\r\n      'click .modal-footer button': 'buttonClicked',\r\n      'hidden.bs.modal': 'remove',\r\n    };\r\n  }\r\n\r\n  /**\r\n   * dialog Id\r\n   * @param {string} dialogId - set dialog's id\r\n   */\r\n  set id(dialogId) {\r\n    if (dialogId) {\r\n      this.dialogId = dialogId;\r\n    }\r\n  }\r\n\r\n  get id() {\r\n    if (!this.dialogId) {\r\n      this.dialogId = _.uniqueId('dialog-');\r\n    }\r\n    return this.dialogId;\r\n  }\r\n\r\n  /**\r\n   * handle click button event\r\n   * @param {Event} e - jquery event\r\n   * @returns {Undefined} -\r\n   */\r\n  buttonClicked(e) {\r\n    const name = $(e.target).attr('button-name');\r\n    this.trigger('clickedButton', name);\r\n  }\r\n\r\n  /**\r\n   * set content of dialog\r\n   * @param {Backbone.View} view - view instance\r\n   * @returns {Dialog} - return Dialog view itself\r\n   */\r\n  setContent(view) {\r\n    if (this.contentView) {\r\n      this.contentView.remove();\r\n    }\r\n    this.contentView = view;\r\n\r\n    if (this.el.parentNode) {\r\n      this.contentView.render();\r\n      this.$('.modal-body').append(this.contentView.el);\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * set state of view\r\n   * @param {object} state - state of dialog\r\n   * @param {string} state.title - title of dialog\r\n   * @param {button[]} state.buttons - button list of dialog\r\n   * @returns {Dialog} - return Dialog view itself\r\n   */\r\n  setState(state) {\r\n    this.title = state.title;\r\n    this.buttons = state.buttons;\r\n    return this;\r\n  }\r\n\r\n  render() {\r\n    this.$el.html(template({\r\n      title: this.title,\r\n      id: this.id,\r\n      buttons: this.buttons || [],\r\n      showHeader: this.showHeader && (this.title || this.showCloseButton),\r\n      showCloseButton: this.showCloseButton,\r\n      showBody: this.showBody,\r\n    }));\r\n\r\n    if (this.contentView) {\r\n      this.contentView.render();\r\n      this.$('.modal-body').append(this.contentView.el);\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * show dialog\r\n   * @returns {Dialog} - return dialog itself\r\n   */\r\n  show() {\r\n    this.render();\r\n\r\n    this.$('.modal').modal({\r\n      backdrop: this.backdrop,\r\n      keyboard: this.keyboard,\r\n    });\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * remove view in dialog and itself\r\n   * @returns {Dialog} return itself\r\n   */\r\n  remove() {\r\n    this.trigger('willClose');\r\n    if (this.contentView) {\r\n      this.contentView.remove();\r\n      this.contentView = null;\r\n    }\r\n    this.$('.modal').modal('hide');\r\n    return super.remove();\r\n  }\r\n}\r\n","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (buttons, id, showBody, showCloseButton, showHeader, title) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"modal\\\"\"+\" tabindex=\\\"-1\\\" role=\\\"dialog\\\"\"+pug.attr(\"aria-labelledby\", 'shared-component-dialog-title-' + id, true, true)) + \"\\u003E\\u003Cdiv class=\\\"modal-dialog\\\"\\u003E\\u003Cdiv class=\\\"modal-content\\\"\\u003E\";\nif (showHeader) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-header\\\"\\u003E\";\nif (showCloseButton) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"\\u003E\\u003Cspan aria-hidden=\\\"true\\\"\\u003E&times;\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\";\n}\nif (title) {\npug_html = pug_html + \"\\u003Ch4\" + (\" class=\\\"modal-title\\\"\"+pug.attr(\"id\", 'shared-component-dialog-title-' + id, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh4\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-empty-header\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (showBody) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (buttons.length > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-footer\\\"\\u003E\";\n// iterate buttons\n;(function(){\n  var $$obj = buttons;\n  if ('number' == typeof $$obj.length) {\n      for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n        var button = $$obj[pug_index0];\nvar cls = button.class || ''\npug_html = pug_html + \"\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-default\",cls], [false,false,true]), false, true)+\" type=\\\"button\\\"\"+pug.attr(\"button-name\", button.name, true, true)+pug.attr(\"disabled\", button.disabled, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = button.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n      }\n  } else {\n    var $$l = 0;\n    for (var pug_index0 in $$obj) {\n      $$l++;\n      var button = $$obj[pug_index0];\nvar cls = button.class || ''\npug_html = pug_html + \"\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-default\",cls], [false,false,true]), false, true)+\" type=\\\"button\\\"\"+pug.attr(\"button-name\", button.name, true, true)+pug.attr(\"disabled\", button.disabled, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = button.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n    }\n  }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"buttons\" in locals_for_with?locals_for_with.buttons:typeof buttons!==\"undefined\"?buttons:undefined,\"id\" in locals_for_with?locals_for_with.id:typeof id!==\"undefined\"?id:undefined,\"showBody\" in locals_for_with?locals_for_with.showBody:typeof showBody!==\"undefined\"?showBody:undefined,\"showCloseButton\" in locals_for_with?locals_for_with.showCloseButton:typeof showCloseButton!==\"undefined\"?showCloseButton:undefined,\"showHeader\" in locals_for_with?locals_for_with.showHeader:typeof showHeader!==\"undefined\"?showHeader:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport '@bingads-webui/kendo/kendo.window';\r\n\r\nconst windowDefaults = {\r\n  modal: true,\r\n  maxWidth: 600,\r\n  resizable: false,\r\n  visible: false,\r\n  title: '',\r\n};\r\n\r\nfunction applyIfExists(func, context, args) {\r\n  if (_.isFunction(func)) {\r\n    const parameters = _.toArray({ 0: args });\r\n    func.apply(context, parameters);\r\n  }\r\n}\r\n\r\n/**\r\n * decorate view function\r\n * @param {object} view - the decorated view\r\n * @param {Object} dialogOptions - dialog options\r\n * @returns {Object} DecoratedView - view after decorated\r\n */\r\nexport function decorate(view, dialogOptions) {\r\n  class DecoratedView extends view {\r\n    initialize(options) {\r\n      this.options = options;\r\n      this.destroy = this.remove;\r\n      if (!_.has(view.prototype, 'render')) {\r\n        this.show();\r\n      }\r\n      applyIfExists(view.prototype.initialize, this, this.options);\r\n    }\r\n\r\n    render() {\r\n      this.show();\r\n      applyIfExists(view.prototype.render, this, this.options);\r\n      this.setPosition();\r\n\r\n      return this;\r\n    }\r\n\r\n    setPosition() {\r\n      if (this.dialogOptions.position === 'center') {\r\n        this.center();\r\n      }\r\n    }\r\n\r\n    show() {\r\n      const options = _.defaults({\r\n        title: this.options.title,\r\n        autoFocus: true,\r\n        animation: false,\r\n      }, this.options.dialogOptions, dialogOptions, windowDefaults);\r\n\r\n      if (!this.window) {\r\n        this.window = this.$el\r\n          .kendoWindow(options)\r\n          .data('kendoWindow');\r\n      }\r\n\r\n      this.window.wrapper.attr('role', 'dialog');\r\n      this.window.wrapper.attr('aria-label', options.title);\r\n      this.window.wrapper.addClass('legacy-kendo-ui-dialog');\r\n      this.window.center();\r\n      this.window.open();\r\n\r\n      const title = $('.k-window-title', this.window.wrapper);\r\n      if (options.titleHeadingLevel) {\r\n        title.attr({\r\n          role: 'heading',\r\n          'aria-level': options.titleHeadingLevel,\r\n        });\r\n      }\r\n\r\n      const closeButton = $('.k-window-action.k-link', this.window.wrapper);\r\n      closeButton.addClass('clickable');\r\n      closeButton.attr('aria-label', options.closeButtonAriaLabel);\r\n\r\n      const closeIcon = $('span.k-icon.k-i-close', this.window.wrapper);\r\n      closeIcon.html('').click(_.bind(this.remove, this));\r\n\r\n      this.window.element.attr('tabindex', -1);\r\n\r\n      _.each(options.dialogClasses, (className) => {\r\n        this.window.element.addClass(className);\r\n      }, this);\r\n\r\n      if (options.zindex) {\r\n        this.$el.css('z-index', options.zindex);\r\n      }\r\n\r\n      if (!_.isEmpty(options.popupFront)) {\r\n        const element = $(options.popupFront);\r\n        if (element && element.length > 0) {\r\n          const topzindex = parseInt(element.css('z-index'), 10) + 2;\r\n          const kwindow = $('.k-window');\r\n          const koverlay = $('.k-overlay');\r\n\r\n          if (kwindow && kwindow.length > 0) {\r\n            kwindow.css('z-index', topzindex);\r\n          }\r\n          if (koverlay && koverlay.length > 0) {\r\n            koverlay.css('z-index', topzindex - 1);\r\n          }\r\n        }\r\n      }\r\n\r\n      this.dialogOptions = options;\r\n\r\n      return this;\r\n    }\r\n\r\n    center() {\r\n      if (this.window) {\r\n        this.window.center();\r\n      }\r\n      return this;\r\n    }\r\n\r\n    hide() {\r\n      if (this.window) {\r\n        this.window.close();\r\n      }\r\n      return this;\r\n    }\r\n\r\n    remove(e) {\r\n      if (e) {\r\n        e.preventDefault();\r\n      }\r\n\r\n      applyIfExists(view.prototype.remove, this, this.options);\r\n      applyIfExists(view.prototype.destroy, this, this.options);\r\n\r\n      if (this.window) {\r\n        this.window.close();\r\n        this.window.destroy();\r\n        this.window = null;\r\n      }\r\n    }\r\n  }\r\n  return DecoratedView;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__268__;","module.exports = __WEBPACK_EXTERNAL_MODULE__34__;","module.exports = __WEBPACK_EXTERNAL_MODULE__43__;","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","import { iframeDownload, useIframeDownload, withIframeDownload } from './src/iframe-download';\r\nimport { download } from './src/index';\r\nimport { downloadify, downloadifyBlob } from './src/downloadify';\r\n\r\n\r\nexport {\r\n  iframeDownload,\r\n  useIframeDownload,\r\n  withIframeDownload,\r\n  download,\r\n  downloadifyBlob,\r\n  downloadify\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nlet ifm;\r\n\r\n/**\r\n * iframeDownload\r\n * When to use:\r\n *   the resource to download is cross-origin without CORS header\r\n * @param {string} url - url to download\r\n * @param {string} statusHandler - callback function to check file is loaded\r\n * @returns {void}\r\n */\r\nexport function iframeDownload(url, statusHandler) {\r\n  if (!ifm) {\r\n    ifm = document.createElement('iframe');\r\n    ifm.style.display = 'none';\r\n    if (statusHandler) {\r\n      const timer = setInterval(() => {\r\n        try {\r\n          const iframeDoc = ifm.contentDocument || ifm.contentWindow.document;\r\n          if (iframeDoc.readyState === 'complete') {\r\n            clearInterval(timer);\r\n            statusHandler(iframeDoc.readyState);\r\n          }\r\n          clearInterval(timer);\r\n        } catch (e) {\r\n          clearInterval(timer);\r\n          statusHandler('fail', e);\r\n        }\r\n      }, 500);\r\n    }\r\n\r\n    document.body.appendChild(ifm);\r\n  }\r\n  ifm.src = url;\r\n}\r\n\r\nexport function useIframeDownload() {\r\n  const instrumentation = useContext(InstrumentationContext);\r\n  const logger = instrumentation.createScenarioAndActivity({\r\n    scenarioName: 'iframeDownloadScenario',\r\n    activityName: 'iframeDownloadActivity',\r\n  }).activity;\r\n\r\n  return function iframeDownloadWithMonitoring(url) {\r\n    iframeDownload(url, (status, err) => {\r\n      if (status === 'complete') {\r\n        logger.trace(`file download completed.status:${status},URL:${url}`);\r\n      } else {\r\n        logger.error(`file download failed.status:${status},URL:${url} error:${JSON.stringify(err)}`);\r\n      }\r\n    });\r\n  };\r\n}\r\n\r\nexport function withIframeDownload(Comp) {\r\n  return function WrappedComp(props) {\r\n    const iframeDownloadWithMonitoring = useIframeDownload();\r\n    return (<Comp {...props} iframeDownload={iframeDownloadWithMonitoring} />);\r\n  };\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","import Promise from 'bluebird';\r\nimport URI from 'urijs';\r\nimport { downloadifyBlob } from './downloadify';\r\n\r\n/**\r\n * download\r\n * When to use:\r\n *   the resource to download is on the same origin, or with CORS header\r\n * Why to use:\r\n *   If a resource has header Content-Type: text/csv, Safari would open a new tab for the data\r\n *   instead of download it. This approach aligned download to downloadify which works fine.\r\n * @param {string} url - url to download\r\n * @param {string} fileName - name of the resource to download\r\n * @returns {promise} - resolve when download finishes\r\n */\r\nexport function download(url, fileName = URI(url).filename()) {\r\n  return new Promise((resolve) => {\r\n    const xhr = new XMLHttpRequest();\r\n    xhr.open('GET', url);\r\n    xhr.responseType = 'blob';\r\n    xhr.onload = () => {\r\n      downloadifyBlob(xhr.response, fileName);\r\n      resolve();\r\n    };\r\n    xhr.send();\r\n  });\r\n}\r\n","function downloadInIEBrowser(fileName, blob) {\r\n  navigator.msSaveBlob(blob, fileName);\r\n}\r\n\r\nfunction downloadInOtherBrowsers(fileName, blob) {\r\n  const downloadLink = window.document.createElement('a');\r\n  downloadLink.download = fileName;\r\n  downloadLink.href = window.URL.createObjectURL(blob);\r\n  document.body.appendChild(downloadLink);\r\n  downloadLink.click();\r\n  document.body.removeChild(downloadLink);\r\n}\r\n\r\nexport function downloadifyBlob(blob, fileName) {\r\n  if (navigator.msSaveBlob) {\r\n    downloadInIEBrowser(fileName, blob);\r\n  } else {\r\n    downloadInOtherBrowsers(fileName, blob);\r\n  }\r\n}\r\n\r\nexport function downloadify(fileName, content, type) {\r\n  const blob = new Blob([content], type);\r\n  downloadifyBlob(blob, fileName);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__178__;","\r\n\r\nexport { DraggableList } from './src/draggable-list';\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { KnockoutView } from '@bingads-webui/knockout-view';\r\nimport { helpers } from '@bingads-webui/deterministic-view';\r\nimport { restoreScrollBarPosition } from '@bingads-webui/restore-scroll-bar';\r\n\r\nimport DraggableListTemplate from './template.pug';\r\n\r\nconst { updateView, ensureChildView } = helpers;\r\n\r\nconst KEYS = {\r\n  SpaceBar: ' ',\r\n  ArrowUp: 'ArrowUp',\r\n  ArrowDown: 'ArrowDown',\r\n  ArrowRight: 'ArrowRight',\r\n};\r\n\r\nconst scrollPixelSpeed = 3;\r\n\r\nfunction rotate(contents, indexFrom, indexTo, tempState = false) {\r\n  const contentsToUse = contents || [];\r\n  const indexFromToUse = indexFrom || 0;\r\n  const indexToToUse = indexTo || 0;\r\n  const content = _.defaults({\r\n    tempState,\r\n  }, contentsToUse[indexFromToUse]);\r\n\r\n  if (indexFromToUse < indexToToUse) {\r\n    return _.flatten([\r\n      contentsToUse.slice(0, indexFromToUse),\r\n      contentsToUse.slice(indexFromToUse + 1, indexToToUse + 1),\r\n      content,\r\n      contentsToUse.slice(indexToToUse + 1),\r\n    ]);\r\n  }\r\n\r\n  if (indexFromToUse > indexToToUse) {\r\n    return _.flatten([\r\n      contentsToUse.slice(0, indexToToUse),\r\n      content,\r\n      contentsToUse.slice(indexToToUse, indexFromToUse),\r\n      contentsToUse.slice(indexFromToUse + 1),\r\n    ]);\r\n  }\r\n\r\n  return contents;\r\n}\r\n\r\nclass DraggableListViewModel {\r\n  constructor() {\r\n    this.draggingTo = ko.observable(-1);\r\n  }\r\n}\r\n\r\n/**\r\n * The draggable list component\r\n *\r\n * @class DraggableList\r\n * @param {Object} options - DraggableList view config\r\n * @param {Object} options.itemViewFactory -\r\n *    The factory method or constructor of the draggable list child view\r\n *    - If the prototype of itemViewFactory is instance of DeterministicView, treat\r\n *      it as a construstor.\r\n *    - Otherwise, treat it as a factory method.\r\n * @param {fuction} options.afterDrop - a optional callback function to run after dropping\r\n * @param {fuction} options.getAnnouncement - an optional callback function to get announcement\r\n *                                            for a11y reading\r\n */\r\nexport class DraggableList extends KnockoutView {\r\n  initialize(options) {\r\n    super.initialize(options);\r\n    this.uniqueId = _.uniqueId('draggable-list-');\r\n    this.itemViewFactory = options.itemViewFactory;\r\n    this.afterDrop = options.afterDrop || _.noop;\r\n    this.ariaLabel = options.ariaLabel;\r\n    this.getAnnouncement = options.getAnnouncement || _.noop;\r\n    restoreScrollBarPosition(this, '.draggable-list');\r\n    this.documentDragoverScrollCallback = this.documentDragoverScrollCallback.bind(this);\r\n  }\r\n\r\n  get ViewModel() { return DraggableListViewModel; }\r\n\r\n  get className() {\r\n    return 'draggable-list-view';\r\n  }\r\n\r\n  get template() { return DraggableListTemplate; }\r\n\r\n  get events() {\r\n    return {\r\n      'dragover .draggable-list__item-draggable': 'onDragover',\r\n      'dragstart .draggable-list__item-draggable': 'onDragstart',\r\n      'drop .draggable-list__item-draggable': 'onDrop',\r\n      'dragend .draggable-list__item-draggable': 'onDragEnd',\r\n      'mousedown .draggable-list__item-draggable': 'onMouseDown',\r\n      'keydown .draggable-list__item-draggable': 'onKeyDown',\r\n      'focusRequestFromChildren .draggable-list__item-draggable': 'onFocusRequestFromChildren',\r\n    };\r\n  }\r\n\r\n  setState({\r\n    lockedItems = [],\r\n    draggableItems = [],\r\n    draggingTo = -1,\r\n  } = {}) {\r\n    _.each(lockedItems, (config, index) => {\r\n      ensureChildView(this, `locked-list-item-${index}`, this.itemViewFactory).setState(config);\r\n    });\r\n    _.each(draggableItems, (config, index) => {\r\n      ensureChildView(this, `draggable-list-item-${index}`, this.itemViewFactory).setState(config);\r\n    });\r\n\r\n    this.model.set({\r\n      lockedItemsLength: lockedItems.length,\r\n      draggableItemsLength: draggableItems.length,\r\n      uniqueId: this.uniqueId,\r\n    });\r\n\r\n    this.viewModel.draggingTo(draggingTo);\r\n\r\n    return this;\r\n  }\r\n\r\n  getState() {\r\n    const lockedItemsLength = this.model.get('lockedItemsLength');\r\n    const draggableItemsLength = this.model.get('draggableItemsLength');\r\n\r\n    const lockedItems = _.times(lockedItemsLength, index => this.getChild(`locked-list-item-${index}`).getState());\r\n    const draggableItems = _.times(draggableItemsLength, index => this.getChild(`draggable-list-item-${index}`).getState());\r\n\r\n    return {\r\n      lockedItems,\r\n      draggableItems,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * When dragging item out of the list, the list should scroll if possiable.\r\n   * detect the relative position of mouse and the list.\r\n   *\r\n   * @param {DragEvent} e - drag event\r\n   * @returns {void}\r\n   */\r\n  documentDragoverScrollCallback(e) {\r\n    const listElement = this.el.querySelector('.draggable-list');\r\n    const domRect = listElement.getBoundingClientRect();\r\n\r\n    const mousePageY = e.pageY;\r\n    const scrollTop = window.scrollY || document.documentElement.scrollTop;\r\n    const elementPageTop = domRect.top + scrollTop;\r\n    const elementPageBottom = domRect.bottom + scrollTop;\r\n\r\n    if (mousePageY <= elementPageTop) {\r\n      this.scrollStart({ top: -scrollPixelSpeed });\r\n    } else if (mousePageY >= elementPageBottom) {\r\n      this.scrollStart({ top: scrollPixelSpeed });\r\n    } else {\r\n      this.scrollStop();\r\n    }\r\n  }\r\n\r\n  onDragstart(e) {\r\n    if (e.originalEvent.dataTransfer) {\r\n      // firefox need to setData to make drag work\r\n      e.originalEvent.dataTransfer.setData('Text', `item:${e.target.dataset.index}` || 'item:0');\r\n    }\r\n\r\n    this.draggableItems = this.getState().draggableItems;\r\n    this.indexFrom = parseInt(e.target.dataset.index, 10);\r\n    this.scrollDetectStart();\r\n  }\r\n\r\n  get isDragging() {\r\n    return this.indexFrom !== undefined;\r\n  }\r\n\r\n  onDragover(e) {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const targetItem = this.$(e.target).closest(`ul#${this.uniqueId} > li.draggable-list__item-draggable`)[0];\r\n    if (targetItem) {\r\n      const indexTo = parseInt(targetItem.dataset.index, 10);\r\n      updateView(this, {\r\n        draggableItems: rotate(this.draggableItems, this.indexFrom, indexTo, true),\r\n        draggingTo: indexTo,\r\n      });\r\n    }\r\n  }\r\n\r\n  onDrop(e) {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const targetItem = this.$(e.target).closest(`ul#${this.uniqueId} > li.draggable-list__item-draggable`)[0];\r\n    if (targetItem) {\r\n      const indexTo = parseInt(targetItem.dataset.index, 10);\r\n      updateView(this, {\r\n        draggableItems: rotate(this.draggableItems, this.indexFrom, indexTo),\r\n      });\r\n      this.moveFocusTo(indexTo, this.indexFrom);\r\n    }\r\n\r\n    delete this.indexFrom;\r\n    delete this.draggableItems;\r\n  }\r\n\r\n  onDragEnd(e) {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    this.viewModel.draggingTo(-1);\r\n    this.scrollDetectStop();\r\n    this.afterDrop();\r\n  }\r\n\r\n  onMouseDown(e) {\r\n    const targetItem = this.$(e.currentTarget);\r\n\r\n    if (targetItem.attr('tabindex') !== '0') {\r\n      this.indexFrom = -1;\r\n\r\n      this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable[class*='selected']`).removeClass('selected').removeAttr('aria-selected');\r\n      this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable[tabindex='0']`).attr('tabindex', '-1');\r\n      targetItem.attr('tabindex', '0');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * control list to scroll\r\n   *\r\n   * @param {ScrollToOptions} options scroll options\r\n   * @returns {void}\r\n   */\r\n  scroll(options) {\r\n    const listElement = this.el.querySelector('.draggable-list');\r\n    listElement.scrollBy(options);\r\n  }\r\n\r\n  /**\r\n   * start scroll for every `intervalMilliSeconds` ms if no scrolling.\r\n   *\r\n   * @param {ScrollToOptions} options scroll options\r\n   * @param {number} intervalMilliSecond how long before next scroll, default is 16\r\n   * @returns {void}\r\n   */\r\n  scrollStart(options, intervalMilliSecond = 16) {\r\n    if (this.scrollTimerId !== undefined) {\r\n      return;\r\n    }\r\n    const timerId = setInterval(() => {\r\n      this.scroll(options);\r\n    }, intervalMilliSecond);\r\n    this.scrollTimerId = timerId;\r\n  }\r\n\r\n  scrollStop() {\r\n    if (this.scrollTimerId) {\r\n      clearInterval(this.scrollTimerId);\r\n      this.scrollTimerId = undefined;\r\n    }\r\n  }\r\n\r\n  scrollDetectStart() {\r\n    document.addEventListener('dragover', this.documentDragoverScrollCallback);\r\n  }\r\n\r\n  scrollDetectStop() {\r\n    this.scrollStop();\r\n    document.removeEventListener('dragover', this.documentDragoverScrollCallback);\r\n  }\r\n\r\n  /**\r\n   * If children bubble this event, focus on its parent list-item.\r\n   *\r\n   * @param {KeyboardEvent} e - custom event\r\n   * @returns {void}\r\n   */\r\n  onKeyDown(e) {\r\n    if (e.target !== e.currentTarget) {\r\n      return;\r\n    }\r\n\r\n    const acceptableKeysReg = new RegExp(`(${Object.values(KEYS).join('|')})`);\r\n    const triggerKey = e.key;\r\n    if (!acceptableKeysReg.test(triggerKey)) {\r\n      return;\r\n    }\r\n\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n\r\n    const targetItem = this.$(e.target);\r\n    const index = parseInt(e.target.dataset.index, 10);\r\n    switch (triggerKey) {\r\n      case KEYS.SpaceBar:\r\n        if (targetItem.hasClass('selected')) {\r\n          targetItem.removeClass('selected');\r\n          targetItem.removeAttr('aria-selected');\r\n          _.defer(() => {\r\n            this.announce({\r\n              action: 'DropItem',\r\n              positionFrom: this.indexFrom,\r\n              positionTo: index,\r\n            });\r\n            this.indexFrom = -1;\r\n          });\r\n        } else {\r\n          this.indexFrom = index;\r\n          targetItem.addClass('selected');\r\n          targetItem.attr('aria-selected', 'true');\r\n          _.defer(() => this.announce({\r\n            action: 'LiftItem',\r\n            positionFrom: this.indexFrom,\r\n          }));\r\n        }\r\n        break;\r\n      case KEYS.ArrowDown:\r\n        this.draggableItems = this.getState().draggableItems;\r\n        if (index < this.draggableItems.length - 1) {\r\n          if (this.indexFrom >= 0) {\r\n            updateView(this, {\r\n              draggableItems: rotate(this.draggableItems, index, index + 1),\r\n            });\r\n            this.moveFocusTo(index + 1, index, true);\r\n            _.defer(() => this.announce({\r\n              action: 'MoveItem',\r\n              positionFrom: this.indexFrom,\r\n              positionTo: index + 1,\r\n            }));\r\n          } else {\r\n            this.moveFocusTo(index + 1, index);\r\n          }\r\n        }\r\n        break;\r\n      case KEYS.ArrowUp:\r\n        this.draggableItems = this.getState().draggableItems;\r\n        if (index > 0) {\r\n          if (this.indexFrom >= 0) {\r\n            updateView(this, {\r\n              draggableItems: rotate(this.draggableItems, index, index - 1),\r\n            });\r\n            this.moveFocusTo(index - 1, index, true);\r\n            _.defer(() => this.announce({\r\n              action: 'MoveItem',\r\n              positionFrom: this.indexFrom,\r\n              positionTo: index - 1,\r\n            }));\r\n          } else {\r\n            this.moveFocusTo(index - 1, index);\r\n          }\r\n        }\r\n        break;\r\n      case KEYS.ArrowRight:\r\n        this.getListItems()\r\n          .eq(index)\r\n          .find('.focusable')\r\n          .trigger('focus');\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * If children bubble this event, focus on its parent list-item.\r\n   *\r\n   * @param {Event} e - custom event\r\n   * @returns {void}\r\n   */\r\n  onFocusRequestFromChildren(e) {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const index = parseInt(e.currentTarget.dataset.index, 10);\r\n    this.moveFocusTo(index);\r\n  }\r\n\r\n  getListItems() {\r\n    return this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable`);\r\n  }\r\n\r\n  moveFocusTo(indexTo, indexFrom, selected = false) {\r\n    const items = this.getListItems();\r\n    if (indexFrom !== undefined) {\r\n      const itemFrom = items.eq(indexFrom);\r\n      itemFrom.attr('tabindex', '-1');\r\n      if (selected) {\r\n        itemFrom.removeClass('selected');\r\n        itemFrom.removeAttr('aria-selected');\r\n      }\r\n    }\r\n    const itemTo = items.eq(indexTo);\r\n    if (selected) {\r\n      itemTo.addClass('selected');\r\n      itemTo.attr('aria-selected', 'true');\r\n    }\r\n    itemTo.attr('tabindex', '0');\r\n    itemTo.trigger('focus');\r\n  }\r\n\r\n  announce({\r\n    action,\r\n    positionFrom,\r\n    positionTo,\r\n  }) {\r\n    const liveRegion = this.$(`ul#${this.uniqueId} + .live-region`);\r\n    liveRegion.text(this.getAnnouncement({\r\n      action,\r\n      positionFrom,\r\n      positionTo,\r\n    }));\r\n  }\r\n}\r\n","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cul\" + (\" class=\\\"draggable-list\\\"\"+pug.attr(\"id\", model.uniqueId, true, true)+\" role=\\\"listbox\\\"\"+pug.attr(\"aria-label\", view.ariaLabel, true, true)) + \"\\u003E\";\nvar index = 0;\nwhile (index < model.lockedItemsLength) {\npug_html = pug_html + \"\\u003Cli class=\\\"draggable-list-item draggable-list__item-locked\\\" role=\\\"option\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", `locked-list-item-${index++}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\";\n}\nindex = 0;\nwhile (index < model.draggableItemsLength) {\npug_html = pug_html + \"\\u003Cli\" + (\" class=\\\"draggable-list-item draggable-list__item-draggable\\\"\"+\" draggable=\\\"true\\\"\"+pug.attr(\"data-index\", index, true, true)+pug.attr(\"tabindex\", (index === 0 ? 0 : -1), true, true)+pug.attr(\"data-bind\", `css: { \"draggable-list__item-preview\": draggingTo() === ${index}}`, true, true)+\" role=\\\"option\\\"\") + \"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", `draggable-list-item-${index++}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\\u003Cdiv class=\\\"live-region sr-only\\\" role=\\\"status\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__61__;","module.exports = __WEBPACK_EXTERNAL_MODULE__81__;","export * from './src/index';\r\n","export * from './bulk-upsert';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport {\r\n  hasOwnProperty,\r\n  defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport {\r\n  serialize,\r\n  parse,\r\n  populateIds,\r\n  hasReadOnlyFields,\r\n  getAttrsToSerialize,\r\n  extractEntityErrors,\r\n  buildDestroyObject,\r\n} from '@bingads-webui/odata-bulk-upsert';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport { join } from '@bingads-webui/url-util';\r\nimport { getSkipEntityCallPaths } from './constants';\r\n\r\nfunction getCast(options) {\r\n  return (options && !_.isEmpty(options.cast)) ? (`/${options.cast}`) : '';\r\n}\r\n\r\nfunction getParent(options) {\r\n  return (options && !_.isEmpty(options.parent)) ? (`${options.parent}/`) : '';\r\n}\r\n\r\nexport function odataBulkUpsertPlugin(edm, {\r\n  ServiceRoot,\r\n  AccountID,\r\n  AdvertiserCustomerID,\r\n  bulkUpsertSchema,\r\n} = {}, {\r\n  processOptions = _.identity,\r\n} = {}) {\r\n  if (hasOwnProperty(edm, 'odata.bulkUpsert')) {\r\n    return;\r\n  }\r\n\r\n  function getUrl({ path, options }) {\r\n    if (path) {\r\n      const prefix = path.match(/\\/Customers\\([0-9]+\\)\\/Accounts\\([0-9]+\\)/);\r\n      if (!_.isEmpty(prefix)) {\r\n        return join(ServiceRoot, `${prefix[0]}/${getParent(options)}Default.BulkUpsert${getCast(options)}`);\r\n      }\r\n    }\r\n    return join(ServiceRoot, `/Customers(${AdvertiserCustomerID})/Accounts(${AccountID})/${getParent(options)}Default.BulkUpsert${getCast(options)}`);\r\n  }\r\n\r\n  function invalidateCache(entityName, ids, skipEntityCallPaths = null) {\r\n    if (edm['odata.cache']) {\r\n      edm['odata.cache'].invalidateTypeCache(entityName, null, '', skipEntityCallPaths);\r\n      _.each(ids, id => edm['odata.cache'].invalidateTypeCache(entityName, id, '', skipEntityCallPaths));\r\n    }\r\n  }\r\n\r\n  function checkParsedResult(errors, result, entityName, ids, skipEntityCallPaths) {\r\n    if (!_.isEmpty(errors)) {\r\n      return Promise.reject({ // eslint-disable-line prefer-promise-reject-errors\r\n        entity: result,\r\n        errors,\r\n      });\r\n    }\r\n\r\n    invalidateCache(entityName, ids, skipEntityCallPaths);\r\n\r\n    return result;\r\n  }\r\n\r\n  _.each(bulkUpsertSchema, (bSchema, name) => {\r\n    merge(edm.schema.schemas[`Model/${name}`], bSchema);\r\n  });\r\n\r\n  defineConstProperty(edm, 'odata.bulkUpsert', (() => {\r\n    const {\r\n      ResourceIdentifier,\r\n    } = edm.resourceIdentifiers;\r\n\r\n    ResourceIdentifier.prototype.bulkUpdate = function bulkUpdate(attrs, options = {}) {\r\n      const { schema } = this.type;\r\n\r\n      if (options.batch) {\r\n        if (_.isUndefined(attrs.reqs)) {\r\n          throw new Error('requests are required when batch bulkupserts.');\r\n        }\r\n\r\n        const reqs = _.map(attrs.reqs, (param) => {\r\n          const csvRows = serialize(schema, { Id: attrs.Id, ...param.data });\r\n          const uri = getUrl({ path: this.path, options });\r\n\r\n          return {\r\n            type: 'POST',\r\n            url: uri,\r\n            data: { CsvRows: csvRows },\r\n          };\r\n        });\r\n\r\n        return odata.batch(_.defaults({ reqs, path: options.path }, options)).then(responses => (\r\n          Promise.map(responses, (response, index) => {\r\n            const { results, errors } = parse(response.data);\r\n            const ret = populateIds(results, attrs.reqs[index].data);\r\n\r\n            return checkParsedResult(\r\n              errors,\r\n              ret,\r\n              options.entityName || this.type.name,\r\n              [attrs.Id || attrs.reqs[0].data.Id]\r\n            );\r\n          })\r\n        ))\r\n          .then(parsedResponse => (_.isFunction(options.processResponse)\r\n            ? options.processResponse(parsedResponse)\r\n            : parsedResponse));\r\n      }\r\n\r\n      const toSerialize = getAttrsToSerialize(attrs.Id, attrs, schema);\r\n      const CsvRows = serialize(schema, toSerialize);\r\n\r\n      return odata.post(getUrl({ path: this.path, options }), processOptions({ data: { CsvRows } }))\r\n        .then((res) => {\r\n          const { results, errors } = parse(res);\r\n          const ret = populateIds(results, attrs);\r\n\r\n          if (results && results.length && hasReadOnlyFields(attrs, schema.properties)) {\r\n            ret.Id = results[0].Id;\r\n          }\r\n\r\n          return checkParsedResult(errors, ret, options.entityName || this.type.name, [attrs.Id]);\r\n        });\r\n    };\r\n\r\n    ResourceIdentifier.prototype.bulkUpdateMany = function bulkUpdateMany(\r\n      idList,\r\n      attrsList,\r\n      options = {}\r\n    ) {\r\n      const { schema } = this.type;\r\n      const toSerialize = _.map(\r\n        idList,\r\n        (id, index) => getAttrsToSerialize(id, attrsList[index], schema)\r\n      );\r\n      const CsvRows = serialize(schema, toSerialize);\r\n\r\n      return odata\r\n        .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n        .then((res) => {\r\n          const { results, errors } = parse(res);\r\n          const attrsListWithIds = populateIds(results, attrsList);\r\n\r\n          invalidateCache(options.entityName || this.type.name, idList);\r\n\r\n          return _.map(attrsListWithIds, (attrs, index) => ({\r\n            entity: attrs,\r\n            errors: extractEntityErrors(errors, index),\r\n          }));\r\n        });\r\n    };\r\n\r\n    ResourceIdentifier.prototype.bulkCreate = function bulkCreate(attrs, options = {}) {\r\n      const { schema } = this.type;\r\n      const CsvRows = serialize(schema, attrs);\r\n\r\n      return odata\r\n        .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n        .then((res) => {\r\n          const { results, errors } = parse(res);\r\n          const ret = populateIds(results, attrs);\r\n\r\n          return checkParsedResult(errors, ret, options.entityName || this.type.name, [null]);\r\n        });\r\n    };\r\n\r\n    ResourceIdentifier.prototype.bulkCreateMany = function bulkCreateMany(attrsList, options = {}) {\r\n      const { schema } = this.type;\r\n      const CsvRows = serialize(schema, attrsList);\r\n\r\n      return odata\r\n        .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n        .then((res) => {\r\n          const { results, errors } = parse(res);\r\n          const attrsListWithIds = populateIds(results, attrsList);\r\n\r\n          invalidateCache(options.entityName || this.type.name);\r\n\r\n          return _.map(attrsListWithIds, (attrs, index) => ({\r\n            entity: attrs,\r\n            errors: extractEntityErrors(errors, index),\r\n          }));\r\n        });\r\n    };\r\n\r\n    ResourceIdentifier.prototype.bulkDestroy = function bulkDestroy(id, options = {}) {\r\n      const { schema } = this.type;\r\n      const attrs = buildDestroyObject(schema.parent, id, options.parentId);\r\n      const CsvRows = serialize(schema, attrs);\r\n\r\n      return odata\r\n        .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n        .then((res) => {\r\n          const { results, errors } = parse(res);\r\n          const ret = populateIds(results, attrs);\r\n          const entityName = options.entityName || this.type.name;\r\n\r\n          return checkParsedResult(errors, ret, entityName, [id], getSkipEntityCallPaths(entityName, [id]));\r\n        });\r\n    };\r\n\r\n    // put the plugin indicator\r\n    return {};\r\n  })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__39__;","module.exports = __WEBPACK_EXTERNAL_MODULE__40__;","module.exports = __WEBPACK_EXTERNAL_MODULE__41__;","module.exports = __WEBPACK_EXTERNAL_MODULE__42__;","const ENTITY_PATH_ENUM = {\r\n  'Model.ShoppingCampaign': 'Campaigns',\r\n  'Model.Campaign': 'Campaigns',\r\n  'Model.AdGroup': 'AdGroups',\r\n};\r\n\r\nexport const getSkipEntityCallPaths = (entityName, ids) => {\r\n  const entityPath = entityName.includes('Model') ? ENTITY_PATH_ENUM[entityName] : `${entityName}s`;\r\n  if (!entityPath) {\r\n    return [];\r\n  }\r\n  return ids.map(id => `${entityPath}(${id})`);\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__47__;","module.exports = __WEBPACK_EXTERNAL_MODULE__48__;","export { EDM } from './src/index';\r\n","/**\r\n * the Entity Data Model module\r\n * @module component/edm-core/index\r\n */\r\nimport typesPlugin from './types-plugin';\r\nimport schemaPlugin from './schema-plugin';\r\n\r\nexport class EDM {\r\n  constructor(options) {\r\n    typesPlugin(this);\r\n    if (options) {\r\n      schemaPlugin(this, options);\r\n    }\r\n  }\r\n}\r\n","/**\r\n * the types plugin module\r\n * @module component/edm-core/types-plugin\r\n */\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport {\r\n  ONEOF_TYPE_PREFIX,\r\n  createResolveType,\r\n  createProperty,\r\n  createParameter,\r\n  createType,\r\n  createPrimitiveType,\r\n  createCollectionType,\r\n  compileProperties,\r\n  compileParameters\r\n} from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {void}\r\n */\r\nexport default (edm) => {\r\n  if (edm.types) {\r\n    return;\r\n  }\r\n\r\n  // eslint-disable-next-line no-undef\r\n  const oneOfTypes = new Map();\r\n\r\n  /**\r\n   * @name edm\r\n   * @type {EDM}\r\n   * @property {Registry} types - A registry of all types\r\n   * @property {Class} types.Type - The base type of all meta Types\r\n   * @property {Class} types.PrimitiveType - The meta type of primitive types\r\n   * @property {Class} types.ObjectType - The meta type of the key/value types\r\n   * @property {Class} types.ComplexType - The meta type of the complex types\r\n   * @property {Class} types.EntityType - The meta type of the entity types\r\n   * @property {Class} types.CollectionType - The meta type of the collection types\r\n   * @property {Class} types.CallableType - The meta type of the callable types\r\n   */\r\n  defineConstProperty(edm, 'types', (() => {\r\n    const types = new Registry();\r\n    const Type = createType(types);\r\n    const PrimitiveType = createPrimitiveType(Type);\r\n\r\n    /**\r\n     * @class OneOfType\r\n     * @extends Type\r\n     * @property {Class} types - Data could be one of these types\r\n     * @see {@link http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.7.3}\r\n     */\r\n    class OneOfType extends Type {\r\n      /**\r\n       * Create a PrimitiveType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Type[]} options.types - The JavaScript type of the primitive type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        typeNames,\r\n      }) {\r\n        super({\r\n          name: OneOfType.oneOfTypeName(typeNames),\r\n        });\r\n\r\n        defineConstProperty(this, 'typeNames', typeNames);\r\n        // eslint-disable-next-line no-use-before-define\r\n        defineConstProperty(this, 'types', typeNames.map(typeName => resolveType(typeName, this.namespace)));\r\n      }\r\n\r\n      /**\r\n       * Get the OneOfType's name from it's elements type name\r\n       * @param {String[]} typeNames - The name of the elementTypes\r\n       * @return {String} The name of the OneOfType\r\n       */\r\n      static oneOfTypeName(typeNames) {\r\n        // We don't support nested one for now\r\n        const sortedNames = typeNames.map(name =>\r\n          types.resolveQualifiedName(name, this.namespace)).sort();\r\n\r\n        return `${ONEOF_TYPE_PREFIX}(${sortedNames.join(',')})`;\r\n      }\r\n    }\r\n\r\n    const resolveType = createResolveType(oneOfTypes, types, OneOfType);\r\n    const Property = createProperty(resolveType);\r\n    const Parameter = createParameter(resolveType);\r\n\r\n    /**\r\n     * @class ObjectType\r\n     * @extends Type\r\n     * @property {Object.<String, Property>} properties - The properties of the object type\r\n     * @property {String} baseTypeName - The name of the base type\r\n     * @property {Type} baseType - The base type\r\n     */\r\n    class ObjectType extends Type {\r\n      /**\r\n       * Create an ObjectType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, PropertyInfo>} options.properties - The property definition\r\n       * @param {String} options.baseTypeName - The name of the base type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        properties,\r\n        baseTypeName,\r\n      }) {\r\n        super({ name });\r\n\r\n        defineConstProperty(this, 'properties', compileProperties.call(this, properties, Property));\r\n        if (baseTypeName) {\r\n          _.chain(this)\r\n            .defineConstProperty('baseTypeName', baseTypeName)\r\n            .defineProducedProperty('baseType', () => resolveType(this.baseTypeName, this.namespace))\r\n            .value();\r\n        }\r\n      }\r\n\r\n      addProperties(properties) {\r\n        _.extend(this.properties, compileProperties.call(this, properties, Property));\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class ComplexType\r\n     * @extends ObjectType\r\n     */\r\n    class ComplexType extends ObjectType {\r\n\r\n    }\r\n\r\n    /**\r\n     * @class EntityType\r\n     * @extends ObjectType\r\n     * @property {String} key - The name of the key property\r\n     * @property {Property} keyProperty - The key property of the entity type\r\n     * @return {void}\r\n     */\r\n    class EntityType extends ObjectType {\r\n      /**\r\n       * Create an EntityType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, PropertyInfo>} options.properties - The property definition\r\n       * @param {String} options.baseTypeName - The name of the base type\r\n       * @param {String} [options.key] - The name of the key property\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        properties,\r\n        baseTypeName,\r\n        key,\r\n      }) {\r\n        super({\r\n          name,\r\n          properties,\r\n          baseTypeName,\r\n        });\r\n\r\n        if (key) {\r\n          _.chain(this)\r\n            .defineConstProperty('key', key)\r\n            .defineConstProperty('keyProperty', this.properties[this.key])\r\n            .value();\r\n        } else if (baseTypeName) {\r\n          // The key property is inherited if there's a base type\r\n          _.chain(this)\r\n            .defineProducedProperty('key', () => this.baseType.key)\r\n            .defineProducedProperty('keyProperty', () => this.baseType.keyProperty)\r\n            .value();\r\n        } else {\r\n          throw new Error('The \"key\" property is required for an EntityType');\r\n        }\r\n      }\r\n    }\r\n\r\n    const CollectionType = createCollectionType(ObjectType, resolveType);\r\n\r\n    /**\r\n     * @memberof Type#\r\n     * @this Type\r\n     * @returns {CollectionType} The CollectionType of the given Type\r\n     */\r\n    function collectionTypeFactory() {\r\n      return new CollectionType({ elementTypeName: this.name });\r\n    }\r\n\r\n    /**\r\n     * @name type\r\n     * @type Type\r\n     * @property {CollectionType} collectionType - The collection type of the given type\r\n     */\r\n    defineProducedPropertyOnClass(Type, 'collectionType', collectionTypeFactory);\r\n\r\n    /**\r\n     * @class CallableType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class CallableType extends Type {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({ name });\r\n\r\n        _.chain(this)\r\n          .defineConstProperty('parameters', compileParameters.call(this, parameters, Parameter))\r\n          .defineConstProperty('returnTypeName', returnTypeName)\r\n          .defineProducedProperty('returnType', () => resolveType(returnTypeName, this.namespace))\r\n          .value();\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class ActionType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class ActionType extends CallableType {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({ name, parameters, returnTypeName });\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class FunctionType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class FunctionType extends CallableType {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({ name, parameters, returnTypeName });\r\n      }\r\n    }\r\n\r\n    // TODO: wewei, support EnumType\r\n\r\n    return _.chain(types)\r\n      .defineConstProperty('Property', Property)\r\n      .defineConstProperty('Parameter', Parameter)\r\n      .defineConstProperty('Type', Type)\r\n      .defineConstProperty('PrimitiveType', PrimitiveType)\r\n      .defineConstProperty('OneOfType', OneOfType)\r\n      .defineConstProperty('ObjectType', ObjectType)\r\n      .defineConstProperty('ComplexType', ComplexType)\r\n      .defineConstProperty('EntityType', EntityType)\r\n      .defineConstProperty('CollectionType', CollectionType)\r\n      .defineConstProperty('CallableType', CallableType)\r\n      .defineConstProperty('ActionType', ActionType)\r\n      .defineConstProperty('FunctionType', FunctionType)\r\n      .value();\r\n  })());\r\n};\r\n","/**\r\n * the schema plugin module\r\n * @module component/edm-core/schema-plugin\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n  hasOwnProperty,\r\n  defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport typesPlugin from './types-plugin';\r\n\r\nfunction getSchemaName(schema) {\r\n  const { $$ODataExtension, name } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.Name;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"name\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return name;\r\n}\r\n\r\nfunction getSchemaBaseType(schema) {\r\n  const { $$ODataExtension, clrTypeBase } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.BaseType;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"clrTypeBase\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return clrTypeBase;\r\n}\r\n\r\nfunction getSchemaKey(schema) {\r\n  const { $$ODataExtension, key } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.Key;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"key\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return key;\r\n}\r\n\r\nexport default (edm, {\r\n  schemas = {},\r\n  // TODO: deprecated, every schemas should be able to have different namespaces\r\n  // we are still using it with legacy schemas\r\n  namespace = null,\r\n} = {}) => {\r\n  if (hasOwnProperty(edm, 'schema')) {\r\n    return;\r\n  }\r\n\r\n  typesPlugin(edm);\r\n\r\n  const {\r\n    CollectionType,\r\n    EntityType,\r\n    PrimitiveType,\r\n    ComplexType,\r\n    OneOfType,\r\n  } = edm.types;\r\n\r\n  defineConstProperty(edm, 'schema', (() => {\r\n    function getSchemaFullName(schema) {\r\n      return schema.$ref ?\r\n        schema.$ref.replace(/\\//g, '.') :\r\n        Registry.getQualifiedName(getSchemaName(schema), namespace);\r\n    }\r\n\r\n    /**\r\n     * Get type name object with its information\r\n     * @param {Schema[]} dependencies - An output paramter, a queue of dependent schemas\r\n     * @param {Object} typeInfo - The schema information of the property\r\n     * @return {String} The type name\r\n     */\r\n    function getTypeName(dependencies, typeInfo) {\r\n      let schema = null;\r\n      let typeName = null;\r\n\r\n      if (typeInfo.type === 'array') {\r\n        return CollectionType.collectionTypeName(getTypeName(dependencies, typeInfo.items));\r\n      } else if (typeInfo.oneOf) {\r\n        return OneOfType.oneOfTypeName(typeInfo.oneOf.map(item => getTypeName(dependencies, item)));\r\n      } else if (typeInfo.type === 'object') {\r\n        ({ schema } = typeInfo);\r\n        // it's possible for the schema to be undefined, use 'object' type by default\r\n        typeName = getSchemaFullName(schema || typeInfo);\r\n      } else {\r\n        // primitive types\r\n        typeName = typeInfo.type;\r\n      }\r\n\r\n      if (schema) {\r\n        dependencies.push(schema);\r\n      }\r\n\r\n      return typeName;\r\n    }\r\n\r\n    /**\r\n     * Define an entity type, and its dependencies\r\n     *\r\n     * @param {Schema} schema - The schema for the entity type\r\n     * @return {Void} Nothing to return\r\n     */\r\n    function defineSchemaType(schema) {\r\n      const qualifiedName = getSchemaFullName(schema);\r\n\r\n      if (!edm.types.resolve(qualifiedName)) {\r\n        const dependencies = [];\r\n        const properties = _.chain(schema.properties)\r\n          .map((typeInfo, name) => [\r\n            name,\r\n            { typeName: getTypeName(dependencies, typeInfo, name) },\r\n          ])\r\n          .object()\r\n          .value();\r\n\r\n        const type = new EntityType({\r\n          name: qualifiedName,\r\n          baseTypeName: getSchemaBaseType(schema) || 'object',\r\n          key: getSchemaKey(schema),\r\n          properties,\r\n        });\r\n\r\n        defineConstProperty(type, 'schema', schema);\r\n\r\n        _.each(dependencies, defineSchemaType);\r\n      }\r\n    }\r\n\r\n    // Define all the primitive types\r\n    _.each({\r\n      string: String,\r\n      integer: Number,\r\n      number: Number,\r\n      datetime: Date,\r\n      boolean: Boolean,\r\n      null: null,\r\n    }, (jsType, name) => new PrimitiveType({ name, jsType }));\r\n    // TODO: support `oneOf` in schema\r\n\r\n    // Define the base object type\r\n    /* eslint no-new: 0 */\r\n    new ComplexType({\r\n      name: 'object',\r\n      properties: {},\r\n    });\r\n\r\n    _.each(schemas, defineSchemaType);\r\n\r\n    return _.chain({})\r\n      .defineConstProperty('schemas', schemas)\r\n      .defineConstProperty('namespace', namespace)\r\n      .value();\r\n  })());\r\n};\r\n","export { EDM } from './src/index';\r\n","/**\r\n * the Entity Data Model module\r\n */\r\nimport typesPlugin from './types-plugin';\r\nimport schemaPlugin from './schema-plugin';\r\n\r\nexport class EDM {\r\n  constructor(options) {\r\n    typesPlugin(this);\r\n    if (options) {\r\n      schemaPlugin(this, options);\r\n    }\r\n  }\r\n}\r\n","/**\r\n * the types plugin module\r\n */\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n  defineConstProperty,\r\n  defineProducedProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport {\r\n  ONEOF_TYPE_PREFIX,\r\n  createResolveType,\r\n  createProperty,\r\n  createParameter,\r\n  createType,\r\n  createPrimitiveType,\r\n  createCollectionType,\r\n  compileProperties,\r\n  compileParameters\r\n} from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {void}\r\n */\r\nexport default (edm) => {\r\n  if (edm.types) {\r\n    return;\r\n  }\r\n\r\n  // eslint-disable-next-line no-undef\r\n  const oneOfTypes = new Map();\r\n\r\n  /**\r\n   * @name edm\r\n   * @type {EDM}\r\n   * @property {Registry} types - A registry of all types\r\n   * @property {Class} types.Type - The base type of all meta Types\r\n   * @property {Class} types.PrimitiveType - The meta type of primitive types\r\n   * @property {Class} types.ObjectType - The meta type of the key/value types\r\n   * @property {Class} types.ComplexType - The meta type of the complex types\r\n   * @property {Class} types.EntityType - The meta type of the entity types\r\n   * @property {Class} types.CollectionType - The meta type of the collection types\r\n   * @property {Class} types.CallableType - The meta type of the callable types\r\n   */\r\n  defineConstProperty(edm, 'types', (() => {\r\n    const types = new Registry();\r\n    const Type = createType(types);\r\n    const PrimitiveType = createPrimitiveType(Type);\r\n\r\n    /**\r\n     * @class OneOfType\r\n     * @extends Type\r\n     * @property {Class} types - Data could be one of these types\r\n     * @see {@link http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.7.3}\r\n     */\r\n    class OneOfType extends Type {\r\n      /**\r\n       * Create a PrimitiveType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Type[]} options.types - The JavaScript type of the primitive type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        typeNames,\r\n      }) {\r\n        super({\r\n          name: OneOfType.oneOfTypeName(typeNames),\r\n        });\r\n\r\n        defineConstProperty(this, 'typeNames', typeNames);\r\n        // eslint-disable-next-line no-use-before-define\r\n        defineConstProperty(this, 'types', typeNames.map(typeName => resolveType(typeName, this.namespace)));\r\n      }\r\n\r\n      /**\r\n       * Get the OneOfType's name from it's elements type name\r\n       * @param {String[]} typeNames - The name of the elementTypes\r\n       * @return {String} The name of the OneOfType\r\n       */\r\n      static oneOfTypeName(typeNames) {\r\n        // We don't support nested one for now\r\n        const sortedNames = typeNames.map(name =>\r\n          types.resolveQualifiedName(name, this.namespace)).sort();\r\n\r\n        return `${ONEOF_TYPE_PREFIX}(${sortedNames.join(',')})`;\r\n      }\r\n    }\r\n\r\n    const resolveType = createResolveType(oneOfTypes, types, OneOfType);\r\n    const Property = createProperty(resolveType);\r\n    const Parameter = createParameter(resolveType);\r\n\r\n    /**\r\n     * @class ObjectType\r\n     * @extends Type\r\n     * @property {Object.<String, Property>} properties - The properties of the object type\r\n     * @property {String} baseTypeName - The name of the base type\r\n     * @property {Type} baseType - The base type\r\n     */\r\n    class ObjectType extends Type {\r\n      /**\r\n       * Create an ObjectType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, PropertyInfo>} options.properties - The property definition\r\n       * @param {string[]} [options.navigationPropertyNames] - Navigation properties names\r\n       * @param {String} options.baseTypeName - The name of the base type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        properties,\r\n        navigationPropertyNames = [],\r\n        baseTypeName,\r\n      }) {\r\n        super({ name });\r\n\r\n        defineConstProperty(this, 'properties', compileProperties.call(this, properties, Property));\r\n        defineConstProperty(this, 'navigationPropertyNames', navigationPropertyNames.slice());\r\n        defineProducedProperty(this, 'navigationProperties', () => _.pick(this.properties, (property, propertyName) => _.contains(this.navigationPropertyNames, propertyName)));\r\n        if (baseTypeName) {\r\n          defineConstProperty(this, 'baseTypeName', baseTypeName);\r\n          defineProducedProperty(this, 'baseType', () => resolveType(this.baseTypeName, this.namespace));\r\n        }\r\n      }\r\n\r\n      addProperties(properties) {\r\n        _.extend(this.properties, compileProperties.call(this, properties, Property));\r\n        // only for backward compability, should use addNavigationProperties for this case\r\n        this.navigationPropertyNames.push(..._.keys(properties));\r\n      }\r\n\r\n      addNavigationProperties(properties) {\r\n        this.addProperties(properties);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class ComplexType\r\n     * @extends ObjectType\r\n     */\r\n    class ComplexType extends ObjectType {\r\n\r\n    }\r\n\r\n    /**\r\n     * @class EntityType\r\n     * @extends ObjectType\r\n     * @property {String} key - The name of the key property\r\n     * @property {Property} keyProperty - The key property of the entity type\r\n     * @return {void}\r\n     */\r\n    class EntityType extends ObjectType {\r\n      /**\r\n       * Create an EntityType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, PropertyInfo>} options.properties - The property definition\r\n       * @param {String} options.baseTypeName - The name of the base type\r\n       * @param {String} [options.key] - The name of the key property\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        properties,\r\n        navigationPropertyNames,\r\n        baseTypeName,\r\n        key,\r\n      }) {\r\n        super({\r\n          name,\r\n          properties,\r\n          navigationPropertyNames,\r\n          baseTypeName,\r\n        });\r\n\r\n        if (key) {\r\n          defineConstProperty(this, 'key', key);\r\n          defineConstProperty(this, 'keyProperty', this.properties[this.key]);\r\n        } else if (baseTypeName) {\r\n          // The key property is inherited if there's a base type\r\n          defineProducedProperty(this, 'key', () => this.baseType.key);\r\n          defineProducedProperty(this, 'keyProperty', () => this.baseType.keyProperty);\r\n        } else {\r\n          throw new Error('The \"key\" property is required for an EntityType');\r\n        }\r\n      }\r\n    }\r\n\r\n    const CollectionType = createCollectionType(ObjectType, resolveType);\r\n\r\n    /**\r\n     * @memberof Type#\r\n     * @this Type\r\n     * @returns {CollectionType} The CollectionType of the given Type\r\n     */\r\n    function collectionTypeFactory() {\r\n      return new CollectionType({ elementTypeName: this.name });\r\n    }\r\n\r\n    /**\r\n     * @name type\r\n     * @type Type\r\n     * @property {CollectionType} collectionType - The collection type of the given type\r\n     */\r\n    defineProducedPropertyOnClass(Type, 'collectionType', collectionTypeFactory);\r\n\r\n    /**\r\n     * @class CallableType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class CallableType extends Type {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        callableName,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({ name });\r\n\r\n        defineConstProperty(this, 'callableName', callableName);\r\n        defineConstProperty(this, 'parameters', compileParameters.call(this, parameters, Parameter));\r\n        defineConstProperty(this, 'returnTypeName', returnTypeName);\r\n        defineProducedProperty(this, 'returnType', () => resolveType(returnTypeName, this.namespace));\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class ActionType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class ActionType extends CallableType {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        callableName,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({\r\n          name,\r\n          callableName,\r\n          parameters,\r\n          returnTypeName,\r\n        });\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @class FunctionType\r\n     * @property {Parameter[]} parameters - The parameters required to call the callable\r\n     * @property {String} returnTypeName - The name of the return type\r\n     * @property {Type} returnType - The return type of the callable\r\n     */\r\n    class FunctionType extends CallableType {\r\n      /**\r\n       * Create a CallableType\r\n       * @param {Object} options - The constructor options\r\n       * @param {String} options.name - The name of the type\r\n       * @param {Object.<String, ParameterInfo>} parameters - The parameter definitions\r\n       * @param {String} returnTypeName - The name of the return type\r\n       * @return {void}\r\n       */\r\n      constructor({\r\n        name,\r\n        callableName,\r\n        parameters,\r\n        returnTypeName,\r\n      }) {\r\n        super({\r\n          name,\r\n          callableName,\r\n          parameters,\r\n          returnTypeName,\r\n        });\r\n      }\r\n    }\r\n\r\n    // TODO: wewei, support EnumType\r\n\r\n    defineConstProperty(types, 'Property', Property);\r\n    defineConstProperty(types, 'Parameter', Parameter);\r\n    defineConstProperty(types, 'Type', Type);\r\n    defineConstProperty(types, 'PrimitiveType', PrimitiveType);\r\n    defineConstProperty(types, 'OneOfType', OneOfType);\r\n    defineConstProperty(types, 'ObjectType', ObjectType);\r\n    defineConstProperty(types, 'ComplexType', ComplexType);\r\n    defineConstProperty(types, 'EntityType', EntityType);\r\n    defineConstProperty(types, 'CollectionType', CollectionType);\r\n    defineConstProperty(types, 'CallableType', CallableType);\r\n    defineConstProperty(types, 'ActionType', ActionType);\r\n    defineConstProperty(types, 'FunctionType', FunctionType);\r\n\r\n    return types;\r\n  })());\r\n};\r\n","/**\r\n * the schema plugin module\r\n */\r\nimport _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport {\r\n  hasOwnProperty,\r\n  defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport typesPlugin from './types-plugin';\r\n\r\nfunction getSchemaName(schema) {\r\n  const { $$ODataExtension, name } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.Name;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"name\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return name;\r\n}\r\n\r\nfunction getSchemaBaseTypeName(schema) {\r\n  const { $$ODataExtension, clrTypeBase } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.BaseType && $$ODataExtension.BaseType.$ref;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"clrTypeBase\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return clrTypeBase;\r\n}\r\n\r\nfunction getSchemaKey(schema) {\r\n  const { $$ODataExtension, key } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.Key;\r\n  }\r\n\r\n  // deprecated\r\n  // There is no such keyword as \"key\" in JSON Schema, it's specific to OData\r\n  // See:\r\n  //  http://json-schema.org/latest/json-schema-core.html\r\n  //  http://json-schema.org/latest/json-schema-validation.html\r\n  return key;\r\n}\r\n\r\nfunction getSchemaNavigationPropertyNames(schema) {\r\n  const { $$ODataExtension } = schema;\r\n  if ($$ODataExtension) {\r\n    return $$ODataExtension.NavigationProperty;\r\n  }\r\n\r\n  return [];\r\n}\r\n\r\nexport default (edm, {\r\n  schemas = {},\r\n  // TODO: deprecated, every schemas should be able to have different namespaces\r\n  // we are still using it with legacy schemas\r\n  namespace = null,\r\n} = {}) => {\r\n  if (hasOwnProperty(edm, 'schema')) {\r\n    return;\r\n  }\r\n\r\n  typesPlugin(edm);\r\n\r\n  const {\r\n    CollectionType,\r\n    EntityType,\r\n    PrimitiveType,\r\n    ComplexType,\r\n    OneOfType,\r\n    ActionType,\r\n    FunctionType,\r\n  } = edm.types;\r\n\r\n  defineConstProperty(edm, 'schema', (() => {\r\n    function getSchemaFullName(schema, path) {\r\n      // $$ref exists in resolved schema\r\n      const possiblePath = (_.isString(path) && path) || schema.$$ref || schema.$ref;\r\n      return possiblePath ?\r\n        possiblePath.replace(/\\//g, '.') :\r\n        Registry.getQualifiedName(getSchemaName(schema), namespace);\r\n    }\r\n\r\n    /**\r\n     * Get type name object with its information\r\n     * @param {Schema[]} dependencies - An output paramter, a queue of dependent schemas\r\n     * @param {Object} typeInfo - The schema information of the property\r\n     * @return {String} The type name\r\n     */\r\n    function getTypeName(dependencies, typeInfo) {\r\n      let schema = null;\r\n      let typeName = null;\r\n\r\n      if (!typeInfo) {\r\n        return null;\r\n      }\r\n\r\n      if (typeInfo.type === 'array') {\r\n        return CollectionType.collectionTypeName(getTypeName(dependencies, typeInfo.items));\r\n      } else if (typeInfo.oneOf) {\r\n        return OneOfType.oneOfTypeName(typeInfo.oneOf.map(item => getTypeName(dependencies, item)));\r\n      } else if (typeInfo.type === 'object') {\r\n        ({ schema } = typeInfo);\r\n        // it's possible for the schema to be undefined, use 'object' type by default\r\n        typeName = getSchemaFullName(schema || typeInfo);\r\n      } else if (typeInfo.type === 'string' && typeInfo.enum) {\r\n        // enum type is string, but we need to get a meanful name for different enum type\r\n        // this is to help us disable cache accurately, as enum can be odata call return type now\r\n        typeName = (typeInfo.$$ref || 'string').split('/').join('.');\r\n      } else {\r\n        // primitive types\r\n        typeName = typeInfo.type;\r\n      }\r\n\r\n      if (schema) {\r\n        dependencies.push(schema);\r\n      }\r\n\r\n      return typeName;\r\n    }\r\n\r\n    function defineCallableOnType(acts, funcs, type, qualifiedName, forEntityType = true) {\r\n      const actions = [];\r\n      const functions = [];\r\n\r\n      function getCallableTypeName(key) {\r\n        return `${key}##${qualifiedName}${forEntityType ? '' : '@@COLL'}`;\r\n      }\r\n\r\n      _.each(_.keys(acts), (key) => {\r\n        const typeName = getCallableTypeName(key);\r\n        const parameters = _.mapObject(\r\n          acts[key].Parameter,\r\n          parameter => getTypeName([], parameter)\r\n        );\r\n\r\n        actions.push(new ActionType({\r\n          name: typeName,\r\n          callableName: key,\r\n          parameters,\r\n          returnTypeName: getTypeName([], acts[key].ReturnType),\r\n        }));\r\n      });\r\n\r\n      _.each(_.keys(funcs), (key) => {\r\n        const typeName = getCallableTypeName(key);\r\n        const parameters = _.mapObject(\r\n          funcs[key].Parameter,\r\n          parameter => getTypeName([], parameter)\r\n        );\r\n\r\n        functions.push(new FunctionType({\r\n          name: typeName,\r\n          callableName: key,\r\n          parameters,\r\n          returnTypeName: getTypeName([], funcs[key].ReturnType),\r\n        }));\r\n      });\r\n\r\n      defineConstProperty(type, 'callable', {\r\n        actions,\r\n        functions,\r\n      });\r\n    }\r\n\r\n    /**\r\n     * Define an entity type, and its dependencies\r\n     *\r\n     * @param {Schema} schema - The schema for the entity type\r\n     * @param {string} [path] - Possible full path of the schema\r\n     * @return {Void} Nothing to return\r\n     */\r\n    function defineSchemaType(schema, path) {\r\n      const qualifiedName = getSchemaFullName(schema, path);\r\n\r\n      if (!edm.types.resolve(qualifiedName)) {\r\n        const dependencies = [];\r\n        const properties = _.mapObject(schema.properties, typeInfo => ({\r\n          typeName: getTypeName(dependencies, typeInfo),\r\n        }));\r\n\r\n        const type = new EntityType({\r\n          name: qualifiedName,\r\n          baseTypeName: getSchemaBaseTypeName(schema) || 'object',\r\n          key: getSchemaKey(schema),\r\n          properties,\r\n          navigationPropertyNames: getSchemaNavigationPropertyNames(schema),\r\n        });\r\n\r\n        defineConstProperty(type, 'schema', schema);\r\n\r\n        _.each(dependencies, defineSchemaType);\r\n\r\n        const entityActions = get(schema, '$$ODataExtension.Action', null);\r\n        const entityFunctions = get(schema, '$$ODataExtension.Function', null);\r\n\r\n        if (entityActions || entityFunctions) {\r\n          defineCallableOnType(entityActions, entityFunctions, type, qualifiedName);\r\n        }\r\n\r\n        const collCallable = get(schema, '$$ODataExtension.Collection', null);\r\n\r\n        if (collCallable) {\r\n          defineCallableOnType(\r\n            collCallable.Action,\r\n            collCallable.Function,\r\n            type.collectionType,\r\n            qualifiedName,\r\n            false\r\n          );\r\n        }\r\n      }\r\n    }\r\n\r\n    // Define all the primitive types\r\n    _.each({\r\n      string: String,\r\n      integer: Number,\r\n      number: Number,\r\n      datetime: Date,\r\n      boolean: Boolean,\r\n      null: null,\r\n    }, (jsType, name) => new PrimitiveType({ name, jsType }));\r\n\r\n    // Define the base object type\r\n    /* eslint no-new: 0 */\r\n    new ComplexType({\r\n      name: 'object',\r\n      properties: {},\r\n    });\r\n\r\n    _.each(schemas, (schema, index) => {\r\n      if (_.isString(index)) {\r\n        defineSchemaType(schema, index);\r\n      } else {\r\n        defineSchemaType(schema);\r\n      }\r\n    });\r\n\r\n    return _.chain({})\r\n      .defineConstProperty('schemas', schemas)\r\n      .defineConstProperty('namespace', namespace)\r\n      .value();\r\n  })());\r\n};\r\n","export { jsdataPlugin } from './src/index';\r\n","/**\r\n * The js-data plugin for Entity Data Model\r\n * @module component/edm-js-data/index\r\n */\r\nimport _ from 'underscore';\r\nimport JSData from 'js-data';\r\nimport Schemator from 'js-data-schema';\r\nimport {\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n  defineProducedProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { defineResource } from './js-data';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM to apply the plugin to\r\n * @param {ResourceIdentifier} root - The root resource identifier\r\n * @return {void} Nothing to return\r\n */\r\nexport function jsdataPlugin(edm, root) {\r\n  if (edm.jsdata) {\r\n    return;\r\n  }\r\n\r\n  if (!edm.schema) {\r\n    throw new Error('Schemas must be loaded before applying the js-data plugin');\r\n  }\r\n\r\n  const store = new JSData.DS({ cacheResponse: false });\r\n  const schemator = new Schemator();\r\n\r\n  /**\r\n   * @name edm\r\n   * @property {Object} jsdata - An aggregator of js-data objects\r\n   * @property {JSDataDS} jsdata.store - The js-data data store\r\n   * @property {JSDataResource[]} jsdata.resources - An array of all js-data resources created\r\n   * @property {JSDataSchemator} jsdata.schemator - The js-data schemator\r\n   */\r\n  defineConstProperty(edm, 'jsdata', (() => {\r\n    const resources = {};\r\n\r\n    edm.types.each((type) => {\r\n      if (type.schema) {\r\n        const { name } = type.schema;\r\n\r\n        defineProducedProperty(resources, name, () => defineResource({\r\n          schema: type.schema,\r\n          store,\r\n          schemator,\r\n          edm,\r\n          edmRootResourceIdentifier: root,\r\n        }));\r\n\r\n        /**\r\n         * @name type\r\n         * @type Type\r\n         * @property {JSDataResource} jsdataResource - The js-data resource for the type\r\n         */\r\n        defineProducedProperty(type, 'jsdataResource', () => resources[name]);\r\n      }\r\n    });\r\n\r\n    return _.chain({})\r\n      .defineConstProperty('store', store)\r\n      .defineConstProperty('resources', resources)\r\n      .defineConstProperty('schemator', schemator)\r\n      .value();\r\n  })());\r\n\r\n  /**\r\n   * @memberof ResourceIdentifier#\r\n   * @this ResourceIdentifier\r\n   * @returns {JSDataResource} The js-data resource for the entity\r\n   */\r\n  function jsdataResourceFactory() {\r\n    if (_.has(store.definitions, this.path)) {\r\n      return store.definitions[this.path];\r\n    }\r\n\r\n    if (this.type instanceof edm.types.CollectionType &&\r\n      // action has same path for different parameters\r\n      !(this.navigation.source.type instanceof edm.types.ActionType)) {\r\n      return defineResource({\r\n        schema: this.type.elementType.schema,\r\n        store,\r\n        schemator,\r\n        name: this.path,\r\n        entitySet: this,\r\n        edm,\r\n        edmRootResourceIdentifier: root,\r\n      });\r\n    }\r\n\r\n    throw new Error('only support jsdataResource on collection type edm');\r\n  }\r\n\r\n  if (edm.resourceIdentifiers) {\r\n    const {\r\n      ResourceIdentifier,\r\n    } = edm.resourceIdentifiers;\r\n\r\n    defineProducedPropertyOnClass(ResourceIdentifier, 'jsdataResource', jsdataResourceFactory);\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","module.exports = __WEBPACK_EXTERNAL_MODULE__69__;","import _ from 'underscore';\r\n\r\nfunction toSimpleHash(schema) {\r\n  return _.mapObject(schema.properties, ({\r\n    type,\r\n    schema: propertySchema,\r\n  }) => {\r\n    const obj = { type };\r\n\r\n    if (propertySchema) {\r\n      obj.type = propertySchema.name;\r\n    }\r\n\r\n    return obj;\r\n  });\r\n}\r\n\r\nfunction definePropertiesType(schema, Schemator) {\r\n  _.each(schema.properties, ({ schema: propertySchema }) => {\r\n    if (propertySchema && !Schemator.getDataType(propertySchema.name)) {\r\n      // eslint-disable-next-line\r\n      defineType(propertySchema, Schemator);\r\n    }\r\n  });\r\n}\r\n\r\nfunction defineType(schema, Schemator) {\r\n  Schemator.defineDataType(schema.name, _.noop);\r\n  definePropertiesType(schema, Schemator);\r\n}\r\n\r\nexport function defineResource({\r\n  schema,\r\n  store,\r\n  schemator,\r\n  name = schema.name,\r\n  entitySet,\r\n  edm,\r\n  edmRootResourceIdentifier,\r\n}) {\r\n  const resource = store.defineResource({\r\n    // do not pass reference to schema into js-data method, as js-data may\r\n    // perform destructive modifications to the schema argument\r\n    name,\r\n    entitySet,\r\n    edm,\r\n    edmRootResourceIdentifier,\r\n    idAttribute: _.findKey(schema.properties, prop => prop.key === true) || 'Id',\r\n  });\r\n\r\n  if (!schemator.getSchema(schema.name)) {\r\n    // TODO: actually we are not using js-data-schema, see http://www.js-data.io/docs/upgrading-to-jsdata-20\r\n    schemator.defineSchema(schema.name, toSimpleHash(schema));\r\n\r\n    // seed types\r\n    definePropertiesType(schema, schemator);\r\n  }\r\n\r\n  // TODO: [zhbliu][#1404348] This is needed by component/js-data-bulk,\r\n  // we need an elegant way to find schema by resource\r\n  return _.extend(resource, { schema });\r\n}\r\n","export { odataPlugin } from './src/index';\r\n","/**\r\n * The OData plugin module\r\n * @module component/edm-odata/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n  hasOwnProperty,\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { resIdsPlugin } from '@bingads-webui/edm-resource-identifiers-legacy';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply the plugin to\r\n * @param {String} rootURL - The root URL of the OData service\r\n * @return {Void} nothing to return\r\n */\r\nexport function odataPlugin(edm, rootURL, {\r\n  processError = _.identity,\r\n  processOptions = _.identity,\r\n} = {}) {\r\n  const odataRootURL = rootURL.replace(/\\/*$/, '');\r\n  if (hasOwnProperty(edm, 'odata')) {\r\n    return;\r\n  }\r\n  const rethrowError = (err) => {\r\n    throw processError(err);\r\n  };\r\n\r\n  resIdsPlugin(edm);\r\n\r\n  /**\r\n   * @name edm\r\n   * @property {Object} odata - A dummy indicator for odataPlugin being applied\r\n   */\r\n  defineConstProperty(edm, 'odata', (() => {\r\n    const {\r\n      ResourceIdentifier,\r\n      Navigation,\r\n    } = edm.resourceIdentifiers;\r\n\r\n    defineProducedPropertyOnClass(\r\n      ResourceIdentifier, 'odataURL',\r\n      /**\r\n       * @memberof ResourceIdentifier#\r\n       * @this ResourceIdentifier\r\n       * @returns {String} The URL to access the OData resource\r\n       */\r\n      function () { // eslint-disable-line func-names\r\n        return url.join(odataRootURL, this.path);\r\n      }\r\n    );\r\n\r\n    function getCollection({\r\n      top = 20,\r\n      count = true,\r\n      // Contact zhbliu@microsoft.com for adding more options here\r\n      // TODO:\r\n      //   filter, select (auto use $expand when nessasary), orderby\r\n      //   we should avoid random query params like SegmentationTypes, startDate, endDate, etc\r\n    } = {}) {\r\n      return odata.get(this.odataURL, processOptions({\r\n        data: {\r\n          $top: top,\r\n          $count: count,\r\n        },\r\n      })).catch(rethrowError);\r\n    }\r\n\r\n    function getItem() {\r\n      return odata.get(this.odataURL, processOptions()).catch(rethrowError);\r\n    }\r\n\r\n    // edm.currentCustomer.Accounts is an instance of ResourceIdentifier\r\n    // usage:\r\n    // edm.currentCustomer.Accounts.get({ data: { $top: 20 } })\r\n    // TODO:\r\n    //   * type enrichment, for example, 'Active' => Enum.CampaignStatus'Active'\r\n    //   * type check\r\n    //   * cache and onChange event on response\r\n    ResourceIdentifier.prototype.get = function get(options) {\r\n      return this.type instanceof edm.types.CollectionType ?\r\n        getCollection.call(this, options) :\r\n        getItem.call(this, options);\r\n    };\r\n\r\n    // usage:\r\n    // edm.currentCustomer.Accounts.findAll({ limit: 20 }), align with jsdata\r\n    // TODO:\r\n    //   * refine available options, jsdata aligned arguments\r\n    //   * jsdata aligned response\r\n    ResourceIdentifier.prototype.findAll = function findAll(query) {\r\n      return this.get({ top: query.limit });\r\n    };\r\n\r\n    defineProducedPropertyOnClass(\r\n      Navigation, 'odataURL',\r\n      /**\r\n       * @memberof Navigation#\r\n       * @this Navigation\r\n       * @returns {String} The URL to access the OData resource\r\n       */\r\n      function () { // eslint-disable-line func-names\r\n        return url.join(odataRootURL, this.path);\r\n      }\r\n    );\r\n\r\n    // put the plugin indicator\r\n    return {};\r\n  })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__84__;","module.exports = __WEBPACK_EXTERNAL_MODULE__60__;","export { odataPlugin } from './src/index';\r\n","/**\r\n * The OData plugin module\r\n * @module component/edm-odata/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n  hasOwnProperty,\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { resIdsPlugin } from '@bingads-webui/edm-resource-identifiers';\r\nimport { odataCachePlugin } from './cache';\r\n\r\n// support a mongoDB like orderby object for now: { age : -1, name: 1 }\r\n// for backward compatibility, support array format: [['age', 'desc'], ['name', 'asc]]\r\nfunction parseOrderBy(orderby) {\r\n  function lowerCaseOrderValue(value) {\r\n    return _.map(value, (v, index) => (index === 1 ? v.toLowerCase() : v));\r\n  }\r\n\r\n  if (_.isEmpty(orderby)) {\r\n    return {};\r\n  }\r\n\r\n  let $orderby;\r\n  if (_.isArray(orderby)) {\r\n    $orderby = _.map(orderby, value => lowerCaseOrderValue(value).join(' ')).join(',');\r\n  } else {\r\n    $orderby = _.map(orderby, (value, key) => `${key} ${value > 0 ? 'asc' : 'desc'}`).join(',');\r\n  }\r\n\r\n  return {\r\n    $orderby,\r\n  };\r\n}\r\n\r\n// TODO: [yaoyao] add support to parse filter object\r\nfunction parseFilter(filter) {\r\n  if (_.isEmpty(filter) || _.isEmpty(filter.where)) {\r\n    return {};\r\n  }\r\n\r\n  return {\r\n    $filter: filter.where,\r\n  };\r\n}\r\n\r\nfunction parseTop(top) {\r\n  if (!top) {\r\n    return {};\r\n  }\r\n\r\n  return {\r\n    $top: top,\r\n  };\r\n}\r\n\r\nfunction parseSkip(skip) {\r\n  if (!skip) {\r\n    return {};\r\n  }\r\n\r\n  return {\r\n    $skip: skip,\r\n  };\r\n}\r\n\r\nfunction parseCount(count) {\r\n  if (count === undefined) {\r\n    return {};\r\n  }\r\n\r\n  return {\r\n    $count: count,\r\n  };\r\n}\r\n\r\nfunction parseSelect(select, resource) {\r\n  if (!select) return {};\r\n  const parsed = {};\r\n  const elementType = resource.type.elementType ? resource.type.elementType : resource.type;\r\n  const { navigationPropertyNames } = elementType;\r\n  const $select = select.filter(item => !_.contains(navigationPropertyNames, item)).join(',');\r\n  const $expand = select.filter(item => _.contains(navigationPropertyNames, item)).join(',');\r\n\r\n  if ($select.length) {\r\n    parsed.$select = $select;\r\n  }\r\n\r\n  if ($expand.length) {\r\n    parsed.$expand = $expand;\r\n  }\r\n\r\n  return parsed;\r\n}\r\n\r\nfunction parseSearch(search) {\r\n  if (!search) {\r\n    return {};\r\n  }\r\n  return { $search: search };\r\n}\r\n\r\n// TODO: make all the legacy findall call related logic to a separate edm plugin package\r\n// backward compatibility for legacy grid jsdata resource finall call\r\nconst legacyJsDataResultProcess = (response) => {\r\n  const result = response.value.slice();\r\n  Object.defineProperty(result, 'totalCount', {\r\n    value: response['@odata.count'],\r\n    enumerable: false,\r\n  });\r\n  Object.defineProperty(result, 'raw', {\r\n    value: response,\r\n    enumerable: false,\r\n  });\r\n  return result;\r\n};\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply the plugin to\r\n * @param {String} rootURL - The root URL of the OData service\r\n * @param {object} dependants - The entity dependency relations\r\n * @param {object} processOptions - The options to process response and error\r\n * @return {Void} nothing to return\r\n */\r\nexport function odataPlugin(edm, rootURL, dependants = {}, {\r\n  processResponse = _.identity,\r\n  processError = _.identity,\r\n  processOptions = _.identity,\r\n} = {}) {\r\n  const odataRootURL = rootURL.replace(/\\/*$/, '');\r\n  if (hasOwnProperty(edm, 'odata')) {\r\n    return;\r\n  }\r\n\r\n  const wrapODataMethod = (method, resource) =>\r\n    function wrappedODataMethod(odataURL, options) {\r\n      return method(odataURL, processOptions(options, resource))\r\n        .then(response => processResponse(response, resource))\r\n        .catch((error) => {\r\n          throw processError(error, resource);\r\n        });\r\n    };\r\n\r\n  odataCachePlugin(edm, dependants, {\r\n    fetchEntity: (resource, {\r\n      select,\r\n    }) => wrapODataMethod(odata.get, resource)(resource.odataURL, {\r\n      data: {\r\n        ...parseSelect(select, resource),\r\n      },\r\n    }),\r\n    patchEntity: (resource, {\r\n      select,\r\n    }, update) => wrapODataMethod(odata.patch, resource)(resource.odataURL, {\r\n      data: update,\r\n      urlParameters: {\r\n        ...parseSelect(select, resource),\r\n      },\r\n    }),\r\n    createEntity: (collectionResource, {\r\n      select,\r\n    }, data) => wrapODataMethod(odata.post, collectionResource)(collectionResource.odataURL, {\r\n      data,\r\n      urlParameters: {\r\n        ...parseSelect(select, collectionResource),\r\n      },\r\n    }),\r\n    deleteEntity: resource => wrapODataMethod(odata.delete, resource)(resource.odataURL),\r\n    fetchCollection: (collectionResource, {\r\n      top,\r\n      skip,\r\n      count,\r\n      orderby,\r\n      filter,\r\n      select,\r\n      search,\r\n      ...others\r\n    }) => wrapODataMethod(odata.get, collectionResource)(collectionResource.odataURL, {\r\n      data: {\r\n        $top: top,\r\n        $skip: skip,\r\n        $count: count,\r\n        ...parseOrderBy(orderby),\r\n        ...parseFilter(filter),\r\n        ...parseSelect(select, collectionResource),\r\n        ...parseSearch(search),\r\n        ...others,\r\n      },\r\n    }),\r\n    action: (collectionResource, {\r\n      top,\r\n      skip,\r\n      count,\r\n      orderby,\r\n      filter,\r\n      select,\r\n      payload,\r\n    }) => wrapODataMethod(odata.post, collectionResource)(collectionResource.odataURL, {\r\n      data: payload,\r\n      urlParameters: {\r\n        ...parseTop(top),\r\n        ...parseSkip(skip),\r\n        ...parseCount(count),\r\n        ...parseOrderBy(orderby),\r\n        ...parseFilter(filter),\r\n        ...parseSelect(select, collectionResource),\r\n      },\r\n    }),\r\n  });\r\n\r\n  const {\r\n    getEntity,\r\n    postEntity,\r\n    destroyEntityAsPromise,\r\n    entityAction,\r\n    getCollection,\r\n    collectionAction,\r\n  } = edm['odata.cache'];\r\n\r\n  resIdsPlugin(edm);\r\n\r\n  /**\r\n   * @name edm\r\n   * @property {Object} odata - A dummy indicator for odataPlugin being applied\r\n   */\r\n  defineConstProperty(edm, 'odata', (() => {\r\n    const {\r\n      ResourceIdentifier,\r\n      CollectionResourceIdentifier,\r\n      Navigation,\r\n    } = edm.resourceIdentifiers;\r\n\r\n    defineProducedPropertyOnClass(\r\n      ResourceIdentifier, 'odataURL',\r\n      /**\r\n       * @memberof ResourceIdentifier#\r\n       * @this ResourceIdentifier\r\n       * @returns {String} The URL to access the OData resource\r\n       */\r\n      function () { // eslint-disable-line func-names\r\n        return url.join(odataRootURL, this.path);\r\n      }\r\n    );\r\n\r\n    // edm.currentCustomer.Accounts is an instance of ResourceIdentifier\r\n    // usage:\r\n    // edm.currentCustomer.Accounts.get({ top: 20, skip: 10 })\r\n    // TODO:\r\n    //   * type enrichment, for example, 'Active' => Enum.CampaignStatus'Active'\r\n    //   * type check\r\n    //   * cache and onChange event on response\r\n    CollectionResourceIdentifier.prototype.get = function get({\r\n      top = 20,\r\n      skip = 0,\r\n      count = true,\r\n      // when null means default response\r\n      // most likely it would includes all non navigation property and exclude all navigation ones\r\n      select = null,\r\n      //   we should avoid random query params like SegmentationTypes, startDate, endDate, etc\r\n      filter = null,\r\n      orderby = null,\r\n      search = null,\r\n      ...others\r\n    } = {}, hardResetData, bypassCache) {\r\n      return getCollection(this, {\r\n        top,\r\n        skip,\r\n        count,\r\n        select,\r\n        filter,\r\n        orderby,\r\n        search,\r\n        ...others,\r\n      }, hardResetData, bypassCache);\r\n    };\r\n\r\n    ResourceIdentifier.prototype.get = function get({\r\n      // when null means default response\r\n      // most likely it would includes all non navigation property and exclude all navigation ones\r\n      select = null,\r\n    } = {}, hardResetData, bypassCache) {\r\n      return getEntity(this, {\r\n        select,\r\n      }, hardResetData, bypassCache);\r\n    };\r\n\r\n    ResourceIdentifier.prototype.patch = function patch(data, {\r\n      select = null,\r\n    } = {}, bypassCache) {\r\n      const cacheItem = getEntity(this, {\r\n        select,\r\n      }, bypassCache);\r\n      return cacheItem.update(data);\r\n    };\r\n\r\n    // NOTE: likezh: DELETE operation returns a Promise, not an observable.\r\n    // See comments in cache.js.\r\n    ResourceIdentifier.prototype.destroyAsPromise = function destroy() {\r\n      return destroyEntityAsPromise(this);\r\n    };\r\n\r\n    ResourceIdentifier.prototype.$_callableMakeCall = function $callableMakeCall({\r\n      top,\r\n      skip,\r\n      count,\r\n      orderby = null,\r\n      filter = null,\r\n      select = null,\r\n      payload,\r\n      hardResetData,\r\n      bypassCache,\r\n      // custom query options (only for FunctionType, for ActionType use payload for custom parameters)\r\n      startDate,\r\n      endDate,\r\n    } = {}) {\r\n      if (this.type instanceof edm.types.CollectionType) {\r\n        if (this.navigation.source.type instanceof edm.types.ActionType) {\r\n          return collectionAction(this, {\r\n            top: top || 20,\r\n            skip: skip || 0,\r\n            count: count === undefined ? true : count,\r\n            orderby,\r\n            filter,\r\n            select,\r\n            payload,\r\n          }, bypassCache);\r\n        } else if (this.navigation.source.type instanceof edm.types.FunctionType) {\r\n          return getCollection(this, {\r\n            top: top || 20,\r\n            skip: skip || 0,\r\n            count: count === undefined ? true : count,\r\n            orderby,\r\n            filter,\r\n            select,\r\n            startDate,\r\n            endDate,\r\n          }, hardResetData, bypassCache);\r\n        }\r\n      }\r\n\r\n      // In theory, we should not have param like top, count, filter and orderby\r\n      // for none collectionType. But the Odata metadata have some incorrect information\r\n      // that return type of collection is marked as none collection\r\n      if (this.navigation.source.type instanceof edm.types.ActionType) {\r\n        return entityAction(this, {\r\n          top,\r\n          skip,\r\n          count,\r\n          orderby,\r\n          filter,\r\n          select,\r\n          payload,\r\n        }, bypassCache);\r\n      }\r\n\r\n      return getEntity(this, {\r\n        top,\r\n        skip,\r\n        count,\r\n        orderby,\r\n        filter,\r\n        select,\r\n      }, hardResetData, bypassCache);\r\n    };\r\n\r\n    ResourceIdentifier.prototype.$makeCall = function $makeCall({\r\n      query,\r\n      functionParams,\r\n      payload,\r\n      hardResetData,\r\n      bypassCache,\r\n    } = {}) {\r\n      return this.$call(functionParams).$_callableMakeCall({\r\n        ...query,\r\n        payload,\r\n        hardResetData,\r\n        bypassCache,\r\n      });\r\n    };\r\n\r\n    // align with jsdata, to ensure backward compatibility with jsdata data source.\r\n    ResourceIdentifier.prototype.findAll = function findAll(query = {}) {\r\n      if (this.type instanceof edm.types.ActionType) {\r\n        return this.$makeCall({\r\n          query: {\r\n            top: query.limit || 20,\r\n            skip: query.offset || 0,\r\n            count: true,\r\n            orderby: query.orderBy,\r\n            filter: query.filter,\r\n            select: query.select,\r\n          },\r\n          payload: query.query,\r\n        }).toPromise().then(legacyJsDataResultProcess);\r\n      }\r\n      throw new Error('findall call for this type is not suported');\r\n    };\r\n\r\n    defineProducedPropertyOnClass(CollectionResourceIdentifier, 'idAttribute', function idAttribute() {\r\n      return this.type.elementType.key;\r\n    });\r\n\r\n    CollectionResourceIdentifier.prototype.post = function post(data, {\r\n      select = null,\r\n    } = {}) {\r\n      return postEntity(this, {\r\n        select,\r\n      }, data);\r\n    };\r\n\r\n    // usage:\r\n    // edm.currentCustomer.Accounts.findAll({ limit: 20 }), align with jsdata\r\n    // TODO:\r\n    //   * refine available options, jsdata aligned arguments\r\n    CollectionResourceIdentifier.prototype.findAll = function findAll(query = {}) {\r\n      return this.get({ top: query.limit }).toPromise().then(legacyJsDataResultProcess);\r\n    };\r\n\r\n    // usage:\r\n    // edm.currentCustomer.Accounts.update(123, { Name: 'another name' }), align with jsdata\r\n    CollectionResourceIdentifier.prototype.update = function update(id, data) {\r\n      return this.$withKey(id).patch(data).toPromise();\r\n    };\r\n\r\n    defineProducedPropertyOnClass(\r\n      Navigation, 'odataURL',\r\n      /**\r\n       * @memberof Navigation#\r\n       * @this Navigation\r\n       * @returns {String} The URL to access the OData resource\r\n       */\r\n      function () { // eslint-disable-line func-names\r\n        return url.join(odataRootURL, this.path);\r\n      }\r\n    );\r\n\r\n    // put the plugin indicator\r\n    return {\r\n      odataRootURL,\r\n    };\r\n  })());\r\n}\r\n","import {\r\n  defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport stringify from 'json-stable-stringify';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { CollectionCacheItem, EntityCacheItem } from './server-call-cache-item';\r\nimport { ObservableCache } from './observable-cache';\r\nimport { CacheEvent } from './cache-event';\r\n\r\nexport function odataCachePlugin(edm, dependants, {\r\n  fetchEntity,\r\n  patchEntity,\r\n  createEntity,\r\n  deleteEntity,\r\n  fetchCollection,\r\n  action,\r\n}) {\r\n  const entityDeps = dependants || {};\r\n\r\n  defineConstProperty(edm, 'odata.cache', (() => {\r\n    // TODO: when collection cache is ready, use the response to fill up entity cache\r\n    const collectionCache = new ObservableCache();\r\n    const cacheEvent = new CacheEvent();\r\n\r\n    function getCollection(collectionResource, options, hardResetCacheData, bypassCache) {\r\n      const typeName = collectionResource.type.elementType.name;\r\n      const { path } = collectionResource;\r\n      const stringifiedOptions = stringify(options);\r\n      const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n      const item = collectionCache.get(cacheKeyPath);\r\n      if (item && !bypassCache) {\r\n        if (hardResetCacheData) {\r\n          item.setData(hardResetCacheData);\r\n        }\r\n        return item;\r\n      }\r\n      const newItem = new CollectionCacheItem({\r\n        fetch: () => fetchCollection(collectionResource, options),\r\n        afterSubscribe: cache => collectionCache.observerAdded(cache, cacheKeyPath),\r\n        afterUnsubscribe: cache => collectionCache.observerReduced(cache, cacheKeyPath),\r\n        hardResetCacheData,\r\n      });\r\n      collectionCache.set(cacheKeyPath, newItem);\r\n      return newItem;\r\n    }\r\n\r\n    function collectionAction(collectionResource, options, bypassCache) {\r\n      const typeName = collectionResource.type.elementType.name;\r\n      const { path } = collectionResource;\r\n      const stringifiedOptions = stringify(options);\r\n      const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n      const item = collectionCache.get(cacheKeyPath);\r\n      if (item && !bypassCache) {\r\n        return item;\r\n      }\r\n      const newItem = new CollectionCacheItem({\r\n        fetch: () => action(collectionResource, options),\r\n        afterSubscribe: cache => collectionCache.observerAdded(cache, cacheKeyPath),\r\n        afterUnsubscribe: cache => collectionCache.observerReduced(cache, cacheKeyPath),\r\n      });\r\n      collectionCache.set(cacheKeyPath, newItem);\r\n      return newItem;\r\n    }\r\n\r\n    const entityCache = new ObservableCache();\r\n\r\n    function invalidateCollectionCache(typeName, skipEntityCallPaths) {\r\n      collectionCache.invalidateObservedCache(typeName, skipEntityCallPaths);\r\n\r\n      Object.keys(collectionCache.noObservers.entries).forEach((key) => {\r\n        if (JSON.parse(key)[0] === typeName) {\r\n          collectionCache.invalidateNoObserverCache(key);\r\n        }\r\n      });\r\n    }\r\n\r\n    function invalidateEntityCache(typeName, id, stringifiedOptions, skipEntityCallPaths) {\r\n      const forAll = !id;\r\n\r\n      if (entityCache.observedCache[typeName]) {\r\n        if (forAll) {\r\n          entityCache.invalidateObservedCache(typeName, skipEntityCallPaths);\r\n        } else {\r\n          entityCache.invalidateObservedCacheById(typeName, id, stringifiedOptions, skipEntityCallPaths);\r\n        }\r\n      }\r\n\r\n      Object.keys(entityCache.noObservers.entries).forEach((key) => {\r\n        const [type, parsedId, options] = JSON.parse(key);\r\n\r\n        if (type === typeName\r\n          && (forAll || (parsedId === id && options !== stringifiedOptions))) {\r\n          entityCache.invalidateNoObserverCache(key);\r\n        }\r\n      });\r\n    }\r\n\r\n    function invalidate(typeName, id, stringifiedOptions, context, skipEntityCallPaths = null) {\r\n      // eslint-disable-next-line no-param-reassign\r\n      context[typeName] = true;\r\n      invalidateCollectionCache(typeName, skipEntityCallPaths);\r\n      invalidateEntityCache(typeName, id, stringifiedOptions, skipEntityCallPaths);\r\n\r\n      _.each(entityDeps[typeName], (type) => {\r\n        if (!context[type]) {\r\n          // eslint-disable-next-line no-param-reassign\r\n          context[type] = true;\r\n          invalidate(type, null, '', context, skipEntityCallPaths);\r\n        }\r\n      });\r\n      cacheEvent.notify('invalidate', typeName);\r\n    }\r\n\r\n    function invalidateTypeCache(typeName, id = null, stringifiedOptions = '', skipEntityCallPaths = null) {\r\n      invalidate(typeName, id, stringifiedOptions, {}, skipEntityCallPaths);\r\n    }\r\n\r\n    function getEntity(resource, options, hardResetCacheData, bypassCache) {\r\n      const typeName = resource.type.name;\r\n      // entity odata function call will use the api, in this case we need to use path as hash key\r\n      const idOrPath = resource.navigation.key || resource.path;\r\n      const stringifiedOptions = stringify(options);\r\n      const cacheKeyPath = [typeName, idOrPath, stringifiedOptions];\r\n      const item = entityCache.get(cacheKeyPath);\r\n      if (item && !bypassCache) {\r\n        if (hardResetCacheData) {\r\n          item.setData(hardResetCacheData);\r\n        }\r\n        return item;\r\n      }\r\n      const newItem = new EntityCacheItem({\r\n        fetch: () => fetchEntity(resource, options),\r\n        patch: update => patchEntity(resource, options, update)\r\n          .tap(() => invalidateTypeCache(typeName, idOrPath, stringifiedOptions)),\r\n        afterSubscribe: cache => entityCache.observerAdded(cache, cacheKeyPath),\r\n        afterUnsubscribe: cache => entityCache.observerReduced(cache, cacheKeyPath),\r\n        hardResetCacheData,\r\n      });\r\n      entityCache.set(cacheKeyPath, newItem);\r\n      return newItem;\r\n    }\r\n\r\n    function entityAction(resource, options, bypassCache) {\r\n      const typeName = resource.type.name;\r\n      const { path } = resource.navigation;\r\n      const stringifiedOptions = stringify(options);\r\n      const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n      const item = entityCache.get(cacheKeyPath);\r\n      if (item && !bypassCache) {\r\n        return item;\r\n      }\r\n      const newItem = new EntityCacheItem({\r\n        fetch: () => action(resource, options),\r\n        afterSubscribe: cache => entityCache.observerAdded(cache, cacheKeyPath),\r\n        afterUnsubscribe: cache => entityCache.observerReduced(cache, cacheKeyPath),\r\n      });\r\n      entityCache.set(cacheKeyPath, newItem);\r\n      return newItem;\r\n    }\r\n\r\n    function postEntity(collectionResource, options, data) {\r\n      const stringifiedOptions = stringify(options);\r\n      const entityPromise = createEntity(collectionResource, options, data);\r\n      const keyProperty = collectionResource.type.elementType.key;\r\n      const typeName = collectionResource.type.elementType.name;\r\n      const resourcePromise = entityPromise\r\n        .then(entity => collectionResource.$withKey(entity[keyProperty]));\r\n      let fetchFirstCalledAndPatchNotCalled = true;\r\n      const newItem = new EntityCacheItem({\r\n        fetch: () => {\r\n          if (fetchFirstCalledAndPatchNotCalled) {\r\n            fetchFirstCalledAndPatchNotCalled = false;\r\n            return entityPromise;\r\n          }\r\n          return resourcePromise.then(resource => fetchEntity(resource, options));\r\n        },\r\n        patch: (update) => {\r\n          fetchFirstCalledAndPatchNotCalled = false;\r\n          return resourcePromise\r\n            .tap(resource => invalidateTypeCache(\r\n              typeName,\r\n              resource.navigation.key,\r\n              stringifiedOptions\r\n            ))\r\n            .then(resource => patchEntity(resource, options, update));\r\n        },\r\n      });\r\n      resourcePromise.then((resource) => {\r\n        const id = resource.navigation.key;\r\n        const cacheKeyPath = [typeName, id, stringifiedOptions];\r\n\r\n        newItem.afterSubscribe = cache => entityCache.observerAdded(cache, cacheKeyPath);\r\n        newItem.afterUnsubscribe = cache => entityCache.observerReduced(cache, cacheKeyPath);\r\n        entityCache.set(cacheKeyPath, newItem);\r\n        invalidateTypeCache(typeName, id, stringifiedOptions);\r\n      });\r\n      return newItem;\r\n    }\r\n\r\n    function destroyEntityAsPromise(resource) {\r\n      const typeName = resource.type.name;\r\n      const id = resource.navigation.key;\r\n\r\n      // NOTE: likezh: for delete, since the effect of deletion will be an entity being removed,\r\n      // it is not useful to keep the call in cache. Hence we're directly returning a Promise here.\r\n      return new Promise((resolve, reject) => {\r\n        deleteEntity(resource)\r\n          .then(() => {\r\n            invalidateTypeCache(typeName, id, '');\r\n            resolve();\r\n          })\r\n          .catch(err => reject(err));\r\n      });\r\n    }\r\n\r\n    return {\r\n      getEntity,\r\n      postEntity,\r\n      destroyEntityAsPromise,\r\n      entityAction,\r\n      getCollection,\r\n      collectionAction,\r\n      invalidateTypeCache,\r\n      cacheEvent,\r\n    };\r\n  })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__75__;","import { noop } from 'underscore';\r\nimport { Observable } from '@bingads-webui-universal/observable';\r\n\r\n/**\r\n * make a server call and setup the cache item state\r\n * @param {Function} call function returns a Promise of data\r\n * @returns {Promise} a resolved promise\r\n */\r\nfunction makeCall(call) {\r\n  this.state.status = 'PENDING';\r\n  return call()\r\n    .then((data) => {\r\n      this.setData(data);\r\n\r\n      return null;\r\n    })\r\n    .catch((err) => {\r\n      this.observers.forEach((item) => {\r\n        item.error(err);\r\n      });\r\n      this.state.status = 'ERROR';\r\n      this.state.error = err;\r\n    });\r\n}\r\n\r\nclass CacheItem extends Observable {\r\n  constructor({\r\n    fetch,\r\n    afterSubscribe = noop,\r\n    afterUnsubscribe = noop,\r\n    hardResetCacheData,\r\n  }) {\r\n    super((observer) => {\r\n      this.observers.add(observer);\r\n      this.afterSubscribe(this);\r\n      if (this.state.status === 'WAITING') {\r\n        if (hardResetCacheData) {\r\n          this.setData(hardResetCacheData);\r\n        } else {\r\n          this.invalidate();\r\n        }\r\n      } else if (this.state.status === 'READY') {\r\n        observer.next(this.state.data);\r\n      } else if (this.state.status === 'ERROR') {\r\n        observer.error(this.state.error);\r\n      }\r\n      return () => {\r\n        this.observers.delete(observer);\r\n        this.afterUnsubscribe(this);\r\n      };\r\n    });\r\n    this.fetch = fetch;\r\n    // eslint-disable-next-line no-undef\r\n    this.observers = new Set();\r\n    this.afterSubscribe = afterSubscribe;\r\n    this.afterUnsubscribe = afterUnsubscribe;\r\n    this.state = {\r\n      // WAITING - before any subscription\r\n      // PENDING - has subscription, call made but not responded\r\n      // READY - already has data\r\n      // ERROR - already has error\r\n      status: 'WAITING',\r\n      data: null,\r\n      error: null,\r\n    };\r\n  }\r\n\r\n  setData(data) {\r\n    this.observers.forEach((item) => {\r\n      item.next(data);\r\n    });\r\n    this.state.status = 'READY';\r\n    this.state.data = data;\r\n\r\n    return null;\r\n  }\r\n\r\n  invalidate() {\r\n    if (this.observers.size === 0) {\r\n      this.state.status = 'WAITING';\r\n    } else {\r\n      makeCall.call(this, () => this.fetch());\r\n    }\r\n  }\r\n\r\n  hasObservers() {\r\n    return this.observers.size > 0;\r\n  }\r\n}\r\n\r\nexport class CollectionCacheItem extends CacheItem {\r\n}\r\n\r\nclass PatchEntityCacheItem extends Observable {\r\n  constructor() {\r\n    super((observer) => {\r\n      this.observers.add(observer);\r\n      if (this.state.status === 'READY') {\r\n        observer.next(this.state.data);\r\n      } else if (this.state.status === 'ERROR') {\r\n        observer.error(this.state.error);\r\n      }\r\n      return () => {\r\n        this.observers.delete(observer);\r\n      };\r\n    });\r\n    // eslint-disable-next-line no-undef\r\n    this.observers = new Set();\r\n    this.state = {\r\n      // WAITING - before any subscription\r\n      // READY - already has data\r\n      // ERROR - already has error\r\n      status: 'WAITING',\r\n      data: null,\r\n      error: null,\r\n    };\r\n  }\r\n\r\n  next(data) {\r\n    this.observers.forEach((item) => {\r\n      item.next(data);\r\n    });\r\n    this.state.status = 'READY';\r\n    this.state.data = data;\r\n  }\r\n\r\n  error(err) {\r\n    this.observers.forEach((item) => {\r\n      item.error(err);\r\n    });\r\n    this.state.status = 'ERROR';\r\n    this.state.error = err;\r\n  }\r\n}\r\n\r\nexport class EntityCacheItem extends CacheItem {\r\n  constructor({\r\n    fetch,\r\n    patch,\r\n    afterSubscribe = noop,\r\n    afterUnsubscribe = noop,\r\n    hardResetCacheData,\r\n  }) {\r\n    super({\r\n      fetch,\r\n      afterSubscribe,\r\n      afterUnsubscribe,\r\n      hardResetCacheData,\r\n    });\r\n    this.patch = patch;\r\n  }\r\n\r\n  update(update) {\r\n    const patchEntityCacheItem = new PatchEntityCacheItem();\r\n\r\n    const originalStatus = this.state.status;\r\n    this.state.status = 'PENDING';\r\n    this.patch(update)\r\n      .then((data) => {\r\n        this.observers.forEach((item) => {\r\n          item.next(data);\r\n        });\r\n        this.state.status = 'READY';\r\n        this.state.data = data;\r\n      })\r\n      .catch((err) => {\r\n        patchEntityCacheItem.error(err);\r\n        this.state.status = originalStatus;\r\n      });\r\n\r\n    this.subscribe({\r\n      next: data => patchEntityCacheItem.next(data),\r\n      error: err => patchEntityCacheItem.error(err),\r\n    });\r\n\r\n    return patchEntityCacheItem;\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__77__;","import _ from 'underscore';\r\nimport { get, set } from '@bingads-webui-universal/primitive-utilities';\r\nimport stringify from 'json-stable-stringify';\r\nimport { TimeAwareCache, LRUReplacementStrategy } from '@bingads-webui-universal/time-aware-cache';\r\nimport { CACHE_SIZE, DEFAULT_TTL } from './constants';\r\n\r\nfunction deletePropertyPath(obj, path) {\r\n  let o = obj;\r\n  const { length } = path;\r\n  for (let i = 0; i < length - 1; i += 1) {\r\n    o = o[path[i]];\r\n\r\n    if (typeof o === 'undefined') {\r\n      return;\r\n    }\r\n  }\r\n  delete o[path[length - 1]];\r\n}\r\n\r\nexport class ObservableCache {\r\n  observedCache = {};\r\n  noObservers = new TimeAwareCache({\r\n    ttl: DEFAULT_TTL,\r\n    strategy: new LRUReplacementStrategy({ limit: CACHE_SIZE }),\r\n  });\r\n\r\n  set(path, item) {\r\n    if (item.hasObservers()) {\r\n      set(this.observedCache, path, item);\r\n    } else {\r\n      this.noObservers.set(stringify(path), item);\r\n    }\r\n  }\r\n\r\n  get(path) {\r\n    return get(this.observedCache, path) || this.noObservers.get(stringify(path));\r\n  }\r\n\r\n  observerAdded(item, path) {\r\n    if (item.observers.size === 1) {\r\n      this.noObservers.del(stringify(path));\r\n      set(this.observedCache, path, item);\r\n    }\r\n  }\r\n\r\n  observerReduced(item, path) {\r\n    if (item.observers.size === 0) {\r\n      deletePropertyPath(this.observedCache, path);\r\n      this.noObservers.set(stringify(path), item);\r\n    }\r\n  }\r\n\r\n  invalidateObservedCache(typeName, skipEntityCallPaths = null) {\r\n    const clearCacheKeys = [];\r\n    _.map(this.observedCache[typeName], (cacheItems, subKey) => {\r\n      const skipCall = skipEntityCallPaths && _.find(skipEntityCallPaths, path => subKey.includes(path) || `${typeName}s(${subKey})`.includes(path));\r\n      if (skipCall) {\r\n        clearCacheKeys.push(subKey);\r\n      } else {\r\n        _.each(cacheItems, (cacheItem) => {\r\n          cacheItem.invalidate();\r\n        });\r\n      }\r\n    });\r\n    clearCacheKeys.forEach((key) => {\r\n      delete this.observedCache[typeName][key];\r\n    });\r\n  }\r\n\r\n  invalidateObservedCacheById(typeName, id, stringifiedOptions, skipEntityCallPaths = null) {\r\n    const skipCall = skipEntityCallPaths && _.find(skipEntityCallPaths, path => `${typeName}s(${id})`.includes(path));\r\n    if (skipCall) {\r\n      delete this.observedCache[typeName][id];\r\n    } else {\r\n      _.each(this.observedCache[typeName][id], (cacheItem, options) => {\r\n        if (options !== stringifiedOptions) {\r\n          cacheItem.invalidate();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  invalidateNoObserverCache(key) {\r\n    const cache = this.noObservers.get(key);\r\n\r\n    if (cache) {\r\n      cache.invalidate();\r\n    }\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","export const CACHE_SIZE = 200;\r\nexport const LLT_EXPIRED = -1;\r\n// time to live defaults to 2 hours\r\nexport const DEFAULT_TTL = 2 * 60 * 60 * 1000;\r\n","import { Observable } from '@bingads-webui-universal/observable';\r\n\r\nexport class CacheEvent extends Observable {\r\n  constructor() {\r\n    super((observer) => {\r\n      this.observers.add(observer);\r\n      return () => {\r\n        this.observers.delete(observer);\r\n      };\r\n    });\r\n\r\n    // eslint-disable-next-line no-undef\r\n    this.observers = new Set();\r\n  }\r\n\r\n  notify(type, entity) {\r\n    this.observers.forEach((ob) => {\r\n      ob.next({\r\n        type,\r\n        entity,\r\n      });\r\n    });\r\n  }\r\n}\r\n","export { resIdsPlugin } from './src/index';\r\n","/**\r\n * the Reource Identifier plugin for entity-data-model\r\n * @module component/edm-resource-identifiers/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { Registry } from '@bingads-webui/registry';\r\nimport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation, createResourceIdentifier } from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {Void} nothing to return\r\n */\r\nexport function resIdsPlugin(edm) {\r\n  if (edm.resourceIdentifiers) {\r\n    return;\r\n  }\r\n\r\n  /**\r\n   * @name edm\r\n   * @property {Registry} resourceIdentifiers - A registry of all resource-identifiers\r\n   * @property {Class} resourceIdentifiers.Navigation - The base type of all navigations\r\n   * @property {Class} resourceIdentifiers.PropertyNavigation - The navigation following a property\r\n   * @property {Class} resourceIdentifiers.CastNavigation - The navigation following a type casting\r\n   * @property {Class} resourceIdentifiers.WithKeyNavigation\r\n   * - The navigation of selecting a single instance from an entity set\r\n   * @property {Class} resourceIdentifiers.CallNavigation - The navigation of calling a callable\r\n   * @property {Class} resourceIdentifiers.ResourceIdentifier\r\n   * - The base type of all resource-identifiers\r\n   */\r\n  defineConstProperty(edm, 'resourceIdentifiers', (() => {\r\n    const resourceIdentifiers = new Registry();\r\n    const Navigation = createNavigation();\r\n\r\n    /**\r\n     * @class PropertyNavigation\r\n     * @extends Navigation\r\n     * @property {Property} property - The property navigated with\r\n     */\r\n    class PropertyNavigation extends Navigation {\r\n      constructor({\r\n        source,\r\n        property,\r\n        name,\r\n      }) {\r\n        super({\r\n          source,\r\n        });\r\n        defineConstProperty(this, 'property', property);\r\n        defineConstProperty(this, 'name', name);\r\n        defineConstProperty(this, 'path', url.join(source.path, name));\r\n      }\r\n\r\n      toSelfJSON() {\r\n        return {\r\n          type: 'property',\r\n          name: this.name,\r\n        };\r\n      }\r\n\r\n      static defineOn(TypeResID, properties) {\r\n        _.each(properties, (property, name) => {\r\n          /**\r\n           * Navigation property factory for the defined property\r\n           * @memberof TypeResID#\r\n           * @this TypeResID\r\n           * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n           */\r\n          function navPropFactory() {\r\n            return new property.type.ResourceIdentifier({\r\n              navigation: new PropertyNavigation({ source: this, property, name }),\r\n            });\r\n          }\r\n\r\n          defineProducedPropertyOnClass(TypeResID, name, navPropFactory);\r\n        });\r\n      }\r\n    }\r\n\r\n\r\n    const CastNavigation = createCastNavigation(Navigation, url, edm);\r\n    const WithKeyNavigation = createWithKeyNavigation(Navigation);\r\n    const CallNavigation = createCallNavigation(Navigation, edm);\r\n    const ResourceIdentifier = createResourceIdentifier();\r\n\r\n    /**\r\n     * define ResourceIdentifier type for the given type\r\n     * @param {Type} type - An instance of one of the meta types\r\n     * @return {Class} the ResourceIdentifier class\r\n     */\r\n    function resourceIdentifierForType(type) {\r\n      // duck type, if the type has a \"baseType\", use its ResourceIdentifier as the super class\r\n      const Base = type.baseType ? type.baseType.ResourceIdentifier : ResourceIdentifier;\r\n\r\n      const AccessorType = class extends Base {\r\n      };\r\n\r\n      /**\r\n       * @name resId\r\n       * @type ResourceIdentifier\r\n       * @property {Type} type - The type associated with the ResourceIdentifier\r\n       */\r\n      defineConstProperty(AccessorType.prototype, 'type', type);\r\n\r\n      resourceIdentifiers.register(AccessorType, type.name);\r\n\r\n      return AccessorType;\r\n    }\r\n\r\n    // For each of the meta types defined by the type mixin, define the\r\n    // \"ResourceIdentifier\" property\r\n    _.each({\r\n\r\n      // the root class 'Type' don't have an ResourceIdentifier property\r\n      // Type: { factory() { } },\r\n\r\n      PrimitiveType: {\r\n\r\n        /**\r\n         * PrimitiveType ResourceIdentifier type factory\r\n         * @memberof PrimitiveType#\r\n         * @this PrimitiveType\r\n         * @returns {Class} The ResourceIdentifier type of the PrimitiveType\r\n         */\r\n        factory() {\r\n          const PrimitiveTypeResID = resourceIdentifierForType(this);\r\n\r\n          return PrimitiveTypeResID;\r\n        },\r\n      },\r\n\r\n      ObjectType: {\r\n\r\n        /**\r\n         * ObjectType ResourceIdentifier type factory\r\n         * @memberof ObjectType#\r\n         * @this ObjectType\r\n         * @returns {Class} The ResourceIdentifier type of the ObjectType\r\n         */\r\n        factory() {\r\n          const ObjectTypeResID = resourceIdentifierForType(this);\r\n\r\n          CastNavigation.defineOn(ObjectTypeResID);\r\n          PropertyNavigation.defineOn(ObjectTypeResID, this.properties);\r\n\r\n          return ObjectTypeResID;\r\n        },\r\n      },\r\n\r\n      // fallback to ObjectType.prototype.ResourceIdentifier\r\n      // EntityType: { factory () { } },\r\n\r\n      // fallback to ObjectType.prototype.ResourceIdentifier\r\n      // ComplexType: { factory () { } },\r\n\r\n      CollectionType: {\r\n\r\n        /**\r\n         * CollectionType ResourceIdentifier type factory\r\n         * @memberof CollectionType#\r\n         * @this CollectionType\r\n         * @returns {Class} the ResourceIdentifier type of the CollectionType\r\n         */\r\n        factory() {\r\n          const CollectionTypeResID = resourceIdentifierForType(this);\r\n\r\n          CastNavigation.defineOn(CollectionTypeResID);\r\n          // Only the entity sets can be navigated with keys\r\n          if (this.elementType instanceof edm.types.EntityType) {\r\n            WithKeyNavigation.defineOn(CollectionTypeResID);\r\n          }\r\n          PropertyNavigation.defineOn(CollectionTypeResID, this.properties);\r\n\r\n          return CollectionTypeResID;\r\n        },\r\n      },\r\n\r\n      CallableType: {\r\n\r\n        /**\r\n         * CallableType ResourceIdentifier type factory\r\n         * @memberof CallableType#\r\n         * @this CallableType\r\n         * @returns {Class} The ResourceIdentifier type of the CallableType\r\n         */\r\n        factory() {\r\n          const CallableTypeResID = resourceIdentifierForType(this);\r\n\r\n          CallNavigation.defineOn(CallableTypeResID);\r\n\r\n          return CallableTypeResID;\r\n        },\r\n      },\r\n\r\n    }, (def, typeName) => {\r\n      /**\r\n       * @name type\r\n       * @type Type\r\n       * @property {Class} ResourceIdentifier - The ResourceIdentifier type of the type\r\n       */\r\n      defineProducedPropertyOnClass(edm.types[typeName], 'ResourceIdentifier', def.factory);\r\n    });\r\n\r\n    _.chain(resourceIdentifiers)\r\n      .defineConstProperty('ResourceIdentifier', ResourceIdentifier)\r\n      .defineConstProperty('Navigation', Navigation)\r\n      .defineConstProperty('PropertyNavigation', PropertyNavigation)\r\n      .defineConstProperty('CastNavigation', CastNavigation)\r\n      .defineConstProperty('WithKeyNavigation', WithKeyNavigation)\r\n      .defineConstProperty('CallNavigation', CallNavigation)\r\n      .value();\r\n\r\n    return resourceIdentifiers;\r\n  })());\r\n}\r\n","export { resIdsPlugin } from './src/index';\r\n","/**\r\n * the Reource Identifier plugin for entity-data-model\r\n * @module component/edm-resource-identifiers/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n  defineConstProperty,\r\n  defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { Registry } from '@bingads-webui/registry';\r\nimport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation, createResourceIdentifier } from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {Void} nothing to return\r\n */\r\nexport function resIdsPlugin(edm) {\r\n  if (edm.resourceIdentifiers) {\r\n    return;\r\n  }\r\n\r\n  /**\r\n   * @name edm\r\n   * @property {Registry} resourceIdentifiers - A registry of all resource-identifiers\r\n   * @property {Class} resourceIdentifiers.Navigation - The base type of all navigations\r\n   * @property {Class} resourceIdentifiers.PropertyNavigation - The navigation following a property\r\n   * @property {Class} resourceIdentifiers.CastNavigation - The navigation following a type casting\r\n   * @property {Class} resourceIdentifiers.WithKeyNavigation\r\n   * - The navigation of selecting a single instance from an entity set\r\n   * @property {Class} resourceIdentifiers.CallNavigation - The navigation of calling a callable\r\n   * @property {Class} resourceIdentifiers.ResourceIdentifier\r\n   * - The base type of all resource-identifiers\r\n   */\r\n  defineConstProperty(edm, 'resourceIdentifiers', (() => {\r\n    const resourceIdentifiers = new Registry();\r\n    const Navigation = createNavigation();\r\n\r\n    /**\r\n     * @class PropertyNavigation\r\n     * @extends Navigation\r\n     * @property {Property} property - The property navigated with\r\n     */\r\n    class PropertyNavigation extends Navigation {\r\n      constructor({\r\n        source,\r\n        property,\r\n        name,\r\n      }) {\r\n        super({\r\n          source,\r\n        });\r\n        defineConstProperty(this, 'property', property);\r\n        defineConstProperty(this, 'name', name);\r\n        defineConstProperty(this, 'path', url.join(source.path, name));\r\n      }\r\n\r\n      toSelfJSON() {\r\n        return {\r\n          type: 'property',\r\n          name: this.name,\r\n        };\r\n      }\r\n\r\n      static defineOn(TypeResID, navigationProperties) {\r\n        _.each(navigationProperties, (property, name) => {\r\n          /**\r\n           * Navigation property factory for the defined property\r\n           * @memberof TypeResID#\r\n           * @this TypeResID\r\n           * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n           */\r\n          function navPropFactory() {\r\n            return new property.type.ResourceIdentifier({\r\n              navigation: new PropertyNavigation({ source: this, property, name }),\r\n            });\r\n          }\r\n\r\n          defineProducedPropertyOnClass(TypeResID, name, navPropFactory);\r\n        });\r\n      }\r\n    }\r\n\r\n    class CallableNavigation extends Navigation {\r\n      constructor({\r\n        source,\r\n        name,\r\n      }) {\r\n        super({\r\n          source,\r\n        });\r\n        defineConstProperty(this, 'name', name);\r\n        defineConstProperty(this, 'path', url.join(source.path, name));\r\n      }\r\n\r\n      static defineOn(TypeResID, callable) {\r\n        function defineCallableOn(resID, callableTypes) {\r\n          _.each(callableTypes, (type) => {\r\n            /**\r\n             * factory for the callables\r\n             * @memberof resID#\r\n             * @this resID\r\n             * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n             */\r\n            function factory() {\r\n              return new type.ResourceIdentifier({\r\n                navigation: new CallableNavigation({ source: this, name: type.callableName }),\r\n              });\r\n            }\r\n            defineProducedPropertyOnClass(resID, type.callableName, factory);\r\n          });\r\n        }\r\n        defineCallableOn(TypeResID, callable.actions);\r\n        defineCallableOn(TypeResID, callable.functions);\r\n      }\r\n    }\r\n\r\n    const CastNavigation = createCastNavigation(Navigation, url, edm);\r\n    const WithKeyNavigation = createWithKeyNavigation(Navigation);\r\n    const CallNavigation = createCallNavigation(Navigation, edm);\r\n    const ResourceIdentifier = createResourceIdentifier();\r\n\r\n    /**\r\n     * @class CollectionResourceIdentifier\r\n     * @property {Navigation} navigation\r\n     * - The navigation back tracking the parent ResourceIdentifier\r\n     */\r\n    class CollectionResourceIdentifier extends ResourceIdentifier {\r\n      /**\r\n       * Create a ResourceIdentifier\r\n       * @param {Object} [options] - The constructor options\r\n       * @param {Navigation} [options.navigation]\r\n       * - The navigation back tracking the parent ResourceIdentifier\r\n       * @return {Void} Nothing to return\r\n       */\r\n      constructor({\r\n        navigation,\r\n      } = {}) {\r\n        super({ navigation });\r\n      }\r\n    }\r\n\r\n    /**\r\n     * define ResourceIdentifier type for the given type\r\n     * @param {Type} type - An instance of one of the meta types\r\n     * @return {Class} the ResourceIdentifier class\r\n     */\r\n    function resourceIdentifierForType(type) {\r\n      // duck type, if the type has a \"baseType\", use its ResourceIdentifier as the super class\r\n      const DefaultBase = type instanceof edm.types.CollectionType ?\r\n        CollectionResourceIdentifier :\r\n        ResourceIdentifier;\r\n      const Base = type.baseType ? type.baseType.ResourceIdentifier : DefaultBase;\r\n\r\n      const AccessorType = class extends Base {\r\n      };\r\n\r\n      /**\r\n       * @name resId\r\n       * @type ResourceIdentifier\r\n       * @property {Type} type - The type associated with the ResourceIdentifier\r\n       */\r\n      defineConstProperty(AccessorType.prototype, 'type', type);\r\n\r\n      resourceIdentifiers.register(AccessorType, type.name);\r\n\r\n      return AccessorType;\r\n    }\r\n\r\n    // For each of the meta types defined by the type mixin, define the\r\n    // \"ResourceIdentifier\" property\r\n    _.each({\r\n\r\n      // the root class 'Type' don't have an ResourceIdentifier property\r\n      // Type: { factory() { } },\r\n\r\n      PrimitiveType: {\r\n\r\n        /**\r\n         * PrimitiveType ResourceIdentifier type factory\r\n         * @memberof PrimitiveType#\r\n         * @this PrimitiveType\r\n         * @returns {Class} The ResourceIdentifier type of the PrimitiveType\r\n         */\r\n        factory() {\r\n          const PrimitiveTypeResID = resourceIdentifierForType(this);\r\n\r\n          return PrimitiveTypeResID;\r\n        },\r\n      },\r\n\r\n      ObjectType: {\r\n\r\n        /**\r\n         * ObjectType ResourceIdentifier type factory\r\n         * @memberof ObjectType#\r\n         * @this ObjectType\r\n         * @returns {Class} The ResourceIdentifier type of the ObjectType\r\n         */\r\n        factory() {\r\n          const ObjectTypeResID = resourceIdentifierForType(this);\r\n\r\n          CastNavigation.defineOn(ObjectTypeResID);\r\n          PropertyNavigation.defineOn(ObjectTypeResID, this.navigationProperties);\r\n          if (this.callable) {\r\n            CallableNavigation.defineOn(ObjectTypeResID, this.callable);\r\n          }\r\n          return ObjectTypeResID;\r\n        },\r\n      },\r\n\r\n      // fallback to ObjectType.prototype.ResourceIdentifier\r\n      // EntityType: { factory () { } },\r\n\r\n      // fallback to ObjectType.prototype.ResourceIdentifier\r\n      // ComplexType: { factory () { } },\r\n\r\n      CollectionType: {\r\n\r\n        /**\r\n         * CollectionType ResourceIdentifier type factory\r\n         * @memberof CollectionType#\r\n         * @this CollectionType\r\n         * @returns {Class} the ResourceIdentifier type of the CollectionType\r\n         */\r\n        factory() {\r\n          const CollectionTypeResID = resourceIdentifierForType(this);\r\n\r\n          CastNavigation.defineOn(CollectionTypeResID);\r\n          // Only the entity sets can be navigated with keys\r\n          if (this.elementType instanceof edm.types.EntityType) {\r\n            WithKeyNavigation.defineOn(CollectionTypeResID);\r\n          }\r\n          PropertyNavigation.defineOn(CollectionTypeResID, this.navigationProperties);\r\n          if (this.callable) {\r\n            CallableNavigation.defineOn(CollectionTypeResID, this.callable);\r\n          }\r\n\r\n          return CollectionTypeResID;\r\n        },\r\n      },\r\n\r\n      CallableType: {\r\n\r\n        /**\r\n         * CallableType ResourceIdentifier type factory\r\n         * @memberof CallableType#\r\n         * @this CallableType\r\n         * @returns {Class} The ResourceIdentifier type of the CallableType\r\n         */\r\n        factory() {\r\n          const CallableTypeResID = resourceIdentifierForType(this);\r\n\r\n          CallNavigation.defineOn(CallableTypeResID);\r\n\r\n          return CallableTypeResID;\r\n        },\r\n      },\r\n\r\n    }, (def, typeName) => {\r\n      /**\r\n       * @name type\r\n       * @type Type\r\n       * @property {Class} ResourceIdentifier - The ResourceIdentifier type of the type\r\n       */\r\n      defineProducedPropertyOnClass(edm.types[typeName], 'ResourceIdentifier', def.factory);\r\n    });\r\n\r\n    _.chain(resourceIdentifiers)\r\n      .defineConstProperty('ResourceIdentifier', ResourceIdentifier)\r\n      .defineConstProperty('CollectionResourceIdentifier', CollectionResourceIdentifier)\r\n      .defineConstProperty('Navigation', Navigation)\r\n      .defineConstProperty('PropertyNavigation', PropertyNavigation)\r\n      .defineConstProperty('CastNavigation', CastNavigation)\r\n      .defineConstProperty('WithKeyNavigation', WithKeyNavigation)\r\n      .defineConstProperty('CallNavigation', CallNavigation)\r\n      .defineConstProperty('CallableNavigation', CallableNavigation)\r\n      .value();\r\n\r\n    return resourceIdentifiers;\r\n  })());\r\n}\r\n","export { createProperty, createParameter, createType, createPrimitiveType, createCollectionType,\r\n  compileProperties, compileParameters, createResolveType, ONEOF_TYPE_PREFIX } from './src/types-plugin-shared';\r\nexport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation,\r\n  createResourceIdentifier } from './src/resource-identifiers-shared';\r\n\r\n","import _ from 'underscore';\r\nimport { defineConstProperty } from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nexport const ONEOF_TYPE_PREFIX = '@ONEOF';\r\nconst COLLECTION_TYPE_POSTFIX = '@COLL';\r\n\r\nfunction isOneOfType(typeName) {\r\n  return typeName.indexOf(ONEOF_TYPE_PREFIX) === 0;\r\n}\r\n\r\nfunction hasPostfix(str, postfix) {\r\n  return str.slice(-postfix.length) === postfix;\r\n}\r\n\r\nfunction removePostfix(str, postfix) {\r\n  return str.slice(0, -postfix.length);\r\n}\r\n\r\nexport function createResolveType(oneOfTypes, types, OneOfType) {\r\n  return function resolveType(name, namespace) {\r\n    if (hasPostfix(name, COLLECTION_TYPE_POSTFIX)) {\r\n      return resolveType(removePostfix(name, COLLECTION_TYPE_POSTFIX), namespace).collectionType;\r\n    }\r\n\r\n    if (isOneOfType(name)) {\r\n      if (!oneOfTypes.has(name)) {\r\n        const prefixLength = ONEOF_TYPE_PREFIX.length + 1;\r\n        const typeNames = name.substr(prefixLength, name.length - prefixLength - 1).split(',');\r\n        // eslint-disable-next-line no-use-before-define\r\n        oneOfTypes.set(name, new OneOfType({ typeNames }));\r\n      }\r\n\r\n      return oneOfTypes.get(name);\r\n    }\r\n\r\n    return types.resolve(name, namespace);\r\n  };\r\n}\r\n\r\n/**\r\n * @typedef {Object} ParameterInfo\r\n * @property {String} typeName - The name of the parameter's type\r\n *\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @param {Object.<String, ParameterInfo>} parameters - The parameters to compile\r\n * @param {Object.Parameter} Parameter - The Parameter object\r\n * @return {Object.<String, Parameter>} A mapping for name to compiled Parameters\r\n */\r\nexport function compileParameters(parameters, Parameter = Object) {\r\n  const { namespace } = this;\r\n\r\n  return _.mapObject(parameters, ({ typeName }, name) =>\r\n    new Parameter({ name, namespace, typeName }));\r\n}\r\n\r\n/**\r\n * @typedef {Object} PropertyInfo\r\n * @property {String} typeName - The name of the propertie's type\r\n *\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @param {Object.<String, PropertyInfo>} properties - The properties to be compiled\r\n * @param {Object.Property} Property - The Property object\r\n * @return {Object.<String, Property>} a mapping for name to compiled Properties\r\n */\r\nexport function compileProperties(properties, Property = Object) {\r\n  const { namespace } = this;\r\n\r\n  return _.mapObject(properties, ({\r\n    typeName,\r\n  }, name) =>\r\n    new Property({\r\n      name,\r\n      typeName,\r\n      namespace,\r\n    }));\r\n}\r\n\r\nexport function createType(types) {\r\n/**\r\n * @class Type\r\n * @property {String} name - The qualified name of the type\r\n * @property {String} namespace - The namespace of the type\r\n * @property {String} shortName - The short name of the type\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\n  return class Type {\r\n    /**\r\n     * Create and register a type\r\n     * A side effect of Type creation is registering itself to the type registry\r\n     * @param {Object} options - The constructor options\r\n     * @param {String} options.name - The name of the type\r\n     * @return {void}\r\n     */\r\n    constructor({\r\n      name,\r\n    }) {\r\n      _.chain(this)\r\n        .defineConstProperty('name', name)\r\n        .defineConstProperty('namespace', Registry.getNamespace(name))\r\n        .defineConstProperty('shortName', Registry.getShortName(name))\r\n        .value();\r\n      types.register(this);\r\n    }\r\n  };\r\n}\r\n\r\nexport function createPrimitiveType(Superclass = Object) {\r\n  /**\r\n   * @class PrimitiveType\r\n   * @extends Type\r\n   * @property {Class} jsType - The corresponding JavaScript type\r\n   */\r\n  return class PrimitiveType extends Superclass {\r\n    /**\r\n     * Create a PrimitiveType\r\n     * @param {Object} options - The constructor options\r\n     * @param {String} options.name - The name of the type\r\n     * @param {Class} options.jsType - The JavaScript type of the primitive type\r\n     * @return {void}\r\n     */\r\n    constructor({\r\n      name,\r\n      jsType,\r\n    }) {\r\n      super({ name });\r\n      defineConstProperty(this, 'jsType', jsType);\r\n    }\r\n  };\r\n}\r\n\r\n\r\nexport function createProperty(resolveType) {\r\n  /**\r\n   * @class Property\r\n   * @property {String} name - The name of the property\r\n   * @property {String} typeName - The name of the property's type\r\n   * @property {Type} type - The type of the property\r\n   */\r\n  return class Property {\r\n    /**\r\n     * Create a property\r\n     * @param {Object} options - The constructor options\r\n     * @param {String} options.name - The name of the property\r\n     * @param {String} options.typeName - The name of the propertie's type\r\n     * @param {String} options.namespace - The namespace of the propertie's type\r\n     * @return {void}\r\n     */\r\n    constructor({\r\n      name,\r\n      typeName,\r\n      namespace,\r\n    }) {\r\n      _.chain(this)\r\n        .defineConstProperty('name', name)\r\n        .defineConstProperty('typeName', typeName)\r\n        .defineProducedProperty('type', () => resolveType(typeName, namespace))\r\n        .value();\r\n    }\r\n  };\r\n}\r\n\r\nexport function createParameter(resolveType) {\r\n  /**\r\n   * @class Parameter\r\n   * @property {String} name - The name of the parameter\r\n   * @property {String} typeName - The name of the paramter's type\r\n   * @property {type} type - The type of the parameter\r\n   */\r\n  return class Parameter {\r\n    /**\r\n     * Create a parameter\r\n     * @param {Object} options - The constructor options\r\n     * @param {String} options.name - The name of the parameter\r\n     * @param {String} options.typeName - The name of the parameter's type\r\n     * @param {String} options.namespace - The namespace of the parameter's type\r\n     * @return {void}\r\n     */\r\n    constructor({\r\n      name,\r\n      typeName,\r\n      namespace,\r\n    }) {\r\n      _.chain(this)\r\n        .defineConstProperty('name', name)\r\n        .defineConstProperty('typeName', typeName)\r\n        .defineProducedProperty('type', () => resolveType(typeName, namespace))\r\n        .value();\r\n    }\r\n  };\r\n}\r\n\r\nexport function createCollectionType(Superclass = Object, resolveType) {\r\n  /**\r\n   * @class CollectionType\r\n   * @extends ObjectType\r\n   * @property {String} elementTypeName - The name of the element type\r\n   * @property {Type} elementType - The type of the elements\r\n   */\r\n  return class CollectionType extends Superclass {\r\n    /**\r\n     * Create a CollectionType\r\n     * @param {Object} options - The constructor options\r\n     * @param {Object.<String, PropertyInfo>} options.properties - The property definition\r\n     * @param {String} options.baseTypeName - The name of the base type\r\n     * @param {String} options.elementTypeName - The name of the element type\r\n     * @return {void}\r\n     */\r\n    constructor({\r\n      properties,\r\n      baseTypeName,\r\n      elementTypeName,\r\n    }) {\r\n      super({\r\n        name: CollectionType.collectionTypeName(elementTypeName),\r\n        properties,\r\n        baseTypeName,\r\n      });\r\n      _.chain(this)\r\n        .defineConstProperty('elementTypeName', elementTypeName)\r\n        .defineProducedProperty('elementType', () => resolveType(this.elementTypeName, this.namespace))\r\n        .value();\r\n    }\r\n\r\n    /**\r\n     * Get the CollectionType's name from it's element type name\r\n     * @param {String} typeName - The name of the elementType\r\n     * @return {String} The name of the CollectionType\r\n     */\r\n    static collectionTypeName(typeName) {\r\n      return `${typeName}${COLLECTION_TYPE_POSTFIX}`;\r\n    }\r\n  };\r\n}\r\n","import _ from 'underscore';\r\nimport { defineConstProperty } from '@bingads-webui/reflection';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\n\r\nexport function createNavigation() {\r\n  /**\r\n   * @class Navigation\r\n   * @property {ResourceIdentifier} source - The source accessor navigated from\r\n   */\r\n  return class Navigation {\r\n    constructor({\r\n      source,\r\n    }) {\r\n      defineConstProperty(this, 'source', source);\r\n    }\r\n\r\n    toJSON() {\r\n      return [...this.source.toJSON(), this.toSelfJSON()];\r\n    }\r\n\r\n    toSelfJSON() {\r\n      throw new Error('I\\'m abstract');\r\n    }\r\n  };\r\n}\r\n\r\nexport function createCastNavigation(Superclass = Object, url, edm) {\r\n  /**\r\n   * @class CastNavigation\r\n   * @extends Navigation\r\n   * @property {Type} type - The type casting to\r\n   * @property {String} name - The type name used for casting\r\n   */\r\n  return class CastNavigation extends Superclass {\r\n    constructor({\r\n      source,\r\n      type,\r\n      name = type.name,\r\n    }) {\r\n      super({\r\n        source,\r\n      });\r\n\r\n      _.chain(this)\r\n        .defineConstProperty('type', type)\r\n        .defineConstProperty('name', name)\r\n        .value();\r\n\r\n      defineConstProperty(this, 'path', url.join(source.path, name));\r\n    }\r\n\r\n    toSelfJSON() {\r\n      return {\r\n        type: 'function',\r\n        name: CastNavigation.navigationName,\r\n        parameters: [this.name],\r\n      };\r\n    }\r\n\r\n    static get navigationName() {\r\n      return '$cast';\r\n    }\r\n\r\n    static defineOn(TypeResID) {\r\n      /**\r\n       * $cast navigation method of the TypeResID\r\n       * @memberof TypeResID#\r\n       * @this TypeResID\r\n       * @param {String} name - The name of the subclass\r\n       * @returns {TypeResID} The ResourceIdentifier to access the subclass object\r\n       */\r\n      function navCastMethod(name) {\r\n        const entityType = edm.types.resolve(name, this.type.namespace);\r\n        const type = TypeResID.prototype.type instanceof edm.types.CollectionType ?\r\n          entityType.collectionType :\r\n          entityType;\r\n        const navigation = new CastNavigation({ source: this, type: entityType, name });\r\n\r\n        return new type.ResourceIdentifier({ navigation });\r\n      }\r\n\r\n      defineConstProperty(TypeResID.prototype, CastNavigation.navigationName, navCastMethod);\r\n    }\r\n  };\r\n}\r\n\r\nexport function createWithKeyNavigation(Superclass = Object) {\r\n  /**\r\n   * @class WithKeyNavigation\r\n   * @extends Navigation\r\n   * @property {String|Number} key - The key of the selected entity\r\n   * @property {String|Number} ignoreKeyTypeInPath - By default false. If true, compose path following /<path>/<id>\r\n   */\r\n  return class WithKeyNavigation extends Superclass {\r\n    constructor({\r\n      source,\r\n      key,\r\n      ignoreKeyTypeInPath,\r\n    }) {\r\n      super({\r\n        source,\r\n      });\r\n\r\n      defineConstProperty(this, 'key', key);\r\n      defineConstProperty(this, 'path', (() => {\r\n        // In case people pass a decimal string for a integer key\r\n        // We cannot use parseInt directly, it would get a wrong number if the\r\n        // key is beyond Number.MAX_SAFE_INTEGER\r\n        if (_.isString(key)) {\r\n          if (ignoreKeyTypeInPath) {\r\n            return urlUtil.join(source.path, key);\r\n          }\r\n          const keyType = _.chain(source)\r\n            .result('type')\r\n            .result('elementType')\r\n            .result('keyProperty')\r\n            .result('typeName')\r\n            .value();\r\n\r\n          if (keyType === 'integer') {\r\n            if (key.match(/^[+-]?(0|[1-9][0-9]*)$/)) {\r\n              return `${source.path}(${key})`;\r\n            }\r\n          }\r\n          if (keyType === 'string') {\r\n            return `${source.path}('${key}')`;\r\n          }\r\n        }\r\n\r\n        return `${source.path}(${JSON.stringify(key)})`;\r\n      })());\r\n    }\r\n\r\n    toSelfJSON() {\r\n      return {\r\n        type: 'function',\r\n        name: WithKeyNavigation.navigationName,\r\n        parameters: [this.key],\r\n      };\r\n    }\r\n\r\n    static get navigationName() {\r\n      return '$withKey';\r\n    }\r\n\r\n    static defineOn(TypeResID) {\r\n      /**\r\n       * $withKey navigation method of the TypeResID\r\n       * @memberof TypeResID#\r\n       * @this TypeResID\r\n       * @param {String} key - The key of the element\r\n       * @param {Boolean} ignoreKeyTypeInPath - Decide how to add key to path\r\n       * @returns {ResourceIdentifier}\r\n       * The ResourceIdentifier to access the element with the given key\r\n       */\r\n      function navWithKeyMethod(key, ignoreKeyTypeInPath = false) {\r\n        const navigation = new WithKeyNavigation({ source: this, key, ignoreKeyTypeInPath });\r\n\r\n        return new this.type.elementType.ResourceIdentifier({ navigation });\r\n      }\r\n\r\n      defineConstProperty(\r\n        TypeResID.prototype,\r\n        WithKeyNavigation.navigationName,\r\n        navWithKeyMethod\r\n      );\r\n    }\r\n  };\r\n}\r\n\r\nexport function createCallNavigation(Superclass = Object, edm) {\r\n/**\r\n * @class CallNavigation\r\n * @extends Navigation\r\n * @property {Object} parameters - The parameters for the function call\r\n */\r\n  return class CallNavigation extends Superclass {\r\n    constructor({\r\n      source,\r\n      parameters = {},\r\n    }) {\r\n      super({\r\n        source,\r\n      });\r\n      defineConstProperty(this, 'parameters', parameters);\r\n\r\n      const path = source.type instanceof edm.types.ActionType ?\r\n        source.path : `${source.path}(${_.map(parameters, (value, name) => `${name}=${value}`).join(',')})`;\r\n\r\n      defineConstProperty(this, 'path', path);\r\n    }\r\n\r\n    toSelfJSON() {\r\n      return {\r\n        type: 'function',\r\n        name: CallNavigation.navigationName,\r\n        // for callable, parameters are named\r\n        parameters: [this.parameters],\r\n      };\r\n    }\r\n\r\n    static get navigationName() {\r\n      return '$call';\r\n    }\r\n\r\n    static defineOn(TypeResID) {\r\n      /**\r\n       * $call navigation method of the TypeResID\r\n       * @memberof TypeResID#\r\n       * @this TypeResID\r\n       * @param {object} parameters - The parameters to call the callable\r\n       * @return {ResourceIdentifier}\r\n       * The ResourceIdentifier accessing the return value of the callable\r\n       */\r\n      function navCallMethod(parameters) {\r\n        const navigation = new CallNavigation({ source: this, parameters });\r\n\r\n        return new this.type.returnType.ResourceIdentifier({ navigation });\r\n      }\r\n\r\n      defineConstProperty(TypeResID.prototype, CallNavigation.navigationName, navCallMethod);\r\n    }\r\n  };\r\n}\r\n\r\n\r\nexport function createResourceIdentifier() {\r\n/**\r\n * @class ResourceIdentifier\r\n * @property {Navigation} navigation\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n */\r\n  return class ResourceIdentifier {\r\n    /**\r\n     * Create a ResourceIdentifier\r\n     * @param {Object} [options] - The constructor options\r\n     * @param {Navigation} [options.navigation]\r\n     * - The navigation back tracking the parent ResourceIdentifier\r\n     * @return {Void} Nothing to return\r\n     */\r\n    constructor({\r\n      navigation,\r\n    } = {}) {\r\n      if (navigation) {\r\n        defineConstProperty(this, 'navigation', navigation);\r\n        defineConstProperty(this, 'path', navigation.path);\r\n      } else {\r\n        defineConstProperty(this, 'path', '');\r\n      }\r\n    }\r\n\r\n    toJSON() {\r\n      if (this.navigation) {\r\n        return this.navigation.toJSON();\r\n      }\r\n\r\n      return [];\r\n    }\r\n\r\n\r\n    identifyEntitySet(json) {\r\n      // eslint-disable-next-line\r\n      let entitySet = this;\r\n\r\n      /* eslint guard-for-in: 0 */\r\n      /* eslint no-restricted-syntax: 0 */\r\n      for (const i in json) {\r\n        const item = json[i];\r\n\r\n        if (item.type === 'property') {\r\n          entitySet = entitySet[item.name];\r\n        } else if (item.type === 'function') {\r\n          entitySet = entitySet[item.name](...item.parameters);\r\n        }\r\n\r\n        if (!entitySet) {\r\n          return null;\r\n        }\r\n      }\r\n\r\n      return entitySet;\r\n    }\r\n  };\r\n}\r\n\r\n","export { ExpLoggerFactory } from './src/exp-logger-factory';\r\n","import { createActivity } from './activity';\r\nimport { ExpLogger } from './exp-logger';\r\n\r\nlet instrumentation;\r\n\r\nexport class ExpLoggerFactory {\r\n  /**\r\n   * Initialize factory with existing instrumentation instance\r\n   * @param {Object} instr - existing instrumentation instance\r\n   * @returns {void}\r\n   */\r\n  static init(instr) {\r\n    instrumentation = instr;\r\n  }\r\n\r\n  /**\r\n   * Create an experiment logger\r\n   * @param {string} name - experiment name\r\n   * @returns {Object} ExpLogger instance that created\r\n   */\r\n  static createLogger(name) {\r\n    let activity = null;\r\n    if (instrumentation) {\r\n      activity = createActivity(instrumentation);\r\n    }\r\n    return new ExpLogger(name, activity);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst schema = {\r\n  scenario: [\r\n    {\r\n      name: 'expLogger',\r\n      value: 'expLogger',\r\n      setting: {},\r\n      activity: [\r\n        {\r\n          name: 'sendLog',\r\n          value: 'SendLog',\r\n        },\r\n      ],\r\n    },\r\n  ],\r\n};\r\n\r\nlet expLoggerScenario = null;\r\n\r\nfunction getScenario(instrumentation) {\r\n  if (_.isEmpty(expLoggerScenario)) {\r\n    instrumentation.addScenario(schema);\r\n    expLoggerScenario = instrumentation.expLogger.create();\r\n  }\r\n\r\n  return expLoggerScenario;\r\n}\r\n\r\n/**\r\n * Create instrumentation activity for logging\r\n * @param {Object} instrumentation - exsiting instrumentation instance\r\n * @returns {Object} instrumentation activity instance\r\n */\r\nexport function createActivity(instrumentation) {\r\n  const scenario = getScenario(instrumentation);\r\n\r\n  return scenario.sendLog.create();\r\n}\r\n","const version = 'exp-logger@1.0.0';\r\n\r\nexport class ExpLogger {\r\n  constructor(name, activity) {\r\n    this.name = name;\r\n    this.activity = activity;\r\n  }\r\n\r\n  /**\r\n   * Log experiment information\r\n   * @param {string} action - user action\r\n   * @param {string} flight - user flight\r\n   * @returns {void}\r\n   */\r\n  log(action, flight) {\r\n    if (!this.activity) return;\r\n\r\n    const message = {\r\n      Version: version,\r\n      Experiment: this.name,\r\n      Action: action,\r\n      Flight: flight,\r\n    };\r\n\r\n    this.activity.trace(JSON.stringify(message), this.name);\r\n  }\r\n}\r\n","import pkg from './package.json';\r\nimport FilePicker from './src/view/index';\r\n\r\nexport { pkg as _package, FilePicker };\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Backbone from 'backbone';\r\nimport ViewModel from '../viewmodel/index';\r\nimport template from '../template/index.pug';\r\n\r\nexport default class FilePicker extends Backbone.View {\r\n  /**\r\n   *\r\n   * @param {object} options the options to build a filepicker instance.\r\n   *   See the detail fields below.\r\n   * @param {boolean} options.isNative will use the browser native button when it is set to true.\r\n   * Otherwise will use the customized elements and hide the native ones.\r\n   * @param {array} options.allowedFileExtensions the allowed file extensions. An array of strings.\r\n   * Example: ['.txt', '.exe']. Will accept all file extensions if this field is not set.\r\n   * @param {function} options.validator function to validate your file. The file object as\r\n   * paramter. Return string for true is to raise an error. If you return true will use the\r\n   * predefined error message.\r\n   * @param {object} options.i18n object: contains getString function for i18n.\r\n   * @param {function} options.i18n.getString pass a key(and model if needed) and returns a string.\r\n   * @param {function} options.displayFilePath an enum of 'full' or 'filename', indicating the\r\n   * display name of the chosen file in customized elements\r\n   *\r\n   * @event FilePicker#changed triggered when file is changed.\r\n   * @event FilePicker#cleared triggered when file is cleared.\r\n   * @event FilePicker#error.extension triggered when file extension is invalid.\r\n   *\r\n   * @returns {undefined} no return value\r\n   *\r\n   */\r\n  initialize({\r\n    isNative = false,\r\n    allowedFileExtensions = [],\r\n    validateFileExtensionsFailedMessage,\r\n    validator = _.noop,\r\n    i18n = {},\r\n    displayFilePath = 'full',\r\n    enableMultiple = false,\r\n    useButton = false,\r\n  }) {\r\n    this.isNative = isNative;\r\n    this.i18n = i18n;\r\n    this.allowedFileExtensions = [];\r\n    this.enableMultiple = enableMultiple;\r\n    this.useButton = useButton;\r\n\r\n    if (!_.isFunction(i18n.getString)) {\r\n      this.i18n = { getString: _.identity };\r\n    }\r\n\r\n    if (!_.isEmpty(allowedFileExtensions)) {\r\n      if (_.isArray(allowedFileExtensions)) {\r\n        this.allowedFileExtensions = allowedFileExtensions;\r\n      } else {\r\n        throw new Error('allowedFileExtensions accepts array of strings only.');\r\n      }\r\n    }\r\n\r\n    this.viewModel = new ViewModel({\r\n      i18n: this.i18n,\r\n      validator,\r\n      allowedFileExtensions: this.allowedFileExtensions,\r\n      validateFileExtensionsFailedMessage,\r\n      getFileObject: () => this.fileObject,\r\n      getFileObjects: () => this.fileObjects,\r\n      trigger: this.trigger.bind(this),\r\n      displayFilePath,\r\n      enableMultiple: this.enableMultiple,\r\n    });\r\n\r\n    this.fileInputCssId = _.uniqueId('el_fileinput_');\r\n  }\r\n\r\n  render() {\r\n    this.$el.html(template({\r\n      fileInputCssId: this.fileInputCssId,\r\n      i18n: this.i18n,\r\n      isNative: this.isNative,\r\n      acceptString: this.allowedFileExtensions.join(),\r\n      enableMultiple: this.enableMultiple,\r\n      useButton: this.useButton,\r\n    }));\r\n    ko.applyBindings(this.viewModel, this.el);\r\n    return this;\r\n  }\r\n\r\n  get events() {\r\n    const { useButton } = this;\r\n    const buttonEvent = useButton ? { 'click .file-picker-btn': 'triggerFileInputClick' } : {};\r\n\r\n    return {\r\n      'click .remove-file': 'removeFile',\r\n      ...buttonEvent,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * @returns {string} the full path file\r\n   */\r\n  get filePath() {\r\n    return this.viewModel.filePath();\r\n  }\r\n\r\n  /**\r\n   * @returns {Object} the object to describe the file. Refer https://developer.mozilla.org/en-US/docs/Web/API/File for more details.\r\n   * @example\r\n   * {\r\n   *    lastModified: 1465909575599,\r\n   *    lastModifiedDate: Tue Jun 14 2016 21:06:15 GMT+0800 (China Standard Time),\r\n   *    name: 'test.txt',\r\n   *    size: 3,\r\n   *    type: \"\",\r\n   *    webkitRelativePath: ''\r\n   * }\r\n   */\r\n  get fileObject() {\r\n    return _.first(this.fileObjects);\r\n  }\r\n\r\n  get fileObjects() {\r\n    return _.first(this.$(`#${this.fileInputCssId}`)).files;\r\n  }\r\n\r\n  removeFile() {\r\n    this.viewModel.filePath('');\r\n  }\r\n\r\n  triggerFileInputClick() {\r\n    this.$(`#${this.fileInputCssId}`).trigger('click');\r\n  }\r\n\r\n  addExternalValidationErrors(msg) {\r\n    this.viewModel.errors.push(msg);\r\n  }\r\n\r\n  hasErrors() {\r\n    return this.viewModel.hasErrors();\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport path from 'path-browserify';\r\nimport Promise from 'bluebird';\r\n\r\nfunction validatorDecorator(\r\n  validator,\r\n  reasonText,\r\n  file,\r\n  context\r\n) {\r\n  return Promise.resolve(validator(file)).then(returnedError =>\r\n    new Promise((resolve, reject) => {\r\n      if (returnedError) {\r\n        reject(new Error(_.isString(returnedError) ? returnedError : reasonText));\r\n      } else {\r\n        resolve(file);\r\n      }\r\n    })).bind(context);\r\n}\r\n\r\nexport default class ViewModel {\r\n  constructor({\r\n    i18n,\r\n    allowedFileExtensions,\r\n    validateFileExtensionsFailedMessage,\r\n    validator,\r\n    getFileObject,\r\n    getFileObjects,\r\n    trigger,\r\n    displayFilePath,\r\n    enableMultiple,\r\n  }) {\r\n    this.i18n = i18n;\r\n    this.allowedFileExtensions = _.map(allowedFileExtensions, ext => ext.toUpperCase());\r\n    this.validateFileExtensionsFailedMessage = validateFileExtensionsFailedMessage;\r\n\r\n    this.validator = validator;\r\n    this.getFileObject = getFileObject;\r\n    this.getFileObjects = getFileObjects;\r\n    this.trigger = trigger;\r\n    this.enableMultiple = enableMultiple;\r\n\r\n    this.filePath = ko.observable('');\r\n    this.errors = ko.observableArray();\r\n    this.hasErrors = ko.computed(() => this.errors().length > 0, this);\r\n    this.displayFilePath = ko.computed(() => {\r\n      const fullPath = this.filePath();\r\n\r\n      return _.result({\r\n        full: fullPath,\r\n        filename: () => fullPath.replace(/^.*[\\\\\\/]/, ''), //eslint-disable-line\r\n      }, displayFilePath);\r\n    });\r\n\r\n    if (enableMultiple) {\r\n      // use change event when multiple is enabled.\r\n      // value subscribe doens't work when first selected file doesn't change.\r\n      this.onInputChange = () => {\r\n        this.handleInputChange();\r\n      };\r\n    } else {\r\n      this.filePath.subscribe((newFilePath) => {\r\n        this.handleInputChange(newFilePath);\r\n      });\r\n    }\r\n  }\r\n\r\n  handleInputChange(newFilePath) {\r\n    // for backward compatibility, here still use getFileObject to get selected file.\r\n    // otherwise there are many feature test codes needing fix.\r\n    let files = [];\r\n    if (this.enableMultiple) {\r\n      files = this.getFileObjects();\r\n    } else {\r\n      const file = this.getFileObject();\r\n      if (file) {\r\n        files.push(file);\r\n      }\r\n    }\r\n\r\n    this.resetStatus();\r\n\r\n    this.trigger('changed', newFilePath);\r\n\r\n    if (_.isEmpty(files)) {\r\n      this.trigger('cleared');\r\n    } else {\r\n      const validatingPromiseArr = [];\r\n      _.each(files, (file) => {\r\n        validatingPromiseArr.push(this.validateExtension(file).then(() => {\r\n          this.validateFile(file);\r\n        }));\r\n      });\r\n\r\n      Promise.all(validatingPromiseArr)\r\n        .then(() => this.trigger('validated'))\r\n        .catch((reason) => {\r\n          this.validationDidFail(reason);\r\n        });\r\n    }\r\n  }\r\n\r\n  get extensionValidator() {\r\n    return (file) => {\r\n      if (_.isEmpty(this.allowedFileExtensions)) {\r\n        return false;\r\n      }\r\n\r\n      const extension = path.extname(file.name).toUpperCase();\r\n      if (_.indexOf(this.allowedFileExtensions, extension) === -1) {\r\n        this.trigger('error.extension');\r\n\r\n        return this.validateFileExtensionsFailedMessage || true;\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  validateExtension(file) {\r\n    return validatorDecorator(\r\n      this.extensionValidator.bind(this),\r\n      this.i18n.getString('FilePicker_FileExtensionInvalid', { allowedFileExtensions: this.allowedFileExtensions }),\r\n      file,\r\n      this\r\n    );\r\n  }\r\n\r\n  validateFile(file) {\r\n    return validatorDecorator(this.validator, this.i18n.getString('FilePicker_FileInvalid'), file, this);\r\n  }\r\n\r\n  validationDidFail(reason) {\r\n    this.errors.push(reason.message);\r\n  }\r\n\r\n  resetStatus() {\r\n    this.errors([]);\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__309__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (acceptString, enableMultiple, fileInputCssId, i18n, isNative, useButton) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([isNative ? 'hidden' : ''], [true]), false, true)) + \"\\u003E\";\nif (useButton) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default file-picker-btn clickable\\\" data-bind=\\\"css: { &quot;error&quot;: hasErrors}\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_ChooseFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Clabel\" + (\" class=\\\"btn btn-default file-picker-btn clickable\\\"\"+pug.attr(\"for\", fileInputCssId, true, true)+\" data-bind=\\\"css: { &quot;error&quot;: hasErrors}\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_ChooseFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"file-text\\\" data-bind=\\\"text: displayFilePath, css: { error: hasErrors}\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"remove-file\\\" href=\\\"javascript:void(0)\\\" data-bind=\\\"visible: filePath\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_RemoveFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (enableMultiple) {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"file-picker-input\",isNative ? '' : 'hidden'], [false,true]), false, true)+\" type=\\\"file\\\" data-bind=\\\"css: { error: hasErrors }, event: { change: onInputChange }\\\"\"+pug.attr(\"id\", fileInputCssId, true, true)+pug.attr(\"accept\", acceptString, true, true)+pug.attr(\"multiple\", true, true, true)) + \"\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"file-picker-input\",isNative ? '' : 'hidden'], [false,true]), false, true)+\" type=\\\"file\\\" data-bind=\\\"css: { error: hasErrors }, value: filePath\\\"\"+pug.attr(\"id\", fileInputCssId, true, true)+pug.attr(\"accept\", acceptString, true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003C!-- ko foreach: errors--\\u003E\\u003Cdiv class=\\\"error\\\" role=\\\"alert\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\";}.call(this,\"acceptString\" in locals_for_with?locals_for_with.acceptString:typeof acceptString!==\"undefined\"?acceptString:undefined,\"enableMultiple\" in locals_for_with?locals_for_with.enableMultiple:typeof enableMultiple!==\"undefined\"?enableMultiple:undefined,\"fileInputCssId\" in locals_for_with?locals_for_with.fileInputCssId:typeof fileInputCssId!==\"undefined\"?fileInputCssId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNative\" in locals_for_with?locals_for_with.isNative:typeof isNative!==\"undefined\"?isNative:undefined,\"useButton\" in locals_for_with?locals_for_with.useButton:typeof useButton!==\"undefined\"?useButton:undefined));;return pug_html;};\nmodule.exports = template;","\r\n\r\nexport { FilterAgent } from './src/filter-agent';\r\nexport { localize } from './src/schema-localizer';\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { SelectorFilterAgent } from './selector-filter-agent';\r\nimport { SearchboxFilterAgent } from './searchbox-filter-agent';\r\nimport { FilterEditorAgent } from './filter-editor-agent';\r\nimport { FilterBarAgent } from './filter-bar-agent';\r\nimport { FilterMenuAgent } from './filter-menu-agent';\r\nimport { localize } from './schema-localizer';\r\n\r\n/**\r\n * Set up different filter UI components as configured by consumer<br>\r\n * Attach filter UI components to the toolbar view passed in by consumer<br>\r\n * Handles the interaction within various UI components as well as between\r\n * UI and FilterService component that manages filter state and filter storage<br>\r\n * Trigger filter-state-changed event and expose current combined filter in\r\n * the form of FilterEntity<br>\r\n * @extends external:\"Backbone.Events\"\r\n * @fires FilterAgent#filter-state-changed\r\n */\r\n\r\nexport class FilterAgent {\r\n  /**\r\n   * Constructor for FilterAgent - Create sub filter agents and filter service instance\r\n   * @param {Object} options - The options object that is used to configure FilterAgent\r\n   * @param {Object} options.toolbarView - The toolbar backbone view that Filter UI will\r\n   * be attached to\r\n   * @param {Object} options.i18n - I18N object for localization\r\n   * @param {Object} options.schemaI18n - SchemaI18n object for localization\r\n   * @param {Object} options.shortDateFormat - Format of date during localization\r\n   * @param {Object} [options.filterService] - Preconfigure FilterService instance\r\n   * @param {Object} [options.entitySchema] - Entity schema\r\n   * @param {string} [options.odata] - Odata options for converting filter to query\r\n   * @param {string} [options.storage] - Collection of storage instances to get/save filters\r\n   * @param {string[]} option.enabled - An array of names of filter UI components\r\n   * that are to be enabled. Value can be 'selector', 'editor' or 'searchbox'\r\n   * @param {Object} [options.filterbar] - Configuration for FilterBar, the UI\r\n   * component that shows the current applied filter status\r\n   * @param {Object} [options.selector] - Configuration for Selector Filter UI.\r\n   * Pass in if Selector Filter UI is enabled\r\n   * @param {Object} [options.editor] - Configuration for Filter Editor UI.\r\n   * Pass in if Filter Editor UI is enabled\r\n   * @param {Object} [options.searchbox] - Configuration for Searchbox Filter UI.\r\n   * Pass in if Searchbox Filter UI is enabled\r\n   */\r\n  constructor(options = {}) {\r\n    this.options = options;\r\n    if (options.filterService) {\r\n      this.filterService = options.filterService;\r\n    } else {\r\n      this.filterService = new FilterService(options);\r\n    }\r\n    this.options.filterService = this.filterService;\r\n    this.options.entitySchema = localize(\r\n      this.filterService.entitySchema,\r\n      this.options.schemaI18n,\r\n      this.options.i18n\r\n    );\r\n    this.filterMenuAgent = new FilterMenuAgent(options);\r\n    this.filterBarAgent = new FilterBarAgent(options);\r\n\r\n    _.extend(this, Backbone.Events);\r\n    this.setupToolbar();\r\n  }\r\n\r\n  /**\r\n   * Initialze the filter UI components that are registered by consumer\r\n   * Manage the interaction between different filter UI components\r\n   * Set initial states for some of the filter UI components\r\n   * @private\r\n   * @returns {undefined}\r\n   */\r\n  setupToolbar() {\r\n    if (_.contains(this.options.enabled, 'editor')) {\r\n      this.filterEditorAgent = new FilterEditorAgent(this.options);\r\n\r\n      this.listenTo(this.filterMenuAgent, 'create-new-filter', () => {\r\n        this.isNewFilter = true;\r\n        this.showFilterEditor();\r\n      });\r\n      this.listenTo(this.filterBarAgent, 'filter-bar-edited', () => {\r\n        this.isNewFilter = false;\r\n        this.showFilterEditor();\r\n      });\r\n      this.listenTo(this.filterEditorAgent, 'cancel-edit', () => {\r\n        this.hideFilterEditor();\r\n      });\r\n      this.listenTo(this.filterEditorAgent, 'filter-saved-success', () => {\r\n        this.filterMenuAgent.refresh();\r\n        this.trigger('filter-saved-success');\r\n      });\r\n      this.listenTo(this.filterMenuAgent, 'filter-deleted-success', () => {\r\n        this.trigger('filter-deleted-success');\r\n      });\r\n      this.listenTo(this.filterEditorAgent, 'filter-max-reached', () => {\r\n        this.hideFilterEditor();\r\n        this.trigger('filter-max-reached');\r\n      });\r\n    }\r\n\r\n    // not using initialFilter, as filter may has already chanaged\r\n    this.filterService.p$Initialized.then((/* initialFilter */) => {\r\n      const {\r\n        editableFilter,\r\n        quickFilter,\r\n      } = this.filterService;\r\n\r\n      if (_.contains(this.options.enabled, 'selector')) {\r\n        this.selectorFilterAgent =\r\n        new SelectorFilterAgent(_.extend(this.options, { filter: quickFilter }));\r\n      }\r\n      if (!_.isEmpty(editableFilter)) {\r\n        this.showFilterBar();\r\n      }\r\n    });\r\n\r\n\r\n    if (_.contains(this.options.enabled, 'searchbox')) {\r\n      this.searchboxFilterAgent = new SearchboxFilterAgent(this.options);\r\n    }\r\n\r\n    this.listenTo(this.filterService, 'editable-filter-applied', () => {\r\n      this.showFilterBar();\r\n    });\r\n    this.listenTo(this.filterService, 'filter-state-changed', (combinedFilter, subStatus) => {\r\n      if (subStatus === 'editable-filter-applied') {\r\n        this.showFilterBar();\r\n      }\r\n      if (subStatus === 'editable-filter-removed') {\r\n        if (this.searchboxFilterAgent) {\r\n          this.searchboxFilterAgent.clear();\r\n        }\r\n        this.showToolBar();\r\n      }\r\n      this.trigger('filter-state-changed', combinedFilter, subStatus);\r\n    }, this);\r\n\r\n    this.listenTo(this.filterService, 'filter-operation-failed', (error) => {\r\n      this.trigger('filter-operation-failed', error);\r\n    }, this);\r\n\r\n    this.filterMenuAgent.refresh();\r\n  }\r\n\r\n  hideFilterEditor() {\r\n    if (this.filterService.getEditableFilter()) {\r\n      this.showFilterBar();\r\n    } else {\r\n      this.showToolBar();\r\n    }\r\n  }\r\n\r\n  showFilterEditor(query) {\r\n    this.filterEditorQuery = query;\r\n    this.trigger('filter-ui-change', {\r\n      showFilterEditor: true,\r\n      showToolBar: false,\r\n      showFilterBar: false,\r\n    });\r\n  }\r\n\r\n  showFilterBar() {\r\n    if (this.filterBarAgent.deterministicView) {\r\n      this.filterBarAgent.update(this.filterService.getEditableFilter());\r\n    } else {\r\n      this.trigger('filter-ui-change', {\r\n        showToolBar: true,\r\n        showFilterBar: true,\r\n        showFilterEditor: false,\r\n      });\r\n    }\r\n  }\r\n\r\n  showToolBar() {\r\n    this.trigger('filter-ui-change', {\r\n      showToolBar: true,\r\n      showFilterBar: false,\r\n      showFilterEditor: false,\r\n    });\r\n  }\r\n\r\n  getFilterEditor() {\r\n    if (this.filterEditorQuery) {\r\n      const filterToShow = this.filterService.createFilterEntity(this.filterEditorQuery);\r\n      delete this.filterEditorQuery;\r\n      return this.filterEditorAgent.create(filterToShow);\r\n    }\r\n    if (this.isNewFilter) {\r\n      return this.filterEditorAgent.create();\r\n    }\r\n    const editableFilter = this.filterService.getEditableFilter();\r\n    return editableFilter ? this.filterEditorAgent\r\n      .create(this.filterService.createFilterEntity(\r\n        cloneDeep(editableFilter.query),\r\n        editableFilter.name\r\n      )) : this.filterEditorAgent.create(editableFilter);\r\n  }\r\n\r\n  getFilterBar() {\r\n    return this.filterBarAgent.create(this.filterService.getEditableFilter());\r\n  }\r\n\r\n  setEditableFilter(query, name) {\r\n    this.filterService.setEditableFilter(query, name);\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","import { BaseFilterAgent } from './base-filter-agent';\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of Dropdown Selector Filter view<br>\r\n * Call FilterService to change filter state<br>\r\n * @extends BaseFilterAgent\r\n */\r\nexport class SelectorFilterAgent extends BaseFilterAgent {\r\n  constructor(options) {\r\n    super(options);\r\n    const selectorConf = {\r\n      id: 'selector-filter',\r\n      items: this.options.selector.items,\r\n      onChange: item => this.apply(item),\r\n      checkKeyDifferenceOnClick: this.options.selector.checkKeyDifferenceOnClick || false,\r\n    };\r\n\r\n    if (options.filter && options.filter.key) {\r\n      selectorConf.selectedKey = options.filter.key;\r\n    } else {\r\n      const defaultSelectedItem = this.options.selector.items[0];\r\n      if (defaultSelectedItem.value && defaultSelectedItem.value.query) {\r\n        selectorConf.selectedKey = defaultSelectedItem.key;\r\n        this.apply(defaultSelectedItem);\r\n      }\r\n    }\r\n\r\n    if (this.options.toolbarView.rendered) {\r\n      this.options.toolbarView.view.update(selectorConf);\r\n    } else {\r\n      this.options.toolbarView.once('rendered', () => {\r\n        this.options.toolbarView.view.update(selectorConf);\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Apply filter\r\n   * @private\r\n   * @param {Object} item - One item in the selector dropdown\r\n   * @param {string} item.key - The item key\r\n   * @param {Object} item.value - A query object\r\n   * @returns {undefined}\r\n   */\r\n  apply(item) {\r\n    this.options.filterService.setQuickFilter(item.key, item.value);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\n/**\r\n * Base class to all sub FilterAgents<br>\r\n * Set option value to properties of current instance<br>\r\n * @extends external:\"Backbone.Events\"\r\n */\r\n\r\nexport class BaseFilterAgent {\r\n  constructor(options = {}) {\r\n    this.options = options;\r\n    _.extend(this, Backbone.Events);\r\n  }\r\n\r\n  /**\r\n   * Update filter state by setting current applied filter\r\n   * @param {string} query - Filter query\r\n   * @param {string} name - Filter name\r\n   * @fires BaseFilterAgent#filter-applied\r\n   * @returns {undefined}\r\n   */\r\n  apply(query, name) {\r\n    this.options.filterService.setEditableFilter(query, name);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of Searchbox Filter view<br>\r\n * Call FilterService to change filter state<br>\r\n * @extends BaseFilterAgent\r\n */\r\nexport class SearchboxFilterAgent extends BaseFilterAgent {\r\n  constructor(options) {\r\n    super(options);\r\n    const newItem = {\r\n      id: 'search-box-filter',\r\n      onChange: this.apply.bind(this),\r\n      placeholder: this.options.searchbox.placeholder,\r\n      maxLength: this.options.searchbox.maxLength,\r\n    };\r\n    if (this.options.toolbarView.rendered) {\r\n      this.options.toolbarView.view.update(newItem);\r\n    } else {\r\n      this.options.toolbarView.once('rendered', () => {\r\n        this.options.toolbarView.view.update(newItem);\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Create FilterEntity based on search value and apply filter\r\n   * @private\r\n   * @param {string} value - Searchbox input\r\n   * @returns {undefined}\r\n   */\r\n  apply(value) {\r\n    if (value) {\r\n      const query = _.object(\r\n        [this.options.searchbox.searchProperty],\r\n        [_.object([this.options.searchbox.searchOperator || '$contains'], [value])]\r\n      );\r\n\r\n      super.apply(query);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clear search box\r\n   * @returns {undefined}\r\n   */\r\n  clear() {\r\n    this.options.toolbarView.view.update({\r\n      id: 'search-box-filter',\r\n      value: '',\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { FilterEditor } from '@bingads-webui/filter-editor';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\nclass DeterministicFilterEditor extends DeterministicWrapperView {\r\n  viewFactory(options) {\r\n    return new FilterEditor(options);\r\n  }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterEditor view<br>\r\n * Call FilterService to change filter state<br>\r\n * Set up a toolbar dropdown as filter menu<br>\r\n * @extends BaseFilterAgent\r\n * @fires FilterEditorAgent#filter-editor-shown\r\n */\r\nexport class FilterEditorAgent extends BaseFilterAgent {\r\n  /**\r\n   * Remove existing FilterEditor, create and show a new one\r\n   * @param {Object} [filter] - FilterEntity\r\n   * @param {string} [name] - Filter name\r\n   * @returns {undefined}\r\n   */\r\n  create(filter) {\r\n    let selected = filter;\r\n\r\n    if (this.options.preprocessSelectedFilter) {\r\n      selected = this.options.preprocessSelectedFilter(selected);\r\n    }\r\n\r\n    const view = new DeterministicFilterEditor({\r\n      selected,\r\n      shortDateFormat: this.options.shortDateFormat,\r\n      entitySchema: this.options.entitySchema,\r\n      schemaI18n: this.options.schemaI18n,\r\n      ignoreCase: this.options.odata.ignoreCase,\r\n      isComparingEnabled: _.isFunction(this.options.editor.isComparingEnabled) ?\r\n        this.options.editor.isComparingEnabled() : this.options.editor.isComparingEnabled,\r\n      hasInlineReporting: this.options.editor.hasInlineReporting,\r\n      layoutTemplate: this.options.editor.layoutTemplate,\r\n      itemTemplates: this.options.editor.itemTemplates,\r\n      ko_model: this.options.editor.ko_model,\r\n      i18n: this.options.i18n,\r\n    });\r\n\r\n    this.listenTo(view, 'apply', this.apply);\r\n    this.listenTo(view, 'cancel', () => {\r\n      this.trigger('cancel-edit');\r\n    });\r\n\r\n    return view;\r\n    // TODO: during filter editor is show, also monitor dateFilter change for once.\r\n    /*\r\n    dateFilter.events.once('dateChange', () => {\r\n      hideFilterEditor();\r\n    });\r\n    */\r\n  }\r\n\r\n  /**\r\n   * Save filter to storage\r\n   * @private\r\n   * @param {string} query - Filter query\r\n   * @param {string} name - Filter name\r\n   * @returns {undefined}\r\n   */\r\n  apply(query, name) {\r\n    if (name) {\r\n      const { savedFilters } = this.options.filterService;\r\n      if (_.isNumber(this.options.maxSavedFilterLimit)\r\n      && savedFilters.length >= this.options.maxSavedFilterLimit) {\r\n        const filterNames = _.pluck(savedFilters, 'name');\r\n        if (!_.contains(filterNames, name)) {\r\n          this.trigger('filter-max-reached');\r\n          return;\r\n        }\r\n      }\r\n      this.options.filterService.addUpdateSavedFilter(query, name).then((savedData) => {\r\n        if (!savedData.error) {\r\n          this.trigger('filter-saved-success');\r\n        }\r\n      });\r\n    } else {\r\n      super.apply(query, name);\r\n    }\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","module.exports = __WEBPACK_EXTERNAL_MODULE__12__;","import _ from 'underscore';\r\nimport { FilterBar } from '@bingads-webui/filter-bar';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\nclass DeterministicFilterBar extends DeterministicWrapperView {\r\n  viewFactory(options) {\r\n    return new FilterBar(options);\r\n  }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterBar view<br>\r\n * Call FilterService to change filter state\r\n * @extends BaseFilterAgent\r\n * @fires FilterBarAgent#filter-bar-removed\r\n * @fires FilterBarAgent#filter-bar-edited\r\n */\r\nexport class FilterBarAgent extends BaseFilterAgent {\r\n  /**\r\n   * Create filter bar view and append to container passed in by consumer<br>\r\n   * Or update existing filter bar view with new filter entity and show\r\n   * @param {Object} filter - FilterEntity\r\n   * @returns {undefined}\r\n   */\r\n  create(filter) {\r\n    const extendedFilter = _.extend(filter, {\r\n      options: {\r\n        shortDateFormat: this.options.shortDateFormat,\r\n      },\r\n    });\r\n\r\n    const options = _.extend(\r\n      {},\r\n      this.options.filterbar,\r\n      {\r\n        filter: extendedFilter,\r\n        schemaI18n: this.options.schemaI18n,\r\n      }\r\n    );\r\n\r\n    this.deterministicView = new DeterministicFilterBar({\r\n      options,\r\n      i18n: this.options.i18n,\r\n    });\r\n\r\n    this.listenTo(this.deterministicView, 'removed', () => {\r\n      this.deterministicView = null;\r\n    });\r\n    this.listenTo(this.deterministicView, 'remove', this.remove);\r\n    this.listenTo(this.deterministicView, 'edit', () => this.trigger('filter-bar-edited'));\r\n\r\n    return this.deterministicView;\r\n  }\r\n\r\n  update(filter) {\r\n    const extendedFilter = _.extend(filter, {\r\n      options: {\r\n        shortDateFormat: this.options.shortDateFormat,\r\n      },\r\n    });\r\n    this.deterministicView.view.changeFilter(extendedFilter);\r\n  }\r\n\r\n  /**\r\n   * Remove FilterBar view and reset filter state by removing\r\n   * current applied filter\r\n   * @private\r\n   * @fires FilterBarAgent#filter-bar-removed\r\n   * @returns {undefined}\r\n   */\r\n  remove() {\r\n    this.options.filterService.removeEditableFilter();\r\n    this.trigger('filter-bar-removed');\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__14__;","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\nimport removeTmpl from './template/removeDialog.pug';\r\n\r\nclass RemoveDialog extends Backbone.View {\r\n  initialize({ filterName, i18n }) {\r\n    this.filterName = filterName;\r\n    this.i18n = i18n;\r\n  }\r\n  render() {\r\n    this.$el.html(removeTmpl({\r\n      removeText: this.i18n.getString('FiltersMenu_PromptBeforeRemove').replace('{0}', this.filterName),\r\n    }));\r\n    return this;\r\n  }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterEditor view<br>\r\n * Call FilterService to change filter state<br>\r\n * Set up a toolbar dropdown as filter menu<br>\r\n * @extends BaseFilterAgent\r\n * @fires FilterEditorAgent#filter-editor-shown\r\n */\r\nexport class FilterMenuAgent extends BaseFilterAgent {\r\n  /**\r\n   * Delete filter by name. UI will show a modal prompt to ask user for confirmation.\r\n   * If user confirms, then call filter service to remove delete filter by name and\r\n   * refresh filter menu once deletion is completed successfully\r\n   * @private\r\n   * @param {string} name - Filter name\r\n   * @returns {undefined}\r\n   */\r\n  deleteByName(name) {\r\n    this.options.filterService.getFilterByName(name).then((filter) => {\r\n      const modalDialog = new Dialog({\r\n        showHeader: false,\r\n      }).setState({\r\n        buttons: [{\r\n          text: this.options.i18n.getString('Filter_Remove'),\r\n          name: 'remove',\r\n          class: 'btn-primary',\r\n        }, {\r\n          text: this.options.i18n.getString('Cancel'),\r\n          name: 'cancel',\r\n        }],\r\n      }).setContent(new RemoveDialog({\r\n        filterName: name,\r\n        i18n: this.options.i18n,\r\n      }))\r\n        .render();\r\n\r\n      this.options.toolbarView.view.$el.append(modalDialog.el);\r\n      modalDialog.show();\r\n      modalDialog.on('clickedButton', (buttonName) => {\r\n        if (buttonName === 'remove') {\r\n          this.options.filterService.deleteSavedFilter(filter).then(({ error }) => {\r\n            if (!error) {\r\n              this.trigger('filter-deleted-success');\r\n              this.refresh();\r\n            }\r\n          });\r\n        }\r\n\r\n        modalDialog.remove();\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Apply named filter\r\n   * @private\r\n   * @returns {undefined}\r\n   * @param {string} name - Filter name\r\n   */\r\n  applyByName(name) {\r\n    this.options.filterService.setEditableFilterByName(name);\r\n  }\r\n\r\n  /**\r\n   * Load saved filters from filter service and update filter menu accordingly\r\n   * @returns {undefined}\r\n   */\r\n  refresh() {\r\n    this.options.filterService.getSavedFilters().then((filterArray) => {\r\n      const filterNames = _.pluck(filterArray, 'name');\r\n      const menuItems = [{\r\n        text: this.options.i18n.getString('Filter_Create_Filter'),\r\n        onClick: () => this.trigger('create-new-filter'),\r\n      }];\r\n\r\n      if (this.options.menu && this.options.menu.customItems) {\r\n        menuItems.push(...this.options.menu.customItems);\r\n      }\r\n\r\n      if (filterNames.length > 0) {\r\n        menuItems.push({ type: 'dropdown-divider' });\r\n        menuItems.push({\r\n          type: 'dropdown-radio-group',\r\n          id: 'dropdown-radio-group-saved-filters',\r\n          title: this.options.i18n.getString('Filter_Apply_Saved_Filters'),\r\n          items: _.map(filterNames, name => ({\r\n            text: name,\r\n            value: name,\r\n          })),\r\n          checkIcon: null,\r\n          removeText: this.options.i18n.getString('Filter_Remove'),\r\n          onSelect: this.applyByName.bind(this),\r\n          onRemove: this.deleteByName.bind(this),\r\n        });\r\n      }\r\n      const baseIconClass = ['glyphicon', 'toolbar-icon', 'toolbar-icon-left'];\r\n      const newItem = {\r\n        id: 'filter-menu',\r\n        button: {\r\n          text: this.options.i18n.getString('Filters'),\r\n          iconLeft: baseIconClass.concat('icon-filter-normal'),\r\n          iconRight: baseIconClass.concat('glyphicon-triangle-bottom'),\r\n        },\r\n        menu: {\r\n          items: menuItems,\r\n        },\r\n      };\r\n\r\n      if (this.options.toolbarView.rendered) {\r\n        this.options.toolbarView.view.update(newItem);\r\n      } else {\r\n        this.options.toolbarView.once('rendered', () => {\r\n          this.options.toolbarView.view.update(newItem);\r\n        });\r\n      }\r\n    });\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__16__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (removeText) {pug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = removeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"removeText\" in locals_for_with?locals_for_with.removeText:typeof removeText!==\"undefined\"?removeText:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\nimport { include } from 'underscore.string';\r\n\r\nexport function localize(schema, schemaI18n, i18n) {\r\n  _.each(schema.properties, (prop, name) => {\r\n    const localizedProp = prop;\r\n    let schemaName = schema.name;\r\n    let propName = name;\r\n    if (prop.property) {\r\n      const names = prop.property.split('/');\r\n      if (names.length > 1) {\r\n        [schemaName, propName] = _.last(names, 2);\r\n      }\r\n    }\r\n    if (!localizedProp.title) {\r\n      localizedProp.title = schemaI18n.property(schemaName, propName);\r\n    }\r\n\r\n    // update settings for enum type\r\n    if (!_.isEmpty(prop.enum)) {\r\n      _.defaults(localizedProp, { localized: {} });\r\n\r\n      const enumType = localizedProp.enumType ? localizedProp.enumType : localizedProp.name;\r\n\r\n      // update enum value (for odata converting) & localization\r\n      _.each(prop.enum, (enumValue) => {\r\n        let localizedValue = '';\r\n        const originalEnumValue = prop.enumValueMap[enumValue];\r\n\r\n        try {\r\n          // If enum value contains comma-separated items, localize each item individually\r\n          if (prop.localized[enumValue]) {\r\n            localizedValue = prop.localized[enumValue];\r\n          } else if (include(originalEnumValue, ',')) {\r\n            const separatedEnumValues = originalEnumValue.split(',');\r\n            const localizedEnumValues = [];\r\n            _.each(separatedEnumValues, (individualEnumValue) => {\r\n              localizedEnumValues.push(i18n.getString(`${enumType}_${individualEnumValue}`));\r\n            });\r\n            localizedValue = localizedEnumValues.join(', ');\r\n          } else {\r\n            localizedValue = i18n.getString(`${enumType}_${originalEnumValue}`);\r\n          }\r\n        } catch (e) {\r\n          // continue regardless of error\r\n        }\r\n\r\n        if (_.isEmpty(localizedValue)) {\r\n          // Try to get the localized enum value via schemaI18n\r\n          localizedValue = schemaI18n.value(\r\n            schemaName,\r\n            propName, originalEnumValue\r\n          );\r\n        }\r\n\r\n        if (!_.isEmpty(localizedValue)) {\r\n          localizedProp.localized[enumValue] = localizedValue;\r\n        }\r\n      });\r\n    } else if (prop.type === 'boolean' && !prop.localized) { // update localization for boolean value\r\n      _.extendOwn(localizedProp, { localized: {} }, _.pick(prop, 'chooseType'));\r\n      // TODO: move this part to component/i18n\r\n      const localizedTrueValue = i18n.getString(`${prop.property}`);\r\n      const localizedFalseValue = i18n.getString(`FilterOptions_${prop.property}_False`);\r\n\r\n      localizedProp.localized.true = localizedTrueValue;\r\n      localizedProp.localized.false = localizedFalseValue;\r\n      if (!_.isEmpty(localizedTrueValue)) {\r\n        localizedProp.description = localizedTrueValue;\r\n      }\r\n    }\r\n\r\n    localizedProp.name = localizedProp.title;\r\n    return localizedProp;\r\n  });\r\n  return schema;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__20__;","import FilterBar from './src/filter-bar-view';\r\n\r\nexport { FilterBar };\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport { FilterI18n } from '@bingads-webui/filter-i18n';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport filterBarTemplate from './filter-bar-template.pug';\r\nimport singleTemplate from './single.pug';\r\nimport listTemplate from './list.pug';\r\n\r\n/**\r\n * FilterBar Class\r\n * It displays the query details of a filter\r\n */\r\nclass FilterBar extends Backbone.View {\r\n  /**\r\n   * Get FilterBar's CSS class name\r\n   */\r\n  get className() {\r\n    return 'filter-bar';\r\n  }\r\n\r\n  /**\r\n   * Get all events\r\n   */\r\n  get events() {\r\n    return {\r\n      'click .filter-bar__edit-filter-link': this.onEdit,\r\n      'click .filter-bar__remove-filter-link': this.onRemove,\r\n    };\r\n  }\r\n\r\n  initialize({\r\n    options = {},\r\n    i18n,\r\n  }) {\r\n    this.i18n = i18n;\r\n    this.options = _.defaults(options || {}, {\r\n      title: i18n.getString('GridToolbar_FilterBar_Title'),\r\n      editText: i18n.getString('GridToolbar_FilterBar_Edit'),\r\n      removeText: i18n.getString('GridToolbar_FilterBar_Remove'),\r\n      loadingText: i18n.getString('GridToolbar_FilterBar_Loading'),\r\n      loadingErrorText: i18n.getString('GridToolbar_FilterBar_LoadingError'),\r\n      loading: false,\r\n      error: undefined,\r\n      humanizedFilterHtml: '',\r\n      hideEdit: false,\r\n      hideRemove: false,\r\n    });\r\n    this.setFilter = putil.withLastPromise({\r\n      promiseFactory: _.bind((filter) => {\r\n        this.options.error = undefined;\r\n        this.options.loading = true;\r\n        this.render();\r\n        if (this.options.customHumanizedHtml) {\r\n          return this.options.customHumanizedHtml(this, filter);\r\n        }\r\n        return this.humanizedHtml(filter);\r\n      }, this),\r\n      finish: _.bind((humanizedFilterHtml) => {\r\n        this.options.loading = false;\r\n        this.options.humanizedFilterHtml = humanizedFilterHtml;\r\n        this.render();\r\n      }, this),\r\n      fail: _.bind((error) => {\r\n        this.options.loading = false;\r\n        this.options.error = error;\r\n        this.options.humanizedFilterHtml = '';\r\n        this.render();\r\n      }, this),\r\n    });\r\n    this.changeFilter(this.options.filter);\r\n  }\r\n\r\n  changeFilter(filter) {\r\n    if (!filter) {\r\n      // trying to apply empty filter\r\n      // this can happen if saved filter does not have valid values\r\n      // for example, custom column filter in legacy UI.\r\n      _.defer(() => {\r\n        this.onRemove();\r\n      });\r\n      return;\r\n    }\r\n\r\n    this.options.filter = filter;\r\n    this.setFilterProcess = this.setFilter(filter);\r\n  }\r\n\r\n  onEdit() {\r\n    this.trigger('edit', this);\r\n  }\r\n\r\n  onRemove() {\r\n    this.options.filter = null;\r\n    this.trigger('remove', this);\r\n  }\r\n\r\n  render() {\r\n    this.$el.html(filterBarTemplate(this.options));\r\n\r\n    return this;\r\n  }\r\n\r\n  remove() {\r\n    if (this.setFilterProcess) {\r\n      this.setFilterProcess.cancel();\r\n      this.setFilterProcess = null;\r\n    }\r\n\r\n    Backbone.View.prototype.remove.call(this);\r\n  }\r\n\r\n  getValuesAndMoreTextForSelector(valuesInQuery, property) {\r\n    const MAX_ITEMS_TO_SHOW = 5;\r\n    const ITEMS_MAX_LENGTH = 50;\r\n    let itemsPromise;\r\n    if (property.dataSource && !_.isEmpty(valuesInQuery)) {\r\n      // Asking for one over the limit so that \"and more\" logic can be triggered\r\n      itemsPromise = property.dataSource.getByIds(valuesInQuery.slice(0, MAX_ITEMS_TO_SHOW + 1));\r\n    } else if (property.items) {\r\n      itemsPromise = Promise.resolve(property.items);\r\n    } else {\r\n      itemsPromise = Promise.resolve([]);\r\n    }\r\n\r\n    return itemsPromise\r\n      .then((items) => {\r\n        const idInfoMap = _.indexBy(items, 'Id');\r\n        const { names } = _.reduce(valuesInQuery, (memo, id) => {\r\n          const memoCopy = memo;\r\n          if (_.size(memoCopy.names) < MAX_ITEMS_TO_SHOW\r\n          && memoCopy.totalLength < ITEMS_MAX_LENGTH) {\r\n            memoCopy.names.push(_.has(idInfoMap, id) ? idInfoMap[id].Name : this.i18n.getString('Filter_Item_Deleted'));\r\n            memoCopy.totalLength += _.size(_.last(memoCopy.names));\r\n          }\r\n\r\n          return memoCopy;\r\n        }, { totalLength: 0, names: [] });\r\n\r\n        const notShowingCount = _.size(valuesInQuery) - _.size(names);\r\n\r\n        return {\r\n          values: names,\r\n          moreText: notShowingCount ? this.i18n.getString('And_More', {\r\n            remain: notShowingCount,\r\n          }) : null,\r\n        };\r\n      });\r\n  }\r\n\r\n  extendPredicate(predicate) {\r\n    const property = _.keys(predicate)[0];\r\n    const metadata = this.filterI18n.schema.getFilterProperty(property);\r\n    if (!metadata) {\r\n      throw new Error(`Property ${property} is not filterable`);\r\n    }\r\n    const opValue = _.values(predicate)[0];\r\n    const operator = _.keys(opValue)[0].replace(/^\\$/, '');\r\n    const value = _.values(opValue)[0];\r\n    const schemaI18n = {\r\n      property: metadata.title ? metadata.title : this.filterI18n.convertName(property),\r\n      operator: this.filterI18n.convertOperator(operator, metadata.operatorDisplayNameMap),\r\n      values: _.map(\r\n        _.isArray(value) ? value : [value],\r\n        val => this.filterI18n.convertValue(val, property)\r\n      ),\r\n    };\r\n\r\n    let i18nPromise;\r\n    if (metadata.type === 'id') { // for selector type, override localization (values are ids here, names are dynamic values for each selector)\r\n      i18nPromise = this.getValuesAndMoreTextForSelector(value, metadata)\r\n        .then(foo => _.extend(schemaI18n, foo));\r\n    } else {\r\n      i18nPromise = Promise.resolve(schemaI18n);\r\n    }\r\n\r\n    return i18nPromise.then(i18n => _.extend({}, predicate, {\r\n      i18n,\r\n    }));\r\n  }\r\n\r\n  extendFilter(filter) {\r\n    if (filter.$and) {\r\n      return Promise.map(filter.$and, _.bind(this.extendFilter, this))\r\n        .then($and => ({ $and }));\r\n    } else if (filter.$or) {\r\n      return Promise.map(filter.$or, _.bind(this.extendFilter, this))\r\n        .then($or => ({ $or }));\r\n    }\r\n    return this.extendPredicate(filter);\r\n  }\r\n\r\n  humanizedHtml(filter) {\r\n    if (!filter.query || !filter.depth) {\r\n      throw new Error('Incorrect filter object');\r\n    }\r\n\r\n    if (filter.depth < 1 || filter.depth > 2) {\r\n      throw new Error('Filter only support 2 levels');\r\n    }\r\n\r\n    this.filterI18n = new FilterI18n(\r\n      filter.schema,\r\n      this.i18n,\r\n      this.options.schemaI18n,\r\n      filter.options.shortDateFormat\r\n    );\r\n\r\n    const depthTemplateMap = {\r\n      1: singleTemplate,\r\n      2: listTemplate,\r\n    };\r\n\r\n    return this.extendFilter(filter.query)\r\n      .then((extended) => {\r\n        const template = depthTemplateMap[filter.depth];\r\n\r\n        return template({\r\n          filter: extended,\r\n        });\r\n      });\r\n  }\r\n}\r\n\r\nexport default FilterBar;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__26__;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (editText, error, hideEdit, hideRemove, humanizedFilterHtml, loading, loadingErrorText, loadingText, removeText, title) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel-component\\\"\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"filter_title_collapsed\\\"\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif (loading) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (pug.escape(null == (pug_interp = loadingText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (error) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (pug.escape(null == (pug_interp = loadingErrorText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (null == (pug_interp = humanizedFilterHtml) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_links\\\"\\u003E\";\nif (!hideEdit) {\npug_html = pug_html + \"\\u003Ca class=\\\"filter-bar__edit-filter-link editFilterLink\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"spritedimage filtericonsalign edit_icon\\\"\"+pug.attr(\"title\", editText, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"filter-bar__edit-filter-link editFilterLink\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = editText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nif (!hideRemove) {\npug_html = pug_html + \"\\u003Ca class=\\\"filter-bar__remove-filter-link removeFilterLink\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"spritedimage filtericonsalign remove_icon_gray_16\\\"\"+pug.attr(\"title\", removeText, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"filter-bar__remove-filter-link removeFilterLink\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = removeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"editText\" in locals_for_with?locals_for_with.editText:typeof editText!==\"undefined\"?editText:undefined,\"error\" in locals_for_with?locals_for_with.error:typeof error!==\"undefined\"?error:undefined,\"hideEdit\" in locals_for_with?locals_for_with.hideEdit:typeof hideEdit!==\"undefined\"?hideEdit:undefined,\"hideRemove\" in locals_for_with?locals_for_with.hideRemove:typeof hideRemove!==\"undefined\"?hideRemove:undefined,\"humanizedFilterHtml\" in locals_for_with?locals_for_with.humanizedFilterHtml:typeof humanizedFilterHtml!==\"undefined\"?humanizedFilterHtml:undefined,\"loading\" in locals_for_with?locals_for_with.loading:typeof loading!==\"undefined\"?loading:undefined,\"loadingErrorText\" in locals_for_with?locals_for_with.loadingErrorText:typeof loadingErrorText!==\"undefined\"?loadingErrorText:undefined,\"loadingText\" in locals_for_with?locals_for_with.loadingText:typeof loadingText!==\"undefined\"?loadingText:undefined,\"removeText\" in locals_for_with?locals_for_with.removeText:typeof removeText!==\"undefined\"?removeText:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (filter) {pug_mixins[\"predicate\"] = pug_interp = function(predicate, isFirst){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan class=\\\"column\\\"\\u003E\";\nif ((!isFirst)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"filterand\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + (pug.escape(null == (pug_interp = predicate.i18n.property) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filter_operator\\\"\\u003E\" + (pug.escape(null == (pug_interp = predicate.i18n.operator) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n// iterate predicate.i18n.values\n;(function(){\n  var $$obj = predicate.i18n.values;\n  if ('number' == typeof $$obj.length) {\n      for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n        var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n      }\n  } else {\n    var $$l = 0;\n    for (var index in $$obj) {\n      $$l++;\n      var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n    }\n  }\n}).call(this);\n\nif ((!!predicate.i18n.moreText)) {\npug_html = pug_html + \",\\u003Cspan class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+predicate.i18n.moreText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\n};\npug_html = pug_html + \"\\u003Cspan class=\\\"humanized\\\"\\u003E\";\npug_mixins[\"predicate\"](filter, true);\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"filter\" in locals_for_with?locals_for_with.filter:typeof filter!==\"undefined\"?filter:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (filter) {pug_mixins[\"predicate\"] = pug_interp = function(predicate, isFirst){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan class=\\\"column\\\"\\u003E\";\nif ((!isFirst)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"filterand\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + (pug.escape(null == (pug_interp = predicate.i18n.property) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filter_operator\\\"\\u003E\" + (pug.escape(null == (pug_interp = predicate.i18n.operator) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n// iterate predicate.i18n.values\n;(function(){\n  var $$obj = predicate.i18n.values;\n  if ('number' == typeof $$obj.length) {\n      for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n        var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n      }\n  } else {\n    var $$l = 0;\n    for (var index in $$obj) {\n      $$l++;\n      var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n    }\n  }\n}).call(this);\n\nif ((!!predicate.i18n.moreText)) {\npug_html = pug_html + \",\\u003Cspan class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+predicate.i18n.moreText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\n};\nvar predicates = filter.$and || filter.$or\npug_html = pug_html + \"\\u003Cspan class=\\\"humanized\\\"\\u003E\";\n// iterate predicates\n;(function(){\n  var $$obj = predicates;\n  if ('number' == typeof $$obj.length) {\n      for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n        var predicate = $$obj[index];\npug_mixins[\"predicate\"](predicate, index === 0);\n      }\n  } else {\n    var $$l = 0;\n    for (var index in $$obj) {\n      $$l++;\n      var predicate = $$obj[index];\npug_mixins[\"predicate\"](predicate, index === 0);\n    }\n  }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"filter\" in locals_for_with?locals_for_with.filter:typeof filter!==\"undefined\"?filter:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__33__;","module.exports = __WEBPACK_EXTERNAL_MODULE__35__;","module.exports = __WEBPACK_EXTERNAL_MODULE__37__;","module.exports = __WEBPACK_EXTERNAL_MODULE__38__;","export * from './src/constants';\r\nexport * from './src/converter';\r\nexport * from './src/predicate';\r\nexport * from './src/util';\r\nexport * from './src/add-filter-button';\r\nexport * from './src/with-popover';\r\nexport * from './src/schema-localizer';\r\nexport * from './src/filterMetadataToLegacy';\r\nexport * from './src/filterMetadata';\r\n","export const PredicateUIType = {\r\n  Selector: 0,\r\n  Editor: 1,\r\n  ReadOnly: 2,\r\n};\r\n\r\nexport const PredicateType = {\r\n  Number: 'number',\r\n  Integer: 'integer',\r\n  Boolean: 'boolean',\r\n  Category: 'category',\r\n  Selector: 'id',\r\n  String: 'string',\r\n  Custom: 'custom',\r\n  Date: 'datetime',\r\n};\r\n\r\nexport const PredicateValueUIType = {\r\n  Checkbox: 'checkbox',\r\n  Radio: 'radio',\r\n  Select: 'select',\r\n  Textarea: 'textarea',\r\n};\r\n\r\nexport const FilterStorageType = {\r\n  SelectableFilter: 'SelectableFilter',\r\n  EditableFilter: 'EditableFilter',\r\n};\r\n\r\nexport const MaximumPredicateLimit = 10;\r\n\r\nexport const MaximumSavedFiltersLimit = 10;\r\n\r\nexport const FilterBarIngoreClickOutsideClassName = 'filter-bar-ignore-click-outside';\r\n\r\nexport const WaterfallFilterType = {\r\n  CampaignType: 0,\r\n  CampaignStatus: 1,\r\n  AdGroupStatus: 2,\r\n  DateFilter: 3,\r\n};\r\n","/* eslint-disable no-param-reassign */\r\nimport { isArray, keys, map, isEmpty, object, filter, each, extend } from 'underscore';\r\nimport { Predicate } from './predicate';\r\n\r\nfunction isQueryExpressionValid(queryExpression, filterSchema) {\r\n  const propertyKey = keys(queryExpression)[0];\r\n  let isValid = false;\r\n  const property = filterSchema.filterProps()[propertyKey];\r\n\r\n  if (!property) {\r\n    each(filterSchema.filterProps(), (value, key) => {\r\n      if (propertyKey === value.originalProperty) {\r\n        queryExpression[key] = queryExpression[propertyKey];\r\n        delete queryExpression[propertyKey];\r\n        isValid = true;\r\n      }\r\n    });\r\n  } else {\r\n    isValid = true;\r\n  }\r\n  return isValid;\r\n}\r\n\r\nexport function convertFilterEntityToExpressions(filterEntity) {\r\n  const queryExpressions = [];\r\n\r\n  if (!filterEntity) {\r\n    return queryExpressions;\r\n  }\r\n\r\n  if (filterEntity.depth > 2) {\r\n    throw new Error('Filter control doesn\\'t support expression trees of depth > 2');\r\n  }\r\n  if (filterEntity.depth === 1) {\r\n    queryExpressions.push(filterEntity.query);\r\n  } else if (filterEntity.depth > 1) {\r\n    if (isArray(filterEntity.query.$and)) {\r\n      queryExpressions.push(...filterEntity.query.$and);\r\n    }\r\n    if (isArray(filterEntity.query.$or)) {\r\n      queryExpressions.push(...filterEntity.query.$or);\r\n    }\r\n  }\r\n\r\n  return filter(\r\n    queryExpressions,\r\n    queryExpression => isQueryExpressionValid(queryExpression, filterEntity.schema)\r\n  );\r\n}\r\n\r\nexport function convertExpressionsToQuery(expressions) {\r\n  let query;\r\n\r\n  if (isEmpty(expressions)) {\r\n    query = {};\r\n  } else if (expressions.length === 1) {\r\n    [query] = expressions;\r\n  } else {\r\n    query = object(['$and'], [expressions]);\r\n  }\r\n\r\n  return query;\r\n}\r\n\r\nexport function convertPredicatesToQuery(predicates) {\r\n  const queryExpressions = map(predicates, predicate => predicate.toQuery());\r\n  return convertExpressionsToQuery(queryExpressions);\r\n}\r\n\r\nexport function getValidFilterEntity(filterEntity) {\r\n  const validExpressions = convertFilterEntityToExpressions(filterEntity);\r\n  const validQuery = convertExpressionsToQuery(validExpressions);\r\n  if (isEmpty(validQuery)) {\r\n    return null;\r\n  }\r\n  filterEntity.updateQuery(validQuery);\r\n  return filterEntity;\r\n}\r\n\r\nexport function convertFilterEntityToPredicates(filterEntity) {\r\n  return convertFilterEntityToExpressions(filterEntity)\r\n    .map(queryExpression => Predicate.fromQueryExpression({\r\n      query: queryExpression,\r\n    }))\r\n    .map((editablePredicate) => {\r\n      const { properties } = filterEntity.schema.entitySchema;\r\n      if (editablePredicate.property in properties) {\r\n        if (properties[editablePredicate.property].isDeletedProperty) {\r\n          return extend(editablePredicate, {\r\n            isDeletedProperty: true,\r\n          });\r\n        }\r\n\r\n        if (properties[editablePredicate.property].isInvalidProperty) {\r\n          return extend(editablePredicate, {\r\n            isInvalidProperty: true,\r\n          });\r\n        }\r\n      }\r\n\r\n      return editablePredicate;\r\n    });\r\n}\r\n","import { isUndefined, object, keys, values, find, isEqual } from 'underscore';\r\nimport { PredicateUIType } from './constants';\r\n\r\nexport class Predicate {\r\n  constructor({\r\n    uiType = PredicateUIType.Editor,\r\n    removable,\r\n    property,\r\n    operator,\r\n    value,\r\n    items,\r\n  }) {\r\n    this.uiType = uiType;\r\n    this.removable = isUndefined(removable) ? true : removable;\r\n    this.property = property;\r\n    this.operator = operator;\r\n    this.value = value;\r\n    this.items = items;\r\n  }\r\n\r\n  getHumanizedValue() {\r\n    if (this.items && this.items.length > 0) {\r\n      return (find(this.items, item => isEqual(item.value, this.value)) || {}).text;\r\n    }\r\n    return this.value;\r\n  }\r\n\r\n  toQuery() {\r\n    return object([this.property], [object([`$${this.operator}`], [this.value])]);\r\n  }\r\n\r\n  static fromQueryExpression({\r\n    query,\r\n    removable,\r\n  }) {\r\n    const property = keys(query)[0];\r\n    const predicate = query[property];\r\n    const operator = keys(predicate)[0].replace(/^\\$/, '');\r\n    const value = values(predicate)[0];\r\n\r\n    return new Predicate({\r\n      removable,\r\n      property,\r\n      operator,\r\n      value,\r\n    });\r\n  }\r\n}\r\n","import { defaults, find, map, filter, contains, pluck, union, each, isArray, keys, isObject, isEmpty } from 'underscore';\r\nimport { Predicate } from './predicate';\r\nimport { PredicateUIType } from './constants';\r\n\r\nexport function extendPredicatesWithSelectorConfig(selector, predicates) {\r\n  const selectorPredicates\r\n    = map(selector, selectorPredicate => new Predicate(defaults(\r\n      {\r\n        uiType: PredicateUIType.Selector,\r\n        removable: false,\r\n        items: selectorPredicate.items,\r\n        property: selectorPredicate.property,\r\n        operator: 'in',\r\n      },\r\n      find(\r\n        predicates,\r\n        predicate => predicate.property === selectorPredicate.property\r\n      ) || {\r\n        value: selectorPredicate.defaultValue,\r\n      }\r\n    )));\r\n  const editPredicates = filter(predicates, predicate => !contains(pluck(selector, 'property'), predicate.property));\r\n\r\n  return union(selectorPredicates, editPredicates);\r\n}\r\n\r\nexport function removeQueryByColumnId(query, columnId, removePopColumns = false) {\r\n  let changed = false;\r\n\r\n  if (!query || isEmpty(query)) {\r\n    return changed;\r\n  }\r\n\r\n  const popColumnId = `PoP${columnId}`;\r\n  const popColumnChangeId = `PoP${columnId}Change`;\r\n  const popColumnChangePercentId = `PoP${columnId}ChangePercent`;\r\n\r\n  let idList = [columnId];\r\n\r\n  if (removePopColumns) {\r\n    idList = idList.concat([popColumnId, popColumnChangeId, popColumnChangePercentId]);\r\n  }\r\n\r\n  each(keys(query), (key) => {\r\n    const o = query[key];\r\n\r\n    if (idList.indexOf(key) >= 0) {\r\n      delete query[key]; // eslint-disable-line no-param-reassign\r\n      changed = true;\r\n    } else if (isArray(o)) {\r\n      const len = o.length;\r\n      query[key] = removePopColumns ? // eslint-disable-line no-param-reassign\r\n        filter(o, e => !e[columnId] &&\r\n          !e[popColumnId] &&\r\n          !e[popColumnChangeId] &&\r\n          !e[popColumnChangePercentId]) :\r\n        filter(o, e => !e[columnId]);\r\n      const newlen = query[key].length;\r\n\r\n      if (len !== newlen) {\r\n        changed = true;\r\n      }\r\n\r\n      if (newlen === 0 && changed) {\r\n        delete query[key]; // eslint-disable-line no-param-reassign\r\n      }\r\n    } else if (isObject(o)) {\r\n      each(idList, (id) => {\r\n        if (o[id]) {\r\n          delete o[id];\r\n          changed = true;\r\n        }\r\n      });\r\n    }\r\n  });\r\n\r\n  return changed;\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyles = (_, { palette = {} }) => ({\r\n  button: {\r\n    '&.btn': {\r\n      fontSize: '14px',\r\n      border: 'none',\r\n      height: 56,\r\n      paddingLeft: 8,\r\n      paddingRight: 8,\r\n      marginLeft: 4,\r\n      flex: '0 0 auto',\r\n\r\n      '& .iconba': {\r\n        fontSize: '16px',\r\n        color: palette.themePrimary,\r\n        marginRight: '8px',\r\n        paddingBottom: '5px', // align to link\r\n      },\r\n    },\r\n  },\r\n  buttonGray: {\r\n    '&.btn': {\r\n      backgroundColor: palette.neutralLighter,\r\n\r\n      '&:hover': {\r\n        backgroundColor: palette.neutralLight,\r\n      },\r\n      '&:focus': {\r\n        backgroundColor: palette.neutralQuaternaryAlt,\r\n        '&:hover': {\r\n          backgroundColor: palette.neutralQuaternary,\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n\r\nclass AddFilterButtonUnthemed extends React.PureComponent {\r\n  render() {\r\n    return (\r\n      <Button\r\n        disabled={this.props.disableAdd}\r\n        key=\"add filter\"\r\n        onClick={this.props.onClick}\r\n        className={classNames(\r\n          'add-filter-button',\r\n          this.props.classes.button,\r\n          this.props.isGrayCommandBar ? this.props.classes.buttonGray : null\r\n        )}\r\n      >\r\n        <Glyphicon glyph=\"ba-Add\" />\r\n        {this.props.i18n.getString(_TL_('Add filter')) }\r\n      </Button>\r\n    );\r\n  }\r\n}\r\n\r\nAddFilterButtonUnthemed.propTypes = {\r\n  i18n: PropTypes.shape({\r\n    getString: PropTypes.func,\r\n  }).isRequired,\r\n  classes: PropTypes.shape({\r\n    button: PropTypes.string.isRequired,\r\n    buttonGray: PropTypes.string.isRequired,\r\n  }).isRequired,\r\n  onClick: PropTypes.func.isRequired,\r\n  disableAdd: PropTypes.bool,\r\n  isGrayCommandBar: PropTypes.bool,\r\n};\r\n\r\nAddFilterButtonUnthemed.defaultProps = {\r\n  disableAdd: false,\r\n  isGrayCommandBar: false,\r\n};\r\n\r\n\r\nexport const AddFilterButton =\r\n  withDefaultStyles(AddFilterButtonUnthemed, getStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nexport const withPopover = (WrappedComponent) => {\r\n  const HOC = (props) => {\r\n    const {\r\n      show,\r\n      onClose,\r\n      classes,\r\n      children,\r\n      id,\r\n      placement,\r\n      closeButton,\r\n      title,\r\n      popoverClassName,\r\n      container,\r\n      focusLockContent,\r\n    } = props;\r\n\r\n    return (\r\n      <Callout\r\n        content={<WrappedComponent {...props} />}\r\n        placement={placement}\r\n        popoverId={id}\r\n        show={show}\r\n        classes={classes}\r\n        onClose={onClose}\r\n        closeButton={closeButton}\r\n        title={title}\r\n        popoverClassName={popoverClassName}\r\n        container={container}\r\n        focusLockContent={focusLockContent}\r\n      >\r\n        {children}\r\n      </Callout>\r\n    );\r\n  };\r\n\r\n  HOC.displayName = `withPopover(${getDisplayName(WrappedComponent)})`;\r\n\r\n  hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n  HOC.defaultProps = {\r\n    classes: {},\r\n    id: 'pop-over',\r\n    placement: 'bottom',\r\n    closeButton: false,\r\n    title: null,\r\n    onClose: null,\r\n    show: null,\r\n    popoverClassName: null,\r\n    container: null,\r\n    focusLockContent: true,\r\n  };\r\n\r\n  HOC.propTypes = {\r\n    children: PropTypes.element.isRequired,\r\n    onClose: PropTypes.func,\r\n    show: PropTypes.bool,\r\n    classes: PropTypes.shape({}),\r\n    id: PropTypes.string,\r\n    placement: PropTypes.string,\r\n    closeButton: PropTypes.bool,\r\n    title: PropTypes.string,\r\n    popoverClassName: PropTypes.string,\r\n    container: PropTypes.shape(),\r\n    focusLockContent: PropTypes.bool,\r\n  };\r\n\r\n  return HOC;\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__54__;","module.exports = __WEBPACK_EXTERNAL_MODULE__55__;","module.exports = __WEBPACK_EXTERNAL_MODULE__56__;","import _ from 'underscore';\r\nimport { include } from 'underscore.string';\r\n\r\nexport function localize(schema, schemaI18n, i18n) {\r\n  _.each(schema.properties, (prop, name) => {\r\n    const localizedProp = prop;\r\n    let schemaName = schema.name;\r\n    let propName = name;\r\n    if (prop.property) {\r\n      const names = prop.property.split('/');\r\n      if (names.length > 1) {\r\n        [schemaName, propName] = _.last(names, 2);\r\n      }\r\n    }\r\n    if (!localizedProp.title) {\r\n      localizedProp.title = schemaI18n.property(schemaName, propName);\r\n    }\r\n\r\n    // update settings for enum type\r\n    if (!_.isEmpty(prop.enum)) {\r\n      _.defaults(localizedProp, { localized: {} });\r\n\r\n      const enumType = localizedProp.enumType ? localizedProp.enumType : localizedProp.name;\r\n\r\n      // update enum value (for odata converting) & localization\r\n      _.each(prop.enum, (enumValue) => {\r\n        let localizedValue = '';\r\n        const originalEnumValue = prop.enumValueMap[enumValue];\r\n\r\n        try {\r\n          // If enum value contains comma-separated items, localize each item individually\r\n          if (prop.localized[enumValue]) {\r\n            localizedValue = prop.localized[enumValue];\r\n          } else if (include(originalEnumValue, ',')) {\r\n            const separatedEnumValues = originalEnumValue.split(',');\r\n            const localizedEnumValues = [];\r\n            _.each(separatedEnumValues, (individualEnumValue) => {\r\n              localizedEnumValues.push(i18n.getString(`${enumType}_${individualEnumValue}`));\r\n            });\r\n            localizedValue = localizedEnumValues.join(', ');\r\n          } else {\r\n            localizedValue = i18n.getString(`${enumType}_${originalEnumValue}`);\r\n          }\r\n        } catch (e) {\r\n          // continue regardless of error\r\n        }\r\n\r\n        if (_.isEmpty(localizedValue)) {\r\n          // Try to get the localized enum value via schemaI18n\r\n          localizedValue = schemaI18n.value(\r\n            schemaName,\r\n            propName, originalEnumValue\r\n          );\r\n        }\r\n\r\n        if (!_.isEmpty(localizedValue)) {\r\n          localizedProp.localized[enumValue] = localizedValue;\r\n        }\r\n      });\r\n    } else if (prop.type === 'boolean' && !prop.localized) { // update localization for boolean value\r\n      _.extendOwn(localizedProp, { localized: {} }, _.pick(prop, 'chooseType'));\r\n      // TODO: move this part to component/i18n\r\n      const localizedTrueValue = i18n.getString(`${prop.property}`);\r\n      const localizedFalseValue = i18n.getString(`FilterOptions_${prop.property}_False`);\r\n\r\n      localizedProp.localized.true = localizedTrueValue;\r\n      localizedProp.localized.false = localizedFalseValue;\r\n      if (!_.isEmpty(localizedTrueValue)) {\r\n        localizedProp.description = localizedTrueValue;\r\n      }\r\n    }\r\n\r\n    localizedProp.name = localizedProp.property || localizedProp.title;\r\n    return localizedProp;\r\n  });\r\n  return schema;\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { toLegacy, toLegacyString } from './enum';\r\n\r\nconst EnumPropertyToTypeMapping = {\r\n  AudienceStatus: ['AdGroupCriterionStatus'],\r\n  BidTarget: ['BidTargetType'],\r\n  BidType: ['BidType'],\r\n  CampaignType: ['CampaignType'],\r\n  CallTrackingStatus: ['AdGroupCallTrackingStatus'],\r\n  DeliveryStatus: ['DeliveryStatus'],\r\n  DevicePreference: ['DevicePreference'],\r\n  DisplayBiddingStrategyType: ['BiddingStrategyType'],\r\n  Language: ['Language'],\r\n  Medium: ['Medium'],\r\n  Status: ['CampaignStatus', 'AdGroupStatus', 'AudienceStatus', 'AdStatus'],\r\n  Type: ['AdType'],\r\n};\r\nconst EnumPropertyToStringTypeMapping = [\r\n  'AudienceType',\r\n  'Day',\r\n];\r\nconst NoEnumPropertyToStringTypeMapping = [\r\n  'DeviceName',\r\n  'LevelOfDetails',\r\n  'EditorialStatus',\r\n  'AdGroupCashbackScope',\r\n  'CampaignCashbackScope',\r\n];\r\nconst BooleanToStringTypeMapping = [\r\n  'IsAppealPending',\r\n];\r\n\r\nfunction toLegacyEnum(value, property) {\r\n  if (_.contains(EnumPropertyToStringTypeMapping, property)) {\r\n    const legacyValue = toLegacyString(value);\r\n\r\n    if (legacyValue) {\r\n      return legacyValue;\r\n    }\r\n  }\r\n\r\n  if (_.contains(NoEnumPropertyToStringTypeMapping, property)) {\r\n    return value;\r\n  }\r\n\r\n  const types = EnumPropertyToTypeMapping[property] || [property];\r\n\r\n  if (_.size(types) > 0) {\r\n    const legacyValue = toLegacy(value);\r\n\r\n    if (legacyValue) {\r\n      return legacyValue;\r\n    }\r\n  }\r\n\r\n  return null;\r\n}\r\n\r\nfunction toLegacyOperator(op, col, schema) {\r\n  let ret = op || '$eq';\r\n\r\n  switch (ret) {\r\n    case '$contains':\r\n      ret = 'Contains';\r\n      break;\r\n    case '$doesnotcontain':\r\n      ret = 'DoesNotContain';\r\n      break;\r\n    case '$startswith':\r\n      ret = 'BeginsWith';\r\n      break;\r\n    case '$endswith':\r\n      ret = 'EndsWith';\r\n      break;\r\n    case '$eq':\r\n      ret = 'Equal';\r\n      break;\r\n    case '$neq':\r\n      ret = 'NotEqual';\r\n      break;\r\n    case '$gt':\r\n      ret = 'Greater';\r\n      break;\r\n    case '$gte':\r\n      ret = 'GreaterOrEqual';\r\n      break;\r\n    case '$lt':\r\n      ret = 'Less';\r\n      break;\r\n    case '$lte':\r\n      ret = 'LessOrEqual';\r\n      break;\r\n    case '$in':\r\n      if (schema.properties[col] && _.isEmpty(schema.properties[col].enum) && _.isEmpty(schema.properties[col].groupedItems)) {\r\n        ret = 'Equal';\r\n      } else {\r\n        ret = 'EnumSelection';\r\n      }\r\n      break;\r\n    case '$containsall':\r\n      ret = 'ContainsAll';\r\n      break;\r\n    case '$containsany':\r\n      ret = 'ContainsAny';\r\n      break;\r\n    case '$containsnone':\r\n      ret = 'ContainsNone';\r\n      break;\r\n    default:\r\n      break;\r\n  }\r\n\r\n  return ret;\r\n}\r\n\r\nfunction toLegacyColumn(col, filterSchema) {\r\n  return filterSchema ? filterSchema.toAlias(col, 'legacy') : col;\r\n}\r\n\r\nfunction toLegacyValue(values, col, schema) {\r\n  if (_.contains(BooleanToStringTypeMapping, col)) {\r\n    return _.map(values, value => (value === true ? 'true' : 'false'));\r\n  }\r\n\r\n  if (schema.properties[col]) {\r\n    if (!_.isEmpty(schema.properties[col].enum) || !_.isEmpty(schema.properties[col].groupedItems)) {\r\n      return _.map(values, value => toLegacyEnum(value, col));\r\n    } else if (schema.properties[col].type === 'boolean') {\r\n      return _.map(values, value => (value === true ? 1 : 0));\r\n    }\r\n  }\r\n\r\n  return values;\r\n}\r\n\r\nexport function toLegacyFilter(filter) {\r\n  const translateToLegacyFormat = function (query) {\r\n    const condition = _.pairs(query)[0][1];\r\n    const operator = _.pairs(condition)[0][0];\r\n    let value = _.pairs(condition)[0][1];\r\n\r\n    if (!_.isArray(value)) {\r\n      value = [value];\r\n    }\r\n\r\n    return {\r\n      SelectedColumn: _.pairs(query)[0][0],\r\n      SelectedOperator: operator,\r\n      Values: value,\r\n    };\r\n  };\r\n\r\n  let schema;\r\n  let legacyFormats;\r\n\r\n\r\n  if (filter && filter.query && !_.isEmpty(filter.query)) {\r\n    schema = filter.schema && filter.schema.entitySchema ?\r\n      filter.schema.entitySchema :\r\n      filter.options.entitySchema;\r\n\r\n    if (filter.query.$and && filter.query.$and.length > 0) {\r\n      legacyFormats = [];\r\n\r\n      _.each(filter.query.$and, (query) => {\r\n        if (query.$and) {\r\n          legacyFormats = legacyFormats.concat(_.map(query.$and, subQuery => translateToLegacyFormat(subQuery)));\r\n        } else {\r\n          legacyFormats.push(translateToLegacyFormat(query));\r\n        }\r\n      });\r\n    } else {\r\n      legacyFormats = [translateToLegacyFormat(filter.query)];\r\n    }\r\n  }\r\n\r\n  if (!_.isArray(legacyFormats)) {\r\n    return null;\r\n  }\r\n\r\n  return _.map(legacyFormats, (legacyFormat) => {\r\n    let col = legacyFormat.SelectedColumn;\r\n\r\n    // replace Campaign/Status format to CampaignStatus type\r\n    if (col.indexOf('/') !== -1) {\r\n      col = col.split('/').join('');\r\n    }\r\n\r\n    // translate CamapaignIsExperiment to MT filter expression\r\n    if (col === 'CampaignIsExperiment') {\r\n      col = 'Campaign/ExperimentId';\r\n      legacyFormat.SelectedOperator = legacyFormat.Values[0] ? '$gt' : '$le';\r\n      legacyFormat.Values = [0];\r\n    } else if (col === 'BidAmountBidAmount') {\r\n      col = 'BidAmount/Bid/Amount';\r\n    } else if (col === 'BidBoostMultiplier') {\r\n      col = 'BidBoost/Multiplier';\r\n    }\r\n\r\n    return {\r\n      SelectedColumn: toLegacyColumn(col, filter.schema),\r\n      SelectedOperator: toLegacyOperator(legacyFormat.SelectedOperator, col, schema),\r\n      Values: toLegacyValue(legacyFormat.Values, col, schema),\r\n    };\r\n  });\r\n}\r\n","import _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n\r\nconst enums = {\r\n  AdGroupCriterionStatus: {\r\n    Active: 161,\r\n    Paused: 162,\r\n    Deleted: 163,\r\n    Excluded: 165,\r\n  },\r\n  AdGroupCallTrackingStatus: {\r\n    NotApplicable: 0,\r\n    Eligible: 1,\r\n    NotEligible: 2,\r\n    ProvisioningPending: 3,\r\n    Provisioned: 4,\r\n  },\r\n  AdGroupStatus: {\r\n    CampaignUserPaused: 124,\r\n    CampaignBudgetPaused: 126,\r\n    CampaignBudgetUserPaused: 127,\r\n    Draft: 140,\r\n    Active: 141,\r\n    Deleted: 143,\r\n    Paused: 144,\r\n    Expired: 150,\r\n  },\r\n  AdStatus: {\r\n    Inactive: 0,\r\n    Active: 1,\r\n    Paused: 2,\r\n    Deleted: 3,\r\n  },\r\n  AdType: {\r\n    Text: 1,\r\n    Product: 128,\r\n    AppInstall: 256,\r\n    DynamicSearch: 512,\r\n    ExpandedText: 1024,\r\n    Hotel: 2048,\r\n    Responsive: 4096,\r\n    ResponsiveSearch: 8192,\r\n  },\r\n  AdStrength: {\r\n    Unrated: 0,\r\n    Poor: 1,\r\n    Average: 2,\r\n    Good: 3,\r\n    Excellent: 4,\r\n  },\r\n  BidTargetType: {\r\n    Keyword: 0,\r\n    BehaviorSegment: 11,\r\n    Site: 12,\r\n  },\r\n  BidType: {\r\n    BidOnly: 0,\r\n    TargetAndBid: 1,\r\n  },\r\n  CallTrackingStatus: {\r\n    NotApplicable: 0,\r\n    Eligible: 1,\r\n    NotEligible: 2,\r\n    ProvisioningPending: 3,\r\n    Provisioned: 4,\r\n  },\r\n  CampaignStatus: {\r\n    Suspended: 8,\r\n    Active: 121,\r\n    Deleted: 123,\r\n    UserPaused: 124,\r\n    BudgetPaused: 126,\r\n    BudgetUserPaused: 127,\r\n  },\r\n  DevicePreference: {\r\n    All: 0,\r\n    Mobile: 2,\r\n  },\r\n  CampaignType: {\r\n    Default: 1,\r\n    Shopping: 2,\r\n    DynamicSearchAds: 4,\r\n    Audience: 8,\r\n    Smart: 16,\r\n    Hotel: 32,\r\n    PerformanceMax: 64,\r\n  },\r\n  DeliveryStatus: {\r\n    CreditCardExpired: 10,\r\n    IOExceeded: 20,\r\n    PaymentInformationMissing: 30,\r\n    InvalidFinancialStatusOther: 40,\r\n    MigrationPaused: 45,\r\n    CampaignDeleted: 48,\r\n    CampaignSuspended: 49,\r\n    CampaignBudgetPaused: 50,\r\n    AdGroupExpired: 60,\r\n    AdGroupDraft: 62,\r\n    AdGroupDeleted: 63,\r\n    CamAssetRejected: 64,\r\n    CamAssetDeleted: 66,\r\n    AdGroupTargetingTooNarrow: 67,\r\n    EditorialRejected: 70,\r\n    EditorialAppealRejected: 71,\r\n    EditorialApprovedLimitedAppealRejected: 72,\r\n    EditorialUnderAppeal: 75,\r\n    UrlInvalid: 76,\r\n    ApplicationNotFound: 77,\r\n    ApplicationDestinationUrlMismatch: 78,\r\n    PendingMetadataSync: 79,\r\n    EditorialPending: 80,\r\n    AssociationDeleted: 85,\r\n    CampaignUserPaused: 90,\r\n    AdGroupPrivacyPending: 91,\r\n    AdGroupUserPaused: 100,\r\n    AdUserPaused: 110,\r\n    KeywordMatchTypeAdGroupMediumCombinationInvalid: 115,\r\n    KeywordUserPaused: 120,\r\n    NegativeKeywordConflicts: 130,\r\n    PartialNegativeKeywordConflicts: 135,\r\n    EditorialApprovedLimited: 200,\r\n    LowSupply: 300,\r\n    LowQuality: 400,\r\n    BidBelowFirstPageBid: 500,\r\n    Incomplete: 1000,\r\n    BudgetSuggestions: 1001,\r\n    InlineOpportunity: 1060,\r\n    GeoCodingIncomplete: 1101,\r\n    ProductTargetUserPaused: 1102,\r\n    AdExtensionNotPresent: 1103,\r\n    AdExtensionDeleted: 1104,\r\n    AdExtensionAssociationDeleted: 1105,\r\n    StoreIdNotAssociated: 1106,\r\n    AdGroupAudienceAssociationPaused: 1107,\r\n    AdGroupAudienceAssociationExcluded: 1108,\r\n    AdNotPresent: 1200,\r\n    AdNotActive: 1201,\r\n    ApplicationDestinationUrlValidationIncomplete: 1252,\r\n    AutoBiddingLimitedInventoryLimit: 1412,\r\n    AutoBiddingLimitedMaxCPCRestriction: 1413,\r\n    AutoBiddingLimitedBudgetRestriction: 1414,\r\n    AutoBiddingLimitedUnAttainableTarget: 1415,\r\n    AutoBiddingPortfolioBidStrategyTrainingStatus: 1421,\r\n    Eligible: 2147483647,\r\n    New: 2000,\r\n    AutoBiddingLimitedByNotEnoughConversions: 190,\r\n    NoEligibleAds: 105,\r\n    NoEligibleKeywords: 106,\r\n    NoEligibleAdGroups: 107,\r\n  },\r\n  BiddingStrategyType: {\r\n    InheritFromParent: 0,\r\n    ManualCpc: 1,\r\n    MaxClicks: 2,\r\n    MaxConversions: 3,\r\n    TargetCpa: 4,\r\n    EnhancedCpc: 5,\r\n    TargetRoas: 6,\r\n    MaxRoas: 7,\r\n    MaxConversionValue: 8,\r\n    TargetImpressionShare: 9,\r\n    ManualCpv: 11,\r\n    ManualCpm: 12,\r\n    PercentCpc: 13,\r\n    Commission: 14,\r\n    CostPerSale: 15,\r\n  },\r\n  Language: {\r\n    Arabic: 7,\r\n    TraditionalChinese: 24,\r\n    Danish: 28,\r\n    Dutch: 29,\r\n    English: 30,\r\n    Finnish: 35,\r\n    French: 36,\r\n    German: 40,\r\n    Italian: 55,\r\n    Norwegian: 82,\r\n    Portuguese: 88,\r\n    Spanish: 109,\r\n    Swedish: 112,\r\n    SimplifiedChinese: 137,\r\n    Greek: 41,\r\n    Polish: 87,\r\n    Czech: 27,\r\n    Estonian: 32,\r\n    Croatian: 26,\r\n    Hungarian: 48,\r\n    Lithuanian: 70,\r\n    Latvian: 68,\r\n    Maltese: 75,\r\n    Romanian: 92,\r\n    Slovak: 106,\r\n    Slovenian: 107,\r\n    Turkish: 123,\r\n    Serbian: 98,\r\n    Bosnian: 138,\r\n    Albanian: 5,\r\n    Macedonian: 71,\r\n    Icelandic: 49,\r\n    Japanese: 56,\r\n    All: 1000,\r\n  },\r\n  Medium: {\r\n    Search: 1,\r\n    Content: 2,\r\n    SearchAndContent: 3,\r\n    Audience: 11,\r\n  },\r\n  OrderItemStatus: {\r\n    Active: 161,\r\n    Paused: 162,\r\n    Deleted: 163,\r\n  },\r\n  MatchType: {\r\n    Exact: 1,\r\n    Phrase: 2,\r\n    Broad: 3,\r\n  },\r\n};\r\n\r\nconst stringEnums = {\r\n  AudienceType: {\r\n    Remessaging: 'Remessaging',\r\n    Custom: 'Custom',\r\n    InMarket: 'InMarket',\r\n    Product: 'Product',\r\n    RemarketingSimilar: 'RemarketingSimilar',\r\n    CustomerList: 'CustomerList',\r\n    CombinedList: 'CombinedList',\r\n  },\r\n  Status: {\r\n    Active: 'Active',\r\n    Excluded: 'Excluded',\r\n  },\r\n  CriterionAgeCriterionAgeRange: {\r\n    EighteenToTwentyFive: 'EighteenToTwentyFive',\r\n    TwentyFiveToThirtyFive: 'TwentyFiveToThirtyFive',\r\n    ThirtyFiveToFifty: 'ThirtyFiveToFifty',\r\n    FiftyToSixtyFive: 'FiftyToSixtyFive',\r\n    SixtyFiveAndAbove: 'SixtyFiveAndAbove',\r\n    Unknown: 'Unknown',\r\n  },\r\n  CriterionGenderCriterionGenderType: {\r\n    Male: 'Male',\r\n    Female: 'Female',\r\n    Unknown: 'Unknown',\r\n  },\r\n  AudienceCriterionLevel: {\r\n    AdGroup: 'AdGroup',\r\n    Campaign: 'Campaign',\r\n  },\r\n  AccountType: {\r\n    AdAccount: 'AdAccount',\r\n    ManagerAccount: 'ManagerAccount',\r\n    Unknown: 'Unknown',\r\n  },\r\n};\r\n\r\nconst isFormat = fullValue => (/^Enum\\.(\\w+)'(\\w+)'$/).test(fullValue);\r\n\r\nexport function fromLegacy(legacyValue, type) {\r\n  if (isFormat(legacyValue)) {\r\n    return legacyValue;\r\n  }\r\n  const value = _.findKey(enums[type], val => String(val) === legacyValue);\r\n\r\n  return value ? `Enum.${type}'${value}'` : null;\r\n}\r\n\r\nexport function toLegacy(fullValue) {\r\n  if (!fullValue) {\r\n    return fullValue;\r\n  }\r\n  const [, type, value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n  const legacyValue = get(enums, [type, value]);\r\n\r\n  return _.isNumber(legacyValue) ? String(legacyValue) : get(stringEnums, [type, value]);\r\n}\r\n\r\nexport function toLegacyString(fullValue) {\r\n  if (!fullValue) {\r\n    return fullValue;\r\n  }\r\n  const [, , value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n\r\n  return value;\r\n}\r\n","/* eslint-disable */\r\n\r\n// todo [akamel] [ashish] this is an initial atempt at refactoring the mapper in webapi.js\r\nimport _ from 'underscore';\r\nimport { fromLegacy } from './enum';\r\n\r\nexport function operatorMapper(op) {\r\n  var ret = (op || 'Equal');\r\n\r\n  switch (ret) {\r\n  case 'Contains':\r\n    ret = 'contains';\r\n    break;\r\n  case 'DoesNotContain':\r\n    ret = 'doesnotcontain';\r\n    break;\r\n  case 'BeginsWith':\r\n    ret = 'startswith';\r\n    break;\r\n  case 'EndsWith':\r\n    ret = 'endswith';\r\n    break;\r\n  case 'Equal':\r\n    ret = 'eq';\r\n    break;\r\n  case 'NotEqual':\r\n    ret = 'neq';\r\n    break;\r\n  case 'Greater':\r\n    ret = 'gt';\r\n    break;\r\n  case 'GreaterOrEqual':\r\n    ret = 'gte';\r\n    break;\r\n  case 'Less':\r\n    ret = 'lt';\r\n    break;\r\n  case 'LessOrEqual':\r\n    ret = 'lte';\r\n    break;\r\n  case 'EnumSelection':\r\n    ret = 'eq';\r\n    break;\r\n  case 'Between':\r\n    ret = ['gte','lte'];\r\n    break;\r\n  }\r\n\r\n  return ret;\r\n}\r\n\r\nexport function columnNameMapper(name, entityType) {\r\n  var ret = name;\r\n\r\n  if (/^CustomColumn/.test(name)){\r\n    return 'PerformanceMetrics/' + name;\r\n  }\r\n\r\n  switch (name) {\r\n  case 'DisplayBiddingStrategyType':\r\n    return 'DisplayBiddingStrategyType';\r\n  case 'TopImpressionRate':\r\n  case 'PerformanceMetricsTopImpressionRate':\r\n    ret = 'PerformanceMetrics/TopImpressionRate';\r\n    break;\r\n  case 'AbsoluteTopImpressionRate':\r\n  case 'PerformanceMetricsAbsoluteTopImpressionRate':\r\n    ret = 'PerformanceMetrics/AbsoluteTopImpressionRate';\r\n    break;\r\n  case 'ExactMatchImpressionSharePercent':\r\n  case 'PerformanceMetricsExactMatchImpressionSharePercent':\r\n    ret = 'PerformanceMetrics/ExactMatchImpressionSharePercent';\r\n    break;\r\n  case 'TopImpressionSharePercent':\r\n  case 'PerformanceMetricsTopImpressionSharePercent':\r\n    ret = 'PerformanceMetrics/TopImpressionSharePercent';\r\n    break;\r\n  case 'TopISLostToBudgetPercent':\r\n  case 'PerformanceMetricsTopISLostToBudgetPercent':\r\n    ret = 'PerformanceMetrics/TopISLostToBudgetPercent';\r\n    break;\r\n  case 'TopISLostToRankPercent':\r\n  case 'PerformanceMetricsTopISLostToRankPercent':\r\n    ret = 'PerformanceMetrics/TopISLostToRankPercent';\r\n    break;\r\n  case 'AbsoluteTopImpressionSharePercent':\r\n  case 'PerformanceMetricsAbsoluteTopImpressionSharePercent':\r\n    ret = 'PerformanceMetrics/AbsoluteTopImpressionSharePercent';\r\n    break;\r\n  case 'AbsoluteTopISLostToBudgetPercent':\r\n  case 'PerformanceMetricsAbsoluteTopISLostToBudgetPercent':\r\n    ret = 'PerformanceMetrics/AbsoluteTopISLostToBudgetPercent';\r\n    break;\r\n  case 'AbsoluteTopISLostToRankPercent':\r\n  case 'PerformanceMetricsAbsoluteTopISLostToRankPercent':\r\n    ret = 'PerformanceMetrics/AbsoluteTopISLostToRankPercent';\r\n    break;\r\n  case 'Clicks':\r\n  case 'ClickCount':\r\n  case 'PerformanceMetricsClicks':\r\n  case 'PerformanceMetricsClickCount':\r\n    ret = 'PerformanceMetrics/Clicks';\r\n    break;\r\n  case 'Impressions':\r\n  case 'PerformanceMetricsImpressions':\r\n  case 'ImpressionCount':\r\n  case 'PerformanceMetricsImpressionCount':\r\n    ret = 'PerformanceMetrics/Impressions';\r\n    break;\r\n  case 'AveragePosition':\r\n  case 'PerformanceMetricsAveragePosition':\r\n    ret = 'PerformanceMetrics/AveragePosition';\r\n    break;\r\n  case 'TotalSpendAmount':\r\n  case 'TotalEffectiveCost':\r\n  case 'Spend':\r\n  case 'PerformanceMetricsTotalSpendAmount':\r\n  case 'PerformanceMetricsTotalEffectiveCost':\r\n  case 'PerformanceMetricsSpend':\r\n    ret = 'PerformanceMetrics/Spend';\r\n    break;\r\n  case 'ConversionCount':\r\n  case 'Conversions':\r\n  case 'PerformanceMetricsConversionCount':\r\n  case 'PerformanceMetricsConversions':\r\n    ret = 'PerformanceMetrics/Conversions';\r\n    break;\r\n  case 'ConversionsCredit':\r\n  case 'PerformanceMetricsConversionsCredit':\r\n    ret = 'PerformanceMetrics/ConversionsCredit';\r\n    break;\r\n  case 'AllConversions':\r\n  case 'PerformanceMetricsAllConversions':\r\n    ret = 'PerformanceMetrics/AllConversions';\r\n    break;\r\n  case 'AllConversionsCredit':\r\n  case 'PerformanceMetricsAllConversionsCredit':\r\n    ret = 'PerformanceMetrics/AllConversionsCredit';\r\n    break;\r\n  case 'ViewThroughConversions':\r\n  case 'PerformanceMetricsViewThroughConversions':\r\n    ret = 'PerformanceMetrics/ViewThroughConversions';\r\n    break;\r\n  case 'ViewThroughConversionsCredit':\r\n  case 'PerformanceMetricsViewThroughConversionsCredit':\r\n    ret = 'PerformanceMetrics/ViewThroughConversionsCredit';\r\n    break;\r\n  case 'ViewThroughConversionsCPA':\r\n  case 'PerformanceMetricsViewThroughConversionsCPA':\r\n    ret = 'PerformanceMetrics/ViewThroughConversionsCPA';\r\n    break;\r\n  case 'ViewThroughPartialConversionsCPA':\r\n  case 'PerformanceMetricsViewThroughPartialConversionsCPA':\r\n    ret = 'PerformanceMetrics/ViewThroughPartialConversionsCPA';\r\n    break;\r\n  case 'ViewThroughConversionsRate':\r\n  case 'PerformanceMetricsViewThroughConversionsRate':\r\n    ret = 'PerformanceMetrics/ViewThroughConversionsRate';\r\n    break;\r\n  case 'ViewThroughPartialConversionsRate':\r\n  case 'PerformanceMetricsViewThroughPartialConversionsRate':\r\n    ret = 'PerformanceMetrics/ViewThroughPartialConversionsRate';\r\n    break;\r\n  case 'ViewThroughConversionsRevenue':\r\n  case 'PerformanceMetricsViewThroughConversionsRevenue':\r\n    ret = 'PerformanceMetrics/ViewThroughConversionsRevenue';\r\n    break;\r\n  case 'ViewThroughConversionsReturnOnAdSpend':\r\n  case 'PerformanceMetricsViewThroughConversionsReturnOnAdSpend':\r\n    ret = 'PerformanceMetrics/ViewThroughConversionsReturnOnAdSpend';\r\n    break;\r\n  case 'AverageCPM':\r\n  case 'PerformanceMetricsAverageCPM':\r\n    ret = 'PerformanceMetrics/AverageCPM';\r\n    break;\r\n  case 'AverageCPC':\r\n  case 'PerformanceMetricsAverageCPC':\r\n    ret = 'PerformanceMetrics/AverageCPC';\r\n    break;\r\n  case 'CPA':\r\n  case 'PerformanceMetricsCPA':\r\n    ret = 'PerformanceMetrics/CPA';\r\n    break;\r\n  case 'PartialConversionCPA':\r\n  case 'PerformanceMetricsPartialConversionCPA':\r\n    ret = 'PerformanceMetrics/PartialConversionCPA';\r\n    break;\r\n  case 'AllConversionCPA':\r\n  case 'PerformanceMetricsAllConversionCPA':\r\n    ret = 'PerformanceMetrics/AllConversionCPA';\r\n    break;\r\n  case 'AllPartialConversionCPA':\r\n  case 'PerformanceMetricsAllPartialConversionCPA':\r\n    ret = 'PerformanceMetrics/AllPartialConversionCPA';\r\n    break;\r\n  case 'ConversionRate':\r\n  case 'PerformanceMetricsConversionRate':\r\n    ret = 'PerformanceMetrics/ConversionRate';\r\n    break;\r\n  case 'PartialConversionRate':\r\n  case 'PerformanceMetricsPartialConversionRate':\r\n    ret = 'PerformanceMetrics/PartialConversionRate';\r\n    break;\r\n  case 'AllConversionRate':\r\n  case 'PerformanceMetricsAllConversionRate':\r\n    ret = 'PerformanceMetrics/AllConversionRate';\r\n    break;\r\n  case 'AllPartialConversionRate':\r\n  case 'PerformanceMetricsAllPartialConversionRate':\r\n    ret = 'PerformanceMetrics/AllPartialConversionRate';\r\n    break;\r\n  case 'RevenueOnAdSpend':\r\n  case 'PerformanceMetricsRevenueOnAdSpend':\r\n    ret = 'PerformanceMetrics/RevenueOnAdSpend';\r\n    break;\r\n  case 'AllConversionRevenueOnAdSpend':\r\n  case 'PerformanceMetricsAllConversionRevenueOnAdSpend':\r\n    ret = 'PerformanceMetrics/AllConversionRevenueOnAdSpend';\r\n    break;\r\n  case 'AdvertiserReportedRevenue':\r\n  case 'PerformanceMetricsAdvertiserReportedRevenue':\r\n    ret = 'PerformanceMetrics/AdvertiserReportedRevenue';\r\n    break;\r\n  case 'AllConversionAdvertiserReportedRevenue':\r\n  case 'PerformanceMetricsAllConversionAdvertiserReportedRevenue':\r\n    ret = 'PerformanceMetrics/AllConversionAdvertiserReportedRevenue';\r\n    break;\r\n  case 'ClickThrough':\r\n  case 'CTR':\r\n  case 'PerformanceMetricsClickThrough':\r\n  case 'PerformanceMetricsCTR':\r\n    ret = 'PerformanceMetrics/CTR';\r\n    break;\r\n  case 'ImpShare':\r\n  case 'PerformanceMetricsImpShare':\r\n    ret= 'PerformanceMetrics/AuctionWonPercent';\r\n    break;\r\n  case 'ImpShareLostToBudget':\r\n  case 'PerformanceMetricsImpShareLostToBudget':\r\n    ret= 'PerformanceMetrics/AuctionLostToBudgetPercent';\r\n    break;\r\n  case 'ImpShareLostToBid':\r\n  case 'PerformanceMetricsImpShareLostToBid':\r\n    ret= 'PerformanceMetrics/AuctionLostToBidPercent';\r\n    break;\r\n  case 'ImpShareLostToExpectedCTR':\r\n  case 'PerformanceMetricsImpShareLostToExpectedCTR':\r\n    ret= 'PerformanceMetrics/AuctionLostToAdQualityPercent';\r\n    break;\r\n  case 'ImpShareLostToRank':\r\n  case 'PerformanceMetricsImpShareLostToRank':\r\n    ret= 'PerformanceMetrics/AuctionLostToRankPercent';\r\n    break;\r\n  case 'ImpShareLostToAdRelevance':\r\n  case 'PerformanceMetricsImpShareLostToAdRelevance':\r\n    ret= 'PerformanceMetrics/AuctionLostToLandingPercent';\r\n    break;\r\n  case 'ClickShare':\r\n  case 'PerformanceMetricsClickShare':\r\n    ret= 'PerformanceMetrics/ClickSharePercent';\r\n    break;\r\n  case 'ClickSharePercent':\r\n  case 'PerformanceMetricsClickSharePercent':\r\n    ret= 'PerformanceMetrics/ClickSharePercent';\r\n    break;\r\n  case 'AuctionWonPercent':\r\n  case 'PerformanceMetricsAuctionWonPercent':\r\n    ret= 'PerformanceMetrics/AuctionWonPercent';\r\n    break;\r\n  case 'AuctionLostToBudgetPercent':\r\n  case 'PerformanceMetricsAuctionLostToBudgetPercent':\r\n    ret= 'PerformanceMetrics/AuctionLostToBudgetPercent';\r\n    break;\r\n  case 'AuctionLostToBidPercent':\r\n  case 'PerformanceMetricsAuctionLostToBidPercent':\r\n    ret= 'PerformanceMetrics/AuctionLostToBidPercent';\r\n    break;\r\n  case 'AuctionLostToAdQualityPercent':\r\n  case 'PerformanceMetricsAuctionLostToAdQualityPercent':\r\n    ret= 'PerformanceMetrics/AuctionLostToAdQualityPercent';\r\n    break;\r\n  case 'AuctionLostToRankPercent':\r\n  case 'PerformanceMetricsAuctionLostToRankPercent':\r\n    ret= 'PerformanceMetrics/AuctionLostToRankPercent';\r\n    break;\r\n  case 'AuctionLostToLandingPercent':\r\n  case 'PerformanceMetricsAuctionLostToLandingPercent':\r\n    ret= 'PerformanceMetrics/AuctionLostToLandingPercent';\r\n    break;\r\n  case 'ClickSharePercent':\r\n  case 'PerformanceMetricsClickSharePercent':\r\n    ret= 'PerformanceMetrics/ClickSharePercent';\r\n    break;\r\n  case 'FirstPageBidEstimation':\r\n  case 'FirstPageBid':\r\n    ret = 'BidEstimate/FirstPageBidEstimation';\r\n    break;\r\n  case 'MainlineBidEstimation':\r\n  case 'MainlineBid':\r\n    ret = 'BidEstimate/MainlineBidEstimation';\r\n    break;\r\n  case 'BestPositionBidEstimation':\r\n  case 'BestPositionBid':\r\n    ret = 'BidEstimate/BestPositionBidEstimation';\r\n    break;\r\n  case 'AverageCPP':\r\n  case 'PhonePerformanceMetricsAverageCPP':\r\n    ret = 'PhonePerformanceMetrics/AverageCPP';\r\n    break;\r\n  case 'ClickCalls':\r\n  case 'PhonePerformanceMetricsClickCalls':\r\n    ret = 'PhonePerformanceMetrics/ClickCalls';\r\n    break;\r\n  case 'ManualCalls':\r\n  case 'PhonePerformanceMetricsManualCalls':\r\n    ret = 'PhonePerformanceMetrics/ManualCalls';\r\n    break;\r\n  case 'PhoneImpressions':\r\n  case 'PhonePerformanceMetricsPhoneImpressions':\r\n    ret = 'PhonePerformanceMetrics/PhoneImpressions';\r\n    break;\r\n  case 'PhoneCalls':\r\n  case 'PhonePerformanceMetricsPhoneCalls':\r\n    ret = 'PhonePerformanceMetrics/PhoneCalls';\r\n    break;\r\n  case 'TotalCost':\r\n  case 'ClickAndPhoneSpent':\r\n  case 'PhonePerformanceMetricsTotalCost':\r\n  case 'PhonePerformanceMetricsClickAndPhoneSpent':\r\n    ret = 'PhonePerformanceMetrics/ClickAndPhoneSpend';\r\n    break;\r\n  case 'PhoneThroughRate':\r\n  case 'PhonePerformanceMetricsPhoneThroughRate':\r\n  case 'PhonePerformanceMetricsPTR':\r\n    ret = 'PhonePerformanceMetrics/PTR';\r\n    break;\r\n  case 'PhoneCost':\r\n  case 'PhoneSpent':\r\n  case 'PhonePerformanceMetricsPhoneCost':\r\n  case 'PhonePerformanceMetricsPhoneSpent':\r\n    ret = 'PhonePerformanceMetrics/PhoneSpend';\r\n    break;\r\n  case 'KeywordName':\r\n    ret = 'Text';\r\n    break;\r\n  case 'CampaignStatus':\r\n    switch (entityType) {\r\n    case 'Campaign':\r\n      ret = 'Status';\r\n      break;\r\n    case 'ProductGroup':\r\n      ret = 'CampaignStatus';\r\n      break;\r\n    default:\r\n      ret = 'Campaign/Status';\r\n      break;\r\n    }\r\n    break;\r\n  case 'AdGroupStatus':\r\n    switch (entityType) {\r\n    case 'AdGroup':\r\n    case 'AdGroups':\r\n      ret = 'Status';\r\n      break;\r\n    default:\r\n      ret = 'AdGroup/Status';\r\n      break;\r\n    }\r\n    break;\r\n  case 'StatusIcon':\r\n  case 'KeywordStatus':\r\n  case 'AdUiDisplayStatus':\r\n    ret = 'Status';\r\n    break;\r\n  case 'ID':\r\n  case 'CampaignId':\r\n  case 'KeywordId':\r\n  case 'AdId':\r\n  case 'AdGroupId':\r\n  case 'AssetGroupId':\r\n  case 'AudienceAssociationId':\r\n  case 'OrderItemId':\r\n    ret = 'Id';\r\n    break;\r\n  case 'AudienceId':\r\n    switch (entityType) {\r\n      case 'AudienceAssociation':\r\n      case 'AdGroupAudienceAssociation':\r\n        ret = 'AudienceCriterion/AudienceId';\r\n        break;\r\n    }\r\n    break;\r\n  case 'AudienceType':\r\n    switch (entityType) {\r\n      case 'AudienceAssociation':\r\n      case 'AdGroupAudienceAssociation':\r\n        ret = 'AudienceCriterion/AudienceType';\r\n        break;\r\n    }\r\n    break;\r\n  case 'AudienceName':\r\n    switch (entityType) {\r\n      case 'AudienceAssociation':\r\n      case 'AdGroupAudienceAssociation':\r\n        ret = 'AudienceCriterion/AudienceName';\r\n        break;\r\n    }\r\n    break;\r\n  case 'BidMultiplier':\r\n    switch (entityType) {\r\n      case 'AudienceAssociation':\r\n      case 'AdGroupAudienceAssociation':\r\n        ret = 'AudienceCriterion/BidMultiplier';\r\n        break;\r\n    }\r\n    break;\r\n  case 'AdExtensionId':\r\n    ret = 'AdExtension/Id';\r\n    break;\r\n  case 'DeliveryStatusView':\r\n  case 'DeliveryStatus':\r\n  switch (entityType) {\r\n    case 'AdExtensionAssociation':\r\n      ret = 'AdExtension/Delivery';\r\n      break;\r\n    default:\r\n      ret = 'DeliveryStatus';\r\n      break;\r\n    }\r\n    break;\r\n  case 'MatchType':\r\n    ret = 'MatchType';\r\n    break;\r\n  case 'QualityScore':\r\n    ret = 'QualityScore/OverallQualityScore';\r\n    break;\r\n  case 'Bid':\r\n  case 'OrderItemBid':\r\n    ret = 'Bid/Amount';\r\n    break;\r\n  case 'Campaign':\r\n  case 'CampaignName':\r\n  case 'AdExtensionCampaignName':\r\n    switch (entityType) {\r\n      case 'Campaign':\r\n        ret = 'Name';\r\n        break;\r\n      case 'Keyword':\r\n      case 'Ad':\r\n      case 'AdGroup':\r\n      case 'AdGroups':\r\n      case 'AudienceAssociation':\r\n      case 'AdGroupAudienceAssociation':\r\n      case 'AdExtensionAssociation':\r\n        ret = 'Campaign/Name';\r\n        break;\r\n    }\r\n    break;\r\n  case 'AdExtensionCampaignAssociationStatus':\r\n  case 'AdExtensionAssociationStatus':\r\n    ret = 'AdExtension/Status';\r\n    break;\r\n  case 'AdGroup':\r\n  case 'KeywordAdGroupName':\r\ncase 'AdAdGroupName':\r\n  case 'AdExtensionAdGroupName':\r\n    ret = 'AdGroup/Name';\r\n    break;\r\n  case 'KeywordIsLastImported':\r\n  case 'CampaignIsLastImported':\r\n  case 'AdGroupIsLastImported':\r\n  case 'AdIsLastImported':\r\n    ret = 'UpdatedOnLastImport';\r\n    break;\r\n  case 'BudgetType':\r\n    ret = 'Budget/Type';\r\n    break;\r\n  case 'CampaignBudgetAmount':\r\n  case 'CombinedBudget':\r\n  case 'Budget':\r\n    ret = 'Budget/Amount';\r\n    break;\r\n  case 'AdGroupCashbackPercent':\r\n    ret = 'AdGroupCashback/Percent';\r\n    break;\r\n  case 'AdGroupCashbackScope':\r\n    ret = 'AdGroupCashback/Scope';\r\n    break;\r\n  case 'ProductGroupCashbackPercent':\r\n    ret = 'ProductGroupCashback/Percent';\r\n    break;\r\n  case 'ProductGroupCashbackScope':\r\n    ret = 'ProductGroupCashback/Scope';\r\n    break;\r\n  case 'CampaignCashbackPercent':\r\n    ret = 'CampaignCashback/Percent';\r\n    break;\r\n  case 'CampaignCashbackScope':\r\n    ret = 'CampaignCashback/Scope';\r\n    break;\r\n  case 'CampaignCashbackMonthlyBudget':\r\n    ret = 'CampaignCashback/MonthlyBudget';\r\n    break;\r\n  case 'AudienceCriterionCashbackAdjustment':\r\n    ret = 'AudienceCriterion/CashbackAdjustment';\r\n    break;\r\n  case 'AdType':\r\n    ret = 'Type';\r\n    break;\r\n  case 'AdsByBing':\r\n    ret = 'AdsByBing';\r\n    break;\r\n  case 'AdStrength':\r\n    ret = 'AdStrength';\r\n    break;\r\n  case 'AdTitle':\r\n    switch (entityType) {\r\n    case 'AdExtensionAssociation':\r\n      ret = 'AdExtension';\r\n      break;\r\n    default:\r\n      ret = 'Title';\r\n      break;\r\n    }\r\n    break;\r\n  case 'AdDescription':\r\n    ret = 'TitleOrText';\r\n    break;\r\n  case 'AdDestinationUrl':\r\n    ret = 'DestinationUrl';\r\n    break;\r\n  case 'AdDisplayUrl':\r\n    ret = 'DisplayUrl';\r\n    break;\r\n  case 'FormattedMedium':\r\n    ret = 'Medium';\r\n    break;\r\n  case 'AdGroupName':\r\n    switch (entityType) {\r\n      case 'AdGroup':\r\n      case 'AdGroups':\r\n        ret = 'Name';\r\n        break;\r\n      default:\r\n        ret = 'AdGroup/Name';\r\n        break;\r\n      }\r\n    break;\r\n  case 'Bidding.BroadBid':\r\n  case 'AdGroupDefaultSearchBid':\r\n    ret = 'SearchBid';\r\n    break;\r\n  case 'Bidding.ContentBid':\r\n  case 'AdGroupDefaultContentBid':\r\n    ret = 'ContentBid';\r\n    break;\r\n  case 'AdGroupCallTrackingStatus':\r\n    ret = 'CallTrackingStatus';\r\n    break;\r\n  case 'AdGroupEndDate':\r\n    switch (entityType) {\r\n      case 'AdExtensionAssociation':\r\n        ret = 'AdExtension/Scheduling/EndDate';\r\n        break;\r\n      default:\r\n        ret = 'EndDate';\r\n        break;\r\n      }\r\n    break;\r\n  case 'AdGroupStartDate':\r\n    switch (entityType) {\r\n      case 'AdExtensionAssociation':\r\n        ret = 'AdExtension/Scheduling/StartDate';\r\n        break;\r\n      default:\r\n        ret = 'StartDate';\r\n        break;\r\n      }\r\n    break;\r\n  case 'AdExtensionEndDate':\r\n    ret = 'AdExtension/Scheduling/EndDate';\r\n    break;\r\n  case 'AdExtensionStartDate':\r\n    ret = 'AdExtension/Scheduling/StartDate';\r\n    break;\r\n  case 'AdExtensionSchedule':\r\n    ret = 'AdExtension/Scheduling/DayTimeRanges';\r\n    break;\r\n  case 'AdExtensionTimeZone':\r\n    ret = 'AdExtension/Scheduling/UseSearcherTimeZone';\r\n    break;\r\n  case 'AudienceName':\r\n    ret = 'AudienceCriterion/AudienceName';\r\n    break;\r\n  case 'AudienceType':\r\n    ret = 'AudienceCriterion/AudienceType';\r\n    break;\r\n  case 'AudienceStatus':\r\n    ret = 'Status';\r\n    break;\r\n  case 'BidMultiplier':\r\n    ret = 'AudienceCriterion/BidMultiplier';\r\n    break;\r\n  case 'BidType':\r\n    ret = 'BidType';\r\n    break;\r\n  case 'AssociationState':\r\n    ret = 'AdExtension/Status';\r\n    break;\r\n  case 'FinalUrlJson':\r\n    ret = 'FinalUrls';\r\n    break;\r\n  case 'UrlCustomParametersJson':\r\n    ret = 'UrlCustomParameters';\r\n    break;\r\n  case 'TrackingTemplateJson':\r\n  case 'TrackingTemplate':\r\n    ret = 'TrackingUrlTemplate';\r\n    break;\r\n  case 'Type':\r\n    ret = 'BiddingScheme/Type';\r\n    break;\r\n  case 'CampaignCampaignType':\r\n    switch (entityType) {\r\n      case 'Campaign':\r\n        ret = 'CampaignType';\r\n        break;\r\n      default:\r\n        ret = 'Campaign/CampaignType';\r\n        break;\r\n    }\r\n    break;\r\n  case 'CampaignLanguages':\r\n    ret = 'Languages';\r\n    break;\r\n  }\r\n\r\n  return ret;\r\n}\r\n\r\nexport function columnTypeMapper(name) {\r\n  var ret = 'string';\r\n  switch (name) {\r\n  case 'KeywordName':\r\n  case 'CampaignName':\r\n  case 'KeywordAdGroupName':\r\n  case 'AdAdGroupName':\r\n    ret = 'string';\r\n    break;\r\n  case 'FinalUrls':\r\n  case 'MobileFinalUrls':\r\n    ret = 'stringEnum';\r\n  case 'BudgetType':\r\n  case 'StatusIcon':\r\n  case 'CampaignStatus':\r\n  case 'KeywordStatus':\r\n  case 'AdUiDisplayStatus':\r\n  case 'AdGroupStatus':\r\n  case 'MatchType':\r\n  case 'DeliveryStatus':\r\n  case 'AdType':\r\n  case 'AdGroupCallTrackingStatus':\r\n  case 'FormattedMedium':\r\n  case 'DevicePreference':\r\n  case 'AudienceStatus':\r\n  case 'CampaignCampaignType':\r\n  case 'DisplayBiddingStrategyType':\r\n  case 'BidType':\r\n  case 'AudienceType':\r\n  case 'CampaignLanguages':\r\n  case 'Language':\r\n  case 'Languages':\r\n  case 'Level':\r\n    ret = 'enum';\r\n    break;\r\n  case 'KeywordId':\r\n  case 'CampaignId':\r\n  case 'AdId':\r\n  case 'AdGroupId':\r\n  case 'AdExtensionId':\r\n  case 'AudienceAssociationId':\r\n  case 'Clicks':\r\n  case 'Impressions':\r\n  case 'AveragePosition':\r\n  case 'TotalEffectiveCost':\r\n  case 'Spend':\r\n  case 'Conversions':\r\n  case 'ConversionsCredit':\r\n  case 'AverageCPM':\r\n  case 'AverageCPC':\r\n  case 'CPA':\r\n  case 'PartialConversionCPA':\r\n  case 'ConversionRate':\r\n  case 'PartialConversionRate':\r\n  case 'RevenueOnAdSpend':\r\n  case 'AdvertiserReportedRevenue':\r\n  case 'AllConversionCPA':\r\n  case 'AllPartialConversionCPA':\r\n  case 'AllConversions':\r\n  case 'AllConversionsCredit':\r\n  case 'AllConversionRate':\r\n  case 'AllPartialConversionRate':\r\n  case 'AllConversionAdvertiserReportedRevenue':\r\n  case 'AllConversionRevenueOnAdSpend':\r\n  case 'ViewThroughConversions':\r\n  case 'ViewThroughConversionsCredit':\r\n  case 'ViewThroughConversionsCPA':\r\n  case 'ViewThroughPartialConversionsCPA':\r\n  case 'ViewThroughConversionsRate':\r\n  case 'ViewThroughPartialConversionsRate':\r\n  case 'ViewThroughConversionsRevenue':\r\n  case 'ViewThroughConversionsReturnOnAdSpend':\r\n  case 'ImpShare':\r\n  case 'ImpShareLostToBudget':\r\n  case 'ImpShareLostToRank':\r\n  case 'ImpShareLostToAdRelevance':\r\n  case 'ImpShareLostToExpectedCTR':\r\n  case 'ImpShareLostToBid':\r\n  case 'ClickShare':\r\n  case 'AuctionWonPercent':\r\n  case 'AuctionLostToBudgetPercent':\r\n  case 'AuctionLostToBidPercent':\r\n  case 'AuctionLostToAdQualityPercent':\r\n  case 'AuctionLostToRankPercent':\r\n  case 'AuctionLostToLandingPercent':\r\n  case 'ClickSharePercent':\r\n  case 'TopImpressionRate':\r\n  case 'AbsoluteTopImpressionRate':\r\n  case 'ExactMatchImpressionSharePercent':\r\n  case 'TopImpressionSharePercent':\r\n  case 'TopISLostToBudgetPercent':\r\n  case 'TopISLostToRankPercent':\r\n  case 'AbsoluteTopImpressionSharePercent':\r\n  case 'AbsoluteTopISLostToBudgetPercent':\r\n  case 'AbsoluteTopISLostToRankPercent':\r\n  case 'CTR':\r\n  case 'PerformanceMetricsClicks':\r\n  case 'PerformanceMetricsImpressions':\r\n  case 'PerformanceMetricsAveragePosition':\r\n  case 'PerformanceMetricsTotalEffectiveCost':\r\n  case 'PerformanceMetricsSpend':\r\n  case 'PerformanceMetricsConversions':\r\n  case 'PerformanceMetricsConversionsCredit':\r\n  case 'PerformanceMetricsAverageCPM':\r\n  case 'PerformanceMetricsAverageCPC':\r\n  case 'PerformanceMetricsCPA':\r\n  case 'PerformanceMetricsPartialConversionCPA':\r\n  case 'PerformanceMetricsConversionRate':\r\n  case 'PerformanceMetricsPartialConversionRate':\r\n  case 'PerformanceMetricsRevenueOnAdSpend':\r\n  case 'PerformanceMetricsAdvertiserReportedRevenue':\r\n  case 'PerformanceMetricsAllConversionCPA':\r\n  case 'PerformanceMetricsAllPartialConversionCPA':\r\n  case 'PerformanceMetricsAllConversions':\r\n  case 'PerformanceMetricsAllConversionsCredit':\r\n  case 'PerformanceMetricsAllConversionRate':\r\n  case 'PerformanceMetricsAllPartialConversionRate':\r\n  case 'PerformanceMetricsAllConversionAdvertiserReportedRevenue':\r\n  case 'PerformanceMetricsAllConversionRevenueOnAdSpend':\r\n  case 'PerformanceMetricsImpShare':\r\n  case 'PerformanceMetricsImpShareLostToBudget':\r\n  case 'PerformanceMetricsImpShareLostToRank':\r\n  case 'PerformanceMetricsImpShareLostToAdRelevance':\r\n  case 'PerformanceMetricsImpShareLostToExpectedCTR':\r\n  case 'PerformanceMetricsImpShareLostToBid':\r\n  case 'PerformanceMetricsClickShare':\r\n  case 'PerformanceMetricsAuctionWonPercent':\r\n  case 'PerformanceMetricsAuctionLostToBudgetPercent':\r\n  case 'PerformanceMetricsAuctionLostToBidPercent':\r\n  case 'PerformanceMetricsAuctionLostToAdQualityPercent':\r\n  case 'PerformanceMetricsAuctionLostToRankPercent':\r\n  case 'PerformanceMetricsAuctionLostToLandingPercent':\r\n  case 'PerformanceMetricsClickSharePercent':\r\n  case 'PerformanceMetricsCTR':\r\n  case 'PerformanceMetricsViewThroughConversions':\r\n  case 'PerformanceMetricsViewThroughConversionsCredit':\r\n  case 'PerformanceMetricsViewThroughConversionsCPA':\r\n  case 'PerformanceMetricsViewThroughPartialConversionsCPA':\r\n  case 'PerformanceMetricsViewThroughConversionsRate':\r\n  case 'PerformanceMetricsViewThroughPartialConversionsRate':\r\n  case 'PerformanceMetricsViewThroughConversionsRevenue':\r\n  case 'PerformanceMetricsViewThroughConversionsReturnOnAdSpend':\r\n  case 'FirstPageBid':\r\n  case 'MainlineBid':\r\n  case 'BestPositionBid':\r\n  case 'OrderItemBid':\r\n  case 'QualityScore':\r\n  case 'AdGroupDefaultSearchBid':\r\n  case 'AdGroupDefaultContentBid':\r\n  case 'CampaignBudgetAmount':\r\n  case 'OrderItemId':\r\n  case 'Labels':\r\n    ret = 'number';\r\n    break;\r\n  case 'KeywordIsLastImported':\r\n  case 'CampaignIsLastImported':\r\n  case 'AdIsLastImported':\r\n  case 'AdGroupIsLastImported':\r\n  case 'HasAuctionInsight':\r\n  case 'AdStrength':\r\n  case 'AdsByBing':\r\n    ret = 'bool';\r\n    break;\r\n  case 'AdGroupStartDate':\r\n  case 'AdGroupEndDate':\r\n    ret = 'date';\r\n    break;\r\n  case 'AdExtensionCampaignAssociationStatus':\r\n  case 'AdExtensionAssociationStatus':\r\n    ret = 'enum';\r\n    break;\r\n  }\r\n\r\n  return ret;\r\n}\r\n\r\nexport function valueFormatter(value, type, columnName, entityType, decimal) {\r\n  switch (type) {\r\n  case 'number':\r\n    return isNaN(Number(value)) ? decimal.fromLocalToFloat(value) : Number(value);\r\n  case 'bool':\r\n    //UI server side will serialize value as \"1\" instead of 1 in certain scenarios, so use == for that check\r\n    return value === true || value == 1;\r\n  case 'enum':\r\n    return this.enumMapper[columnName](value, entityType);\r\n  default:\r\n    return value;\r\n  }\r\n}\r\n\r\nexport function lambdaMapper(operator, columnName, entityType, values) {\r\n  if (_.isEmpty(operator)) {\r\n    return null;\r\n  }\r\n\r\n  switch (operator.toLowerCase()) {\r\n    case 'containsany':\r\n      return {\r\n        logic: 'or',\r\n        mapToShorterVersion: true,\r\n        secondLogic: 'any',\r\n        fieldId: this.lambadaFieldIdMapping(columnName, entityType),\r\n        operator: 'eq',\r\n      }\r\n    case 'containsall':\r\n      return {\r\n        logic: 'and',\r\n        mapToShorterVersion: false,\r\n        secondLogic: 'any',\r\n        fieldId: 'd:' + this.lambadaFieldIdMapping(columnName, entityType),\r\n        operator: 'eq',\r\n      }\r\n    case 'containsnone':\r\n      return {\r\n        logic: 'and',\r\n        mapToShorterVersion: true,\r\n        secondLogic: 'all',\r\n        fieldId: this.lambadaFieldIdMapping(columnName, entityType),\r\n        operator: 'ne',\r\n      }\r\n    case 'contains':\r\n      if (_.contains(['finalurls', 'mobilefinalurls'], columnName.toLowerCase())) {\r\n        return {\r\n          logic: 'and',\r\n          mapToShorterVersion: false,\r\n          secondLogic: 'any',\r\n          fieldId: 'd:contains(d,\\'' + values[0] + '\\')',\r\n          operator: '',\r\n          value: '',\r\n        }\r\n      } else {\r\n        return null;\r\n      };\r\n\r\n  case 'doesnotcontain':\r\n    if (_.contains(['finalurls', 'mobilefinalurls'], columnName.toLowerCase())) {\r\n        return {\r\n          logic: 'and',\r\n          mapToShorterVersion: false,\r\n          secondLogic: 'any',\r\n          fieldId: 'd:contains(d,\\'' + values[0] + '\\')',\r\n          operator: 'eq',\r\n          value: 'false',\r\n        }\r\n      } else {\r\n        return null;\r\n      };\r\n    default:\r\n      return null;\r\n  }\r\n}\r\n\r\nexport function lambadaFieldIdMapping(columnName, entityType) {\r\n  switch (columnName) {\r\n    case 'Labels':\r\n      return 'd/Id';\r\n  case 'CampaignLanguages':\r\n  case 'Languages':\r\n      return 'd';\r\n    default:\r\n      return columnName;\r\n  }\r\n}\r\nexport const enumMapper = {\r\n  'Level': function (value) {\r\n    return 'Enum.AudienceCriterionLevel\\'' + value + '\\'';\r\n  },\r\n  'Languages':  function (value) {\r\n    if (value.indexOf('Enum.Language') < 0) {\r\n      return 'Enum.Language\\'' + value + '\\'';\r\n    }\r\n    return value;\r\n  },\r\n  'Language':  function (value) {\r\n    if (value !== null && value.indexOf('Enum.Language') < 0) {\r\n      if (_.isNaN(Number(value))) {\r\n        return 'Enum.Language\\'' + value + '\\'';\r\n      }\r\n\r\n      return fromLegacy(value, 'Language');\r\n    }\r\n    return value;\r\n  },\r\n  'BiddingScheme/Type': function (value) {\r\n    return fromLegacy(value, 'BiddingStrategyType');\r\n  },\r\n  'DisplayBiddingStrategyType': function (value) {\r\n    return fromLegacy(value, 'BiddingStrategyType');\r\n  },\r\n  'BidType': function(value) {\r\n    switch(value) {\r\n      case '0':\r\n        return 'Enum.BidType\\'BidOnly\\'';\r\n      case '1':\r\n        return 'Enum.BidType\\'TargetAndBid\\'';\r\n    }\r\n  },\r\n  'AudienceCriterion/AudienceType': function(value) {\r\n    return \"Enum.AudienceType'\" + value + \"'\";\r\n  },\r\n  'Campaign/CampaignType': function (value) {\r\n    return fromLegacy(value, 'CampaignType');\r\n  },\r\n  CampaignType: function (value) {\r\n    return fromLegacy(value, 'CampaignType');\r\n  },\r\n  CallTrackingStatus: function (value) {\r\n    return fromLegacy(value, 'AdGroupCallTrackingStatus');\r\n  },\r\n  'Budget/Type': function (value) {\r\n    switch (value) {\r\n    case '0':\r\n    case 'Monthly':\r\n      return 'Enum.BudgetType\\'Monthly\\'';\r\n    case '1':\r\n    case 'DailyStandard':\r\n      return 'Enum.BudgetType\\'DailyStandard\\'';\r\n    case '2':\r\n    case 'DailyAccelerated':\r\n      return 'Enum.BudgetType\\'DailyAccelerated\\'';\r\n    case '3':\r\n    case 'LifetimeBudgetStandard':\r\n      return 'Enum.BudgetType\\'LifetimeBudgetStandard\\'';\r\n    }\r\n  },\r\n  'Medium': function (value) {\r\n    var result = fromLegacy(value, 'Medium');\r\n    if (result) return result;\r\n    switch (value) {\r\n    case 'Search':\r\n      return 'Enum.Medium\\'Search\\'';\r\n    case 'Content':\r\n      return 'Enum.Medium\\'Content\\'';\r\n    case 'SearchAndContent':\r\n      return 'Enum.Medium\\'SearchAndContent\\'';\r\n      case 'Audience':\r\n      return 'Enum.Medium\\'Audience\\'';\r\n    }\r\n  },\r\n  Type: function (value) {\r\n    switch (value) {\r\n    case '1':\r\n    case 'Text':\r\n      return 'Enum.AdType\\'Text\\'';\r\n    case '2':\r\n      return 'Enum.AdType\\'Mobile\\'';\r\n    case '4':\r\n      return 'Enum.AdType\\'BannerImage\\'';\r\n    case '8':\r\n      return 'Enum.AdType\\'CPAAd\\'';\r\n    case '16':\r\n      return 'Enum.AdType\\'RichMedia\\'';\r\n    case '32':\r\n      return 'Enum.AdType\\'ThirdPartyServedAsset\\'';\r\n    case '64':\r\n      return 'Enum.AdType\\'RichSearchAd\\'';\r\n    case '128':\r\n      return 'Enum.AdType\\'Product\\'';\r\n    case '256':\r\n    case 'AppInstall':\r\n      return 'Enum.AdType\\'AppInstall\\'';\r\n    case '512':\r\n      return 'Enum.AdType\\'DynamicSearch\\'';\r\n    case '1024':\r\n    case 'ExpandedText':\r\n      return 'Enum.AdType\\'ExpandedText\\'';\r\n    case '4096':\r\n    case 'Responsive':\r\n      return 'Enum.AdType\\'Responsive\\'';\r\n    case '8192':\r\n    case 'ResponsiveSearch':\r\n      return 'Enum.AdType\\'ResponsiveSearch\\'';\r\n    }\r\n  },\r\n  DevicePreference: function (value) {\r\n    switch (value) {\r\n    case '0':\r\n    case 'All':\r\n      return 'Enum.DevicePreference\\'All\\'';\r\n    case '2':\r\n    case 'Mobile':\r\n      return 'Enum.DevicePreference\\'Mobile\\'';\r\n    }\r\n  },\r\n  MatchType: function (value) {\r\n    switch (value) {\r\n    case '1':\r\n      return 'Enum.MatchType\\'Exact\\'';\r\n    case '2':\r\n      return 'Enum.MatchType\\'Phrase\\'';\r\n    case '3':\r\n      return 'Enum.MatchType\\'Broad\\'';\r\n    case '5':\r\n      return 'Enum.MatchType\\'Content\\'';\r\n    }\r\n  },\r\n  DeliveredMatchType: function (value) {\r\n    switch (value) {\r\n    case '1':\r\n      return 'Enum.MatchType\\'Exact\\'';\r\n    case '2':\r\n      return 'Enum.MatchType\\'Phrase\\'';\r\n    case '3':\r\n      return 'Enum.MatchType\\'Broad\\'';\r\n    case '5':\r\n      return 'Enum.MatchType\\'Content\\'';\r\n    }\r\n  },\r\n  SearchTermStatus: function (value) {\r\n    switch (value) {\r\n    case '0':\r\n      return 'Enum.SearchTermStatus\\'None\\'';\r\n    case '1':\r\n      return 'Enum.SearchTermStatus\\'Added\\'';\r\n    case '2':\r\n      return 'Enum.SearchTermStatus\\'Excluded\\'';\r\n    case '3':\r\n      return 'Enum.SearchTermStatus\\'Added,Excluded\\'';\r\n    }\r\n  },\r\n  'AdExtension/Delivery': function (value) {\r\n      switch (value) {\r\n      case '40':\r\n      case 'InvalidFinancialStatusOther':\r\n        return 'Enum.DeliveryStatus\\'InvalidFinancialStatusOther\\'';\r\n      case '48':\r\n      case 'CampaignDeleted':\r\n        return 'Enum.DeliveryStatus\\'CampaignDeleted\\'';\r\n      case '49':\r\n      case 'CampaignSuspended':\r\n        return 'Enum.DeliveryStatus\\'CampaignSuspended\\'';\r\n      case '50':\r\n      case 'CampaignBudgetPaused':\r\n        return 'Enum.DeliveryStatus\\'CampaignBudgetPaused\\'';\r\n      case '70':\r\n      case 'EditorialRejected':\r\n        return 'Enum.DeliveryStatus\\'EditorialRejected\\'';\r\n      case '75':\r\n        return 'Enum.DeliveryStatus\\'EditorialUnderAppeal\\'';\r\n      case '80':\r\n      case 'EditorialPending':\r\n        return 'Enum.DeliveryStatus\\'EditorialPending\\'';\r\n      case '85':\r\n      case 'AssociationDeleted':\r\n        return 'Enum.DeliveryStatus\\'AssociationDeleted\\'';\r\n      case '90':\r\n      case 'CampaignUserPaused':\r\n        return 'Enum.DeliveryStatus\\'CampaignUserPaused\\'';\r\n      case '200':\r\n      case 'EditorialApprovedLimited':\r\n        return 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\'';\r\n      case '2147483647':\r\n      case 'Eligible':\r\n        return 'Enum.DeliveryStatus\\'Eligible\\'';\r\n    }\r\n  },\r\n  DeliveryStatus: function (value) {\r\n    var result = fromLegacy(value, 'DeliveryStatus');\r\n\r\n    if (result) return result;\r\n\r\n    switch (value) {\r\n      case 'CreditCardExpired':\r\n        return 'Enum.DeliveryStatus\\'CreditCardExpired\\'';\r\n      case 'IOExceeded':\r\n        return 'Enum.DeliveryStatus\\'IOExceeded\\'';\r\n      case 'PaymentInformationMissing':\r\n        return 'Enum.DeliveryStatus\\'PaymentInformationMissing\\'';\r\n      case 'InvalidFinancialStatusOther':\r\n        return 'Enum.DeliveryStatus\\'InvalidFinancialStatusOther\\'';\r\n      case 'MigrationPaused':\r\n        return 'Enum.DeliveryStatus\\'MigrationPaused\\'';\r\n      case 'CampaignDeleted':\r\n        return 'Enum.DeliveryStatus\\'CampaignDeleted\\'';\r\n      case 'CampaignSuspended':\r\n        return 'Enum.DeliveryStatus\\'CampaignSuspended\\'';\r\n      case 'CampaignBudgetPaused':\r\n        return 'Enum.DeliveryStatus\\'CampaignBudgetPaused\\'';\r\n      case 'AdGroupExpired':\r\n        return 'Enum.DeliveryStatus\\'AdGroupExpired\\'';\r\n      case 'AdGroupDraft':\r\n        return 'Enum.DeliveryStatus\\'AdGroupDraft\\'';\r\n      case 'AdGroupDeleted':\r\n        return 'Enum.DeliveryStatus\\'AdGroupDeleted\\'';\r\n      case 'CamAssetRejected':\r\n        return 'Enum.DeliveryStatus\\'CamAssetRejected\\'';\r\n      case 'CamAssetDeleted':\r\n        return 'Enum.DeliveryStatus\\'CamAssetDeleted\\'';\r\n      case 'AdGroupTargetingTooNarrow':\r\n        return 'Enum.DeliveryStatus\\'AdGroupTargetingTooNarrow\\'';\r\n      case 'EditorialRejected':\r\n        return 'Enum.DeliveryStatus\\'EditorialRejected\\'';\r\n      case 'EditorialAppealRejected':\r\n        return 'Enum.DeliveryStatus\\'EditorialAppealRejected\\'';\r\n      case 'EditorialPending':\r\n        return 'Enum.DeliveryStatus\\'EditorialPending\\'';\r\n      case 'AssociationDeleted':\r\n        return 'Enum.DeliveryStatus\\'AssociationDeleted\\'';\r\n      case 'CampaignUserPaused':\r\n        return 'Enum.DeliveryStatus\\'CampaignUserPaused\\'';\r\n      case 'AdGroupPrivacyPending':\r\n        return 'Enum.DeliveryStatus\\'AdGroupPrivacyPending\\'';\r\n      case 'AdGroupUserPaused':\r\n        return 'Enum.DeliveryStatus\\'AdGroupUserPaused\\'';\r\n      case 'AdUserPaused':\r\n        return 'Enum.DeliveryStatus\\'AdUserPaused\\'';\r\n      case 'KeywordMatchTypeAdGroupMediumCombinationInvalid':\r\n        return 'Enum.DeliveryStatus\\'KeywordMatchTypeAdGroupMediumCombinationInvalid\\'';\r\n      case 'KeywordUserPaused':\r\n        return 'Enum.DeliveryStatus\\'KeywordUserPaused\\'';\r\n      case 'NegativeKeywordConflicts':\r\n        return 'Enum.DeliveryStatus\\'NegativeKeywordConflicts\\'';\r\n      case 'PartialNegativeKeywordConflicts':\r\n        return 'Enum.DeliveryStatus\\'PartialNegativeKeywordConflicts\\'';\r\n      case 'EditorialApprovedLimited':\r\n        return 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\'';\r\n      case 'EditorialApprovedLimitedAppealRejected':\r\n        return 'Enum.DeliveryStatus\\'EditorialApprovedLimitedAppealRejected\\'';\r\n      case 'LowSupply':\r\n        return 'Enum.DeliveryStatus\\'LowSupply\\'';\r\n      case 'LowQuality':\r\n        return 'Enum.DeliveryStatus\\'LowQuality\\'';\r\n      case 'BidBelowFirstPageBid':\r\n        return 'Enum.DeliveryStatus\\'BidBelowFirstPageBid\\'';\r\n      case 'Incomplete':\r\n        return 'Enum.DeliveryStatus\\'Incomplete\\'';\r\n      case 'BudgetSuggestions':\r\n        return 'Enum.DeliveryStatus\\'BudgetSuggestions\\'';\r\n      case 'InlineOpportunity':\r\n        return 'Enum.DeliveryStatus\\'InlineOpportunity\\'';\r\n      case 'GeoCodingIncomplete':\r\n        return 'Enum.DeliveryStatus\\'GeoCodingIncomplete\\'';\r\n      case 'ProductTargetUserPaused':\r\n        return 'Enum.DeliveryStatus\\'ProductTargetUserPaused\\'';\r\n      case 'AdExtensionNotPresent':\r\n        return 'Enum.DeliveryStatus\\'AdExtensionNotPresent\\'';\r\n      case 'AdExtensionDeleted':\r\n        return 'Enum.DeliveryStatus\\'AdExtensionDeleted\\'';\r\n      case 'AdExtensionAssociationDeleted':\r\n        return 'Enum.DeliveryStatus\\'AdExtensionAssociationDeleted\\'';\r\n      case 'StoreIdNotAssociated':\r\n        return 'Enum.DeliveryStatus\\'StoreIdNotAssociated\\'';\r\n      case 'AdGroupAudienceAssociationPaused':\r\n        return 'Enum.DeliveryStatus\\'AdGroupAudienceAssociationPaused\\'';\r\n      case 'AdGroupAudienceAssociationExcluded':\r\n        return 'Enum.DeliveryStatus\\'AdGroupAudienceAssociationExcluded\\'';\r\n      case 'AdNotPresent':\r\n        return 'Enum.DeliveryStatus\\'AdNotPresent\\'';\r\n      case 'AdNotActive':\r\n        return 'Enum.DeliveryStatus\\'AdNotActive\\'';\r\n      case 'UrlInvalid':\r\n        return 'Enum.DeliveryStatus\\'UrlInvalid\\'';\r\n      case 'ApplicationNotFound':\r\n        return 'Enum.DeliveryStatus\\'ApplicationNotFound\\'';\r\n      case 'ApplicationDestinationUrlMismatch':\r\n        return 'Enum.DeliveryStatus\\'ApplicationDestinationUrlMismatch\\'';\r\n      case 'PendingMetadataSync':\r\n        return 'Enum.DeliveryStatus\\'PendingMetadataSync\\'';\r\n      case 'ApplicationDestinationUrlValidationIncomplete':\r\n        return 'Enum.DeliveryStatus\\'ApplicationDestinationUrlValidationIncomplete\\'';\r\n      case 'AutoBiddingLimitedInventoryLimit':\r\n        return 'Enum.DeliveryStatus\\'AutoBiddingLimitedInventoryLimit\\'';\r\n      case 'AutoBiddingLimitedMaxCPCRestriction':\r\n        return 'Enum.DeliveryStatus\\'AutoBiddingLimitedMaxCPCRestriction\\'';\r\n      case 'AutoBiddingLimitedBudgetRestriction':\r\n        return 'Enum.DeliveryStatus\\'AutoBiddingLimitedBudgetRestriction\\'';\r\n      case 'AutoBiddingLimitedUnAttainableTarget':\r\n        return 'Enum.DeliveryStatus\\'AutoBiddingLimitedUnAttainableTarget\\'';\r\n      case 'AutoBiddingPortfolioBidStrategyTrainingStatus':\r\n        return 'Enum.DeliveryStatus\\'AutoBiddingPortfolioBidStrategyTrainingStatus\\'';\r\n      case 'Eligible':\r\n        return 'Enum.DeliveryStatus\\'Eligible\\'';\r\n    }\r\n  },\r\n  AdStrength: function (value) {\r\n    switch (value) {\r\n    case '0':\r\n      return 'Enum.AdStrength\\'Unrated\\'';\r\n    case '1':\r\n      return 'Enum.AdStrength\\'Poor\\'';\r\n    case '2':\r\n      return 'Enum.AdStrength\\'Average\\'';\r\n    case '3':\r\n      return 'Enum.AdStrength\\'Good\\'';\r\n    case '4':\r\n      return 'Enum.AdStrength\\'Excellent\\'';\r\n    }\r\n  },\r\n  'Campaign/Status': function(value) {\r\n    return fromLegacy(value, 'CampaignStatus');\r\n  },\r\n  'CampaignStatus': function(value) {\r\n    return fromLegacy(value, 'CampaignStatus');\r\n  },\r\n\r\n  'AdGroup/Status': function (value) {\r\n    return fromLegacy(value, 'AdGroupStatus');\r\n  },\r\n\r\n  'AdExtension/Status': function(value) {\r\n    switch(value) {\r\n      case '108':\r\n        return 'Enum.AdExtensionStatus\\'Active\\'';\r\n      case '110':\r\n        return 'Enum.AdExtensionStatus\\'Deleted\\'';\r\n    }\r\n  },\r\n\r\n  //ads, keywords\r\n  Status: function (value, entityType) {\r\n    switch (entityType) {\r\n    case 'Campaign':\r\n      return fromLegacy(value, 'CampaignStatus');\r\n\r\n    case 'AdGroup':\r\n    case 'AdGroups':\r\n      return fromLegacy(value, 'AdGroupStatus');\r\n\r\n    case 'Keyword':\r\n      return fromLegacy(value, 'OrderItemStatus');\r\n\r\n    case 'Ad':\r\n      // AdStatus\r\n      switch (value) {\r\n      case '0':\r\n        return 'Enum.AdStatus\\'Inactive\\'';\r\n      case '1':\r\n        return 'Enum.AdStatus\\'Active\\'';\r\n      case '2':\r\n        return 'Enum.AdStatus\\'Paused\\'';\r\n      case '3':\r\n        return 'Enum.AdStatus\\'Deleted\\'';\r\n      }\r\n      break;\r\n\r\n    case 'Goal':\r\n      // ConversionGoalStatus\r\n      switch (value) {\r\n      case 'Active':\r\n        return 'Enum.GoalStatus\\'Active\\'';\r\n      case 'Paused':\r\n        return 'Enum.GoalStatus\\'Paused\\'';\r\n      }\r\n      break;\r\n\r\n    // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=290&lineStyle=plain&lineEnd=290&lineStartColumn=17&lineEndColumn=165\r\n    case 'AudienceAssociation':\r\n    case 'AdGroupAudienceAssociation':\r\n    // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=305&lineStyle=plain&lineEnd=305&lineStartColumn=17&lineEndColumn=169\r\n    case 'AdGroupAudienceCriterionWithBI':\r\n      return fromLegacy(value, 'AdGroupCriterionStatus');\r\n    // https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppsMT/pullrequest/753364?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FAggregatorService%2FDataAggregator%2FGetAudienceAssociationsWithBIData%2FAudienceAssociationsWithBiDataSortAndFilter.cs&_a=overview\r\n    case 'AudienceCriterionWithBI':\r\n      return fromLegacy(value, 'AdGroupCriterionStatus');\r\n    }\r\n  },\r\n\r\n  // TODO: idealy we should have only one of Status or AudienceStatus\r\n  'AudienceStatus': function (value, entityType) {\r\n    switch (entityType) {\r\n    // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=290&lineStyle=plain&lineEnd=290&lineStartColumn=17&lineEndColumn=165\r\n    case 'AudienceAssociation':\r\n    case 'AdGroupAudienceAssociation':\r\n    // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=305&lineStyle=plain&lineEnd=305&lineStartColumn=17&lineEndColumn=169\r\n    case 'AdGroupAudienceCriterionWithBI':\r\n      return fromLegacy(value, 'AdGroupCriterionStatus');\r\n    // https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppsMT/pullrequest/753364?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FAggregatorService%2FDataAggregator%2FGetAudienceAssociationsWithBIData%2FAudienceAssociationsWithBiDataSortAndFilter.cs&_a=overview\r\n    case 'AudienceCriterionWithBI':\r\n      return fromLegacy(value, 'AdGroupCriterionStatus');\r\n    }\r\n  },\r\n\r\n  'TrackingStatus': function(value, entityType) {\r\n    switch (entityType) {\r\n    // RemessagingAudience is used for only rule-based remarketing lists when Custom Audience pilot is not enabled,\r\n    // while Audience is used for all types of Audiences when Custom Audience pilot is enabled.\r\n    case 'RemessagingAudience':\r\n    case 'Audience':\r\n    case 'Tag':\r\n      // UETTagTrackingStatus\r\n      switch(value) {\r\n      case 'Unverified':\r\n        return 'Enum.TagTrackingStatus\\'Unverified\\'';\r\n      case 'Active':\r\n        return 'Enum.TagTrackingStatus\\'Active\\'';\r\n      case 'Inactive':\r\n        return 'Enum.TagTrackingStatus\\'Inactive\\'';\r\n      }\r\n      break;\r\n\r\n    case 'Goal':\r\n      // ConversionGoalTrackingStatus\r\n      switch(value) {\r\n      case 'Unverified':\r\n        return 'Enum.GoalTrackingStatus\\'Unverified\\'';\r\n      case 'NoRecentConversion':\r\n        return 'Enum.GoalTrackingStatus\\'NoRecentConversion\\'';\r\n      case 'RecordingConversions':\r\n        return 'Enum.GoalTrackingStatus\\'RecordingConversions\\'';\r\n      case 'TagInactive':\r\n        return 'Enum.GoalTrackingStatus\\'TagInactive\\'';\r\n      }\r\n      break;\r\n    }\r\n  },\r\n\r\n  Condition: function(value, entityType) {\r\n    switch(entityType) {\r\n    case 'ProductOffer':\r\n      switch(value) {\r\n        case '0':\r\n          return 'New';\r\n        case '1':\r\n          return 'Refurbished';\r\n        case '2':\r\n          return 'Used';\r\n      }\r\n      break;\r\n    }\r\n  }\r\n}\r\n","\r\n\r\nexport { FilterEditor } from './src/index';\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport $ from 'jquery';\r\nimport { PredicateList } from '@bingads-webui/predicate-list';\r\nimport editorTemplate from './template/index.pug';\r\n\r\nexport class FilterEditor extends Backbone.View {\r\n  get events() {\r\n    return {\r\n      'click .apply': 'apply',\r\n      'click .cancel': 'cancel',\r\n    };\r\n  }\r\n\r\n  initialize(options) {\r\n    this.options = options;\r\n\r\n    const newName = ko.observable();\r\n    const isSaving = ko.observable();\r\n    newName.subscribe((val) => {\r\n      isSaving(!!val.trim());\r\n    });\r\n\r\n    if (this.options.selected && this.options.selected.name) {\r\n      newName(this.options.selected.name);\r\n    } else {\r\n      newName('');\r\n    }\r\n\r\n    this.ko_model = _.extend({}, this.options.ko_model, {\r\n      newName,\r\n      isSaved: isSaving,\r\n      hasNameError: ko.computed(() => isSaving() &&\r\n        (_.isUndefined(newName()) || _.isEmpty(newName().trim()))),\r\n    });\r\n  }\r\n\r\n  render() {\r\n    const $layout = $(editorTemplate({\r\n      headerTitle: this.options.i18n.getString('Filter'),\r\n      nameWaterMarkTitle: this.options.i18n.getString('Filter_FilterNameWaterMark'),\r\n      applyTitle: this.options.i18n.getString('Apply'),\r\n      cancelTitle: this.options.i18n.getString('Cancel'),\r\n      saveFilter: this.options.i18n.getString('Filters_SaveFilter'),\r\n    }));\r\n    const $listContainer = $layout.find('.list-placeholder');\r\n\r\n    if (!!this.options.predicateList && !!this.options.predicateList.Constructor) {\r\n      this.predicateList =\r\n        new this.options.predicateList.Constructor(_.extend(\r\n          this.options,\r\n          this.options.predicateList.options || {},\r\n          {\r\n            el: $listContainer[0],\r\n          }\r\n        ));\r\n    } else {\r\n      this.predicateList = new PredicateList(_.extend({}, this.options, {\r\n        el: $listContainer,\r\n      }));\r\n    }\r\n\r\n    const viewModel = _.extend({\r\n      canApply: ko.computed(() => this.predicateList.ko_model.canApply() &&\r\n        !this.ko_model.hasNameError(), this),\r\n    }, this.ko_model);\r\n\r\n    this.$el.html($layout);\r\n    ko.applyBindings(viewModel, this.el);\r\n    this.predicateList.render();\r\n    return this;\r\n  }\r\n\r\n  show() {\r\n    this.$el.show();\r\n    return this;\r\n  }\r\n\r\n  hide() {\r\n    this.$el.hide();\r\n    return this;\r\n  }\r\n\r\n  remove() {\r\n    this.predicateList.remove();\r\n    ko.cleanNode(this.el);\r\n    this.$el.empty();\r\n    this.undelegateEvents();\r\n    return this;\r\n  }\r\n\r\n  apply() {\r\n    const filterQuery = this.predicateList.getFilterQuery();\r\n    this.trigger('apply', filterQuery, this.ko_model.isSaved() ? this.ko_model.newName() && this.ko_model.newName().trim() : null);\r\n  }\r\n\r\n  clean() {\r\n    this.ko_model.newName('');\r\n    this.predicateList.clean();\r\n  }\r\n\r\n  cancel() {\r\n    this.clean();\r\n    this.hide();\r\n    this.trigger('cancel');\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (applyTitle, cancelTitle, headerTitle, nameWaterMarkTitle, saveFilter) {pug_html = pug_html + \"\\u003Cdiv class=\\\"filter-body filter-editor\\\"\\u003E\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\\u003Cheader class=\\\"filter_title\\\"\\u003E\" + (pug.escape(null == (pug_interp = headerTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fheader\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"list-placeholder\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-form form-inline\\\"\\u003E\\u003Cbutton class=\\\"filter_button apply btn btn-primary\\\" data-bind=\\\"css: { disabled: !canApply() }, attr: {'aria-disabled': !canApply(), disabled: !canApply()}\\\"\\u003E\" + (pug.escape(null == (pug_interp = applyTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"filter_button cancel btn btn-default\\\"\\u003E\" + (pug.escape(null == (pug_interp = cancelTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: isSaved, attr: {'aria-checked': isSaved ? 'true':'false'}\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = saveFilter) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003Cinput\" + (\" class=\\\"form-control name\\\"\"+\" maxlength=\\\"100\\\" type=\\\"text\\\"\"+pug.attr(\"placeholder\", nameWaterMarkTitle, true, true)+pug.attr(\"aria-label\", nameWaterMarkTitle, true, true)+\" data-bind=\\\"textInput: newName, css: { error: hasNameError }\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"applyTitle\" in locals_for_with?locals_for_with.applyTitle:typeof applyTitle!==\"undefined\"?applyTitle:undefined,\"cancelTitle\" in locals_for_with?locals_for_with.cancelTitle:typeof cancelTitle!==\"undefined\"?cancelTitle:undefined,\"headerTitle\" in locals_for_with?locals_for_with.headerTitle:typeof headerTitle!==\"undefined\"?headerTitle:undefined,\"nameWaterMarkTitle\" in locals_for_with?locals_for_with.nameWaterMarkTitle:typeof nameWaterMarkTitle!==\"undefined\"?nameWaterMarkTitle:undefined,\"saveFilter\" in locals_for_with?locals_for_with.saveFilter:typeof saveFilter!==\"undefined\"?saveFilter:undefined));;return pug_html;};\nmodule.exports = template;","import FilterEntity from './src/index';\r\nimport { legacyDeliveryStatus, getEnumValuefromLegacy, convertEnumValuetoLegacy, convertEnumValuetoLegacyString } from './src/converter/enum';\r\n\r\nexport { FilterEntity, legacyDeliveryStatus, getEnumValuefromLegacy, convertEnumValuetoLegacy,\r\n  convertEnumValuetoLegacyString };\r\n\r\nexport { convertToOData } from './src/converter/odata-4';\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterSchema } from '@bingads-webui/filter-schema';\r\nimport { normalizeFilter, calculateDepth } from './converter/normalize';\r\nimport { convertToLegacy, parseFromLegacy } from './converter/legacy';\r\nimport { convertToOData } from './converter/odata-4';\r\n\r\n/**\r\n * define Object OdataOptions\r\n * @typedef {Object} OdataOptions\r\n * @property {Object} [fieldMap={}] - fieldMap used for odata convertion.\r\n * @property {boolean|string[]} [ignoreCase=false] - ignoreCase for odata convertion.\r\n * @property {Object} custom - custom operator map for odata convertion.\r\n */\r\n\r\n/**\r\n * define Object Options\r\n * @typedef {Object} Options\r\n * @property {Object} entitySchema - EntitySchema instance, required for legacy convertion.\r\n * @property {OdataOptions} odata - option object used for odata convertion.\r\n */\r\n\r\nclass FilterEntity {\r\n  /**\r\n   * FilterEntity object to convert query to different format.\r\n   * @param {Object} query - the raw MongoDB query object, operator can only be $and or $or,\r\n   *                         e.g. { $and: [{ field1: { $lt: 2} }, { field2: 'val' }], field3: 3 }\r\n   * @param {Options} options - the options to be used when convert query.\r\n   * @param {string} name - Filter name\r\n   * @param {string} id - Filter id\r\n  */\r\n  constructor(\r\n    query,\r\n    {\r\n      entitySchema, odata: {\r\n        fieldMap = {},\r\n        ignoreCase = false,\r\n        custom,\r\n      } = {},\r\n    } = {}, name = null, id = null\r\n  ) {\r\n    this.query = normalizeFilter(query);\r\n    this.odataOptions = { fieldMap, ignoreCase, custom };\r\n    this.depth = calculateDepth(this.query);\r\n    this.schema = entitySchema ? new FilterSchema(entitySchema) : {};\r\n    this.name = name;\r\n    this.id = id;\r\n  }\r\n\r\n  /**\r\n   * Combine queries of two or more filter entities.\r\n   * @param {Object[]} entities - array of FilterEntity instances\r\n   * @param {string} operator - logic operator of how to connect queries,\r\n   *                            should only be '$and' or '$or'.\r\n   * @returns {Object} - combined query object.\r\n   */\r\n  static merge(entities, operator = '$and') {\r\n    if (!_.isArray(entities)) {\r\n      throw new Error('entities should be an array of FilterEntity instance.');\r\n    }\r\n    if (!entities.length) {\r\n      return {};\r\n    }\r\n    if (operator !== '$and' && operator !== '$or') {\r\n      throw new Error(\"operator should be '$and' or '$or'.\");\r\n    }\r\n    const anotherOpe = operator === '$and' ? '$or' : '$and';\r\n    let queries = [];\r\n    _.each(entities, (entity) => {\r\n      if (entity instanceof FilterEntity && !_.isEmpty(entity.query)) {\r\n        const { query } = entity;\r\n        if (query[operator]) {\r\n          queries.push(...query[operator]);\r\n        } else if (!_.isEmpty(query[anotherOpe]) && query[anotherOpe].length === 1) {\r\n          queries.push(...query[anotherOpe]);\r\n        } else {\r\n          queries.push(query);\r\n        }\r\n      }\r\n    });\r\n    queries = putil.uniqWith(queries, _.isEqual);\r\n    if (!queries.length) {\r\n      return {};\r\n    } else if (queries.length === 1) {\r\n      return queries[0];\r\n    }\r\n    return { [operator]: queries };\r\n  }\r\n\r\n  /**\r\n   * Convert query string to filter object.\r\n   * @param {string} query -\r\n   * filter string in url where we parse filter params from, contains filter params like\r\n   * '&filter[3].SelectedColumn=Id&filter[3].SelectedOperator=Equal&filter[3].Values=30'\r\n   * @param {Options} options - the options to be used in legacy conversion.\r\n   * @returns {Object} - FilterEntity instance.\r\n   */\r\n  static fromQueryString(query, options) {\r\n    let regex = /[\\\\?&]filter\\[(\\d)\\]\\.([^&#=]*)=([^&#]*)/g;\r\n    if (!query.match(regex)) {\r\n      regex = /[\\\\?&]filter%5B(\\d)%5D\\.([^&#=]*)=([^&#]*)/g;\r\n    }\r\n    const legacy = {};\r\n    let result = regex.exec(query);\r\n    while (result) {\r\n      const index = parseInt(result[1], 10);\r\n      const key = result[2];\r\n      const value = key === 'Values' ? [result[3]] : result[3];\r\n      if (key === 'Values' && legacy[index] && legacy[index].Values) {\r\n        legacy[index].Values = _.union(legacy[index].Values, value);\r\n      } else {\r\n        legacy[index] = _.defaults(legacy[index] || {}, _.object([key], [value]));\r\n      }\r\n      result = regex.exec(query);\r\n    }\r\n    return FilterEntity.fromLegacy(_.values(legacy), options);\r\n  }\r\n\r\n  /**\r\n * Convert filter object to odata formatted.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {Object} options - the options object used for odata convertion.\r\n * @param {Object} [options.fieldMap] - used for kendo convertion.\r\n * @param {boolean|string[]} [options.ignoreCase] - used for kendo convertion.\r\n * @param {Object} [options.custom] - custom operator map.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - odata formatted filter object.\r\n */\r\n  static toOdata(filters, { fieldMap = {}, ignoreCase, custom } = {\r\n    fieldMap: {},\r\n    ignoreCase: false,\r\n  }, filterSchema) {\r\n    const normalizedFilter = normalizeFilter(filters);\r\n    return convertToOData(normalizedFilter, { fieldMap, ignoreCase, custom }, filterSchema);\r\n  }\r\n\r\n  /**\r\n   * Convert legacy expression to filter object.\r\n   * @param {Object[]} expressions - array of legacy expressions\r\n   * @param {string} expressions[].SelectedColumn - column name\r\n   * @param {string} expressions[].SelectedOperator - operator string, e.g. 'Equal'\r\n   * @param {any[]} expressions.Values - array of values\r\n   * @param {Object} options - the options to be used when convert query.\r\n   * @param {Object} [options.entitySchema] - original entity schema object used to create\r\n   *                                          FilterSchema, it's required for legacy convertion.\r\n   * @param {OdataOptions} [options.odata] - option object used for odata format,\r\n   *                                   including fieldMap, ignoreCase and custom.\r\n   * @param {string} [name] - filter name\r\n   * @param {string} [id] - filter id\r\n   * @returns {Object} - FilterEntity object.\r\n   */\r\n  static fromLegacy(expressions, { entitySchema, odata } = {}, name, id) {\r\n    const filterSchema = entitySchema ? new FilterSchema(entitySchema) : undefined;\r\n    return new FilterEntity(\r\n      parseFromLegacy(expressions, filterSchema),\r\n      { filterSchema, odata }, name, id\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Convert filter object to odata formatted.\r\n   * @param {Object} options - the options object to be used for odata convertion.\r\n   * @param {OdataOptions} [options.odata={}] - the options for odata convertion.\r\n   * @returns {Object} - filter object in odata format.\r\n   */\r\n  odataV4({\r\n    odata: {\r\n      fieldMap = this.odataOptions.fieldMap,\r\n      ignoreCase = this.odataOptions.ignoreCase,\r\n      custom = this.odataOptions.custom,\r\n    } = {},\r\n  } = {}) {\r\n    // The filter editor added the odata options to the filter.options\r\n    // There should be general configuratoins,\r\n    // and they can be overriden by the odata specific options.\r\n    return convertToOData(this.query, { fieldMap, ignoreCase, custom }, this.schema);\r\n  }\r\n\r\n  /**\r\n   * Convert filter object to legacy format.\r\n   * @returns {Object} - filter object in legacy format.\r\n   */\r\n  legacy() {\r\n    return convertToLegacy(this.query, this.depth, this.schema);\r\n  }\r\n\r\n  /**\r\n   * Partially deep clone FilterEntity instance, query is deep cloned while others are reference.\r\n   * @returns {Object} - copy of FilterEntity instance.\r\n   */\r\n  clone() {\r\n    const newFilterEntity = new FilterEntity({});\r\n\r\n    newFilterEntity.odataOptions = this.odataOptions;\r\n    newFilterEntity.depth = this.depth;\r\n    newFilterEntity.query = putil.cloneDeep(this.query);\r\n    newFilterEntity.schema = this.schema;\r\n    newFilterEntity.name = this.name;\r\n    newFilterEntity.id = this.id;\r\n    return newFilterEntity;\r\n  }\r\n\r\n  updateQuery(query) {\r\n    this.query = normalizeFilter(query);\r\n    this.depth = calculateDepth(this.query);\r\n  }\r\n}\r\n\r\nexport default FilterEntity;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__75__;","import _ from 'underscore';\r\nimport { startsWith, endsWith } from 'underscore.string';\r\n\r\nfunction flattenAndOperators(conditions) {\r\n  const result = [];\r\n  _.each(conditions, (con) => {\r\n    const condition = con;\r\n    if (condition.$and) {\r\n      result.push(...(condition.$and || []));\r\n      delete condition.$and;\r\n    }\r\n    if (!_.isEmpty(condition)) {\r\n      result.push(condition);\r\n    }\r\n  });\r\n  return result;\r\n}\r\n\r\nfunction isFieldName(expressionKey) {\r\n  return expressionKey && expressionKey[0] !== '$';\r\n}\r\n\r\nfunction toExplicitCondition(field, originalOperator, originalValue) {\r\n  let operator = originalOperator;\r\n  let value = originalValue;\r\n\r\n  if (operator === '$regex') {\r\n    if (startsWith(value, '.*') && endsWith(value, '.*')) {\r\n      operator = '$contains';\r\n      value = value.substr(2, value.length - 4);\r\n    } else if (startsWith(value, '.*')) {\r\n      operator = '$endswith';\r\n      value = value.substr(2, value.length - 2);\r\n    } else if (endsWith(value, '.*')) {\r\n      operator = '$startswith';\r\n      value = value.substr(0, value.length - 2);\r\n    }\r\n  }\r\n\r\n  return { [field]: { [operator]: value } };\r\n}\r\n\r\nfunction getFieldExpressions(field, expression) {\r\n  if (_.isObject(expression)) {\r\n    return _.map(expression, (value, operator) =>\r\n      toExplicitCondition(field, operator, value));\r\n  }\r\n  return [toExplicitCondition(field, '$eq', expression)];\r\n}\r\n\r\nfunction bfsNextLevel(filters) {\r\n  const nextLevel = [];\r\n  _.each(filters, ({ $and = [], $or = [] }) => nextLevel.push(...$and, ...$or));\r\n  return nextLevel;\r\n}\r\n\r\n/**\r\n * Normalize raw filter expression.\r\n * @param {Object} filter - raw filter expression.\r\n * @returns {Object} - normalized filter object.\r\n */\r\nexport function normalizeFilter(filter) {\r\n  let conditions = [];\r\n  _.each(filter, (expression, expressionKey) => {\r\n    if (isFieldName(expressionKey)) {\r\n      conditions.push(...getFieldExpressions(expressionKey, expression));\r\n    } else if (_.isArray(expression) && expression.length) {\r\n      if (expressionKey === '$and') {\r\n        conditions.push(..._.map(expression, normalizeFilter));\r\n      } else if (expressionKey === '$or') {\r\n        if (expression.length === 1) {\r\n          conditions.push(normalizeFilter(expression[0]));\r\n        } else {\r\n          conditions.push({ $or: _.map(expression, normalizeFilter) });\r\n        }\r\n      }\r\n    }\r\n  });\r\n  conditions = flattenAndOperators(conditions);\r\n  if (!conditions.length) {\r\n    return {};\r\n  }\r\n  if (conditions.length === 1) {\r\n    return conditions[0];\r\n  }\r\n  return { $and: conditions };\r\n}\r\n\r\n/**\r\n * Calculate normalized filter's depth.\r\n * @param {Object} filter - normalized filter object.\r\n * @returns {number} - filter object's depth.\r\n */\r\nexport function calculateDepth(filter) {\r\n  if (_.isEmpty(filter)) {\r\n    return 0;\r\n  }\r\n  let depth = 0;\r\n  let filters = [filter];\r\n  while (!_.isEmpty(filters)) {\r\n    filters = bfsNextLevel(filters);\r\n    depth += 1;\r\n  }\r\n  return depth;\r\n}\r\n","import _ from 'underscore';\r\nimport { getEnumValuefromLegacy } from './enum';\r\n\r\nconst operatorMap = {\r\n  $contains: 'Contains',\r\n  $doesnotcontain: 'DoesNotContain',\r\n  $startswith: 'BeginsWith',\r\n  $endswith: 'EndsWith',\r\n  $eq: 'Equal',\r\n  $neq: 'NotEqual',\r\n  $gt: 'Greater',\r\n  $gte: 'GreaterOrEqual',\r\n  $lt: 'Less',\r\n  $lte: 'LessOrEqual',\r\n  $in: 'EnumSelection',\r\n  $containsall: 'ContainsAll',\r\n  $containsany: 'ContainsAny',\r\n  $containsnone: 'ContainsNone',\r\n};\r\nconst reverseOperatorMap = _.invert(operatorMap);\r\n\r\nfunction toLegacyColumnName(columnName, schema) {\r\n  let column = columnName;\r\n  if (schema) {\r\n    column = schema.toAlias(columnName, 'legacy');\r\n  }\r\n  return column.split('/').pop();\r\n}\r\n\r\nfunction fromLegacyColumnName(columnName, schema) {\r\n  if (!schema) {\r\n    return columnName;\r\n  }\r\n  let column = schema.fromAlias(columnName, 'legacy');\r\n  if (!schema.getFilterProperty(column)) {\r\n    column = _.find(schema.getPropertyKeys(), key => key.split('/').pop() === column);\r\n  }\r\n  return column;\r\n}\r\n\r\nfunction toMongoPredicate(legacyExpression, schema) {\r\n  const column = fromLegacyColumnName(legacyExpression.SelectedColumn, schema);\r\n  const legacyOperator = legacyExpression.SelectedOperator;\r\n  const mongoOperator = reverseOperatorMap[legacyOperator];\r\n  let value = mongoOperator === '$in' || mongoOperator === '$containsall' || mongoOperator === '$containsany' || mongoOperator === '$containsnone' ? legacyExpression.Values : legacyExpression.Values[0];\r\n  if (schema) {\r\n    const prop = schema.getFilterProperty(column);\r\n    if (prop && prop.type) {\r\n      switch (prop.type) {\r\n        case 'datetime':\r\n          value = new Date(value);\r\n          break;\r\n        case 'number':\r\n          value = parseFloat(value);\r\n          break;\r\n        case 'integer':\r\n          value = parseInt(value, 10);\r\n          break;\r\n        case 'boolean':\r\n          value = value === 1;\r\n          break;\r\n        default:\r\n          break;\r\n      }\r\n    }\r\n    if (prop && (prop.enum || prop.groupedItems)) {\r\n      value = _.map(\r\n        legacyExpression.Values,\r\n        val => getEnumValuefromLegacy(val, prop.enumType || column)\r\n      );\r\n    }\r\n  }\r\n  return { [column]: { [mongoOperator]: value } };\r\n}\r\n\r\nfunction toLegacyExpression(field, expression, schema) {\r\n  const mongoOperator = _.keys(expression)[0];\r\n  const mongoValue = _.values(expression)[0];\r\n  return {\r\n    SelectedColumn: toLegacyColumnName(field, schema),\r\n    SelectedOperator: operatorMap[mongoOperator],\r\n    Values: _.isArray(mongoValue) ? mongoValue : [mongoValue],\r\n  };\r\n}\r\n\r\n/**\r\n * Convert normalized filter object to legacy expression.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {number} depth - filter's depth.\r\n * @param {Object} schema - FilterSchema instance.\r\n * @returns {Object[]} - legacy expressions.\r\n */\r\nexport function convertToLegacy(filters, depth, schema) {\r\n  if (!depth || !filters) {\r\n    throw new Error('Depth or filter object is not defined.');\r\n  }\r\n  if (depth > 2) {\r\n    throw new Error('Filter of depth > 2 can not be converted into legacy filter expression array.');\r\n  }\r\n  if (_.isEmpty(filters)) {\r\n    return [];\r\n  }\r\n\r\n  const mongoExpressions = depth === 1 ? [filters] : filters.$and || filters.$or;\r\n  return _.map(\r\n    mongoExpressions,\r\n    expr => toLegacyExpression(_.keys(expr)[0], _.values(expr)[0], schema)\r\n  );\r\n}\r\n\r\n/**\r\n * Convert legacy expression to normalized filter query object.\r\n * @param {Object[]} legacyExpressions - the legacy expression.\r\n * @param {Object} schema - FilterSchema instance.\r\n * @returns {Object} - the normalized filter object.\r\n */\r\nexport function parseFromLegacy(legacyExpressions, schema) {\r\n  if (!_.isArray(legacyExpressions)) {\r\n    throw new Error('legacyExpressions must be an array of legacy expressions.');\r\n  }\r\n  if (_.isEmpty(legacyExpressions)) {\r\n    return {};\r\n  }\r\n  if (legacyExpressions.length === 1) {\r\n    return toMongoPredicate(legacyExpressions[0], schema);\r\n  }\r\n  return { $and: _.map(legacyExpressions, expr => toMongoPredicate(expr, schema)) };\r\n}\r\n","import _ from 'underscore';\r\nimport { startsWith } from 'underscore.string';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport const legacyDeliveryStatus = {\r\n  CreditCardExpired: 10,\r\n  IOExceeded: 20,\r\n  PaymentInformationMissing: 30,\r\n  InvalidFinancialStatusOther: 40,\r\n  MigrationPaused: 45,\r\n  CampaignDeleted: 48,\r\n  CampaignSuspended: 49,\r\n  CampaignBudgetPaused: 50,\r\n  DomainLanguageNotSupported: 51,\r\n  ShoppingCampaignStoreNotFound: 55,\r\n  ShoppingCampaignNoOffersPresent: 56,\r\n  AdGroupExpired: 60,\r\n  AdGroupDraft: 62,\r\n  AdGroupDeleted: 63,\r\n  CamAssetRejected: 64,\r\n  CamAssetDeleted: 66,\r\n  AdGroupTargetingTooNarrow: 67,\r\n  EditorialRejected: 70,\r\n  EditorialAppealRejected: 71,\r\n  EditorialApprovedLimitedAppealRejected: 72,\r\n  EditorialUnderAppeal: 75,\r\n  UrlInvalid: 76,\r\n  ApplicationNotFound: 77,\r\n  ApplicationDestinationUrlMismatch: 78,\r\n  PendingMetadataSync: 79,\r\n  EditorialPending: 80,\r\n  AssociationDeleted: 85,\r\n  CampaignUserPaused: 90,\r\n  AdGroupPrivacyPending: 91,\r\n  AdGroupUserPaused: 100,\r\n  NoEligibleAds: 105,\r\n  NoEligibleKeywords: 106,\r\n  NoEligibleAdGroups: 107,\r\n  AdUserPaused: 110,\r\n  KeywordMatchTypeAdGroupMediumCombinationInvalid: 115,\r\n  KeywordUserPaused: 120,\r\n  NegativeKeywordConflicts: 130,\r\n  PartialNegativeKeywordConflicts: 135,\r\n  AutoBiddingLimitedByNotEnoughRevenue: 185,\r\n  AutoBiddingLimitedByNotEnoughConversions: 190,\r\n  AutoBiddingLearning: 195,\r\n  EditorialApprovedLimited: 200,\r\n  LowSupply: 300,\r\n  LowQuality: 400,\r\n  BidBelowFirstPageBid: 500,\r\n  Incomplete: 1000,\r\n  BudgetSuggestions: 1001,\r\n  InlineOpportunity: 1060,\r\n  GeoCodingIncomplete: 1101,\r\n  ProductTargetUserPaused: 1102,\r\n  AdExtensionNotPresent: 1103,\r\n  AdExtensionDeleted: 1104,\r\n  AdExtensionAssociationDeleted: 1105,\r\n  StoreIdNotAssociated: 1106,\r\n  AdGroupAudienceAssociationPaused: 1107,\r\n  AdGroupAudienceAssociationExcluded: 1108,\r\n  AdNotPresent: 1200,\r\n  AdNotActive: 1201,\r\n  ApplicationDestinationUrlValidationIncomplete: 1252,\r\n  AdGroupCriterionExcluded: 1300,\r\n  AdGroupCriterionPaused: 1301,\r\n  AutoBiddingLimitedInventoryLimit: 1412,\r\n  AutoBiddingLimitedMaxCPCRestriction: 1413,\r\n  AutoBiddingLimitedBudgetRestriction: 1414,\r\n  AutoBiddingLimitedUnAttainableTarget: 1415,\r\n  AutoBiddingPortfolioBidStrategyTrainingStatus: 1421,\r\n  New: 2000,\r\n  Eligible: 2147483647,\r\n};\r\n\r\nconst enums = {\r\n  AdGroupCriterionStatus: {\r\n    Active: 161,\r\n    Paused: 162,\r\n    Deleted: 163,\r\n    Excluded: 165,\r\n  },\r\n  AdGroupCallTrackingStatus: {\r\n    NotApplicable: 0,\r\n    Eligible: 1,\r\n    NotEligible: 2,\r\n    ProvisioningPending: 3,\r\n    Provisioned: 4,\r\n  },\r\n  AdGroupStatus: {\r\n    CampaignUserPaused: 124,\r\n    CampaignBudgetPaused: 126,\r\n    CampaignBudgetUserPaused: 127,\r\n    Draft: 140,\r\n    Active: 141,\r\n    Deleted: 143,\r\n    Paused: 144,\r\n    Expired: 150,\r\n  },\r\n  AdStatus: {\r\n    Inactive: 0,\r\n    Active: 1,\r\n    Paused: 2,\r\n    Deleted: 3,\r\n  },\r\n  AdType: {\r\n    Text: 1,\r\n    Mobile: 2,\r\n    Product: 128,\r\n    AppInstall: 256,\r\n    DynamicSearch: 512,\r\n    ExpandedText: 1024,\r\n    Hotel: 2048,\r\n    Responsive: 4096,\r\n    ResponsiveSearch: 8192,\r\n  },\r\n  AdStrength: {\r\n    Unrated: 0,\r\n    Poor: 1,\r\n    Average: 2,\r\n    Good: 3,\r\n    Excellent: 4,\r\n  },\r\n  BidTargetType: {\r\n    Keyword: 0,\r\n    BehaviorSegment: 11,\r\n    Site: 12,\r\n  },\r\n  BidType: {\r\n    BidOnly: 0,\r\n    TargetAndBid: 1,\r\n  },\r\n  CallTrackingStatus: {\r\n    NotApplicable: 0,\r\n    Eligible: 1,\r\n    NotEligible: 2,\r\n    ProvisioningPending: 3,\r\n    Provisioned: 4,\r\n  },\r\n  CampaignStatus: {\r\n    Suspended: 8,\r\n    Active: 121,\r\n    Deleted: 123,\r\n    UserPaused: 124,\r\n    BudgetPaused: 126,\r\n    BudgetUserPaused: 127,\r\n  },\r\n  CampaignType: {\r\n    Default: 1,\r\n    Shopping: 2,\r\n    DynamicSearchAds: 4,\r\n    Audience: 8,\r\n    Smart: 16,\r\n    Hotel: 32,\r\n  },\r\n  DeliveryStatus: legacyDeliveryStatus,\r\n  DevicePreference: {\r\n    All: 0,\r\n    Mobile: 2,\r\n  },\r\n  BiddingStrategyType: {\r\n    InheritFromParent: 0,\r\n    ManualCpc: 1,\r\n    MaxClicks: 2,\r\n    MaxConversions: 3,\r\n    TargetCpa: 4,\r\n    EnhancedCpc: 5,\r\n    TargetRoas: 6,\r\n    MaxRoas: 7,\r\n    MaxConversionValue: 8,\r\n    TargetImpressionShare: 9,\r\n    ManualCpv: 11,\r\n    ManualCpm: 12,\r\n    PercentCpc: 13,\r\n    Commission: 14,\r\n    CostPerSale: 15,\r\n  },\r\n  Language: {\r\n    None: 0,\r\n    Arabic: 7,\r\n    TraditionalChinese: 24,\r\n    Danish: 28,\r\n    Dutch: 29,\r\n    English: 30,\r\n    Finnish: 35,\r\n    French: 36,\r\n    German: 40,\r\n    Italian: 55,\r\n    Norwegian: 82,\r\n    Portuguese: 88,\r\n    Spanish: 109,\r\n    Swedish: 112,\r\n    SimplifiedChinese: 137,\r\n    Greek: 41,\r\n    Polish: 87,\r\n    Bulgarian: 19,\r\n    Czech: 27,\r\n    Estonian: 32,\r\n    Croatian: 26,\r\n    Hungarian: 48,\r\n    Lithuanian: 70,\r\n    Latvian: 68,\r\n    Maltese: 75,\r\n    Romanian: 92,\r\n    Slovak: 106,\r\n    Slovenian: 107,\r\n    Turkish: 70,\r\n    Serbian: 68,\r\n    Bosnian: 75,\r\n    Albanian: 92,\r\n    Macedonian: 106,\r\n    Icelandic: 107,\r\n    Japanese: 56,\r\n    All: 1000,\r\n  },\r\n  Medium: {\r\n    Search: 1,\r\n    Content: 2,\r\n    Native: 10,\r\n    Audience: 11,\r\n    SearchAndContent: 3,\r\n  },\r\n  OrderItemStatus: {\r\n    Active: 161,\r\n    Paused: 162,\r\n    Deleted: 163,\r\n  },\r\n  MatchType: {\r\n    Exact: 1,\r\n    Phrase: 2,\r\n    Broad: 3,\r\n    Content: 5,\r\n  },\r\n  FluctuationType: {\r\n    Click: 'Click',\r\n    Impression: 'Impression',\r\n    Spend: 'Spend',\r\n  },\r\n};\r\n\r\nconst stringEnums = {\r\n  AudienceType: {\r\n    Remessaging: 'Remessaging',\r\n    Custom: 'Custom',\r\n    InMarket: 'InMarket',\r\n    Product: 'Product',\r\n    RemarketingSimilar: 'RemarketingSimilar',\r\n    CustomerList: 'CustomerList',\r\n    CombinedList: 'CombinedList',\r\n  },\r\n  Status: {\r\n    Active: 'Active',\r\n    Excluded: 'Excluded',\r\n  },\r\n  CriterionAgeCriterionAgeRange: {\r\n    EighteenToTwentyFive: 'EighteenToTwentyFive',\r\n    TwentyFiveToThirtyFive: 'TwentyFiveToThirtyFive',\r\n    ThirtyFiveToFifty: 'ThirtyFiveToFifty',\r\n    FiftyToSixtyFive: 'FiftyToSixtyFive',\r\n    SixtyFiveAndAbove: 'SixtyFiveAndAbove',\r\n    Unknown: 'Unknown',\r\n  },\r\n  CriterionGenderCriterionGenderType: {\r\n    Male: 'Male',\r\n    Female: 'Female',\r\n    Unknown: 'Unknown',\r\n  },\r\n  AudienceCriterionLevel: {\r\n    AdGroup: 'AdGroup',\r\n    Campaign: 'Campaign',\r\n  },\r\n  AccountType: {\r\n    AdAccount: 'AdAccount',\r\n    ManagerAccount: 'ManagerAccount',\r\n    Unknown: 'Unknown',\r\n  },\r\n  FluctuationType: {\r\n    Click: 'Click',\r\n    Impression: 'Impression',\r\n    Spend: 'Spend',\r\n  },\r\n  AdGroupType: {\r\n    SearchStandard: 'Enum.AdGroupType\\'SearchStandard\\'',\r\n    SearchDynamic: 'Enum.AdGroupType\\'SearchDynamic\\'',\r\n  },\r\n  CashbackScope: {\r\n    None: \"Enum.CashbackScope'None'\",\r\n    Store: \"Enum.CashbackScope'Store'\",\r\n    Product: \"Enum.CashbackScope'Product'\",\r\n  },\r\n  CouponsEnabled: {\r\n    None: \"Enum.CouponsEnabled'None'\",\r\n    Enabled: \"Enum.CouponsEnabled'Enabled'\",\r\n    Disabled: \"Enum.CouponsEnabled'Disabled'\",\r\n  },\r\n};\r\n\r\n/**\r\n * Converting enum value from legacy\r\n * will look by legacyValue from the enum[type], found related key, and calculate enum value\r\n *\r\n * @param {String} legacyValue - legacy value\r\n * @param {String} type - legacy enum type\r\n * @returns {String} enum value, null if no related value found\r\n */\r\nexport function getEnumValuefromLegacy(legacyValue, type) {\r\n  if (startsWith(legacyValue, 'Enum.')) {\r\n    return legacyValue;\r\n  }\r\n  const value = _.findKey(enums[type], val => String(val) === legacyValue);\r\n\r\n  return value ? `Enum.${type}'${value}'` : null;\r\n}\r\n\r\n/**\r\n * Converting enum value to legacy value\r\n * will return the mapped value from enum mapping\r\n *\r\n * @param {String} fullValue - enum value, such as Enum.Language'English'\r\n * @returns {String} it's legacy value\r\n */\r\nexport function convertEnumValuetoLegacy(fullValue) {\r\n  if (!fullValue) {\r\n    return fullValue;\r\n  }\r\n  const [, type, value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n  const legacyValue = get(enums, [type, value]);\r\n\r\n  return _.isNumber(legacyValue) ? String(legacyValue) : get(stringEnums, [type, value]);\r\n}\r\n\r\n\r\n/**\r\n * Converting enum value to legacy value\r\n * will return the mapped value from stringEnums mapping\r\n *\r\n * @param {String} fullValue - enum value, such as Enum.AudienceType'Remessaging'\r\n * @returns {String} it's legacy value\r\n */\r\nexport function convertEnumValuetoLegacyString(fullValue) {\r\n  if (!fullValue) { return fullValue; }\r\n  const [, , value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n\r\n  return value;\r\n}\r\n","import _ from 'underscore';\r\nimport kendo from '@bingads-webui/kendo/kendo.data.odata';\r\nimport { convertToKendo } from './kendo';\r\n\r\nconst priorities = {\r\n  and: 1,\r\n  or: 2,\r\n};\r\n\r\n// TODO - Task 675798: add odata converter unit test\r\nfunction kendoToOData(filter) {\r\n  const params = kendo.data.transports.odata.parameterMap({ filter }, 'read');\r\n\r\n  // delete filter if its empty\r\n  if (!(_.isString(params.$filter) && params.$filter.length)) {\r\n    delete params.$filter;\r\n  }\r\n\r\n  // support [odata v4]\r\n  if (params.$filter && _.isString(params.$filter) && params.$filter.length) {\r\n    // replace substringof by contains\r\n    params.$filter = params.$filter.replace(/substringof\\(('.*?'),(tolower\\([\\w/]+?\\))\\)/g, 'contains($2, $1)');\r\n    // replace substringof by contains\r\n    params.$filter = params.$filter.replace(/substringof\\(('.*?'),([\\w/]+?)\\)/g, 'contains($2, $1)');\r\n    // replace enum eq formating (with update to handle multiple flags)\r\n    params.$filter = params.$filter.replace(/'Enum\\.(\\w+)''((\\w+,?)+)'''/g, 'Enum.$1\\'$2\\'');\r\n    // replace datetime'somedate' by somedate\r\n    params.$filter = params.$filter.replace(/datetime'(.*?)'/g, '$1+00:00');\r\n    return params.$filter;\r\n  }\r\n  return '';\r\n}\r\n\r\nfunction customToOData(priorityParent, filter, customOperator) {\r\n  const {\r\n    logic,\r\n    field,\r\n    value,\r\n    operator,\r\n  } = filter;\r\n  const priority = priorities[logic];\r\n  if (priority && _.isArray(filter.filters)) {\r\n    const filterString = _.map(filter.filters, flt => customToOData(priority, flt, customOperator))\r\n      .join(' '.concat(logic, ' '));\r\n    if (_.isNumber(priorityParent) && priority > priorityParent) {\r\n      return '('.concat(filterString, ')');\r\n    }\r\n    return filterString;\r\n  }\r\n  if (_.isFunction(customOperator[field])) {\r\n    return customOperator[field](operator, value);\r\n  }\r\n  if (_.isObject(customOperator[field]) && _.isFunction(customOperator[field][operator])) {\r\n    return customOperator[field][operator](value);\r\n  }\r\n  return kendoToOData({ filters: [filter] });\r\n}\r\n\r\n/**\r\n * Convert filter object to odata formatted.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {Object} options - the options object used for odata convertion.\r\n * @param {Object} [options.fieldMap] - used for kendo convertion.\r\n * @param {boolean|string[]} [options.ignoreCase] - used for kendo convertion.\r\n * @param {Object} [options.custom] - custom operator map.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - odata formatted filter object.\r\n */\r\nexport function convertToOData(filters, { fieldMap = {}, ignoreCase, custom } = {\r\n  fieldMap: {},\r\n  ignoreCase: false,\r\n}, filterSchema) {\r\n  const kendoFilter = convertToKendo(filters, { fieldMap, ignoreCase }, filterSchema);\r\n  if (!kendoFilter) {\r\n    return '';\r\n  }\r\n  return custom ?\r\n    customToOData(null, _.defaults({ logic: 'and' }, kendoFilter), custom) :\r\n    kendoToOData(kendoFilter);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__80__;","import _ from 'underscore';\r\n\r\nconst simpleOperatorMap = {\r\n  $eq: 'eq',\r\n  $ne: 'neq',\r\n  $neq: 'neq',\r\n  $gt: 'gt',\r\n  $ge: 'gte',\r\n  $gte: 'gte',\r\n  $lt: 'lt',\r\n  $le: 'lte',\r\n  $lte: 'lte',\r\n  $contains: 'contains',\r\n  $doesnotcontain: 'doesnotcontain',\r\n  $substringof: 'contains',\r\n  $endswith: 'endswith',\r\n  $startswith: 'startswith',\r\n  $containsall: 'containsall',\r\n  $containsany: 'containsany',\r\n  $containsnone: 'containsnone',\r\n  $isof: 'isof',\r\n};\r\nconst logicOperatorMap = {\r\n  $and: 'and',\r\n  $or: 'or',\r\n};\r\n\r\nfunction simpleExpression(ignoreCase, field, operator, value) {\r\n  const toLower = _.isString(value) &&\r\n                  (ignoreCase === true || (_.isArray(ignoreCase) && _.contains(ignoreCase, field)));\r\n  return {\r\n    field: toLower ? `tolower(${field})` : field,\r\n    value: toLower ? value.toLowerCase() : value,\r\n    operator: simpleOperatorMap[operator],\r\n  };\r\n}\r\n\r\nfunction convertEnumSelectionLeaf(ignoreCase, field, value, filterSchema) {\r\n  return _.isArray(value) && value.length ?\r\n    {\r\n      logic: 'or',\r\n      filters: _.map(value, val => simpleExpression(ignoreCase, field, '$eq', val, filterSchema)),\r\n    } :\r\n    null;\r\n}\r\n\r\nfunction convertLeaf({ fieldMap, ignoreCase }, fieldVal, expression, filterSchema) {\r\n  const operator = _.keys(expression)[0];\r\n  const value = _.values(expression)[0];\r\n  const field = fieldMap[fieldVal] ? fieldMap[fieldVal] : fieldVal;\r\n\r\n  if (operator === '$in') {\r\n    return convertEnumSelectionLeaf(ignoreCase, field, value, filterSchema);\r\n  }\r\n\r\n  if (simpleOperatorMap[operator]) {\r\n    return simpleExpression(ignoreCase, field, operator, value, filterSchema);\r\n  }\r\n  return null;\r\n}\r\n\r\nfunction convertNode(option, expressionKey, expression, filterSchema) {\r\n  if (!_.isArray(expression)) {\r\n    return convertLeaf(option, expressionKey, expression, filterSchema);\r\n  }\r\n  const logic = logicOperatorMap[expressionKey];\r\n  return logic ?\r\n    {\r\n      logic,\r\n      filters: _.chain(expression)\r\n        .map(value => convertNode(option, _.keys(value)[0], _.values(value)[0], filterSchema))\r\n        .filter(Boolean)\r\n        .value(),\r\n    } :\r\n    null;\r\n}\r\n\r\n/**\r\n * Convert normalized filter object to kendo format with given options.\r\n * @param {Object} filters - normalized filter object to convert.\r\n * @param {Object} options - given options.\r\n * @param {Object} [options.fieldMap] - set of field aliases, if property names on clientside\r\n *                                      and server side are different. e.g. {'id' : 'AdGroupId'}\r\n * @param {boolean|string[]} [options.ignoreCase] - ignore case or not for field string.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - kendo formatted filter object.\r\n */\r\nexport function convertToKendo(filters, { fieldMap, ignoreCase } = {}, filterSchema) {\r\n  const kendoFilters = _.chain(filters)\r\n    .map((value, key) => convertNode({ fieldMap, ignoreCase }, key, value, filterSchema))\r\n    .filter(Boolean)\r\n    .value();\r\n\r\n  return !kendoFilters || _.isEmpty(kendoFilters) ? null : { filters: kendoFilters };\r\n}\r\n","import FilterI18n from './src/index';\r\n\r\nexport { FilterI18n };\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { SchemaI18n } from './schema-i18n';\r\n\r\nconst operatorKeyMap = {\r\n  eq: 'Filter_Operator_EQ',\r\n  neq: 'Filter_Operator_NEQ',\r\n  gt: 'Filter_Operator_GT',\r\n  gte: 'Filter_Operator_GTE',\r\n  lt: 'Filter_Operator_LT',\r\n  lte: 'Filter_Operator_LTE',\r\n  in: 'Filter_Operator_Contains',\r\n  contains: 'Filter_Operator_Contains',\r\n  doesnotcontain: 'Filter_Operator_Not_Contains',\r\n  startswith: 'Filter_Operator_StartsWith',\r\n  endswith: 'Filter_Operator_EndsWith',\r\n  containsall: 'FilterOperator_ContainsAll',\r\n  containsany: 'FilterOperator_ContainsAny',\r\n  containsnone: 'FilterOperator_ContainsNone',\r\n};\r\n\r\nconst operatorStringMap = {\r\n  eq: _TL_('equals'),\r\n  neq: _TL_('does not equal'),\r\n  gt: _TL_('greater than'),\r\n  gte: _TL_('greater than or equals'),\r\n  lt: _TL_('less than'),\r\n  lte: _TL_('less than or equals'),\r\n  in: _TL_('contains'),\r\n  contains: _TL_('contains'),\r\n  doesnotcontain: _TL_('does not contain'),\r\n  startswith: _TL_('begins with'),\r\n  endswith: _TL_('ends with'),\r\n  containsall: _TL_('contains all'),\r\n  containsany: _TL_('contains any'),\r\n  containsnone: _TL_('contains none'),\r\n};\r\n\r\n/**\r\n * The FilterI18n class to do localization for filter\r\n * It's used to localize date, operator, other values and generate humanized HTML for filter query.\r\n * @param {Object} schema - FilterSchema only, refer @bingads-webui/filter-schema for more detail.\r\n * @param {Object} i18n - i18n object, provide getString and formatDecimal functions.\r\n * @param {Object} [schemaI18n] - optional i18n object to localize property key and enum value in\r\n * schema.\r\n * @param {Function} schemaI18n.property - get localized property name string.\r\n * @param {Function} schemaI18n.value - get localized enum value string.\r\n * @param {string} skeleton - localization date format string\r\n * @param {boolean} vnext - indicates whether it's the new version of i18n\r\n */\r\nexport default class FilterI18n {\r\n  constructor(schema, i18n, schemaI18n, skeleton = 'yMd', vnext) {\r\n    this.schema = schema;\r\n    this.i18n = i18n;\r\n    this.schemaI18n = schemaI18n || new SchemaI18n(schema);\r\n    this.skeleton = skeleton;\r\n    this.vnext = vnext;\r\n  }\r\n\r\n  /**\r\n   * Localize operator string.\r\n   * @param {string} operator - original operator string\r\n   * @param {object} operatorDisplayNameMap - customized operator convert map\r\n   * @return {string} - localized operator string.\r\n   */\r\n  convertOperator(operator, operatorDisplayNameMap) {\r\n    return operatorDisplayNameMap && operatorDisplayNameMap[operator] ?\r\n      operatorDisplayNameMap[operator] :\r\n      this.i18n.getString(this.vnext ? operatorStringMap[operator] : operatorKeyMap[operator]);\r\n  }\r\n\r\n  /**\r\n   * Localize property's value\r\n   * @param {string} value - value of property you want to localize\r\n   * @param {string} propertyKey - the key of property\r\n   * @return {string} - localized value of given property key,\r\n   *                    return value itself if property doesn't exist\r\n   */\r\n  convertValue(value, propertyKey) {\r\n    const property = this.schema.getFilterProperty(propertyKey);\r\n    if (property && property.skipLocalization) {\r\n      return value.toString();\r\n    }\r\n    if (property && property.localize) {\r\n      return property.localize(value);\r\n    }\r\n\r\n    if (property && property.type === 'datetime' && value instanceof Date) {\r\n      if (property.hasTime) {\r\n        return this.i18n.formatDate(value, {\r\n          datetime: 'short',\r\n        });\r\n      }\r\n      const utcDate = putil.convertMachineDateToUTCDate(value, this.i18n);\r\n      return this.i18n.formatDate(new Date(utcDate.toISOString()), {\r\n        timeZone: 'UTC',\r\n        skeleton: this.skeleton,\r\n      });\r\n    }\r\n\r\n    if (property && property.type === 'number' && property.isPercentValue) {\r\n      return this.i18n.formatPercent(value / 100, {\r\n        maximumFractionDigits: 2,\r\n        minimumFractionDigits: 2,\r\n      });\r\n    }\r\n\r\n    if (property && property.type === 'number') {\r\n      return this.i18n.formatDecimal(value, {\r\n        maximumFractionDigits: 2,\r\n        minimumFractionDigits: 2,\r\n      });\r\n    }\r\n\r\n    if (property && property.type === 'integer' && property.isPercentValue) {\r\n      return this.i18n.formatPercent(value / 100, {\r\n        maximumFractionDigits: 0,\r\n        minimumFractionDigits: 0,\r\n      });\r\n    }\r\n\r\n    if (property && property.type === 'integer') {\r\n      return this.i18n.formatDecimal(value, {\r\n        maximumFractionDigits: 0,\r\n        minimumFractionDigits: 0,\r\n      });\r\n    }\r\n\r\n    if (property && property.localized &&\r\n       _.isObject(property.localized) && property.localized[value]) {\r\n      return property.localized[value];\r\n    }\r\n    return this.schemaI18n.value(this.schema.getEntityName(), propertyKey, value);\r\n  }\r\n\r\n  /**\r\n   * Localize filterable property's name.\r\n   * @param {string} key - property's key.\r\n   * @return {string} - localized property name, return the key if localized name doesn't exist.\r\n   */\r\n  convertName(key) {\r\n    const property = this.schema.getFilterProperty(key);\r\n\r\n    if (property && property.isDeletedProperty) {\r\n      return _TL_('(deleted)');\r\n    }\r\n\r\n    return property\r\n      ? this.schemaI18n.property(this.schema.getEntityName(), key)\r\n      : key;\r\n  }\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport class SchemaI18n {\r\n  constructor(schema) {\r\n    this.schema = schema;\r\n  }\r\n\r\n  value(schemaName, key, value) {\r\n    const entityProperty = _.chain(this.schema.filterProps())\r\n      .result(key)\r\n      .value();\r\n    const localizedVal = _.chain(entityProperty)\r\n      .result('localized')\r\n      .result(value)\r\n      .value();\r\n\r\n    return localizedVal || value;\r\n  }\r\n\r\n  property(schemaName, key) {\r\n    const property = this.schema.getFilterProperty(key);\r\n    // filter-agent's schema-localizer writes localized property name\r\n    // to property.title instead of property.name\r\n    return property && property.title ? property.title : key;\r\n  }\r\n}\r\n","export { FilterSchema } from './src/index';\r\nexport { flattenEntitySchema, buildNameToPropertyMapping } from './src/schema-utils';\r\n","import _ from 'underscore';\r\n\r\nconst operatorMapping = {\r\n  number: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n  integer: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n  array: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n  string: ['contains', 'doesnotcontain', 'startswith', 'endswith', 'eq', 'neq'],\r\n  enum: ['in'],\r\n  boolean: ['eq'],\r\n  datetime: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n  id: ['in'],\r\n};\r\n\r\nfunction getSelfFilterableProps(schema) {\r\n  return _.chain(schema.properties)\r\n    .pairs()\r\n    .filter(pair => pair[1] && pair[1].filterable === true)\r\n    .object()\r\n    .value();\r\n}\r\n\r\nfunction getDeepFilterableProps(schema) {\r\n  return _.chain(schema.properties)\r\n    .pairs()\r\n    .filter(pair => pair[1].type && pair[1].type.toLowerCase() === 'object' && pair[1].schema && pair[1].filterable)\r\n    .map((pair) => {\r\n      const parentKey = pair[0];\r\n\r\n      return _.chain(pair[1].schema.properties)\r\n        // pick only filterable properties\r\n        .pick(pair[1].filterable)\r\n        .pairs()\r\n        .map((childPair) => {\r\n          // set alias on property object\r\n          const prop = _.extend({}, childPair[1], {\r\n            alias: pair[1].alias && pair[1].alias[childPair[0]],\r\n          });\r\n          // return key-value pair with key = parent/child\r\n          return [parentKey.concat('.', childPair[0]), prop];\r\n        })\r\n        .value();\r\n    })\r\n    .flatten(true)\r\n    .object()\r\n    .value();\r\n}\r\n\r\nfunction buildAliasToProp() {\r\n  return _.chain(this.filterProps())\r\n    .pairs()\r\n    .map(pair => _.map(\r\n      _.pairs(pair[1].alias || {}),\r\n      childPair => [childPair[0].concat('.', childPair[1]), pair[0]]\r\n    ))\r\n    .flatten(true)\r\n    .object()\r\n    .value();\r\n}\r\n\r\nfunction buildPropToAlias() {\r\n  return _.chain(this.aliasToProp())\r\n    .pairs()\r\n    .map((pair) => {\r\n      const dot = pair[0].indexOf('.');\r\n      const aliasType = pair[0].substring(0, dot);\r\n      const alias = pair[0].substring(dot + 1);\r\n      return [aliasType.concat('.', pair[1]), alias];\r\n    })\r\n    .object()\r\n    .value();\r\n}\r\n\r\nfunction convertValue(srcPropType, targetPropType, predValue) {\r\n  const srcType = srcPropType.toLowerCase();\r\n  const targetType = targetPropType.toLowerCase();\r\n  // only convert some types\r\n  if (srcType === 'number' && targetType === 'integer') {\r\n    return Math.round(predValue);\r\n  }\r\n  return predValue;\r\n}\r\n\r\nconst conversionFunctionFactory = ({\r\n  sourcePropertyType, targetPropName, targetProp,\r\n}) => {\r\n  const conversionFunc = (mongoPredicate) => {\r\n    const exprObj = _.values(mongoPredicate)[0];\r\n    const predOperator = _.keys(exprObj)[0];\r\n    const predValue = _.values(exprObj)[0];\r\n\r\n    // All we need here is the type for src\r\n    const convertedValue = convertValue(sourcePropertyType, targetProp.type, predValue);\r\n\r\n    return {\r\n      [targetPropName]: {\r\n        [predOperator]: convertedValue,\r\n      },\r\n    };\r\n  };\r\n  return conversionFunc;\r\n};\r\n\r\nconst legacyConversionFunctionFactory = ({\r\n  sourcePropertyType, targetPropName, targetProp,\r\n}) => {\r\n  const conversionFunc = (legacyPredicate) => {\r\n    const predValue = legacyPredicate.Values[0];\r\n\r\n    const convertedValue = convertValue(sourcePropertyType, targetProp.type, predValue);\r\n\r\n    /* eslint-disable no-param-reassign */\r\n    legacyPredicate.SelectedColumn = targetPropName;\r\n    legacyPredicate.Values = [convertedValue];\r\n    /* eslint-enable no-param-reassign */\r\n  };\r\n  return conversionFunc;\r\n};\r\n\r\nfunction buildPropToConversions(isForLegacyFilter, conversionFuncFactory) {\r\n  return _.chain(this.entitySchema.properties)\r\n    .pairs()\r\n    .map(([targetPropName, targetProp]) => {\r\n      // Only one property conversion are supported for now.\r\n      if (targetProp.alias && targetProp.alias.propertyConversion) {\r\n        // `conversionSrc` must have `sourcePropertyName` and `sourcePropertyType`.\r\n        // `sourcePropertyName` is long name with '' in b/w parentName and property name.\r\n        // `sourcePropertyLegacyAlias` is the optional legacy alias of the source property.\r\n        const { sourcePropertyType, sourcePropertyName, sourcePropertyLegacyAlias } =\r\n          targetProp.alias.propertyConversion;\r\n\r\n        if (!sourcePropertyName) {\r\n          throw new Error('Must provide a sourcePropertyName');\r\n        }\r\n        if (!sourcePropertyType) {\r\n          throw new Error('Must provide a sourcePropertyType');\r\n        }\r\n\r\n        const conversionFunc = conversionFuncFactory({\r\n          sourcePropertyType, targetPropName, targetProp,\r\n        });\r\n        const finalSourcePropertyName =\r\n          (isForLegacyFilter && sourcePropertyLegacyAlias) || sourcePropertyName;\r\n\r\n        return [finalSourcePropertyName, conversionFunc];\r\n      }\r\n      return null;\r\n    })\r\n    .compact()\r\n    .object()\r\n    .value();\r\n}\r\n\r\n/**\r\n * FilterSchema is built upon entity schema.\r\n * It's used to get filterable properties, get alias using alias type & property key and vice versa.\r\n */\r\nexport class FilterSchema {\r\n  /**\r\n   * Constructs a new instance of FilterSchema over the passed in entitySchema.\r\n   * @param {object} entitySchema - the original entity schema object\r\n   */\r\n  constructor(entitySchema) {\r\n    this.entitySchema = entitySchema;\r\n    this.entityName = this.entitySchema.name;\r\n\r\n    this.filterProps = () => _.extend(\r\n      getSelfFilterableProps(this.entitySchema),\r\n      getDeepFilterableProps(this.entitySchema)\r\n    );\r\n    this.aliasToProp = _.once(buildAliasToProp.bind(this));\r\n    this.propToAlias = _.once(buildPropToAlias.bind(this));\r\n    this.propToConversions =\r\n      _.once(buildPropToConversions.bind(this, false, conversionFunctionFactory));\r\n    this.propToLegacyConversions =\r\n      _.once(buildPropToConversions.bind(this, true, legacyConversionFunctionFactory));\r\n  }\r\n\r\n  /**\r\n   * Get entity schema's name.\r\n   * @return {string} - the entity schema's name.\r\n   */\r\n  getEntityName() {\r\n    return this.entityName;\r\n  }\r\n\r\n  /**\r\n   * Get keys of filterable properties.\r\n   * @return {array} - array of filterable properties' keys.\r\n   */\r\n  getPropertyKeys() {\r\n    return _.keys(this.filterProps());\r\n  }\r\n\r\n  /**\r\n   * Get filterable property using property key with formatted attributes.\r\n   * @param {string} propertyKey - the property's key\r\n   * @return {object} - filterable property of given key, null if doesn't exist.\r\n   */\r\n  getFilterProperty(propertyKey) {\r\n    const property = this.filterProps()[propertyKey];\r\n    if (!property) {\r\n      return null;\r\n    }\r\n\r\n    const type = property.type.toLowerCase();\r\n    let operators;\r\n\r\n    if (!_.isEmpty(property.operators)) {\r\n      operators = property.operators; // eslint-disable-line prefer-destructuring\r\n    } else if (_.isEmpty(property.enum)) {\r\n      operators = operatorMapping[type];\r\n    } else {\r\n      operators = operatorMapping.enum;\r\n    }\r\n\r\n    const result = {\r\n      type,\r\n      operators,\r\n      alias: property.alias,\r\n      name: property.name,\r\n      description: property.description,\r\n      isPercentValue: property.isPercentValue,\r\n      skipLocalization: property.skipLocalization,\r\n      isDeletedProperty: property.isDeletedProperty,\r\n      isInvalidProperty: property.isInvalidProperty,\r\n      title: property.title,\r\n      localized: property.localized,\r\n      nullable: property.nullable,\r\n      maxLength: property.maxLength,\r\n      minimum: property.minimum,\r\n      maximum: property.maximum,\r\n      pattern: property.pattern,\r\n      customEditor: property.customEditor,\r\n      localize: property.localize,\r\n      enumType: property.enumType,\r\n    };\r\n\r\n    if (property.enum) {\r\n      result.enum = property.enum;\r\n    }\r\n    if (property.chooseType) {\r\n      result.chooseType = property.chooseType;\r\n    }\r\n    if (property.customParameters) {\r\n      result.customParameters = property.customParameters;\r\n    }\r\n    if (property.groupedItems) {\r\n      result.groupedItems = property.groupedItems;\r\n    }\r\n    if (property.hasTime) {\r\n      result.hasTime = property.hasTime;\r\n    }\r\n\r\n    if (property.operatorDisplayNameMap) {\r\n      // for customize filter operator text display\r\n      result.operatorDisplayNameMap = property.operatorDisplayNameMap;\r\n    }\r\n    if (property.addtionalParams && _.isObject(property.addtionalParams)) {\r\n      // to avoid future trouble, for non-shared params, put it here\r\n      _.extendOwn(result, property.addtionalParams);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  /**\r\n   * Get alias using property key and alias type.\r\n   * @param {string} propertyKey - property key.\r\n   * @param {string} aliasType - alias type.\r\n   * @return {string} - alias name of given key and alias type\r\n   *                    return propertyKey if alias doesn't exist.\r\n   */\r\n  toAlias(propertyKey, aliasType) {\r\n    let alias = null;\r\n    if (propertyKey && aliasType) {\r\n      alias = this.propToAlias()[aliasType.concat('.', propertyKey)];\r\n    }\r\n    return alias || propertyKey;\r\n  }\r\n\r\n  /**\r\n   * Get original property key using alias and alias type.\r\n   * @param {string} alias - alias string.\r\n   * @param {string} aliasType - type of alias.\r\n   * @return {string} - the property key of given alias and alias type\r\n   *                    return alias if propertyKey doesn't exist.\r\n   */\r\n  fromAlias(alias, aliasType) {\r\n    let propertyKey = null;\r\n    if (alias && aliasType) {\r\n      propertyKey = this.aliasToProp()[aliasType.concat('.', alias)];\r\n    }\r\n    return propertyKey || alias;\r\n  }\r\n\r\n  getApplicableConversions(propName) {\r\n    const allConversions = this.propToConversions();\r\n    return _.isUndefined(allConversions[propName]) ? _.identity : allConversions[propName];\r\n  }\r\n\r\n  getApplicableLegacyConversions(propName) {\r\n    const allConversions = this.propToLegacyConversions();\r\n    return _.isUndefined(allConversions[propName]) ? _.identity : allConversions[propName];\r\n  }\r\n\r\n  applyConversions(mongoPredicate) {\r\n    const propName = _.keys(mongoPredicate)[0];\r\n    return this.getApplicableConversions(propName)(mongoPredicate);\r\n  }\r\n\r\n  applyLegacyFilterConversions(legacyFilterExpressions) {\r\n    _.each(legacyFilterExpressions, (legacyExpression) => {\r\n      const propName = legacyExpression.SelectedColumn;\r\n      this.getApplicableLegacyConversions(propName)(legacyExpression);\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst primitiveTypes = [\r\n  'string',\r\n  'number',\r\n  'integer',\r\n  'boolean',\r\n  'datetime',\r\n];\r\n\r\n// const assumes that there is only one conversion\r\nconst conversionAlias = 'propertyConversion';\r\n\r\n// Map enum value like 'Eligible' For DeliveryStatus to \"Enum.DeliveryStatus'Eligible'\"\r\nexport function mapEnumValueForFilter(enumType, enumValue) {\r\n  return `Enum.${enumType}'${enumValue}'`;\r\n}\r\n\r\nexport function buildNameToPropertyMapping(entitySchema, mapOnlyBaseProperty) {\r\n  // TODO 893787 Provide generic support for customizable entity schema to filter property mapping\r\n  if (mapOnlyBaseProperty) {\r\n    return _.mapObject(entitySchema.properties, propObj => _.last(propObj.property.split('/')));\r\n  }\r\n  return _.mapObject(entitySchema.properties, propObj => propObj.property);\r\n}\r\n\r\nfunction restoreToEntitySchema(flattenedEntity) {\r\n  const properties = _.reduce(flattenedEntity.fields, (memo, field) => {\r\n    // eslint-disable-next-line no-param-reassign\r\n    memo[field.name] = _.defaults({\r\n      filterable: true,\r\n    }, field);\r\n\r\n    return memo;\r\n  }, {});\r\n\r\n  return _.defaults({ properties }, _.pick(flattenedEntity, 'name', 'type', 'operators'));\r\n}\r\n\r\n// Any function that deals with property conversion uses\r\n// the assumption there is only one propertyAlternation\r\n// In another word only one convesion is allowed\r\nconst hasConversionAlias = alias => _.has(alias, conversionAlias);\r\n\r\nfunction flattenSchemaToFields(entitySchema) {\r\n  const fields = [];\r\n  const nameStack = [];\r\n\r\n  function buildFilters(schema) {\r\n    _.each(schema.properties, (prop, name) => {\r\n      const parentNameStack = [...nameStack];\r\n      nameStack.push(name);\r\n      const property = nameStack.join('/');\r\n      const propertyName = nameStack.join('');\r\n      if (prop.type === 'object' && prop.schema && (prop.filterable !== false)) {\r\n        // do not use original schema to not break it\r\n        const schemaToBuild = cloneDeep(prop.schema);\r\n\r\n        // did not build options for ones not filterable within an object\r\n        if (_.isArray(prop.filterable)) {\r\n          schemaToBuild.properties = _.pick(schemaToBuild.properties, prop.filterable);\r\n\r\n          // add filterable to those properties in case they don't have them\r\n          _.each(schemaToBuild.properties, (subPro, key) => {\r\n            subPro.filterable = true;// eslint-disable-line no-param-reassign\r\n\r\n            if (_.has(prop.alias, key)) {\r\n              subPro.alias = prop.alias[key];// eslint-disable-line no-param-reassign\r\n            }\r\n          });\r\n        }\r\n        buildFilters(schemaToBuild);\r\n      } else if (_.contains(primitiveTypes, prop.type) && prop.filterable) {\r\n        const baseSchema = {\r\n          name: propertyName,\r\n          type: prop.type,\r\n          property,\r\n          isPercentValue: prop.isPercentValue,\r\n          skipLocalization: prop.skipLocalization,\r\n          operators: prop.operators,\r\n          nullable: prop.nullable,\r\n          maxLength: prop.maxLength,\r\n          originalProperty: _.last(nameStack),\r\n          minimum: prop.minimum,\r\n          maximum: prop.maximum,\r\n          required: true,\r\n          pattern: prop.pattern,\r\n          localized: prop.localized,\r\n          isDeletedProperty: prop.isDeletedProperty,\r\n          isInvalidProperty: prop.isInvalidProperty,\r\n        };\r\n\r\n        if (prop.customColumn) {\r\n          baseSchema.name = name;\r\n          baseSchema.title = prop.title;\r\n          baseSchema.isPercentValue = prop.format === 'Percentage';\r\n          baseSchema.id = prop.id;\r\n          baseSchema.format = prop.format;\r\n          baseSchema.customColumn = true;\r\n        }\r\n\r\n        if (prop.type === 'datetime') {\r\n          baseSchema.hasTime = prop.hasTime;\r\n        }\r\n\r\n        // Include the custom operators' localization map\r\n        if (prop.operatorDisplayNameMap) {\r\n          baseSchema.operatorDisplayNameMap = prop.operatorDisplayNameMap;\r\n        }\r\n\r\n        // Keep the legacy column name conversion support.\r\n        if (prop.alias) {\r\n          const aliasCopy = cloneDeep(prop.alias);\r\n          _.extend(baseSchema, { alias: aliasCopy });\r\n          if (hasConversionAlias(aliasCopy)) {\r\n            // input schema must provide sourcePropertyType and one\r\n            // of parameters, sourceProperty, an odata short name, or\r\n            // sourcePropertyName, a full name with its parentName\r\n            const { sourceProperty, sourcePropertyType, sourcePropertyName } =\r\n              aliasCopy.propertyConversion;\r\n\r\n\r\n            if (!sourcePropertyType) {\r\n              throw new Error('Must provide a sourcePropertyType');\r\n            }\r\n            if (!sourcePropertyName) {\r\n              if (!sourceProperty) {\r\n                throw new Error('Must provide a sourcePropertyName or a sourceProperty');\r\n              }\r\n\r\n              const aliasNameStack = [...parentNameStack, sourceProperty];\r\n              const joinedSourceName = aliasNameStack.join('');\r\n\r\n              baseSchema.alias.propertyConversion.sourcePropertyName = joinedSourceName;\r\n            }\r\n          }\r\n        }\r\n\r\n        // update settings for enum type\r\n        if (!_.isEmpty(prop.enum)) {\r\n          baseSchema.enumValueMap = {};\r\n          _.extendOwn(baseSchema, { enum: [] }, _.pick(prop, 'chooseType', 'enumType'));\r\n\r\n          const enumType = baseSchema.enumType ? baseSchema.enumType : baseSchema.name;\r\n\r\n          // update enum value (for odata converting) & localization\r\n          _.each(prop.enum, (enumValue) => {\r\n            const mappedEnumValue = mapEnumValueForFilter(enumType, enumValue);\r\n\r\n            baseSchema.enum.push(mappedEnumValue);\r\n            baseSchema.enumValueMap[mappedEnumValue] = enumValue;\r\n          });\r\n        } else if (prop.type === 'boolean') {\r\n          _.extendOwn(baseSchema, _.pick(prop, 'chooseType'));\r\n        } else if (prop.type === 'string') {\r\n          _.extendOwn(baseSchema, _.pick(prop, 'chooseType'));\r\n          if (prop.customParameters) {\r\n            _.extendOwn(baseSchema, _.pick(prop, 'customParameters'));\r\n          }\r\n        }\r\n\r\n        fields.push(baseSchema);\r\n      }\r\n      nameStack.pop(name);\r\n    });\r\n  }\r\n\r\n  buildFilters(entitySchema);\r\n\r\n  return _.defaults({ fields }, _.pick(entitySchema, ['name', 'type']));\r\n}\r\n\r\nexport function flattenEntitySchema(entitySchema) {\r\n  return restoreToEntitySchema(flattenSchemaToFields(entitySchema));\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__40__;","export { FilterService } from './src/filter-service';\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Backbone from 'backbone';\r\n\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { FilterStorageType, getValidFilterEntity } from '@bingads-webui/filter-commons';\r\nimport { parseSync, stringifySync } from '@bingads-webui/safe-json';\r\nimport { FilterSchema, flattenEntitySchema, buildNameToPropertyMapping } from '@bingads-webui/filter-schema';\r\nimport { mergeFilterEntity } from './filter-service-util';\r\n\r\n/**\r\n * Maintain FilterState<br>\r\n * Flatten entity schema<br>\r\n * Provides method to crud two types of filter which are<br>\r\n * QuickFilter(SelectorFilter)- Filter dropdown<br>\r\n * EditableFilter - Whose query can be edited by user<br>\r\n * Manages filter storages and creation of FilterEntity\r\n * Trigger filter-state-changed event and expose current combined filter in\r\n * the form of FilterEntity<br>\r\n * @extends external:\"Backbone.Events\"\r\n * @fires FilterService#filter-state-changed\r\n */\r\n\r\nexport class FilterService {\r\n  /**\r\n   * @param {Object} storageFactory - Factory method to create storage instance\r\n   * @param {Object} storageOptions - Options for creating storage instance\r\n   * @param {Object} [storageOptions.quickFilterOptions] - Options for creating quick\r\n   * storage instance\r\n   * @param {Object} [storageOptions.editableFilterOptions] - Options for creating\r\n   *  editable storage instance\r\n   * @param {Object} [storageOptions.savedFilterOptions] - Options for creating\r\n   *  saved storage instance\r\n   * @param {Object} entitySchema - Entity Schema\r\n   * @param {Object} odata - Options for converting parameters to odata\r\n   * @param {boolean|string[]} odata.ignoreCase - ignoreCase for odata convertion.\r\n   * @param {Object} odata.custom - custom operator map for odata convertion.\r\n   * @param {function} schemaProcessor - Update schema based on feature specific logic\r\n   * @param {function} odataOptionsProcessor - Update odata options based on feature\r\n   * specific logic\r\n */\r\n  constructor({\r\n    storageFactory,\r\n    storageOptions: {\r\n      quickFilterOptions = {},\r\n      editableFilterOptions = {},\r\n      savedFilterOptions = {},\r\n      recentFilterOptions = {},\r\n    } = {},\r\n    entitySchema,\r\n    odata: {\r\n      ignoreCase = false,\r\n      custom,\r\n    },\r\n    schemaProcessor = schema => schema,\r\n    odataOptionsProcessor = odataOptions => odataOptions,\r\n    waterfallFilterStores,\r\n    suppressWaterfallEvents = false,\r\n  } = {}) {\r\n    this.entitySchema = schemaProcessor(flattenEntitySchema(entitySchema));\r\n    this.lazyFilterSchema = _.memoize(() => new FilterSchema(this.entitySchema));\r\n    this.odataOptions = odataOptionsProcessor({\r\n      fieldMap: buildNameToPropertyMapping(this.entitySchema),\r\n      ignoreCase,\r\n      custom,\r\n    }, this.entitySchema);\r\n    this.filterEntityOptions = {\r\n      entitySchema: this.entitySchema,\r\n      odata: this.odataOptions,\r\n    };\r\n    const basicStorageOptions = { filterEntityOptions: this.filterEntityOptions };\r\n    this.quickFilterStorage = storageFactory.create(\r\n      'quickFilter',\r\n      _.extend(quickFilterOptions, basicStorageOptions)\r\n    );\r\n    this.editableFilterStorage = storageFactory.create(\r\n      'editableFilter',\r\n      _.extend(editableFilterOptions, basicStorageOptions)\r\n    );\r\n    this.savedFilterStorage = storageFactory.create(\r\n      'savedFilter',\r\n      _.extend(savedFilterOptions, basicStorageOptions)\r\n    );\r\n    this.savedQuickFilterStorage = storageFactory.create(\r\n      'savedFilter',\r\n      _.extend(savedFilterOptions, basicStorageOptions, {\r\n        featureName: `${storageFactory.featureName}_QuickFilter`,\r\n      })\r\n    );\r\n    this.isRecentFilterSupported = !!storageFactory.preferenceService;\r\n    if (this.isRecentFilterSupported) {\r\n      this.recentFilterStorage = storageFactory.create(\r\n        'recentFilter',\r\n        _.extend(recentFilterOptions, basicStorageOptions)\r\n      );\r\n      this.recentQuickFilterStorage = storageFactory.create(\r\n        'recentFilter',\r\n        _.extend(recentFilterOptions, basicStorageOptions, {\r\n          featureName: `${storageFactory.featureName}_QuickFilter`,\r\n        })\r\n      );\r\n    }\r\n\r\n    // internal properties\r\n    this.editableFilter = null;\r\n    this.quickFilter = null;\r\n    this.dataSourceFilter = null;\r\n    this.savedFilters = [];\r\n    this.savedQuickFilters = [];\r\n    this.recentFilters = [];\r\n    this.recentQuickFilters = [];\r\n    this.suppressWaterfallEvents = suppressWaterfallEvents;\r\n\r\n    // Kick off first request to server to get all saved filters\r\n    this.fetchSavedFilterPromise = this.refreshSavedFiltersCache();\r\n\r\n    if (this.isRecentFilterSupported) {\r\n    // Kick off first request to server to get all recent filters\r\n      this.fetchRecentFilterPromise = this.refreshRecentFiltersCache();\r\n    }\r\n\r\n    // Load the saved quick filter\r\n    this.fetchQuickFilterPromise = this.fetchQuickFilter();\r\n\r\n    // Load the initial editable filter from storage\r\n    this.fetchEditableFilterPromise = this.fetchEditableFilter();\r\n\r\n    if (waterfallFilterStores) {\r\n      this.waterfallFilterStores = waterfallFilterStores;\r\n      this.initializeWaterfallFilters();\r\n    }\r\n\r\n    this.initializeCombinedFilterPromise = this.initializeCombinedFilter();\r\n\r\n    _.extend(this, Backbone.Events);\r\n  }\r\n\r\n  get filterSchema() { return this.lazyFilterSchema(); }\r\n\r\n  fetchQuickFilter() {\r\n    return this.fetchQuickFilterForGivenStore(this.quickFilterStorage);\r\n  }\r\n\r\n  fetchWaterfallFilter(store) {\r\n    return this.fetchQuickFilterForGivenStore(store)\r\n      .then((waterfallFilter) => {\r\n        this.waterfallFilters.push(waterfallFilter);\r\n\r\n        this.hasActiveWaterfallFilter = this.hasActiveWaterfallFilter\r\n          || !_.isEmpty(waterfallFilter.value.query);\r\n\r\n        return this.waterfallFilters;\r\n      });\r\n  }\r\n\r\n  fetchQuickFilterForGivenStore(quickFilterStorage) {\r\n    return quickFilterStorage.get()\r\n      .then((quickFilter) => {\r\n        const filter = (quickFilter && !_.isEmpty(quickFilter.filter) && quickFilter.filter) || {\r\n          key: '',\r\n          value: {\r\n            query: {},\r\n          },\r\n        };\r\n\r\n        return {\r\n          key: filter.key,\r\n          value: filter.value,\r\n        };\r\n      });\r\n  }\r\n\r\n  fetchEditableFilter() {\r\n    return this.editableFilterStorage.get()\r\n      .then((editableFilter) => {\r\n        if (editableFilter && !_.isEmpty(editableFilter.filter)) {\r\n          const { filter } = editableFilter;\r\n\r\n          return filter;\r\n        }\r\n\r\n        return editableFilter;\r\n      }, () =>\r\n        // Failed to load from storage, resolve back as empty initial filter.\r\n        ({}));\r\n  }\r\n\r\n  // exported property and APIs, all the async calls will return promise and they will always be\r\n  // resolved and never rejected. Resolve empty object back means the call failed.\r\n  get p$Initialized() {\r\n    // When both editable filter and quick filter are loaded from session storage, we treat the\r\n    // initialization is done. Saved filter array could still being loaded.\r\n    return this.initializeCombinedFilterPromise;\r\n  }\r\n\r\n  // Refreshes the promises for editable and quick filters. This is only necessary\r\n  // with grids that don't use the filter agent to update the filters.\r\n  refreshSource() {\r\n    this.fetchQuickFilterPromise = this.fetchQuickFilter();\r\n    this.fetchEditableFilterPromise = this.fetchEditableFilter();\r\n\r\n    if (this.waterfallFilterStores) {\r\n      this.initializeWaterfallFilters();\r\n    }\r\n\r\n    this.initializeCombinedFilterPromise = this.initializeCombinedFilter();\r\n  }\r\n\r\n  refreshWaterfallFilters() {\r\n    if (this.waterfallFilterStores) {\r\n      this.initializeWaterfallFilters();\r\n      Promise.all(this.fetchWaterfallFilterPromises).then(() => {\r\n        this.triggerQuickFilterSetEvent();\r\n      });\r\n    }\r\n  }\r\n\r\n  initializeCombinedFilter() {\r\n    const filterPromises = {\r\n      // Note: these information will be used by filterAgent to update UI\r\n      editableFilter: this.fetchEditableFilterPromise,\r\n      quickFilter: this.fetchQuickFilterPromise,\r\n    };\r\n\r\n    if (!_.isEmpty(this.fetchWaterfallFilterPromises)) {\r\n      filterPromises.WaterfallFilters = Promise.all(this.fetchWaterfallFilterPromises);\r\n    }\r\n\r\n    return Promise.props(filterPromises).then((filters) => {\r\n      const { editableFilter, quickFilter } = filters;\r\n\r\n      if (editableFilter && editableFilter.query) {\r\n        this.setInitialEditableFilter(editableFilter.query, editableFilter.name);\r\n      } else {\r\n        this.editableFilter = null;\r\n      }\r\n\r\n      if (quickFilter && quickFilter.value) {\r\n        this.setInitialQuickFilter(quickFilter.key, quickFilter.value);\r\n      } else {\r\n        this.quickFilter = null;\r\n      }\r\n\r\n      if (this.hasActiveWaterfallFilter) {\r\n        if (!this.suppressWaterfallEvents\r\n          || !this.oldWaterfallFilters\r\n          || !_.isEqual(this.oldWaterfallFilters, this.waterfallFilters)) {\r\n          this.triggerQuickFilterSetEvent();\r\n        }\r\n      }\r\n\r\n      return filters;\r\n    });\r\n  }\r\n\r\n  initializeWaterfallFilters() {\r\n    this.fetchWaterfallFilterPromises = [];\r\n    this.oldWaterfallFilters = this.waterfallFilters;\r\n    this.waterfallFilters = [];\r\n    this.hasActiveWaterfallFilter = false;\r\n\r\n    _.each(this.waterfallFilterStores, (store) => {\r\n      this.fetchWaterfallFilterPromises.push(this.fetchWaterfallFilter(store));\r\n    });\r\n  }\r\n\r\n  serialize() {\r\n    const object = {\r\n      version: 1,\r\n    };\r\n    if (this.quickFilter) {\r\n      object.quick = this.quickFilter;\r\n    }\r\n    if (this.editableFilter) {\r\n      object.editable = {\r\n        key: this.editableFilter.name,\r\n        value: {\r\n          query: this.editableFilter.query,\r\n        },\r\n      };\r\n    }\r\n    if (this.hasActiveWaterfallFilter) {\r\n      object.waterfalls = this.waterfallFilters;\r\n    }\r\n\r\n    return stringifySync(object);\r\n  }\r\n\r\n  deserialize(serialized, isColumnConversionEnabled = false) {\r\n    const object = parseSync(serialized);\r\n\r\n    if (object && object.version === 1) {\r\n      // object.version now is always 1\r\n      const {\r\n        quick,\r\n        editable,\r\n        waterfalls,\r\n      } = object;\r\n      if (quick) {\r\n        this.setQuickFilter(quick.key, quick.value);\r\n      } else {\r\n        this.removeQuickFilter();\r\n      }\r\n      if (editable) {\r\n        const patchedQuery = isColumnConversionEnabled ?\r\n          this.patchFilter(editable.value.query) : editable.value.query;\r\n        this.setEditableFilter(patchedQuery, editable.key);\r\n      } else {\r\n        this.removeEditableFilter();\r\n      }\r\n      if (waterfalls) {\r\n        // just ignore for now\r\n      }\r\n    } else {\r\n      // object as query\r\n      const query = object;\r\n      if (query) {\r\n        const quickFilter = this.getQuickFilter();\r\n        if (quickFilter) {\r\n          const equalQuickFilter = q => _.isEqual(q, quickFilter.value.query);\r\n          if (equalQuickFilter(query)) {\r\n            return;\r\n          }\r\n          if (\r\n            query &&\r\n            query.$and &&\r\n            _.some(query.$and, equalQuickFilter)\r\n          ) {\r\n            const editableFilter = _.defaults({\r\n              $and: _.reject(query.$and, equalQuickFilter),\r\n            }, query);\r\n            const patchedQuery = isColumnConversionEnabled ?\r\n              this.patchFilter(editableFilter) : editableFilter;\r\n            this.setEditableFilter(patchedQuery);\r\n          } else {\r\n            this.setQuickFilter(null);\r\n            const patchedQuery = isColumnConversionEnabled ?\r\n              this.patchFilter(query) : query;\r\n            this.setEditableFilter(patchedQuery);\r\n          }\r\n        } else {\r\n          const patchedQuery = isColumnConversionEnabled ?\r\n            this.patchFilter(query) : query;\r\n          this.setEditableFilter(patchedQuery);\r\n        }\r\n      } else {\r\n        this.removeEditableFilter();\r\n      }\r\n    }\r\n  }\r\n\r\n  patchFilter(query) {\r\n    let logicalOperator;\r\n    let expressions;\r\n\r\n    if (query.$or) {\r\n      logicalOperator = '$or';\r\n      expressions = query.$or;\r\n    } else if (query.$and) {\r\n      logicalOperator = '$and';\r\n      expressions = query.$and;\r\n    } else {\r\n      logicalOperator = '$and';\r\n      expressions = [query];\r\n    }\r\n\r\n    const patchedQuery = _.map(\r\n      expressions,\r\n      this.filterSchema.applyConversions.bind(this.filterSchema)\r\n    );\r\n\r\n    if (patchedQuery.length === 1) {\r\n      return patchedQuery[0];\r\n    }\r\n    return _.object(\r\n      [logicalOperator || '$and'],\r\n      [patchedQuery]\r\n    );\r\n  }\r\n\r\n  // Combined filter, used by caller for rebind grid.\r\n  getCombinedFilter() {\r\n    let filtersToMerge = [];\r\n    if (this.quickFilter) {\r\n      filtersToMerge.push(this.createFilterEntity(this.quickFilter.value.query));\r\n    }\r\n    if (this.editableFilter) {\r\n      filtersToMerge.push(this.editableFilter);\r\n    }\r\n    if (this.dataSourceFilter) {\r\n      filtersToMerge.push(this.createFilterEntity(this.dataSourceFilter.value.query));\r\n    }\r\n    if (this.hasActiveWaterfallFilter) {\r\n      const waterfallFilterEntities = _.map(\r\n        this.waterfallFilters,\r\n        filter => this.createFilterEntity(filter.value.query)\r\n      );\r\n      filtersToMerge = filtersToMerge.concat(waterfallFilterEntities);\r\n    }\r\n\r\n    return mergeFilterEntity(filtersToMerge, this.filterEntityOptions);\r\n  }\r\n\r\n  // =============\r\n  // [QuickFilter]\r\n  // =============\r\n  //\r\n  // Save the quick filter item to storage\r\n  setQuickFilter(key, value, isInitialLoad = false) {\r\n    const newQuickFilter = {\r\n      key,\r\n      value,\r\n    };\r\n\r\n    if (!_.isEqual(newQuickFilter, this.quickFilter)) {\r\n      this.quickFilter = {\r\n        key,\r\n        value,\r\n      };\r\n      if (!isInitialLoad) {\r\n        this.quickFilterStorage.save(key, value);\r\n      }\r\n      this.triggerQuickFilterSetEvent();\r\n    }\r\n  }\r\n\r\n  removeQuickFilter() {\r\n    this.setQuickFilter('', { query: {} });\r\n  }\r\n\r\n  setInitialQuickFilter(key, value) {\r\n    this.setQuickFilter(key, value, true);\r\n  }\r\n\r\n  triggerQuickFilterSetEvent() {\r\n    this.trigger('filter-state-changed', {\r\n      filter: this.getCombinedFilter(),\r\n      quickFilter: this.quickFilter && this.createFilterEntity(this.quickFilter.value.query),\r\n    }, 'quick-filter-applied');\r\n  }\r\n\r\n  // Get the quick filter item from storage\r\n  getQuickFilter() {\r\n    return this.quickFilter;\r\n  }\r\n\r\n  // =============\r\n  // [DataSource Filter]\r\n  //\r\n  // Provides a way to set a filter only on the request\r\n  // Note: This doesn't show on the UI or persist in storage\r\n  // =============\r\n\r\n  // Set the data source filter item\r\n  setDataSourceFilter(key, value) {\r\n    this.dataSourceFilter = {\r\n      key,\r\n      value,\r\n    };\r\n  }\r\n\r\n  // Get the data source filter item\r\n  getDataSourceFilter() {\r\n    return this.dataSourceFilter;\r\n  }\r\n\r\n  // =============\r\n  // [SavedFilter]\r\n  // =============\r\n  //\r\n  // Get all saved filter\r\n  getSavedFilters(refresh = false) {\r\n    if (refresh) {\r\n      this.fetchSavedFilterPromise = this.refreshSavedFiltersCache();\r\n    }\r\n\r\n    // fetchSavedFilterPromise is never rejected (see refreshSavedFiltersCache())\r\n    return this.fetchSavedFilterPromise.then((state) => {\r\n      if (refresh && state && state.error) {\r\n        return state;\r\n      }\r\n      // Note: don't resolve the error state back if this is not a refresh request.\r\n      //       Failed to get fetch filters from server treated as Fail-Safe.\r\n      return _.union(this.savedFilters, this.savedQuickFilters);\r\n    });\r\n  }\r\n\r\n\r\n  // =============\r\n  // [RecentFilter]\r\n  // =============\r\n  //\r\n  // Get all recent filter\r\n  getRecentFilters(refresh = false) {\r\n    if (refresh) {\r\n      this.fetchRecentFilterPromise = this.refreshRecentFiltersCache();\r\n    }\r\n\r\n    // fetchRecentFilterPromise is never rejected (see refreshRecentFiltersCache())\r\n    return this.fetchRecentFilterPromise.then((state) => {\r\n      if (refresh && state && state.error) {\r\n        return state;\r\n      }\r\n      // Note: don't resolve the error state back if this is not a refresh request.\r\n      //       Failed to get fetch filters from server treated as Fail-Safe.\r\n      return _.chain(this.recentFilters)\r\n        .map((recentFilter, index) => {\r\n          const quickFilter = this.recentQuickFilters[index];\r\n          if (!_.isEmpty(recentFilter.query) || !_.isEmpty(quickFilter.query)) {\r\n            return {\r\n              editableFilter: recentFilter,\r\n              quickFilter: this.recentQuickFilters[index],\r\n            };\r\n          }\r\n          return null;\r\n        })\r\n        .compact()\r\n        .value();\r\n    });\r\n  }\r\n\r\n  // =============\r\n  // [RecentFilter]\r\n  // =============\r\n  //\r\n  // Get recent filter by index\r\n  getRecentFiltersByIndex(index) {\r\n    return [\r\n      this.recentQuickFilters[index],\r\n      this.recentFilters[index],\r\n    ];\r\n  }\r\n\r\n  // Save the filter to server, resolve back the recent filter (type of FilterEntity)\r\n  addUpdateRecentFilter(\r\n    query,\r\n    filterStorageType = FilterStorageType.EditableFilter\r\n  ) {\r\n    const recentFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n      this.recentFilterStorage : this.recentQuickFilterStorage;\r\n    const filter = query ? this.createFilterEntity(query) : null;\r\n\r\n    return recentFilterStorage.save(filter)\r\n      .then(() => {\r\n        this.refreshRecentFiltersCache();\r\n      }, (errorData) => {\r\n        this.trigger('filter-operation-failed', errorData);\r\n        return errorData;\r\n      });\r\n  }\r\n\r\n  // Save the filter to server, resolve back the saved filter (type of FilterEntity)\r\n  addUpdateSavedFilter(\r\n    query,\r\n    name,\r\n    filterStorageType = FilterStorageType.EditableFilter, updateAppliedFilter = true\r\n  ) {\r\n    if (!query || !name) {\r\n      throw new Error(`Query ${query} or name ${name} is missing`);\r\n    }\r\n    return this.getFilterByName(name, filterStorageType).then((existingFilter) => {\r\n      const filter = this.createFilterEntity(query, name);\r\n      if (existingFilter) {\r\n        _.extend(filter, {\r\n          id: existingFilter.id,\r\n        });\r\n      }\r\n\r\n      if (updateAppliedFilter) {\r\n        if (filterStorageType === FilterStorageType.EditableFilter) {\r\n          this.setEditableFilter(filter);\r\n        } else {\r\n          this.setQuickFilter('', {\r\n            query,\r\n          });\r\n        }\r\n      }\r\n\r\n      const savedFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n        this.savedFilterStorage : this.savedQuickFilterStorage;\r\n      const savedFilters = filterStorageType === FilterStorageType.EditableFilter ?\r\n        this.savedFilters : this.savedQuickFilters;\r\n\r\n      return savedFilterStorage.save(filter)\r\n        .then((savedData) => {\r\n          // successfully saved to filter, now update the saved list\r\n          _.extend(filter, { id: savedData.id });\r\n\r\n          const index = _.findIndex(\r\n            savedFilters,\r\n            savedFilter => savedFilter.id === savedData.id\r\n          );\r\n\r\n          if (index === -1) {\r\n            savedFilters.push(filter);\r\n          } else {\r\n            savedFilters.splice(index, 1, filter);\r\n          }\r\n\r\n          // The caller should not need to wait for refetch, resolve the saved filter back\r\n          return filter;\r\n        }, (errorData) => {\r\n          this.trigger('filter-operation-failed', errorData);\r\n          return errorData;\r\n        });\r\n    });\r\n  }\r\n\r\n  // Delete filter from storage, resolve the deleted filter's name\r\n  deleteSavedFilter(filter, filterStorageType = FilterStorageType.EditableFilter) {\r\n    const savedFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n      this.savedFilterStorage : this.savedQuickFilterStorage;\r\n    const savedFilters = filterStorageType === FilterStorageType.EditableFilter ?\r\n      this.savedFilters : this.savedQuickFilters;\r\n\r\n    // return this.deleteFromServer(data)\r\n    return savedFilterStorage.delete(filter)\r\n      .then((deletedResult) => {\r\n        // Deleted from server, update local cache.\r\n        const index = _.findIndex(savedFilters, { id: deletedResult.id });\r\n\r\n        if (index !== -1) {\r\n          savedFilters.splice(index, 1);\r\n        }\r\n        return { name: filter.name };\r\n      }, (errorData) => {\r\n        this.trigger('filter-operation-failed', errorData);\r\n        return errorData;\r\n      });\r\n  }\r\n\r\n  refreshSavedOrRecentFiltersCache(\r\n    editableFilterStorage,\r\n    quickFilterStorage,\r\n    editableFilters,\r\n    quickFilters\r\n  ) {\r\n    return Promise.all([\r\n      editableFilterStorage.get(),\r\n      quickFilterStorage.get()])\r\n      .then((combinedFilters) => {\r\n        // Re-populate the cache\r\n        editableFilters.length = 0;\r\n        _.each(combinedFilters[0], (filter) => {\r\n          editableFilters.push(this.createFilterEntity(\r\n            filter.query,\r\n            filter.name,\r\n            filter.id\r\n          ));\r\n        });\r\n        quickFilters.length = 0;\r\n        _.each(combinedFilters[1], (filter) => {\r\n          quickFilters.push(this.createFilterEntity(\r\n            filter.query,\r\n            filter.name,\r\n            filter.id\r\n          ));\r\n        });\r\n      }, errorData =>\r\n        // Don't touch the cached savedFilters, still resolve the fetchSavedFilterPromise\r\n        // with error object\r\n        errorData);\r\n  }\r\n\r\n  // Internal function\r\n  refreshSavedFiltersCache() {\r\n    return this.refreshSavedOrRecentFiltersCache(\r\n      this.savedFilterStorage,\r\n      this.savedQuickFilterStorage,\r\n      this.savedFilters,\r\n      this.savedQuickFilters\r\n    );\r\n  }\r\n\r\n  // Internal function\r\n  refreshRecentFiltersCache() {\r\n    return this.refreshSavedOrRecentFiltersCache(\r\n      this.recentFilterStorage,\r\n      this.recentQuickFilterStorage,\r\n      this.recentFilters,\r\n      this.recentQuickFilters\r\n    );\r\n  }\r\n\r\n  getFilterByName(name, filterStorageType = FilterStorageType.EditableFilter) {\r\n    // Note: fetchSavedFilterPromise is never rejected\r\n    return this.fetchSavedFilterPromise.then(() =>\r\n      // Return the filter entity, if the last fetch failed, use the local savedFilters directly.\r\n      _.find(filterStorageType === FilterStorageType.EditableFilter ?\r\n        this.savedFilters : this.savedQuickFilters, { name }));\r\n  }\r\n\r\n  // ===============\r\n  // [EditableFilter]\r\n  // ===============\r\n  //\r\n  // Get Filter for current editable filter, synchronous call\r\n  getEditableFilter() {\r\n    return this.editableFilter;\r\n  }\r\n\r\n  // Remove the current editable filter\r\n  removeEditableFilter() {\r\n    this.editableFilter = null;\r\n\r\n    this.editableFilterStorage.clean();\r\n\r\n    this.trigger('filter-state-changed', {\r\n      filter: this.getCombinedFilter(),\r\n    }, 'editable-filter-removed');\r\n  }\r\n\r\n  // Set the current editable filter\r\n  setEditableFilterByName(name) {\r\n    return this.getFilterByName(name).then((filter) => {\r\n      if (filter) {\r\n        this.setEditableFilter(filter, name);\r\n      } else {\r\n        throw new Error(`Cannot find filter by name ${name}`);\r\n      }\r\n    });\r\n  }\r\n\r\n  // Set the current editable filter\r\n  setEditableFilter(filter, name, isInitialLoad = false, callback = null) {\r\n    const filterEntity = filter instanceof FilterEntity ?\r\n      filter : this.createFilterEntity(filter, name);\r\n\r\n    const validatedFilter = getValidFilterEntity(filterEntity);\r\n\r\n    if ((!_.isEmpty(filter.query) && !validatedFilter)\r\n      || (validatedFilter && filterEntity && validatedFilter.depth !== filterEntity.depth)) {\r\n      this.trigger('invalid-filter-property', {\r\n        originalFilter: filterEntity.query,\r\n        validatedFilter: validatedFilter ? validatedFilter.query : null,\r\n      });\r\n    }\r\n\r\n    // Only trigger filter state change if filter changed\r\n    if ((!this.editableFilter && validatedFilter) ||\r\n      (this.editableFilter && !validatedFilter) ||\r\n      (this.editableFilter && validatedFilter &&\r\n        !_.isEqual(this.editableFilter.query, validatedFilter.query))) {\r\n      this.editableFilter = validatedFilter;\r\n      this.trigger('filter-state-changed', {\r\n        filter: this.getCombinedFilter(),\r\n      }, 'editable-filter-applied');\r\n      if (!isInitialLoad) {\r\n        this.editableFilterStorage.save(this.editableFilter).then(() => {\r\n          if (_.isFunction(callback)) {\r\n            callback();\r\n          }\r\n        });\r\n      }\r\n    } else {\r\n      this.trigger('editable-filter-applied');\r\n      if (_.isFunction(callback)) {\r\n        callback();\r\n      }\r\n    }\r\n  }\r\n\r\n  setInitialEditableFilter(filter, name) {\r\n    this.setEditableFilter(filter, name, true);\r\n  }\r\n\r\n  createFilterEntity(query, name, id) {\r\n    return new FilterEntity(\r\n      query,\r\n      this.filterEntityOptions,\r\n      name,\r\n      id\r\n    );\r\n  }\r\n\r\n  // Remove the current applied filter\r\n  removeAppliedFilter() {\r\n    this.quickFilter = {\r\n      key: '',\r\n      value: {\r\n        query: {},\r\n      },\r\n    };\r\n    this.editableFilter = null;\r\n\r\n    this.editableFilterStorage.clean();\r\n    this.quickFilterStorage.clean();\r\n\r\n    this.trigger('filter-state-changed', {\r\n      filter: this.getCombinedFilter(),\r\n    }, 'filter-reset');\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__97__;","module.exports = __WEBPACK_EXTERNAL_MODULE__98__;","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\n\r\nfunction isNullQuery(query) {\r\n  return query && _.values(query) && _.isEqual(_.values(query)[0], {\r\n    $in: null,\r\n  });\r\n}\r\n\r\nfunction mergeQuery(baseQuery, addedQuery) {\r\n  let newQuery;\r\n\r\n\r\n  if (addedQuery.$and && addedQuery.$and.length > 0) {\r\n    addedQuery.$and = _.filter(addedQuery.$and, query => !isNullQuery(query));\r\n  } else {\r\n    addedQuery = isNullQuery(addedQuery) ? {} : addedQuery;\r\n  }\r\n\r\n  if (_.isUndefined(baseQuery) || _.isEmpty(baseQuery)) {\r\n    newQuery = addedQuery;\r\n  } else {\r\n    if (_.isUndefined(addedQuery)) {\r\n      newQuery = {};\r\n    } else {\r\n      newQuery = putil.cloneDeep(addedQuery);\r\n    }\r\n\r\n    if (_.isEmpty(newQuery)) {\r\n      newQuery = baseQuery;\r\n    } else if (_.has(newQuery, '$and')) {\r\n      const and = _.union(newQuery.$and, [baseQuery]);\r\n\r\n      newQuery.$and = and;\r\n    } else {\r\n      newQuery = {\r\n        $and: [baseQuery, addedQuery],\r\n      };\r\n    }\r\n  }\r\n  return newQuery;\r\n}\r\n\r\nfunction mergeFilterEntity(entities, options) {\r\n  if (_.isArray(entities) && !_.isEmpty(entities)) {\r\n    const newQuery = _.reduce(\r\n      entities,\r\n      (memo, entity) => mergeQuery(memo, entity.query), undefined\r\n    );\r\n\r\n    return new FilterEntity(newQuery, options);\r\n  }\r\n  return {};\r\n}\r\n\r\nexport { mergeFilterEntity };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__103__;","export * from './src';\r\n","export * from './focus-lock-instance-decorator';\r\nexport * from './focus-lock-decorator';\r\n","import Backbone from 'backbone';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { FocusLockBackboneInstanceWrapper } from './focus-lock-backbone-instance-wrapper';\r\n\r\nexport const focusLockInstanceDecorator =\r\n  (instance, focusLockOptions, { managed, eventHandlers } = {}) => {\r\n    const DecoratedFocusLockView = Backbone.View.extend({\r\n      render() {\r\n        ReactDOM.render(\r\n          (\r\n            <FocusLockBackboneInstanceWrapper\r\n              focusLockProps={focusLockOptions}\r\n              instance={instance}\r\n              eventHandlers={eventHandlers}\r\n              managed={managed}\r\n            />\r\n          ),\r\n          this.el\r\n        );\r\n\r\n        return this;\r\n      },\r\n\r\n      remove() {\r\n        ReactDOM.unmountComponentAtNode(this.el);\r\n        Backbone.View.prototype.remove.call(this);\r\n      },\r\n    });\r\n\r\n    return DecoratedFocusLockView;\r\n  };\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\n\r\nexport const FocusLockBackboneInstanceWrapper = ({\r\n  focusLockProps, instance, eventHandlers, managed,\r\n}) => (\r\n  <FocusLock {...focusLockProps}>\r\n    <BackboneInstanceWrapper\r\n      instance={instance}\r\n      eventHandlers={eventHandlers}\r\n      managed={managed}\r\n    />\r\n  </FocusLock>);\r\n\r\nFocusLockBackboneInstanceWrapper.propTypes = {\r\n  focusLockProps: PropTypes.object,\r\n  instance: PropTypes.shape({\r\n    $el: PropTypes.object.isRequired,\r\n    render: PropTypes.func.isRequired,\r\n    off: PropTypes.func.isRequired,\r\n    once: PropTypes.func.isRequired,\r\n    on: PropTypes.func.isRequired,\r\n  }).isRequired,\r\n  eventHandlers: PropTypes.shape({\r\n    once: PropTypes.objectOf(PropTypes.func),\r\n    on: PropTypes.objectOf(PropTypes.func),\r\n  }),\r\n  managed: PropTypes.bool,\r\n};\r\n\r\nFocusLockBackboneInstanceWrapper.defaultProps = {\r\n  focusLockProps: {},\r\n  eventHandlers: {\r\n    once: {},\r\n    on: {},\r\n  },\r\n  managed: false,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__328__;","module.exports = __WEBPACK_EXTERNAL_MODULE__329__;","import Backbone from 'backbone';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { FocusLockBackboneWrapper } from './focus-lock-backbone-wrapper';\r\n\r\nexport const focusLockDecorator = (View, focusLockOptions) => {\r\n  const DecoratedFocusLockView = Backbone.View.extend({\r\n    initialize(options) {\r\n      this.options = options;\r\n      this.eventsToActions = options.eventsToActions;\r\n      this.focusLockOptions = focusLockOptions;\r\n    },\r\n\r\n    render() {\r\n      ReactDOM.render(\r\n        (\r\n          <FocusLockBackboneWrapper\r\n            focusLockProps={this.focusLockOptions}\r\n            View={View}\r\n            viewOptions={this.options}\r\n            eventsToActions={this.eventsToActions}\r\n          />\r\n        ),\r\n        this.el\r\n      );\r\n\r\n      return this;\r\n    },\r\n\r\n    remove() {\r\n      ReactDOM.unmountComponentAtNode(this.el);\r\n      Backbone.View.prototype.remove.call(this);\r\n    },\r\n  });\r\n\r\n  return DecoratedFocusLockView;\r\n};\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport { View as BackboneView } from 'backbone';\r\nimport PropTypes from 'prop-types';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\nimport { BackboneViewWrapper } from '@bingads-webui-react/backbone-view-wrapper';\r\n\r\nexport const FocusLockBackboneWrapper = ({\r\n  focusLockProps, View, viewOptions, eventsToActions,\r\n}) => (\r\n  <FocusLock {...focusLockProps}>\r\n    <BackboneViewWrapper\r\n      View={View}\r\n      options={viewOptions}\r\n      eventsToActions={eventsToActions}\r\n    />\r\n  </FocusLock>);\r\n\r\nFocusLockBackboneWrapper.propTypes = {\r\n  focusLockProps: PropTypes.object,\r\n  View: PropTypes.oneOfType([BackboneView]).isRequired,\r\n  viewOptions: PropTypes.object,\r\n  eventsToActions: PropTypes.arrayOf(PropTypes.shape({\r\n    event: PropTypes.string.isRequired,\r\n    action: PropTypes.func.isRequired,\r\n  })),\r\n};\r\n\r\nFocusLockBackboneWrapper.defaultProps = {\r\n  focusLockProps: {},\r\n  viewOptions: {},\r\n  eventsToActions: [],\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__332__;","export * from './src/index';\r\n","export * from './CopilotResultView';\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { CopilotIcon } from '@bingads-webui-react/copilot-ui-base';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\n// @ts-ignore\r\nimport { withSiteMap } from '@bingads-webui-react/with-site-map';\r\n// @ts-ignore\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\n// @ts-ignore\r\nimport { ListSelector } from '@bingads-webui-react/list-selector';\r\nimport { IQuestion } from '@bingads-webui/search-utils';\r\nimport { getSearchQuestionsFromSiteMap, getSearchQuestionsFromQuery } from './utils';\r\n\r\nimport { getCopilotResultViewStyles } from './CopilotResultView.styles';\r\n\r\nconst DEFAULT_SEARCH_RESULT_NUM = 3;\r\nconst COPILOT_SEARCH = 'copilot-search';\r\n\r\nexport interface ICopilotResultViewProps {\r\n  classes: any;\r\n  i18n: {\r\n    getString: (key: string) => string;\r\n  };\r\n  searchQuery: string;\r\n  siteMap: any;\r\n  onCopilotClick?: (param: any) => void;\r\n  clear?: () => void;\r\n  placeholderText?: string;\r\n  logger?: {\r\n    trace: (param: any) => void;\r\n  };\r\n  isNewLogo?: boolean;\r\n}\r\n\r\ninterface IResultViewProps {\r\n  searchQuery: string;\r\n  i18n: any;\r\n  clear?: () => void;\r\n  placeholderText?: string;\r\n  searchActivity?: {\r\n    trace: (param: any) => void;\r\n  };\r\n}\r\n\r\ninterface ICopilotResultViewState {\r\n  copilotResults: IQuestion[];\r\n  prevSearchQuery: string,\r\n}\r\n\r\nclass CopilotResultView extends React.PureComponent<ICopilotResultViewProps, ICopilotResultViewState> {\r\n  constructor(props: ICopilotResultViewProps) {\r\n    super(props);\r\n\r\n    this.state = {\r\n      copilotResults: getSearchQuestionsFromSiteMap(props.siteMap, props.i18n),\r\n      prevSearchQuery: props.searchQuery,\r\n    };\r\n  }\r\n\r\n  static getDerivedStateFromProps(nextProps: ICopilotResultViewProps, prevState: ICopilotResultViewState) {\r\n    if (prevState.prevSearchQuery !== nextProps.searchQuery) {\r\n      if (nextProps.searchQuery) {\r\n        return {\r\n          copilotResults: getSearchQuestionsFromQuery(nextProps.searchQuery, nextProps.i18n),\r\n          prevSearchQuery: nextProps.searchQuery,\r\n        };\r\n      }\r\n\r\n      return {\r\n        copilotResults: getSearchQuestionsFromSiteMap(nextProps.siteMap, nextProps.i18n),\r\n        prevSearchQuery: nextProps.searchQuery,\r\n      };\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  onSelect = (question: Pick<IQuestion, 'text'>, index: number) => {\r\n    const customizedEvent = question.text ? {\r\n      eventType: 'message',\r\n      eventSource: 'globalSearchCopilotResultView',\r\n      eventData: {\r\n        message: question.text,\r\n      },\r\n    } : undefined;\r\n\r\n    if (this.props.onCopilotClick) {\r\n      this.props.onCopilotClick({\r\n        customizedEvent,\r\n        forceOpen: true,\r\n      });\r\n    }\r\n\r\n    if (this.props.logger) {\r\n      this.props.logger.trace({\r\n        keyword: question.text,\r\n        isSearchResultSelected: true,\r\n        selectedItem: COPILOT_SEARCH,\r\n        isUserInput: index < 0,\r\n      });\r\n    }\r\n\r\n    const toggleCopilotEvent = new CustomEvent('copilotToggleEvent', {\r\n      detail: customizedEvent,\r\n      bubbles: true,\r\n      cancelable: true,\r\n      composed: false,\r\n    });\r\n\r\n    document.dispatchEvent(toggleCopilotEvent);\r\n\r\n    if (this.props.clear) {\r\n      this.props.clear();\r\n    }\r\n  };\r\n\r\n  getCopilotListView = () => {\r\n    const {\r\n      searchQuery,\r\n      i18n,\r\n    } = this.props;\r\n\r\n    const {\r\n      renderItem,\r\n      renderHeader,\r\n      onSelect,\r\n    } = this;\r\n\r\n    return (\r\n      <div>\r\n        <ListSelector\r\n          renderHeader={() => renderHeader(searchQuery)}\r\n          renderItem={renderItem}\r\n          renderDivider={_.noop}\r\n          onSelect={onSelect}\r\n          data={_.first(this.state.copilotResults, DEFAULT_SEARCH_RESULT_NUM)}\r\n          enableArrowKeysSupport\r\n          ariaLabel={i18n.getString(_TL_('Copilot result list'))}\r\n        />\r\n      </div>\r\n    );\r\n  };\r\n\r\n  renderItem = (question: IQuestion) => {\r\n    const { classes } = this.props;\r\n    const itemClassName = classnames('copilot-search-result-item-text');\r\n\r\n    return (\r\n      <div\r\n        className={classnames(classes.searchResultItem, 'copilot-search-result-item')}\r\n      >\r\n        <div className={classes.searchItemContainer}>\r\n          <div className={classnames(classes.searchItemSpan, 'copilot-search-result-text')}>\r\n            <span\r\n              className={itemClassName}\r\n              title={question.text}\r\n            >\r\n              {question.text}\r\n            </span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    );\r\n  };\r\n\r\n  renderHeader = (query: string) => {\r\n    const { classes, i18n } = this.props;\r\n    const onClick = () => this.onSelect({ text: query }, -1);\r\n    const onCopilotKeyDown = (e: any) => { if (e && e.key === 'Enter') { onClick(); } };\r\n\r\n    return (\r\n      <div className={classnames(classes.resultHeaderContainer, 'copilot-search-result-section-header')}>\r\n        <span role=\"button\" tabIndex={0} onClick={onClick} onKeyDown={onCopilotKeyDown} className={classes.resultHeader}>\r\n          <div className={classes.resultHeaderIcon}>\r\n            <CopilotIcon size=\"medium\" color={this.props.isNewLogo ? 'multicolor' : 'blue'} title={i18n.getString(_TL_('Copilot icon'))} iconStyles={classes.copilotIcon} />\r\n          </div>\r\n          {\r\n            query ? (\r\n              <div className={classnames(classes.resultHeaderSpan, 'copilot-search-header-text')}>\r\n                <span\r\n                  title={query}\r\n                >\r\n                  {query}\r\n                </span>\r\n              </div>\r\n            ) : (\r\n              <div className={classnames(classes.resultHeaderPlaceholder, 'copilot-search-header-placeholder')}>\r\n                {i18n.getString(this.props.placeholderText || _TL_('Your question will appear here'))}\r\n              </div>\r\n            )\r\n          }\r\n          <div className={classnames(classes.resultHeaderLink, 'copilot-search-header-link')}>{i18n.getString(_TL_('Ask Copilot'))}</div>\r\n        </span>\r\n        {\r\n          this.state.copilotResults.length > 0 && (\r\n            <span>\r\n              <div className={classnames(classes.resultHeaderHint, 'copilot-search-header-hint')}>\r\n                {i18n.getString(_TL_('You can also ask Copilot:'))}\r\n              </div>\r\n            </span>\r\n          )\r\n        }\r\n      </div>\r\n    );\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      classes,\r\n      i18n,\r\n      searchQuery,\r\n    } = this.props;\r\n\r\n    const searchResultItemCount = this.state.copilotResults.length;\r\n    const emptyText = curlyTemplate(i18n.getString(_TL_('No results found for {{searchText}}')))({\r\n      searchText: searchQuery,\r\n    });\r\n    const resultText = curlyTemplate(i18n.getString(_TL_('Found {{totalCount}} Results for {{searchText}}')))({\r\n      totalCount: searchResultItemCount,\r\n      searchText: searchQuery,\r\n    });\r\n    const liveRegionText = searchResultItemCount === 0 ? emptyText : resultText;\r\n\r\n    return (\r\n      <div className={classes.searchResultDropDown}>\r\n        {this.getCopilotListView()}\r\n        <div\r\n          className=\"search-result live-region\"\r\n          aria-label={liveRegionText}\r\n        />\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport const StyledCopilotResultView = withI18nConsumer(withDefaultStyles(withSiteMap(CopilotResultView), getCopilotResultViewStyles));\r\nexport const CopilotResultViewExternalSiteMap = withI18nConsumer(withDefaultStyles(CopilotResultView, getCopilotResultViewStyles));\r\n\r\nexport const renderCopilotSearch = (props: IResultViewProps) => (\r\n  <StyledCopilotResultView\r\n    searchQuery={props.searchQuery}\r\n    i18n={props.i18n}\r\n    key=\"copilot-result-view\"\r\n    clear={props.clear}\r\n    placeholderText={props.placeholderText}\r\n    logger={props.searchActivity}\r\n  />\r\n);\r\n\r\nexport const renderCopilotSearchWithCopilot = (onCopilotClick: (param: any) => void, isNewLogo?: boolean) => (props: IResultViewProps) => (\r\n  <StyledCopilotResultView\r\n    searchQuery={props.searchQuery}\r\n    i18n={props.i18n}\r\n    key=\"copilot-result-view\"\r\n    clear={props.clear}\r\n    onCopilotClick={onCopilotClick}\r\n    placeholderText={props.placeholderText}\r\n    logger={props.searchActivity}\r\n    isNewLogo={isNewLogo}\r\n  />\r\n);\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__356__;","module.exports = __WEBPACK_EXTERNAL_MODULE__357__;","import { searchQuestions, ISiteMapNode, mapCurrentPageToPageGroup } from '@bingads-webui/search-utils';\r\n\r\n// do not show troubleshooting questions in global search or help\r\nconst options = {\r\n  isTroubleshootingEnabled: false,\r\n};\r\n\r\nexport function getSearchQuestionsFromSiteMap(siteMap: ISiteMapNode[], i18n: any) {\r\n  return searchQuestions(mapCurrentPageToPageGroup(siteMap), i18n, true, options);\r\n}\r\n\r\nexport function getSearchQuestionsFromQuery(query: string, i18n: any) {\r\n  return searchQuestions(query, i18n, false, options);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__359__;","import { tokens } from '@fluentui/react-components';\r\n\r\nexport const getCopilotResultViewStyles = (components: any, { palette = {} as any }: any) => ({\r\n  loading: {\r\n    backgroundColor: '#f5f9fe',\r\n    paddingTop: '6px',\r\n    paddingBottom: '6px',\r\n  },\r\n  searchResultDropDown: {\r\n    zIndex: '10',\r\n    boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n    borderRadius: '2px',\r\n    borderBottom: 'solid 0.5px',\r\n    borderImage: 'linear-gradient(90deg, #464FEB 35%, #47CFFA 70%, #B47CF8 92%) 1',\r\n  },\r\n  resultHeader: {\r\n    height: '42px',\r\n    width: '100%',\r\n    display: 'flex',\r\n    textAlign: 'left',\r\n    flexDirection: 'row',\r\n    borderWidth: '0px',\r\n    paddingTop: '12px',\r\n    paddingLeft: '16px',\r\n    paddingRight: '11px',\r\n    whiteSpace: 'nowrap',\r\n    '&:hover': {\r\n      cursor: 'pointer',\r\n    },\r\n  },\r\n  resultHeaderContainer: {\r\n    backgroundColor: '#f5f9fe',\r\n  },\r\n  resultHeaderIcon: {\r\n    display: 'inline-block',\r\n  },\r\n  copilotIcon: {\r\n    paddingTop: `${tokens.spacingVerticalNone} !important`,\r\n    paddingLeft: `${tokens.spacingHorizontalNone} !important`,\r\n    paddingRight: `${tokens.spacingHorizontalNone} !important`,\r\n  },\r\n  resultHeaderSpan: {\r\n    display: 'inline-block',\r\n    color: '#323130',\r\n    flex: '1 1 1px',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    paddingLeft: '8px',\r\n  },\r\n  resultHeaderPlaceholder: {\r\n    display: 'inline-block',\r\n    color: '#616161',\r\n    flex: '1 1 1px',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    paddingLeft: '8px',\r\n  },\r\n  resultHeaderLink: {\r\n    fontWeight: 600,\r\n    border: 'none',\r\n    display: 'inline-block',\r\n    background: 'none',\r\n    color: '#115EA3',\r\n    height: '24px',\r\n  },\r\n  resultHeaderHint: {\r\n    height: '42px',\r\n    fontWeight: 600,\r\n    flex: '1 1 1px',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    paddingTop: '8px',\r\n    paddingBottom: '12px',\r\n    paddingLeft: '16px',\r\n    paddingRight: '5px',\r\n  },\r\n  searchResultItem: {\r\n    height: '42px',\r\n    width: '100%',\r\n    textAlign: 'left',\r\n    borderWidth: '0px',\r\n    paddingLeft: '0px',\r\n    paddingRight: '0px',\r\n    backgroundColor: '#f5f9fe',\r\n    whiteSpace: 'nowrap',\r\n    overflow: 'hidden',\r\n    cursor: 'pointer',\r\n    color: 'rgba(0, 0, 0, 0)', // Hides the fallback glyph\r\n    '& .iconba.iconba-Forward': {\r\n      marginRight: 4,\r\n    },\r\n  },\r\n  searchItemContainer: {\r\n    height: '42px',\r\n    width: '100%',\r\n    textAlign: 'left',\r\n    borderWidth: '0px',\r\n    display: 'flex',\r\n    flexDirection: 'row',\r\n    paddingTop: '8px',\r\n    paddingBottom: '12px',\r\n    paddingLeft: '16px',\r\n    paddingRight: '5px',\r\n    '&:hover': {\r\n      color: palette.themePrimary,\r\n    },\r\n  },\r\n  calloutTargetContainer: {\r\n    width: '100%',\r\n  },\r\n  fallbackGlyph: {\r\n    fontSize: 16,\r\n    float: 'right',\r\n    lineHeight: '19px',\r\n    color: 'inherit',\r\n  },\r\n  searchItemSpan: {\r\n    display: 'inline-block',\r\n    color: '#323130',\r\n    flex: '1 1 1px',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n  },\r\n  searchItemFooterSpan: {\r\n    color: palette.themePrimary,\r\n  },\r\n  shortcutItem: {\r\n    display: 'flex',\r\n    color: palette.neutralSecondary,\r\n    paddingRight: 6,\r\n  },\r\n  shortcutKey: {\r\n    display: 'inline-block',\r\n    border: '1px solid #979797',\r\n    borderRadius: 2,\r\n    fontSize: 12,\r\n    fontWeight: 600,\r\n    lineHeight: '16px',\r\n    width: 14,\r\n    textAlign: 'center',\r\n    '&:first-child': {\r\n      marginRight: 6,\r\n    },\r\n  },\r\n});\r\n","import _ from 'underscore';\r\nimport * as $url from '@bingads-webui/url-util';\r\nimport { URLMakeOptions, HTTPOptions, StringDictionary } from '../types';\r\n\r\nexport function host(options: URLMakeOptions) {\r\n  return options.host;\r\n  // NOFIX:\r\n  // return config.has(options.host)? config.get(options.host) : options.host;\r\n}\r\n\r\nexport function path(options: URLMakeOptions) {\r\n  return options.path;\r\n  // NOFIX:\r\n  // return config.has(options.path)? config.get(options.path) : options.path;\r\n}\r\n\r\nexport function fill(url: string, options: URLMakeOptions = {}) {\r\n  let ret = url;\r\n  let params: StringDictionary = {};\r\n\r\n  // NOFIX:\r\n  // if (options.use_state !== false) {\r\n  //   params = state.attributes;\r\n  // }\r\n\r\n  if (options.params) {\r\n    params = _.extend({}, params, options.params);\r\n  }\r\n\r\n  // try to replace with value from params; otherwise keep as original\r\n  ret = url.replace(/:([a-zA-Z_]+)/g, (match: string, key: string) => (_.has(params, key) ? params[key] : match));\r\n\r\n  return ret;\r\n}\r\n\r\nexport function expand(url: string, options: URLMakeOptions = {}) {\r\n  let ret = url;\r\n  const expandOptions = _.defaults(options, {\r\n    composeBatchUrl: true,\r\n  });\r\n\r\n  if (expandOptions.composeBatchUrl && (expandOptions.host && !new RegExp(`^${host(expandOptions)}`).test(ret))) {\r\n    ret = $url.join(host(expandOptions) || '', path(expandOptions) || '', ret);\r\n  }\r\n\r\n  // replace all param placeholders by backbone style slugs\r\n  // ex: /Customers()/Accounts()/ becomes /Customers(:customer_id)/Accounts(:account_id)/\r\n  ret = ret.replace(/\\/((\\w+?)s?)(\\(\\))/g, (match: string, col: string, type: string) => `/${col}(:${type.toLowerCase()}_id)`);\r\n\r\n  return ret;\r\n}\r\n\r\nexport function make(url: string, options: URLMakeOptions) {\r\n  return fill(expand(url, options), options);\r\n}\r\n\r\nexport function queryify(url: string, {\r\n  method,\r\n  data,\r\n  customParamSerialize,\r\n  urlParameters,\r\n}: HTTPOptions<any>) {\r\n  const isGet = !method || method === 'GET';\r\n  if (isGet && _.isObject(data)) {\r\n    // $.param is not supported by node, so use custom param serialization function\r\n    return $url.queryify(url, <JQuery.PlainObject>data, customParamSerialize);\r\n  }\r\n\r\n  const isPostOrPatch = !method || method === 'POST' || method === 'PATCH';\r\n  if (isPostOrPatch && _.isObject(urlParameters)) {\r\n    // $.param is not supported by node, so use custom param serialization function\r\n    return $url.queryify(url, <JQuery.PlainObject>urlParameters, customParamSerialize);\r\n  }\r\n\r\n  return url;\r\n}\r\n\r\nexport function getDomain() {\r\n  return document.domain;\r\n}\r\n\r\nexport function getProtocol() {\r\n  return window.location.protocol;\r\n}\r\n\r\nexport function getPort() {\r\n  return window.location.port;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport * as core from './core';\r\nimport * as urlUtil from '../util/url';\r\nimport { Args, ODataOptions } from '../types';\r\n\r\nexport default function ajax<Options extends ODataOptions<TResult>, TResult>(...args: Args<Options, TResult>) {\r\n  const [url, options, cb] = core.signature<Options, TResult>(args);\r\n\r\n  // NOFIX:\r\n  // if (!options.host) {\r\n  //   options.host = 'odata.url';\r\n  // }\r\n\r\n  // if (!options.path) {\r\n  //   options.path = 'odata.path';\r\n  // }\r\n\r\n  const uri = urlUtil.make(url, {\r\n    host: options.host,\r\n    path: options.path,\r\n    // NOFIX:\r\n    // use_state: options.use_state,\r\n    params: options.params,\r\n  });\r\n\r\n  options.beforeSend = <(jqXHR: JQuery.jqXHR, settings: Options) => void>_.wrap(options.beforeSend || _.noop, (func, jqXHR) => {\r\n    // All these setRequestHeader logic could be handled by `options.headers`\r\n    // These code and related options are deprecated\r\n\r\n    // NOFIX:\r\n    // var oDataToken = config.get('odata.token');\r\n    // NOTICE: oDataToken changed to come from options\r\n    const { oDataToken, oDataTokenType } = options;\r\n\r\n    if (oDataToken) {\r\n      const tokenType = oDataTokenType || 'CCMTSmallToken';\r\n      jqXHR.setRequestHeader('Authorization', `${tokenType} ${oDataToken}`);\r\n    }\r\n\r\n    // NOFIX:\r\n    // var loginType = config.get('odata.loginType');\r\n    // NOTICE: loginType changed to come from options\r\n    const { loginType } = options;\r\n    if (loginType) {\r\n      jqXHR.setRequestHeader('x-ms-logintype', loginType);\r\n    }\r\n\r\n    // enable odata annotations by default;\r\n    // we use annotations to return aggregates in grid responses\r\n    jqXHR.setRequestHeader('Prefer', 'odata.include-annotations=\"*\"');\r\n\r\n    const requestId = putil.generateGuid();\r\n    jqXHR.setRequestHeader('x-ms-requestid', requestId);\r\n\r\n    const { applicationName } = options;\r\n\r\n    jqXHR.setRequestHeader('x-ms-applicationname', applicationName || 'bingadsweb');\r\n\r\n    const { headers } = options;\r\n    // NOFIX:\r\n    // var sessionId = _.result(config.get('Omniture'), 'SessionId');\r\n    // JFX_SessionId is a secure HttpOnly cookie, inaccessible to client side cookie.\r\n    // Changed from cookie to come from options.\r\n    const sessionId = options.SessionId;\r\n    if (!_.isUndefined(sessionId)) {\r\n      jqXHR.setRequestHeader('x-ms-sessionid', sessionId);\r\n    } else if (headers && headers['x-ms-sessionid']) {\r\n      jqXHR.setRequestHeader('x-ms-sessionid', headers['x-ms-sessionid']);\r\n    }\r\n\r\n    // NOFIX:\r\n    // We could pass in all these from `options.headers`\r\n    // var pageContext = config.attributes();\r\n    // if (!_.isUndefined(pageContext)) {\r\n    //   jqXHR.setRequestHeader('x-ms-lcid', pageContext.CultureLcid);\r\n    //   jqXHR.setRequestHeader('lcid', pageContext.CultureLcid);\r\n    // }\r\n\r\n    if (options.customHeader) {\r\n      jqXHR.setRequestHeader(options.customHeader.name, options.customHeader.value);\r\n    }\r\n    // call the original func we are wrapping here\r\n    if (_.isFunction(func)) {\r\n      return func(jqXHR);\r\n    }\r\n\r\n    return undefined;\r\n  });\r\n\r\n  options.parse = (err) => err.value;\r\n\r\n  // TODO: this logic is specific to Campaign OData\r\n  options.i18nErrors = (errs, i18n) => {\r\n    if (errs) {\r\n      return _.map(errs, (err) => {\r\n        let key = `Error_Campaign_API_${err.Code}`;\r\n        if (err['@odata.type'] === '#Model.ApiEditorialError') {\r\n          key = `Error_Editorial_Raw_${err.Code}`;\r\n        }\r\n        return i18n.getStringOrDefault(key, i18n.getString('Error: ') + err.Code);\r\n      });\r\n    }\r\n    return [];\r\n  };\r\n\r\n  if (_.isUndefined(options.contentType)) {\r\n    options.contentType = 'application/json';\r\n  }\r\n\r\n  return core.ajax<Options, TResult>(uri, options, cb);\r\n}\r\n","import * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport ajax from './odata-core';\r\nimport * as multipart from '../util/multipart';\r\nimport { ODataBatchOptions, Callback, ODataOptions } from '../types';\r\n\r\nexport default function batch(options: ODataBatchOptions, cb: Callback) {\r\n  const boundary = putil.generateGuid();\r\n  // NOFIX:\r\n  // const url = config.get('odata.batch_url');\r\n  const url = options.batchURL;\r\n\r\n  // NOFIX:\r\n  // if (!options.host) {\r\n  //   options.host = 'odata.url';\r\n  // }\r\n\r\n  // if (!options.path) {\r\n  //   options.path = 'odata.path';\r\n  // }\r\n\r\n  return ajax<ODataOptions<string>, string>(url, {\r\n    method: 'POST',\r\n    data: multipart.generate(options, boundary),\r\n    contentType: `multipart/mixed; boundary=\"${boundary}\"`,\r\n    dataType: 'text',\r\n    host: options.host,\r\n    path: options.path,\r\n    headers: options.headers,\r\n    // NOTICE: oDataToken, loginType, SessionId are deprecated, use headers\r\n  }, (err, response, textStatus, xhr) => {\r\n    const res = err ? [] : multipart.parse(response);\r\n\r\n    if (cb) {\r\n      cb(err, res, textStatus, xhr);\r\n    }\r\n  })\r\n    .then(multipart.parse);\r\n}\r\n","import _ from 'underscore';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport * as urlUtil from './url';\r\nimport {\r\n  ODataBatchOptions, HTTPResponse, HTTPResponses, StringDictionary, StringableDictionary,\r\n} from '../types';\r\n\r\nexport function generate(options: ODataBatchOptions, boundary: string) {\r\n  const lines = [];\r\n\r\n  _.each(options.reqs, (req) => {\r\n    const method = req.type.toUpperCase();\r\n    const url = urlUtil.make(req.url, _.extend(options, {\r\n      // NOFIX:\r\n      // path: 'odata.multipart_path',\r\n      path: options.multipartPath,\r\n    }));\r\n    lines.push(`--${boundary}`);\r\n\r\n    // [imang]: the content-type and content-transfer-encoding headers\r\n    // must be present for delete reqs inside a batch call\r\n    if (method !== 'GET' || options.needContentType /* && method != 'DELETE' */) {\r\n      lines.push(`Content-Type: ${req.contentType || 'application/http'}`);\r\n      lines.push(`Content-Transfer-Encoding: ${req.contentTransferEncoding || 'binary'}`);\r\n    }\r\n\r\n    lines.push('', `${method} ${url} HTTP/1.1`);\r\n\r\n    // req.headers is used to support all kinds of data headers of every request in batch call body\r\n    if (!_.isUndefined(req.headers)) {\r\n      // the following is meant to ingnore the specific headers which are already supported by req.dataContentType\r\n      // and options.authorization.\r\n      // for any other headers, please use req.headers. don't add another specific option to support.\r\n      const ignored: string[] = [];\r\n      if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n        ignored.push('Content-Type');\r\n        if (options.authorization) {\r\n          ignored.push('Authorization');\r\n        }\r\n      }\r\n\r\n      _.each(req.headers as StringableDictionary, (value, key) => {\r\n        if (ignored.indexOf(key) === -1) {\r\n          lines.push(`${key}: ${value}`);\r\n        }\r\n      });\r\n    }\r\n\r\n    if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n      lines.push(`Content-Type: ${req.dataContentType || 'application/json; charset=utf-8'}`);\r\n      if (options.authorization) {\r\n        lines.push(`Authorization: ${options.authorization}`);\r\n      }\r\n      lines.push('', JSON.stringify(req.data));\r\n    }\r\n\r\n    lines.push('\\r\\n');\r\n  });\r\n\r\n  if (lines.length) {\r\n    lines.push(`--${boundary}--`, '');\r\n  }\r\n\r\n  return lines.join('\\r\\n');\r\n}\r\n\r\nfunction parseHttpResponse(responseString: string) {\r\n  const lines = responseString.split(/\\r?\\n/);\r\n  const statusLine = <string>lines.shift();\r\n\r\n  // parse header lines\r\n  const headers: StringDictionary = {};\r\n  let headerParts: string[];\r\n  let headerLine: string;\r\n  let key: string;\r\n\r\n  while (lines.length > 0) {\r\n    headerLine = <string>lines.shift();\r\n\r\n    if (headerLine === '') {\r\n      break;\r\n    }\r\n\r\n    headerParts = headerLine.split(':');\r\n    key = <string>headerParts.shift();\r\n\r\n    headers[key] = headerParts.join(':').trim();\r\n  }\r\n\r\n  const response: HTTPResponse = {\r\n    headers,\r\n    data: safeJSON.parseSync(lines.join('')),\r\n  };\r\n\r\n  // parse status line\r\n  const parts = statusLine.match(/^(.+) ([0-9]{3}) (.*)$/);\r\n\r\n  if (parts) {\r\n    const [, protocol, status, statusMessage] = parts;\r\n    response.protocol = protocol;\r\n    response.status = parseInt(status, 10);\r\n    response.statusMessage = statusMessage;\r\n  }\r\n\r\n  return response;\r\n}\r\n\r\nexport function parse(text = '') {\r\n  const lines = text.split('\\r\\n');\r\n  const boundary = lines[0];\r\n  const responses: HTTPResponse[] = [];\r\n  let tmp: string[];\r\n  let scanStatus = 0;\r\n\r\n  _.each(lines, (line) => {\r\n    if (line.indexOf(boundary) === 0) {\r\n      if (scanStatus === 2) {\r\n        responses.push(parseHttpResponse(tmp.join('\\r\\n')));\r\n      }\r\n      // a new response begin\r\n      scanStatus = 1;\r\n      tmp = [];\r\n    } else if (scanStatus === 1 && line === '') {\r\n      // real response begin\r\n      scanStatus = 2;\r\n    } else if (scanStatus === 2) {\r\n      tmp.push(line);\r\n    }\r\n  });\r\n\r\n  const successCodeList = [200, 204];\r\n  const statusCounter = _.chain(responses)\r\n    .countBy((val) => (_.contains(successCodeList, val.status) ? 'success' : 'failure'))\r\n    .defaults({\r\n      success: 0,\r\n      failure: 0,\r\n    })\r\n    .value();\r\n\r\n  Object.defineProperty(responses, 'statusCounter', {\r\n    value: statusCounter,\r\n    enumerable: false,\r\n  });\r\n\r\n  return <HTTPResponses>responses;\r\n}\r\n","import * as odata from './src/channel/odata';\r\nimport * as http from './src/channel/core';\r\nimport * as batchUtil from './src/util/multipart';\r\n\r\nconst httpWithDelete = {\r\n  signature: http.signature,\r\n  ajax: http.ajax,\r\n  defaults: http.defaults,\r\n  xhr: http.xhr,\r\n  get: http.get,\r\n  post: http.post,\r\n  put: http.put,\r\n  patch: http.patch,\r\n  delete: http.$delete,\r\n};\r\n\r\nconst odataWithDelete = {\r\n  defaults: odata.defaults,\r\n  get: odata.get,\r\n  post: odata.post,\r\n  put: odata.put,\r\n  patch: odata.patch,\r\n  delete: odata.$delete,\r\n  ajax: odata.ajax,\r\n  batch: odata.batch,\r\n  upload: odata.upload,\r\n};\r\n\r\nexport {\r\n  httpWithDelete as http,\r\n  odataWithDelete as odata,\r\n  batchUtil,\r\n};\r\n","import _ from 'underscore';\r\nimport * as core from './core';\r\nimport ajax from './odata-core';\r\nimport batch from './odata-batch';\r\nimport {\r\n  Args, ODataOptions, ODataUploadOptions, ODataMethod,\r\n} from '../types';\r\n\r\nexport function defaults(defaultOptions: ODataOptions<any>): ODataMethod {\r\n  return <Options extends ODataOptions<TResult>, TResult>(...args: Args<Options, TResult>) => {\r\n    const [url, options, cb] = core.signature(args);\r\n\r\n    const op = _.defaults({}, options, defaultOptions);\r\n\r\n    return ajax<Options, TResult>(url, op, cb);\r\n  };\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\nexport const $delete = defaults({ method: 'DELETE' });\r\nexport { ajax, batch };\r\n\r\nexport function post<Options extends ODataOptions<TResult>, TResult>(...args: Args<Options, TResult>) {\r\n  const [url, options, cb] = core.signature(args);\r\n\r\n  const op = _.defaults({}, options, {\r\n    method: 'POST',\r\n    xhr() {\r\n      const xhr = core.xhr();\r\n\r\n      if (options.progress && xhr.upload) {\r\n        xhr.upload.addEventListener('progress', options.progress, false);\r\n      }\r\n\r\n      return xhr;\r\n    },\r\n  });\r\n\r\n  return ajax<Options, TResult>(url, op, cb);\r\n}\r\n\r\n// upload using FormData with content-type multipart/form-data.\r\n// FormData is not avaiable until IE 10.\r\nexport function upload<Options extends ODataUploadOptions<TResult>, TResult>(...args: Args<Options, TResult>) {\r\n  const [url, options, cb] = core.signature<Options, TResult>(args);\r\n\r\n  const op = _.defaults({}, options, {\r\n    data: new FormData(),\r\n    contentType: false,\r\n    processData: false,\r\n  });\r\n\r\n  op.data.append('file', options.file);\r\n\r\n  return post<Options, TResult>(url, op, cb);\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport { queryify } from '../util/url';\r\nimport {\r\n  HTTPOptions, Args, Signature, Callback, StringDictionary, ErrorDetails, ExtraInfo, HTTPMethod,\r\n} from '../types';\r\n\r\nconst defaultOptions: HTTPOptions<any> = {\r\n  contentType: 'application/json',\r\n  dataType: 'json',\r\n  cache: false,\r\n  type: 'GET',\r\n};\r\n\r\nfunction getResponseHeaders(xhrObject: JQueryXHR): StringDictionary {\r\n  const ret: StringDictionary = {};\r\n\r\n  const str = xhrObject.getAllResponseHeaders();\r\n  const arr = str && str.split('\\r\\n');\r\n  const reg = /^([^:]*): (.*)$/;\r\n\r\n  _.each(arr, (header) => {\r\n    // sample header: 'key: value'\r\n    const matches = header.match(reg);\r\n    if (matches) {\r\n      const [, key, value] = matches;\r\n      ret[key] = value;\r\n    }\r\n  });\r\n\r\n  return ret;\r\n}\r\n\r\nfunction stringify(data: any, { method, contentType }: HTTPOptions<any>) : undefined | string {\r\n  if (!method || method === 'GET') {\r\n    return undefined;\r\n  }\r\n\r\n  if (!_.isString(data) && contentType === 'application/json') {\r\n    return JSON.stringify(data);\r\n  }\r\n\r\n  return data;\r\n}\r\n\r\nexport function signature<Options extends HTTPOptions<TResult>, TResult>(...originalArgs: Args<Options, TResult> | [Args<Options, TResult>] | [IArguments]): Signature<Options, TResult> {\r\n  let arg = <Args<Options, TResult>>originalArgs;\r\n  if (_.isArray(originalArgs[0])) {\r\n    [arg] = originalArgs;\r\n  } else if (_.isArguments(originalArgs[0])) {\r\n    arg = <Args<Options, TResult>>_.toArray(originalArgs[0]);\r\n  }\r\n\r\n  const [first, second, third] = arg;\r\n\r\n  if (_.isObject(first)) {\r\n    // options is first arg\r\n    return [\r\n      (<Options>first).uri || (<Options>first).url || '',\r\n      <Options>first,\r\n      <Callback>second,\r\n    ];\r\n  } if (_.isFunction(second)) {\r\n    // url is string, but options is omited\r\n    return [\r\n      <string>first,\r\n      <Options>{},\r\n      second,\r\n    ];\r\n  }\r\n\r\n  return [\r\n    <string>first,\r\n    <Options>second,\r\n    third,\r\n  ];\r\n}\r\n\r\nexport function ajax<Options extends HTTPOptions<TResult>, TResult>(...args: Args<Options, TResult>) {\r\n  const [url, {\r\n    customAjax,\r\n    method,\r\n    xhrFields,\r\n    success,\r\n    error,\r\n    data,\r\n    customParamSerialize,\r\n    urlParameters,\r\n    contentType,\r\n    dataType,\r\n    converters,\r\n    cache,\r\n    beforeSend,\r\n    complete,\r\n    bypassAjaxLogging,\r\n    processData,\r\n    xhr: xhrOption,\r\n    parse,\r\n    i18nErrors,\r\n    headers,\r\n    timeout,\r\n  }, cb] = signature(args);\r\n  const ajaxFunc = customAjax || $.ajax;\r\n\r\n  // todo handle upper case method\r\n  const $op = <Options>_.defaults({\r\n    type: method ? method.toUpperCase() : undefined,\r\n    xhrFields: {\r\n      withCredentials: xhrFields && xhrFields.withCredentials,\r\n      responseType: xhrFields && xhrFields.responseType,\r\n    },\r\n    success(response: any, textStatus: JQuery.Ajax.SuccessTextStatus, xhrObject: JQuery.jqXHR) {\r\n      if (success) {\r\n        success(response, textStatus, xhrObject);\r\n      }\r\n\r\n      if (cb) {\r\n        cb(null, response, textStatus, xhrObject);\r\n      }\r\n    },\r\n    error(xhrObject: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, errorThrown: string) {\r\n      // NOFIX:\r\n      // If you need this logic, you should wrap options.error to add this in your code\r\n      // if (xhr && xhr.status === 401) {\r\n      //   state.trigger('http.auth.error');\r\n      // }\r\n\r\n      if (error) {\r\n        error(xhrObject, textStatus, errorThrown);\r\n      }\r\n\r\n      const details: ErrorDetails = {\r\n        xhr: xhrObject,\r\n        textStatus,\r\n        error: errorThrown,\r\n        headers: getResponseHeaders(xhrObject),\r\n      };\r\n\r\n      safeJSON.parse(xhrObject.responseText, (err, res) => {\r\n        if (err) {\r\n          if (cb) {\r\n            cb(_.extend(new Error('could not parse error'), details));\r\n          }\r\n          return;\r\n        }\r\n\r\n        details.body = res;\r\n\r\n        if ($op.parse) {\r\n          details.errors = $op.parse(res);\r\n        }\r\n\r\n        if ($op.i18nErrors && details.errors) {\r\n          details.i18nErrors = $op.i18nErrors;\r\n        }\r\n\r\n        if (cb) {\r\n          cb(details);\r\n        }\r\n      });\r\n    },\r\n  }, {\r\n    contentType,\r\n    dataType,\r\n    converters,\r\n    cache,\r\n    beforeSend,\r\n    complete,\r\n    bypassAjaxLogging,\r\n    processData,\r\n    xhr: xhrOption,\r\n    parse,\r\n    i18nErrors,\r\n    headers,\r\n    timeout,\r\n  }, defaultOptions);\r\n\r\n  $op.url = queryify(url, {\r\n    method,\r\n    data,\r\n    customParamSerialize,\r\n    urlParameters,\r\n  });\r\n  $op.data = stringify(data, { method, contentType });\r\n\r\n  return Promise\r\n    .resolve(ajaxFunc($op))\r\n    .catch((err: JQuery.jqXHR) => {\r\n      const extraInfo: ExtraInfo = {\r\n        body: safeJSON.parseSync(err.responseText),\r\n        headers: getResponseHeaders(err),\r\n      };\r\n\r\n      if ($op.parse && extraInfo.body) {\r\n        extraInfo.errors = $op.parse(extraInfo.body);\r\n      }\r\n\r\n      if ($op.i18nErrors && extraInfo.errors) {\r\n        extraInfo.i18nErrors = $op.i18nErrors;\r\n      }\r\n\r\n      // TODO: this error increase noise in logging errors, and will revert this behavior for now\r\n      // We are adding some extra logging to determine the extent of readyState=0 errors\r\n      // if (err && err.readyState === 0) {\r\n      //   setTimeout(() => {\r\n      //     // eslint-disable-next-line\r\n      //     throw new Error(`http-util: readyState=0 fail. type: ${$op && $op.type} url: ${$op && $op.url}`);\r\n      //   }, 1);\r\n      // }\r\n\r\n      throw _.extend(err, extraInfo);\r\n    });\r\n}\r\n\r\nexport function defaults(defaultOps: HTTPOptions<any>): HTTPMethod {\r\n  return function wrappedAjax<Options extends HTTPOptions<TResult>, TResult>(...originalArgs: Args<Options, TResult>) {\r\n    const [url, options, cb] = signature<Options, TResult>(originalArgs);\r\n\r\n    const op = <Options>_.defaults({}, options, defaultOps);\r\n\r\n    return ajax<Options, TResult>(url, op, cb);\r\n  };\r\n}\r\n\r\nexport function xhr() {\r\n  return (<Function>$.ajaxSettings.xhr)();\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const post = defaults({ method: 'POST' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\n// delete is a reserved keyword\r\nexport const $delete = defaults({ method: 'DELETE' });\r\n"],"names":["factory","self","installedModules","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","createCookie","configs","cName","cValue","expires","path","domain","secure","encode","samesite","encodeURIComponent","toUTCString","filter","item","join","document","cookie","skipDecode","ARRcookies","split","length","x","substr","indexOf","y","replace","decodeURIComponent","localeMap","I18nModel","constructor","translationData","locale","bingAdsI18n","currencyCode","this","translationDataLocale","getTranslationDataLocale","language","getLocale","getString","model","str","isEmpty","template","compiled","getDateFormats","formatCurrency","number","currency","options","formatCivilDate","dateObject","formatDate","date","formatDecimal","formatDecimalToFixed","formatPercent","parseCivilDate","dateParser","DEFAULT_LOCALE","I18nContext","useI18nContext","useContext","I18nProvider","memo","props","children","translatedStrings","i18nModel","useMemo","Provider","withI18nProvider","Component","displayName","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__8__","__WEBPACK_EXTERNAL_MODULE__15__","__WEBPACK_EXTERNAL_MODULE__16__","__WEBPACK_EXTERNAL_MODULE__19__","__WEBPACK_EXTERNAL_MODULE__27__","__WEBPACK_EXTERNAL_MODULE__44__","__WEBPACK_EXTERNAL_MODULE__78__","__WEBPACK_EXTERNAL_MODULE__104__","__WEBPACK_EXTERNAL_MODULE__126__","InsightsPanel","replyToId","TimeZone","dateRange","dateFormat","logger","onFeedbackButtonClick","i18n","change","changeLayout","LayoutContext","setHasData","useState","fluctuationSummaryMessage","fluctuationResult","useFluctuationsMessage","headerText","isSingleCampaign","Name","campaignName","Parameters","CampaignName","panelClasses","usePanelStyles","closePanel","useCallback","overlay","Mode","Hidden","content","useEffect","prevHasData","setTimeout","Card","className","mergeClasses","root","size","CardHeader","header","Subtitle1","Tooltip","relationship","Button","appearance","icon","Info16Regular","action","DismissRegular","onClick","Fluctuations","__WEBPACK_EXTERNAL_MODULE__143__","makeStyles","maxWidth","maxHeight","shorthands","padding","tokens","spacingVerticalXXL","spacingHorizontalXXL","display","alignItems","justifyContent","useStyles","fluctuationContent","flexWrap","gap","overflowY","overflowX","height","fluctuationChartContainer","flex","paddingRight","spacingVerticalS","flexDirection","fluctuationHeader","carouselControl","marginLeft","summaryContainer","backgroundColor","colorNeutralBackground2","borderRadius","borderRadiusMedium","pageNumber","setPageNumber","fluctuationsChartData","isCompleted","pageCount","isArray","Result","fluctuations","classes","title","fluctuation","metric","metricType","changeDirection","shiftDirection","parsedDate","raw","parser","shiftStartDate","curlyTemplate","getTitle","isLoading","shouldRenderNavigation","trace","Body1Strong","page","ChevronLeftRegular","disabled","ChevronRightRegular","InsightsChart","performanceTimeSeries","Summary","message","__WEBPACK_EXTERNAL_MODULE__146__","activities","useAdsCopilotContext","performanceTimeSeriesResult","activity","type","PluginContext","find","pluginResult","getFluctuationsChartData","StreamingStatus","performanceTimeSeriesMap","reduce","acc","metricName","buildDates","startDate","matchingMetricTypes","keys","metricValue","fluctuatedDateIndex","findIndex","dateTime","minIndex","Math","max","maxIndex","min","range","map","index","DateTime","Value","Fluctuate","createDataPoint","UniqueId","MetricName","DataPoints","Impression","Click","Conversion","spacingVerticalL","spacingHorizontalL","block","divider","margin","spacingVerticalMNudge","button","marginTop","link","width","linkIcon","flexShrink","footer","blocker","minHeight","borderRadiusCircular","border","borderLeftColor","colorBrandForeground1","borderRightColor","colorBrandBackgroundInvertedHover","borderTopColor","borderBottomColor","marginRight","spacingHorizontalS","animationIterationCount","animationDuration","animationName","to","transform","campaignTypeFilter","Data","query","campaignStatusFilter","styles","preferenceService","PreferenceContext","savingPreference","setSavingPreference","onFeedbackButtonClickCb","data","prevFeedback","currentFeedback","handleLogButtonClickFeedback","scope","ScopeContext","getChangeHistoryUrl","cid","values","params","URLSearchParams","append","accountId","campaignId","window","location","origin","toString","text","Divider","UiBlocker","blocking","loadingText","blockerIndicator","Body1","saveCampaignType","Promise","resolve","setAtUserLevel","then","Id","onRemoteSyncDone","saveCampaignStatus","saveDateRange","selectedRange","start","dateString","end","shiftEndDate","dateRangePreferenceData","generateDateData","rangeType","rangeId","rangeIndex","rangeDays","getDaysOfARange","Rangelcid","e","all","finally","open","Open20Regular","role","as","Link20Regular","target","href","FeedbackButtons","onFeedbackChange","ariaHiddenWhileLoading","CopyButton","messageText","__WEBPACK_EXTERNAL_MODULE__150__","__WEBPACK_EXTERNAL_MODULE__151__","__WEBPACK_EXTERNAL_MODULE__152__","__WEBPACK_EXTERNAL_MODULE__153__","paddingLeft","preview","lineHeightBase200","isPreview","FluctuationsChart","__WEBPACK_EXTERNAL_MODULE__156__","InsightsPanelLoaderInternal","i18nProviderProps","InsightsPanelLoader","withI18nConsumer","__WEBPACK_EXTERNAL_MODULE__158__","useInsightsButtonStyles","paddingTop","spacingVerticalXXS","paddingBottom","spacingHorizontalXS","fontWeight","fontWeightRegular","fontSize","fontSizeBase200","textAlign","borderWidth","copilotIcon","label","permissions","PermissionsContext","CopilotIcon","color","iconStyles","__WEBPACK_EXTERNAL_MODULE__161__","SummarizePluginRenderer","getCampaigns","onMissingParamsSubmit","isCustomizedEventBusy","isReportingInsights15Enabled","any","Status","InsightsMissingParams","pluginName","PluginScenarios","Summarize","AIMessage","showDataDisclaimer","InsightsSummarizeMessage","canRender","Features","feature","PluginFunctions","SummarizeCampaignPerformance","isFluctuationsMessageSent","setIsFluctuationsMessageSent","useInsightsSummarizeMessageStyles","hasNoData","shouldSendFluctuationsTriggerMessage","summarizeMessage","summarizePluginResult","useSummarizeMessage","parseDate","convertISOToDate","sanitizeDateFromSummarizePlugin","startDateString","StartDate","endDateString","EndDate","minStartDate","Date","now","startDateFromParameters","endDate","customEvent","CopilotToggleCustomEvent","detail","eventType","eventSource","eventData","isHidden","dispatchEvent","summarizeText","InsightsSummarizePluginResult","summarizeEvent","newSummarizeMessage","newSummarizeEvent","isSummarizeMessageFromButtonClick","NO_DATA_STATUS","activityTimestampMs","timestamp","getTime","parseInt","MAX_AGE_FOR_TRIGGER_IN_MS","perfMetrics","useNormalizedPerfMetrics","accountCurrency","comparisonPeriod","getComparisonDatePeriod","SingleResult","impressions","currentValue","impact","percentShift","clicks","ctr","spend","conversions","cpa","roas","averageCPC","averageCPM","impressionShare","uniqueReach","averageCPV","videoViews","videoCompletionRate","videoViewsAt25Percent","videoViewsAt50Percent","videoViewsAt75Percent","installs","downloads","averageCPI","formattedContent","undefined","maximumFractionDigits","minimumFractionDigits","formattedPercentShift","Number","isFinite","withSign","isNumber","timeZone","result","comparisonStartDate","comparisonEndDate","perfMetricsWithComparisonData","impressionCount","clickCount","conversionCount","marginBottom","spacingVerticalXL","colorPaletteGreenBackground3","match","summarizePluginDatePattern","year","month","day","padStart","Error","cardText","onSave","_event","tlText","CampaignFluctuation","selectedCampaign","CampaignAndDateSelector","showCampaignSelector","showDateSelector","useFluctuationsStyles","FluctuationsPluginRenderer","onFullInsightsClick","onReferenceClick","handleFullInsightsClick","ev","getEligibleCampaigns","act","parsedDetail","JSON","parse","eligibleCampaigns","id","noEligibleCampaignsMessage","missingParamsActivity","showCopyButton","showFeedback","features","GetAccountFluctuations","GetCampaignFluctuations","showReferences","InsightsPanelPreview","AccountFluctuation","PerformanceTimeSeries","useInsightsPanelPreviewStyles","dateObj","isDecrease","tlKey","top","chart","chartHeader","summary","summaryContent","forceInline","goFullButton","ArrowCircleRight20Regular","chartAndSummaryCommonStyles","colorNeutralBackground1","colorNeutralBackground3","boxShadow","shadow2","spacingVerticalXS","opacity","backdropFilter","typographyStyles","caption1Strong","fontWeightSemibold","lineHeight","peg$SyntaxError","expected","found","captureStackTrace","child","parent","ctor","peg$subclass","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","escapedParts","parts","Array","classEscape","inverted","other","description","hex","ch","charCodeAt","toUpperCase","j","descriptions","sort","slice","describeExpected","describeFound","SyntaxError","input","peg$result","peg$FAILED","peg$startRuleFunctions","Expression","peg$parseExpression","peg$startRuleFunction","peg$c0","node","peg$c1","peg$c2","peg$literalExpectation","peg$c3","peg$c4","peg$c5","nextOperation","curr","list","stripped","v","operator","left","right","ExprNode","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","isNegative","negateResult","negateNode","peg$c11","peg$c12","peg$classExpectation","peg$c13","peg$c14","peg$c15","numberString","parseFloat","flattenToString","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","segment","segments","ColumnNode","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","ColumnNodeSegments","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$otherExpectation","peg$c37","peg$c38","peg$currPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","ignoreCase","peg$computePosDetails","pos","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","offset","peg$fail","push","peg$buildStructuredError","s0","s2","peg$parse_","s1","s3","s4","s5","s6","s7","peg$parseMultiplicativeExpr","peg$parseAdditiveExpr","peg$parseValue","peg$parseConstant","peg$parseCustomColumn","peg$parseMinus","peg$parseLParen","peg$parseRParen","test","charAt","peg$parseColumnName","s8","s9","peg$parseSegmentInfo","arr","flat","toFlatten","concat","metricCategories","segmentCategories","parserEngine","validMetrics","_","flatten","metrics","pluck","isValidSegment","category","selectionsText","segmentConfig","findWhere","validSegments","selections","first","intersection","getColumnValidationErrors","errors","contains","cause","offender","expression","parseTree","isValid","Boolean","__WEBPACK_EXTERNAL_MODULE__199__","allMetrics","each","Metrics","Clicks","Impressions","CTR","AverageCPC","AverageCPM","Spend","TotalSpend","CPA","PartialConversionCPA","Conversions","ConversionsCredit","ConversionRate","PartialConversionRate","AdvertiserReportedRevenue","RevenueOnAdSpend","defaultPerformanceMetrics","defaultConversionsMetrics","MetricCategory","titleKey","PerformanceCategory","ConversionsCategory","convMetrics","segCategories","allSegments","segCategory","Computer","SmartPhone","Tablet","BingAndYahooSearch","AOLSearch","BingAndYahooSearchTop","BingAndYahooSearchOther","AOLSearchTop","AOLSearchOther","schemaName","accountMetricCategoriesFactory","campaignMetricCategoriesFactory","adGroupMetricCategoriesFactory","adsMetricCategoriesFactory","keywordMetricCategoriesFactory","searchTermMetricCategoriesFactory","supportedMetrics","getAllMetrics","supportedSegments","getAllSegments","usedMetrics","usedSegments","clause","regMetric","groups","matchedMetric","uniq","getUsedMetricsAndSegments","chain","difference","enabled","DEFAULTS","MetricCategories","getConversionMetrics","dynamic","combine","IsPartialConversionsEnabled","PartialConversions","ColumnConversion","newMetrics","oldMetrics","addedMetrics","adExtensionMetricCategories","DatePicker","minDate","maxDate","selectedDate","ariaLabel","navigateToFutureAriaLabel","navigateToPastAriaLabel","dateRangeErrors","validateDateRange","set","getState","attributes","animation","event","newDate","sender","silent","trigger","getDate","datePicker","dateView","div","click","stopPropagation","calendar","setOptions","_prevArrow","attr","_nextArrow","empty","$el","html","datePickerElement","$","kendoDatePicker","getKendoOptions","removeAttr","hide","destroy","keyCode","Enter","Space","preventDefault","handleKeyDown","DeterministicView","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","pug","require","locals","pug_html","locals_for_with","__WEBPACK_EXTERNAL_MODULE__17__","promise","onDelay","offDelay","on","logDebug","resolveOffDelayPromise","offDelayPromise","off","onTimerFired","debugId","sharedDebugId","onTimerId","clearTimeout","setup","view","patch","isFunction","setState","extend","ref","viewFactory","events","childView","getChild","__factory","constructs","getFactory","Factory","setFactory","handler","handlerFunction","isString","listenTo","setChild","defaultRenderEngine","RenderEngine","EMPTY_TEMPLATE","FORBIDDEN_OPTIONS","BaseView","has","ModelConstructor","Model","Backbone","defaults","renderEngine","scheduleRenderView","state","toJSON","renderTrunk","render","renderView","__WEBPACK_EXTERNAL_MODULE__10__","eventEmitter","animationFrame","renderQueue","Set","getParent","el","parentNode","elTemp","createElement","appendTo","placeholders","dataset","getChildrenRefs","elNew","elOld","replaceChild","remove","removeChild","frame","views","forEach","renderInSync","add","requestAnimationFrame","renderFrame","focus","activeElement","getViewForElement","focusId","selFocus","stringify","elFocus","DeterministicWrapperView","rendered","DeterministicViewForHtml","DeterministicViewForBackBoneView","Dialog","View","initialize","backdrop","keyboard","showHeader","showBody","showCloseButton","contentView","isBoolean","dialogId","uniqueId","buttonClicked","setContent","buttons","show","modal","super","pug_interp","escape","$$obj","pug_index0","$$l","cls","class","dialogOptions","applyIfExists","setPosition","position","center","autoFocus","windowDefaults","kendoWindow","wrapper","addClass","titleHeadingLevel","closeButton","closeButtonAriaLabel","element","dialogClasses","zindex","css","popupFront","topzindex","kwindow","koverlay","close","resizable","visible","func","context","args","parameters","toArray","apply","__WEBPACK_EXTERNAL_MODULE__268__","__WEBPACK_EXTERNAL_MODULE__34__","__WEBPACK_EXTERNAL_MODULE__43__","Comp","iframeDownloadWithMonitoring","useIframeDownload","iframeDownload","ifm","url","statusHandler","style","timer","setInterval","iframeDoc","contentDocument","contentWindow","readyState","clearInterval","body","appendChild","src","InstrumentationContext","createScenarioAndActivity","scenarioName","activityName","status","err","error","__WEBPACK_EXTERNAL_MODULE__32__","fileName","filename","xhr","XMLHttpRequest","responseType","onload","downloadifyBlob","response","send","blob","navigator","msSaveBlob","downloadInIEBrowser","downloadLink","download","URL","createObjectURL","downloadInOtherBrowsers","Blob","__WEBPACK_EXTERNAL_MODULE__178__","updateView","helpers","ensureChildView","KEYS","SpaceBar","ArrowUp","ArrowDown","ArrowRight","rotate","contents","indexFrom","indexTo","tempState","contentsToUse","indexFromToUse","indexToToUse","DraggableListViewModel","draggingTo","ko","observable","DraggableList","KnockoutView","itemViewFactory","afterDrop","noop","getAnnouncement","restoreScrollBarPosition","documentDragoverScrollCallback","ViewModel","DraggableListTemplate","lockedItems","draggableItems","config","lockedItemsLength","draggableItemsLength","viewModel","times","domRect","querySelector","getBoundingClientRect","mousePageY","pageY","scrollTop","scrollY","documentElement","elementPageTop","elementPageBottom","bottom","scrollStart","scrollStop","onDragstart","originalEvent","dataTransfer","setData","scrollDetectStart","isDragging","onDragover","targetItem","closest","onDrop","moveFocusTo","onDragEnd","scrollDetectStop","onMouseDown","currentTarget","removeClass","scroll","scrollBy","intervalMilliSecond","scrollTimerId","timerId","addEventListener","removeEventListener","onKeyDown","acceptableKeysReg","RegExp","triggerKey","hasClass","defer","announce","positionFrom","positionTo","getListItems","eq","onFocusRequestFromChildren","selected","items","itemFrom","itemTo","__WEBPACK_EXTERNAL_MODULE__61__","__WEBPACK_EXTERNAL_MODULE__81__","edm","ServiceRoot","AccountID","AdvertiserCustomerID","bulkUpsertSchema","processOptions","identity","getUrl","prefix","getCast","invalidateCache","entityName","ids","skipEntityCallPaths","invalidateTypeCache","checkParsedResult","reject","entity","bSchema","merge","schema","schemas","defineConstProperty","ResourceIdentifier","resourceIdentifiers","bulkUpdate","attrs","batch","isUndefined","reqs","param","csvRows","serialize","CsvRows","odata","responses","results","populateIds","parsedResponse","processResponse","toSerialize","getAttrsToSerialize","post","res","ret","hasReadOnlyFields","properties","bulkUpdateMany","idList","attrsList","attrsListWithIds","extractEntityErrors","bulkCreate","bulkCreateMany","bulkDestroy","buildDestroyObject","parentId","getSkipEntityCallPaths","cast","__WEBPACK_EXTERNAL_MODULE__39__","__WEBPACK_EXTERNAL_MODULE__40__","__WEBPACK_EXTERNAL_MODULE__41__","__WEBPACK_EXTERNAL_MODULE__42__","ENTITY_PATH_ENUM","entityPath","includes","__WEBPACK_EXTERNAL_MODULE__47__","__WEBPACK_EXTERNAL_MODULE__48__","types","oneOfTypes","Map","Registry","Type","createType","PrimitiveType","createPrimitiveType","OneOfType","typeNames","oneOfTypeName","typeName","resolveType","namespace","sortedNames","resolveQualifiedName","ONEOF_TYPE_PREFIX","createResolveType","Property","createProperty","Parameter","createParameter","ObjectType","baseTypeName","compileProperties","defineProducedProperty","addProperties","CollectionType","createCollectionType","defineProducedPropertyOnClass","elementTypeName","CallableType","returnTypeName","compileParameters","baseType","keyProperty","getSchemaBaseType","$$ODataExtension","clrTypeBase","BaseType","getSchemaKey","Key","EntityType","ComplexType","getSchemaFullName","$ref","getQualifiedName","getSchemaName","getTypeName","dependencies","typeInfo","collectionTypeName","oneOf","string","String","integer","datetime","boolean","null","jsType","defineSchemaType","qualifiedName","navigationPropertyNames","pick","propertyName","addNavigationProperties","callableName","getSchemaBaseTypeName","getSchemaNavigationPropertyNames","NavigationProperty","ActionType","FunctionType","possiblePath","$$ref","enum","defineCallableOnType","acts","funcs","forEntityType","actions","functions","getCallableTypeName","mapObject","parameter","ReturnType","entityActions","entityFunctions","collCallable","Action","Function","collectionType","jsdata","store","JSData","DS","cacheResponse","schemator","Schemator","resources","defineResource","edmRootResourceIdentifier","definitions","navigation","source","elementType","entitySet","__WEBPACK_EXTERNAL_MODULE__68__","__WEBPACK_EXTERNAL_MODULE__69__","resource","idAttribute","findKey","prop","getSchema","defineSchema","propertySchema","obj","toSimpleHash","definePropertiesType","getDataType","defineDataType","defineType","rootURL","processError","odataRootURL","rethrowError","resIdsPlugin","Navigation","getCollection","count","odataURL","$top","$count","catch","getItem","findAll","limit","__WEBPACK_EXTERNAL_MODULE__84__","__WEBPACK_EXTERNAL_MODULE__60__","dependants","wrapODataMethod","method","odataCachePlugin","fetchEntity","select","parseSelect","patchEntity","update","urlParameters","createEntity","collectionResource","deleteEntity","delete","fetchCollection","skip","orderby","search","others","$skip","parseOrderBy","parseFilter","parseSearch","payload","parseTop","parseSkip","parseCount","getEntity","postEntity","destroyEntityAsPromise","entityAction","collectionAction","CollectionResourceIdentifier","hardResetData","bypassCache","destroyAsPromise","$_callableMakeCall","$makeCall","functionParams","$call","orderBy","toPromise","legacyJsDataResultProcess","$withKey","$orderby","toLowerCase","lowerCaseOrderValue","where","$filter","parsed","$select","$expand","$search","entityDeps","collectionCache","ObservableCache","cacheEvent","CacheEvent","entityCache","invalidateEntityCache","stringifiedOptions","forAll","observedCache","invalidateObservedCache","invalidateObservedCacheById","noObservers","entries","parsedId","invalidateNoObserverCache","invalidate","invalidateCollectionCache","notify","hardResetCacheData","idOrPath","cacheKeyPath","newItem","EntityCacheItem","fetch","tap","afterSubscribe","cache","observerAdded","afterUnsubscribe","observerReduced","entityPromise","resourcePromise","fetchFirstCalledAndPatchNotCalled","CollectionCacheItem","__WEBPACK_EXTERNAL_MODULE__75__","makeCall","observers","CacheItem","Observable","observer","next","hasObservers","PatchEntityCacheItem","patchEntityCacheItem","originalStatus","subscribe","__WEBPACK_EXTERNAL_MODULE__77__","TimeAwareCache","ttl","DEFAULT_TTL","strategy","LRUReplacementStrategy","CACHE_SIZE","del","deletePropertyPath","clearCacheKeys","cacheItems","subKey","cacheItem","__WEBPACK_EXTERNAL_MODULE__79__","ob","createNavigation","PropertyNavigation","toSelfJSON","defineOn","TypeResID","CastNavigation","createCastNavigation","WithKeyNavigation","createWithKeyNavigation","CallNavigation","createCallNavigation","createResourceIdentifier","resourceIdentifierForType","Base","AccessorType","register","ObjectTypeResID","CollectionTypeResID","CallableTypeResID","def","navigationProperties","CallableNavigation","callable","defineCallableOn","resID","callableTypes","DefaultBase","postfix","COLLECTION_TYPE_POSTFIX","removePostfix","prefixLength","getNamespace","getShortName","Superclass","navigationName","entityType","ignoreKeyTypeInPath","urlUtil","keyType","returnType","identifyEntitySet","json","instrumentation","init","instr","createLogger","createActivity","ExpLogger","expLoggerScenario","addScenario","expLogger","getScenario","sendLog","scenario","setting","log","flight","Version","Experiment","Flight","FilePicker","isNative","allowedFileExtensions","validateFileExtensionsFailedMessage","validator","displayFilePath","enableMultiple","useButton","getFileObject","fileObject","getFileObjects","fileObjects","fileInputCssId","acceptString","applyBindings","filePath","files","removeFile","triggerFileInputClick","addExternalValidationErrors","msg","hasErrors","validatorDecorator","reasonText","file","returnedError","ext","observableArray","computed","fullPath","full","onInputChange","handleInputChange","newFilePath","resetStatus","validatingPromiseArr","validateExtension","validateFile","reason","validationDidFail","extensionValidator","extension","extname","__WEBPACK_EXTERNAL_MODULE__309__","FilterAgent","filterService","FilterService","entitySchema","localize","schemaI18n","filterMenuAgent","FilterMenuAgent","filterBarAgent","FilterBarAgent","Events","setupToolbar","filterEditorAgent","FilterEditorAgent","isNewFilter","showFilterEditor","hideFilterEditor","refresh","p$Initialized","editableFilter","quickFilter","selectorFilterAgent","SelectorFilterAgent","showFilterBar","searchboxFilterAgent","SearchboxFilterAgent","combinedFilter","subStatus","clear","showToolBar","getEditableFilter","filterEditorQuery","deterministicView","filterToShow","createFilterEntity","cloneDeep","setEditableFilter","__WEBPACK_EXTERNAL_MODULE__6__","selectorConf","selector","onChange","checkKeyDifferenceOnClick","selectedKey","defaultSelectedItem","toolbarView","once","setQuickFilter","BaseFilterAgent","placeholder","searchbox","maxLength","searchProperty","searchOperator","DeterministicFilterEditor","FilterEditor","preprocessSelectedFilter","shortDateFormat","isComparingEnabled","editor","hasInlineReporting","layoutTemplate","itemTemplates","ko_model","savedFilters","maxSavedFilterLimit","filterNames","addUpdateSavedFilter","savedData","__WEBPACK_EXTERNAL_MODULE__11__","__WEBPACK_EXTERNAL_MODULE__12__","DeterministicFilterBar","FilterBar","extendedFilter","filterbar","changeFilter","removeEditableFilter","__WEBPACK_EXTERNAL_MODULE__14__","RemoveDialog","filterName","removeText","getFilterByName","modalDialog","buttonName","deleteSavedFilter","setEditableFilterByName","getSavedFilters","filterArray","menuItems","menu","customItems","checkIcon","onSelect","applyByName","onRemove","deleteByName","baseIconClass","iconLeft","iconRight","localizedProp","propName","names","last","localized","extendOwn","localizedTrueValue","localizedFalseValue","true","false","enumType","enumValue","localizedValue","originalEnumValue","enumValueMap","include","separatedEnumValues","localizedEnumValues","individualEnumValue","__WEBPACK_EXTERNAL_MODULE__20__","onEdit","editText","loadingErrorText","loading","humanizedFilterHtml","hideEdit","hideRemove","setFilter","putil","withLastPromise","promiseFactory","customHumanizedHtml","humanizedHtml","finish","fail","setFilterProcess","cancel","getValuesAndMoreTextForSelector","valuesInQuery","itemsPromise","dataSource","getByIds","MAX_ITEMS_TO_SHOW","idInfoMap","indexBy","memoCopy","totalLength","notShowingCount","moreText","remain","extendPredicate","predicate","metadata","filterI18n","getFilterProperty","opValue","convertName","convertOperator","operatorDisplayNameMap","val","convertValue","i18nPromise","foo","extendFilter","$and","$or","depth","FilterI18n","depthTemplateMap","singleTemplate","listTemplate","extended","__WEBPACK_EXTERNAL_MODULE__26__","pug_mixins","isFirst","predicates","__WEBPACK_EXTERNAL_MODULE__33__","__WEBPACK_EXTERNAL_MODULE__35__","__WEBPACK_EXTERNAL_MODULE__37__","__WEBPACK_EXTERNAL_MODULE__38__","Selector","Editor","ReadOnly","Integer","Category","Custom","Checkbox","Radio","Select","Textarea","SelectableFilter","EditableFilter","CampaignType","CampaignStatus","AdGroupStatus","DateFilter","convertExpressionsToQuery","toQuery","filterEntity","validQuery","convertFilterEntityToExpressions","updateQuery","queryExpression","Predicate","fromQueryExpression","editablePredicate","isDeletedProperty","isInvalidProperty","queryExpressions","filterSchema","propertyKey","filterProps","originalProperty","isQueryExpressionValid","expressions","uiType","PredicateUIType","removable","getHumanizedValue","isEqual","selectorPredicates","selectorPredicate","defaultValue","editPredicates","union","columnId","removePopColumns","changed","popColumnId","popColumnChangeId","popColumnChangePercentId","len","newlen","isObject","AddFilterButtonUnthemed","React","PureComponent","disableAdd","isGrayCommandBar","buttonGray","Glyphicon","glyph","_TL_","propTypes","PropTypes","shape","isRequired","bool","defaultProps","AddFilterButton","withDefaultStyles","palette","themePrimary","neutralLighter","neutralLight","neutralQuaternaryAlt","neutralQuaternary","WrappedComponent","HOC","onClose","placement","popoverClassName","container","focusLockContent","Callout","popoverId","getDisplayName","__WEBPACK_EXTERNAL_MODULE__54__","__WEBPACK_EXTERNAL_MODULE__55__","__WEBPACK_EXTERNAL_MODULE__56__","translateToLegacyFormat","condition","pairs","SelectedColumn","SelectedOperator","Values","legacyFormats","subQuery","legacyFormat","col","toLegacyColumn","toLegacyOperator","toLegacyValue","EnumPropertyToTypeMapping","AudienceStatus","BidTarget","BidType","CallTrackingStatus","DeliveryStatus","DevicePreference","DisplayBiddingStrategyType","Language","Medium","EnumPropertyToStringTypeMapping","NoEnumPropertyToStringTypeMapping","BooleanToStringTypeMapping","op","groupedItems","toAlias","legacyValue","toLegacyString","toLegacy","toLegacyEnum","isFormat","enums","fullValue","stringEnums","AdGroupCriterionStatus","Active","Paused","Deleted","Excluded","AdGroupCallTrackingStatus","NotApplicable","Eligible","NotEligible","ProvisioningPending","Provisioned","CampaignUserPaused","CampaignBudgetPaused","CampaignBudgetUserPaused","Draft","Expired","AdStatus","Inactive","AdType","Text","Product","AppInstall","DynamicSearch","ExpandedText","Hotel","Responsive","ResponsiveSearch","AdStrength","Unrated","Poor","Average","Good","Excellent","BidTargetType","Keyword","BehaviorSegment","Site","BidOnly","TargetAndBid","Suspended","UserPaused","BudgetPaused","BudgetUserPaused","All","Mobile","Default","Shopping","DynamicSearchAds","Audience","Smart","PerformanceMax","CreditCardExpired","IOExceeded","PaymentInformationMissing","InvalidFinancialStatusOther","MigrationPaused","CampaignDeleted","CampaignSuspended","AdGroupExpired","AdGroupDraft","AdGroupDeleted","CamAssetRejected","CamAssetDeleted","AdGroupTargetingTooNarrow","EditorialRejected","EditorialAppealRejected","EditorialApprovedLimitedAppealRejected","EditorialUnderAppeal","UrlInvalid","ApplicationNotFound","ApplicationDestinationUrlMismatch","PendingMetadataSync","EditorialPending","AssociationDeleted","AdGroupPrivacyPending","AdGroupUserPaused","AdUserPaused","KeywordMatchTypeAdGroupMediumCombinationInvalid","KeywordUserPaused","NegativeKeywordConflicts","PartialNegativeKeywordConflicts","EditorialApprovedLimited","LowSupply","LowQuality","BidBelowFirstPageBid","Incomplete","BudgetSuggestions","InlineOpportunity","GeoCodingIncomplete","ProductTargetUserPaused","AdExtensionNotPresent","AdExtensionDeleted","AdExtensionAssociationDeleted","StoreIdNotAssociated","AdGroupAudienceAssociationPaused","AdGroupAudienceAssociationExcluded","AdNotPresent","AdNotActive","ApplicationDestinationUrlValidationIncomplete","AutoBiddingLimitedInventoryLimit","AutoBiddingLimitedMaxCPCRestriction","AutoBiddingLimitedBudgetRestriction","AutoBiddingLimitedUnAttainableTarget","AutoBiddingPortfolioBidStrategyTrainingStatus","New","AutoBiddingLimitedByNotEnoughConversions","NoEligibleAds","NoEligibleKeywords","NoEligibleAdGroups","BiddingStrategyType","InheritFromParent","ManualCpc","MaxClicks","MaxConversions","TargetCpa","EnhancedCpc","TargetRoas","MaxRoas","MaxConversionValue","TargetImpressionShare","ManualCpv","ManualCpm","PercentCpc","Commission","CostPerSale","Arabic","TraditionalChinese","Danish","Dutch","English","Finnish","French","German","Italian","Norwegian","Portuguese","Spanish","Swedish","SimplifiedChinese","Greek","Polish","Czech","Estonian","Croatian","Hungarian","Lithuanian","Latvian","Maltese","Romanian","Slovak","Slovenian","Turkish","Serbian","Bosnian","Albanian","Macedonian","Icelandic","Japanese","Search","Content","SearchAndContent","OrderItemStatus","MatchType","Exact","Phrase","Broad","AudienceType","Remessaging","InMarket","RemarketingSimilar","CustomerList","CombinedList","CriterionAgeCriterionAgeRange","EighteenToTwentyFive","TwentyFiveToThirtyFive","ThirtyFiveToFifty","FiftyToSixtyFive","SixtyFiveAndAbove","Unknown","CriterionGenderCriterionGenderType","Male","Female","AudienceCriterionLevel","AdGroup","Campaign","AccountType","AdAccount","ManagerAccount","columnName","decimal","isNaN","fromLocalToFloat","enumMapper","logic","mapToShorterVersion","secondLogic","fieldId","lambadaFieldIdMapping","fromLegacy","DeliveredMatchType","SearchTermStatus","Condition","newName","isSaving","trim","isSaved","hasNameError","$layout","headerTitle","nameWaterMarkTitle","applyTitle","cancelTitle","saveFilter","$listContainer","predicateList","Constructor","PredicateList","canApply","cleanNode","undelegateEvents","filterQuery","getFilterQuery","clean","__WEBPACK_EXTERNAL_MODULE__7__","FilterEntity","fieldMap","custom","normalizeFilter","odataOptions","calculateDepth","FilterSchema","entities","anotherOpe","queries","uniqWith","fromQueryString","regex","legacy","exec","toOdata","filters","normalizedFilter","convertToOData","parseFromLegacy","odataV4","convertToLegacy","clone","newFilterEntity","conditions","expressionKey","isFieldName","field","toExplicitCondition","getFieldExpressions","con","flattenAndOperators","bfsNextLevel","originalOperator","originalValue","startsWith","endsWith","nextLevel","mongoExpressions","expr","mongoOperator","mongoValue","toLegacyColumnName","operatorMap","toLegacyExpression","legacyExpressions","toMongoPredicate","$contains","$doesnotcontain","$startswith","$endswith","$eq","$neq","$gt","$gte","$lt","$lte","$in","$containsall","$containsany","$containsnone","reverseOperatorMap","invert","pop","legacyExpression","fromAlias","getPropertyKeys","fromLegacyColumnName","legacyOperator","getEnumValuefromLegacy","legacyDeliveryStatus","DomainLanguageNotSupported","ShoppingCampaignStoreNotFound","ShoppingCampaignNoOffersPresent","AutoBiddingLimitedByNotEnoughRevenue","AutoBiddingLearning","AdGroupCriterionExcluded","AdGroupCriterionPaused","None","Bulgarian","Native","FluctuationType","AdGroupType","SearchStandard","SearchDynamic","CashbackScope","Store","CouponsEnabled","Enabled","Disabled","kendoFilter","convertToKendo","customToOData","kendoToOData","priorities","and","or","kendo","transports","parameterMap","priorityParent","customOperator","priority","filterString","flt","__WEBPACK_EXTERNAL_MODULE__80__","kendoFilters","convertNode","simpleOperatorMap","$ne","$ge","$le","$substringof","$isof","logicOperatorMap","simpleExpression","toLower","convertLeaf","fieldVal","convertEnumSelectionLeaf","option","operatorKeyMap","neq","gt","gte","lt","lte","in","doesnotcontain","startswith","endswith","containsall","containsany","containsnone","operatorStringMap","skeleton","vnext","SchemaI18n","skipLocalization","hasTime","utcDate","convertMachineDateToUTCDate","toISOString","isPercentValue","getEntityName","entityProperty","operatorMapping","array","buildAliasToProp","pair","alias","childPair","buildPropToAlias","aliasToProp","dot","aliasType","substring","srcPropType","targetPropType","predValue","srcType","targetType","round","conversionFunctionFactory","sourcePropertyType","targetPropName","targetProp","mongoPredicate","exprObj","predOperator","convertedValue","legacyConversionFunctionFactory","legacyPredicate","buildPropToConversions","isForLegacyFilter","conversionFuncFactory","propertyConversion","sourcePropertyName","sourcePropertyLegacyAlias","conversionFunc","compact","filterable","parentKey","getDeepFilterableProps","propToAlias","propToConversions","propToLegacyConversions","operators","nullable","minimum","maximum","pattern","customEditor","chooseType","customParameters","addtionalParams","getApplicableConversions","allConversions","getApplicableLegacyConversions","applyConversions","applyLegacyFilterConversions","legacyFilterExpressions","mapOnlyBaseProperty","propObj","flattenedEntity","fields","restoreToEntitySchema","nameStack","buildFilters","parentNameStack","schemaToBuild","subPro","primitiveTypes","baseSchema","required","customColumn","format","aliasCopy","hasConversionAlias","sourceProperty","joinedSourceName","mappedEnumValue","mapEnumValueForFilter","flattenSchemaToFields","storageFactory","storageOptions","quickFilterOptions","editableFilterOptions","savedFilterOptions","recentFilterOptions","schemaProcessor","odataOptionsProcessor","waterfallFilterStores","suppressWaterfallEvents","flattenEntitySchema","lazyFilterSchema","memoize","buildNameToPropertyMapping","filterEntityOptions","basicStorageOptions","quickFilterStorage","editableFilterStorage","savedFilterStorage","savedQuickFilterStorage","featureName","isRecentFilterSupported","recentFilterStorage","recentQuickFilterStorage","dataSourceFilter","savedQuickFilters","recentFilters","recentQuickFilters","fetchSavedFilterPromise","refreshSavedFiltersCache","fetchRecentFilterPromise","refreshRecentFiltersCache","fetchQuickFilterPromise","fetchQuickFilter","fetchEditableFilterPromise","fetchEditableFilter","initializeWaterfallFilters","initializeCombinedFilterPromise","initializeCombinedFilter","fetchQuickFilterForGivenStore","fetchWaterfallFilter","waterfallFilter","waterfallFilters","hasActiveWaterfallFilter","refreshSource","refreshWaterfallFilters","fetchWaterfallFilterPromises","triggerQuickFilterSetEvent","filterPromises","WaterfallFilters","setInitialEditableFilter","setInitialQuickFilter","oldWaterfallFilters","version","quick","editable","waterfalls","stringifySync","deserialize","serialized","isColumnConversionEnabled","parseSync","removeQuickFilter","patchedQuery","patchFilter","getQuickFilter","equalQuickFilter","q","some","logicalOperator","getCombinedFilter","filtersToMerge","waterfallFilterEntities","mergeFilterEntity","isInitialLoad","newQuickFilter","save","setDataSourceFilter","getDataSourceFilter","getRecentFilters","recentFilter","getRecentFiltersByIndex","addUpdateRecentFilter","filterStorageType","FilterStorageType","errorData","updateAppliedFilter","existingFilter","savedFilter","splice","deletedResult","refreshSavedOrRecentFiltersCache","editableFilters","quickFilters","combinedFilters","callback","validatedFilter","getValidFilterEntity","originalFilter","removeAppliedFilter","__WEBPACK_EXTERNAL_MODULE__97__","__WEBPACK_EXTERNAL_MODULE__98__","newQuery","baseQuery","addedQuery","isNullQuery","mergeQuery","__WEBPACK_EXTERNAL_MODULE__103__","instance","focusLockOptions","managed","eventHandlers","ReactDOM","FocusLockBackboneInstanceWrapper","focusLockProps","unmountComponentAtNode","FocusLock","BackboneInstanceWrapper","objectOf","__WEBPACK_EXTERNAL_MODULE__328__","__WEBPACK_EXTERNAL_MODULE__329__","eventsToActions","FocusLockBackboneWrapper","viewOptions","BackboneViewWrapper","oneOfType","BackboneView","arrayOf","__WEBPACK_EXTERNAL_MODULE__332__","CopilotResultView","question","customizedEvent","onCopilotClick","forceOpen","keyword","isSearchResultSelected","selectedItem","isUserInput","toggleCopilotEvent","CustomEvent","bubbles","cancelable","composed","getCopilotListView","searchQuery","renderItem","renderHeader","ListSelector","renderDivider","copilotResults","enableArrowKeysSupport","itemClassName","searchResultItem","searchItemContainer","searchItemSpan","resultHeaderContainer","tabIndex","resultHeader","resultHeaderIcon","isNewLogo","resultHeaderSpan","resultHeaderPlaceholder","placeholderText","resultHeaderLink","resultHeaderHint","getSearchQuestionsFromSiteMap","siteMap","prevSearchQuery","getDerivedStateFromProps","nextProps","prevState","getSearchQuestionsFromQuery","searchResultItemCount","emptyText","searchText","resultText","totalCount","liveRegionText","searchResultDropDown","StyledCopilotResultView","withSiteMap","getCopilotResultViewStyles","CopilotResultViewExternalSiteMap","searchActivity","__WEBPACK_EXTERNAL_MODULE__356__","__WEBPACK_EXTERNAL_MODULE__357__","searchQuestions","mapCurrentPageToPageGroup","isTroubleshootingEnabled","__WEBPACK_EXTERNAL_MODULE__359__","components","zIndex","borderBottom","borderImage","whiteSpace","cursor","spacingVerticalNone","spacingHorizontalNone","overflow","textOverflow","background","calloutTargetContainer","fallbackGlyph","float","searchItemFooterSpan","shortcutItem","neutralSecondary","shortcutKey","fill","expand","customParamSerialize","$url","queryify","protocol","port","host","expandOptions","composeBatchUrl","cb","core","signature","uri","make","beforeSend","wrap","jqXHR","oDataToken","oDataTokenType","tokenType","setRequestHeader","loginType","requestId","generateGuid","applicationName","headers","sessionId","SessionId","customHeader","i18nErrors","errs","Code","getStringOrDefault","contentType","ajax","boundary","batchURL","multipart","generate","dataType","textStatus","lines","req","multipartPath","needContentType","contentTransferEncoding","ignored","isNull","authorization","dataContentType","tmp","scanStatus","responseString","statusLine","shift","headerParts","headerLine","safeJSON","statusMessage","parseHttpResponse","successCodeList","statusCounter","countBy","success","failure","httpWithDelete","http","put","$delete","odataWithDelete","upload","FormData","processData","defaultOptions","progress","ajaxSettings","getResponseHeaders","xhrObject","getAllResponseHeaders","reg","matches","originalArgs","arg","isArguments","second","third","customAjax","xhrFields","converters","complete","bypassAjaxLogging","xhrOption","timeout","ajaxFunc","$op","withCredentials","errorThrown","responseText","extraInfo","defaultOps"],"sourceRoot":""}